Ir para conteúdo
  • Cadastre-se

dev botao

Dhsaient + Pcnnfew


Delphi in Delphi
  • Este tópico foi criado há 373 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Prezados, a pedido de um amigo que utiliza a ferramenta fui verificar um determinado problema, então desculpe-me se estiver enganado quanto a informação que vou postar sobre a Acbr.
 
Ao realizar um teste de envio da NF-e 3.10 em Homologação, tive problemas quanto ao campo "dhSaiEnt" (Data e Hora de Saída da 
Mercadoria/Produto). Quando este campo fica em branco, está sendo apresentado um erro de data inválida retornado pela Sefaz.
 
Segundo o manual da versão 3.10 da NF-e (NT2013.005) este campo não é obrigatório, agora analisando o código nós vemos:
Gerador.wCampo(tcDat, 'B10', 'dSaiEnt', 10, 10, 0, nfe.ide.dSaiEnt, DSC_DSAIENT);

A função wCampo com o tipo "tcDat" já faz a verificação se a data é "null" e então manda em branco para o XML. Porém com a alteração deste campo para o formato "AAAA-MM-DDThh:mm:ssTZD" (se versão maior ou igual a 3) a linha passou a ser:

Gerador.wCampo(tcStr, 'B10', 'dhSaiEnt', 25, 25, 0, DateTimeTodh(nfe.ide.dSaiEnt) + GetUTC(CodigoParaUF(nfe.ide.cUF), nfe.ide.dSaiEnt), DSC_DSAIENT);

Repare que o tipo é "tcStr", e este não mais faz o decode da data para verificar se trata-se de uma data "null". Então temos ai o problema se a data não for preenchida, mesmo assim ela será informada no XML (30/12/1899), mas ocorre porque este formato de data não funciona com o tipo "tcDat".

 

Como eu não sei o formato de alteração dos arquivos e regras da Acbr, não realizei uma correção efetiva para isso, apenas validei a data antes da chamada do "wCampo" de 'dhSaiEnt'. 

if (not DateTimeIsNull(NFe.Ide.dSaiEnt) then

É fato que este campo em algumas UF se faz obrigatório, porém em outras não.

Editado por Macgayver Armini
Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...

Exatamente, estou com o mesmo problema: ao enviar XML sem colocar a DataHora de Envio (dhSaiEnt) que no componente é a propriedade dSaiEnt (compatibilidade com versao 2.0), retorna erro de validação do Schema: 

 

The element '{http://www.portalfiscal.inf.br/nfe}dhSaiEnt' with value '1899-12-30T00:00:00-02:00' failed to parse.

 

Me parece que o componente está gerando essa Tag no XML mesmo estando com valor Zero

 

Estou usando versão 3.1 da NF-e e com os Schemas PL_008b

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia dalpiaze,

 

Por favor atualize os fontes e tente novamente.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 9 anos depois...

Boa noite Amigos

Embora esses posts sejam antigos, e também não sei se consigo respostas por aqui, estava procurando soluções e acabei encontrando algumas informações.

Ocorre que comecei a usar o ACBrNFe me baseando pelo exemplo e quando iniciei os testes em ambiente de homologação recebi os erros de validação, mesmo tendo OK na validação de Regras de negócio dentre outras coisas.

Quando tento Validar o XML gerado recebo os erros de validação relacionado com a propriedade dhSaiEnt, conforme mensagem abaixo. No entanto, essa propriedade não existe, mas existe dSaiEnt e hSaiEnt. Lendo o que os colegas colocaram a partir da versão 3.10, passou a valer o campo dhSaiEnt, mas não sei como popular esse campo.
Podem me ajudar a desvendar o problema? 

-------------- Falha na validação dos dados da nota: XXXXX ---------- 

 --> 1839 - Element '{http://www.portalfiscal.inf.br/nfe}dhSaiEnt': [facet 'pattern'] The value '2023-03-20T00:00:00+00:44' is not accepted by the pattern '(((20(([02468][048])|([13579][26]))-02-29))|(20[0-9][0-9])-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30)))))T(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d([\-,\+](0[0-9]|10|11):00|([\+](12):00))'.
---------------------------- -------------- -------------- -------------- 

Estou alimentando os campos conforme abaixo, mas também não sei se tenho que usar (e como) o método Gerador.wCampo.

NotaF := ACBrNFe1.NotasFiscais.Add;
...
NotaF.NFe.Ide.dEmi       := Date;
NotaF.NFe.Ide.dSaiEnt   := Date; 
NotaF.NFe.Ide.hSaiEnt   := Now;  
NotaF.NFe.Ide.dhCont    := date; 
...

Achava que não estava com o trunk2 atualizado, mas tudo indica que estou.

Aproveitando, meu cliente atualmente usa uma empresa (terceira) para emitir NFe. Meu sistema gera um arquivo TXT no layout dessa empresa e eles processam (ambiente de produção) a nota sem problemas. 

A idéia é implantar a emissão da NF pelo ACBr

Pergunta 01: Gostaria de saber se todas as validações em ambiente de homologação passarem sem problemas, eu já poderia virar a chave pra começar emitir em produção? O que recomendam ?

- Atualmente já estou conseguindo alimentar o componente com todos os dados
- O método Assinar e o método gravarXML estão funcionando sem problemas
- Consigo ver todos os dados carregados no TreeView ao Importar um XML e colocá-los em banco de dados
- Consigo consultar carregando XML de uma NFe processada em produção e ver o status de emissão pelo SEFAZ

Pergunta 02: Ao gerar uma NFe (tpAmb) eu recebo um codigo de retorno (cStat=0). Em ambiente de homologação não deveríamos receber algum código entre (100 - 999)?

Desde já agradeço pela ajuda e quero parabenizá-los pelo projeto ACBr

Link para o comentário
Compartilhar em outros sites

  • Moderadores
16 horas atrás, [email protected] disse:

Boa noite Amigos

Embora esses posts sejam antigos, e também não sei se consigo respostas por aqui, estava procurando soluções e acabei encontrando algumas informações.

Ocorre que comecei a usar o ACBrNFe me baseando pelo exemplo e quando iniciei os testes em ambiente de homologação recebi os erros de validação, mesmo tendo OK na validação de Regras de negócio dentre outras coisas.

Quando tento Validar o XML gerado recebo os erros de validação relacionado com a propriedade dhSaiEnt, conforme mensagem abaixo. No entanto, essa propriedade não existe, mas existe dSaiEnt e hSaiEnt. Lendo o que os colegas colocaram a partir da versão 3.10, passou a valer o campo dhSaiEnt, mas não sei como popular esse campo.
Podem me ajudar a desvendar o problema? 

-------------- Falha na validação dos dados da nota: XXXXX ---------- 

 --> 1839 - Element '{http://www.portalfiscal.inf.br/nfe}dhSaiEnt': [facet 'pattern'] The value '2023-03-20T00:00:00+00:44' is not accepted by the pattern '(((20(([02468][048])|([13579][26]))-02-29))|(20[0-9][0-9])-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30)))))T(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d([\-,\+](0[0-9]|10|11):00|([\+](12):00))'.
---------------------------- -------------- -------------- -------------- 

Estou alimentando os campos conforme abaixo, mas também não sei se tenho que usar (e como) o método Gerador.wCampo.

NotaF := ACBrNFe1.NotasFiscais.Add;
...
NotaF.NFe.Ide.dEmi       := Date;
NotaF.NFe.Ide.dSaiEnt   := Date; 
NotaF.NFe.Ide.hSaiEnt   := Now;  
NotaF.NFe.Ide.dhCont    := date; 
...

Achava que não estava com o trunk2 atualizado, mas tudo indica que estou.

Aproveitando, meu cliente atualmente usa uma empresa (terceira) para emitir NFe. Meu sistema gera um arquivo TXT no layout dessa empresa e eles processam (ambiente de produção) a nota sem problemas. 

A idéia é implantar a emissão da NF pelo ACBr

Pergunta 01: Gostaria de saber se todas as validações em ambiente de homologação passarem sem problemas, eu já poderia virar a chave pra começar emitir em produção? O que recomendam ?

- Atualmente já estou conseguindo alimentar o componente com todos os dados
- O método Assinar e o método gravarXML estão funcionando sem problemas
- Consigo ver todos os dados carregados no TreeView ao Importar um XML e colocá-los em banco de dados
- Consigo consultar carregando XML de uma NFe processada em produção e ver o status de emissão pelo SEFAZ

Pergunta 02: Ao gerar uma NFe (tpAmb) eu recebo um codigo de retorno (cStat=0). Em ambiente de homologação não deveríamos receber algum código entre (100 - 999)?

Desde já agradeço pela ajuda e quero parabenizá-los pelo projeto ACBr

por favor queira criar um tópico detalhando seu problema pois o que tem acima é muito antigo e foi antes ainda do refactoring do trunk2.

 

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 373 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.