Merge branch 'main' into mod/direcciones_ferro_prototipo

This commit is contained in:
2025-06-30 08:51:03 +02:00
4 changed files with 95 additions and 28 deletions

View File

@ -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 // Ajuste del precio a RAMA
$respuesta_ajuste = PresupuestoService::ajustarPresupuesto( $respuesta_ajuste = PresupuestoService::ajustarPresupuesto(
@ -362,7 +366,7 @@ class ImportadorCatalogo extends BaseResourceController
// confirmar y crear pedido y ot // confirmar y crear pedido y ot
model('App\Models\Presupuestos\PresupuestoModel')->confirmarPresupuesto($response['data']['sk_id']); 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); return $this->respond($response);

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, "user_update_id" => null,
"tipo_impresion_id" => null, "tipo_impresion_id" => null,
"tipologia_id" => null, "tipologia_id" => null,
"catalogo_id" => null,
"pais_id" => 1, "pais_id" => 1,
"estado_id" => 1, "estado_id" => 1,
"inc_rei" => null, "inc_rei" => null,
@ -129,6 +130,7 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity
"user_update_id" => "?int", "user_update_id" => "?int",
"tipo_impresion_id" => "?int", "tipo_impresion_id" => "?int",
"tipologia_id" => "?int", "tipologia_id" => "?int",
"catalogo_id" => "?int",
"pais_id" => "int", "pais_id" => "int",
"estado_id" => "int", "estado_id" => "int",
"retractilado" => "boolean", "retractilado" => "boolean",

View File

@ -47,6 +47,7 @@ class PresupuestoModel extends \App\Models\BaseModel
"user_update_id", "user_update_id",
"tipo_impresion_id", "tipo_impresion_id",
"tipologia_id", "tipologia_id",
"catalogo_id",
"pais_id", "pais_id",
"estado_id", "estado_id",
"inc_rei", "inc_rei",
@ -468,7 +469,7 @@ class PresupuestoModel extends \App\Models\BaseModel
'comparador_json_data' => $this->generateJson($data), '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, '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,
@ -500,28 +501,37 @@ class PresupuestoModel extends \App\Models\BaseModel
'total_antes_descuento' => round( 'total_antes_descuento' => round(
$totalCostes + $totalMargenes + $totalCostes + $totalMargenes +
$resumen_totales['coste_envio']+$resumen_totales['margen_envio'] + $resumen_totales['coste_envio'] + $resumen_totales['margen_envio'] +
$data['envio_base'], 2), $data['envio_base'],
2
),
'total_descuento' => 0, 'total_descuento' => 0,
'total_descuentoPercent' => 0, 'total_descuentoPercent' => 0,
'total_precio_unidad' => $resumen_totales['precio_unidad'], 'total_precio_unidad' => $resumen_totales['precio_unidad'],
'total_presupuesto' => round( 'total_presupuesto' => round(
$totalCostes + $totalMargenes + $totalCostes + $totalMargenes +
$resumen_totales['coste_envio']+$resumen_totales['margen_envio'] + $resumen_totales['coste_envio'] + $resumen_totales['margen_envio'] +
$data['envio_base'], 2), $data['envio_base'],
2
),
'total_aceptado' => round( 'total_aceptado' => round(
$totalCostes + $totalMargenes + $totalCostes + $totalMargenes +
$resumen_totales['coste_envio']+$resumen_totales['margen_envio'] + $resumen_totales['coste_envio'] + $resumen_totales['margen_envio'] +
$data['envio_base'], 2 $data['envio_base'],
2
), ),
'total_factor' => round( 'total_factor' => round(
($totalCostes + $totalMargenes ) / ($totalCostes + $totalMargenes) /
$resumen_totales['sumForFactor'], 2), $resumen_totales['sumForFactor'],
2
),
'total_factor_ponderado' => round( 'total_factor_ponderado' => round(
($totalCostes + $totalMargenes ) / ($totalCostes + $totalMargenes) /
$resumen_totales['sumForFactorPonderado'], 2), $resumen_totales['sumForFactorPonderado'],
2
),
'iva_reducido' => $iva_reducido, 'iva_reducido' => $iva_reducido,
'excluir_rotativa' => $excluir_rotativa, 'excluir_rotativa' => $excluir_rotativa,
@ -537,8 +547,7 @@ class PresupuestoModel extends \App\Models\BaseModel
$this->db->table($this->table)->where('id', $id)->update($fields); $this->db->table($this->table)->where('id', $id)->update($fields);
return $id; return $id;
} }
/* Inserccion */ /* Inserccion */ else {
else {
$fields['user_created_id'] = auth()->id(); $fields['user_created_id'] = auth()->id();
$fields['user_update_id'] = auth()->id(); $fields['user_update_id'] = auth()->id();
$this->db->table($this->table)->insert($fields); $this->db->table($this->table)->insert($fields);
@ -749,12 +758,13 @@ class PresupuestoModel extends \App\Models\BaseModel
return $servicios; return $servicios;
} }
public function getPresupuestosClienteForm($cliente_id = -1){ public function getPresupuestosClienteForm($cliente_id = -1)
{
$builder = $this->db $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, ->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') 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") ->join("users u", "c.comercial_id= u.id", "left")
->where('pr.cliente_id', $cliente_id) ->where('pr.cliente_id', $cliente_id)
->groupBy('pr.id'); ->groupBy('pr.id');
@ -896,6 +906,14 @@ class PresupuestoModel extends \App\Models\BaseModel
return $description_interior . $description_cubierta . $description_sobrecubierta . $acabado; 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(),
]);
}
} }