Greenter Report¶
Para elaborar una representación impresa se dispone de los formatos: HTML y PDF.
Instalar¶
composer require greenter/report
Documentos¶
Lista de documentos con reporte disponible.
- Factura
- Boleta de Venta
- Nota de Crédito
- Nota de Débito
- Guía de Remisión
- Comprobante de Retención
- Comprobante de Percepción
- Resumen diario de Boletas
- Comunicación de Bajas
- Resumen diario de Reversiones
Uso¶
Este ejemplo se base en el modelo de factura (Invoice
), para generar un reporte HTML.
<?php
use Greenter\Model\Sale\Invoice;
use Greenter\Report\Resolver\DefaultTemplateResolver;
use Greenter\Report\HtmlReport;
$invoice = new Invoice();
$invoice->setSerie('F001');
$invoice->setCorrelativo('1');
// ...
$report = new HtmlReport();
$resolver = new DefaultTemplateResolver();
$report->setTemplate($resolver->getTemplate($invoice));
$params = [
'system' => [
'logo' => file_get_contents('logo.png'), // Logo de Empresa
'hash' => 'qqnr2dN4p/HmaEA/CJuVGo7dv5g=', // Valor Resumen
],
'user' => [
'header' => 'Telf: <b>(01) 123375</b>', // Texto que se ubica debajo de la dirección de empresa
'extras' => [
// Leyendas adicionales
['name' => 'CONDICION DE PAGO', 'value' => 'Efectivo' ],
['name' => 'VENDEDOR' , 'value' => 'GITHUB SELLER'],
],
'footer' => '<p>Nro Resolucion: <b>3232323</b></p>'
]
];
$html = $report->render($invoice, $params);
echo $html;
Personalizar¶
Puedes crear tus propios reportes usando twig, puedes tener como base invoice.html.twig.
Necesitas crear un directorio con las nuevas plantillas, en este ejemplo el directorio se llama custom
.
│
├─/custom/
│ ├─ factura.html.twig
│ ├─ nota-credito.html.twig
│
│
Configuración de HtmlReport
.
<?php
use Greenter\Report\HtmlReport;
$twigOptions = [
'cache' => __DIR__ . '/cache',
'strict_variables' => true,
];
$report = new HtmlReport('/custom', $twigOptions);
$report->setTemplate('factura.html.twig');
$html = $report->render($invoice, $params);
echo $html;
Reporte en PDF¶
Para obtener una representación en formato PDF, Utilizamos wkhtmltopdf.
Instalar¶
composer require greenter/htmltopdf
Requerimientos
Este paquete require que el ejecutable wkhtmltopdf
este descargado o instalado en el host, y que el entorno de PHP permite ejecutar aplicaciones externas, es decir que el método exec
no se encuentre incluido en la configuración disable_functions
del php.ini
Puedes seguir este tutorial.
Uso¶
PdfReport
sigue el patrón Decorator, para generar el pdf a partir de HtmlReport
o cualquier otra clase que implemente ReportInterface
.
<?php
use Greenter\Report\HtmlReport;
use Greenter\Report\PdfReport;
use Greenter\Model\Sale\Invoice;
$invoice = new Invoice();
// ...
$htmlReport = new HtmlReport();
$html->setTemplate('invoice.html.twig');
$report = new PdfReport($htmlReport);
// Options: Ver mas en https://wkhtmltopdf.org/usage/wkhtmltopdf.txt
$report->setOptions( [
'no-outline',
'viewport-size' => '1280x1024',
'page-width' => '21cm',
'page-height' => '29.7cm',
]);
$report->setBinPath('wkhtmltopdf.exe'); // Ruta relativa o absoluta de wkhtmltopdf
// Los mismo parametros utilizados en HTML Report
$params = [/*...*/];
$pdf = $report->render($invoice, $params);
if ($pdf === null) {
$error = $report->getExporter()->getError();
echo 'Error: '.$error;
return;
}
file_put_contents('invoice.pdf', $pdf);