Closed furtado3g closed 2 years ago
Pelo teu código, pode estar acontecendo de o mesmo serviço estar sendo adicionado várias vezes.
Essa linha $servicoAdicional->setCodigoServicoAdicional($adicionais[0]);
Não deveria ser $servicoAdicional->setCodigoServicoAdicional($adicional);
?
Veja no XML se esse não é o caso, se tiver vários serviços com o mesmo código vai retornar erro mesmo. Além disso, o código de serviço adicional de valor declarado deve estar de acordo com o tipo de serviço (Sedex, PAC, etc).
@andersonls Bom dia,
Mesmo com a correção apontada o que realmente acabava causando um erro o resultado é o mesmo, e ao gerar a plp de uma etiqueta que contenha apenas um serviço adicional a mesma é gerada normalmente, Mas ao enviar mais de um serviço adicional o erro se mantem,
$servicosAdicionais = []; $adicionais = explode(',', $v->adicional); foreach($adicionais as $adicional){ $servicoAdicional = new \PhpSigep\Model\ServicoAdicional(); if($adicional == '019' || $adicional == '064' || $adicional == '065'){ $servicoAdicional->setCodigoServicoAdicional($adicional); $servicoAdicional->setValorDeclarado(floatval(moedaPhp($v->valor_produto))); $servicosAdicionais[] = $servicoAdicional; }elseif($adicional == '01'){ $servicoAdicional->setCodigoServicoAdicional($adicional); $servicosAdicionais[] = $servicoAdicional; } }
segue xml que foi gerado
`<?xml version="1.0" encoding="UTF-8"?>
Notei duas coisas no teu XML:
<codigo_servico_adicional>01</codigo_servico_adicional>
, para <codigo_servico_adicional>001</codigo_servico_adicional>
. @andersonls Muito obrigado pela ajuda consegui resolver o erro, O mesmo era causado pelo formato do valor informado no vd e ordem
Quando tento enviar mais de um serviço adicional acaba me retornando que o xml está invalido conforme mensagem retornada do correio (Ocorreu um erro ao interpretar os dados do XML gerado pelo Cliente.), Segue trecho de código onde eu defino o array de serviços adicionais na etiqueta, Os valores estão salvos em uma String implodidos no próprio banco de dados
$servicosAdicionais = []; $adicionais = explode(',', $v->adicional); foreach($adicionais as $adicional){ $servicoAdicional = new \PhpSigep\Model\ServicoAdicional(); if($adicional == '019' || $adicional == '064' || $adicional == '065'){ $servicoAdicional->setCodigoServicoAdicional($adicionais[0]); $servicoAdicional->setValorDeclarado(floatval(moedaPhp($v->valor_produto))); $servicosAdicionais[] = $servicoAdicional; }elseif($adicional == '01'){ $servicoAdicional->setCodigoServicoAdicional($adicional); $servicosAdicionais[] = $servicoAdicional; } }