Erro ao fechar PLP
Closed this issue · 6 comments
Toda vez em que eu passo o Valor Declarado ao fechar uma PLP aparece o erro:
PhpSigep\Services\Result Object
(
[isSoapFault:protected] => 1
[errorCode:protected] => 0
[errorMsg:protected] => Ocorreu um erro ao interpretar os dados do XML gerado pelo Cliente.
[result:protected] =>
[soapFault:protected] =>
[_failIfAtributeNotExiste:protected] => 1
)
Esse é código de exemplo:
// Estamos criando uma etique falsa, mas em um ambiente real voçê deve usar o método
// {@link \PhpSigep\Services\SoapClient\Real::solicitaEtiquetas() } para gerar o número das etiquetas
$etiqueta = new \PhpSigep\Model\Etiqueta();
$etiqueta->setEtiquetaSemDv('PD73958096BR');
$servicoAdicional = new \PhpSigep\Model\ServicoAdicional();
$servicoAdicional->setCodigoServicoAdicional(\PhpSigep\Model\ServicoAdicional::SERVICE_REGISTRO);
// Se não tiver valor declarado informar 0 (zero)
$servicoAdicional->setCodigoServicoAdicional(\PhpSigep\Model\ServicoAdicional::SERVICE_AVISO_DE_RECEBIMENTO);
$servicoAdicional2 = new \PhpSigep\Model\ServicoAdicional();
$servicoAdicional2->setCodigoServicoAdicional(\PhpSigep\Model\ServicoAdicional::SERVICE_REGISTRO);
$servicoAdicional2->setCodigoServicoAdicional(\PhpSigep\Model\ServicoAdicional::SERVICE_VALOR_DECLARADO_PAC);
$servicoAdicional2->setValorDeclarado(100);
$encomenda = new \PhpSigep\Model\ObjetoPostal();
$encomenda->setServicosAdicionais(array($servicoAdicional, $servicoAdicional2));
$encomenda->setDestinatario($destinatario);
$encomenda->setDestino($destino);
$encomenda->setDimensao($dimensao);
$encomenda->setEtiqueta($etiqueta);
$encomenda->setPeso(0.500);// 500 gramas
$encomenda->setObservacao('Lorem ipsum dolor sit amet.');
$encomenda->setServicoDePostagem(new \PhpSigep\Model\ServicoDePostagem(\PhpSigep\Model\ServicoDePostagem::SERVICE_PAC_41068));
// *** FIM DOS DADOS DA ENCOMENDA QUE SERÁ DESPACHADA *** //
@relpcam eu uso serviço adicional com valor declarado sem problemas.
Observei algo que parece errado no seu código, você chama o método setCodigoServicoAdicional duas vezes para cada objeto
// SERVICE_REGISTRO não terá efeito pois está sendo substituído por SERVICE_AVISO_DE_RECEBIMENTO
$servicoAdicional->setCodigoServicoAdicional(\PhpSigep\Model\ServicoAdicional::SERVICE_REGISTRO);
$servicoAdicional->setCodigoServicoAdicional(\PhpSigep\Model\ServicoAdicional::SERVICE_AVISO_DE_RECEBIMENTO);
// SERVICE_REGISTRO não terá efeito pois está sendo substituído por SERVICE_VALOR_DECLARADO_PAC
$servicoAdicional2->setCodigoServicoAdicional(\PhpSigep\Model\ServicoAdicional::SERVICE_REGISTRO);
$servicoAdicional2->setCodigoServicoAdicional(\PhpSigep\Model\ServicoAdicional::SERVICE_VALOR_DECLARADO_PAC);
E segundo o Manual_de_Implementacao_do_Web_Service_SIGEP_WEB Revisão 04/09/2020 página 44, o serviço de registro é obrigatório para a maioria dos envios, logo acredito que o problema talvez seja esse, vc nao está passando o SERVICE_REGISTRO
Exemplo que funciona aqui:
$srvAdcionalRegistro = new ServicoAdicional();
$srvAdcionalRegistro->setCodigoServicoAdicional(ServicoAdicional::SERVICE_REGISTRO);
$codigoValorDec = $tipofrete == 'PAC' ? ServicoAdicional::SERVICE_VALOR_DECLARADO_PAC : ServicoAdicional::SERVICE_VALOR_DECLARADO_SEDEX;
$srvAdicionalValorDec = new ServicoAdicional();
$srvAdicionalValorDec->setCodigoServicoAdicional($codigoValorDec);
$srvAdicionalValorDec->setValorDeclarado($valorDeclarado);
$encomenda = new ObjetoPostal();
$encomenda->setServicosAdicionais([$srvAdcionalRegistro, $srvAdicionalValorDec]);
Eu to achando muito estranho, utilizei o mesmo código que você publicou e acontece o mesmo erro ao fechar a PLP.
O problema acontece sempre quando eu passo um valor diferente de 0 no método setValorDeclarado();
PhpSigep\Services\Result Object
(
[isSoapFault:protected] => 1
[errorCode:protected] => 0
[errorMsg:protected] => Ocorreu um erro ao interpretar os dados do XML gerado pelo Cliente.
[result:protected] =>
[soapFault:protected] =>
[_failIfAtributeNotExiste:protected] => 1
)
@relpcam estranho mesmo. Tente debugar, imprima o conteúdo da variável $xml (dump, var_dump, print_r, ...) do arquivo vendor/stavarengo/php-sigep/src/PhpSigep/Services/Real/FecharPreListaDePostagem.php antes de definir o $soapArgs
E verifique se não tem algum caracter special quebrando o XML.
No mais não tenho ideia do que pode ser.
@gustavovendramini eu percebi que se eu passar mais de 2 serviços adicional dá erro
Se eu passar:
SERVICE_REGISTRO
SERVICE_AVISO_DE_RECEBIMENTO
SERVICE_MAO_PROPRIA
aparece:
PhpSigep\Services\Result Object
(
[isSoapFault:protected] => 1
[errorCode:protected] => 0
[errorMsg:protected] => Ocorreu um erro ao interpretar os dados do XML gerado pelo Cliente.
[result:protected] =>
[soapFault:protected] =>
[_failIfAtributeNotExiste:protected] => 1
)
Eu estou tentando até agora descobrir o motivo desse erro.
This issue has been automatically marked as stale because it has not had any recent activity. It will be closed in 5 days if no further activity occurs.
This issue has been automatically closed because it has not had any recent activity. If you have a question or comment, please open a new issue.