function validarSAT($destination, $fileXML) { $filename = $fileXML['name']; //Emisor $rfc_emisor = getVariableXML('//cfdi:Comprobante//cfdi:Emisor', 'rfc', $destination); //Receptor $rfc_receptor = getVariableXML('//cfdi:Comprobante//cfdi:Receptor', 'rfc', $destination); //Total $total = getVariableXML('//cfdi:Comprobante', 'total', $destination); //UUID $id = getVariableXML('//t:TimbreFiscalDigital', 'UUID', $destination); //folio $folio = getVariableXML('//cfdi:Comprobante', 'folio', $destination); //Serie $serie = getVariableXML('//cfdi:Comprobante', 'serie', $destination); //Subtotal $subtotal = getVariableXML('//cfdi:Comprobante', 'subTotal', $destination); //Total $total = getVariableXML('//cfdi:Comprobante', 'total', $destination); //Impuestos $impuestos = getVariableXML('//cfdi:Comprobante//cfdi:Impuestos', 'totalImpuestosTrasladados', $destination); //Tasa $tasa = getVariableXML('//cfdi:Comprobante//cfdi:Impuestos//cfdi:Traslados//cfdi:Traslado', 'tasa', $destination); //Retenciones $retenciones = getVariableXML('//cfdi:Comprobante//cfdi:Impuestos//cfdi:Retenciones//cfdi:Retencion', 'importe', $destination); //Path $path = path(); $finalPath = $path . $rfc_emisor . '/'; $cadena = 're=' . $rfc_emisor; $cadena .= '&rr=' . $rfc_receptor; $cadena .= '&tt=' . $total; $cadena .= '&id=' . $id; $param = array('expresionImpresa' => $cadena); try { $client = new SoapClient('https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc?wsdl'); } catch (Exception $e) { $error = $e->getMessage(); echo 'Excepción capturada: ' . $error; } $valores = $client->Consulta($param); $success = moveXML($destination, $finalPath, $filename); $response = array('codigo' => $valores->ConsultaResult->CodigoEstatus, 'estado' => $valores->ConsultaResult->Estado, 'error' => 'no', 'referencia' => '' . $serie . $folio . '', 'subtotal' => '' . $subtotal . '', 'total' => '' . $total . '', 'impuestos' => '' . $impuestos . '', 'tasa' => '' . $tasa[0] . '', 'ruta' => '' . $success . '', 'retenciones' => '' . $retenciones . '', 'uuid' => '' . $id . ''); return json_encode($response); }
$retencionISR = 0; foreach ($retenciones as $retencion) { if ($retencion == 'IVA') { $retencionIVA = $importes[$i]; } $i++; } $i = 0; foreach ($retenciones as $retencion) { if ($retencion == 'ISR') { $retencionISR = $importes[$i]; } $i++; } //Impuestos $impuestos = getVariableXML('//cfdi:Comprobante//cfdi:Impuestos', 'totalImpuestosTrasladados', $destination); // $validateDate = validateDate($fecha); // if($validateDate){ $cantidades = getMultipleXML('//cfdi:Comprobante//cfdi:Conceptos//cfdi:Concepto', 'cantidad', $destination); $unidades = getMultipleXML('//cfdi:Comprobante//cfdi:Conceptos//cfdi:Concepto', 'unidad', $destination); $identificadores = getMultipleXML('//cfdi:Comprobante//cfdi:Conceptos//cfdi:Concepto', 'noIdentificacion', $destination); $descripciones = getMultipleXML('//cfdi:Comprobante//cfdi:Conceptos//cfdi:Concepto', 'descripcion', $destination); $valoresUnitarios = getMultipleXML('//cfdi:Comprobante//cfdi:Conceptos//cfdi:Concepto', 'valorUnitario', $destination); $importes = getMultipleXML('//cfdi:Comprobante//cfdi:Conceptos//cfdi:Concepto', 'importe', $destination); for ($i = 0; $i < count($cantidades); $i++) { $results["Conceptos"][] = array('cantidad' => '' . $cantidades[$i], 'unidad' => '' . $unidades[$i], 'identificador' => '' . $identificadores[$i], 'descripcion' => '' . $descripciones[$i], 'valorUnitario' => '' . $valoresUnitarios[$i], 'importe' => '' . $importes[$i]); } $results['rfc_receptor'] = '' . $rfc_receptor . ''; $results['subTotal'] = '' . $subTotal . ''; $results['total'] = '' . $total . ''; $results['impuestos'] = '' . $impuestos . '';