Gerei um TXT no padrão DANFE, para importar para dentro do Emissor Gratuito do Governo, o arquivo é gerado perfeitamente no servidor, mas quando forço o download do mesmo
o o sistema por vontade própria adiciona um (.) ponto no fim do arquivo, e isso está dando uma dor de cabeça tremenda pois o Sistema Emissor logo acusa esse caracter como inválido.
já tentei tudo, inclusive a rotina do download mas nada, continua vindo com o ponto.
Quando gero o arquivo eu envio ele para um pasta específica do servidor antes de realizar o download, esse arquivo que fica na pasta do servidor não contem o caracter (.), ele é adicionado somente no arquivo que foi baixado no download.
Abaixo segue o codigo que fiz para gerar o TXT pra importar DANFE e no fim do código tem o trecho do download.
Espero ajudar também a quem procurava os detalhes do arquivo DANFE para importação!!
Segue o código:
<?php
$controle = (int) $this->idPedido;
$cnumnfe = $this->numdanfe;
if ($this->TipoDanfe == 'venda'){
$cTipoDanfe = 'V';
}else{
$cTipoDanfe = 'S';
}
$numped = str_pad($controle, 6, "0", STR_PAD_LEFT);
$ccodempresa =
$cddtemissao = date('Y-m-d');
$cddtsaida = date('Y-m-d');
$chorasaida = date('H:i').":00";
// caso seja uma impressao nova de nfe, capturo o proximo numero do danfe!!!
if ($cnumnfe == '') {
$cnumnfe = $this->DadosEmpresa['proximonfe'];
}
$cnomeempresa = $this->DadosEmpresa['nomefantasia'];
$crazaosocial = $this->DadosEmpresa['razaosocial'];
$cendereco = $this->DadosEmpresa['endereco'];
$ctel1 = substr($this->DadosEmpresa['telefone1'],1,2).''.substr($this->DadosEmpresa['telefone1'],5,4).''.substr($this->DadosEmpresa['telefone1'],10,4);
$ccep = substr($this->DadosEmpresa['cep'],0,5).''.substr($this->DadosEmpresa['cep'],6,3);
$cuf = $this->DadosEmpresa['uf'];
$ccidade = $this->DadosEmpresa['cidade'];
$cbairro = $this->DadosEmpresa['bairro'];
$cnumero = $this->DadosEmpresa['numero'];
$ccnpjEmpresa = substr($this->DadosEmpresa['cnpj'],0,2).''.substr($this->DadosEmpresa['cnpj'],3,3).substr($this->DadosEmpresa['cnpj'],7,3).substr($this->DadosEmpresa['cnpj'],11,4).substr($this->DadosEmpresa['cnpj'],16,2);
$codpais = $this->DadosEmpresa['codpais'];
$nomepais = $this->DadosEmpresa['nomepais'];
$cnae = $this->DadosEmpresa['cnae'];
$cie = $this->DadosEmpresa['ie'];
$cim = $this->DadosEmpresa['im'];
$ccodmunicipio = $this->DadosEmpresa['codmunicipio'];
$ccodpais = $this->DadosEmpresa['codpais'];
$cnomepais = $this->DadosEmpresa['nomepais'];
// dados do cliente e da venda!!!
$clienteemail = $this->DadosVenda[0]['email'];
$clientecpf = $this->DadosVenda[0]['cpf'];
$clientecnpj = $this->DadosVenda[0]['cnpj'];
$clientenome = $this->DadosVenda[0]['nomecliente'];
$clienteendereco = $this->DadosVenda[0]['endereco'];
$clientebairro = $this->DadosVenda[0]['bairro'];
$clientecidade = $this->DadosVenda[0]['cidade'];
$clienteuf = $this->DadosVenda[0]['uf'];
$clientecep = substr($this->DadosVenda[0]['cep'],0,5).''.substr($this->DadosVenda[0]['cep'],6,3);
$clienteinscest = ''; //; $this->DadosVenda[0]['ie'];
$clientenum = $this->DadosVenda[0]['numero'];
$clientetelefone = substr($this->DadosVenda[0]['telefone1'],1,2).''.substr($this->DadosVenda[0]['telefone1'],5,4).''.substr($this->DadosVenda[0]['telefone1'],10,4);
$clientecomplemento = '';
$ccomplemento = '';
$clientecodmunicipio = '2611606'; // OLINDA!!!
$csituacao = '1'; // 1=producao / 2=homologacao
$ctipooperacao = '1'; // 1 = saida 0 = entrada
$ccodmunicipio = '2611606';
$finalidadeEmissao = '1'; // 1=Nfe Normal; 2=Nfe Complementar; 3=Nfe de Ajuste
$processoEmissao = '3'; // 1=emissao avulsa pelo fisco; 2=emissao avulsa pelo contribuinte com seu certificado difital atraves do site do fisco; 3= emissao pelo contriuinte com aplicativo fornecido pelo fisco;
$tipoPagto = '0'; // 0= avista / 1=A prazo
$versao = '2.2.2';
$fp = fopen("../public_html/nfe/DF".$cTipoDanfe.'_'.$numped.".txt", "w");
fwrite($fp,"NOTAFISCAL|1\r\n");
fwrite($fp,"A|2.00|NFe\r\n" );
fwrite($fp,'B|26||VENDA DE MERCADORIA|'.$tipoPagto.'|55|1|'.$cnumnfe.'|'.$cddtemissao.'|'.$cddtsaida."|".$chorasaida."|".$ctipooperacao."|".$ccodmunicipio."|1|1||".$csituacao."|".$finalidadeEmissao."|".$processoEmissao."|".$versao."|||\r\n" );
fwrite($fp,'C|'.$crazaosocial.'|'.$cnomeempresa.'|'.$cie.'||'.$cim.'|'.$cnae. "|1|\r\n" );
fwrite($fp,'C02|'.$ccnpjEmpresa. "|\r\n" );
fwrite($fp,'C05|'.$cendereco.'|'.$cnumero.'|'.$ccomplemento.'|'.$cbairro.'|'.$ccodmunicipio.'|'.$ccidade.'|'.$cuf.'|'.$ccep.'|'.$ccodpais.'|'.$cnomepais.'|'.$ctel1. "|\r\n" );
//------------CLIENTE!!!
fwrite($fp,'E|'.$clientenome.'|'.$clienteinscest. "||".$clienteemail."|\r\n" );
// 049.750.544-42
// 01234567890123
if ( $clientecpf != '' ) { // cpf agora com os digitos
$clientecpf = substr($clientecpf,0,3).''.substr($clientecpf,4,3).substr($clientecpf,8,3).substr($clientecpf,12,2);
fwrite($fp,'E03|'.$clientecpf. "|\r\n" );
}else{
$clientecnpj = substr($clientecnpj,0,2).''.substr($clientecnpj,3,3).substr($clientecnpj,7,3).substr($clientecnpj,11,4).substr($clientecnpj,16,2);
fwrite($fp,'E02|'.$clientecnpj. "|\r\n" ); // cnpj
}
fwrite($fp,'E05|'.$clienteendereco.'|'.$clientenum.'|'.$clientecomplemento.'|'.$clientebairro.'|'.$clientecodmunicipio.'|'.$clientecidade.'|'.$clienteuf.'|'.$clientecep.'|'.$ccodpais.'|'.$cnomepais.'|'.$clientetelefone."|"."\r\n" );
//------- IMPRESSÃO DOS ITENS!!!
$cvalunitario = '0';
$csubtotal = '0';
$csubtotalcomdesconto = '0';
$nitem = 1;
$nTotalG = 0;
$nTotalIcms = 0;
$nTotalPis = 0;
$nTotalCofis = 0;
$cTotalTotal = 0;
$nTotalDesconto = 0;
// itens do pedido!
foreach ($this->DadosVendaPed as $DadosVendaPed):
$cvalunit = $DadosVendaPed['valor'];
$cvalunit = $cvalunit.'00';
$csubtotal = $DadosVendaPed['subtotal'];
$cdesconto = '';
$ndesconto = 0;
$csubtotalcomdesconto = $csubtotal; //FloatToStrF(dados.PedDiaSubTotal.value - dados.PedDiadesconto.value,ffNUMBER,15,2);
$nTotalG = $nTotalG + $csubtotalcomdesconto;
$cquantidade = $DadosVendaPed['quantidade'];
$cnomepeca = $DadosVendaPed['nomeproduto'];
$cAliquotaIcms = 0; //17;
$cAliquotaPis = 0; //0.65;
$cAliquotaCofis = 0; //3;
/* CFOP = 5405 (Venda de mercadoria adquirida ou recebida de terceiros em operação com mercadoria sujeita
ao regime de substituição tributária, na condição de contribuinte substituído
Classificam-se neste código as vendas de mercadorias adquiridas ou recebidas de terceiros
em operação com mercadorias sujeitas ao regime de substituição tributária, na condição de
contribuinte substituído.)
5102 (Venda de mercadoria adquirida ou recebida de terceiros)
)
*/
$cvalicms = (($cvalunit - $ndesconto) * $cAliquotaIcms) /100;
$nTotalIcms = $nTotalIcms + $cvalicms;
$cvalicms = number_format($cvalicms, 2, '.', ',');
$nTotalIcms = number_format($nTotalIcms, 2, '.', ',');
$cvalpis = (($cvalunit - $ndesconto) * $cAliquotaPis) /100;
$nTotalPis = $nTotalPis + $cvalpis;
$cvalpis = number_format($cvalpis, 2, '.', ',');
$nTotalPis = number_format($nTotalPis, 2, '.', ',');
$cvalcofis = (($cvalunit - $ndesconto) * $cAliquotaCofis) /100;
$nTotalCofis = $nTotalCofis + $cvalcofis;
$cvalcofis = number_format($cvalcofis, 2, '.', ',');
$nTotalCofis = number_format($nTotalCofis, 2, '.', ',');
$nTotalDesconto = 0;
$cTotalTotal = $cTotalTotal + $csubtotal;
$ccoditemfornecedor = $DadosVendaPed['referencia'];
$ccodbarrasfornecedor = $DadosVendaPed['ncm'];
fwrite($fp,'H|'.$nitem."||"."\r\n" );
fwrite($fp,'I|'.$ccoditemfornecedor.'||'.$cnomepeca.'|'.$ccodbarrasfornecedor.'||5405|UN|'.$cquantidade.'.0000|'.$cvalunit.'000000|'.$csubtotal.'||UN|'.$cquantidade.'.0000|'.$cvalunit.'000000|||'.$cdesconto. "||1|||"."\r\n" );
//-----------aqui!!
fwrite($fp,"M|"."\r\n" );
fwrite($fp,"N|"."\r\n" );
//fwrite($fp,"N10d|0|400|"."\r\n" );
fwrite($fp,"N10d|0|300|"."\r\n" );
fwrite($fp,"Q|"."\r\n" );
//fwrite($fp,'Q02|01|'.$csubtotalcomdesconto.'|'.$cAliquotaPis.'|'.$cvalpis. "|"."\r\n" );
fwrite($fp,'Q04|07|'."\r\n" );
fwrite($fp,"S|"."\r\n" );
//fwrite($fp,'S02|01|'.$csubtotalcomdesconto.'|'.$cAliquotaCofis.'.00|'.$cvalcofis. "|"."\r\n" );
fwrite($fp,'S04|07|'."\r\n" );
$nitem=$nitem+1;
endforeach;
fwrite($fp,"W\r\n" );
$nTotalG = number_format($nTotalG, 2, '.', '');
$cTotalTotal = number_format($cTotalTotal, 2, '.', '');
fwrite($fp,'W02|'.$nTotalG.'|'.$nTotalIcms.'|0.00|0.00|'.$cTotalTotal.'|0.00|0.00|'.$nTotalDesconto.'|'.'|0.00|0.00|'.$nTotalPis.'|'.$nTotalCofis.'|0.00|'.$nTotalG. "|"."\r\n" );
///////////////// AQUI EU TERMINO DE CRIAR O ARQUIVO, ATÉ AQUI ESTÁ TUDO OK, QUANDO VERIFICO O ARQUIVO CRIADO NO SERVIDOR ESTÁ OK
fwrite($fp,"X|0|");
fclose($fp);
$file = "DF".$cTipoDanfe.'_'.$numped.".txt";
define('DIR_DOWNLOAD','../public_html/nfe/');
$arquivo = DIR_DOWNLOAD.$file;
$arquivo = $file;
$arquivo = DIR_DOWNLOAD.$arquivo;
/// ESSA FOI OUTRA MANEIRA QUE TENTEI PRA VER SE RESOLVERIA MAS não FUNCIONA também, CONTINUA TRAZENDO O PONTO (.) NO FIM DO ARQUIVO!!!
/* //$file = $_REQUEST['file'];
header("Content-type: application/save");
//header("Content-Length:".filesize($arquivo));
header('Content-Disposition: attachment; filename='.basename($arquivo));
header('Expires: 0');
header('Pragma: no-cache');
*/
//
// ESSE É O TRECHO QUE FORÇA O DOWNLOAD DO ARQUIVO!!!! PROVAVELMENTE É POR AQUI QUE OCORRE O PROBLEMA!!!
//
header('Content-disposition: attachment; filename="'.basename($arquivo).'"');
header('Content-Length: '.filesize($arquivo));
readfile($arquivo);
?>
Esqueci de mencionar , quando dou um type arquivo.txt no DOS, invés dele mostrar um ponto ele mostra um conjunto de caracteres ASCII 'ì♂ú
Quem por favor tiver um ideia do que pode ser, informa por aqui, você está ajudando um cara desesperado !
Pergunta
reunix
Bom dia pessoal, vejam bem que bruxaria...
Gerei um TXT no padrão DANFE, para importar para dentro do Emissor Gratuito do Governo, o arquivo é gerado perfeitamente no servidor, mas quando forço o download do mesmo
o o sistema por vontade própria adiciona um (.) ponto no fim do arquivo, e isso está dando uma dor de cabeça tremenda pois o Sistema Emissor logo acusa esse caracter como inválido.
já tentei tudo, inclusive a rotina do download mas nada, continua vindo com o ponto.
Quando gero o arquivo eu envio ele para um pasta específica do servidor antes de realizar o download, esse arquivo que fica na pasta do servidor não contem o caracter (.), ele é adicionado somente no arquivo que foi baixado no download.
Abaixo segue o codigo que fiz para gerar o TXT pra importar DANFE e no fim do código tem o trecho do download.
Espero ajudar também a quem procurava os detalhes do arquivo DANFE para importação!!
Segue o código:
Esqueci de mencionar , quando dou um type arquivo.txt no DOS, invés dele mostrar um ponto ele mostra um conjunto de caracteres ASCII 'ì♂ú
Quem por favor tiver um ideia do que pode ser, informa por aqui, você está ajudando um cara desesperado !
e agradeço desde já!!!
Renato Muniz!!!
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.