0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { $i--; $j--; } if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; } if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) { $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; } // Try main.inc.php using relative path if (!$res && file_exists("../main.inc.php")) { $res = @include "../main.inc.php"; } if (!$res && file_exists("../../main.inc.php")) { $res = @include "../../main.inc.php"; } if (!$res && file_exists("../../../main.inc.php")) { $res = @include "../../../main.inc.php"; } if (!$res) { die("Include of main fails"); } require_once(DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'); require_once(DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'); require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; // Se incluye la libreria FPDF. dol_include_once('/cfdimx/class/facturacfdimx.class.php'); dol_include_once('/cfdimx/lib/fpdf/fpdf.php'); dol_include_once('/cfdimx/lib/numero_a_letra.php'); dol_include_once('/cfdimx/lib/phpqrcode/qrlib.php'); $id = (GETPOST('id') != "") ? GETPOST('id') : GETPOST('facid'); $route = GETPOST('route'); global $conf, $langs, $db; $langs->load("bills"); class cfdiPDF extends FPDF { var $widths; var $aligns; var $data; var $emisor; var $receptor; var $datoscomprobante; var $pago_id; var $factura_id; public function limpiar($cadena){ $cadena = str_replace("á","á",$cadena); $cadena = str_replace("Á","Á",$cadena); $cadena = str_replace("é","é",$cadena); $cadena = str_replace("É","É",$cadena); $cadena = str_replace("í","í",$cadena); $cadena = str_replace("Í","Í",$cadena); $cadena = str_replace("ó","ó",$cadena); $cadena = str_replace("Ó","Ó",$cadena); $cadena = str_replace("ú","ú",$cadena); $cadena = str_replace("Ú","Ú",$cadena); return $cadena; } function SetData($id) { global $db, $conf, $langs; $langs->load('main'); // print $this->pago_id; // die; $sql_pagos = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_recepcion_pagos"; $sql_pagos .= " WHERE fk_facture = 0 AND entity = ".$conf->entity; $sql_pagos .= " AND fk_paiement = ".$this->pago_id; // print $sql_pagos; // die; $res_pagos = $db->query($sql_pagos); if($db->num_rows($res_pagos) > 0){ while ($obj = $db->fetch_object($res_pagos)) { $datos["version"] = $conf->global->CFDIMX_VERSION_SAT; $datos["uuid"] = $obj->uuid; $datos["moneda"] = 'XXX'; $datos["cadena"] = $obj->cadena; $datos["selloCFD"] = $obj->selloCFD; $datos["selloSAT"] = $obj->sello; $datos["fechaTimbrado"] = $obj->fecha_emision."T".$obj->hora_emision; $datos["certificado"] = $obj->certificado; $datos["certEmisor"] = $obj->certEmisor; $datos["u4dig"] = ""; $datos["fechaEmision"] = $obj->fecha_emision."T".$obj->hora_emision; $datos["coccds"] = "||1.1|".$datos["uuid"]."|".$datos["fechaTimbrado"]."|".$datos["selloCFD"]."|".$datos["certificado"]."||"; #Nuevos Campos para CFDI 4.0 $datos["rfc"] = ""; $datos["usocfdi"] = ""; $datos["nombre"] = ""; $datos["codigopostal"] = ""; $datos["regimenfiscal"] = ""; } } $this->data = $datos; //Informacion Emisor $sql_direccion = 'SELECT rowid, emisor_calle, emisor_noext, emisor_noint, emisor_colonia, emisor_delompio, codigo_postal, pais, estado FROM '.MAIN_DB_PREFIX.'cfdimx_emisor_datacomp WHERE emisor_rfc="'.$conf->global->MAIN_INFO_SIREN.'" AND entity_id = '.$conf->entity; $res_direccion = $db->query($sql_direccion); while ($res_dir = $db->fetch_object($res_direccion)) { $rfc = utf8_decode($conf->global->MAIN_INFO_SIREN); // $razon_social = utf8_decode($conf->global->MAIN_INFO_SOCIETE_NOM); $razon_social = mb_strtoupper(utf8_decode($conf->global->CFDIMX_RAZON_SOCIAL)); $regimen = $conf->global->CFDIMX_REGIMEN_FISCAL; $label_regimen = $this->_obtener_catalogo($regimen, 1); $cp = $conf->global->MAIN_INFO_SOCIETE_ZIP; $separa_pais = explode(":",$conf->global->MAIN_INFO_SOCIETE_COUNTRY); $pais = utf8_decode($separa_pais[2]); $separa_estado = explode(':', $conf->global->MAIN_INFO_SOCIETE_STATE); $state_id = $separa_estado[0]; $estado = utf8_decode(($state_id == 1070) ? "Ciudad de ".getState($separa_estado[0], 2) : getState($separa_estado[0], 2)); $municipio = utf8_decode($res_dir->emisor_delompio); $calle = utf8_decode($res_dir->emisor_calle); $colonia = utf8_decode($res_dir->emisor_colonia); $noint = $res_dir->emisor_noint; $noext = $res_dir->emisor_noext; $direccion_pdf = ""; $direccion_pdf .= ($calle != '' ? $calle." " : ''); $direccion_pdf .= ($noint != '' ? $noint." " : ''); $direccion_pdf .= ($noext != '' ? $noext." " : ''); $direccion_pdf .= ($colonia != '' ? $colonia." " : ''); if($conf->global->CFDIMX_DIRECCION != ""){ if(is_numeric($conf->global->CFDIMX_DIRECCION)){ }else{ $direccion_pdf = $conf->global->CFDIMX_DIRECCION; } } $direccion_pdf2 = ""; if($municipio != ''){ $direccion_pdf2 .= $municipio; } if($estado != ''){ $direccion_pdf2 .= ($direccion_pdf2 != '' ? ", ".$estado : ''); } if($pais != ''){ $direccion_pdf2 .= ($direccion_pdf2 != '' ? ", ".$pais : ''); } if($cp != ''){ $direccion_pdf2 .= ($direccion_pdf2 != '' ? ", CP. ".$cp : ''); } $informacion_emisor = array( "emisorRFC" => $rfc, "emisorRegimen" => $regimen, "emisorRegimenEtiqueta" => $label_regimen, "nombre" => $razon_social, "calle" => $calle, "colonia" => $colonia, "noExterior" => $noext, "noInterior" => $noint, "municipio" => $municipio, "estado" => $estado, "pais" => $pais, "codigoPostal" => $cp, "direccion_pdf" => $direccion_pdf, "direccion_pdf2" => $direccion_pdf2 ); } $this->emisor = $informacion_emisor; //Informacion Factura $factura = new Facture($db); $factura->fetch($id); // print 'id :: '.$id; // print 'factura_id :: '.$this->factura_id; // print 'pago_id :: '.$this->pago_id; //die; $tipoComprobante = "P"; $observaciones = $factura->note_public; $moneda = $datos["moneda"]; // $forma_pago = "99"; // $label_formapago = $forma_pago." - Por Definir"; // $sql_head_cartaporte = ''; // $sql_head_cartaporte = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_facture_carta_porte WHERE facid = ".$id." AND entity =".$conf->entity; // $res_head_cartaporte = $db->query($sql_head_cartaporte); // $num_head_cartaporte = $db->num_rows($res_head_cartaporte); // if($num_head_cartaporte > 0){ // $obj_head_cartaporte = $db->fetch_object($res_head_cartaporte); // // $tipoComprobante = ($obj_head_cartaporte->entrada_salida == 'Entrada' ? 'I' : 'T'); // if($tipoComprobante == 'T'){ // $moneda = "XXX"; // $factura->array_options["options_formpagcfdi"] = ""; // $label_formapago = ""; // $factura->mode_reglement_code = ""; // $factura->cond_reglement_code = ""; // } // } // print $factura->mode_reglement_code.'
'; // if($factura->mode_reglement_code != ''){ // $forma_pago = $factura->mode_reglement_code; // // $forma_pago = "01"; // $label_formapago = $this->_obtener_catalogo($forma_pago, 4002); // } ##Nuevo catalogo de formas pago // if(isset($factura->array_options["options_formapago"])){ // if($tipoComprobante != 'T'){ // $label_formapago = $this->_obtener_catalogo($factura->array_options["options_formapago"], 4007); // } // } // $label_condicionpago = $this->_obtener_catalogo($factura->cond_reglement_code, 4003); // $label_metodopago = ""; // if($factura->array_options["options_formpagcfdi"] != ""){ // if($factura->array_options["options_formpagcfdi"] == 'PUE'){ // $label_metodopago = "PUE - Pago en una sola Exhibición"; // }else{ // $label_metodopago = "PPD - Pago en Parcialidades o Diferido"; // } // } $label_usocfdi = $this->_obtener_catalogo($conf->global->CFDIMX_USOCFDI_PAGOS, 2); // $label_cfditiporelacion = $this->_obtener_catalogo($factura->array_options["options_cfdidoctiporelacion"], 4005); // $tipoCambio = (isset($factura->array_options["options_tipodecambiocfdi"]) ? $factura->array_options["options_tipodecambiocfdi"] : 0); #Nuevos Campos para CFDI 4.0 $clave_exportacion = "01"; $label_moneda = ""; if($moneda == "MXN" || $moneda == "USD"){ $label_moneda = "$"; } $datos_comprobante = array( "tipoDeComprobante" => $tipoComprobante, // "formaDePago" => $label_formapago, // "condicionesDePago" => $label_condicionpago, // "metodoDePago" => $label_metodopago, "usoCFDI" => $label_usocfdi, // "tipoRelacion" => $label_cfditiporelacion, "moneda" => $moneda, "label_moneda" => $label_moneda, // "tipoCambio" => $tipoCambio, "observaciones" => $observaciones, "clave_exportacion" => $clave_exportacion, "version_cfdi" => $datos["version"] ); $this->datoscomprobante = $datos_comprobante; // print '
'; print_r($datos_comprobante); print '
'; // die; //Informacion Receptor $cliente = new Societe($db); $cliente->fetch($factura->socid); $rfc_receptor = $cliente->idprof1; $domicilioReceptor = new FacturaCFDI($db); $objdomicilioRepcetor = $domicilioReceptor->getDomicilioFiscalCliente($factura->socid, 0); // print '
'; print_r($objdomicilioRepcetor); print '
'; die; #Campos para CFDI 3.3 if(strcmp($conf->global->CFDIMX_VERSION_SAT, "3.3") == 0){ $nombre_receptor = $cliente->nom; $cp_receptor = $cliente->zip; $direccion_receptor_pdf = ""; $direccion_receptor_pdf .= ($cliente->address != '' ? $cliente->address." " : ''); $direccion_receptor_pdf2 = ""; if($cliente->state != ''){ $direccion_receptor_pdf2 .= ($direccion_receptor_pdf2 != '' ? ", ".$cliente->state : $cliente->state); } if($cliente->country != ''){ $direccion_receptor_pdf2 .= ($direccion_receptor_pdf2 != '' ? ", ".$cliente->country : $cliente->country); } if($cliente->zip != ''){ $direccion_receptor_pdf2 .= ($direccion_receptor_pdf2 != '' ? ", CP. ".$cliente->zip : ''); } $estado_receptor = $cliente->state; $pais_receptor = $cliente->country; $regimen_receptor = ""; }else{ $nombre_receptor = $objdomicilioRepcetor["nombre"]; $cp_receptor = $objdomicilioRepcetor["cp"]; $direccion_receptor_pdf = $objdomicilioRepcetor["direccion"]; $direccion_receptor_pdf2 = ""; if($objdomicilioRepcetor["estado"] != ''){ $direccion_receptor_pdf2 .= ($direccion_receptor_pdf2 != '' ? ", ".$objdomicilioRepcetor["estado"] : $objdomicilioRepcetor["estado"]); } if($objdomicilioRepcetor["pais"] != '' && $objdomicilioRepcetor["pais"] != -1){ $direccion_receptor_pdf2 .= ($direccion_receptor_pdf2 != '' ? ", ".$objdomicilioRepcetor["pais"] : $objdomicilioRepcetor["pais"]); } if($objdomicilioRepcetor["cp"] != ''){ $direccion_receptor_pdf2 .= ($direccion_receptor_pdf2 != '' ? ", CP. ".$objdomicilioRepcetor["cp"] : "CP. ".$objdomicilioRepcetor["cp"]); } $estado_receptor = $objdomicilioRepcetor["estado"]; $pais_receptor = $objdomicilioRepcetor["pais"]; $regimen_receptor = $this->_obtener_catalogo($objdomicilioRepcetor["regimenfiscal"], 1); $rfc_receptor = $objdomicilioRepcetor["rfc"]; } $informacion_receptor = array( "rfc" => $rfc_receptor, "nombre" => $nombre_receptor, "email" => $cliente->email, // "calle" => $cliente->address, // "noint" => '', // "noext" => '', "codigoPostal" => $cp_receptor, // "cod_municipio" => $cliente->options_cce_codmunicipio, "estado" => $estado_receptor, "pais" => $pais_receptor, "direccion_pdf" => $direccion_receptor_pdf, "direccion_pdf2" => $direccion_receptor_pdf2, "ref_client" => $factura->ref_client, "regimenfiscal" => $regimen_receptor ); $this->receptor = $informacion_receptor; } function SetWidths($w){ //Set the array of column widths $this->widths=$w; } function SetAligns($a){ //Set the array of column alignments $this->aligns=$a; } #Esta sección de código es el algoritmo que se utiliza para la creación y distribución de la tabla de partidas de la factura (Inicio) function Row($data){ //Calculate the height of the row $nb=0; for($i=0;$iNbLines($this->widths[$i],$data[$i])); $h=5.1*$nb;#el valor de 5.1 es para el height del rectangulo $y_tmp = (int) $this->GetY() + $h; if($y_tmp > 255){ $this->AddPage(); $this->SetFont('Arial','B', 8); $this->Ln(5); //Dibujar recuadro $this->SetDrawColor(16,120,179); $this->SetFillColor(16,120,179); $this->RoundedRect($this->GetX(),$this->GetY()+1,190,5,3,'DF','1234'); //Cabeceras de tabla de partidas $this->SetTextColor(255,255,255); $this->Cell(16,7,"Clave",0,0,'C'); $this->Cell(12,7,"Cant.",0,0,'C'); $this->Cell(10,7,"Unidad",0,0,'C'); $this->Cell(64,7,utf8_decode("Descripción"),0,0,'C'); $this->Cell(22,7,"Precio Unitario",0,0,'C'); $this->Cell(22,7,"I.V.A.",0,0,'C'); $this->Cell(22,7,"Dto.",0,0,'C'); $this->Cell(22,7,"Importe",0,0,'C'); $this->Ln(); $this->SetTextColor(0,0,0); } $this->SetFont('Arial','', 7); for($i=0;$iwidths[$i]; $a=isset($this->aligns[$i]) ? $this->aligns[$i] : 'L'; //Save the current position $x=$this->GetX(); $y=$this->GetY(); //Draw the border $this->Rect($x,$y,$w,$h); //Print the text $this->MultiCell($w,4,$data[$i],0,$a);#el valor de 5 es el interlineado entre renglones del texto //Put the position to the right of the cell $this->SetXY($x+$w,$y); } //Go to the next line if ($h >= 100) { #Esta condición no es parte del algoritmo original, fue agregado $h=$h-20; } $this->Ln($h); } // function CheckPageBreak($h){ // //If the height h would cause an overflow, add a new page immediately // if($this->GetY()+$h>$this->PageBreakTrigger) // $this->AddPage($this->CurOrientation); // } function NbLines($w,$txt){ //Computes the number of lines a MultiCell of width w will take $cw=&$this->CurrentFont['cw']; if($w==0) $w=$this->w-$this->rMargin-$this->x; $wmax=($w-2*$this->cMargin)*1000/$this->FontSize; $s=str_replace("\r",'',$txt); $nb=strlen($s); if($nb>0 and $s[$nb-1]=="\n") $nb--; $sep=-1; $i=0; $j=0; $l=0; $nl=1; while($i<$nb) { $c=$s[$i]; if($c=="\n") { $i++; $sep=-1; $j=$i; $l=0; $nl++; continue; } if($c==' ') $sep=$i; $l+=$cw[$c]; if($l>$wmax) { if($sep==-1) { if($i==$j) $i++; } else $i=$sep+1; $sep=-1; $j=$i; $l=0; $nl++; } else $i++; } return $nl; } #Esta sección de código es el algoritmo que se utiliza para la creación y distribución de la tabla de partidas de la factura (Fin) #Sección de código que hace las celdas con esquinas redondeadas (Inicio) function RoundedRect($x, $y, $w, $h, $r, $style = '', $angle = '1234'){ $k = $this->k; $hp = $this->h; if($style=='F') $op='f'; elseif($style=='FD' or $style=='DF') $op='B'; else $op='S'; $MyArc = 4/3 * (sqrt(2) - 1); $this->_out(sprintf('%.2f %.2f m', ($x+$r)*$k, ($hp-$y)*$k )); $xc = $x+$w-$r; $yc = $y+$r; $this->_out(sprintf('%.2f %.2f l', $xc*$k, ($hp-$y)*$k )); if (strpos($angle, '2')===false) $this->_out(sprintf('%.2f %.2f l', ($x+$w)*$k, ($hp-$y)*$k )); else $this->_Arc($xc + $r*$MyArc, $yc - $r, $xc + $r, $yc - $r*$MyArc, $xc + $r, $yc); $xc = $x+$w-$r; $yc = $y+$h-$r; $this->_out(sprintf('%.2f %.2f l', ($x+$w)*$k, ($hp-$yc)*$k)); if (strpos($angle, '3')===false) $this->_out(sprintf('%.2f %.2f l', ($x+$w)*$k, ($hp-($y+$h))*$k)); else $this->_Arc($xc + $r, $yc + $r*$MyArc, $xc + $r*$MyArc, $yc + $r, $xc, $yc + $r); $xc = $x+$r; $yc = $y+$h-$r; $this->_out(sprintf('%.2f %.2f l', $xc*$k, ($hp-($y+$h))*$k)); if (strpos($angle, '4')===false) $this->_out(sprintf('%.2f %.2f l', ($x)*$k, ($hp-($y+$h))*$k)); else $this->_Arc($xc - $r*$MyArc, $yc + $r, $xc - $r, $yc + $r*$MyArc, $xc - $r, $yc); $xc = $x+$r ; $yc = $y+$r; $this->_out(sprintf('%.2f %.2f l', ($x)*$k, ($hp-$yc)*$k )); if (strpos($angle, '1')===false) { $this->_out(sprintf('%.2f %.2f l', ($x)*$k, ($hp-$y)*$k )); $this->_out(sprintf('%.2f %.2f l', ($x+$r)*$k, ($hp-$y)*$k )); } else $this->_Arc($xc - $r, $yc - $r*$MyArc, $xc - $r*$MyArc, $yc - $r, $xc, $yc - $r); $this->_out($op); } function _Arc($x1, $y1, $x2, $y2, $x3, $y3){ $h = $this->h; $this->_out(sprintf('%.2f %.2f %.2f %.2f %.2f %.2f c ', $x1*$this->k, ($h-$y1)*$this->k, $x2*$this->k, ($h-$y2)*$this->k, $x3*$this->k, ($h-$y3)*$this->k)); } #Sección de código que hace las celdas con esquinas redondeadas (Fin) #Funciones de armado de PDF (Inicio) // Función para mostrar el cuadro de cabecera del comprobante function Header() { global $db, $conf, $mysoc, $langs; $this->SetY(7); $pagcid = GETPOST("pagcid"); $this->pago_id = $pagcid; $id = (GETPOST('facid') != "") ? GETPOST('facid') : GETPOST('id'); $sql_pago_head = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_recepcion_pagos"; $sql_pago_head .= " WHERE fk_paiement = ".$pagcid; $sql_pago_head .= " AND fk_facture = 0"; $sql_pago_head .= " AND entity = ".$conf->entity; $res_pago_head = $db->query($sql_pago_head); $num_pago_head = $db->num_rows($res_pago_head); if($num_pago_head > 0){ $obj_pago_head = $db->fetch_object($res_pago_head); $sql_pago = "SELECT fk_facture FROM ".MAIN_DB_PREFIX."cfdimx_recepcion_pagos_relacion_facturas"; $sql_pago .= " WHERE fk_relacion_pagos=".$obj_pago_head->rowid; $res_pago = $db->query($sql_pago); $num_pago = $db->num_rows($res_pago); //print $sql_pago.'

'; // $soc_id = 0; // $fk_facture = 0; if($num_pago > 0){ $obj_pago = $db->fetch_object($res_pago); $id = $obj_pago->fk_facture; $this->factura_id = $id; // $id = $fk_facture; } } // $id = (GETPOST('facid') != "") ? GETPOST('facid') : GETPOST('id'); $this->SetData($id); // die; $object = new Facture($db); $object->fetch($id); $logo_valido = 0; $logo = $conf->mycompany->dir_output.'/logos/'.$mysoc->logo; if ($mysoc->logo) { if (is_readable($logo)) { $posx = 10; $posy = 6; $width = 20; $height = 17; $this->Image($logo, $posx, $posy, $width, $height); // width=0 (auto) $logo_valido = 1; } } // $sql='SELECT IFNULL(tipo_document,NULL) as tipo_document FROM '.MAIN_DB_PREFIX.'cfdimx_type_document WHERE fk_facture='.$id; // $reset=$db->query($sql); // $res=$db->fetch_object($reset); // if($res->tipo_document != NULL){ // if($res->tipo_document==1){ // $tipo_doc = "Factura"; // } // if($res->tipo_document==2){ // $tipo_doc = "Recibo de Honorarios"; // } // if($res->tipo_document==3){ // $tipo_doc = "Recibo de Arrendamiento"; // } // if($res->tipo_document==4){ // $tipo_doc = utf8_decode("Nota de Crédito"); // } // if($res->tipo_document==5){ // $tipo_doc = "Factura de Fletes"; // } // if($res->tipo_document==6){ // $tipo_doc = "Factura RIF"; // } // if($res->tipo_document==7){ // $tipo_doc = "Factura Traslado"; // } // }else{ // $tipo_doc="Factura"; // } $tipo_doc = "Complemento de Pagos"; $pago = new Paiement($db); $pago->fetch($pagcid); $this->SetFont('Arial','B',7); $this->SetX(139); $this->Cell(60,4, $tipo_doc.": ".$pago->ref,"",1,'C');// LRT $this->SetX(139); $this->Cell(60,4,"FOLIO FISCAL (UUID)","",1,'C');// LR $this->SetFont('Arial','',7); $this->SetX(139); $this->Cell(60,4, $this->data["uuid"],"",1,'C');// LR $this->SetFont('Arial','B',7); $this->SetX(139); $this->Cell(60,4,"NO. DE SERIE DEL CERTIFICADO DEL SAT","",1,'C');// LR $this->SetFont('Arial','',7); $this->SetX(139); $this->Cell(60,4, $this->data["certificado"],"",1,'C');// LR $this->SetFont('Arial','B',7); $this->SetX(139); $this->Cell(60,4,"NO. DE SERIE DEL CERTIFICADO DEL EMISOR","",1,'C');// LR $this->SetFont('Arial','',7); $this->SetX(139); $this->Cell(60,4, $this->data["certEmisor"],"",1,'C');// LR $this->SetFont('Arial','B',7); $this->SetX(139); $this->Cell(60,4,utf8_decode("FECHA Y HORA DE CERTIFICACION"),"",1,'C');// LR $this->SetFont('Arial','',7); $this->SetX(139); $this->Cell(60,4, $this->data["fechaTimbrado"],"",1,'C');// LR $this->SetFont('Arial','B',7); $this->SetX(139); $this->Cell(60,4,utf8_decode("FECHA Y HORA DE EMISION DEL CFDI"),"",1,'C');// LR $this->SetFont('Arial','',7); $this->SetX(139); $this->Cell(60,4, $this->data["fechaEmision"],"",1,'C');// LRB $this->SetX(139); $this->Cell(60,4,"",0,0,'L'); $this->SetDrawColor(16,120,179); $this->SetFillColor(194,229,243); $this->RoundedRect(138,$this->GetY()-45,62,45, 5,'D'); //$x,$y,$w,$h //Inicia Informacion Emisor //Dibujar recuadro $this->SetDrawColor(16,120,179); $this->SetFillColor(16,120,179); $this->RoundedRect(10,25,125,5,3,'DF','1234'); $this->SetTextColor(255,255,255); $this->Ln(); $this->SetFont('Arial','B',9); $this->SetXY(10, 26); $this->Cell(75,4," Emisor",0,0,'L'); $this->SetTextColor(0,0,0); $this->Ln(5); $this->SetFont('Arial','B',8); //Datos Emisor $this->SetXY(10, 31); $this->Cell(80,4,utf8_decode($this->limpiar($this->emisor["nombre"])),0,0,'L'); $this->SetXY(10, 35); $this->Cell(80,4,$this->emisor["emisorRFC"],0,0,'L'); if($this->emisor["emisorRegimen"] == 625){ $this->SetFont('Arial','B',7); } $this->SetXY(10, 39); $this->Cell(80,4,utf8_decode($this->limpiar($this->emisor["emisorRegimenEtiqueta"])),0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY(10, 43); $this->Cell(80,4,utf8_decode($this->limpiar($this->emisor["direccion_pdf"])),0,0,'L'); $this->SetXY(10, 47); $this->Cell(80,4,utf8_decode($this->limpiar($this->emisor["direccion_pdf2"])),0,0,'L'); //Dibujar recuadro $this->SetDrawColor(16,120,179); $this->SetFillColor(16,120,179); $this->RoundedRect(10,$this->GetY()-17,125,21,2,'D','1234'); //Termina Informacion Emisor $this->Ln(3); } // Función para mostrar el cuadro de datos del receptor function _pageReceptor($x, $y) { //Dibujar recuadro $this->SetDrawColor(16,120,179); $this->SetFillColor(16,120,179); $this->RoundedRect($this->GetX(),$this->GetY()+1,190,5,3,'DF','1234'); $this->SetTextColor(255,255,255); $this->Ln(); $this->SetFont('Arial','B',9); $this->SetXY($x, $this->GetY()-2); $this->Cell(75,4," Receptor",0,0,'L'); $this->SetTextColor(0,0,0); $this->SetFont('Arial','B',8); $this->SetXY($x, $y+7); $this->Cell(80,4,utf8_decode($this->limpiar($this->receptor["nombre"])),0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x, $y+11); $this->Cell(80,4,$this->receptor["rfc"],0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+60, $y+11); $this->Cell(75,4,"Uso CFDI: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+75, $y+11); $this->Cell(75,4,utf8_decode($this->limpiar($this->datoscomprobante["usoCFDI"])),0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+135, $y+11); $this->Cell(75,4,utf8_decode($this->limpiar($this->receptor["ref_client"])),0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x, $y+15); $this->Cell(80,4,utf8_decode($this->limpiar($this->receptor["regimenfiscal"])),0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x, $y+19); $this->Cell(80,4,utf8_decode($this->limpiar($this->receptor["direccion_pdf"])),0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x, $y+23); $this->Cell(80,4,utf8_decode($this->limpiar($this->receptor["direccion_pdf2"])),0,0,'L'); //Dibujar recuadro $this->SetDrawColor(16,120,179); $this->SetFillColor(16,120,179); $this->RoundedRect(10,$this->GetY()-17,190,22,2,'D','1234'); $this->SetY($this->GetY()+2); $this->Ln(); } //Funcion para mostrar el cuadro de la información del Pago function _infoPago($x, $y){ global $db, $conf; //Dibujar recuadro $this->SetDrawColor(16,120,179); $this->SetFillColor(16,120,179); $this->RoundedRect($this->GetX(),$this->GetY()+1,190,5,3,'DF','1234'); $this->SetTextColor(255,255,255); $this->Ln(); $this->SetFont('Arial','B',9); $this->SetXY($x, $this->GetY()-2); $this->Cell(75,4," Pago",0,0,'L'); $this->SetTextColor(0,0,0); $pago = new Paiement($db); $pago->fetch($this->pago_id); $sql_info_pago = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_recepcion_pagos"; $sql_info_pago .= " WHERE"; $sql_info_pago .= " fk_facture = 0"; $sql_info_pago .= " AND fk_paiement = ".$this->pago_id; $sql_info_pago .= " AND entity = ".$conf->entity; $res_info_pago = $db->query($sql_info_pago); $fecha = ""; $forma_pago = ""; $moneda = ""; $monto = ""; $tipocambio = ""; if($res_info_pago){ $obj_info_pago = $db->fetch_object($res_info_pago); $fecha = $obj_info_pago->fechaPago; $forma_pago = $this->_obtener_catalogo($obj_info_pago->formaDePago, 3); $moneda = $obj_info_pago->monedaP; $monto = $obj_info_pago->monto; $tipocambio = $obj_info_pago->TipoCambioP; } //Fila 1 $this->SetFont('Arial','B',8); $this->SetXY($x, $y+7); $this->Cell(75,4,"Tipo Comprobante: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+27, $y+7); $this->Cell(75,4,$this->datoscomprobante["tipoDeComprobante"],0,0,'L'); $label_etiqueta1 = ""; $valor_etiqueta1 = ""; $label_etiqueta2 = ""; $valor_etiqueta2 = ""; if(strcmp($this->datoscomprobante["version_cfdi"], "4.0") == 0){ $label_etiqueta1 = "Version CFDI: "; $valor_etiqueta1 = $this->datoscomprobante["version_cfdi"]; $label_etiqueta2 = "Exportacion: "; $valor_etiqueta2 = $this->datoscomprobante["clave_exportacion"]; }else{ $label_etiqueta1 = "Version CFDI: "; $valor_etiqueta1 = "3.3"; } $this->SetFont('Arial','B',8); $this->SetXY($x+45, $y+7); $this->Cell(75,4,$label_etiqueta1,0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+65, $y+7); $this->Cell(75,4,$valor_etiqueta1,0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+90, $y+7); $this->Cell(75,4,$label_etiqueta2,0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+108, $y+7); $this->Cell(75,4,$valor_etiqueta2,0,0,'L'); ##Fila 2 $this->SetFont('Arial','B',8); $this->SetXY($x, $y+11); $this->Cell(75,4,"Ref: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+7, $y+11); $this->Cell(75,4,$pago->ref,0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+45, $y+11); $this->Cell(75,4,"Monto: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+55, $y+11); $this->Cell(75,4,$monto,0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+80, $y+11); $this->Cell(75,4,"Tipo de Cambio: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+103, $y+11); $this->Cell(75,4,$tipocambio,0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+128, $y+11); $this->Cell(75,4,"Moneda: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+141, $y+11); $this->Cell(75,4,$moneda,0,0,'L'); ##Fila 3 $this->SetFont('Arial','B',8); $this->SetXY($x, $y+15); $this->Cell(75,4,"Fecha: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+10, $y+15); $this->Cell(75,4,$fecha,0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+45, $y+15); $this->Cell(75,4,"Forma de Pago: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+67, $y+15); $this->Cell(75,4,utf8_decode($this->limpiar($forma_pago)),0,0,'L'); $total_retenidos = 0; $sql_doc_rel = "SELECT sum(importe) AS importe FROM ".MAIN_DB_PREFIX."cfdimx_pagos_impuestos"; $sql_doc_rel .= " WHERE fk_pago = ".$this->pago_id; $sql_doc_rel .= " AND entity = ".$conf->entity; $sql_doc_rel .= " AND impuesto = '001'"; $res_doc_rel = $db->query($sql_doc_rel); if($res_doc_rel){ $obj_retenidos = $db->fetch_object($res_doc_rel); if(!is_null($obj_retenidos->importe)){ $total_retenidos = $obj_retenidos->importe; } } $total_traslados = 0; $sql_doc_rel = "SELECT sum(importe) AS importe FROM ".MAIN_DB_PREFIX."cfdimx_pagos_impuestos"; $sql_doc_rel .= " WHERE fk_pago = ".$this->pago_id; $sql_doc_rel .= " AND entity = ".$conf->entity; $sql_doc_rel .= " AND impuesto = '002'"; $res_doc_rel = $db->query($sql_doc_rel); if($res_doc_rel){ $obj_traslados = $db->fetch_object($res_doc_rel); if(!is_null($obj_traslados->importe)){ $total_traslados = $obj_traslados->importe; } } ##Fila 4 $this->SetFont('Arial','B',8); $this->SetXY($x, $y+19); $this->Cell(75,4,"Total: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+10, $y+19); $this->Cell(75,4,$pago->amount,0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+45, $y+19); $this->Cell(75,4,"Imp. Ret.: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+60, $y+19); $this->Cell(75,4,$total_retenidos,0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+90, $y+19); $this->Cell(75,4,"Imp. Tras.: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+105, $y+19); $this->Cell(75,4,$total_traslados,0,0,'L'); //Dibujar recuadro $this->SetDrawColor(16,120,179); $this->SetFillColor(16,120,179); $this->RoundedRect(10,$this->GetY()-13,190,18,2,'D','1234'); $this->SetY($this->GetY()+1); $this->Ln(); } //Funcion para mostrar el cuadro de la información del Pago function _docRelacionados($x, $y){ global $db, $conf, $langs; $langs->load("cfdimx@cfdimx"); //Dibujar recuadro $this->SetDrawColor(16,120,179); $this->SetFillColor(16,120,179); $this->RoundedRect($this->GetX(),$this->GetY()+1,190,5,3,'DF','1234'); $this->SetTextColor(255,255,255); $this->Ln(); $this->SetFont('Arial','B',9); $this->SetXY($x, $this->GetY()-2); $this->Cell(75,4," Documentos Relacionados",0,0,'L'); $this->SetTextColor(0,0,0); $pago = new Paiement($db); $pago->fetch($this->pago_id); $sql_info_pago = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_recepcion_pagos"; $sql_info_pago .= " WHERE"; $sql_info_pago .= " fk_facture = 0"; $sql_info_pago .= " AND fk_paiement = ".$this->pago_id; $sql_info_pago .= " AND entity = ".$conf->entity; $res_info_pago = $db->query($sql_info_pago); if($res_info_pago){ $obj_info_pago = $db->fetch_object($res_info_pago); $sql_doc_rel = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_recepcion_pagos_docto_relacionado"; $sql_doc_rel .= " WHERE fk_recepago = ".$obj_info_pago->rowid; $sql_doc_rel .= " AND entity = ".$conf->entity; $sql_doc_rel .= " ORDER BY rowid DESC"; $res_doc_rel = $db->query($sql_doc_rel); $num_doc_rel = $db->num_rows($res_doc_rel); if($num_doc_rel > 0){ $y = $this->GetY()+4; while($obj_doc_rel = $db->fetch_object($res_doc_rel)){ $sql_impuestos_guardados = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_pagos_impuestos"; $sql_impuestos_guardados .= " WHERE"; $sql_impuestos_guardados .= " entity = ".$conf->entity; $sql_impuestos_guardados .= " AND fk_pago = ".$this->pago_id; $sql_impuestos_guardados .= " AND uuid_doc_rel = '".$obj_doc_rel->idDocumento."'"; $sql_impuestos_guardados .= " ORDER BY tipo, impuesto ASC"; $res_impuestos_guardados = $db->query($sql_impuestos_guardados); $num_impuestos_guardados = $db->num_rows($res_impuestos_guardados); $num_impuestos = 0; if($num_impuestos_guardados > 0){ $num_impuestos_guardados += 5; $num_impuestos = $num_impuestos_guardados * 4; } $y_tmp = (int)$y + 10; $y_tmp = $y_tmp + $num_impuestos; if($y_tmp > 271){ $this->AddPage(); $this->SetY(54); //Dibujar recuadro $this->SetDrawColor(16,120,179); $this->SetFillColor(16,120,179); $this->RoundedRect($this->GetX(),$this->GetY()+1,190,5,3,'DF','1234'); $this->SetTextColor(255,255,255); $this->Ln(); $this->SetFont('Arial','B',9); $this->SetXY($x, $this->GetY()-2); $this->Cell(75,4," Documentos Relacionados",0,0,'L'); $this->SetTextColor(0,0,0); // $x = $this->GetX(); $y = $this->GetY()+4; } $ref_doc = ""; if($obj_doc_rel->serie != ""){ $ref_doc .= $obj_doc_rel->serie; } if($obj_doc_rel->folio != ""){ if($ref_doc != "") $ref_doc .= "-"; $ref_doc .= $obj_doc_rel->folio; } ##Columna 1 $this->SetFont('Arial','B',8); $this->SetXY($x, $y+1); $this->Cell(75,4,"Ref: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+6, $y+1); $this->Cell(75,4,$ref_doc,0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+35, $y+1); $this->Cell(75,4,"UUID: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+44, $y+1); $this->Cell(75,4,$obj_doc_rel->idDocumento,0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+105, $y+1); $this->Cell(75,4,"Moneda: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+118, $y+1); $this->Cell(75,4,$obj_doc_rel->monedaDR,0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+135, $y+1); $this->Cell(75,4,"Tipo de Cambio: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+158, $y+1); $this->Cell(75,4,$obj_doc_rel->tipoCambioDR ,0,0,'L'); ##Columna 2 $this->SetFont('Arial','B',8); $this->SetXY($x, $y+5); $this->Cell(75,4,"No Parcialidad: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+21, $y+5); $this->Cell(75,4,$obj_doc_rel->numParcialidad,0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+30, $y+5); $this->Cell(75,4,"ImpSaldoAnt: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+49, $y+5); $this->Cell(75,4,$obj_doc_rel->impSaldoAnt,0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+70, $y+5); $this->Cell(75,4,"ImpPagado: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+87, $y+5); $this->Cell(75,4,$obj_doc_rel->impPagado,0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+110, $y+5); $this->Cell(75,4,"ImpSaldoInsoluto: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+136, $y+5); $this->Cell(75,4,$obj_doc_rel->impSaldoInsoluto,0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+155, $y+5); $this->Cell(75,4,"Equivalencia: ",0,0,'L'); $this->SetFont('Arial','',8); $this->SetXY($x+174, $y+5); $this->Cell(75,4,$obj_doc_rel->equivalencia,0,0,'L'); ##Inicia desglose de Impuestos if($num_impuestos_guardados > 0){ //Dibujar recuadro $this->SetDrawColor(194,229,243); $this->SetFillColor(194,229,243); $this->RoundedRect($x+8,$y+13,165,5,3,'DF',''); $this->Ln(); $this->SetFont('Arial','B',8); $this->SetXY($x+8, $y+14); $this->Cell(75,4," Impuestos Relacionados",0,0,'L'); $this->SetDrawColor(194,229,243); $this->SetFillColor(194,229,243); $this->RoundedRect($x+8,$y+18,165,5,3,'DF',''); $this->SetFont('Arial','B',8); $this->SetXY($x+8, $y+18); $this->Cell(75,4,"Tipo",0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+30, $y+18); $this->Cell(75,4,"Base",0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+60, $y+18); $this->Cell(75,4,"Impuesto",0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+90, $y+18); $this->Cell(75,4,"Tipo Factor",0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+120, $y+18); $this->Cell(75,4,"Tasa O Cuota",0,0,'L'); $this->SetFont('Arial','B',8); $this->SetXY($x+150, $y+18); $this->Cell(75,4,"Importe",0,0,'L'); $y2 = $y + 18; while($obj_imp_g = $db->fetch_object($res_impuestos_guardados)){ $y2 += 5; $this->SetFont('Arial','',8); $this->SetXY($x+8, $y2); $this->Cell(75,4,$langs->trans("TipoImpPDF".$obj_imp_g->tipo),0,0,'L'); $this->SetXY($x+30, $y2); $this->Cell(75,4,$obj_imp_g->base,0,0,'L'); $this->SetXY($x+60, $y2); $this->Cell(75,4,$langs->trans("Imp".$obj_imp_g->impuesto),0,0,'L'); $this->SetXY($x+90, $y2); $this->Cell(75,4,$obj_imp_g->tipo_factor,0,0,'L'); $this->SetXY($x+120, $y2); $this->Cell(75,4,$obj_imp_g->tasa_o_cuota,0,0,'L'); $this->SetXY($x+150, $y2); $this->Cell(75,4,$obj_imp_g->importe,0,0,'L'); } } ##Termina desglose de Impuestos $num_y = 10 + $num_impuestos; $tamanio = 10 + $num_impuestos; // Dibujar recuadro $this->SetDrawColor(16,120,179); $this->SetFillColor(194,229,243); $this->RoundedRect($x,$y,190,$tamanio,2,'D','1234'); $y = $y + $num_y; // Dibujar recuadro // $this->SetDrawColor(16,120,179); // $this->SetFillColor(16,120,179); // $this->RoundedRect(10,$this->GetY()-5,190,10,2,'D','1234'); // $this->SetY($this->GetY()+1); } $this->Ln(5); } } } // Función para mostrar el cuadro de observaciones del comprobante function _pageObservaciones($x, $y) { $this->SetY($this->GetY()+1); $antesMulticel = $this->GetY(); //Dibujar recuadro $this->SetDrawColor(16,120,179); $this->SetFillColor(16,120,179); $this->RoundedRect($this->GetX(),$this->GetY()+1,190,5,3,'DF','1234'); $this->SetTextColor(255,255,255); $this->SetFont('Arial','B',9); $this->SetXY($x, $this->GetY()+2); $this->Cell(75,4," Observaciones",0,0,'L'); $this->Ln(); $this->SetTextColor(0,0,0); $this->SetFont('Arial','',8); $this->MultiCell(190,4,utf8_decode($this->datoscomprobante["observaciones"]),0, "L", false); $this->Ln(); $despuesMulticel = $this->GetY(); $tam_cuadro = ($despuesMulticel - $antesMulticel)-4; //Dibujar recuadro $this->SetDrawColor(16,120,179); $this->SetFillColor(194,229,243); $this->RoundedRect($this->GetX(),$this->GetY()-$tam_cuadro+2,190,$tam_cuadro,2,'D','1234'); // $this->Ln(); $this->SetY($this->GetY()+3); } ##CFDIS relacionados function _pageCFDIRel($x, $y){ global $db, $conf; $pagcid = GETPOST("pagcid"); // $this->pago_id = $pagcid; // $id = (GETPOST('facid') != "") ? GETPOST('facid') : GETPOST('id'); $sql_pago_head = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_recepcion_pagos"; $sql_pago_head .= " WHERE fk_paiement = ".$pagcid; $sql_pago_head .= " AND fk_facture = 0"; $sql_pago_head .= " AND entity = ".$conf->entity; $res_pago_head = $db->query($sql_pago_head); $num_pago_head = $db->num_rows($res_pago_head); if($num_pago_head > 0){ $obj_head_cfdi_rel = $db->fetch_object($res_pago_head); $label_tipo_rel = $this->_obtener_catalogo($obj_head_cfdi_rel->tipo_rel, 4); if(!is_null($obj_head_cfdi_rel->tipo_rel) && $obj_head_cfdi_rel->tipo_rel != -1){ ##Se valida que el complemento tenga cfdi relacionados $sql_valida_cfdi_rel = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_cfdi_relacionados_pagos"; $sql_valida_cfdi_rel .= " WHERE fk_pago = " .$pagcid; $res_valida_cfdi_rel = $db->query($sql_valida_cfdi_rel); $valida_cfdi_rel = $db->num_rows($res_valida_cfdi_rel); if($valida_cfdi_rel > 0){ $this->SetY($this->GetY()+2); $antesMulticel = $this->GetY(); //Dibujar recuadro $this->SetDrawColor(16,120,179); $this->SetFillColor(16,120,179); $this->RoundedRect($this->GetX(),$this->GetY()+1,190,5,3,'DF','1234'); $this->SetTextColor(255,255,255); $this->SetFont('Arial','B',9); $this->SetXY($x, $this->GetY()+2); $this->Cell(75,4,utf8_decode($this->limpiar(" CFDIS Relacionados - ".$label_tipo_rel)),0,0,'L'); $this->Ln(); $this->SetTextColor(0,0,0); $this->SetFont('Arial','',8); $txt_cfdi_relacionados = ""; $contador = 1; while($cfdi_rel = $db->fetch_object($res_valida_cfdi_rel)){ if($contador < $valida_cfdi_rel){ $txt_cfdi_relacionados .= $contador.'.- '.$cfdi_rel->uuid."\n"; }else{ $txt_cfdi_relacionados .= $contador.'.- '.$cfdi_rel->uuid; } $contador++; } $this->MultiCell(190,4,utf8_decode($txt_cfdi_relacionados),0, "L", false); $this->Ln(); $despuesMulticel = $this->GetY(); $tam_cuadro = ($despuesMulticel - $antesMulticel)-4; $tam_cuadro2 = ($despuesMulticel - $antesMulticel)-10; //Dibujar recuadro $this->SetDrawColor(16,120,179); $this->SetFillColor(194,229,243); $this->RoundedRect($this->GetX(),$this->GetY()-$tam_cuadro+2,190,$tam_cuadro2,2,'D','1234'); $this->SetY($this->GetY()-3); } } } } // Código QR y cadena function _pageQRCode(){ global $conf, $db; // $id = (GETPOST('facid') != "") ? GETPOST('facid') : GETPOST('id'); // $object = new Facture($db); // $object->fetch($id); $pago_id = $this->pago_id; $pago=new Paiement($db); $pago->fetch($pago_id); $data_cbb = 'https://verificacfdi.facturaelectronica.sat.gob.mx/default.aspx?id='.$this->data["uuid"].'&re='.$this->emisor["emisorRFC"].'&rr='.$this->receptor["rfc"].'&tt=0&fe='.substr($this->data["selloCFD"],-8); QRcode::png($data_cbb,$conf->facture->dir_output."/".$pago->ref."/Pago_".$this->data["uuid"].".png"); //$this->CheckPageBreak(20); if((int)$this->GetY() > 220){ $this->AddPage(); } $this->Image($conf->facture->dir_output."/".$pago->ref."/Pago_".$this->data["uuid"].".png",162, $this->GetY()+9,42); if((int)$this->GetX() == 20){ $nueva_cc_x = $this->GetX()-10; }else{ $nueva_cc_x = $this->GetX(); } $this->SetTextColor(0,0,0); $this->SetFont('Arial','',6); $this->SetY($this->GetY()+13); $this->MultiCell(150,4,"\n".$this->data["selloCFD"],0, "L", false); $this->SetY($this->GetY()-16); $this->SetFont('Arial','B',6); $this->Cell(20,4,utf8_decode("SELLO DIGITAL DEL EMISOR"),0,0,'L'); $this->SetY($this->GetY()+16); $this->SetFont('Arial','',6); $this->MultiCell(150,4,"\n".$this->data["selloSAT"],0, "L", false); $this->SetY($this->GetY()-16); $this->SetFont('Arial','B',6); $this->Cell(20,4,utf8_decode("SELLO DIGITAL DEL SAT"),0,0,'L'); $this->SetY($this->GetY()+16); $this->SetFont('Arial','',6); $this->MultiCell(150,4,"\n".$this->data["coccds"],0, "L", false); // $this->MultiCell(150,4,"\n".$this->data["cadena"],0, "L", false); $this->SetY($this->GetY()-20); $this->SetFont('Arial','B',6); $this->Cell(20,4,utf8_decode("CADENA ORIGINAL DEL COMPLEMENTO DE CERTIFICACION DIGITAL DEL SAT"),0,0,'L'); $this->SetY($this->GetY()+20); //Dibujar recuadro $this->SetDrawColor(16,120,179); $this->SetFillColor(194,229,243); $this->RoundedRect($this->GetX(),$this->GetY()-53,150,55,2,'D','1234'); } function _obtener_catalogo($codigo='', $tipo_catalogo, $tipo_sql = ''){ global $langs, $db; $langs->load('main'); $out=''; switch ($tipo_catalogo) { case 1: $sql = "SELECT * FROM ".MAIN_DB_PREFIX."c_cfdimx_regimen_f WHERE code = '".$codigo."'"; break; case 2: $sql = "SELECT * FROM ".MAIN_DB_PREFIX."c_cfdimx_uso_cfdi WHERE code = '".$codigo."'"; break; case 3: $sql = "SELECT * FROM ".MAIN_DB_PREFIX."c_cfdimx_formapago WHERE code = '".$codigo."'"; break; case 4: $sql = "SELECT * FROM ".MAIN_DB_PREFIX."c_cfdimx_tipo_rel WHERE code = '".$codigo."'"; break; default: $sql = ""; break; } $res_catalogo_sql = $db->query($sql); if ($res_catalogo_sql ) { $num = $db->num_rows($res_catalogo_sql); $i = 0; if ($num) { while ($obj_catalogo = $db->fetch_object($res_catalogo_sql )) { $valor = $obj_catalogo->code; $etiqueta = $valor." - ".$obj_catalogo->label; if($valor == $codigo){ $out = $etiqueta; break; } } } }else{ dol_print_error($db); } return $out; } // Page footer function Footer() { // Go to 1.5 cm from bottom $this->SetY(-15); // Select Arial italic 8 $this->SetFont('Arial','I',6); // Print current and total page numbers $this->Cell(0,10,utf8_decode('Este documento es una representación gráfica de un CFDI - Página ').$this->PageNo().'/{nb}',0,0,'C'); } #Funciones de armado de PDF (Fin) } $pagcid = GETPOST("pagcid"); $cfdi_commit = $_GET['cfdi_commit']; $action_pdf = GETPOST("action_pdf"); $pdf=new cfdiPDF(); $pdf->AddPage(); $pdf->AliasNbPages(); $pdf->SetFont('Arial','',14); //Table with n rows and 6 columns add columns PDF $pdf->SetWidths(array(16,12,10,64,22,22,22,22)); $pdf->SetAligns(array('C','C','C','L','R','R','R','R')); $pdf->SetFont('arial','B',10); //$pdf->SetFillColor(0,0,0);//Fondo verde de celda $pdf->SetTextColor(0, 0, 0); //Letra color negro $pago = new Paiement($db); $pago->fetch($pagcid); // $pdf->SetY($pdf->GetY()+5); // $pdf->_pageDatosComprobante($pdf->GetX(), $pdf->GetY()); $pdf->SetY($pdf->GetY()+5); $pdf->_pageReceptor($pdf->GetX(), $pdf->GetY()); // $pdf->SetY($pdf->GetY()+5); $pdf->_pageCFDIRel($pdf->GetX(), $pdf->GetY()); // if ($object->note_public != "") { // $pdf->SetY($pdf->GetY()+1); // $pdf->_pageObservaciones($pdf->GetX(), $pdf->GetY()); // } $pdf->SetY($pdf->GetY()+2); $pdf->SetFont('Arial','B', 8); //Dibujar recuadro $pdf->SetDrawColor(16,120,179); $pdf->SetFillColor(16,120,179); $pdf->RoundedRect($pdf->GetX(),$pdf->GetY()+1,190,5,3,'DF','1234'); //Cabeceras de tabla de partidas $pdf->SetTextColor(255,255,255); $pdf->Cell(16,7,"Clave",0,0,'C'); $pdf->Cell(12,7,"Cant.",0,0,'C'); $pdf->Cell(10,7,"Unidad",0,0,'C'); $pdf->Cell(64,7,utf8_decode("Descripción"),0,0,'C'); $pdf->Cell(22,7,"Precio Unitario",0,0,'C'); $pdf->Cell(22,7,"I.V.A.",0,0,'C'); $pdf->Cell(22,7,"Dto.",0,0,'C'); $pdf->Cell(22,7,"Importe",0,0,'C'); $pdf->Ln(); $pdf->SetTextColor(0,0,0); if(strcmp($conf->global->CFDIMX_VERSION_SAT, "4.0") == 0){ $pdf->Row( array( "84111506", 1, "ACT", trim("Pago"), $pdf->datoscomprobante["label_moneda"]." ".number_format(0,2), $pdf->datoscomprobante["label_moneda"]." ".number_format(0,2), $pdf->datoscomprobante["label_moneda"]." ".number_format(0,2), $pdf->datoscomprobante["label_moneda"]." ".number_format(0,2) ) ); }else{ $pdf->Row( array( "84111506", 1, "ACT", trim("Pago"), $pdf->datoscomprobante["label_moneda"]." ".number_format(0,2), $pdf->datoscomprobante["label_moneda"]." ".number_format(0,2), $pdf->datoscomprobante["label_moneda"]." ".number_format(0,2), $pdf->datoscomprobante["label_moneda"]." ".number_format(0,2) ) ); } $pdf->Ln(); $pdf->_infoPago($pdf->GetX(), $pdf->GetY()); $pdf->Ln(); $pdf->_docRelacionados($pdf->GetX(), $pdf->GetY()); $pdf->_pageQRCode(); // $pdf->_pageCartaPorte(); $pdf->Output($conf->facture->dir_output."/".$pago->ref."/Pago_".$pdf->data['uuid'].".pdf", 'F'); // print ""; if($action_pdf == 1){ print ""; }else{ print ""; } // if ($route == "genera") { // header('Location: facture.php?facid='.$pago->id.'&cfdi_commit='.$cfdi_commit.''); // }else { // print ''; // } ?>