8087 - Observação no DACTE
Problema: Descrição do Problema: O cliente está com problemas no campo observação do DACTE gerada pelo e-Docs.
No XML emitido pelo ERP consta todas as informações necessárias para impressão da DACTE, porém quando é impresso pelo DE faltam as observações.
Quando o arquivo é impressora pelo WEBDANFE (www.webdanfe.com.br) as observações são impressas no campo destinado.
Rotina / Tela: Observação no DACTE.
Solução: Solução: As observações presentes no DACTE do e-Docs são obtidas da TAG (Observações Gerais).
Observações Gerais no XML = XXX
No Template do DACTE, é obtido a informação da Observação para o bloco Observações.
Observação no DACTE: =First(Fields!Observacoes.Value, Cte)
A observação gerada pelo WebDanfe obtém os dados do campo infAdFisco e não das observações gerais.
Informações do Fisco no XML: XXXYYY
A variável VSIntObsGer da regra ligada ao Identificador VEN-140CT00000 recebe os dados da observação a ser gerada no DACTE. Assim, ao repassar as Observações Gerais do CT-e para esta variável, será impressora normalmente no DACTE gerado pelo e-Docs.
Se os dados estiverem presentes na NF-e que irá gerar o CT-e, pode-se então efetuar um Cursor nas tabelas E140NFV e E140OBS para obter os dados do veículo e os dados das Observações da Nota Fiscal.
Lembrando que as informações ao fisco não são observações.
Exemplo de tratativa na regra abaixo:
Definir cursor Cur_E140NFV;
Cur_E140NFV.SQLSELECT E140NFV.CODEMP, E140NFV.CODFIL, E140NFV.NUMNFV,
E140NFV.CODSNF, E140NFV.CGCRDE, E140NFV.REMDES,
E140NFV.CIFFOB, E140NFV.PLAVEI, E140NFV.PLAREB,
E140NFV.VLRLIQ, E140NFV.VLRPDG
FROM E140NFV
WHERE
E140NFV.CODEMP = :VSIntCodEmp AND
E140NFV.CODFIL = :VSIntCodFil AND
E140NFV.NUMNFV = :VSIntNumNfv AND /
E140NFV.CODSNF = :VSIntCodSnf;
Cur_E140NFV.AbrirCursor();
Se (Cur_E140NFV.Achou)
{
VSCgcRde = Cur_E140NFV.CgcRde;
VSRemDes = Cur_E140NFV.RemDes;
VSCifFob = Cur_E140NFV.CifFob;
VSPlaVei = Cur_E140NFV.PlaVei;
VSPlaReb = Cur_E140NFV.PlaReb;
VSVlrPdg = Cur_E140NFV.VlrPdg;
VSVlrLiq = Cur_E140NFV.VlrLiq;
}
Cur_E140NFV.FecharCursor();
Definir cursor Cur_E140OBS;
Cur_E140OBS.SQL SELECT
E140OBS.OBSNFV
FROM
E140OBS
WHERE
E140OBS.CODEMP = :VSIntCodEmp AND
E140OBS.CODFIL = :VSIntCodFil AND
E140OBS.CODSNF = :VSIntCodSnf AND
E140OBS.NUMNFV = :VSIntNumNfv AND
E140OBS.TIPOBS = 'M' AND
E140OBS.TIPINF = 1;
Cur_E140OBS.AbrirCursor();
Enquanto (Cur_E140OBS.Achou)
{
VSObsNfv = VSObsNfv + - + Cur_E140OBS.OBSNFV;
Cur_E140OBS.Proximo()
}
Cur_E140OBS.FecharCursor();
@ Carrega placa do veículo (cavalo ou reboque/carreta) para o campo Observação da DACTE @
limpaespacos(VSPlaVei);
limpaespacos(VSPlaReb);
Se ((VSPlaVei <> ) E (VSPlaReb <> ))
@ Imprime a placa do Reboque/Carreta @
VSIntObsGer = PLACA Reboque/Carreta: + VSPlaReb + - + VSObsNfv;
Senao
@ Imprime a placa do cavalo @
VSIntObsGer = PLACA Cavalo: + VSPlaVei + - + VSObsNfv;
No XML emitido pelo ERP consta todas as informações necessárias para impressão da DACTE, porém quando é impresso pelo DE faltam as observações.
Quando o arquivo é impressora pelo WEBDANFE (www.webdanfe.com.br) as observações são impressas no campo destinado.
Rotina / Tela: Observação no DACTE.
Solução: Solução: As observações presentes no DACTE do e-Docs são obtidas da TAG (Observações Gerais).
Observações Gerais no XML = XXX
No Template do DACTE, é obtido a informação da Observação para o bloco Observações.
Observação no DACTE: =First(Fields!Observacoes.Value, Cte)
A observação gerada pelo WebDanfe obtém os dados do campo infAdFisco e não das observações gerais.
Informações do Fisco no XML: XXXYYY
A variável VSIntObsGer da regra ligada ao Identificador VEN-140CT00000 recebe os dados da observação a ser gerada no DACTE. Assim, ao repassar as Observações Gerais do CT-e para esta variável, será impressora normalmente no DACTE gerado pelo e-Docs.
Se os dados estiverem presentes na NF-e que irá gerar o CT-e, pode-se então efetuar um Cursor nas tabelas E140NFV e E140OBS para obter os dados do veículo e os dados das Observações da Nota Fiscal.
Lembrando que as informações ao fisco não são observações.
Exemplo de tratativa na regra abaixo:
Definir cursor Cur_E140NFV;
Cur_E140NFV.SQLSELECT E140NFV.CODEMP, E140NFV.CODFIL, E140NFV.NUMNFV,
E140NFV.CODSNF, E140NFV.CGCRDE, E140NFV.REMDES,
E140NFV.CIFFOB, E140NFV.PLAVEI, E140NFV.PLAREB,
E140NFV.VLRLIQ, E140NFV.VLRPDG
FROM E140NFV
WHERE
E140NFV.CODEMP = :VSIntCodEmp AND
E140NFV.CODFIL = :VSIntCodFil AND
E140NFV.NUMNFV = :VSIntNumNfv AND /
E140NFV.CODSNF = :VSIntCodSnf;
Cur_E140NFV.AbrirCursor();
Se (Cur_E140NFV.Achou)
{
VSCgcRde = Cur_E140NFV.CgcRde;
VSRemDes = Cur_E140NFV.RemDes;
VSCifFob = Cur_E140NFV.CifFob;
VSPlaVei = Cur_E140NFV.PlaVei;
VSPlaReb = Cur_E140NFV.PlaReb;
VSVlrPdg = Cur_E140NFV.VlrPdg;
VSVlrLiq = Cur_E140NFV.VlrLiq;
}
Cur_E140NFV.FecharCursor();
Definir cursor Cur_E140OBS;
Cur_E140OBS.SQL SELECT
E140OBS.OBSNFV
FROM
E140OBS
WHERE
E140OBS.CODEMP = :VSIntCodEmp AND
E140OBS.CODFIL = :VSIntCodFil AND
E140OBS.CODSNF = :VSIntCodSnf AND
E140OBS.NUMNFV = :VSIntNumNfv AND
E140OBS.TIPOBS = 'M' AND
E140OBS.TIPINF = 1;
Cur_E140OBS.AbrirCursor();
Enquanto (Cur_E140OBS.Achou)
{
VSObsNfv = VSObsNfv + - + Cur_E140OBS.OBSNFV;
Cur_E140OBS.Proximo()
}
Cur_E140OBS.FecharCursor();
@ Carrega placa do veículo (cavalo ou reboque/carreta) para o campo Observação da DACTE @
limpaespacos(VSPlaVei);
limpaespacos(VSPlaReb);
Se ((VSPlaVei <> ) E (VSPlaReb <> ))
@ Imprime a placa do Reboque/Carreta @
VSIntObsGer = PLACA Reboque/Carreta: + VSPlaReb + - + VSObsNfv;
Senao
@ Imprime a placa do cavalo @
VSIntObsGer = PLACA Cavalo: + VSPlaVei + - + VSObsNfv;