Closed relpcam closed 3 years ago
@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]);
@gustavovendramini
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.
Toda vez em que eu passo o Valor Declarado ao fechar uma PLP aparece o erro:
Esse é código de exemplo: