Skip to content
This repository has been archived by the owner on Jul 22, 2022. It is now read-only.

Commit

Permalink
BUG al obtener el No. Certificado, se agregan CSD de prueba
Browse files Browse the repository at this point in the history
  • Loading branch information
rdomenzain committed Oct 20, 2019
1 parent 5dadc57 commit 50b4aed
Show file tree
Hide file tree
Showing 9 changed files with 42 additions and 14 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
Empty file added docs/CSD_Prueba/12345678a.txt
Empty file.
Binary file added docs/CSD_Prueba/AAA010101AAA.cer
Binary file not shown.
Binary file added docs/CSD_Prueba/AAA010101AAA.key
Binary file not shown.
6 changes: 3 additions & 3 deletions src/core/NodeConceptos.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions src/core/NodeImpuestos.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
4 changes: 3 additions & 1 deletion src/utils/CertificadoUtils.php
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -112,5 +115,4 @@ private function convertCertToPem($file)
. chunk_split(base64_encode($file), 64, PHP_EOL)
. '-----END CERTIFICATE-----' . PHP_EOL;
}

}
21 changes: 14 additions & 7 deletions test/GeneraXMLTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -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 '<br>';
$cfdi = new Cfdv33($comprobante, $rutaCert, $rutaKey, $clave);
error_log($cfdi->getXml());
// error_log($cfdi->getXml());
$xmlFile = dirname(__FILE__) . '\\pruebaXML.xml';
echo 'Archivo XML:: ' . $xmlFile;
echo '<br>';
echo base64_encode($cfdi->getXml());
$fp = fopen($xmlFile, 'wb');
fwrite($fp, $cfdi->getXml());
fclose($fp);
19 changes: 19 additions & 0 deletions test/pruebaXML.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="3.3" Fecha="2019-10-20T00:21:24" Serie="0A" Folio="11" FormaPago="03" CondicionesDePago="Contado" SubTotal="1.00" Descuento="0.00" Moneda="MXN" TipoCambio="1" Total="1.16" TipoDeComprobante="I" MetodoPago="PUE" LugarExpedicion="11410" Certificado="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" NoCertificado="30001000000300023708" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd" Sello="iY3ik42hfw6iwL7DLbhU37SZCsSXX7SrGwMhDUvhAxYLz3KVUWj/ditgZA1S9xIvEWzSm/9dF+eWKIfV79UuO1HjkvQRELmF+cJ4VRq0PvdqZOwMhClQ2Whlm/x0F+NHIww48u/yW+oUFgatYvWGlpFRyV7F3f1GOLXPdYH3pPL8khEeRBI2/HsLVenpfWWKwyb9VpsqrOytE3UcE17cMI7r2DrkVWKUIhm6M9duDdeYrT8fC7Z9/8fFx7kbh02F9mBQXVqrxfGyMPrbE3+gQWHRqVz8i77D8A4R5Mcf1CZnyiyYU1qsfDgleqorYTNxfwSbQgknb21kRja5m+1xrA==">
<cfdi:Emisor Rfc="AAA010101AAA" Nombre="ACCEM SERVICIOS EMPRESARIALES" RegimenFiscal="601"/>
<cfdi:Receptor Rfc="XAXX010101000" Nombre="CLIENTES MOSTRADOR" UsoCFDI="G01"/>
<cfdi:Conceptos>
<cfdi:Concepto ClaveProdServ="01010101" NoIdentificacion="101PS22L1.90B/G" Cantidad="1.00" ClaveUnidad="EA" Unidad="Pza" Descripcion="R-101 PRIM PINTRO STD Cal22 L1.90 mts Blanco/Gris" ValorUnitario="1.00" Importe="1.00" Descuento="0.00">
<cfdi:Impuestos>
<cfdi:Traslados>
<cfdi:Traslado Base="1.00" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="0.16"/>
</cfdi:Traslados>
</cfdi:Impuestos>
</cfdi:Concepto>
</cfdi:Conceptos>
<cfdi:Impuestos TotalImpuestosTrasladados="0.16">
<cfdi:Traslados>
<cfdi:Traslado Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="0.16"/>
</cfdi:Traslados>
</cfdi:Impuestos>
</cfdi:Comprobante>

0 comments on commit 50b4aed

Please sign in to comment.