示例#1
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 */
 }
示例#2
0
<?php

require_once 'Transaction/Read_factura_cliente.php';
require_once 'DAO/Carga_factura_cliente.php';
$ScriptsPath = __DIR__;
if (file_exists("{$ScriptsPath}/Config/cfdv32.xsd")) {
    echo "Existe el xsd";
}
$estado = FALSE;
$read = new Read_factura_cliente();
$xml = new DOMDocument();
$xml->load($ScriptsPath . '/_root/cfdia0000000008.xml');
if ($read->validacion_estructura($ScriptsPath . '/_root/cfdia0000000008.xml')) {
    $estado = TRUE;
    echo "<p>Válido</p>";
} else {
    echo "<p>inválido</p>";
}
$xml = simplexml_load_file($ScriptsPath . '/_root/cfdia0000000008.xml');
$array = $read->detalle("{$ScriptsPath}/_root/", "cfdia0000000008.xml");
//var_dump($array);
$Full = '';
$full = GetNodes($array, $Full);
echo $full;
function GetNodes($array, $Full)
{
    foreach ($array as $value) {
        if (is_array($value)) {
            $Full = GetNodes($value, $Full);
        } else {
            $Full .= $value . ", ";