-
Notifications
You must be signed in to change notification settings - Fork 60
8) Enviando um lote de GNRE para a SEFAZ
Antes de enviar algum lote para a SEFAZ você deve primeramente seguis esses passo:
-
Extrair os dados do certificado e Criar uma classe de configuração
-
Ter um lote do tipo \Gnre\Sefaz\Lote (não é necessário ter nenhuma guia no lote, porém a resposta da SEFAZ será com uma mensagem de erro de validação)
Com o fim de exemplificar vou utilizar aqui dados não reais e assumir que já possuo uma configuração existente na variável $minhaConfiguracao.
- Para realizar a comunicação corretamente com a SEFAZ devemos primeiro de tudo criar uma guia GNRE (Os dados adicionados na guia não são reais)
$guia = new \Gnre\Sefaz\Guia();
$guia = new Gnre\Sefaz\Guia();
$guia->c01_UfFavorecida = 'SP';
$guia->c02_receita = 1000099;
$guia->c25_detalhamentoReceita = 10101010;
$guia->c26_produto = 'TESTE DE PROD';
$guia->c27_tipoIdentificacaoEmitente = 1;
$guia->c03_idContribuinteEmitente = 41819055000105;
$guia->c28_tipoDocOrigem = 10;
$guia->c04_docOrigem = 5656;
$guia->c06_valorPrincipal = 10.99;
$guia->c10_valorTotal = 12.52;
$guia->c14_dataVencimento = '01/05/2015';
$guia->c15_convenio = 546456;
$guia->c16_razaoSocialEmitente = 'GNRE PHP EMITENTE';
$guia->c17_inscricaoEstadualEmitente = 56756;
$guia->c18_enderecoEmitente = 'Queens St';
$guia->c19_municipioEmitente = 5300108;
$guia->c20_ufEnderecoEmitente = 'DF';
$guia->c21_cepEmitente = '08215917';
$guia->c22_telefoneEmitente = 1199999999;
$guia->c34_tipoIdentificacaoDestinatario = 1;
$guia->c35_idContribuinteDestinatario = 86268158000162;
$guia->c36_inscricaoEstadualDestinatario = 10809181;
$guia->c37_razaoSocialDestinatario = 'RAZAO SOCIAL GNRE PHP DESTINATARIO';
$guia->c38_municipioDestinatario = 2702306;
$guia->c33_dataPagamento = '2015-11-30';
$guia->retornoInformacoesComplementares = 'teste teste teste';
$guia->retornoAtualizacaoMonetaria = 1.88;
$guia->retornoNumeroDeControle = '0000000000000000';
$guia->retornoJuros = 2.78;
$guia->retornoMulta = 3.55;
$guia->mes = '05';
$guia->ano = 2015;
$guia->parcela = 2;
$guia->periodo = 2014;
- E agora devemos adicionar a guia em um lote
$lote = new \Gnre\Sefaz\Lote();
$lote->addGuia($guia);
- Finalmente podemos criar nossa classe que irá converter o objeto lote em um XML
$webService = new Gnre\Webservice\Connection($minhaConfiguracao, $headers, $data);
Aqui devemos nos atentar para os parâmetros $headers e $data, $headers são os cabeçalhos enviados pelo SOAP para efetuar a requisição com sucesso e $data é o envelope SOAP enteiramente em XML. Não é preciso se preocupar com esses parâmetros pois a API já fornece eles para você, veja:
$webService = new Gnre\Webservice\Connection($minhaConfiguracao, $lote->getHeaderSoap(), $lote->toXml());
Basicamente o que devemos fazer é chamar os métodos correspondentes no nosso objeto \Gnre\Sefaz\Lote e o trabalho será feito
- Finalmente podemos fazer a conexão, que basicamente segue o mesmo princípio ao instanciar a classe Connection
$respostaSefaz = $webService->doRequest($lote->soapAction());
Passamos também como parâmetro qual ação deverá ser executada pelo web service e mais uma vez a classe \Gnre\Sefaz\Lote nos ajuda a completar essa tarefa.
Ao executar o script acima você terá a resposta da conexão na variável $repostaSefaz em XML, eventualmente o retorno será uma string pura com apenas a descrição do erro, porém isso só ocorre quando algo está antes de efetuar a transmissão.