public function getPdfReporteMensual() { $_POST['fano'] = $_GET['fano']; $_POST['fmes'] = $_GET['fmes']; // $string = $this->getFacturasReporteMensual(); $sql = $this->db->query("SELECT rfc, serie, folio, no_aprobacion, EXTRACT(YEAR from fecha) as anio, fecha, total, importe_iva, status\r\n\t\t\t\t\t\t\t\t\tFROM facturacion\r\n\t\t\t\t\t\t\t\t\tWHERE EXTRACT(YEAR from fecha) = '{$this->input->post('fano')}' AND EXTRACT(MONTH from fecha) = '{$this->input->post('fmes')}'\r\n\t\t\t\t\t\t\t\t\tORDER BY fecha ASC\r\n\t\t\t\t\t\t\t\t"); $this->load->library('mypdf'); // Creación del objeto de la clase heredada $pdf = new MYpdf('P', 'mm', 'Letter'); $pdf->show_head = true; $pdf->titulo2 = 'Reporte Mensual'; $pdf->titulo3 = String::mes($_POST['fmes']) . " del {$_POST['fano']}\n"; //$pdf->titulo3 .= $nombre_producto; $pdf->AliasNbPages(); $pdf->AddPage(); // $links = array('', '', '', ''); $pdf->SetY(30); $aligns = array('C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'); $widths = array(25, 10, 15, 20, 24, 35, 30, 30, 18); $header = array('Rfc', 'Serie', 'Folio', 'Año', 'No Aprobación', 'Fecha', 'Total', 'IVA', 'Estado'); foreach ($sql->result() 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(5); $pdf->SetAligns($aligns); $pdf->SetWidths($widths); $pdf->Row($header, true); } $pdf->SetFont('Arial', '', 8); $pdf->SetTextColor(0, 0, 0); $datos = array($item->rfc, $item->serie, $item->folio, $item->anio, $item->no_aprobacion, str_replace('-', '/', $item->fecha), String::formatoNumero($item->total), String::formatoNumero($item->importe_iva), $item->status == 'ca' ? 'Cancelada' : 'Pagada'); $pdf->SetX(5); $pdf->SetAligns($aligns); $pdf->SetWidths($widths); $pdf->Row($datos, false); } // $pdf->SetXY(5, 30); // $pdf->SetFont('Arial','',9); // $pdf->SetAligns(array('L')); // $pdf->SetWidths(array(205)); // $pdf->Row(array($string), false, false); $pdf->Output('Reporte_Mensual_' . $_POST['fano'] . $_POST['fmes'] . '.pdf', 'I'); }
/** * Envia el email al ciente con todos los documentos que tiene asignados. * * @param string $idFactura * @return void */ public function enviarEmail($idFactura) { $this->load->library('my_email'); // Obtiene la informacion de la factura. $factura = $this->getDataFactura($idFactura); // El cliente necesita tener un email para poderle enviar los documentos. $_POST['pextras'] = isset($_POST['pextras']) ? $_POST['pextras'] : ''; if (!is_null($factura['email']) && !empty($factura['email']) || $_POST['pextras'] !== '') { ////////////////// // Datos Correo // ////////////////// $asunto = "Ha recibido una COMPROBANTE FISCAL DIGITAL de {$factura['nombre_fiscal']}"; $tipoFactura = !isset($factura['id_nc']) ? 'Factura' : 'Nota de Crédito'; // Si la factura esta timbrada if ($factura['status_timbrado'] === "t") { $altBody = "Estimado Cliente: {$factura['nombre']}. Usted está recibiendo un comprobante fiscal digital ({$tipoFactura} {$factura['serie']}-{$factura['folio']}) de\n {$factura['nombre_fiscal']}]"; $body = "\n <p>Estimado Cliente: <strong>{$factura['nombre']}</strong></p>\n <p>Usted está recibiendo un comprobante fiscal digital ({$tipoFactura} {$factura['serie']}-{$factura['folio']}) de {$factura['nombre_fiscal']}</p>\n "; } elseif ($factura['status_timbrado'] === "ca") { $altBody = "HEMOS CANCELADO EL COMPROBANTE FISCAL DIGITAL {$tipoFactura} {$factura['serie']}-{$factura['folio']}, HA QUEDADO SIN EFECTOS FISCALES PARA SU EMPRESA, POR LO QUE PEDIMOS ELIMINARLO Y NO INCLUIRLO EN SU CONTABILIDAD, YA QUE PUEDE REPRESENTAR UN PROBLEMA FISCAL PARA USTED O SU EMPRESA CUANDO EL SAT REALICE UNA FUTURA AUDITORIA EN SU CONTABILIDAD."; $body = "\n <p>Estimado Cliente: <strong>{$factura['nombre']}</strong></p>\n <p>HEMOS CANCELADO EL COMPROBANTE FISCAL DIGITAL {$tipoFactura} {$factura['serie']}-{$factura['folio']}, HA QUEDADO SIN EFECTOS FISCALES PARA SU EMPRESA, POR LO QUE PEDIMOS ELIMINARLO Y NO INCLUIRLO EN SU CONTABILIDAD, YA QUE PUEDE REPRESENTAR UN PROBLEMA FISCAL PARA USTED O SU EMPRESA CUANDO EL SAT REALICE UNA FUTURA AUDITORIA EN SU CONTABILIDAD.</p>\n "; } /*<p>Si por algun motivo, desea obtener nuevamente su factura puede descargarla directamente de nuestra pagina en la seccion Facturación.<br> <a href="http://www.chonitabananas.com/es/facturacion/">www.chonitabananas.com</a></p>*/ $body .= ' <p>Si usted desea que llegue el comprobante fiscal a otro correo electronico notifiquelo a: <br> empaquesanjorge@hotmail.com</p> <br><br> <p>De acuerdo a la reglamentación del Servicio de Administración Tributaria (SAT) publicada en el Diario Oficial de la Federación (RMISC 2004) el 31 de mayo del 2004, la factura electrónica es 100% valida y legal. A partir de ahora la entrega del documento fiscal (FACTURA ELECTRONICA) será emitida y entregada por correo electrónico a nuestros socios de negocio. Cabe destacar que la factura electrónica se entregará en formato PDF y archivo XML, el cual podrá imprimir libremente e incluirla en su contabilidad (Articulo 29, Fracción IV de CFF), resguardar la impresión y archivo XML por un periodo de 5 años. Importante: Contenido de la Factura Electrónica En el anexo 20 del Diario Oficial de la Federación, publicado el 1 de septiembre de 2004, en párrafo 2.22.8, se estipula que la impresión de la factura electrónica, que además de los datos fiscales y comerciales, deberá contener la cadena original, el certificado de sello digital, el sello digital y la leyenda: “Este documento es una representación impresa de un CFD”. <br><strong>Sistema de facturacion electrónica - Facturacion "' . $factura['nombre_fiscal'] . '"</strong></p> '; ////////////////////// // Datos del Emisor // ////////////////////// $correoEmisorEm = "*****@*****.**"; // Correo con el q se emitira el correo. $nombreEmisor = $factura['nombre_fiscal']; $correoEmisor = "*****@*****.**"; // Correo para el auth. $contrasena = "s4nj0rg3"; // Contraseña de $correEmisor //////////////////////// // Datos del Receptor // //////////////////////// $correoDestino = array(); if ($_POST['pextras'] !== '') { $correoDestino += explode(',', $_POST['pextras']); } if (isset($_POST['emails'])) { foreach ($_POST['emails'] as $email) { array_push($correoDestino, $email); } } $nombreDestino = strtoupper($factura['nombre']); $datosEmail = array('correoEmisorEm' => $correoEmisorEm, 'correoEmisor' => $correoEmisor, 'nombreEmisor' => $nombreEmisor, 'contrasena' => $contrasena, 'asunto' => $asunto, 'altBody' => $altBody, 'body' => $body, 'correoDestino' => $correoDestino, 'nombreDestino' => $nombreDestino, 'cc' => $factura['email_empresa'], 'adjuntos' => array()); // Adjuntos. // if ($factura['info']->docs_finalizados === 't' || $factura['info']->id_nc !== null) // { $this->load->model('documentos_model'); // $docs = $this->documentos_model->getClienteDocs($factura['info']->id_factura); // Si tiene documentos // if ($docs) // { $cliente = strtoupper($factura['nombre']); $fecha = explode('-', $factura['fecha']); $ano = $fecha[0]; $mes = strtoupper(String::mes(floatval($fecha[1]))); $serie = $factura['serie'] !== '' ? $factura['serie'] . '-' : ''; $folio = $factura['folio']; $pathDocs = APPPATH . "documentos/CLIENTES/{$cliente}/{$ano}/{$mes}/FACT-{$serie}{$folio}/"; // echo "<pre>"; // var_dump($pathDocs); // echo "</pre>";exit; // Scanea el directorio para obtener los archivos. $archivos = array_diff(scandir($pathDocs), array('..', '.')); $adjuntos = array(); foreach ($archivos as $arch) { $adjuntos[$arch] = $pathDocs . $arch; } $datosEmail['adjuntos'] = $adjuntos; // } // } // Envia el email. $result = $this->my_email->setData($datosEmail)->zip()->send(); $response = array('passes' => true, 'msg' => 10); if (isset($result['error'])) { $response = array('passes' => false, 'msg' => 9); } } else { $response = array('passes' => false, 'msg' => 8); } return $response; }
/** * Contruye el PDF Certificado TLC. * * @param string $idFactura * @param string $idDocumento * @return void */ public function pdfManifiestoDelCamion($idFactura, $idDocumento) { $jsonData = $this->getJsonDataDocus($idFactura, $idDocumento); $this->load->library('mypdf'); // Creación del objeto de la clase heredada $pdf = new MYpdf('P', 'mm', 'Letter'); $pdf->show_head = false; $pdf->AliasNbPages(); $pdf->AddPage(); // $pdf->SetFont('helvetica','', 8); $pdf->SetXY(60, 3); $pdf->Image(APPPATH . 'images/logo_mayer_martinez.jpg'); // LADO IZQUIERDO $pdf->SetTextColor(0, 0, 0); $pdf->SetFont('Arial', 'B', 7); $pdf->SetXY(10, 22); $pdf->Cell(100, 4, "Remitente: " . strtoupper($jsonData->remitente), 0, 0, 'L'); $pdf->SetXY(10, $pdf->GetY() + 4); $pdf->MultiCell(100, 4, "Consignatorio: " . strtoupper($jsonData->consignatorio), 0, 'L', 0); $fecha = explode('-', $jsonData->fecha_embarque); $pdf->SetXY(10, $pdf->GetY()); $pdf->Cell(100, 4, "Fecha de Embarque: " . $fecha[2] . ' DE ' . strtoupper(String::mes($fecha[1])) . ' DEL ' . $fecha[0], 0, 0, 'L'); // ------------------------- $pdf->SetXY(110, $pdf->GetY() - 8); $pdf->Cell(100, 4, "Camion Placas No: " . $jsonData->camion_placas, 0, 0, 'L'); $pdf->SetXY(110, $pdf->GetY() + 4); $pdf->Cell(100, 4, "Caja No: " . $jsonData->caja_no, 0, 0, 'L'); $pdf->SetXY(110, $pdf->GetY() + 4); $pdf->Cell(100, 4, "Linea de Transporte: " . $jsonData->linea_transporte, 0, 0, 'L'); // ------------------------ $pdf->SetFillColor(184, 78, 78); $pdf->SetTextColor(255, 255, 255); $pdf->SetFont('Arial', 'B', 9); $pdf->SetXY(10, 35); $pdf->Cell(95, 4, "TOMATES", 1, 0, 'C', 1); $pdf->SetXY(10, $pdf->GetY() + 4); $pdf->SetFont('Arial', '', 7); $pdf->SetAligns(array('C', 'C', 'C', 'C')); $pdf->SetWidths(array(40, 20, 20, 15)); $pdf->SetFillColor(255, 255, 255); $pdf->SetTextColor(0, 0, 0); $pdf->Row(array('', 'Flats', '3 Tandas', 'Cartons'), true); $tomates = array('Max/Large 44A', 'Ex. Lg./45A', 'Ex. Large 55A', 'Large/Ex. Lg. 56A', '', 'Madium/Large', 'Medium/Small', 'Sm./Ex. Sm.', 'Ex./Sm.', 'Tomatillo', 'TOTAL:'); $pdf->SetAligns(array('L')); $pdf->SetFont('Arial', '', 7); foreach ($tomates as $t) { $pdf->SetX(10); $pdf->Row(array($t, '', '', ''), false); } $pdf->SetX(10); $pdf->Cell(95, 6, "TOMATE CHERRY TOMATE ROMA", 1, 0, 'C', 1); $pdf->SetXY(10, $pdf->GetY() + 6); $pdf->SetFillColor(184, 78, 78); $pdf->SetTextColor(255, 255, 255); $pdf->SetFont('Arial', 'B', 9); $pdf->Cell(95, 4, "PEPINOS", 1, 0, 'C', 1); $pdf->SetXY(10, $pdf->GetY() + 4); $pdf->SetFillColor(255, 255, 255); $pdf->SetTextColor(0, 0, 0); $pepinos = array(array('Super select', 'Total jabas'), array('Super', 'Select'), array('Large', 'Sups/small'), array('Cartons 24s', '30s')); $pdf->SetAligns(array('L', 'L')); $pdf->SetWidths(array(48, 47)); $pdf->SetFont('Arial', '', 7); foreach ($pepinos as $p) { $pdf->SetX(10); $pdf->Row(array($p[0], $p[1]), false); } $pdf->SetXY(10, $pdf->GetY()); $pdf->SetFillColor(184, 78, 78); $pdf->SetTextColor(255, 255, 255); $pdf->SetFont('Arial', 'B', 9); $pdf->Cell(95, 4, "BERENJENA", 1, 0, 'C', 1); $pdf->SetFont('Arial', '', 7); $pdf->SetFillColor(255, 255, 255); $pdf->SetTextColor(0, 0, 0); $pdf->SetXY(10, $pdf->GetY() + 4); $pdf->Cell(35, 6, "16s", 1, 0, 'L', 1); $pdf->SetX(45); $pdf->Cell(35, 6, "24s", 1, 0, 'L', 1); $pdf->SetXY(10, $pdf->GetY() + 6); $pdf->Cell(35, 6, "18s", 1, 0, 'L', 1); $pdf->SetX(45); $pdf->Cell(35, 6, "32s", 1, 0, 'L', 1); $pdf->SetXY(80, $pdf->GetY() - 6); $pdf->Cell(25, 12, "Jabas", 1, 0, 'C', 1); $pdf->SetXY(10, $pdf->GetY() + 12); $pdf->SetFillColor(184, 78, 78); $pdf->SetTextColor(255, 255, 255); $pdf->SetFont('Arial', 'B', 9); $pdf->Cell(95, 4, "MELON", 1, 0, 'C', 1); $pdf->SetFillColor(255, 255, 255); $pdf->SetTextColor(0, 0, 0); $pdf->SetXY(10, $pdf->GetY() + 4); $pdf->Cell(60, 6, "Cantaloupe", 1, 0, 'L', 1); $pdf->SetX(70); $pdf->Cell(35, 6, "Honey Dew", 1, 0, 'L', 1); $melones = array(array('18s', '9s', '8s'), array('23s', '12s', '9s'), array('27s', '15s', '10s'), array('36s', '18s', ''), array('45s', '23s', '8s'), array('56s', '30s', '9s'), array('64s', '36s', '10s'), array('72s', '42s', ''), array('JABAS', 'CTNS.', 'TOTAL')); $pdf->SetAligns(array('L', 'L', 'L')); $pdf->SetWidths(array(32, 28, 35)); $pdf->SetFont('Arial', '', 7); $pdf->SetY($pdf->GetY() + 6); foreach ($melones as $m) { $pdf->SetX(10); $pdf->Row(array($m[0], $m[1], $m[2]), false); } // LADO DERECHO $pdf->SetXY(110, 35); $pdf->SetFillColor(184, 78, 78); $pdf->SetTextColor(255, 255, 255); $pdf->SetFont('Arial', 'B', 9); $pdf->Cell(95, 4, "CHILES", 1, 0, 'C', 1); $pdf->SetFont('Arial', '', 7); $pdf->SetFillColor(255, 255, 255); $pdf->SetTextColor(0, 0, 0); $pdf->SetXY(110, $pdf->GetY() + 4); $pdf->Cell(60, 6, "Bells", 1, 0, 'L', 1); $pdf->SetXY(110, $pdf->GetY() + 6); $pdf->Cell(60, 6, "X-Large", 1, 0, 'L', 1); $pdf->SetXY(110, $pdf->GetY() + 6); $pdf->Cell(60, 6, "Large", 1, 0, 'L', 1); $pdf->SetXY(110, $pdf->GetY() + 6); $pdf->Cell(60, 6, "Md.", 1, 0, 'L', 1); $pdf->SetXY(110, $pdf->GetY() + 6); $pdf->Cell(60, 6, "Sm.", 1, 0, 'L', 1); $pdf->SetXY(170, $pdf->GetY() - 24); $pdf->Cell(35, 30, "TOTAL JABAS", 1, 0, 'C', 1); $pdf->SetXY(110, $pdf->GetY() + 30); $pdf->Cell(95, 6, "TOTAL:", 1, 0, 'L', 1); $pdf->SetXY(110, $pdf->GetY() + 6); $pdf->Cell(95, 6, "Anaheim", 1, 0, 'L', 1); $pdf->SetXY(110, $pdf->GetY() + 6); $pdf->Cell(95, 6, "Caribe", 1, 0, 'L', 1); $pdf->SetXY(110, $pdf->GetY() + 6); $pdf->Cell(95, 6, "Fresno", 1, 0, 'L', 1); $pdf->SetXY(110, $pdf->GetY() + 6); $pdf->Cell(95, 6, "Jalapeño", 1, 0, 'L', 1); $pdf->SetXY(110, $pdf->GetY() + 6); $pdf->Cell(95, 6, "Pimiento", 1, 0, 'L', 1); $pdf->SetXY(110, $pdf->GetY() + 6); $pdf->SetAligns(array('C', 'C', 'C', 'C')); $pdf->SetWidths(array(25, 25, 25, 20)); $pdf->Row(array('', 'Jabas', 'Cajas', 'Canastos'), false); $pdf->SetX(110); $pdf->Row(array('Ejote K/L', '', '', ''), false); $pdf->SetX(110); $pdf->Row(array('Ejote Val.', '', '', ''), false); $pdf->SetX(110); $pdf->Row(array('Ejote Bush', '', '', ''), false); $pdf->SetXY(110, $pdf->GetY()); $pdf->SetFillColor(184, 78, 78); $pdf->SetTextColor(255, 255, 255); $pdf->SetFont('Arial', 'B', 9); $pdf->Cell(95, 4, "CALABAZAS", 1, 0, 'C', 1); $pdf->SetFont('Arial', '', 7); $pdf->SetFillColor(255, 255, 255); $pdf->SetTextColor(0, 0, 0); $pdf->SetXY(110, $pdf->GetY() + 4); $pdf->SetAligns(array('C', 'C', 'C', 'C')); $pdf->SetWidths(array(25, 15, 15, 15)); $pdf->Row(array('', 'X-Fancy', 'Fancy', 'Large'), false); $pdf->SetX(110); $pdf->Row(array('Italiana', '', '', ''), false); $pdf->SetX(110); $pdf->Row(array('Summer', '', '', ''), false); $pdf->SetX(110); $pdf->Row(array('Amarilla', '', '', ''), false); $pdf->SetX(110); $pdf->Row(array('Calabaza China', '', '', ''), false); $pdf->SetXY(180, $pdf->GetY() - 27); $pdf->Cell(25, 27, "TOTAL CAJAS", 1, 0, 'C', 1); // Obtenemos las clasificaciones de los pallets que se seleccionaron // para el cliente. $idEmbarque = $this->db->select('id_embarque')->from('facturacion_doc_embarque')->where('id_documento', 2)->where('id_factura', $idFactura)->get()->row()->id_embarque; $clasificaciones = $this->getEmbarqueClasifi($idEmbarque); $pdf->SetXY(110, $pdf->GetY() + 27); $pdf->SetFillColor(184, 78, 78); $pdf->SetTextColor(255, 255, 255); $pdf->SetFont('Arial', 'B', 9); $pdf->Cell(95, 4, "LIMONES", 1, 0, 'C', 1); $pdf->SetFont('Arial', '', 7); $pdf->SetFillColor(255, 255, 255); $pdf->SetTextColor(0, 0, 0); $pdf->SetXY(110, $pdf->GetY() + 4); $pdf->SetAligns(array('C', 'C', 'C')); $pdf->SetWidths(array(32, 32, 31)); $pdf->Row(array('', 'Cajas', ''), false); foreach ($clasificaciones['clasificaciones'] as $clas) { $pdf->SetX(110); $pdf->Row(array($clas->clasificacion, $clas->cajas, ''), false); } $pdf->SetXY(110, $pdf->GetY()); $pdf->SetFillColor(184, 78, 78); $pdf->SetTextColor(255, 255, 255); $pdf->SetFont('Arial', 'B', 9); $pdf->Cell(95, 4, "UVAS", 1, 0, 'C', 1); $pdf->SetFont('Arial', '', 7); $pdf->SetFillColor(255, 255, 255); $pdf->SetTextColor(0, 0, 0); $pdf->SetXY(110, $pdf->GetY() + 4); $pdf->SetAligns(array('C', 'C')); $pdf->SetWidths(array(40, 55)); $pdf->Row(array('', 'Cajas'), false); $pdf->SetX(110); $pdf->Row(array('Perlette', ''), false); $pdf->SetX(110); $pdf->Row(array('Flame', ''), false); $pdf->SetX(110); $pdf->Row(array('Cardinal', ''), false); $pdf->SetX(110); $pdf->Row(array('Thompson', ''), false); $pdf->SetFont('Arial', 'B', 10); $pdf->SetXY(10, 215); $pdf->Cell(95, 4, "Datos Adicionales al Transportista", 0, 0, 'C', 1); $pdf->SetFont('Arial', '', 10); $pdf->SetXY(10, $pdf->GetY() + 4); $pdf->Cell(95, 4, "Nombre o Razon Social: " . $jsonData->linea_transporte, 0, 0, 'L', 1); $pdf->SetXY(10, $pdf->GetY() + 4); $pdf->MultiCell(95, 4, "Domicilio Fiscal: " . $jsonData->domicilio_fiscal, 0, 'L', 0); $pdf->SetXY(10, $pdf->GetY()); $pdf->Cell(95, 4, "RFC: " . $jsonData->rfc, 0, 0, 'L', 1); $pdf->SetXY(10, $pdf->GetY() + 4); $pdf->Cell(95, 4, "CURP: " . $jsonData->curp, 0, 0, 'L', 1); $pdf->SetXY(115, 216); $pdf->Image(APPPATH . 'images/logo_mayer_martinez_pie.jpg'); return array('pdf' => $pdf, 'texto' => 'MANIFIESTO DEL CAMION.pdf'); }