1. ALTERAÇÃO OU CRIAÇÃO DE FONTES
Para atender as necessidades relatadas será necessário alterar alguns objetos e criar um novo. A seguir será detalhado cada uma dessas alterações:
1.1 Alteração na Função Manutenção Item Documento - ICMS (RE1001b2a)
Incluir o campo do CST do ICMS na tela RE1001b2a (Manutenção Item Documento - ICMS), para permitir que o usuário possa consultar essa informação, em conjunto com as demais informações de ICMS do item da nota de recebimento. Quando esta tela for aberta no modo de edição, esse campo deverá ficar habilitado, para permitir ao usuário realizar a alteração desta informação.
Lembrando que essa tela também é chamada pelo RE0701b (Consulta Itens Documento), através do botão ICMS da pasta Impostos.
1.2 Alteração na Função Manutenção Item Documento (RE1001b2)
Preparar o RE1001b2 (Manutenção Item Documento) para quando for clicado no OK, no modo de edição, do RE1001b2 (Manutenção Item Documento - ICMS), caso a informação do CST do ICMS seja alterada, o novo valor informado pelo usuário seja atualizado na tela do RE1001b2 (Manutenção Item Documento).
1.3 Criação da Função Sugestão do CST do ICMS (RE1909)
Criar um programa que irá realizar a sugestão do CST durante a criação do item da nota de recebimento e que possa ser utilizado quando a nota for incluída diretamente pelo recebimento fiscal ou buscada do recebimento físico para o recebimento fiscal. Para a criação da sugestão do CST, pode-se basear na lógica existente atualmente no ft0515a.p e/ou no lf0202.i15.
Quando se tratar de uma nota de devolução de cliente ou de devolução de consignação, e tenha-se relacionado uma nota de origem, deve-se buscar a origem da mercadoria/serviço da nota relacionada para a sugestão da origem da mercadoria/serviço do CST da nota de devolução de cliente ou de devolução de consignação. Essa lógica já existe atualmente na BOIN176, procedure setDefaultsFields.
Implementar também neste programa a busca do CST do XML utilizado para a importação da nota, no caso desta nota ter sido originada do RE0708 (Monitor NF-e/CT-e/NFS-e).
1.4 Alteração na Função Geração Nota do Recebimento Físico para o Fiscal (RE2905)
Alterar o RE2905 (Geração Nota do Recebimento Físico para o Fiscal), para chamar o programa RE1909, para a sugestão do CST, durante a criação da tabela item-doc-est. O valor da origem da mercadoria/serviço deverá ser gravado no substring(item-doc-est.char-2,637,3) e a origem + CST deverá ser gravado no substring(item-doc-est.char-2,502,3).
Sugestão de implementação:
run rep/re1909.p (input item-doc-est.it-codigo,
input docum-est.cod-estabel,
input (if item-doc-est.nat-of <> "" then item-doc-est.nat-of else item-doc-est.nat-operacao),
input item-doc-est.cd-trib-icm,
input item-doc-est.log-2,
input item-doc-est.vl-subs[1],
input item-doc-est.serie-docto,
input item-doc-est.nr-docto,
input item-doc-est.sequencia,
input (IF AVAIL doc-orig-nfe THEN doc-orig-nfe.ch-acesso-comp-nfe ELSE ""),
input INT(SUBSTRING(item-doc-est.char-2,832,5)),
input item-doc-est.serie-comp,
input item-doc-est.nro-comp,
input item-doc-est.seq-comp,
output p-origem-it,
output p-cod-cst).
assign overlay(item-doc-est.char-2,637,3) = string(p-origem-it)
overlay(item-doc-est.char-2,502,3) = string(p-origem-it, "9") + string(p-cod-cst, "99").
1.5 Alteração na BO da tabela item-doc-est (BOIN176)
Alterar a procedure afterCreateRecord, para para chamar o programa RE1909, para a sugestão do CST, durante a criação da tabela item-doc-est. O valor da origem da mercadoria/serviço deverá ser gravado no substring(item-doc-est.char-2,637,3) e a origem + CST deverá ser gravado no substring(item-doc-est.char-2,502,3).
Sugestão de implementação:
run rep/re1909.p (input RowObject.it-codigo,
input docum-est.cod-estabel,
input (if RowObject.nat-of <> "" then RowObject.nat-of else RowObject.nat-operacao),
input RowObject.cd-trib-icm,
input RowObject.log-2,
input RowObject.vl-subs[1],
input RowObject.serie-docto,
input RowObject.nr-docto,
input RowObject.sequencia,
input docum-est.cod-chave-aces-nf-eletro,
input INT(SUBSTRING(RowObject.char-2,832,5)),
input RowObject.serie-comp,
input RowObject.nro-comp,
input RowObject.seq-comp,
output p-origem-it,
output p-cod-cst).
assign overlay(RowObject.char-2,637,3) = string(p-origem-it)
overlay(RowObject.char-2,502,3) = string(p-origem-it, "9") + string(p-cod-cst, "99").