From 416b4db91507d35ce95c4eaa14c5c2516ec3d829 Mon Sep 17 00:00:00 2001 From: Ignacio Martinez Navajas Date: Sun, 29 Jun 2025 23:09:09 +0200 Subject: [PATCH 1/2] =?UTF-8?q?A=C3=B1adida=20la=20logica=20de=20crear=20l?= =?UTF-8?q?a=20columna=20y=20modelo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...-29-215200_AddCatalogoIdToPresupuestos.php | 43 ++++++++++++ .../Presupuestos/PresupuestoEntity.php | 2 + .../Models/Presupuestos/PresupuestoModel.php | 70 ++++++++++++------- 3 files changed, 89 insertions(+), 26 deletions(-) create mode 100644 ci4/app/Database/Migrations/2025-06-29-215200_AddCatalogoIdToPresupuestos.php diff --git a/ci4/app/Database/Migrations/2025-06-29-215200_AddCatalogoIdToPresupuestos.php b/ci4/app/Database/Migrations/2025-06-29-215200_AddCatalogoIdToPresupuestos.php new file mode 100644 index 00000000..b6f53fa0 --- /dev/null +++ b/ci4/app/Database/Migrations/2025-06-29-215200_AddCatalogoIdToPresupuestos.php @@ -0,0 +1,43 @@ +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'); + } +} diff --git a/ci4/app/Entities/Presupuestos/PresupuestoEntity.php b/ci4/app/Entities/Presupuestos/PresupuestoEntity.php index c7d0edc3..4828eef5 100755 --- a/ci4/app/Entities/Presupuestos/PresupuestoEntity.php +++ b/ci4/app/Entities/Presupuestos/PresupuestoEntity.php @@ -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", diff --git a/ci4/app/Models/Presupuestos/PresupuestoModel.php b/ci4/app/Models/Presupuestos/PresupuestoModel.php index d4689b02..c2bc84fa 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoModel.php @@ -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(), + ]); + } } From 508758331d48ebeb6caa243b4658b633ab4baacf Mon Sep 17 00:00:00 2001 From: Ignacio Martinez Navajas Date: Sun, 29 Jun 2025 23:27:03 +0200 Subject: [PATCH 2/2] =?UTF-8?q?A=C3=B1adida=20la=20logica=20en=20importado?= =?UTF-8?q?r=20de=20RAMA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ci4/app/Controllers/Importadores/ImportadorCatalogo.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ci4/app/Controllers/Importadores/ImportadorCatalogo.php b/ci4/app/Controllers/Importadores/ImportadorCatalogo.php index 0afd6371..e8302695 100644 --- a/ci4/app/Controllers/Importadores/ImportadorCatalogo.php +++ b/ci4/app/Controllers/Importadores/ImportadorCatalogo.php @@ -344,6 +344,10 @@ class ImportadorCatalogo extends BaseResourceController ] ]; + // Vincular el presupuesto con el catálogo + model('\App\Models\Presupuestos\PresupuestoModel') + ->vincularCatalogo($response['data']['sk_id'], $libro->id); + // Ajuste del precio a RAMA $respuesta_ajuste = PresupuestoService::ajustarPresupuesto( @@ -362,7 +366,7 @@ class ImportadorCatalogo extends BaseResourceController // confirmar y crear pedido y ot model('App\Models\Presupuestos\PresupuestoModel')->confirmarPresupuesto($response['data']['sk_id']); - PresupuestoService::crearPedido($response['data']['sk_id'],isImported:true); + PresupuestoService::crearPedido($response['data']['sk_id'], isImported: true); return $this->respond($response); @@ -379,7 +383,7 @@ class ImportadorCatalogo extends BaseResourceController } - + private function calcularPrecioDesdeTarifa($isColor, $encuadernacionId, $ancho, $alto, $paginas, $tarifas) { // Solo aplicamos tarifa si la encuadernación es Rústica Fresada (id = 2)