header('Content-type: text/xml; charset=UTF-8');
require_once "../vendor/autoload.php";
require_once './config/dataHora.php';
require_once "./config/config.php";
require_once "./createDir.php";
/* Certificado e modelo de data */
date_default_timezone_set('America/Fortaleza');
$certificadoPath = './config/jupiter.pfx';
$data = new DataHora(date("Y-m-d\Th:i:s"));
use NFePHP\NFe\Make;
use League\Flysystem\Exception;
/* Certificado e modelo de data */
class gerarNfe extends Make {
public $configJson;
public $certificadoDigital;
public function __construct($config, $certificadoPath)
{
parent::__construct();
$this->configJson = json_encode($config);
$this->certificadoDigital = file_get_contents($certificadoPath);
}
}
$nfe = new NFePHP\NFe\Make();
$montarNfe = new gerarNfe($config, $certificadoPath);
$std = new \stdClass();
$std->versao = '4.00';
$montarNfe->taginfNFe($std);
$std = new stdClass();
$std->cUF = 21;
$std->cNF = 000000000+1;
$std->natOp = 'Venda';
/* $std->indPag = 0; //NÃO EXISTE MAIS NA VERSÃO 4.00 */
$std->mod = 55 /* modelo 65 cupons fiscais */;
$std->serie = 1;
$std->nNF = 2;
$std->dhEmi = /* "2018-02-06T20:48:00-02:00" */ $data->formatDate();
$std->dhSaiEnt = /* "2018-02-06T20:48:00-02:00" */ $data->formatDate();
$std->tpNF = 1; /* Saida ou entrada de produtos */
$std->idDest = 1; /* 1 = operacao interna, 2 = operacao interestadual, 3 = exterior */
$std->cMunFG = 2105302;
$std->tpImp = 1 /* 1 = retrato, 2 = paisagem */;
$std->tpEmis = 1;
$std->cDV = substr($nfe->getChave(), -1);;
$std->tpAmb = 2 /* 1 para notas validas e 2 para notas de teste */;
$std->finNFe = 1 /* 1 para vendas e 4 para devolucao*/;
$std->indFinal = 1 /* 0 normal 1 consumidor final */;
$std->indPres = 1; /* indica a presenca do comprador no estabelecimento, mudar para 0 no caso de compras online */
$std->procEmi = 0;
$std->verProc = "2.4.0";
$std->dhCont = null;
$std->xJust = null;
$elem = $montarNfe->tagide($std);
$std = new \stdClass();
$std->xNome = 'Fake Materiais de construção Ltda';
$std->IE = '121544346';
$std->CRT = "3";
$std->CNPJ = '01625636000191';
$montarNfe->tagemit($std);
$std = new \stdClass();
$std->xLgr = "Rua Teste";
$std->nro = '203';
$std->xBairro = 'Centro';
$std->cMun = '2105302';
$std->xMun = 'Imperatriz';
$std->UF = 'MA';
$std->CEP = '65907260';
$std->cPais = '1058';
$std->xPais = 'BRASIL';
$montarNfe->tagenderEmit($std);
$std = new \stdClass();
$std->xNome = 'Empresa destinatario teste';
$std->indIEDest = 1;
$std->CNPJ = '34372957000180';
$montarNfe->tagdest($std);
$std = new \stdClass();
$std->xLgr = "Rua Teste";
$std->nro = '203';
$std->xBairro = 'Centro';
$std->cMun = '4317608';
$std->xMun = 'Porto Alegre';
$std->UF = 'RS';
$std->CEP = '65907260';
$std->cPais = '1058';
$std->xPais = 'BRASIL';
$montarNfe->tagenderDest($std);
$std = new stdClass();
$std->CNPJ = '01625636000191'; //indicar um CNPJ ou CPF
$std->CPF = null;
$elem = $nfe->tagautXML($std);
$std = new \stdClass();
$std->item = 1;
$std->cProd = '4450';
$std->cEAN = "7897534826649";
$std->xProd = "Produto teste";
$std->NCM = '44170010';
$std->CFOP = '5402' /* preencher de acordo com a tabela cfop */;
$std->uCom = 'UN';
$std->qCom = '1.0000';
$std->vUnCom = '10.99';
$std->cEANTrib = "7897534826649";
$std->uTrib = 'UN';
$std->qTrib = "1.0000";
$std->vUnTrib = "10.99";
$std->vProd = '10.99';
$std->vFrete = "";
$std->vSeg = "";
$std->vDesc = null;
$std->vOutro = "";
$std->indTot = "1" /* indica se o vProd compoe o valor total */;
/* $std->xPed = "";
$std->nItemPed; */
/* $std->nFCI; */
$montarNfe->tagprod($std);
$std = new stdClass();
$std->item = 1; //item da NFe
$std->infAdProd = 'informacao adicional do item';
$elem = $montarNfe->taginfAdProd($std);
$std = new \stdClass();
$std->item = 1;
$std->vTotTrib = 4.00;
$montarNfe->tagimposto($std);
$std = new \stdClass();
$std->item = 1;
$std->orig = 0;
$std->CST = '00';
$std->modBC = 0;
$std->vBC = "0.20";
$std->pICMS = '18.0000';
$std->vICMS ='0.04';
$montarNfe->tagICMS($std);
$std = new \stdClass();
$std->item = 1;
$std->cEnq = '999';
$std->CST = '50';
$std->vIPI = 0;
$std->vBC = 0;
$std->pIPI = 0;
$montarNfe->tagIPI($std);
$std = new \stdClass();
$std->item = 1;
$std->CST = '07';
$std->vBC = 0;
$std->pPIS = 0;
$std->vPIS = 0;
$montarNfe->tagPIS($std);
$std = new stdClass();
$std->item = 1; //item da NFe
$std->CST = '07';
$std->vBC = null;
$std->pCOFINS = null;
$std->vCOFINS = null;
$std->qBCProd = null;
$std->vAliqProd = null;
$elem = $montarNfe->tagCOFINS($std);
$std = new \stdClass();
$std->vBC = 0.20;
$std->vICMS = 0.04;
$std->vICMSDeson = 0.00;
$std->vBCST = 0.00;
$std->vST = 0.00;
$std->vProd = 10.99;
$std->vFrete = 0.00;
$std->vSeg = 0.00;
$std->vDesc = 0.00;
$std->vII = 0.00;
$std->vIPI = 0.00;
$std->vPIS = 0.00;
$std->vCOFINS = 0.00;
$std->vOutro = 0.00;
$std->vNF = 10.99;
$std->vTotTrib = 0.00;
$montarNfe->tagICMSTot($std);
/* IMPOSTOS */
$std = new \stdClass();
$std->modFrete = 9;
$montarNfe->tagtransp($std);
/* necessario apenas para transporte */
/* $std = new \stdClass();
$std->item = 1;
$std->qVol = 2;
$std->esp = 'caixa';
$std->marca = 'OLX';
$std->nVol = '11111';
$std->pesoL = 10.00;
$std->pesoB = 11.00;
$nfe->tagvol($std);
*/
$std = new stdClass();
$std->nFat = '1233';
$std->vOrig = 1254.22;
$std->vDesc = '0.00';
$std->vLiq = 1254.22;
$elem = $montarNfe->tagfat($std);
$std = new stdClass();
$std->nDup = '001';
$std->dVenc = '2018-08-30';
$std->vDup = 1254.22;
$elem = $montarNfe->tagdup($std);
$std = new stdClass();
$std->vTroco = '0.00'; //incluso no layout 4.00, obrigatório informar para NFCe (65)
$elem = $montarNfe->tagpag($std);
$std = new stdClass();
$std->tPag = '03'; /* forma de pagamento */
$std->vPag = '10.99'; //Obs: deve ser informado o valor pago pelo cliente
$std->CNPJ = '12345678901234'; /* CNPJ da credenciadora de cartao de creditou ou debito */
$std->tBand = '01'; /* bandeira da operadora */
$std->cAut = '3333333'; /* numero de autorizacao da operacao */
$std->tpIntegra = 1; //incluso na NT 2015/002
$std->indPag = '0'; //0= Pagamento à Vista 1= Pagamento à Prazo
$elem = $montarNfe->tagdetPag($std);
$result = $montarNfe->montaNFE();
$xml = $montarNfe->getXML();
$tools = new NFePHP\NFe\Tools($montarNfe->configJson, NFePHP\Common\Certificate::readPfx($montarNfe->certificadoDigital, 'lee001'));
$xmlAssinado = $tools->signNFe($xml); // O conteúdo do XML assinado fica armazenado na variável $xmlAssinado
$idLote = str_pad(100, 15, '0', STR_PAD_LEFT); // Identificador do lote
$resp = $tools->sefazEnviaLote([$xmlAssinado], $idLote);
$st = new NFePHP\NFe\Common\Standardize();
$std = $st->toStd($resp);
if ($std->cStat != 103) {
//erro registrar e voltar
return ("[$std->cStat] $std->xMotivo");
}
$recibo = $std->infRec->nRec; // Vamos usar a variável $recibo para consultar o status da nota
$protocolo = $tools->seFazConsultaRecibo($recibo);
$protocol = new NFePHP\NFe\Factories\Protocol();
$xmlProtocolado = $protocol->add($xmlAssinado,$protocolo);
//cria o diretorio
if(createDir()){
file_put_contents('./notas/' . date('M-Y') . '/000000001.xml',$xmlProtocolado);
}
else{
file_put_contents('./notas/' . date('M-Y') . '/000000001.xml',$xmlProtocolado);
}
echo $xmlProtocolado;