nfephp-org / sped-nfe Goto Github PK
View Code? Open in Web Editor NEWAPI para geração e comunicação das NFe com as SEFAZ autorizadoras
License: Other
API para geração e comunicação das NFe com as SEFAZ autorizadoras
License: Other
Bom dia,
Tenho uma dúvida em questão ao serviço NfeConsulta2, que busca o status da NFe.
Quando envio a requisição de uma NFe que foi emitida no Piaui recebo no xml de resposta que a UF informada não é atendida pelo webservice.
Fiz umas pesquisas aqui sobre o erro e encontrei o seguinte informativo:
http://www.sefaz.pi.gov.br/index.php/informacoes/imprensa/noticias/noticias-em-destaque/atencao-contribuintes-para-a-mudanca-mudanca-na-autorizacao-da-nf-e
Em resumo, mudaram os serviços do Piauí para o ambiente do RS (SVRS).
Achei um arquivo de autorizadores olhando a API e no Piauí ainda está SVAN. Quando mudei para SVRS o serviço NfeConsulta2 funcionou.
Será que se atualizar esse arquivo o problema do NfeConsulta2 é resolvido sem afetar os outros?
Olá senhores,
Pesquisando a respeito dos certificados, encontrei 2 links na página to Tesouro Nacional explicando como gerar um certificado A1 para ser utilizado em ambiente de Homologação:
Estes certificados gerados como explicados nos links podem ser utilizados para geração de NF-e ou outros documentos eletrônicos ?
Incluir a validação do configJson no Common/Tools::class
Parece que a sintaxe ~ não é aceita, teria que colocar >=
Alguém mais.
Rodando composer header revision, 1.3.2 do composer.
A classe Make deverá ser refatorada com as seguintes condições:
Line 6988 in 5134d39
@robmachado meu caro tudo bem ? espero que sim, grande abraço pra vocês, apesar de ser chato, queria questionar o custo de tal operação inserido nesse contexto, para avaliar melhor temos cerca de 12 ou mais nós com essa função, é certo ter o objeto limpo com o que realmente é importante para o nó, porém há uma falha nessa lógica, nós passamos a utilizar standard objects para população das notas, se o usuário de alguma maneira aloca mais informação nesse objeto, ela não afetará o funcionamento da função tag especifica, haja visto que todos os objetos são requeridos por índices e muito bens sinalizados como vemos no código, então vejo eu o filtro do objeto como uma dosagem maior no custo da operação, se os referidos usuários não se importam com o que realmente é necessário para tag, não deveria ser esse o trabalho da api, estou correto ? por favor, estou a fazer a implantação do sped-nfe aqui, nessa semana acho que soltos alguns pr's com clean code e melhorias possíveis ( dentro dos meus limites). Obrigado pelo ótimo trabalho, vocês são fera!
Adição*: e pensando melhor agora, analisando a possibilidade do usuário colocar somente os dados necessários, teríamos custos sem necessidade, porque passaremos por esse laço sem objetivo.
@robmachado, estou testando o método sefazConsultaChave de uma nota destinada para o meu CNPJ.
Porém, existe uma validação com o método validKeyByUF. Neste caso, vai me retornar que a NFe não pertence ao meu estado.
O correto não seria pegar apenas a UF da chave? Ex:
$uf = UFList::getUFByCode(substr($chave, 0, 2))
Olá pessoal. Por favor me tirem uma dúvida.
O sped-nfe tem integração com o SAT? Ou gera cupons fiscais?
Se não podem me indicar algum que tenha essa opção. Obrigado.
Após atualização hoje dos últimos branch do mês via composer. voltou a me aparecer o erro:
An error occurred while trying to communication via soap, communication via soap Unable to load client cert -8018.
Havia utilizado a solução abaixo (setEncriptPrivateKey) que não funciona mais e não achei nenhuma alteração que pudesse causar isso. Conseguem dar uma luz? Alguém teve o mesmo problema?
$soap = new SoapCurl($certificate);
$soap->setEncriptPrivateKey(false);
$tools = new Tools($configjson, $certificate);
$tools->loadSoapClass($soap);
Obrigado
public function tagmed(
$nItem = '',
$cProdANVISA = '',
$vPMC = ''
)
As classes criadas pelo XSD, como sped-console, são fortemente dependentes
Poderia ser utilizado algum recurso como o Zend-ServiceManager para tratar essas dependências de forma mais elegante e transparente quando invocadas pela classe Make.php
Identifiquei outro problema ao tentar cancelar um NFCe no ambiente de homologação no SVRS.
Alterando o arquivo conforme abaixo, funcionou.
Testei somente na homologação, acredito que em produção esteja com o mesmo problema.
Linhas 300 e 308
De: <RecepcaoEvento method="nfeRecepcaoEvento" operation="NFeRecepcaoEvento" version="1.00">...
Para: <RecepcaoEvento method="nfeRecepcaoEvento" operation="NFeRecepcaoEvento4" version="1.00">...
public function tagICMSUFDest(
$nItem = '',
$vBCUFDest = '',
$pFCPUFDest = '',
$pICMSUFDest = '',
$pICMSInter = '',
$pICMSInterPart = '',
$vFCPUFDest = '',
$vICMSUFDest = '',
$vICMSUFRemet = ''
)
Depois das atualizações do último mês. Está me ocorrendo esse problema (já estava enviando corretamente para Sefaz):
Ao validar o XML gerado com Make ele me apresenta os seguintes problemas:
'vPIS': This element is not expected. Expected is one of ( vBC )
'vCOFINS': This element is not expected. Expected is one of ( vBC )
(qBCProd, vBC tb)
Os campos são preenchidos CST 49 (empresa simples, e os campos acima zerados)
Removendo o grupo, a validação passa, mas o Sefaz recusa a nota:
745 - Rejeição: NF-e sem grupo do PIS
Houve alguma mudança nesse sentido? Obrigado!!
Quase me esqueci, schemes: PL_009_V4
public function tagcomb(
$nItem',
$cProdANP',
$descANP,
$pGLP,
$pGNn,
$pGNi,
$vPart,
$codif,
$qTemp,
$ufCons,
$qBCProd,
$vAliqProd,
$vCIDE
)
@robmachado, lembro-me que você fez uma alteração no tempo de exclusão do certificado criado no dir tmp. Você acha que seria possível adicionarmos um novo parametro no config para que esse tempo de exclusão seja controlado por lá?
Olá,
Onde consigo o manual de orientação para leiaute compatível com a NF-e 4.0 ?
se tiveres o link para download, agradeço.
ta madura pra usar? muda alguma coisa da anterior?
Na classe v400 o método tagCEST (linha 279) utiliza uma variável $identificador que não foi declarada, fazendo o código quebrar.
https://github.com/nfephp-org/sped-nfe/blob/master/src/Factories/Make400.php#L279
Redirecionando ....
Solicitado em:
Estive olhando o método addCancelamento e notei que as variáveis '$pathNFefile' e '$pathCancfile', só aceitam como parâmetro um path para arquivo XML, uma sugestão seria que ele aceite também string XML, igual outras funções da mesma classe.
O outro ponto é uma sugestão/dúvida, que eu observei no manual de orientação do contribuinte é que no caso do cancelamento de nota podem ser aceitas de 1 a 20 notas por lote, mas o nfephp aceita somente 1. No meu caso isso não me afeta em nada, mas não sei se em um contexto mais geral isso seria interessante.
Identifiquei uma possível situação problema no commit cc4898d que pode ser a causa de uma quebra de compatiblidade que estou enfrentando ao utilizar a biblioteca.
Essa atualização modificou o pattern de validação do tipo TString (Tipo string genérico) no arquivo tiposBasico_v4.00.xsd, sobreescrevendo uma correção/ajuste aplicada por 99a6545.
Por meio dessa alteração, o NFePHP\Common\Validator tem rejeitado alguns valores aplicados em tags do xml, rejeição essa que acontece mesmo quando os valores são válidos para o contexto em que são aplicados.
Eu identifiquei esse problema ao atribuir o valor M3 a tag uCom e ter como resultado erro de validação de schema com a seguinte mensagem.
This XML is not valid. Element '{http://www.portalfiscal.inf.br/nfe}uCom': [facet 'pattern'] The value 'M3' is not accepted by the pattern '[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}'. Element '{http://www.portalfiscal.inf.br/nfe}uCom': 'M3' is not a valid value of the local atomic type. Element '{http://www.portalfiscal.inf.br/nfe}uTrib': [facet 'pattern'] The value 'M3' is not accepted by the pattern '[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}'. Element '{http://www.portalfiscal.inf.br/nfe}uTrib': 'M3' is not a valid value of the local atomic type.
Observei que a partir da reaplicação do commit 99a6545 o NFePHP\Common\Validator volta a identificar o conteúdo do xml como válido.
Seria então necessário reaplicar o commit em cima da ultima atualização do arquivo?
public function tagICMS(
$nItem = '',
$orig = '',
$CST = '',
$modBC = '',
$pRedBC = '',
$vBC = '',
$pICMS = '',
$vICMS = '',
$vBCFCP = '',
$pFCP = '',
$vFCP = '',
$vICMSDeson = '',
$motDesICMS = '',
$modBCST = '',
$pMVAST = '',
$pRedBCST = '',
$vBCST = '',
$pICMSST = '',
$vICMSST = '',
$vBCFCPST = '',
$pFCPST = '',
$vFCPST = ''
$pDif = '',
$vICMSDif = '',
$vICMSOp = '',
$vBCSTRet = '',
$vICMSSTRet = ''
)
Já vi o seguinte recurso em um sistema, importação da NF-e através da Chave da NFe. Gostaria de saber se no projeto já existe esse recurso, ou se não, se alguém sabe de alguma documentação desse recurso na SEFAZ. Pois esse recurso me interessa muito e estou interessado em implementar essa funcionalidade na biblioteca caso ainda não exista.
Line 268 in 510fde8
Este método parece não ser utilizado, e ao mesmo tempo já existe o método setEnvironment() utilizado no construtor, então acredito que environment() possa ser excluído?
Gurizada estou tendo dificuldade para emitir uma NFCe dentro do RS na versão 3.10
Estou recebendo o seguinte retorno na lib “O argumento passado não é um XML válido.”
Analisando descobri que o problema está na tag de pag do XML, hoje atualmente está assim
<pag>
<detPag>
<tPag>01</tPag>
<vPag>42.34</vPag>
</detPag>
</pag>
Fiz algumas experiências no XML alterando o para:
<pag>
<tPag>01</tPag>
<vPag>42.34</vPag>
</pag>
Assim ele passou na validação.
Gostaria de saber se eu estou fazendo alguma coisa de errado, ou se não seria o caso de adicionar esses dois elementos “ tPag”, “ vPag” no método:
$make->tagpag($std);
Da classe Make.
A classe Convert deve ser refatorada para atender aos layouts 3.10 e 4.00, com as seguintes premissas:
Boa Tarde,
Estou testando o cancelamento de nota. Teoricamente achei que seria o mais simples. Mas não importa a forma que teste sempre me apresenta o erro:
[cStat] => 225 [xMotivo] => Rejeição: Falha no Schema XML .
Já procurei em forum, e o pessoal diz que o problema pode ser caracteres especiais na justificativa. (O que está apenas com a palavra "teste", sem espaço ou acentos, para não haver problema)
Já debuguei a API, e o retorno do XML aparentemente o que parece bem tranquilo, já que a informação passada são apenas justificativa, chave e protocolo , ver abaixo retorno: (antes da assinatura, que aparentemente também não teve problema algum):
Alguma ideia do que pode estar ocasionando o problema? Obrigado!
<evento xmlns="http://www.portalfiscal.inf.br/nfe" versao="4.00">
<infEvento Id="ID1101113518012###388300010355001000000082140877558201">
<cOrgao>35</cOrgao>
<tpAmb>2</tpAmb>
<CNPJ>###3883000103</CNPJ> (cnpj alterado propositalmente apenas aqui)
<chNFe>3518012###3883000103550010000000821408775582</chNFe>
<dhEvento>2018-01-08T09:36:24-02:00</dhEvento>
<tpEvento>110111</tpEvento>
<nSeqEvento>1</nSeqEvento>
<verEvento>4.00</verEvento>
<detEvento versao="4.00">
<descEvento>Cancelamento</descEvento>
<nProt>135180009082761</nProt>
<xJust>teste</xJust>
</detEvento>
</infEvento>
</evento>
Algumas cosiderações:
Roberto, eu andei vendo as classes e fiz uns testes, o que acha de por exemplo trocar os ifs e switchs por abordagens com funções.
Atualmente a função, e recebe tantos parâmetros
tagIMCSSN
Pode ser:
$produto->imposto()
->ICMSSN101(0, 1,25, 4.00)
o que acha?
Eu fiz uns testes aqui mais básicos como:
$this->{tagasermontada}(parametrosdatag);
e ficou muito bom, no caso da função não existir emite um erro.
Line 28 in 510fde8
Boa tarde, a versão antiga da API já criava no construtor da classe Tools, a estrutura de pastas produção/homologação e suas subpastas de entradas, assinadas, validadas, etc...
Fiz um find por todo o código por "mkdir" e olhei os métodos e não encontrei mais nada...
A API não faz mais nenhuma operação de sistema de arquivos gravando os retornos dos webservices?
Uma coisa que eu já encontrei observando as classes internas do nfephp é que ele tem umas classes independentes de Exceptions, e isso é bom. Mas você poderia melhorar isso, ou pelo menos facilitar esse reconhecimento por parte dos usuários sobre os tipos de Exceptions(do nfephp) disponíveis.
Ou você poderia documentar quais as Exceptions que normalmente o nfephp pode gerar, ou seja, especificar para que aqueles Exceptions personalizados servem e quando eles aparecem.
É muito incômodo ter que ficar revirando a API para descobrir essas coisas, sem contar o risco de estragar algo que estava funcionando.
Outro ponto é que vocês podiam definir um nível de log para esses Exceptions da api, colocar um identificador em algum lugar da string da Exception ou lançar essa string da Exception como um json, onde seria possível identificar o que é erro de problemas não ligados diretamente a nota ( erro de leitura de arquivos, problema de ssl) e o que são problemas realmente ligados a nota como falhas na validação, problemas de envio.
Enfim, gerar alguma forma que facilite identificar o que são erros que só nós programadores devemos saber e o que são erros que usuários podem ver, ou pelo menos documentar o que pode aparecer.
Isso é uma simples sugestão, a viabilidade disso no contexto geral, só vocês podem dizer.
Desde já obrigado pela atenção.
Não consigo encontrar a classe de Danfe, ela está em outro repositório?
Line 432 in 358420e
Vie uma inconsistência no código, eu defino uma chave com a string 'NFe' no inicio, mas depois o código remove e então concatena de novo ?? eu to errado ?
Boa noite,
recentemente tive um problema um tanto quanto estranho.
A validação do XML falhou (em um ambiente Linux) utilizando o mesmo que código que está funcionando perfeitamente em um ambiente no MacOSX.
O ambiente linux é:
Versão do PHP: 7.1.13
Distributor ID: LinuxMint
Release: 18.1
Codename: serena
O ambiente do MacOS é:
Versão do PHP: 7.1.9
Sistema Operacional: MacOS Sierra Versão 10.12.6
O retorno da validação foi o seguinte:
This XML is not valid. Element '{http://www.portalfiscal.inf.br/nfe}cProd': [facet 'pattern'] The value '15' is not accepted by the pattern '[!-ÿ]{1}[ -ÿ]{0,}[! ▶
\n
Element '{http://www.portalfiscal.inf.br/nfe}cProd': '15' is not a valid value of the local atomic type.\n
\n
Element '{http://www.portalfiscal.inf.br/nfe}uCom': [facet 'pattern'] The value 'Un' is not accepted by the pattern '[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}'.\n
\n
Element '{http://www.portalfiscal.inf.br/nfe}uCom': 'Un' is not a valid value of the local atomic type.\n
\n
Element '{http://www.portalfiscal.inf.br/nfe}uTrib': [facet 'pattern'] The value 'Lt' is not accepted by the pattern '[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}'.\n
\n
Element '{http://www.portalfiscal.inf.br/nfe}uTrib': 'Lt' is not a valid value of the local atomic type.\n
\n
Element '{http://www.portalfiscal.inf.br/nfe}xPed': [facet 'pattern'] The value '16' is not accepted by the pattern '[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}'.\n
\n
Element '{http://www.portalfiscal.inf.br/nfe}xPed': '16' is not a valid value of the local atomic type.\n
\n
Element '{http://www.portalfiscal.inf.br/nfe}cProd': [facet 'pattern'] The value '56' is not accepted by the pattern '[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}'.\n
\n
Element '{http://www.portalfiscal.inf.br/nfe}cProd': '56' is not a valid value of the local atomic type.\n
\n
Element '{http://www.portalfiscal.inf.br/nfe}uCom': [facet 'pattern'] The value 'Cx' is not accepted by the pattern '[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}'.\n
\n
Element '{http://www.portalfiscal.inf.br/nfe}uCom': 'Cx' is not a valid value of the local atomic type.\n
\n
Element '{http://www.portalfiscal.inf.br/nfe}uTrib': [facet 'pattern'] The value 'Cx' is not accepted by the pattern '[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}'.\n
\n
Element '{http://www.portalfiscal.inf.br/nfe}uTrib': 'Cx' is not a valid value of the local atomic type.\n
\n
Element '{http://www.portalfiscal.inf.br/nfe}xPed': [facet 'pattern'] The value '16' is not accepted by the pattern '[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}'.\n
\n
Element '{http://www.portalfiscal.inf.br/nfe}xPed': '16' is not a valid value of the local atomic type.\n
Ao fazer o mesmo teste no php, a validação foi executado com sucesso:
<?php
$valor = '15';
$valid = preg_match('/^[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}$/', $valor);
if($valid){
echo "Validou!";
}else{
echo "Não Validou!";
}
public function tagide(
$cUF = '',
$cNF = '',
$natOp = '',
$indPag = '',
$mod = '',
$serie = '',
$nNF = '',
$dhEmi = '',
$dhSaiEnt = '',
$tpNF = '',
$idDest = '',
$cMunFG = '',
$tpImp = '',
$tpEmis = '',
$cDV = '',
$tpAmb = '',
$finNFe = '',
$indFinal = '0',
$indPres = '',
$procEmi = '',
$verProc = '',
$dhCont = '',
$xJust = ''
)
An error occurred while trying to communication via soap, [https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx] Unable to handle request without a valid action parameter. Please supply a valid soap action.
Hoje meu sistema amanheceu com este erro ao tentar emitir uma nota.
A url foi alterada ou algo assim?
Podem me ajudar ?
Desde já agradeço.
No método isValid a variável $row poderia ser utilizar um trim, pois quando vai processar cada linha esta dando este erro "ERRO: Todas as linhas devem terminar com 'pipe'", quando da um explode esta ficando um espaço no inicio da linha e no fim " A|3.10|NFe|| "
_A.txt
Usar esse repositório ou usar o speed-nfe? Mas no speed-nf fala que não deve usar em produção.
Bom dia,
Tenho a seguinte dúvida, não sei se isso é um problema por isso estou fazendo esse issue.
Nesse arquivo https://github.com/nfephp-org/sped-nfe/blob/v5.0/src/Complements.php#L297
Quando enviamos uma CCe ou Cancelamento por exemplo, teriamos que criar um arquivo com a requisição e o protocolo do evento, esse arquivo deve ser criado somente se o cStat for 135? se for 155 por exemplo não geramos esse arquivo?
Por que a classe joga uma exceção no caso de 155 homologado fora do prazo por exemplo...
Ou quando for cancelamento não deve criar esse protocolo de evento e somente usar Complements::cancelRegister?
A linha 240 do arquivo Convert.php utiliza a nomenclatura antiga das classe
$this->make = new MakeNFe();
Isso acaba gerando um Class not found.
Atualizando para a nomenclatura correta, o erro desaparece.
$this->make = new Make();
"exportInd" está definido na documentação mas não possui variável correspondente nem inclusão na tag "detExport" (conforme leiauteNFe_v3.10.xsd). Foi documentado mas não vai ser implementado ou vai ser implementado no futuro?
NFePHP\Extras\NfephpException
O xml do DANFE deve ser uma NF-e modelo 55
Incluir o (S) do https em wsnfe_3.10_mod65.xml para sefaz GO:
GO https://homolog.sefaz.go.gov.br/nfeweb/sites/nfce/danfeNFCeExatamente nessa linha: https://github.com/nfephp-org/sped-nfe/blob/master/src/Tools.php#L231
O nome não seria Mail?
Os endereços do ambiente de homologação do SRVS no arquivo wsnfe_4.00_mod65.xml estão errados, exceto a URL de Autorização.
Ao utilizar o método sefazConsultaChave($chave, $tpAmb)
da classe Tools, considerando tpAmb como 1 e emissor SVRS, tenho identificado um erro com o seguinte resposta/descrição de falha:
Unable to handle request. The action 'http://www.portalfiscal.inf.br/nfe/wsdl/NFeConsulta4/nfeConsultaNF' was not recognized.
A rotina volta a funcionar normalmente caso, no arquivo wsnfe_4.00_mod55.xml, o atributo operation da entrada NfeConsultaProtocolo for modificado de NFeConsulta4 para NFeConsultaProtocolo4 (valor idêntico ao atribuido para o mesmo elemento quando em homologação)
Reparei que listou certs/autorizadores.list... Tem alguma mais como um CSV completo com as características de cada SEFAZ específico?
Na OKBr temos interesse em ajudar a publicar esse tipo de dataset.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.