Closed olavocneto closed 4 years ago
Na issue #224 não foi fornecido o texto que está no XML na tag emitente conforme relatado mas pode ser que seja resolvida com esse PR.
Com
libxml_use_internal_errors(true);
libxml_clear_errors();
simplexml_load_string($this->xml);
$errors = libxml_get_errors();
libxml_clear_errors();
de NFePHP\Common\Validator
A mensagem que tenho é:
level: 3
code: 68
column: 1472
message: "xmlParseEntityRef: no name↵"
file: ""
line: 2
Meu amigo Olavo, acho que estou ruim de leitura pois não entendi absolutamente NADA ! Pode me explicar um pouco melhor o motivo e a causa ?
Hehehe! Falha minha!
Motivo Exemplo montando a tag prod na NFe focando somente no elemento xProd
//...
$std->xProd = 'UNIAO PEAD 20MM.&&& DOAL';
//...
$makeNFe->tagprod($std);
O método replaceUnacceptableCharacters
chamado pelo método equilizeParameters
irá alterar o input de xProd para:
$std->xProd = 'UNIAO PEAD 20MM.&&& DOAL';
Somente o último & é substituído. O comportamento esperado é:
$std->xProd = 'UNIAO PEAD 20MM.&&& DOAL';
Causa
Tem um espaço em branco logo após o & no 1º item do arranjo passado como argumento na função str_replace
do replaceUnacceptableCharacters
. Esse espaço em branco foi removido.
Rapaz !!! que inhaca !! &&& na descrição do produto ??? que coisa é essa mano ? Em principio o & deveria ser usado APENAS na razão social e olhe lá.
Concordo!! É que era uma NFe de devolução e a descrição do produto deveria ser idêntica a NFe referenciada.
Se for informado:
// ...
$std->xNome = 'Industrial && machinery mechanic';
// ...
$makeNFe->tagemit($std);
Vamos cair no mesmo caso.
$std->xNome = 'Industrial && machinery mechanic';
Por curiosidade, por que esse espaço em branco logo após o &?
É pela "definição original" do uso desse & na razão social em geral algo como:
"Fulano & Ciclano Associados"
Minha preocupação com a forma de fazer isso da forma proposta é alguém já passar um \& e o sistema converter novamente e isso já ocorreu, por isso o "& " (com espaço) para não tentar converter novamente.
Entendi! Vou enviar uma alteração para esperar o caso de a entrada já vir com &
e não ocorrer a substituição novamente.
Caso a aplicação deva tratar esses casos, me avise por favor que fechamos o pull request.
@olavocneto fico contente que esteja usando a biblioteca, sei que tenho estado ausente aqui.
a biblioteca já é complexa o suficiente para receber modificações. Esse tipo de alteração deveria estar a cargo da sua aplicação, já que sua aplicação detém conhecimento do dado.
Olhando pela perspectiva de responsabilidade, esta biblioteca deveria receber o dado já formatado para ser comunicado. Por isso, fecherei este PR, pois entendo que esta alteração pode oferecer alto risco para outros usuários. Bem colocado pelo @robmachado.
Lembrando que esta biblioteca deve tratar de funcionalidades pertinentes e exclusivas à comunicação com a SEFAZ e oferecer recursos para tal.
Os dados mapeados e conversões como esta, sua aplicação deve manusear. :blush:
Não exite em contribuir, assim todos aprendemos.
Concordo @tonicospinelli !!