Añadida la logica de crear la columna y modelo

This commit is contained in:
Ignacio Martinez Navajas
2025-06-29 23:09:09 +02:00
parent 4e2003b8b8
commit 416b4db915
3 changed files with 89 additions and 26 deletions

View File

@ -0,0 +1,43 @@
<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class AddCatalogoIdToPresupuestos extends Migration
{
public function up()
{
// Añadir columna
$this->forge->addColumn('presupuestos', [
'catalogo_id' => [
'type' => 'INT',
'constraint' => 10,
'unsigned' => true,
'null' => true,
'after' => 'tipologia_id'
],
]);
// Agregar clave foránea
$this->db->query('
ALTER TABLE presupuestos
ADD CONSTRAINT FK_presupuestos_catalogo_libros
FOREIGN KEY (catalogo_id) REFERENCES catalogo_libros(id)
ON DELETE SET NULL
ON UPDATE CASCADE
');
}
public function down()
{
// Eliminar la clave foránea primero
$this->db->query('
ALTER TABLE presupuestos
DROP FOREIGN KEY FK_presupuestos_catalogo_libros
');
// Eliminar columna
$this->forge->dropColumn('presupuestos', 'catalogo_id');
}
}

View File

@ -27,6 +27,7 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity
"user_update_id" => null,
"tipo_impresion_id" => null,
"tipologia_id" => null,
"catalogo_id" => null,
"pais_id" => 1,
"estado_id" => 1,
"inc_rei" => null,
@ -123,6 +124,7 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity
"user_update_id" => "?int",
"tipo_impresion_id" => "?int",
"tipologia_id" => "?int",
"catalogo_id" => "?int",
"pais_id" => "int",
"estado_id" => "int",
"retractilado" => "boolean",

View File

@ -47,6 +47,7 @@ class PresupuestoModel extends \App\Models\BaseModel
"user_update_id",
"tipo_impresion_id",
"tipologia_id",
"catalogo_id",
"pais_id",
"estado_id",
"inc_rei",
@ -467,13 +468,13 @@ class PresupuestoModel extends \App\Models\BaseModel
'comparador_json_data' => $this->generateJson($data),
'faja_color' => is_array($data['faja']) && count($data['faja'])>0 ? 1 : 0,
'faja_color' => is_array($data['faja']) && count($data['faja']) > 0 ? 1 : 0,
'solapas_ancho_faja_color' => is_array($data['faja']) && $data['faja'] !== [] ? $data['faja']['solapas'] : 60,
'alto_faja_color' => is_array($data['faja']) && $data['faja'] !== [] ? $data['faja']['alto'] : 50,
'alto_faja_color' => is_array($data['faja']) && $data['faja'] !== [] ? $data['faja']['alto'] : 50,
'acabado_cubierta_id' => $data['cubierta']['acabado'],
'acabado_sobrecubierta_id' => !$data['sobrecubierta'] ? 0 : $data['sobrecubierta']['acabado'],
'acabado_faja_id' => is_array($data['faja']) && $data['faja'] !== [] ? $data['faja']['acabado'] : 0,
'acabado_faja_id' => is_array($data['faja']) && $data['faja'] !== [] ? $data['faja']['acabado'] : 0,
'comp_tipo_impresion' => $data['isHq'] ? ($data['isColor'] ? 'colorhq' : 'negrohq') : ($data['isColor'] ? 'color' : 'negro'),
@ -498,29 +499,38 @@ class PresupuestoModel extends \App\Models\BaseModel
'total_margenes' => round($totalMargenes, 2),
'total_antes_descuento' => round(
$totalCostes + $totalMargenes +
$resumen_totales['coste_envio']+$resumen_totales['margen_envio'] +
$data['envio_base'], 2),
$totalCostes + $totalMargenes +
$resumen_totales['coste_envio'] + $resumen_totales['margen_envio'] +
$data['envio_base'],
2
),
'total_descuento' => 0,
'total_descuentoPercent' => 0,
'total_precio_unidad' => $resumen_totales['precio_unidad'],
'total_presupuesto' => round(
$totalCostes + $totalMargenes +
$resumen_totales['coste_envio']+$resumen_totales['margen_envio'] +
$data['envio_base'], 2),
$totalCostes + $totalMargenes +
$resumen_totales['coste_envio'] + $resumen_totales['margen_envio'] +
$data['envio_base'],
2
),
'total_aceptado' => round(
$totalCostes + $totalMargenes +
$resumen_totales['coste_envio']+$resumen_totales['margen_envio'] +
$data['envio_base'], 2
$totalCostes + $totalMargenes +
$resumen_totales['coste_envio'] + $resumen_totales['margen_envio'] +
$data['envio_base'],
2
),
'total_factor' => round(
($totalCostes + $totalMargenes ) /
$resumen_totales['sumForFactor'], 2),
($totalCostes + $totalMargenes) /
$resumen_totales['sumForFactor'],
2
),
'total_factor_ponderado' => round(
($totalCostes + $totalMargenes ) /
$resumen_totales['sumForFactorPonderado'], 2),
($totalCostes + $totalMargenes) /
$resumen_totales['sumForFactorPonderado'],
2
),
'iva_reducido' => $iva_reducido,
'excluir_rotativa' => $excluir_rotativa,
@ -530,13 +540,12 @@ class PresupuestoModel extends \App\Models\BaseModel
if ($id != 0) {
$fields['id'] = $id;
$fields['updated_at'] = date('Y-m-d H:i:s', now());
$fields['user_update_id'] = auth()->id();
$fields['user_update_id'] = auth()->id();
$this->db->table($this->table)->where('id', $id)->update($fields);
return $id;
}
/* Inserccion */
else {
$fields['user_created_id'] = auth()->id();
}
/* Inserccion */ else {
$fields['user_created_id'] = auth()->id();
$fields['user_update_id'] = auth()->id();
$this->db->table($this->table)->insert($fields);
return $this->db->insertID();
@ -634,7 +643,7 @@ class PresupuestoModel extends \App\Models\BaseModel
$builder = $this->db
->table($this->table . " t1")
->select(
"t1.id AS numero, t1.tipo_impresion_id as tipo, t1.tirada AS unidades, t1.total_aceptado as total, t1.paginas AS paginas,
"t1.id AS numero, t1.tipo_impresion_id as tipo, t1.tirada AS unidades, t1.total_aceptado as total, t1.paginas AS paginas,
t1.titulo AS titulo, t1.autor AS autor, t1.isbn AS isbn,
t1.papel_formato_id AS papel_formato_id, t1.papel_formato_personalizado AS papel_formato_personalizado,
t1.papel_formato_ancho AS papel_formato_ancho, t1.papel_formato_alto AS papel_formato_alto,
@ -642,7 +651,7 @@ class PresupuestoModel extends \App\Models\BaseModel
t3.codigo AS codigo_encuadernacion,
t1.solapas AS solapas_cubierta, CAST(t1.solapas_ancho AS INT) AS solapas_ancho_cubierta,
t1.solapas_sobrecubierta AS solapas_sobrecubierta, CAST(t1.solapas_ancho_sobrecubierta AS INT) AS solapas_ancho_sobrecubierta,"
);
);
$builder->join("lg_papel_formato t2", "t1.papel_formato_id = t2.id", "left");
$builder->join("tipos_presupuestos t3", "t1.tipo_impresion_id = t3.id", "left");
$builder->where("t1.is_deleted", 0);
@ -746,12 +755,13 @@ class PresupuestoModel extends \App\Models\BaseModel
return $servicios;
}
public function getPresupuestosClienteForm($cliente_id = -1){
public function getPresupuestosClienteForm($cliente_id = -1)
{
$builder = $this->db
->table($this->table . " pr")
->table($this->table . " pr")
->select('pr.id, pr.created_at as fecha, CONCAT(u.first_name, " ", u.last_name) AS comercial, pr.titulo,
pr.paginas as paginas, pr.tirada, pr.total_aceptado as total, pr.estado_id as estado')
->join ("clientes c", "pr.cliente_id = c.id", "left")
->join("clientes c", "pr.cliente_id = c.id", "left")
->join("users u", "c.comercial_id= u.id", "left")
->where('pr.cliente_id', $cliente_id)
->groupBy('pr.id');
@ -893,6 +903,14 @@ class PresupuestoModel extends \App\Models\BaseModel
return $description_interior . $description_cubierta . $description_sobrecubierta . $acabado;
}
public function vincularCatalogo(int $presupuesto_id, int $catalogo_id): bool
{
return $this->update($presupuesto_id, [
'catalogo_id' => $catalogo_id,
'updated_at' => date('Y-m-d H:i:s'),
'user_update_id' => auth()->id(),
]);
}
}