nfephp-org / sped-da Goto Github PK
View Code? Open in Web Editor NEWClasses para geração dos documentos auxiliares usados pelos padrões Sped
License: Other
Classes para geração dos documentos auxiliares usados pelos padrões Sped
License: Other
Bom dia ,
tenho uma impressão de dacte do cte, mas o problema que acontece é que na parte dos DOCUMENTOS ORIGINÁRIOS eu tenho 17 notas e quando eu vo gera as chaves passam por cima de OBSERVAÇÃO E DADOS ESPECÍFICOS ABAIXO faz com que meu dacte mal visualizado , sera que alguém tem uma atualização disso para me auxiliar.
segue o link da imagem abaixo.
http://prodapro.com/cacio/Capturar.PNG
Line 1660 in 29f1f03
Deveria procurar no vetor detPag da tag pag.
Ao fazer uma nota com natureza de operação EXPORTAÇÃO preciso referenciar dezenas de notas fiscais em exportação indireta. O PDF criado junta todas essas referencias adicionais na primeira página deixando as próximas páginas livres e fazendo uma confusão visual enorme.
Em anexo o PDF para melhor entendimento do BUG.
4.pdf
Boa tarde Pessoal,
Utilizo a API em alguns projetos, onde estes consomem um único projeto centralizado da API.
E me surgiu a necessidade de dar um GET na logo que pode ou não estar em outro server.
Neste caso em específico está em um servidor diferente.
Gostaria de estudar em conjunto com vocês a possibilidade de através de uma URL carregar a logo.
Desde já, agradeço a atenção.
Obrigado.
Oi @robmachado ,
estou começando a trabalhar com CTe na empresa que trabalho e estou interessado em estar colaborando com o projeto, pois nossa api é em php. Percebi que vcs passaram todos os DAs para aqui só que fui verificar as diferenças do DACTE na versão antiga (https://github.com/nfephp-org/nfephp/blob/8f0bf1d158854abff1a68560707f34f9fce4a096/libs/CTe/DacteNFePHP.class.php) e está bem diferente da que está aqui. Tem alguém trabalhando nela? Caso não tenha, quais seriam as implicações para que pudesse ajudar no desenvolvimento?
No composer do projeto tem o requerimento "nfephp-org/sped-common": "5.0.13" mas no projeto do sped-common já estamos na versão 5.0.19.
Para quem está usando o sped-nfe já foi instalada a mais nova versão do sped-common e ao tentar instalar o sped-da está dando conflito na verão do sped-common.
Não seria o caso de trocar no composer para "nfephp-org/sped-common" : "^5.0", ao invés de "nfephp-org/sped-common": "5.0.13"?
Ao atualizar o projeto, deparei com a mensagem de que a variável em questão não estava definida. Isto ocorreu no arquivo nfephp-org/sped-da/src/Legacy/Common.php na linha 535. Localmente fiz a correção declarando a variável no topo da função, antes do Switch Case.
Line 178 in 1b0921c
O que ela esta fazendo ai, qual o contexto, eu acerto aqui.
Ao tentar imprimir a DANFe usando uma logo com transparência da o erro "Alpha channel not supported"
Na classe sped-da/src/CTe/Dacte.php na linha 195 o correto não seria toma3
Olá, essa versão consegue imprimir DACTE de modal aéreo?
Nenhuma das versões que tentei imprime aéreo...
Obrigado!
Estava pensando em contribuir com uma nova funcionalidade, que permita que o desenvolver crie layouts personalizados do DANFE, usando HTML e tags com o nome dos campos.
Acham interessante/viável?
Obrigado
Olá bom dia,
A função
$xml = $nfe->getXML();
Me retorna apenas o texto do XML, mas eu preciso salvar o arquivo XML. Como posso fazer isso com a NFE 4.0?
Desde já grata.
Olá, no arquivo src/NFe/Danfce.php o valor do campo de "Informação dos Tributos Totais Incidentes" não está sendo impressa. O que preciso verificar?
Ao realizar a instalação do sped-da com a versão mais recente (v0.1.6) foi observado que a classe NFePHP\DA\MDFe\Damdfe::class possui sintaxe da versão mais atual do PHP (>= 7).
Observei que no composer possui compatibilidade com as versões ~5.5|~7.0, sendo assim impeditivo para sua atualização.
Sei que é fortemente encorajado a utilização da versão mais atual do PHP, porém essa atualização nem sempre pode ser realizada rapidamente...
Segue abaixo trecho da classe que utiliza a nova feature do PHP (Null coalescing):
public function __construct(
$xmlfile = '',
$sOrientacao = '',
$sPapel = '',
$sPathLogo = '',
$sDestino = 'I',
$sDirPDF = '',
$fontePDF = '',
$mododebug = 2
) {
//...
//line 187
$this->infCpl = $this->dom->getElementsByTagName('infCpl')->item(0)->nodeValue ?? "";
}
Desde já agradeço a atenção...
Bom dia Roberto, pode me adicionar como contributor/member? Obrigado! :-)
Não sei se é conhecimento do(s) desenvolvedor(es), está ocorrendo o seguinte erro:
referente a linha que possuí o seguinte trecho de código: while (list($file,$info) = each($this->images)) { ...
no script: nfephp-org/sped-da/src/Legacy/FPDF/Fpdf.php
está gerando esse erro:
The each() function is deprecated.
Na versão 7.2 do php
Se já for de conhecimento favor ignorar
Durante a geração de um DACTe com CTe v.3 sem o campo infUnidCarga, as verificações existentes ainda estão permitindo adicionar o valor do campo, ocasionando o erro Call to a member function getElementsByTagName() on null
.
No método zModalAquaviario() das classes NFePHP\DA\CTe\Dacte e NFePHP\DA\CTe\DacteV3 existe um problema na verificação de uma tag do XML.
Ao verificar a existência da tag infUnidCarga apenas comparando com !== null irá retornar um valor válido, pois a verificação retorna um array, segue um exemplo:
if ($this->infNFe->item(0) !== null
&& $this->infNFe->item(0)->getElementsByTagName('infUnidCarga') !== null
) {
}
Debugando o trecho $this->infNFe->item(0)->getElementsByTagName('infUnidCarga') teremos:
object(DOMNodeList)#68 (1) {
["length"]=>
int(0)
}
Ou seja, uma valor diferente de null.
Para corrigir o problema é necessário apenas verificar se o length do objeto é maior que zero.
Trecho de código atual:
if ($this->infNF->item(0) !== null && $this->infNF->item(0)->getElementsByTagName('infUnidCarga') !== null) {
$texto = $this->infNF
->item(0)
->getElementsByTagName('infUnidCarga')
->item(0)
->getElementsByTagName('idUnidCarga')
->item(0)->nodeValue;
} elseif ($this->infNFe->item(0) !== null
&& $this->infNFe->item(0)->getElementsByTagName('infUnidCarga') !== null
) {
$texto = $this->infNFe
->item(0)
->getElementsByTagName('infUnidCarga')
->item(0)
->getElementsByTagName('idUnidCarga')
->item(0)
->nodeValue;
} elseif ($this->infOutros->item(0) !== null
&& $this->infOutros->item(0)->getElementsByTagName('infUnidCarga') !== null
) {
$texto = $this->infOutros
->item(0)
->getElementsByTagName('infUnidCarga')
->item(0)
->getElementsByTagName('idUnidCarga')
->item(0)
->nodeValue;
} else {
$texto = '';
}
Trecho de código com a alteração:
if ($this->infNF->item(0) !== null && $this->infNF->item(0)->getElementsByTagName('infUnidCarga')->length > 0) {
$texto = $this->infNF
->item(0)
->getElementsByTagName('infUnidCarga')
->item(0)
->getElementsByTagName('idUnidCarga')
->item(0)->nodeValue;
} elseif ($this->infNFe->item(0) !== null
&& $this->infNFe->item(0)->getElementsByTagName('infUnidCarga')->length > 0
) {
$texto = $this->infNFe
->item(0)
->getElementsByTagName('infUnidCarga')
->item(0)
->getElementsByTagName('idUnidCarga')
->item(0)
->nodeValue;
} elseif ($this->infOutros->item(0) !== null
&& $this->infOutros->item(0)->getElementsByTagName('infUnidCarga')->length > 0
) {
$texto = $this->infOutros
->item(0)
->getElementsByTagName('infUnidCarga')
->item(0)
->getElementsByTagName('idUnidCarga')
->item(0)
->nodeValue;
} else {
$texto = '';
}
Foi editado um novo manual com especificações técnicas para o DANFCE
A impressão deve ser ajustada para esses padrões
Ao tentar gerar um DACTE sem a tag vTotTrib o método retorna o erro number_format() expects parameter 1 to be float, string given
(linha do erro).
Segundo as notas técnicas de 2013 (005 e 013) o campo é de Uso Livre do Contribuinte com ocorrência 0 - 1.
Boa Tarde Pessoal,
Em anexo está um XML da versão 3.0 do MDF-e. A principio ocorreu uma mudança no bloco do Pedágio, e isso pode estar ocasionando erro. Se não informar o bloco de Pedágio, está tudo funcionando.
42170513307588000172580010000001751000006210.zip
Se alguém tiver alguma ideia de correção ou puder testar para ver se ocorre o mesmo erro, agradeço.
Usar o FPDF como está é INACEITÀVEL, ele não atende minimamente os padrões PSR então teria de ser refatorado para uso nessa estrutura, já incluindo as funções extras necessárias. E usando já internamente os códigos de barra fornecidos por outras fontes bem melhor estruturadas.
Olá!
Não existe o pacote "nfephp-org/sped-da" para o composer?
Existe previsão para isso?
Obrigado e parabéns pelo projeto.
Olá!
Arquivo Legacy/Pdf, linha 826:
de:
$this->detLineWidth($w);
para:
$this->setLineWidth($w);
Já debuguei praticamente toda a função que imprime a imagem porém sem sucesso. Minha solução será fazer gerar manualmente a Danfce com outra lib
Exemplo: http://compufour.s3.amazonaws.com/homolog/uploads/danfe/43180517222213000160650990000005171191560237.pdf
este projeto tem suporte para impressão de ct-e os?
Boa Tarde, alguém sabe se o sped-da já atende a versão 3.0 do CTe ?
Olá pessoal.
Estou utilizando o seguinte código de teste que consta como exemplo da API:
error_reporting(E_ALL);
ini_set('display_errors', 'On');
include('config/config.php');
use NFePHP\DA\NFe\Danfce;
$docxml = file_get_contents(realpath("nfces/2019-02-15T09:43:40-02:00.xml"));
$pathLogo = realpath('imgs/danfce.jpg'); //use somente imagens JPEG
$danfce = new Danfce($docxml, $pathLogo, 0);
$id = $danfce->monta();
$pdf = $danfce->render();
header('Content-Type: application/pdf');
echo $pdf;
Ele vai normalmente até a criação da Classe Danfce.
Quando gero o comando: $id = $danfce->monta(); ele me retorna um HTTP ERROR 500.
Já debuguei no terminal, porém lá não aparece erro nenhum.
Alguém pode me dar alguma luz?
Obrigado a todos pela atenção.
Grande abraço!
Bom dia.
Durante a geração do XML no sped-nfe
alguns campos, como $emit->xNome
e $dest->xNome
, são limpados com a função Strings::replaceUnacceptableCharacters()
do sped-common
, a qual traduz alguns caracteres especiais para o seu código HTML.
Porém, ao gerar o DANFE esses caracteres nunca são retornados para sua forma original, resultando na exibição de seus códigos HTML na impressão.
Estou disposto a abrir um PR para corrigir o problema, porém gostaria de discutir a solução mais adequada.
Afim de preservar os escopos atuais, acredito que uma função para reverter esses caracteres deva ser adicionada a classe Strings
do sped-common
e aplicada a esses campos antes da geração de seus respectivos textboxes
, ou até mesmo na própria função pTextBox
para diminuir a chance de erros.
Edit: Acabo de perceber que sped-da
não depende de sped-common
, então acho que a solução que apresentei acima não é adequada.
Na geração da DACTeV3, quando situação tributária simples nacional ou quando o ICMS é para outra uf, o texto em SITUAÇÃO TRIBUTÁRIA esta sendo atribuído com valor diferente do descrito pelo manual do contribuinte.
Estou implementando o NFCe e vi que essa classe está chamando classes do projeto antigo e uma classe QrCode que não corresponde com código implementado. Queria alguma luz sobre, por que posso até colaborar fazendo os ajustes necessários.
Olá,
Me deparei com um problema quando a nota tem mais de um tipo de volume, no caso eram:
Qtd.: 2 Esp.: Caixa(s) Marca: outfit Num.: 1.300 PesoB: 1.500 PesoL: 1.300
Qtd.: 1 Esp.: Fardo(s) Marca: orange Num.: 4.200 PesoB: 4.000 PesoL: 4.200
O problema é que os volumes não eram especificados na DANFE
Além de mostrar incorretamente, não era possível visualizar os volumes individualmente.
Para sanar minhas duvidas, verifiquei como ocorria na DANFE do emissor gratuito de NF-e para considerar como base.
Além de informar para verificar as informações complementares, era também informado lá os detalhes de cada volume.
Com base nele, implementei essas modificações e adicionei também as informações de numeração, peso bruto e liquido.
Estou com um problema no método monta nesse momento:
https://github.com/nfephp-org/sped-da/blob/master/src/NFe/DanfcePos.php#L243
Quando vai ler os pagamentos ele espera que $pag seja um array e no meu caso que só tem um pagamento $pag é um objeto. Seria alguma coisa errada na montagem do xml ou deveria arrumar para esperar um objeto nessa parte do método?
Existe já implementado algo nesse sentido, eu enviar dois ou mais xml e a API montar as DAs no mesmo PDF ?
Bom dia!
Com a alteração para a versão 4.00, a tag "indPag" que indicava se o pagamento é à vista ou a prazo saiu, com isso não há informações sobre o tipo de pagamento, (à vista, prazo, etc). O pessoal da empresa onde trabalho pediu para informar alguma coisa para indicar isso e pensei em pegar o valor do "tPag" e jogar a descrição (Dinheiro, Cheque, Duplicata Mercantil, etc). Alguém sabe se existe alguma restrição em relação a isso?
Att,
Jeferson Almeida
Arquivo: sped-da/src/NFe/Danfe.php
No arquivo acima, na linha 2256, ha um erro no IF, pois o mesmo somente verifica se a variavel rastreio existe com o "isset", quando o correto seria verificar com o "empty", fazendo que as informacoes de rastro de produtos que tenham a tag "rastro" (mas nao tenham a tag "med") nao sejam exibidas.
O arquivo esta com este trecho de codigo:
$rastro = $prod->getElementsByTagName("med");
if (!isset($rastro)) {
$rastro = $prod->getElementsByTagName("rastro");
}
O correto seria:
$rastro = $prod->getElementsByTagName("med");
if (empty($rastro)) {
$rastro = $prod->getElementsByTagName("rastro");
}
Tentando imprimir uma NFCE no formato PDF.
Call to undefined method Endroid\QrCode\QrCode::writeString()
Procurando na classe (instalada junto com o projeto) QrCode, realmente não existe esse método, porém no repositório oficial existe:
https://github.com/endroid/qr-code/blob/master/src/QrCode.php
Estou errando em algo? Ou falta atualizar alguma versão no pacote?
Atualização da biblioteca FPDF para a versão 1.81, essa versão suporta imagem PNG com transparência de forma nativa
Para gerar o PDF da NFC-e foi necessário copiar o método render() da classe Danfe:
public function render()
{
return $this->pdf->getPdf();
}
Desconsiderar, era só usar o método printDANFE().
Conforme coloquei no forum tenho um caso de xml que possui a tag porém não possui a tag .
Dessa forma essa função gera um erro por não encontrar o elemento correspondente.
Na sequencia gero um pull request que corrige essa situação. Não sei se aplicaria a todos os casos mas no caso de xml que possui e não possui resolve.
Bom dia amigo.
Primeiramente gostaria de agradecer pela maravilha biblioteca. Graças a ela consegui implementar um sistema gerador notas. Só estou com um probleminha... Não estou conseguindo imprimir várias notas ao mesmo tempo... Isso é possível? Você teria um exemplo de como fazer isso?
Boa noite,
Preciso imprimir uma NFCe emitida em contingência off-line "9".
Já consigo fazer essa impressão?
Se não... vou criar uma fork para essa demanda, pode ser?
Estou utilizando este projeto no meu trabalho, mas apresentou algumas inconsistências para alguns CTes. Ao pedir para gerar o PDF, apresenta a seguinte mensagem: Erro ao gerar o DACTE: Undefined variable: qCarga.
Debugando o código do arquivo DacteV3.php, eu vi que esse erro acontece quando vai capturar os valores de peso e quantidade da carga transportada. Segue o trecho no qual apresentam os erros:
A tag infQ está condicionado no if até achar o valor correspondente ao quilo (01). Só que os CTes nem sempre terão apenas 3 destas tags. Os CTes nos quais estou tendo problemas apresentam 5 tags infQ.
Ao meu olhar, o correto seria colocar esse trecho de código dentro de um loop, percorrendo todas as tags infQ, pois nunca sabemos a quantidade destas tags para cada CTe.
Eu posso estar colaborando e consertando este erro, ou alguém responsável irá rever este trecho?
Prezados,
ao tentar gerar um DACTE OS (DacteOSV3), é levantado erro na linha 1488
Undefined property: NFePHP\DA\CTe\DacteOSV3::$lota,
informando ausência da proprietade $this->lota.
Acredito que a tag lota só existe na versão 2.0 do layout, e retirada em versão posterior. Posso fazer a alteração e solicitar um pull request?
Tag vOutro aparece no XML mas não é impresso no Danfce, essa tag tem a finalidade de gerar custos adicionais ao pedido.
Ao gerar o PDF com destino S
, o método printMDFe muda para o destino para I
Ao montar o DAMDFe em uma nota que não possui infCpl um erro é encontrado - Trying to get property of non-object.
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.