diff --git a/composer.json b/composer.json index 6acf2fe..c13bf83 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "rdomenzain/cfdi33-utils", - "version": "1.0.1", + "version": "1.0.2", "description": "Utilerias para todo lo relacionado el CFDI 3.3. SAT México.", "keywords": ["cfdi", "mexico", "invoice", "pdf", "factura", "ddsis", "domenzain"], "homepage": "https://github.com/rdomenzain/cfdi33-utils", diff --git a/docs/CSD_Prueba/12345678a.txt b/docs/CSD_Prueba/12345678a.txt new file mode 100644 index 0000000..e69de29 diff --git a/docs/CSD_Prueba/AAA010101AAA.cer b/docs/CSD_Prueba/AAA010101AAA.cer new file mode 100644 index 0000000..ebcba80 Binary files /dev/null and b/docs/CSD_Prueba/AAA010101AAA.cer differ diff --git a/docs/CSD_Prueba/AAA010101AAA.key b/docs/CSD_Prueba/AAA010101AAA.key new file mode 100644 index 0000000..ecaa7a2 Binary files /dev/null and b/docs/CSD_Prueba/AAA010101AAA.key differ diff --git a/src/core/NodeConceptos.php b/src/core/NodeConceptos.php index bb5419d..1e393b1 100644 --- a/src/core/NodeConceptos.php +++ b/src/core/NodeConceptos.php @@ -18,7 +18,7 @@ function __construct($conceptos, $xmlRoot) public function GeneraNodo() { - if ($this->conceptos != null && count($this->conceptos) > 0) { + if ($this->conceptos != null && count($this->conceptos->Concepto) > 0) { $conceptosElement = $this->xmlRoot->createElement("cfdi:Conceptos"); foreach ($this->conceptos->Concepto as $concept) { // Agrega Clave Prov Serv @@ -98,12 +98,12 @@ private function generaNodoImpuestos($concepto) { /* @var $Impuestos Impuestos */ $Impuestos = $concepto->Impuestos; - if ($Impuestos != null && count($Impuestos) > 0) { + if ($Impuestos != null) { // Agrega nodo de Impuestos $impuestosElement = $this->xmlRoot->createElement("cfdi:Impuestos"); // Agrega nodo si existe de traslados $Traslados = $Impuestos->Traslados; - if ($Traslados != null && count($Traslados) > 0) { + if ($Traslados != null) { $trasladosElement = $this->xmlRoot->createElement("cfdi:Traslados"); foreach ($Traslados->Traslado as $oneTras) { // Agrega nodo de traslado diff --git a/src/core/NodeImpuestos.php b/src/core/NodeImpuestos.php index 2bcfb7f..1007343 100644 --- a/src/core/NodeImpuestos.php +++ b/src/core/NodeImpuestos.php @@ -18,7 +18,7 @@ function __construct($impuestos, $xmlRoot) public function GeneraNodo() { $impuestos = $this->impuestos; - if ($impuestos != null && count($impuestos) > 0) { + if ($impuestos != null) { // Agrega nodo Impuestos $elementImpuestos = $this->xmlRoot->createElement("cfdi:Impuestos"); // Agrega atributo Total Impuestos Retenido @@ -62,7 +62,7 @@ public function GeneraNodo() $elementImpuestos->appendChild($elementRetenciones); } // Agrega Nodo de Traslados - if ($impuestos->Traslados != null && count($impuestos->Traslados) > 0) { + if ($impuestos->Traslados != null && count($impuestos->Traslados->Traslado) > 0) { $elementTraslados = $this->xmlRoot->createElement("cfdi:Traslados"); foreach ($impuestos->Traslados->Traslado as $tras) { // Agrega nodos de retencion diff --git a/src/utils/CertificadoUtils.php b/src/utils/CertificadoUtils.php index 782e5c3..ca130eb 100644 --- a/src/utils/CertificadoUtils.php +++ b/src/utils/CertificadoUtils.php @@ -87,12 +87,15 @@ public function ValidateCertificado($fileCertContent) private function ConvertNoSerie($dec) { + return pack('H*', str_replace(' ', '', str_replace('0x', '', $dec))); + /* $hex = $this->bcdechex($dec); $ser = ""; for ($i = 1; $i < strlen($hex); $i = $i + 2) { $ser .= substr($hex, $i, 1); } return $ser; + */ } private function bcdechex($dec) @@ -112,5 +115,4 @@ private function convertCertToPem($file) . chunk_split(base64_encode($file), 64, PHP_EOL) . '-----END CERTIFICATE-----' . PHP_EOL; } - } diff --git a/test/GeneraXMLTest.php b/test/GeneraXMLTest.php index 2d00c27..9c44fc2 100644 --- a/test/GeneraXMLTest.php +++ b/test/GeneraXMLTest.php @@ -54,9 +54,9 @@ $comprobante->MetodoPago = "PUE"; $comprobante->LugarExpedicion = "11410"; $emisor = new Emisor(); -$emisor->Rfc = "*************"; -$emisor->Nombre = "***** ***** *****"; -$emisor->RegimenFiscal = "608"; +$emisor->Nombre = "ACCEM SERVICIOS EMPRESARIALES"; +$emisor->Rfc = "AAA010101AAA"; +$emisor->RegimenFiscal = "601"; $comprobante->Emisor = $emisor; $receptor = new Receptor(); $receptor->Nombre = "CLIENTES MOSTRADOR"; @@ -226,13 +226,20 @@ $utlXml = new XmlUtils(); $utlCert = new CertificadoUtils(); -$clave = "*****"; -$rutaCert = "C:\\....cer"; -$rutaKey = "C:\\....key"; +$clave = "12345678a"; +$rutaCert = realpath(dirname(__FILE__) . '/../docs/CSD_Prueba/AAA010101AAA.cer'); +$rutaKey = realpath(dirname(__FILE__) . '/../docs/CSD_Prueba/AAA010101AAA.key'); $utlCert->ValidateCertificado(file_get_contents($rutaCert)); $utlCert->ValidatePrivateKey(file_get_contents($rutaKey)); print_r($utlCert->GetInfoCertificado(file_get_contents($rutaCert))); echo '
'; $cfdi = new Cfdv33($comprobante, $rutaCert, $rutaKey, $clave); -error_log($cfdi->getXml()); \ No newline at end of file +// error_log($cfdi->getXml()); +$xmlFile = dirname(__FILE__) . '\\pruebaXML.xml'; +echo 'Archivo XML:: ' . $xmlFile; +echo '
'; +echo base64_encode($cfdi->getXml()); +$fp = fopen($xmlFile, 'wb'); +fwrite($fp, $cfdi->getXml()); +fclose($fp); \ No newline at end of file diff --git a/test/pruebaXML.xml b/test/pruebaXML.xml new file mode 100644 index 0000000..1dcc517 --- /dev/null +++ b/test/pruebaXML.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + +