Ejemplo n.º 1
0
 public function generarPDFQR($data = array(), $accion = array('F'), $update = false)
 {
     if (count($data) > 0) {
         $ci =& get_instance();
         $ci->load->library('mypdf');
         // Creacion del objeto de la clase heredada
         $pdf = new MYpdf('P', 'mm', 'Letter');
         $pdf->show_head = false;
         $pdf->AddPage();
         $pdf->SetFont('Arial', '', 8);
         $y = 40;
         if ($data['info_empresa']->logo != '') {
             $pdf->Image($data['info_empresa']->logo, 8, 12, 35);
         }
         $pdf->SetFont('Arial', 'B', 15);
         $pdf->SetXY(38, $y - 30);
         $pdf->Cell(170, 6, $data['info_empresa']->nombre_fiscal, 0, 0, 'C');
         $dir1 = $data['info_empresa']->calle != '' ? $data['info_empresa']->calle : '';
         $dir1 .= $data['info_empresa']->no_exterior != '' ? ' ' . $data['info_empresa']->no_exterior : '';
         $dir1 .= $data['info_empresa']->no_interior != '' ? '-' . $data['info_empresa']->no_interior : '';
         $dir1 .= $data['info_empresa']->colonia != '' ? ', ' . $data['info_empresa']->colonia : '';
         $dir2 = $data['info_empresa']->municipio != '' ? $data['info_empresa']->municipio : '';
         $dir2 .= $data['info_empresa']->estado != '' ? ', ' . $data['info_empresa']->estado : '';
         $dir2 .= $data['info_empresa']->cp != '' ? ', CP: ' . $data['info_empresa']->cp : '';
         $pdf->SetFont('Arial', '', 11);
         $pdf->SetXY(38, $y - 23);
         $pdf->MultiCell(170, 6, "R.F.C." . $data['info_empresa']->rfc . " \n " . $dir1 . " \n " . $dir2 . " \n " . $data['info_empresa']->regimen_fiscal . " ", 0, 'C', 0);
         $pdf->SetDrawColor(140, 140, 140);
         $pdf->SetFont('Arial', '', 9);
         $pdf->SetXY(8, $y);
         $pdf->SetTextColor(255, 0, 0);
         $pdf->Cell(170, 6, ($data['info_empresa']->telefono != '' ? "Tel. " . $data['info_empresa']->telefono : '') . ($data['info_empresa']->email != '' ? " | Email. " . $data['info_empresa']->email : '') . ($data['info_empresa']->pag_web != '' ? " | " . $data['info_empresa']->pag_web : ''), 0, 0, 'L');
         $pdf->SetTextColor(0, 0, 0);
         // ----------- FOLIO ------------------
         $pdf->SetFont('Arial', '', 13);
         $pdf->SetXY(164, $y);
         $pdf->Cell(38, 7, substr($data['fecha'], 0, 10) < '2012-10-31' ? 'Recibo de honorarios' : 'Factura', 0, 0, 'C');
         $pdf->SetXY(158, $y + 7);
         $pdf->Cell(50, 13, '', 1, 0, 'C');
         $pdf->SetFont('Arial', 'B', 11);
         $pdf->SetTextColor(255, 255, 255);
         $pdf->SetFillColor(140, 140, 140);
         $pdf->SetXY(158, $y + 7);
         $pdf->Cell(50, 5, 'Serie y Folio', 1, 0, 'C', 1);
         $pdf->SetFont('Arial', '', 12);
         $pdf->SetTextColor(255, 0, 0);
         $pdf->SetFillColor(255, 255, 255);
         $pdf->SetXY(158, $y + 12);
         $pdf->Cell(50, 8, ($data['serie'] != '' ? $data['serie'] . '-' : '') . $data['folio'], 0, 0, 'C');
         // ----------- FECHA ------------------
         $pdf->SetXY(158, $y + 21);
         $pdf->Cell(50, 13, '', 1, 0, 'C');
         $pdf->SetFont('Arial', 'B', 11);
         $pdf->SetTextColor(255, 255, 255);
         $pdf->SetFillColor(140, 140, 140);
         $pdf->SetXY(158, $y + 21);
         $pdf->Cell(50, 5, 'Fecha de Expedición', 1, 0, 'C', 1);
         $pdf->SetFont('Arial', '', 12);
         $pdf->SetTextColor(0, 0, 0);
         $pdf->SetFillColor(255, 255, 255);
         $pdf->SetXY(158, $y + 26);
         $pdf->Cell(50, 8, substr($data['fecha'], 0, 10), 1, 0, 'C', 1);
         // ----------- No y Año aprob ------------------
         $pdf->SetXY(158, $y + 35);
         $pdf->Cell(50, 13, '', 1, 0, 'C');
         $pdf->SetFont('Arial', 'B', 11);
         $pdf->SetTextColor(255, 255, 255);
         $pdf->SetFillColor(140, 140, 140);
         $pdf->SetXY(158, $y + 35);
         $pdf->Cell(50, 5, 'No. y Año aprobracion', 1, 0, 'C', 1);
         $pdf->SetFont('Arial', '', 12);
         $pdf->SetTextColor(0, 0, 0);
         $pdf->SetFillColor(255, 255, 255);
         $pdf->SetXY(158, $y + 40);
         $pdf->Cell(50, 8, $data['no_aprobacion'] . '-' . substr($data['ano_aprobacion'], 0, 4), 1, 0, 'C', 1);
         // ----------- No Certificado ------------------
         // $pdf->SetXY(158, ($y+20));
         // $pdf->Cell(50, 13, '' , 1, 0, 'C');
         // $pdf->SetFont('Arial','B',11);
         // $pdf->SetTextColor(255,255,255);
         // $pdf->SetFillColor(140,140,140);
         // $pdf->SetXY(158, ($y+20));
         // $pdf->Cell(50, 5, 'No. Certificado' , 1, 0, 'C',1);
         // $pdf->SetFont('Arial','',12);
         // $pdf->SetTextColor(255,0,0);
         // $pdf->SetFillColor(255,255,255);
         // $pdf->SetXY(158, ($y+25));
         // $pdf->Cell(50, 8, $data['no_certificado'] , 1, 0, 'C',1);
         // ----------- DATOS CLIENTE ------------------
         $pdf->SetXY(8, $y + 7);
         $pdf->Cell(149, 41, '', 1, 0, 'C');
         $pdf->SetFont('Arial', 'B', 9);
         $pdf->SetTextColor(255, 255, 255);
         $pdf->SetFillColor(140, 140, 140);
         $pdf->SetXY(8, $y + 7);
         // BLOQUE DATOS 1
         $pdf->Cell(16, 41, '', 0, 0, 'C', 1);
         $pdf->SetXY(8, $y + 9);
         $pdf->Cell(16, 6, 'R.F.C.', 0, 0, 'L');
         $pdf->SetXY(8, $y + 15);
         $pdf->Cell(16, 6, 'NOMBRE', 0, 0, 'L');
         $pdf->SetXY(8, $y + 21);
         $pdf->Cell(16, 6, 'CALLE', 0, 0, 'L');
         $pdf->SetXY(8, $y + 27);
         $pdf->Cell(16, 6, 'NUMERO', 0, 0, 'L');
         $pdf->SetXY(8, $y + 33);
         $pdf->Cell(16, 6, 'COLONIA', 0, 0, 'L');
         $pdf->SetXY(8, $y + 39);
         $pdf->Cell(16, 6, 'EDO', 0, 0, 'L');
         $pdf->SetXY(70, $y + 27);
         // BLOQUE DATOS 2
         $pdf->Cell(18, 21, '', 0, 0, 'C', 1);
         $pdf->SetXY(70, $y + 27);
         $pdf->Cell(18, 6, 'INT', 0, 0, 'L');
         $pdf->SetXY(70, $y + 33);
         $pdf->Cell(18, 6, 'MUNICIPIO', 0, 0, 'L');
         $pdf->SetXY(70, $y + 39);
         $pdf->Cell(18, 6, 'PAIS', 0, 0, 'L');
         $pdf->SetXY(117, $y + 27);
         // BLOQUE DATOS 3
         $pdf->Cell(16, 14, '', 0, 0, 'C', 1);
         $pdf->SetXY(117, $y + 27);
         $pdf->Cell(18, 6, 'C.P.', 0, 0, 'L');
         $pdf->SetXY(117, $y + 33);
         $pdf->Cell(18, 6, 'CIUDAD', 0, 0, 'L');
         $pdf->SetFont('Arial', '', 7);
         $pdf->SetTextColor(0, 0, 0);
         $pdf->SetXY(25, $y + 9);
         // BLOQUE DATOS 1 INFO
         $pdf->Cell(132, 6, strtoupper($data['crfc']), 0, 0, 'L');
         $pdf->SetXY(25, $y + 15);
         $pdf->Cell(132, 6, strtoupper($data['cnombre']), 0, 0, 'L');
         $pdf->SetXY(25, $y + 21);
         $pdf->Cell(132, 6, strtoupper($data['ccalle']), 0, 0, 'L');
         $pdf->SetXY(25, $y + 27);
         $pdf->Cell(44, 6, strtoupper($data['cno_exterior']), 0, 0, 'L');
         $pdf->SetXY(25, $y + 33);
         $pdf->Cell(44, 6, strtoupper($data['ccolonia']), 0, 0, 'L');
         $pdf->SetXY(25, $y + 39);
         $pdf->Cell(44, 6, strtoupper($data['cestado']), 0, 0, 'L');
         $pdf->SetXY(88, $y + 27);
         // BLOQUE DATOS 2 INFO
         $pdf->Cell(28, 6, strtoupper($data['cno_interior']), 0, 0, 'L');
         $pdf->SetXY(88, $y + 33);
         $pdf->Cell(28, 6, strtoupper($data['cmunicipio']), 0, 0, 'L');
         $pdf->SetXY(88, $y + 39);
         $pdf->Cell(28, 6, strtoupper($data['cpais']), 0, 0, 'L');
         $pdf->SetXY(133, $y + 27);
         // BLOQUE DATOS 3 INFO
         $pdf->Cell(24, 6, strtoupper($data['ccp']), 0, 0, 'L');
         $pdf->SetXY(133, $y + 33);
         $pdf->Cell(24, 6, strtoupper($data['cmunicipio']), 0, 0, 'L');
         // ----------- TABLA CON LOS PRODUCTOS ------------------
         $pdf->SetY($y + 50);
         $aligns = array('C', 'C', 'C', 'C');
         $widths = array(25, 109, 33, 33);
         $header = array('CANTIDAD', 'DESCRIPCION', 'PRECIO UNIT.', 'IMPORTE');
         foreach ($data['productos'] as $key => $item) {
             $band_head = false;
             if ($pdf->GetY() >= 200 || $key == 0) {
                 //salta de pagina si exede el max
                 if ($key > 0) {
                     $pdf->AddPage();
                 }
                 $pdf->SetFont('Arial', 'B', 8);
                 $pdf->SetTextColor(255, 255, 255);
                 $pdf->SetFillColor(140, 140, 140);
                 $pdf->SetX(8);
                 $pdf->SetAligns($aligns);
                 $pdf->SetWidths($widths);
                 $pdf->Row($header, true);
             }
             $pdf->SetFont('Arial', '', 10);
             $pdf->SetTextColor(0, 0, 0);
             $datos = array($item['cantidad'], $item['descripcion'], String::formatoNumero($item['precio_unit']), String::formatoNumero($item['importe']));
             $pdf->SetX(8);
             $pdf->SetAligns($aligns);
             $pdf->SetWidths($widths);
             $pdf->Row($datos, false);
         }
         //------------ SUBTOTAL, IVA ,TOTAL --------------------
         $y = $pdf->GetY();
         $pdf->SetFont('Arial', 'B', 10);
         $pdf->SetTextColor(255, 255, 255);
         $pdf->SetFillColor(140, 140, 140);
         $pdf->SetXY(144, $y + 5);
         $pdf->Cell(31, 6, 'Subtotal', 1, 0, 'C', 1);
         $pdf->SetXY(144, $y + 11);
         $pdf->Cell(31, 6, 'IVA', 1, 0, 'C', 1);
         $pdf->SetXY(144, $y + 17);
         if (isset($data['total_isr'])) {
             $pdf->Cell(31, 6, 'Retencion ISR', 1, 0, 'C', 1);
             $pdf->SetXY(144, $y + 23);
         }
         $pdf->Cell(31, 6, 'Total', 1, 0, 'C', 1);
         $pdf->SetTextColor(0, 0, 0);
         $pdf->SetFillColor(255, 255, 255);
         $pdf->SetXY(175, $y + 5);
         $pdf->Cell(33, 6, String::formatoNumero($data['subtotal'], 2), 1, 0, 'C');
         $pdf->SetXY(175, $y + 11);
         $pdf->Cell(33, 6, String::formatoNumero($data['importe_iva'], 2), 1, 0, 'C');
         $pdf->SetXY(175, $y + 17);
         if (isset($data['total_isr'])) {
             $pdf->Cell(33, 6, isset($data['total_isr']) ? String::formatoNumero($data['total_isr'], 2) : '$0.00', 1, 0, 'C');
             $pdf->SetXY(175, $y + 23);
         }
         $pdf->Cell(33, 6, String::formatoNumero($data['total'], 2), 1, 0, 'C');
         //------------ TOTAL CON LETRA--------------------
         $pdf->SetXY(8, $y + 5);
         $pdf->Cell(134, 24, '', 1, 0, 'C');
         $pdf->SetFont('Arial', 'B', 10);
         $pdf->SetTextColor(255, 255, 255);
         $pdf->SetFillColor(140, 140, 140);
         $pdf->SetXY(8, $y + 5);
         $pdf->Cell(134, 6, '	IMPORTE CON LETRA', 0, 0, 'L', 1);
         $pdf->SetFont('Arial', '', 8);
         $pdf->SetTextColor(0, 0, 0);
         $pdf->SetXY(9, $y + 12);
         $pdf->MultiCell(130, 6, $data['total_letra'], 0, 'L');
         $pdf->SetXY(9, $y + 24);
         $pdf->Cell(130, 6, "Método de Pago: {$data['metodo_pago']}" . ($data['metodo_pago'] == 'efectivo' ? '' : " | No. Cuenta: {$data['no_cuenta_pago']}"), 0, 0, 'L', 0);
         //------------ CADENA ORIGINAL --------------------
         $y += 32;
         $pdf->SetY($y);
         $pdf->SetX(8);
         $pdf->SetFont('Arial', '', 9);
         $pdf->Image($data['img_cbb'], 8, $y, 40);
         $pdf->SetX(58);
         // $pdf->SetFont('Arial','B',10);
         // $pdf->SetTextColor(255,255,255);
         // $pdf->SetFillColor(140,140,140);
         $pdf->SetAligns(array('L'));
         $pdf->SetWidths(array(150));
         $pdf->Row(array($data['leyenda1']), false, false);
         $pdf->SetX(58);
         // $pdf->SetFont('Arial','',9);
         // $pdf->SetTextColor(0,0,0);
         // $pdf->SetFillColor(255,255,255);
         $pdf->SetAligns(array('L'));
         $pdf->SetWidths(array(150));
         $pdf->Row(array($data['leyenda2'] . ' ' . substr($data['fecha'], 0, 10)), false, false);
         $pdf->SetX(58);
         $pdf->Row(array("No. SICOFI " . $data['no_aprobacion']), false, false);
         //------------ SELLO DIGITAL --------------------
         // $y = $pdf->GetY();
         // $pdf->SetY($y+3);
         // $pdf->SetX(8);
         // $pdf->SetFont('Arial','B',10);
         // $pdf->SetTextColor(255,255,255);
         // $pdf->SetFillColor(140,140,140);
         // $pdf->SetAligns(array('L'));
         // $pdf->SetWidths(array(200));
         // $pdf->Row(array('SELLO DIGITAL'), true);
         // $pdf->SetX(8);
         // $pdf->SetFont('Arial','',9);
         // $pdf->SetTextColor(0,0,0);
         // $pdf->SetFillColor(255,255,255);
         // $pdf->SetAligns(array('L'));
         // $pdf->SetWidths(array(200));
         // $pdf->Row(array($data['sello']), false);
         if ($data['fobservaciones'] != '') {
             $y = $pdf->GetY();
             $pdf->SetY($y + 3);
             $pdf->SetX(8);
             $pdf->SetFont('Arial', 'B', 10);
             $pdf->SetTextColor(255, 255, 255);
             $pdf->SetFillColor(140, 140, 140);
             $pdf->SetAligns(array('L'));
             $pdf->SetWidths(array(200));
             $pdf->Row(array('OBSERVACIONES'), true);
             $pdf->SetX(8);
             $pdf->SetFont('Arial', '', 9);
             $pdf->SetTextColor(0, 0, 0);
             $pdf->SetFillColor(255, 255, 255);
             $pdf->SetAligns(array('L'));
             $pdf->SetWidths(array(200));
             $pdf->Row(array($data['fobservaciones']), false);
         }
         // $y = $pdf->GetY();
         // $pdf->SetFont('Arial','',8);
         // $pdf->SetXY(8, $y+2);
         // $pdf->Cell(200,5,'ESTE DOCUMENTO ES UNA IMPRESIÓN DE UN COMPROBANTE FISCAL DIGITAL',0,0,'C');
         //------------ IMAGEN CANDELADO --------------------
         if (isset($data['status'])) {
             if ($data['status'] == 'ca') {
                 $pdf->Image(APPPATH . '/images/cancelado.png', 20, 40, 190, 190, "PNG");
             }
         }
         //-----------------------------------------------------------------------------------
         if (!$update) {
             $dir_anio = $this->validaDir('anio', 'facturasPDF/');
             $dir_mes = $this->validaDir('mes', 'facturasPDF/' . $dir_anio . '/');
         } else {
             $fecha = $this->obtenFechaMes($data['fecha_xml']);
             $dir_anio = $fecha[0];
             $dir_mes = $this->mesToString($fecha[1]);
         }
         if (count($accion) > 0) {
             foreach ($accion as $a) {
                 switch (strtolower($a)) {
                     case 's':
                         // VISUALIZA PDF EN WEB
                         return $pdf->Output($dir_anio . '|' . $dir_mes . '|' . $this->rfc . '-' . $data['serie'] . '-' . $this->acomodarFolio($data['folio']) . '.pdf', 'S');
                         break;
                     case 'f':
                         // GUARDA EN DIRECTORIO facturasPDF
                         $path_guardar = APPPATH . 'media/cfd/facturasPDF/' . $dir_anio . '/' . $dir_mes . '/' . $this->rfc . '-' . $data['serie'] . '-' . $this->acomodarFolio($data['folio']) . '.pdf';
                         $pdf->Output($path_guardar, 'F');
                         break;
                     case 'd':
                         // DESCARGA DIRECTA DEL PDF
                         $pdf->Output($dir_anio . '|' . $dir_mes . '|' . $this->rfc . '-' . $data['serie'] . '-' . $this->acomodarFolio($data['folio']) . '.pdf', 'D');
                         break;
                     default:
                         // VISUALIZA PDF EN WEB
                         $pdf->Output($dir_anio . '|' . $dir_mes . '|' . $this->rfc . '-' . $data['serie'] . '-' . $this->acomodarFolio($data['folio']) . '.pdf', 'I');
                 }
             }
         }
     }
 }