Closed guicalabria closed 9 years ago
Guilherme;
Você não está entendendo ...
function tagInfAdProd($nItem = '', $texto = '') só deve ser chamada se houver algo a incluir, seu sistema é quem deve decidir e não a classe Make.
quando ao FCI vale a mesma coisa se estiver em branco não vai gerar a TAG por isso o $this->addChiled tem aquele "false" estabelecido, então é só deixar vazio, porém se tiver um espaço a função vai criar a TAG.
Bom dito isso, complemento .... DESIGN PATTERNS, SOLID, ETC.. devemos evitar "IF's" e colocar coisas que não são de responsabilidade da classe.
Não estou satisfeito em fazer nenhuma dessas alterações, para mim são totalmente desnecessárias.
Abraço
Roberto
Roberto, Esse problema é gerado pela utilização da classe ConvertNFe que automaticamente chama esses métodos mesmo quando os valores são vazios como: H|1|| ou I|cProd|cEAN|xProd|NCM|EXTIPI|CFOP|uCom|qCom|vUnCom|vProd|cEANTrib|uTrib|qTrib|vUnTrib|vFrete|vSeg|vDesc| vOutro|indTot|xPed|nItemPed|| <- vazio
Abraços, Guilherme
Em 26 de março de 2015 17:49, Roberto L. Machado notifications@github.com escreveu:
Guilherme;
Você não está entendendo ...
function tagInfAdProd($nItem = '', $texto = '') só deve ser chamada se houver algo a incluir, seu sistema é quem deve decidir e não a classe Make.
quando ao FCI vale a mesma coisa se estiver em branco não vai gerar a TAG por isso o $this->addChiled tem aquele "false" estabelecido, então é só deixar vazio, porém se tiver um espaço a função vai criar a TAG.
Bom dito isso, complemento .... DESIGN PATTERNS, SOLID, ETC.. devemos evitar "IF's" e colocar coisas que não são de responsabilidade da classe.
Não estou satisfeito em fazer nenhuma dessas alterações, para mim são totalmente desnecessárias.
Abraço
Roberto
— Reply to this email directly or view it on GitHub https://github.com/nfephp-org/nfephp/issues/453#issuecomment-86709018.
ConvertNFe está assim: /* * hEntity * Cria tag infAdProd * @param array $aCampos / protected function hEntity($aCampos) { //H|item|infAdProd $this->make->taginfAdProd($aCampos[1], $aCampos[2]); $this->nItem = (integer) $aCampos[1]; }
De qualquer forma irá adicionar a infAdProd.
Talvez mexer na classe convert então?
Abraços;
Em 26 de março de 2015 18:07, Guilherme Calabria Filho guiga86@gmail.com escreveu:
Roberto, Esse problema é gerado pela utilização da classe ConvertNFe que automaticamente chama esses métodos mesmo quando os valores são vazios como: H|1|| ou
I|cProd|cEAN|xProd|NCM|EXTIPI|CFOP|uCom|qCom|vUnCom|vProd|cEANTrib|uTrib|qTrib|vUnTrib|vFrete|vSeg|vDesc| vOutro|indTot|xPed|nItemPed|| <- vazio
Abraços, Guilherme
Em 26 de março de 2015 17:49, Roberto L. Machado <notifications@github.com
escreveu:
Guilherme;
Você não está entendendo ...
function tagInfAdProd($nItem = '', $texto = '') só deve ser chamada se houver algo a incluir, seu sistema é quem deve decidir e não a classe Make.
quando ao FCI vale a mesma coisa se estiver em branco não vai gerar a TAG por isso o $this->addChiled tem aquele "false" estabelecido, então é só deixar vazio, porém se tiver um espaço a função vai criar a TAG.
Bom dito isso, complemento .... DESIGN PATTERNS, SOLID, ETC.. devemos evitar "IF's" e colocar coisas que não são de responsabilidade da classe.
Não estou satisfeito em fazer nenhuma dessas alterações, para mim são totalmente desnecessárias.
Abraço
Roberto
— Reply to this email directly or view it on GitHub https://github.com/nfephp-org/nfephp/issues/453#issuecomment-86709018.
Sim na classe convert devemos corrigir Em 26/03/2015 18:09, "guicalabria" notifications@github.com escreveu:
ConvertNFe está assim: /**
- hEntity
- Cria tag infAdProd
- @param array $aCampos */ protected function hEntity($aCampos) { //H|item|infAdProd $this->make->taginfAdProd($aCampos[1], $aCampos[2]); $this->nItem = (integer) $aCampos[1]; }
De qualquer forma irá adicionar a infAdProd.
Talvez mexer na classe convert então?
Abraços;
Em 26 de março de 2015 18:07, Guilherme Calabria Filho guiga86@gmail.com escreveu:
Roberto, Esse problema é gerado pela utilização da classe ConvertNFe que automaticamente chama esses métodos mesmo quando os valores são vazios como: H|1|| ou
I|cProd|cEAN|xProd|NCM|EXTIPI|CFOP|uCom|qCom|vUnCom|vProd|cEANTrib|uTrib|qTrib|vUnTrib|vFrete|vSeg|vDesc| vOutro|indTot|xPed|nItemPed|| <- vazio
Abraços, Guilherme
Em 26 de março de 2015 17:49, Roberto L. Machado < notifications@github.com
escreveu:
Guilherme;
Você não está entendendo ...
function tagInfAdProd($nItem = '', $texto = '') só deve ser chamada se houver algo a incluir, seu sistema é quem deve decidir e não a classe Make.
quando ao FCI vale a mesma coisa se estiver em branco não vai gerar a TAG por isso o $this->addChiled tem aquele "false" estabelecido, então é só deixar vazio, porém se tiver um espaço a função vai criar a TAG.
Bom dito isso, complemento .... DESIGN PATTERNS, SOLID, ETC.. devemos evitar "IF's" e colocar coisas que não são de responsabilidade da classe.
Não estou satisfeito em fazer nenhuma dessas alterações, para mim são totalmente desnecessárias.
Abraço
Roberto
— Reply to this email directly or view it on GitHub <https://github.com/nfephp-org/nfephp/issues/453#issuecomment-86709018 .
— Reply to this email directly or view it on GitHub https://github.com/nfephp-org/nfephp/issues/453#issuecomment-86719057.
Roberto, Realizei uns testes aqui e quando faço o xPed e o nItemPed que também não são obrigatórios igual ao nFCI o xml gerado pela MakeNFe não gera tags vazias, você sabe por que? Se gerasse talvez daria o mesmo erro.
É provável que você está enviando alguma coisa para essa variável nFCI. Se ela não for vazia a tag será gerada mesmo que o que estiver nela seja um espaço
Roberto
Qaunto a classe convert não acredito também que nenhuma mudança seja necessária em virtude do que você colocou pois ou os marcadores não deveriam estar no txt ou o valor do campo deveria estar vazio.
Novamente não compete a essas classe fazer qualquer "filtragem" ou "correção" de informações incorretas fornecidas pelo ERP. Isso é problema do ERP e não dessas classes.
Roberto
Roberto, Não sei por que ele gera essa tag vazia meu arquivo txt está como: H|1|| I|B17025056||PAPEL MAXPLOT- 170MX250MX56GRS 3"|48025599||5101|Rl|1.0000|138.3000|138.30||RL|1.0000|138.3000|||||1||||
Bom, se eu descobrir eu aviso.
Abraços.
Usei sua linha aqui na minha maquina e não foi gerado o FCI aparentemente tem algo errado ai !
Roberto
Nem a tag infAdProd?
Essa eu não vi mas vou ver
2015-03-27 14:15 GMT-03:00 guicalabria notifications@github.com:
Nem a tag infAdProd?
— Reply to this email directly or view it on GitHub https://github.com/nfephp-org/nfephp/issues/453#issuecomment-87016494.
Roberto
Nisi utile est quod facimus stulta est gloriae (Julius Phaedous)
Olá, Eu estava obtendo erros na validação nos campos infAdProd e nFCI quando não possui valores. A classe MakeNFe.php gera a TAG sendo < infAdProd / > . "Erro Elemento 'infAdProd': [Erro 'Tam. Min'] O valor tem o tamanho '0'; " Alterei a linha 1372, adicionada o IF para somente adicionar o nFCI se houver valor, se não ignorar; ficando: if ( $nFCI!='' ) $this->dom->addChild($prod,"nFCI",$nFCI,false,$identificador . "[item $nItem] Número de controle da FCI - Ficha de Conteúdo de Importação");
E a linha linha 1415, adicionado IF para somente adicionar o infAdProd quando $texto!='' public function taginfAdProd($nItem = '', $texto = '') { if ( $texto =='' ) return ''; $infAdProd = $this->dom->createElement("infAdProd", $texto); $this->aInfAdProd[$nItem] = $infAdProd; return $infAdProd; }
Me desculpe não enviar pelo GITHUb até hoje eu nunca consegui enviar uma alteração :-( diretamente... ele retorna que eu não tenho autorização para fazer isso... pretendo reservar um tempo em breve para aprender a usar o GitHub melhor.