Jump to content

Recommended Posts

Quando eu vou desenvolver um banco de dados de venda de produtos, que tipo de informações tributárias esses produtos vão ter, como que funciona?

Por exemplo o nome do tributo, valor, e como é agrupado esses tributos?

Esses tributos são ligados a apenas aos produtos ou a empresa?

Share this post


Link to post
Share on other sites

Tributos são ligados ao produto, e tributos são ligados a empresa.  

Isso depende o que é o produto, cada tipo de produto tem um imposto de valor diferente cobrado pelo governo.

e cada empresa tem um tributo diferente a pagar, isso depende de como a empresa foi cadastrada junto a Junta Comercial.

Qual é o imposto de cada tipo de empresa, qual é o imposto de cada tipo de produto, isso um contador ou um auditor de contabilidade é quem sabe o correto de valor que tem que ser tributado em um produto ou em um serviço.

 

https://guiatributario.net/2013/02/20/saiba-o-que-e-tributo-e-quais-suas-especies/

 

http://www.portaltributario.com.br/tributos.htm

 

Boa noite

 

Share this post


Link to post
Share on other sites
Em 24/05/2017 at 14:02, Fmix disse:

Quando eu vou desenvolver um banco de dados de venda de produtos, que tipo de informações tributárias esses produtos vão ter, como que funciona?

Por exemplo o nome do tributo, valor, e como é agrupado esses tributos?

Esses tributos são ligados a apenas aos produtos ou a empresa?

 

Primeiro, você vai querer emitir nota ? se sim, só aí você vai precisar das informações tributárias do produto, como dispostas no manual da receita federal:

 

Respondendo a pergunta: os dados tributários são ligados tanto ao produto, como a empresa emitente, e também a empresa remetente.

 

Orientação de dados para NF-e

 

Você consegue fazer isso sem muitos problemas, basta entender a documentação da receita, principalmente na montagem da XML, assinatura e transmissão, se você fizer algo errado pode vir a ter um problema bem sério.

 

Você não disse que linguagem pretende fazer isso, eu até hoje só fiz em php com a classe NF-e PHP.

 

Pra finalizar, tem uma 'gambiarra' que eu fiz pra um amigo emitir notas uma vez com essa classe, segue abaixo mais ou menos como funciona:

 

Primeiro você precisa de uma tabela com dados fiscais relacionados a determinada nota, dados de produto, emitente e de remetente, nesse caso eram produtos cosméticos:

 


CREATE TABLE config_nfe (
id int(11) AUTO_INCREMENT PRIMARY KEY,
codigo varchar(255),
tipo_de_documento varchar(255),
forma_de_pagamento varchar(255),
fora_de_emissao varchar(255),
tipo_de_impressao_DANFE varchar(255),
consumidor_final varchar(255),
destino_da_operacao varchar(255),
tipo_de_atendimento varchar(255),
natureza_da_operacao varchar(255),
uf_emissao varchar(255),
municipio_emissao varchar(255),
cnpj_emitente varchar(255),
razao_social_emitente varchar(255),
regime_tributario_emitente varchar(255),
logradouro_emitente varchar(255),
numero_emitente varchar(255),
bairro_emitente varchar(255),
cep_emitente varchar(255),
uf_emitente varchar(255),
municipio_emitente varchar(255),
tipo_de_documento_rementente varchar(255),
documento_rementente varchar(255),
razao_social_rementente varchar(255),
logradouro_rementente varchar(255),
numero_rementente varchar(255),
bairro_rementente varchar(255),
cep_rementente varchar(255),
uf_rementente varchar(255),
municipio_rementente varchar(255)
)

 

E tinha essa BELEZA (ironia) de código pra gerar o XML, que eu nem sei mais explicar como funcionava:

 

<?php

include 'conexao/conecta.php';
$pedido = $_GET['pedido'];


$sql = "SELECT * FROM pedidos WHERE codigo = '$pedido'";
$rs = mysql_query($sql);
while ($row = mysql_fetch_object($rs)) {
    $emitente_codigo = $row->solicitatecodigo;
    $remetente_codigo = $row->clientecodigo;
    $programacao_codigo = $row->programacaocodigo;
    $retirada_codigo = $row->retiradacodigo;
}

$sql = "SELECT * FROM retiradas WHERE codigo = '$retirada_codigo'";
$rs = mysql_query($sql);
while ($row = mysql_fetch_array($rs)) {
    $produto = $row['produto'];
    $quantidade = $row['produto'];
}


$sql = "SELECT * FROM dados_empresariais WHERE codigo = '$emitente_codigo' ";
$rs = mysql_query($sql);
while ($row = mysql_fetch_object($rs)) {
    $cod_emitente = $row->codigo;
    $cnpj_emitente = preg_replace("/[^0-9\s]/", "", $row->cnpj);
    $razao_social_emitente = $row->razao_social;
    $inscricao_estadual_emitente = preg_replace("/[^0-9\s]/", "", $row->inscricao_estadual);
    ;
    $logradouro_emitente = $row->logradouro;
    $numero_emitente = $row->numero;
    $complemento_emitente = $row->complemento;
    $bairro_emitente = $row->bairro;
    $municipio_emitente = $row->cidade;
    $uf_emitente = $row->uf;
    $cep_emitente = $row->cep;
    $telefone_emitente = preg_replace("/[^0-9\s]/", "", $row->telefone);
    $email_emitente = $row->email;
}

$sql = "SELECT * FROM clientes WHERE codigo = '$remetente_codigo'";
$rs = mysql_query($sql);
while ($row = mysql_fetch_object($rs)) {
    $cod_remetente = $row->codigo;
    $cnpj_remetente = preg_replace("/[^0-9\s]/", "", $row->cnpj);
    $razao_social_remetente = $row->razao_social;
    $inscricao_estadual_remetente = preg_replace("/[^0-9\s]/", "", $row->inscricao_estadual);
    $logradouro_remetente = $row->logradouro;
    $numero_remetente = $row->numero;
    $complemento_remetente = $row->complemento;
    $bairro_remetente = $row->bairro;
    $municipio_remetente = $row->cidade;
    $municipio_remetente = preg_replace('/[`^~\'"]/', null, iconv('UTF-8', 'ASCII//TRANSLIT', $municipio_remetente));

    $uf_remetente = $row->uf;
    $cep_remetente = $row->cep;
    $email_remetente = $row->email;
}
$sql = "SELECT * FROM municipios_ibge WHERE municipio = '$municipio_remetente'";
$rs = mysql_query($sql);
while ($row = mysql_fetch_object($rs)) {
    $codigo_municipio_remetente = $row->codigo;
}

$sql = "SELECT * FROM estados_ibge WHERE sigla = '$uf_remetente'";
$rs = mysql_query($sql);
while ($row = mysql_fetch_object($rs)) {
    $codigo_uf_remetente = $row->codigo_ibge;
}


require_once('nfephp/libs/NFe/MakeNFePHP.class.php');

// Instancia um objeto da classe "Tools" da API.
$nfe = new MakeNFe();


/* MONTA CHAVE */

$numero_nfe = rand(8888888, 99999999);
$cUF = "41"; //codigo do seu Estado
$ano_mes_emissao = date('ym'); //use date('ym');
$CNPJ = "$cnpj_emitente";
$mod = "55"; //modelo da NFe 55 ou NFCe 65
$serie = "001"; //serie da NFe 001 ou 002
$nNF = "$numero_nfe"; //numero da NFe
$tpEmis = '1'; //1=Emissão normal (não em contingência);
//2=Contingência FS-IA, com impressão do DANFE em formulário de segurança;
//3=Contingência SCAN (Sistema de Contingência do Ambiente Nacional);
//4=Contingência DPEC (Declaração Prévia da Emissão em Contingência);
//5=Contingência FS-DA, com impressão do DANFE em formulário de segurança;
//6=Contingência SVC-AN (SEFAZ Virtual de Contingência do AN);
//7=Contingência SVC-RS (SEFAZ Virtual de Contingência do RS);
//9=Contingência off-line da NFC-e (as demais opções de contingência são válidas também para a NFC-e);
//Nota: Para a NFC-e somente estão disponíveis e são válidas as opções de contingência 5 e 9.
$cNF = "$numero_nfe"; //numero do documento interno da empresa (geralmente um sequencial do seu sistema, um pedido ou orcamento) 8 digitos
$chave_sem_dv = $cUF . $ano_mes_emissao . $CNPJ . $mod . $serie . $nNF . $tpEmis . $cNF;
$chave = $chave_sem_dv;
$modulo_11 = "23456789"; //não alterar, é padrão do sefaz
$pesos = $modulo_11;
$ponderacoes = $chave[0] * $pesos[2] +
        $chave[1] * $pesos[1] +
        $chave[2] * $pesos[0] +
        $chave[3] * $pesos[7] +
        $chave[4] * $pesos[6] +
        $chave[5] * $pesos[5] +
        $chave[6] * $pesos[4] +
        $chave[7] * $pesos[3] +
        $chave[8] * $pesos[2] +
        $chave[9] * $pesos[1] +
        $chave[10] * $pesos[0] +
        $chave[11] * $pesos[7] +
        $chave[12] * $pesos[6] +
        $chave[13] * $pesos[5] +
        $chave[14] * $pesos[4] +
        $chave[15] * $pesos[3] +
        $chave[16] * $pesos[2] +
        $chave[17] * $pesos[1] +
        $chave[18] * $pesos[0] +
        $chave[19] * $pesos[7] +
        $chave[20] * $pesos[6] +
        $chave[21] * $pesos[5] +
        $chave[22] * $pesos[4] +
        $chave[23] * $pesos[3] +
        $chave[24] * $pesos[2] +
        $chave[25] * $pesos[1] +
        $chave[26] * $pesos[0] +
        $chave[27] * $pesos[7] +
        $chave[28] * $pesos[6] +
        $chave[29] * $pesos[5] +
        $chave[30] * $pesos[4] +
        $chave[31] * $pesos[3] +
        $chave[32] * $pesos[2] +
        $chave[33] * $pesos[1] +
        $chave[34] * $pesos[0] +
        $chave[35] * $pesos[7] +
        $chave[36] * $pesos[6] +
        $chave[37] * $pesos[5] +
        $chave[38] * $pesos[4] +
        $chave[39] * $pesos[3] +
        $chave[40] * $pesos[2] +
        $chave[41] * $pesos[1] +
        $chave[42] * $pesos[0];
$ponderacoes_soma = $ponderacoes;
$resto_ = (int) ($ponderacoes / 11);
$resto = $resto_ * 11;
$resto = $ponderacoes - $resto;
$cDV = (12 - $resto);
if ($cDV <= 1) {
    $cDV = 0;
}
$chave_de_acesso = $chave . $cDV;


/*

  $cUF = '41';    //Código da UF [02]
  $aamm = date("ym");     //AAMM da emissão [4]
  $cnpj = "$cnpj_emitente";     //CNPJ do Emitente [14]
  $mod = '55';      //Modelo [02]
  $serie = '001';     //Série [03]
  $num = '7';       //Número da NF-e [09]
  $tpEmis = '1';     //forma de emissão da NF-e [01] 1 – Normal – emissão normal; 2 – Contingência FS; 3 – Contingência SCAN; 4 – Contingência DPEC; 5 – Contingência FS-DA
  $cn = '';         //Código Numérico [08]
  $dv = '';         //DV [01]
  //ajusta comprimento do numero
  $num = str_pad($num, 9, '0', STR_PAD_LEFT);
  //calcula codigo numérico aleatório
  $cn = geraCN(8);

  //monta a chave sem o digito verificador
  $chave = "$cUF$aamm$cnpj$mod$serie$num$tpEmis$cn";
  //calcula o digito verificador
  $dv = calculaDV($chave);

  $chave .= $dv;

  $n = strlen($chave);

  function geraCN($length = 8) {
  $numero = '';
  for ($x = 0; $x < $length; $x++) {
  $numero .= rand(0, 9);
  }
  return $numero;
  }

  function calculaDV($chave43) {
  $multiplicadores = array(2, 3, 4, 5, 6, 7, 8, 9);
  $i = 42;
  while ($i >= 0) {
  for ($m = 0; $m < count($multiplicadores) && $i >= 0; $m++) {
  $soma_ponderada+= $chave43[$i] * $multiplicadores[$m];
  $i--;
  }
  }
  $resto = $soma_ponderada % 11;
  if ($resto == '0' || $resto == '1') {
  return 0;
  } else {
  return (11 - $resto);
  }
  }
 */
/* * ********* */

$chave = $chave_de_acesso;
$versao = '3.10';
$resp = $nfe->taginfNFe($chave, $versao);

//Dados da NFe (ide)
$uf_codigo = 41;
$cUF = "$uf_codigo"; //codigo numerico do estado
$numero_nf = rand(1000000, 9999999);
$cNF = "$numero_nf"; //numero aleatório da NF
$natOp = 'VENDA DE PRODUTO'; //natureza da operação
$tipo_pgto = $_POST['numero-de-parcelas'];
if ($tipo_pgto == '1') {
    $tipo_pgto = '0';
} elseif ($tipo_pgto > 1) {
    $tipo_pgto = 2;
}
$indPag = "0"; //0=Pagamento à vista; 1=Pagamento a prazo; 2=Outros
$mod = '55'; //modelo da NFe 55 ou 65 essa última NFCe
$serie = '1'; //serie da NFe

$nNF = "$numero_nfe"; // numero da NFe
$data_emissao = '2015-09-09T15:34:00-03:00';
$dhEmi = "$data_emissao";  //para versão 3.00 '2014-02-03T13:22:42-3.00' não informar para NFCe
$data_sai_ent = date("Y-m-d") . "T" . date("H:i:s-3:00");
$dhSaiEnt = ''; //versão 2.00, 3.00 e 3.10
$tpNF = '1';
$idDest = '2'; //1=Operação interna; 2=Operação interestadual; 3=Operação com exterior.
$cMunFG = '4125506';
$tpImp = '1'; //0=Sem geração de DANFE; 1=DANFE normal, Retrato; 2=DANFE normal, Paisagem;
//3=DANFE Simplificado; 4=DANFE NFC-e; 5=DANFE NFC-e em mensagem eletrônica
//(o envio de mensagem eletrônica pode ser feita de forma simultânea com a impressão do DANFE;
//usar o tpImp=5 quando esta for a única forma de disponibilização do DANFE).
$tpEmis = '1'; //1=Emissão normal (não em contingência);
//2=Contingência FS-IA, com impressão do DANFE em formulário de segurança;
//3=Contingência SCAN (Sistema de Contingência do Ambiente Nacional);
//4=Contingência DPEC (Declaração Prévia da Emissão em Contingência);
//5=Contingência FS-DA, com impressão do DANFE em formulário de segurança;
//6=Contingência SVC-AN (SEFAZ Virtual de Contingência do AN);
//7=Contingência SVC-RS (SEFAZ Virtual de Contingência do RS);
//9=Contingência off-line da NFC-e (as demais opções de contingência são válidas também para a NFC-e);
//Nota: Para a NFC-e somente estão disponíveis e são válidas as opções de contingência 5 e 9.

$cDV = "$cDV"; //digito verificador
$tpAmb = '1'; //1=Produção; 2=Homologação
$finNFe = '1'; //1=NF-e normal; 2=NF-e complementar; 3=NF-e de ajuste; 4=Devolução/Retorno.
$indFinal = '0'; //0=Não; 1=Consumidor final;
$indPres = '9'; //0=Não se aplica (por exemplo, Nota Fiscal complementar ou de ajuste);
//1=Operação presencial;
//2=Operação não presencial, pela Internet;
//3=Operação não presencial, Teleatendimento;
//4=NFC-e em operação com entrega a domicílio;
//9=Operação não presencial, outros.
$procEmi = '0'; //0=Emissão de NF-e com aplicativo do contribuinte;
//1=Emissão de NF-e avulsa pelo Fisco;
//2=Emissão de NF-e avulsa, pelo contribuinte com seu certificado digital, através do site do Fisco;
//3=Emissão NF-e pelo contribuinte com aplicativo fornecido pelo Fisco.
$verProc = '3.10.61'; //versão do aplicativo emissor
$dhCont = ''; //entrada em contingência AAAA-MM-DDThh:mm:ssTZD
$xJust = ''; //Justificativa da entrada em contingência

$resp = $nfe->tagide($cUF, $cNF, $natOp, $indPag, $mod, $serie, $nNF, $dhEmi, $dhSaiEnt, $tpNF, $idDest, $cMunFG, $tpImp, $tpEmis, $cDV, $tpAmb, $finNFe, $indFinal, $indPres, $procEmi, $verProc, $dhCont, $xJust);




//Dados do emitente

$CNPJ = "$cnpj_emitente";
$CPF = '';
$xNome = "$razao_social_emitente";
$xFant = '';
$IE = "$inscricao_estadual_emitente";
$IEST = '';
$IM = '';
$CNAE = '';
$CRT = '1';
$resp = $nfe->tagemit($CNPJ, $CPF, $xNome, $xFant, $IE, $IEST, $IM, $CNAE, $CRT);

//endereço do emitente
$xLgr = "$logradouro_emitente";
$nro = "$numero_emitente";
$xCpl = "$complemento_emitente";
$xBairro = "$bairro_emitente";
$cMun = '4125506';
$xMun = "$municipio_emitente";
$UF = "$uf_emitente";
$CEP = "$cep_emitente";
$cPais = '1058';
$xPais = 'BRASIL';
$fone = "";
$resp = $nfe->tagenderEmit($xLgr, $nro, $xCpl, $xBairro, $cMun, $xMun, $UF, $CEP, $cPais, $xPais, $fone);

//destinatário
$CNPJ = "$cnpj_remetente";
$CPF = '';
$idEstrangeiro = '';
$xNome = "$razao_social_remetente";
$indIEDest = '2';
$IE = "$inscricao_estadual_remetente";
$ISUF = '';
$IM = '';
$email = "$email_remetente";
$resp = $nfe->tagdest($CNPJ, $CPF, $idEstrangeiro, $xNome, $indIEDest, $IE, $ISUF, $IM, $email);

//Endereço do destinatário
$xLgr = "$logradouro_remetente";
$nro = "$numero_remetente";
$xCpl = "$complemento_remetente";
$xBairro = "$bairro_remetente";
$cMun = "5107958";
$xMun = "$municipio_remetente";
$UF = "$uf_remetente";
$CEP = "$cep_remetente";
$cPais = '1058';
$xPais = 'BRASIL';
$fone = "";
$resp = $nfe->tagenderDest($xLgr, $nro, $xCpl, $xBairro, $cMun, $xMun, $UF, $CEP, $cPais, $xPais, $fone);





for ($i = 1; $i < count($produto); $i++) {



    for ($i = 1; $i < count($quantidade); $i++) {



        $desconto_nfe = number_format($_POST['desconto-geral-nfe'], 2, '.', '');

        //for ($i = 1; $i < count($desconto_nfe); $i++) {

        $sql = "SELECT * FROM produtos WHERE codigo = '$produtos[$i]'";
        $rs = mysql_query($sql);
        while ($row = mysql_fetch_object($rs)) {
            $cod_produto = $row->codigo;
            $descricao_produto = $row->descricao;
            $ncm = $row->NCM;
            $cfop = $row->CFOP;
            $un_comercial = $row->un_comercial;
            $un_tributavel = $row->un_tributavel;
            $un_tributavel = $row->un_tributavel;
            $valor_produto = $row->precodistribuidor;

            if ($desconto_nfe == '0' || $desconto_nfe == '' ) {
                $valor_nfe = number_format($valor_produto[$i], 2, '.', '');
            } else {
                $valor_nfe = number_format($valor_produto[$i] - ($valor_produto[$i] * (100/ 100)), 2, '.', '');
            }
            $valor_nfe_total = number_format($valor_nfe * $quantidade[$i], 2, '.', '');
            $soma_qntd_total += number_format($qntd_produtos[$i], 2, '.', '');
            $num_item = array_keys($produto);


            //produtos
            $aP[] = array(
                'nItem' => "$num_item[$i]",
                'cProd' => "$cod_produto",
                'cEAN' => '',
                'xProd' => "$descricao_produto",
                'NCM' => "$ncm",
                'NVE' => '',
                'EXTIPI' => '',
                'CFOP' => "$cfop",
                'uCom' => 'UNID',
                'qCom' => "$quantidade[$i]",
                'vUnCom' => "$valor_nfe",
                'vProd' => "$valor_nfe_total",
                'cEANTrib' => '',
                'uTrib' => 'UNID',
                'qTrib' => "$quantidade[$i]",
                'vUnTrib' => "$valor_nfe",
                'vFrete' => '',
                'vSeg' => '',
                'vDesc' => '',
                'vOutro' => '',
                'indTot' => '1',
                'xPed' => '111',
                'nItemPed' => '3',
                'nFCI' => '');

            //imposto
            $nItem = "$num_item[$i]";
            $vTotTrib = "$valor_nfe_total";

            $resp = $nfe->tagimposto($nItem, $vTotTrib);






            //ICMSSN
            $nItem = "$num_item[$i]";
            $orig = '0';
            $csosn = '103';

            $resp = $nfe->tagICMSSN($nItem, $orig, $csosn);
            //IPI
            $nItem = "$num_item[$i]";
            $cst = '53';
            $clEnq = '';
            $cnpjProd = '';
            $cSelo = '';
            $qSelo = '';
            $cEnq = '999';
            $vBC = '0.00';
            $pIPI = '0.00';
            $vIPI = '0.00';
            $resp = $nfe->tagIPI($nItem, $cst, $clEnq, $cnpjProd, $cSelo, $qSelo, $cEnq, $vBC, $pIPI, $vIPI);
            //PIS
            $nItem = "$num_item[$i]";
            $cst = '49';
            $vBC = '0.00';
            $pPIS = '0.00';
            $vPIS = '0.00';
            $resp = $nfe->tagPIS($nItem, $cst, $vBC, $pPIS, $vPIS);

            //COFINS
            $nItem = "$num_item[$i]";
            $cst = '49';
            $vBC = '0.00';
            $pCOFINS = '0.00';
            $vCOFINS = '0.00';
            $resp = $nfe->tagCOFINS($nItem, $cst, $vBC, $pCOFINS, $vCOFINS);
            //}
            //}
        }
        //}
    }
}




foreach ($aP as $prod) {
    $nItem = $prod['nItem'];
    $cProd = $prod['cProd'];
    $cEAN = $prod['cEAN'];
    $xProd = $prod['xProd'];
    $NCM = $prod['NCM'];
    $NVE = $prod['NVE'];
    $EXTIPI = $prod['EXTIPI'];
    $CFOP = $prod['CFOP'];
    $uCom = $prod['uCom'];
    $qCom = $prod['qCom'];
    $vUnCom = $prod['vUnCom'];
    $vProd = $prod['vProd'];
    $cEANTrib = $prod['cEANTrib'];
    $uTrib = $prod['uTrib'];
    $qTrib = $prod['qTrib'];
    $vUnTrib = $prod['vUnTrib'];
    $vFrete = $prod['vFrete'];
    $vSeg = $prod['vSeg'];
    $vDesc = $prod['vDesc'];
    $vOutro = $prod['vOutro'];
    $indTot = $prod['indTot'];
    $xPed = $prod['xPed'];
    $nItemPed = $prod['nItemPed'];
    $nFCI = $prod['nFCI'];
    $resp = $nfe->tagprod($nItem, $cProd, $cEAN, $xProd, $NCM, $NVE, $EXTIPI, $CFOP, $uCom, $qCom, $vUnCom, $vProd, $cEANTrib, $uTrib, $qTrib, $vUnTrib, $vFrete, $vSeg, $vDesc, $vOutro, $indTot, $xPed, $nItemPed, $nFCI);
}
for ($i = 1; $i < count($valor_nfe_total); $i++) {
    $soma_valor_nfe_total = array_sum($valor_nfe_total);
}
$soma_valor_nfe_total = number_format($soma_valor_nfe_total, 2, '.', ',');
$vBC = '0.00';
$vICMS = '0.00';
$vICMSDeson = '0.00';
$vBCST = '0.00';
$vST = '0.00';
$vProd = "$soma_valor_nfe_total";
$vFrete = '0.00';
$vSeg = '0.00';
$vDesc = '0.00';
$vII = '0.00';
$vIPI = '0.00';
$vPIS = '0.00';
$vCOFINS = '0.00';
$vOutro = '0.00';
$vNF = "$soma_valor_nfe_total";
$vTotTrib = "";
$resp = $nfe->tagICMSTot($vBC, $vICMS, $vICMSDeson, $vBCST, $vST, $vProd, $vFrete, $vSeg, $vDesc, $vII, $vIPI, $vPIS, $vCOFINS, $vOutro, $vNF, $vTotTrib);

//frete
$modFrete = '0'; //0=Por conta do emitente; 1=Por conta do destinatário/remetente; 2=Por conta de terceiros;
$resp = $nfe->tagtransp($modFrete);





//Dados do processo
//0=SEFAZ; 1=Justiça Federal; 2=Justiça Estadual; 3=Secex/RFB; 9=Outros
$aProcRef = array(
    array('nProc1', '0'),
    array('nProc2', '1'),
    array('nProc3', '2'),
    array('nProc4', '3'),
    array('nProc5', '9')
);
foreach ($aProcRef as $proc) {
    $nProc = $proc[0];
    $indProc = $proc[1];
    //$resp = $nfe->tagprocRef($nProc, $indProc);
}

/*
  $aForDia = array(
  array('1', '100', '1400', '1000', '1400'),
  array('2', '100', '1400', '1000', '1400'),
  array('3', '100', '1400', '1000', '1400'),
  array('4', '100', '1400', '1000', '1400'),
  array('5', '100', '1400', '1000', '1400'),
  array('6', '100', '1400', '1000', '1400'),
  array('7', '100', '1400', '1000', '1400'),
  array('8', '100', '1400', '1000', '1400'),
  array('9', '100', '1400', '1000', '1400'),
  array('10', '100', '1400', '1000', '1400'),
  array('11', '100', '1400', '1000', '1400'),
  array('12', '100', '14 00', '1000', '1400'),
  array('13', '100', '1400', '1000', '1400'),
  array('14', '100', '1400', '1000', '1400')
  );
  foreach ($aForDia as $forDia) {
  $dia = $forDia[0];
  $qtde = $forDia[1];
  $qTotMes = $forDia[2];
  $qTotAnt = $forDia[3];
  $qTotGer = $forDia[4];
  //$resp = $nfe->tagforDia($dia, $qtde, $qTotMes, $qTotAnt, $qTotGer);
  }
 */
//monta a NFe e retorna na tela
$resp = $nfe->montaNFe();

if ($resp) {
    header('Content-type: text/xml; charset=UTF-8');
    //echo $nfe->getXML();
    $xml = $nfe->getXML();
    $fp = fopen("nf-e/$chave.xml", 'w+');
    fwrite($fp, $xml);
    fclose($fp);
} else {
    header('Content-type: text/html; charset=UTF-8');
    foreach ($nfe->erros as $err) {
        echo 'tag: &lt;' . $err['tag'] . '&gt; ---- ' . $err['desc'] . '<br>';
    }
}
?>

Esse outro para assinar a XML:

 

<?php
require_once('../../nfephp/libs/NFe/ToolsNFePHP.class.php');
$arquivo = $_GET['chave'];
$nfe  = new ToolsNFePHP;
$file = "../../nf-e/$arquivo.xml";
$arq  = file_get_contents($file);

if ($xml = $nfe->signXML($arq, 'infNFe')) {

    file_put_contents($file, $xml);
    

} else {

    echo $nfe->errMsg;

}
?>

DETALHE IMPORTANTE: Isso foi mexido pela última vez na metade de 2015 não sei se funciona do mesmo jeito ainda, e não consegui achar como eu vazia a transmissão, mas pelo que me lembro acho que não fazia, eu gerava os XML assinados, ai ele importada no programa da sefaz pra transmitir.

 

O propósito é mais pra você ler a parte do código que gera a XML referente aos atributos fiscais de produto X nota.

 

PS.: Por favor não critiquem isso, eu não sabia o que eu fazia na época, só fazia kkk

 

E pra finalizar meu comentário, se você não entende de como fazer suas coisas ficarem totalmente seguras (como eu também não sei), simplesmente não faça isso.

 

Espero ter ajudado vlw!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By fideles
      Fala pessoal, como anda as coisas?
       
      Meu conhecimento em JS e quase neutro, conheço algo, mais talvez não o suficiente para o que eu precise, por isso venho pedir ajuda a vocês,
       
      Tenho um pequeno programinha, simples mesmo que tem 4 areas (Administração, Compras, Financeiro, Almoxarifado).
       
      Quem fica na ADM solicita algo,  compras visualiza e da um "ok" e o financeiro tbm tem que dar um "ok" e no final, o almoxarifado dá um "Processo Concluido" (está parte está ok, funcionando, sem erro)
       
      Meu problema seria que quem está no almoxarifado consegue clicar no botão "Processo Concluido" mesmo o pessoal de compras e financeiro não dando um "ok" na solicitação ou ele tbm consegue dar "Processo Concluido" se um ou outro dar um "ok". Precisaria que ele so conseguisse dar "Processo Concluido" se os dois darem o "ok", se so um dar "ok" ele não pode dar "Processo Concluido".
       
      Alguém consegue pelo menos me dar um norte para que eu possa dar continuidade? Já tentei em PHP e nada.
       
    • By Wesley Alves barnosa
      Desenvolvi um site para vender palestras o https://palestraparaprofessores.com.br, já tenho algum trafego, mas esta muito abaixo do que espero. Álguem aqui pode me ajudar a entender melhor o que preciso fazer para vender minhas palestras.
       
      Se puderem me ajudar com dicas ficarei grato!
      Obrigado
    • By helkton
      oi galera, como criar uma listagem de mesas disponíveis ou produtos cadastrados pra uma lanchonete e restaurante
       
      tipo esta imagem abaixo no caso é de um hotel, mais o esquema seria o mesmo, só mudando o ramo de atividade rsss
       

    • By cunhar7
      Boa noite a todos, Gostaria de saber se alguém pode me ajudar com o DomPdf. Estou utilizando como base do projeto o codeigniter e bootstrap.
      Preciso Gerar um PDF com uma galeria de produtos, o problema é que não consigo forçar uma quebra de linhas. Os itens sempre aparecem um na frete do outro.
       
      //controller public function ImprimirTrabalho(){ #pesquisando modelo do trabalho $pesquisaModelo = $this->Trabalho->trabalho_layout($this->uri->segment(2)); #passando Modelo do trabalho para a variavel modelo $modelo = $pesquisaModelo['0']['layout']; ob_start(); $this->load->view('header_impressao'); $this->load->view($modelo); $pdf = ob_get_clean(); $this->pdf->loadHtml($pdf); // (Optional) Setup the paper size and orientation $this->pdf->setPaper('A4', ''); // Render the HTML as PDF $this->pdf->render(); // Output the generated PDF to Browser $this->pdf->stream("",array("Attachment" => false)); }
    • By marsolim
      Oi gente tudo bem? to com uma dúvida aqui. acho que isso vai soar meio idiota mas sabe o checkbox que a gente coloca pro usuário fazer cadastro por exemplo com o "Confirmo que li e estou de acordo blablabla". a gente deve armazenar esse 'aceito' no banco de dados ou basta ele estar na página e ser validado na hora do cadastro?
       
      bem e paz pra todos
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.