Exemple #1
0
 private function GetXmlSatValidationCfdiAnswer()
 {
     $DB = new DataBase();
     $IdUser = filter_input(INPUT_POST, "idLogin");
     $IdDetail = filter_input(INPUT_POST, "IdDetail");
     $Content = filter_input(INPUT_POST, "content");
     $Query = "";
     if (strcasecmp($Content, "proveedor") == 0 or strcasecmp($Content, "cliente") == 0) {
         $Query = "SELECT det.id_validacion , val.ruta_acuse FROM detalle_factura_{$Content} det inner join validacion_{$Content} val on det.id_validacion=val.id_validacion  WHERE det.id_detalle={$IdDetail} ";
     }
     if (strcasecmp($Content, "nomina") == 0) {
         $Query = "SELECT det.id_validacion, val.ruta_acuse FROM detalle_recibo_{$Content} det inner join validacion_nomina val on det.id_validacion=val.id_validacion WHERE det.id_detalle_recibo_nomina={$IdDetail}";
     }
     $Result = $DB->ConsultaSelect("CFDI", $Query);
     if ($Result['Estado'] != 1) {
         XML::XmlResponse("Error", 0, "<p><b>Error</b> al recuperar el <b>Acuse de validación</b></p><br>Detalles:<br><br>" . $Result['Estado']);
         return 0;
     }
     $Acuse = $Result['ArrayDatos'][0];
     if (!file_exists($Acuse['ruta_acuse'])) {
         XML::XMLReponse("Error", 0, "<p><b>Error</b> no existe el acuse de validación</p>");
         return 0;
     }
     $doc = new DOMDocument('1.0', 'utf-8');
     $doc->load($Acuse['ruta_acuse']);
     $root = $doc->firstChild;
     $IdAcuse = $doc->createElement("IdValidacion", $Acuse['id_validacion']);
     $root->appendChild($IdAcuse);
     header('Content-Type: text/xml');
     echo $doc->saveXML();
 }
Exemple #2
0
 private function UpdateCfdi()
 {
     $receipt = new Receipt();
     $content = filter_input(INPUT_POST, "content");
     $IdUser = filter_input(INPUT_POST, "IdUser");
     $UserName = filter_input(INPUT_POST, "UserName");
     $PdfPath = filter_input(INPUT_POST, "PdfPath");
     $XmlPath = filter_input(INPUT_POST, "XmlPath");
     $IdCfdi = filter_input(INPUT_POST, "IdCfdi");
     $FileState = filter_input(INPUT_POST, "FileState");
     $key = 0;
     $TableName = '';
     if (strcasecmp($content, "provider") == 0) {
         $TableName = "proveedor";
         $key = 3;
     }
     if (strcasecmp($content, "client") == 0) {
         $TableName = "cliente";
         $key = 2;
     }
     if (strcasecmp($content, "payroll") == 0) {
         $TableName = "nomina";
         $key = 1;
     }
     $PdfNewName = $_FILES['pdf']['name'];
     $PdfNewPath = $_FILES['pdf']['tmp_name'];
     $XmlNewName = $_FILES['xml']['name'];
     $XmlNewPath = $_FILES['xml']['tmp_name'];
     $NewPdfName = pathinfo($PdfNewName, PATHINFO_FILENAME);
     $NewXmlName = pathinfo($XmlNewName, PATHINFO_FILENAME);
     $NewPdfExtension = pathinfo($PdfNewName, PATHINFO_EXTENSION);
     $OldXmlName = pathinfo($XmlPath, PATHINFO_FILENAME);
     $OldExtensionXml = pathinfo($XmlPath, PATHINFO_EXTENSION);
     $oldSatReceiptName = pathinfo($XmlPath, PATHINFO_FILENAME);
     $OldPdfName = pathinfo($PdfPath, PATHINFO_FILENAME);
     $OldExtensionPdf = pathinfo($PdfPath, PATHINFO_EXTENSION);
     $OldPathSatReceipt = dirname($XmlPath) . "/" . $OldXmlName . "SAT." . $OldExtensionXml;
     if ($_FILES['xml']['error'] != UPLOAD_ERR_OK) {
         XML::XmlResponse("Error", 0, "<p>" . $_FILES['xml']['error'] . '</p>');
         return;
     }
     if ($_FILES['xml']['pdf'] != UPLOAD_ERR_OK) {
         XML::XmlResponse("Error", 0, "<p>" . $_FILES['xml']['error'] . '</p>');
         return;
     }
     if (!file_exists($XmlPath)) {
         XML::XmlResponse("Error", 0, "<p><b>Error</b> no existe el Xml a reemplazar</p>");
         return 0;
     }
     if (!file_exists($OldPathSatReceipt)) {
         XML::XmlResponse("Error", 0, "<p><b>Error</b> no existe el comprobante de validación del Xml</p>");
         return 0;
     }
     /* Validación del mismo nombre del xml y el pdf */
     if (file_exists($PdfNewPath) and file_exists($XmlNewPath)) {
         if (strcasecmp($NewPdfName, $NewXmlName) != 0) {
             XML::XmlResponse("Error", 0, "<p>El Pdf y el Xml deben tener el mismo nombre</p>");
             return 0;
         }
     }
     $ReadXml = new Read_factura_cliente();
     $Validation = new webservice_sat();
     $ValidationXml = $ReadXml->validacion_estructura($XmlPath);
     if ($ValidationXml != 1) {
         XML::XmlResponse("Error", 0, "<p><b>Error</b> el xml es inválido</p>");
         return 0;
     }
     $XmlDetail = $ReadXml->GetDetail($XmlNewPath);
     $ValidateXml = $Validation->valida_cfdi($XmlDetail['emisor']['rfc'], $XmlDetail['receptor']['rfc'], $XmlDetail['encabezado']['total'], $XmlDetail['timbreFiscalDigital']['UUID']);
     if (!is_object($ValidateXml)) {
         XML::XMLReponse("Error", 0, "<p><b>Error</b> el xml es inválido</p>");
         return 0;
     }
     /* Se crea el directorio donde se almacenan las actualizaciones de un CFDI */
     if (!file_exists(dirname($XmlPath) . "/copias")) {
         mkdir(dirname($XmlPath) . "/copias", 0777, true);
     }
     /* Se mueve el antiguo xml y se sube el nuevo reemplazando la ruta del antiguo xml */
     $NewRouteDestinationXml = dirname($XmlPath) . "/copias/" . basename($XmlPath);
     if (file_exists($NewRouteDestinationXml)) {
         //                echo "ya existe el xml en la ruta destino<br><br>";
         $OldXmlName = pathinfo($this->RenameFile(dirname($NewRouteDestinationXml), basename($NewRouteDestinationXml)), PATHINFO_FILENAME);
         //                echo "<p>Nuevo nombre $NewName</p>";
         $NewRouteDestinationXml = dirname($NewRouteDestinationXml) . "/{$OldXmlName}.{$OldExtensionXml}";
     }
     if (!rename($XmlPath, $NewRouteDestinationXml)) {
         XML::XmlResponse("Error", 0, "<p><b>Error</b>al trasladar el xml antiguo al histórico de copias</p>");
         return 0;
     }
     if (!move_uploaded_file($XmlNewPath, $XmlPath)) {
         XML::XmlResponse("Error", 0, "<p><b>Error</b>al trasladar el nuevo Xml a su ruta correspondiente</p>");
         return 0;
     }
     /* Se mueve el comprobante SAT al directorio de copias */
     $NewPathSatReceipt = dirname($NewRouteDestinationXml) . "/" . $OldXmlName . "SAT.xml";
     if (!rename($OldPathSatReceipt, $NewPathSatReceipt)) {
         XML::XmlResponse("Error", 0, "<p><b>Error</b>al trasladar el comprobante de validación antiguo al histórico de copias</p>");
         return 0;
     }
     $NewSatReceipt = dirname($XmlPath) . "/" . $oldSatReceiptName . "SAT.{$OldExtensionXml}";
     $ValidateXml->save($NewSatReceipt);
     /* Sí existe un PDF este se mueve a copias */
     $NewRouteDestinationPdf = dirname($XmlPath) . "/copias";
     if (file_exists($PdfPath)) {
         $NewPdfPath = $NewRouteDestinationPdf . "/" . $OldXmlName . "." . $OldExtensionPdf;
         if (!rename($PdfPath, $NewPdfPath)) {
             XML::XmlResponse("Error", 0, "<p><b>Error</b>al trasladar el xml antiguo al histórico de copias</p>");
             return 0;
         }
     }
     /* Sí se adjunta un nuevo pdf se introduce en la ruta del XML */
     if (file_exists($PdfNewPath)) {
         $NewPdfPath = dirname($XmlPath) . "/" . $OldPdfName . ".{$OldExtensionPdf}";
         if (!move_uploaded_file($PdfNewPath, $NewPdfPath)) {
             XML::XmlResponse("Error", 0, "<p><b>Error</b>al trasladar el nuevo PDF a su ruta correspondiente</p>");
             return 0;
         }
     }
     $NewIdReceipt = $receipt->InsertValidationCfdi($TableName, $ValidateXml, $NewPathSatReceipt);
     $historical = new Historical();
     $NewIdHistorical = $historical->InsertHistorical($TableName, $IdUser, $IdCfdi, $NewIdReceipt, $NewRouteDestinationXml, $NewRouteDestinationPdf . "/" . $OldXmlName . "." . $OldExtensionPdf, $FileState);
     if ($NewIdHistorical == 0) {
         return 0;
     }
     if ($this->UpdateMetadatas($TableName, $IdCfdi, $XmlDetail, $XmlPath, $PdfPath) != 1) {
         return 0;
     }
     $doc = new DOMDocument('1.0', 'utf-8');
     $doc->formatOutput = true;
     $root = $doc->createElement('Update');
     $doc->appendChild($root);
     $mensaje_ = $doc->createElement('Mensaje', '<p>Datos actualizados con éxito</p>');
     $root->appendChild($mensaje_);
     $Fecha = $doc->createElement("Fecha", $XmlDetail['encabezado']['fecha']);
     $root->appendChild($Fecha);
     $Folio = $doc->createElement("Folio", $XmlDetail['encabezado']['folio']);
     $root->appendChild($Folio);
     $Subtotal = $doc->createElement("subTotal", $XmlDetail['encabezado']['subTotal']);
     $root->appendChild($Subtotal);
     $Total = $doc->createElement("Total", $XmlDetail['encabezado']['total']);
     $root->appendChild($Total);
     header("Content-Type:text/xml");
     echo $doc->saveXML();
     //        $log = new Log();
     //        $log->write_line(8,$IdUser,$IdCfdi,$key);/* Registro Log */
 }
Exemple #3
0
 private function GetXmlStructure()
 {
     $XmlPath = filter_input(INPUT_POST, "XmlPath");
     $content = filter_input(INPUT_POST, "content");
     $IdLogin = filter_input(INPUT_POST, "IdLogin");
     if (file_exists($XmlPath)) {
         $xml_contents = file_get_contents($XmlPath);
         $xml_ = preg_replace("/(<\\/?)(\\w+):([^>]*>)/", "\$1\$2\$3", $xml_contents);
         $xml = simplexml_load_string($xml_);
         header('Content-Type: text/xml');
         echo $xml->saveXML();
         $log = new Log();
         if ($content == 'nomina') {
             $clave_log = 1;
         }
         if ($content == 'cliente') {
             $clave_log = 2;
         }
         if ($content == 'proveedor') {
             $clave_log = 3;
         }
         //            $log->write_line(18, $IdLogin, 0 , $clave_log);/* Registro Log */
     } else {
         XML::XMLReponse("Error", 0, "<p><b>Error</b>, no existe el documento solicitado.</p>");
     }
 }