Implementados botones de imprimir factura y exportar lineas pedido

This commit is contained in:
imnavajas
2024-08-17 18:37:13 +02:00
parent 1170852209
commit d8eefcf1b7
5 changed files with 128 additions and 16 deletions

View File

@ -717,6 +717,14 @@ $routes->group(
} }
); );
$routes->group(
'export-lineas',
['namespace' => 'App\Controllers\Excel'],
function ($routes) {
$routes->get('generar/(:num)', 'PrintLineas::generateExcel/$1', ['as' => 'lineasToExcel']);
}
);
$routes->group( $routes->group(
'buscadorpresupuestos', 'buscadorpresupuestos',
['namespace' => 'App\Controllers\Presupuestos'], ['namespace' => 'App\Controllers\Presupuestos'],

View File

@ -0,0 +1,70 @@
<?php
namespace App\Controllers\Excel;
use App\Controllers\BaseController;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
class PrintLineas extends BaseController
{
public function generateExcel($factura_id = null)
{
// Modelos
$lineasFacturaModel = model('App\Models\Facturas\FacturaLineaModel');
$infoLineasFactura = $lineasFacturaModel->getResourceForExcel($factura_id)->get()->getResultObject();
// Crear un nuevo Spreadsheet
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Especificar encabezados
$headers = [
'Factura',
'ID Pedido',
'Ref. Cliente',
'Base'
];
// Establecer los encabezados en la primera fila
$column = 'A';
foreach ($headers as $header) {
$sheet->setCellValue($column . '1', $header);
$column++;
}
// Rellenar las filas con datos
$rowNumber = 2; // Empezar en la segunda fila
foreach ($infoLineasFactura as $infoLineaFactura) {
$column = 'A';
foreach ($infoLineaFactura as $cell) {
$sheet->setCellValue($column . $rowNumber, $cell);
$column++;
}
$rowNumber++;
}
// Ajustar automáticamente el tamaño de las columnas
foreach (range('A', $column) as $col) {
$sheet->getColumnDimension($col)->setAutoSize(true);
}
// Crear un escritor para guardar el archivo
$writer = new Xlsx($spreadsheet);
// Configurar la respuesta para descarga
$fileName = 'lineas-pedido.xlsx';
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $fileName . '"');
header('Cache-Control: max-age=0');
// Escribir el archivo a la salida
$writer->save('php://output');
exit;
}
}

View File

@ -97,6 +97,32 @@ class FacturaLineaModel extends \App\Models\BaseModel {
return $builder; return $builder;
} }
/**
* Get resource data for creating PDFs.
*
* @param string $search
*
* @return \CodeIgniter\Database\BaseBuilder
*/
public function getResourceForExcel($factura_id = -1)
{
$builder = $this->db
->table($this->table . " t1")
->select(
"t2.numero AS ref_factura,
t3.pedido_id AS pedido_id,
t4.referencia_cliente AS referencia_cliente,
t1.base AS base"
)
->join("facturas t2", "t2.id = t1.factura_id", "left")
->join("pedidos_linea t3", "t3.id = t1.pedido_linea_impresion_id", "left")
->join("presupuestos t4", "t4.id = t3.presupuesto_id", "left")
->where("t1.factura_id", $factura_id)
->where("t1.deleted_at", null);
return $builder;
}
public function addFacturaPedidoLinea($factura_id, $pedido_linea_id, $cantidad) public function addFacturaPedidoLinea($factura_id, $pedido_linea_id, $cantidad)
{ {

View File

@ -192,14 +192,14 @@
</button> </button>
<?php endif; ?> <?php endif; ?>
<button <?= anchor(
type="button" route_to("lineasToExcel", $facturaEntity->id),
class="btn btn-label-primary float-start me-sm-3 me-1" '<span class="ti-xs ti ti-file-spreadsheet me-1"></span>' .
name="exportar_lineas" lang("Facturas.exportarLineas"),
id="exportar_lineas" > [
<span class="ti-xs ti ti-file-spreadsheet me-1"></span> "class" => "btn btn-label-primary float-start me-sm-3 me-1",
<?= lang("Facturas.exportarLineas") ?> ]
</button> ) ?>
<button <button
type="button" type="button"

View File

@ -44,13 +44,21 @@
value="<?= lang("Facturas.borrarFactura") ?>" value="<?= lang("Facturas.borrarFactura") ?>"
/> />
<?php endif; ?> <?php endif; ?>
<input type="button" <?= anchor(
class="btn btn-info float-start me-sm-3 me-1" route_to("facturaToPdf", $facturaEntity->id),
id="imprimirFactura" lang("Facturas.imprimirFactura"),
name="imprimirFactura" [
value="<?= lang("Facturas.imprimirFactura") ?>" "class" => "btn btn-info float-start me-sm-3 me-1",
/> "target" => "_blank"
<?= anchor(route_to("facturasList"), lang("Basic.global.back"), ["class" => "btn btn-secondary float-start"]) ?> ]
) ?>
<?= anchor(
route_to("facturasList"),
lang("Basic.global.back"),
[
"class" => "btn btn-secondary float-start"
]
) ?>
</div><!-- /.card-footer --> </div><!-- /.card-footer -->
</form> </form>
</div><!-- //.card --> </div><!-- //.card -->