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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+