[ ] requisição de suporte => Por favor, não envie solicitação de suporte aqui, veja a nota no topo deste modelo.
Comportamento esperado
Ao realizar a geração de uma NF-e em contingência para a UF MT (fuso horário -04:00), a data/hora capturada no arquivo ContingencyNFe.php linha 49. Nesta linha é capturado o fuso horário -03:00, desconsiderando o TimeZone informado, o problema ocorre porque a função date("Y-m-d H:i:sP") usa o fuso horário do servidor ao gerar a string de data e hora.
Com isso o fuso horário informado pelo DateTimeZone é desconsiderado, ficando incoerente o XML, veja:
Ao avaliar o dhCont da tag infProt do retorno da sefaz está correto, veja:
Ou seja, o componente desconsidera o TimeZone informado.
Solução possível
Para corrigir isso e assegurar que o DateTime devemos utilizar o offset correto de -04:00, deve-se criar a data e hora diretamente no fuso horário de Cuiabá. Isso evita problemas com offsets incorretos.
Possível implementação
No arquivo ContingencyNFe.php linha 49, devemos alterar a forma de captura da data e hora atual:
$tz = TimeZoneByUF::get(UFList::getUFByCode((int)$cUF));$dt = new \DateTime('now', new \DateTimeZone($tz));
Comportamento esperado
Ao realizar a geração de uma NF-e em contingência para a UF MT (fuso horário -04:00), a data/hora capturada no arquivo ContingencyNFe.php linha 49. Nesta linha é capturado o fuso horário -03:00, desconsiderando o TimeZone informado, o problema ocorre porque a função date("Y-m-d H:i:sP") usa o fuso horário do servidor ao gerar a string de data e hora.
Com isso o fuso horário informado pelo DateTimeZone é desconsiderado, ficando incoerente o XML, veja:
Ao avaliar o dhCont da tag infProt do retorno da sefaz está correto, veja:
Ou seja, o componente desconsidera o TimeZone informado.
Solução possível
Para corrigir isso e assegurar que o DateTime devemos utilizar o offset correto de -04:00, deve-se criar a data e hora diretamente no fuso horário de Cuiabá. Isso evita problemas com offsets incorretos.
Possível implementação
No arquivo ContingencyNFe.php linha 49, devemos alterar a forma de captura da data e hora atual:
$tz = TimeZoneByUF::get(UFList::getUFByCode((int)$cUF));
$dt = new \DateTime('now', new \DateTimeZone($tz));