nfephp-org / sped-gnre

:octocat: API para emissão de guias GNRE para a SEFAZ
GNU General Public License v3.0
62 stars 59 forks source link

SUPORTE A V2 - LOTE GNRE #38

Closed marabesi closed 2 years ago

marabesi commented 5 years ago

Até o momento a lib suporta somente a v1, caso alguém se interesse em ajudar na atualização é só manter essa thread atualizada.

Notícia oficial (http://www.gnre.pe.gov.br/gnre/portal/todasNoticias.jsp):

Portal GNRE - Atualização da Versão para 2.0

Prezado Contribuinte,

Informamos que a partir do dia 01/04/2019, o Portal GNRE terá sua versão atualizada para 2.0.

A versão 2.0 contemplará três opções para geração das guias:

  1. GNRE Simples - esta opção equivale à geração da GNRE atual, ou seja, geração de guia para apenas um pagamento.

  2. GNRE com Múltiplos Documentos de Origem - nesta opção poderão ser adicionados múltiplos documentos de origem, desde que mantida a mesma UF destinatária, o mesmo Contribuinte Emitente, o mesmo Código de Receita e o mesmo Tipo de Documento de Origem.

  3. GNRE com Múltiplas Receitas - nesta opção poderão ser adicionados diversos códigos de receitas, desde que se mantenha a mesma UF destinatária e o mesmo Contribuinte Emitente. Nesta opção serão aceitos vários códigos de receita, inclusive podendo repetir o mesmo código de receita.

Para os contribuintes que utilizam os serviços (webservices) de automação que o Portal disponibiliza, será necessário adequar suas aplicações para a nova estrutura do XML versão 2.0.

Haverá um período em que o Portal da GNRE aceitará as duas versões simultaneamente. Este período será para que as UFs e os contribuintes possam fazer os ajustes necessários para utilização desta versão. Ao fim deste período só serão aceitas requisições, via webservice, na nova versão.

O período final da versão 1.0 será informado no Portal GNRE (Testes/Homologação e Produção) em momento posterior.

Para maiores detalhes, acessar o Portal GNRE no ambiente de Testes/Homologação (http://www.testegnre.pe.gov.br) e clicar no menu Automação.

Neste link, você encontrará:

• Manual para Preenchimento do Lote: o Formato do arquivo (versão 1.0 e 2.0) o Dicionário de dados do arquivo XML (versão 1.0 e 2.0) o Regras de Preenchimento • Anexos • Links para as empresas solicitarem a utilização dos webservices • Manual de Integração do Contribuinte (versão 2.0) • Endereço dos serviços (webservices)

Em caso de dúvidas encaminhar e-mail para gnre@sefaz.pe.gov.br.

Atenciosamente, Gestor Nacional do GNRE Secretaria da Fazenda do Estado de Pernambuco

renandelmonico commented 5 years ago

Bora fazer essa atualização?

marabesi commented 5 years ago

Seria uma boa, eu particularmente não comecei nenhum trabalho ainda, me falta o certificado pra testar e não tenho nenhuma lista do que realmente mudou. Mas vamos usando essa thread pra traquear as mudanças.

renandelmonico commented 5 years ago

Eu tenho uma ideia do que mudou, porém também não tenho certificado. A principal mudança foi somente no nome das tags.

felipeparente commented 3 years ago

Galera, isso foi feito? Conheci a biblioteca a pouco e vi que ainda está na v1

renandelmonico commented 3 years ago

Bom dia @felipeparente, acredito que não. Eu não tenho certificado pra desenvolver e testar :disappointed:

marabesi commented 3 years ago

ainda esta pendente : /

marabesi commented 3 years ago

@felipeparente @renandelmonico se tiver alguma forma de compartilharmos um certificado eu dedico um tempo pra atualizar pra v2

felipeparente commented 3 years ago

Vamos tocar? Até pq, creio que iremos precisar.

Eu tenho certificado de cliente, que eu posso utilizar para os testes, homologação.

felipeparente commented 3 years ago

INFO DO PORTAL A versão 1.00 do XML será aceita até o dia 30/11/2020 e até este período o portal estará apto a receber as duas versões.

renandelmonico commented 3 years ago

@felipeparente @marabesi se tem um certificado pra testar acho que podemos tocar, acredito que eu consiga disponibilizar um tempo pra atualizar também

felipeparente commented 3 years ago

Vamos nos organizar. Temos até o dia 30/11/2020.... provavelmente prorrogado, como tudo no Brasil. Não deve ser tão complicado, pois utilizaríamos a mesma base.

Que tal um grupo no Whatsapp para conversarmos?

renandelmonico commented 3 years ago

Vamos nos organizar. Temos até o dia 30/11/2020.... provavelmente prorrogado, como tudo no Brasil. Não deve ser tão complicado, pois utilizaríamos a mesma base.

Que tal um grupo no Whatsapp para conversarmos?

Pode-se pensar em algo. Pelo que eu já estudei sobre (faz alguns meses já) essa alteração basicamente muda praticamente apenas o prefixo das tags

felipeparente commented 3 years ago

Pode ser, mas acho que seria interessante colocar alguma configuração, para utilizar o v1 ou v2.

marabesi commented 3 years ago

@felipeparente vc está no grupo gnre? (https://groups.google.com/g/gnrephp) de la podemos criar um grupo nosso pra toca a atualização (obs: o @renandelmonico eu sei que está)

felipeparente commented 3 years ago

Não... como faço para entrar?

marabesi commented 3 years ago

https://groups.google.com/g/gnrephp

felipeparente commented 3 years ago

Olha o que aparece para mim quando acesso o LINK.

Captura de Tela 2020-11-05 às 10 53 13
marabesi commented 3 years ago

@felipeparente chegou algum invite?

felipeparente commented 3 years ago

Chegou...

jone22e commented 3 years ago

Talvez vocês já tenham desenvolvido mas não está atualizado, então criei uma classe que interpreta o código da V1.00 e gera o xml para V2.00. Pelo menos temporariamente até ter a classe atualizada.

Substituir:

$lote = new Sped\Gnre\Sefaz\Lote()

Por:

$lote = new LoteV2() $lote->setAmbienteDeTesteV2(true); // caso homologação

Em anexo.

LoteV2.zip

marabesi commented 3 years ago

obrigado pela contribuição @jone22e vou incluir essa classe no pacote :)

marabesi commented 3 years ago

@jone22e notei que na linha 82 tem um comentário "não sei"

            $identificadorGuia = $gnre->createElement('identificadorGuia', "1"); //ainda nao sei

Seria essa uma tag que requer maior atenção?

jone22e commented 3 years ago

@jone22e notei que na linha 82 tem um comentário "não sei"

            $identificadorGuia = $gnre->createElement('identificadorGuia', "1"); //ainda nao sei

Seria essa uma tag que requer maior atenção?

Se não me engano é apenas um id para guia, se emitisse mais do que uma no mesmo lote teria que seguir em sequência... 1,2,3...

marabesi commented 3 years ago

Entendi, pelo que vi a implementação ainda não esta completa? Tem um switch case para cada estado, mas para isso tem as classes de configuração (cada estado tem a sua).

Me diz se essa classe funciona, como ela está que ai eu refatoro pra usar essas configurações.

jone22e commented 3 years ago

Entendi, pelo que vi a implementação ainda não esta completa? Tem um switch case para cada estado, mas para isso tem as classes de configuração (cada estado tem a sua).

Me diz se essa classe funciona, como ela está que ai eu refatoro pra usar essas configurações.

Aquele case ajuda a passar o número da nfe ou chave da nfe, tem estados que agora esperam a chave. Está funcionando, já emitimos diversas guias.

jone22e commented 3 years ago

Bom dia, ainda sobre o switch case:

É necessário passar o tipo de documento de origem e o número. Na V1 eu sempre passava código 10 e o número da nota fiscal.

Como na empresa que trabalho emitimos guias GNRE da DIFA (100102) e de ST (100099), e pode haver diferença entre elas, eu criei 2 funções que auxiliam no que passar para a classe da guia:

getCodigoDoc($uf, $difa = false); //retorna o tipo de doc //10, 22, 24... dependendo do estado de destino getNumDoc($uf); //retorna o campo que devo buscar no banco de dados: //numero ou chave da nf

Essas informações eu busquei diretamente no site da GNRE na parte de documentos de origem: http://www.gnre.pe.gov.br/gnre/portal/consultarTabelas.jsp

$guia->c28_tipoDocOrigem = $lote->getCodigoDoc($gnre['uf_favorecida'], $gnre['receita']=="100102"?true:false); //(se DIFA true, se ST false.) $guia->c04_docOrigem = $nota[$lote->getNumDoc($gnre['uf_favorecida'])];

Mas logicamente existe vários outros códigos além da ST e DIFA, então essas funções deveriam ser copiadas pelo programador e ajustadas.

Eu fiz essa adaptação para V2 rapidamente, pois aqui emitimos várias guias diariamente, e supostamente dia 01/04/2021 está previsto que a GNRE V1 seja descontinuada, então eu precisava resolver a situação o quanto antes.

Mas se achar interessante posso com mais tempo desenvolver uma nova classe dedicada a V2, eu faria modificações como:

$guia->setTipoIdentificacaoEmitente($guia->EmitenteCNPJ);

Um Abraço!

marabesi commented 3 years ago

@jone22e eu fiz um merge request com o arquivo que você enviou, e a ideia é ir comitando as mudanças la, vou atualizando essa issue conforme avanço no processo.

@jone22e você conseguiria mandar um XML de uma gnre enviada a sefaz válida? Com o XML eu vou criar o caso de teste e ir trabalhando em cima dele (já que eu não tenho o certificado).

jone22e commented 3 years ago

Bom dia, segue o XML.

xml-gnre.zip

image

marabesi commented 3 years ago

Valeu!

marabesi commented 3 years ago

@jone22e sabe me dizer se a consulta de GNRE mudou para a versão 2 também? Ou só o lote?