diff --git a/examples/testaMakeCTe.php b/examples/testaMakeCTe.php index 61e2592..696ea7e 100644 --- a/examples/testaMakeCTe.php +++ b/examples/testaMakeCTe.php @@ -4,12 +4,10 @@ require_once '../bootstrap.php'; -use NFePHP\CTe\Make; -use NFePHP\CTe\Tools; -use NFePHP\CTe\Complements; -use NFePHP\CTe\Common\Standardize; use NFePHP\Common\Certificate; -use NFePHP\Common\Soap\SoapCurl; +use NFePHP\CTe\Common\Standardize; +use NFePHP\CTe\MakeCTe; +use NFePHP\CTe\Tools; //tanto o config.json como o certificado.pfx podem estar //armazenados em uma base de dados, então não é necessário @@ -42,7 +40,7 @@ $tools->model('57'); -$cte = new Make(); +$cte = new MakeCTe(); //$dhEmi = date("Y-m-d\TH:i:s-03:00"); Para obter a data com diferença de fuso usar 'P' $dhEmi = date("Y-m-d\TH:i:sP"); @@ -275,7 +273,7 @@ $aereo->nOCA = ''; // Número Operacional do Conhecimento Aéreo $aereo->dPrevAereo = date('Y-m-d'); $aereo->natCarga_xDime = ''; // Dimensões 1234x1234x1234 em cm -$aereo->natCarga_cInfManu = [ ]; // Informação de manuseio, com dois dígitos, pode ter mais de uma ocorrência. +$aereo->natCarga_cInfManu = []; // Informação de manuseio, com dois dígitos, pode ter mais de uma ocorrência. $aereo->tarifa_CL = 'G'; // M - Tarifa Mínima / G - Tarifa Geral / E - Tarifa Específica $aereo->tarifa_cTar = ''; // código da tarifa, deverão ser incluídos os códigos de três digítos correspondentes à tarifa $aereo->tarifa_vTar = 100.00; // valor da tarifa. 15 posições, sendo 13 inteiras e 2 decimais. Valor da tarifa por kg quando for o caso @@ -301,8 +299,6 @@ exit(); - - //Envia lote e autoriza $axmls[] = $xml; $lote = substr(str_replace(',', '', number_format(microtime(true) * 1000000, 0)), 0, 15); @@ -317,8 +313,8 @@ $std = $stdCl->toStd(); if ($std->cStat != 103) {//103 - Lote recebido com Sucesso - //processa erros - print_r($arr); + //processa erros + print_r($arr); } //Consulta Recibo @@ -327,7 +323,7 @@ $arr = $stdCl->toArray(); $std = $stdCl->toStd(); if ($std->protCTe->infProt->cStat == 100) {//Autorizado o uso do CT-e - //adicionar protocolo + //adicionar protocolo } echo '
'; print_r($arr); @@ -337,34 +333,34 @@ function montaChave($cUF, $ano, $mes, $cnpj, $mod, $serie, $numero, $tpEmis, $codigo = '') { - if ($codigo == '') { - $codigo = $numero; - } - $forma = "%02d%02d%02d%s%02d%03d%09d%01d%08d"; - $chave = sprintf( - $forma, $cUF, $ano, $mes, $cnpj, $mod, $serie, $numero, $tpEmis, $codigo - ); - return $chave . calculaDV($chave); + if ($codigo == '') { + $codigo = $numero; + } + $forma = "%02d%02d%02d%s%02d%03d%09d%01d%08d"; + $chave = sprintf( + $forma, $cUF, $ano, $mes, $cnpj, $mod, $serie, $numero, $tpEmis, $codigo + ); + return $chave . calculaDV($chave); } function calculaDV($chave43) { - $multiplicadores = array(2, 3, 4, 5, 6, 7, 8, 9); - $iCount = 42; - $somaPonderada = 0; - while ($iCount >= 0) { - for ($mCount = 0; $mCount < count($multiplicadores) && $iCount >= 0; $mCount++) { - $num = (int) substr($chave43, $iCount, 1); - $peso = (int) $multiplicadores[$mCount]; - $somaPonderada += $num * $peso; - $iCount--; + $multiplicadores = array(2, 3, 4, 5, 6, 7, 8, 9); + $iCount = 42; + $somaPonderada = 0; + while ($iCount >= 0) { + for ($mCount = 0; $mCount < count($multiplicadores) && $iCount >= 0; $mCount++) { + $num = (int)substr($chave43, $iCount, 1); + $peso = (int)$multiplicadores[$mCount]; + $somaPonderada += $num * $peso; + $iCount--; + } + } + $resto = $somaPonderada % 11; + if ($resto == '0' || $resto == '1') { + $cDV = 0; + } else { + $cDV = 11 - $resto; } - } - $resto = $somaPonderada % 11; - if ($resto == '0' || $resto == '1') { - $cDV = 0; - } else { - $cDV = 11 - $resto; - } - return (string) $cDV; + return (string)$cDV; } diff --git a/examples/testaMakeCTeOS.php b/examples/testaMakeCTeOS.php index be4b11c..5bd7f16 100644 --- a/examples/testaMakeCTeOS.php +++ b/examples/testaMakeCTeOS.php @@ -4,7 +4,7 @@ require_once '../bootstrap.php'; -use NFePHP\CTe\Make; +use NFePHP\CTe\MakeCTeOS; use NFePHP\CTe\Tools; use NFePHP\CTe\Complements; use NFePHP\CTe\Common\Standardize; @@ -41,7 +41,7 @@ $tools = new Tools($configJson, Certificate::readPfx($content, '123456')); $tools->model('67'); -$cte = new Make(); +$cte = new MakeCTeOS(); $dhEmi = date("Y-m-d\TH:i:s-03:00"); $numeroCTE = '1'; $chave = montaChave( diff --git a/src/MakeCTe.php b/src/MakeCTe.php index 36f669c..7b96c7f 100644 --- a/src/MakeCTe.php +++ b/src/MakeCTe.php @@ -526,7 +526,12 @@ public function monta() $this->dom->appChild($this->infCte, $this->infCTeNorm, 'Falta tag "infCTeNorm"'); $this->dom->appChild($this->infCTeNorm, $this->infCarga, 'Falta tag "infCarga"'); foreach ($this->infQ as $infQ) { - $this->dom->appChild($this->infCarga, $infQ, 'Falta tag "infQ"'); + $node = $this->infCarga->getElementsByTagName("vCargaAverb")->item(0); + if (!empty($node)) { + $this->infCarga->insertBefore($infQ, $node); + } else { + $this->dom->appChild($this->infCarga, $infQ, 'Falta tag "infQ"'); + } } foreach ($this->infNF as $infNF) { $this->dom->appChild($this->infDoc, $infNF, 'Falta tag "infNF"'); @@ -3201,7 +3206,7 @@ public function taginfQ($std) $this->conditionalNumberFormatting($std->qCarga, 4), true, $identificador . 'Quantidade' - ); + ); return $this->infQ[$posicao]; }