Puliendo presupuesto

This commit is contained in:
imnavajas
2024-01-18 19:41:46 +01:00
parent b62a5d1b9a
commit bbea1465af
6 changed files with 62 additions and 29 deletions

View File

@ -557,7 +557,7 @@ $routes->group('presupuestodirecciones', ['namespace' => 'App\Controllers\Presup
$routes->group('printpresupuestos', ['namespace' => 'App\Controllers\Pdf'], function ($routes) {
$routes->get('', 'PrintPresupuestos::index', ['as' => 'viewPresupuesto']);
$routes->get('generar', 'PrintPresupuestos::generar', ['as' => 'presupuestoToPdf']);
$routes->get('generar/(:num)', 'PrintPresupuestos::generar/$1', ['as' => 'presupuestoToPdf']);
});

View File

@ -1,4 +1,5 @@
<?php
namespace App\Controllers\Pdf;
use App\Controllers\BaseController;
@ -6,11 +7,8 @@ use App\Controllers\BaseController;
class PrintPresupuestos extends BaseController
{
function __construct()
{
}
public function index()
public function index($id_presupuesto)
{
$presupuestoModel = model('App\Models\Presupuestos\PresupuestoModel');
@ -18,15 +16,46 @@ class PrintPresupuestos extends BaseController
$data['presupuesto'] = $presupuestoModel->getResourceForPdf(8)->get()->getRow();
return view(getenv('theme.path').'pdfs/presupuesto', $data);
return view(getenv('theme.path') . 'pdfs/presupuesto', $data);
}
public function generar(){
$dompdf = new \Dompdf\Dompdf(['isRemoteEnabled' => true]);
//$dompdf->loadHtml(view('pdf_view'));
//$dompdf->loadHtml(view(getenv('theme.path').'pdfs/presupuesto'));
$dompdf->loadHtml($this->index());
public function generar($presupuesto_id)
{
// Cargar modelos
$presupuestoModel = model('App\Models\Presupuestos\PresupuestoModel');
// Get budget information
$data['presupuesto'] = $presupuestoModel->getResourceForPdf($presupuesto_id)->get()->getRow();
// Crear una instancia de Dompdf
$options = new \Dompdf\Options();
$options->set('isHtml5ParserEnabled', true);
$options->set('isPhpEnabled', true);
$options->set('isRemoteEnabled', true);
$dompdf = new \Dompdf\Dompdf($options);
// Contenido HTML del documento
$dompdf->loadHtml(view(getenv('theme.path').'pdfs/presupuesto', $data));
// Establecer el tamaño del papel
$dompdf->setPaper('A4', 'portrait');
// Renderizar el PDF
$dompdf->render();
$dompdf->stream('presupuesto-demo.pdf');
// Obtener el contenido generado
$output = $dompdf->output();
// Establecer las cabeceras para visualizar en lugar de descargar
$file_name = "presupuesto-$presupuesto_id.pdf";
return $this->response
->setStatusCode(200)
->setHeader('Content-Type', 'application/pdf')
->setHeader('Content-Disposition', 'inline; filename="' . $file_name . '"')
->setHeader('Cache-Control', 'private, max-age=0, must-revalidate')
->setHeader('Pragma', 'public')
->setHeader('Content-Length', strlen($output))
->setBody($output);
}
}

View File

@ -279,6 +279,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
endif; // ($requestMethod === 'post')
$this->viewData['presupuestoId'] = $id;
$this->viewData['presupuestoEntity'] = $presupuestoEntity;
$this->viewData['isCosido'] = (new TipoPresupuestoModel())->get_isCosido($presupuestoEntity->tipo_impresion_id);

View File

@ -361,10 +361,11 @@ class PresupuestoModel extends \App\Models\GoBaseModel
"t1.id AS id, t1.created_at AS fecha, t1.titulo AS titulo, t1.autor AS autor, t1.ferro AS ferro,
t1.ferro_digital AS ferro_digital, t1.prototipo AS prototipo, t1.solapas AS solapas,
t1.solapas_ancho AS solapas_ancho, t1.paginas AS paginas, t1.tirada AS tirada, t1.coleccion AS coleccion,
t1.retractilado AS retractilado, t1.guardas AS guardas, t1.marcapaginas AS marcapaginas,
t1.comentarios_pdf AS comentarios_pdf,
t1.total_presupuesto AS total_presupuesto, t1.total_precio_unidad AS total_precio_unidad,
t2.nombre AS cliente,
CONCAT(t3.first_name, ' ', t3.last_name) AS comercial, t3.email AS email_comercial,
t1.inc_rei AS inc_rei,
t6.estado AS estado"
);
$builder->join("clientes t2", "t1.cliente_id = t2.id", "left");

View File

@ -37,7 +37,7 @@
value="<?= lang("Basic.global.Save") ?>"
/>
<?php if (str_contains($formAction, 'edit')): ?>
<?= anchor(route_to("presupuestoToPdf"), lang("Basic.global.Print"), ["class" => "btn btn-dark float-start me-sm-3 me-1",]) ?>
<?= anchor(route_to("presupuestoToPdf", $presupuestoId), lang("Basic.global.Print"), ["class" => "btn btn-dark float-start me-sm-3 me-1",'target' => '_blank']) ?>
<?= anchor(route_to("#"), lang("Basic.global.Clone"), ["class" => "btn btn-info float-start me-sm-3 me-1",]) ?>
<?php endif; ?>
<?= anchor(route_to("cosidotapablandaList"), lang("Basic.global.Cancel"), ["class" => "btn btn-secondary float-start",]) ?>

View File

@ -4,17 +4,16 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><?= "Presupuesto " . "TBC" ?></title>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/font-pdf.css') ?>">
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/all.css') ?>">
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/pdf.presupuesto.css') ?>">
<style>
@page {
margin: 18px;
margin: 10px;
}
body {
margin: 18px;
margin: 10px;
}
</style>
@ -49,7 +48,7 @@
FECHA:
</th>
<th class="fecha">
<?= $presupuesto->fecha ?>
<?= date('d/m/Y', strtotime($presupuesto->fecha)); ?>
</th>
</tr>
</thead>
@ -83,11 +82,11 @@
</tr>
<tr>
<td class="t">Ferro</td>
<td class="v"><?php echo (($presupuesto->ferro == 1) ? "SI" : "NO"); ?></td>
<td class="v"><?php echo(($presupuesto->ferro == 1) ? "SI" : "NO"); ?></td>
<td class="t-first">Prototipo</td>
<td class="v-first"><?php echo (($presupuesto->prototipo == 1) ? "SI" : "NO"); ?></td>
<td class="v-first"><?php echo(($presupuesto->prototipo == 1) ? "SI" : "NO"); ?></td>
<td class="t-second">Ferro Digital</td>
<td class="v-second"><?php echo (($presupuesto->ferro_digital == 1) ? "SI" : "NO"); ?></td>
<td class="v-second"><?php echo(($presupuesto->ferro_digital == 1) ? "SI" : "NO"); ?></td>
</tr>
<tr>
<td class="t">Formato</td>
@ -169,7 +168,7 @@
<td class="t">Tipo</td>
<td class="v"><?= "encuardernado" ?></td>
<td class="t-first">Solapas</td>
<td class="v-first"><?php echo (($presupuesto->solapas == 1) ? "SI" : "NO"); ?></td>
<td class="v-first"><?php echo(($presupuesto->solapas == 1) ? "SI" : "NO"); ?></td>
<td class="t-second">Ancho</td>
<td class="v-second"><?= $presupuesto->solapas_ancho ?> cm</td>
</tr>
@ -185,15 +184,15 @@
<tbody>
<tr>
<td class="t">Retractilado</td>
<td class="v" colspan="5">NO</td>
<td class="v" colspan="5"><?php echo(($presupuesto->retractilado == 1) ? "SI" : "NO"); ?></td>
</tr>
<tr>
<td class="t">Guardas</td>
<td class="v" colspan="5">NO</td>
<td class="v" colspan="5"><?php echo(($presupuesto->guardas == 1) ? "SI" : "NO"); ?></td>
</tr>
<tr>
<td class="t">Marcapáginas</td>
<td class="v" colspan="5">NO</td>
<td class="v" colspan="5"><?php echo(($presupuesto->marcapaginas == 1) ? "SI" : "NO"); ?></td>
</tr>
</tbody>
</table>
@ -210,7 +209,8 @@
<td colspan="10">El pedido será recogido por el cliente</td>
</tr>
</tbody>
<?php } else { ?>
<?php } else {
?>
<tbody>
<tr>
@ -267,12 +267,14 @@
</tfoot>
</table>
<?php if (isset($obj->comentarios_pdf)) { ?>
<?php if (isset($presupuesto->comentarios_pdf)) { ?>
<h6 class="observaciones">OBSERVACIONES</h6>
<div class="comentarios">{!! nl2br($obj->comentarios_pdf) !!}</div>
<div class="comentarios">
<?= nl2br($presupuesto->comentarios_pdf); ?>
</div>
<?php } ?>
<div class="footer" style="margin-top: 70px">
<div class="footer">
<p>Por la grave crisis de papel que está sufriendo el sector, este presupuesto deberá ser confirmado con su
comercial el día que se oficialice el pedido, dado que pueda darse la situación de que no haya stock
disponible o que su precio haya variado considerablemente, para así poder ofrecerle alternativas.</p>