Inciado link presupuesto PDF con backend

This commit is contained in:
imnavajas
2024-01-15 22:09:18 +01:00
parent 74e25dfa84
commit b62a5d1b9a
3 changed files with 67 additions and 26 deletions

View File

@ -13,13 +13,18 @@ class PrintPresupuestos extends BaseController
public function index() public function index()
{ {
//return view('pdf_view'); $presupuestoModel = model('App\Models\Presupuestos\PresupuestoModel');
return view(getenv('theme.path').'pdfs/presupuesto');
$data['presupuesto'] = $presupuestoModel->getResourceForPdf(8)->get()->getRow();
return view(getenv('theme.path').'pdfs/presupuesto', $data);
} }
public function generar(){ public function generar(){
$dompdf = new \Dompdf\Dompdf(['isRemoteEnabled' => true]); $dompdf = new \Dompdf\Dompdf(['isRemoteEnabled' => true]);
//$dompdf->loadHtml(view('pdf_view')); //$dompdf->loadHtml(view('pdf_view'));
$dompdf->loadHtml(view(getenv('theme.path').'pdfs/presupuesto')); //$dompdf->loadHtml(view(getenv('theme.path').'pdfs/presupuesto'));
$dompdf->loadHtml($this->index());
$dompdf->setPaper('A4', 'portrait'); $dompdf->setPaper('A4', 'portrait');
$dompdf->render(); $dompdf->render();
$dompdf->stream('presupuesto-demo.pdf'); $dompdf->stream('presupuesto-demo.pdf');

View File

@ -1,4 +1,5 @@
<?php <?php
namespace App\Models\Presupuestos; namespace App\Models\Presupuestos;
class PresupuestoModel extends \App\Models\GoBaseModel class PresupuestoModel extends \App\Models\GoBaseModel
@ -258,7 +259,7 @@ class PresupuestoModel extends \App\Models\GoBaseModel
], ],
"inc_rei" => [ "inc_rei" => [
"integer" => "Presupuestos.validation.integer", "integer" => "Presupuestos.validation.integer",
], ],
"coleccion" => [ "coleccion" => [
"max_length" => "Presupuestos.validation.max_length", "max_length" => "Presupuestos.validation.max_length",
@ -277,8 +278,9 @@ class PresupuestoModel extends \App\Models\GoBaseModel
], ],
"referencia_cliente" => [ "referencia_cliente" => [
"max_length" => "Presupuestos.validation.max_length", "max_length" => "Presupuestos.validation.max_length",
], ],
]; ];
public function findAllWithAllRelations(string $selcols = "*", int $limit = null, int $offset = 0) public function findAllWithAllRelations(string $selcols = "*", int $limit = null, int $offset = 0)
{ {
$sql = $sql =
@ -324,14 +326,14 @@ class PresupuestoModel extends \App\Models\GoBaseModel
$builder->where("t1.is_deleted", 0); $builder->where("t1.is_deleted", 0);
if(empty($search)) if (empty($search))
return $builder; return $builder;
else{ else {
$builder->groupStart(); $builder->groupStart();
foreach($search as $col_search){ foreach ($search as $col_search) {
if($col_search[0] != 1) if ($col_search[0] != 1)
$builder->like(self::SORTABLE[$col_search[0]], $col_search[2]); $builder->like(self::SORTABLE[$col_search[0]], $col_search[2]);
else{ else {
$dates = explode(" ", $col_search[2]); $dates = explode(" ", $col_search[2]);
$builder->where(self::SORTABLE[$col_search[0]] . ">=", $dates[0]); $builder->where(self::SORTABLE[$col_search[0]] . ">=", $dates[0]);
$builder->where(self::SORTABLE[$col_search[0]] . "<=", $dates[1]); $builder->where(self::SORTABLE[$col_search[0]] . "<=", $dates[1]);
@ -340,6 +342,41 @@ class PresupuestoModel extends \App\Models\GoBaseModel
$builder->groupEnd(); $builder->groupEnd();
return $builder; return $builder;
} }
} }
/**
* Get resource data.
*
* @param string $search
*
* @return \CodeIgniter\Database\BaseBuilder
*/
public function getResourceForPdf($presupuesto_id = -1)
{
$builder = $this->db
->table($this->table . " t1")
->select(
"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.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");
$builder->join("auth_user t3", "t1.user_update_id = t3.id_user", "left");
$builder->join("presupuesto_estados t6", "t1.estado_id = t6.id", "left");
$builder->where("t1.is_deleted", 0);
$builder->where("t1.id", $presupuesto_id);
return $builder;
}
} }

View File

@ -37,34 +37,34 @@
PRESUPUESTO Nº: PRESUPUESTO Nº:
</th> </th>
<th class="num_presupuesto"> <th class="num_presupuesto">
<?= "obj->id" ?> <?= $presupuesto->id ?>
</th> </th>
<th class="intro_cliente"> <th class="intro_cliente">
CLIENTE: CLIENTE:
</th> </th>
<th class="cliente letra"> <th class="cliente letra">
<?= "obj->customer->name" ?> <?= $presupuesto->cliente ?>
</th> </th>
<th class="intro_fecha"> <th class="intro_fecha">
FECHA: FECHA:
</th> </th>
<th class="fecha"> <th class="fecha">
<?= date("d/m/Y") ?> <?= $presupuesto->fecha ?>
</th> </th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td colspan="6" class="titulo"> <td colspan="6" class="titulo">
<span style="font-weight: bold">Título:</span> <?= "obj->titulo" ?> <span style="font-weight: bold">Título:</span> <?= $presupuesto->titulo ?>
</td> </td>
</tr> </tr>
<tr> <tr>
<td colspan="3" class="coleccion"> <td colspan="3" class="coleccion">
<span style="font-weight: bold">Colección:</span> <?= "obj->coleccion" ?> <span style="font-weight: bold">Colección:</span> <?= $presupuesto->coleccion ?>
</td> </td>
<td colspan="3" class="autor"> <td colspan="3" class="autor">
<span style="font-weight: bold">Autor:</span> <?= "obj->autor" ?> <span style="font-weight: bold">Autor:</span> <?= $presupuesto->autor ?>
</td> </td>
</tr> </tr>
</tbody> </tbody>
@ -83,11 +83,11 @@
</tr> </tr>
<tr> <tr>
<td class="t">Ferro</td> <td class="t">Ferro</td>
<td class="v">TBD</td> <td class="v"><?php echo (($presupuesto->ferro == 1) ? "SI" : "NO"); ?></td>
<td class="t-first">Prototipo</td> <td class="t-first">Prototipo</td>
<td class="v-first">SI</td> <td class="v-first"><?php echo (($presupuesto->prototipo == 1) ? "SI" : "NO"); ?></td>
<td class="t-second">Ferro Digital</td> <td class="t-second">Ferro Digital</td>
<td class="v-second">SI</td> <td class="v-second"><?php echo (($presupuesto->ferro_digital == 1) ? "SI" : "NO"); ?></td>
</tr> </tr>
<tr> <tr>
<td class="t">Formato</td> <td class="t">Formato</td>
@ -97,7 +97,7 @@
</tr> </tr>
<tr> <tr>
<td class="t">Nº de páginas totales</td> <td class="t">Nº de páginas totales</td>
<td class="v" colspan="5"><?= "obj->paginas" ?></td> <td class="v" colspan="5"><?= $presupuesto->paginas ?></td>
</tr> </tr>
<tr> <tr>
<td class="t">Nº de páginas ByN</td> <td class="t">Nº de páginas ByN</td>
@ -169,9 +169,9 @@
<td class="t">Tipo</td> <td class="t">Tipo</td>
<td class="v"><?= "encuardernado" ?></td> <td class="v"><?= "encuardernado" ?></td>
<td class="t-first">Solapas</td> <td class="t-first">Solapas</td>
<td class="v-first"><?= "solapas_portada" ?></td> <td class="v-first"><?php echo (($presupuesto->solapas == 1) ? "SI" : "NO"); ?></td>
<td class="t-second">Ancho</td> <td class="t-second">Ancho</td>
<td class="v-second">TBD cm</td> <td class="v-second"><?= $presupuesto->solapas_ancho ?> cm</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -252,7 +252,7 @@
<tr> <tr>
<td class="hidden"></td> <td class="hidden"></td>
<td class="hidden"></td> <td class="hidden"></td>
<td class="tirada">TBD uds.</td> <td class="tirada"><?= $presupuesto->tirada ?> uds.</td>
<td class="precio">TBD €</td> <td class="precio">TBD €</td>
<td class="precio">TBD €</td> <td class="precio">TBD €</td>
<td class="precio">TBD €</td> <td class="precio">TBD €</td>
@ -277,8 +277,7 @@
comercial el día que se oficialice el pedido, dado que pueda darse la situación de que no haya stock 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> disponible o que su precio haya variado considerablemente, para así poder ofrecerle alternativas.</p>
<p class="texto-email">Esperando que los precios se ajusten a sus necesidades,<br/> <p class="texto-email">Esperando que los precios se ajusten a sus necesidades,<br/>
<?= "obj->customer->salesman->name" ?> <?= "obj->customer->salesman->lastname" ?> &bull; <?= $presupuesto->comercial ?> &bull; email: <?= $presupuesto->email_comercial ?></p>
email: <?= "obj->customer->salesman->email" ?></p>
<p class="texto-asteriscos">(*) En el formato de desarrollo de cubierta están contemplados los 3 mm. de vuelta <p class="texto-asteriscos">(*) En el formato de desarrollo de cubierta están contemplados los 3 mm. de vuelta
de solapas en caso de llevarlas.<br/> de solapas en caso de llevarlas.<br/>
(**) Estos precios están sujetos a análisis de cobertura de tinta del archivo PDF de interior.</p> (**) Estos precios están sujetos a análisis de cobertura de tinta del archivo PDF de interior.</p>