calcular y guardar presupuestos adaptados a los nuevos acabados. Migracion en la bbdd

This commit is contained in:
2024-12-14 13:23:16 +01:00
parent b4de7978cc
commit 271ec8c807
6 changed files with 87 additions and 102 deletions

View File

@ -329,7 +329,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
'gramajeCubierta' => intval($cubierta['gramajeCubierta']),
'carasCubierta' => intval($cubierta['carasImpresion'] ?? 0),
'solapasCubierta' => intval($cubierta['solapas'] ?? 0) == 1 ? intval($cubierta['tamanioSolapas']) : 0,
'acabadosCubierta' => $cubierta['acabados'] ?? 0,
'acabado' => $cubierta['acabado'] ?? 0,
'lomoRedondo' => $lomoRedondo,
];
@ -339,7 +339,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
'papel' => $modelPapelGenerico->getIdFromCode($sobrecubierta['papel']),
'gramaje' => intval($sobrecubierta['gramaje']),
'solapas' => intval($sobrecubierta['solapas'] ?? 0),
'acabados' => $sobrecubierta['plastificado'] ?? 0,
'acabado' => $sobrecubierta['acabado'] ?? 0,
];
} else
$sobrecubierta = false;
@ -797,7 +797,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
'gramajeCubierta' => intval($cubierta['gramajeCubierta']),
'carasCubierta' => intval($cubierta['carasImpresion'] ?? 0),
'solapasCubierta' => intval($cubierta['solapas'] ?? 0) == 1 ? intval($cubierta['tamanioSolapas']) : 0,
'acabadosCubierta' => $cubierta['acabados'] ?? 0,
'acabado' => $cubierta['acabado'] ?? 0,
'lomoRedondo' => $cubierta['lomoRedondo'] ?? 0,
'cabezada' => $cubierta['cabezada'] ?? 'WHI',
];
@ -808,7 +808,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
'papel' => $modelPapelGenerico->getIdFromCode($sobrecubierta['papel']),
'gramaje' => intval($sobrecubierta['gramaje']),
'solapas' => intval($sobrecubierta['solapas'] ?? 0),
'acabados' => $sobrecubierta['plastificado'] ?? 0,
'acabado' => $sobrecubierta['acabado'] ?? 0,
];
} else
$sobrecubierta = false;
@ -935,29 +935,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
if ($id != 0) {
$borrar_antes = true;
}
$sobrecubierta_acabado_id = [];
if ($datos_presupuesto['sobrecubierta']) {
$sobrecubierta_acabado_id = $this->obtenerTarifasAcabado(['plastificado' => $datos_presupuesto['sobrecubierta']['acabados']]);
if (count($sobrecubierta_acabado_id) > 0) {
// la sobrecubierta sólo tiene plastificado
$datos_presupuesto['sobrecubierta']['acabados'] = $sobrecubierta_acabado_id['plastificado'];
}
}
$cubierta_acabado_id = $this->obtenerTarifasAcabado($datos_presupuesto['cubierta']['acabadosCubierta']);
if (count($cubierta_acabado_id) > 0) {
if (array_key_exists('plastificado', $cubierta_acabado_id)) {
$datos_presupuesto['cubierta']['acabadosCubierta']['plastificado'] = $cubierta_acabado_id['plastificado'];
}
if (array_key_exists('barniz', $cubierta_acabado_id)) {
$datos_presupuesto['cubierta']['acabadosCubierta']['barniz'] = $cubierta_acabado_id['barniz'];
}
if (array_key_exists('estampado', $cubierta_acabado_id)) {
$datos_presupuesto['cubierta']['acabadosCubierta']['estampado'] = $cubierta_acabado_id['estampado'];
}
} else {
$datos_presupuesto['cubierta']['acabadosCubierta']['id'] = 0;
}
$datos_presupuesto['prototipo'] = $prototipo;
$datos_presupuesto['ferro'] = $ferro;
$datos_presupuesto['ferro_digital'] = $ferroDigital;
@ -995,9 +973,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$this->guardarLineaPresupuesto($id, $resultado_presupuesto['info']['guardas']);
// Servicios
foreach ($sobrecubierta_acabado_id as $acabado) {
if(intval($sobrecubierta['acabado']) > 0) {
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
$servicio = $model->getPrecioTarifa($acabado, intval($selected_tirada), -1, $POD);
$servicio = $model->getPrecioTarifa(intval($sobrecubierta['acabado']), intval($selected_tirada), -1, $POD);
if (count($servicio) > 0) {
if ($servicio[0]->total > 0) {
@ -1005,16 +983,16 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
}
}
foreach ($cubierta_acabado_id as $acabado) {
if (intval($cubierta['acabado'])>0) {
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
$servicio = $model->getPrecioTarifa($acabado, intval($selected_tirada), -1, $POD);
$servicio = $model->getPrecioTarifa(intval($cubierta['acabado']), intval($selected_tirada), -1, $POD);
if (count($servicio) > 0) {
if ($servicio[0]->total > 0) {
$this->guardarServicio($id, $servicio[0], 'acabado', true, false);
}
}
}
foreach ($resultado_presupuesto['info']['serviciosDefecto'] as $servicio) {
$this->guardarServicio($id, $servicio, 'encuadernacion');
@ -1117,26 +1095,22 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$data['cubierta']['solapas_ancho'] = $presupuesto->solapas_ancho;
$data['cubierta']['cabezada'] = $presupuesto->cabezada;
$modelAcabado = model("App\Models\Tarifas\Acabados\TarifaAcabadoModel");
$data['cubierta']['plastificado'] = $modelAcabado->getCodeFromId($presupuesto->acabado_cubierta_id);
if ($data['cubierta']['plastificado'] == '') {
$data['cubierta']['plastificado'] = 'NONE';
}
$data['cubierta']['barniz'] = $modelAcabado->getCodeFromId($presupuesto->barniz_cubierta_id);
if ($data['cubierta']['barniz'] == '') {
$data['cubierta']['barniz'] = 'NONE';
}
$data['cubierta']['estampado'] = $modelAcabado->getCodeFromId($presupuesto->estampado_cubierta_id);
if ($data['cubierta']['estampado'] == '') {
$data['cubierta']['estampado'] = 'NONE';
$data['cubierta']['acabado']['id'] = $presupuesto->acabado_cubierta_id;
if ($presupuesto->acabado_cubierta_id == 0) {
$data['cubierta']['acabado']['text'] = "Ninguno";
} else {
$data['cubierta']['acabado']['text'] = $modelAcabado->find($presupuesto->acabado_cubierta_id)->nombre;
}
$data['cubierta']['retractilado'] = $presupuesto->retractilado ? 1 : 0;
$data['sobrecubierta'] = array_key_exists('sobrecubierta', $datos_papel) ? $datos_papel['sobrecubierta'] : [];
$data['sobrecubierta']['solapas'] = $presupuesto->solapas_sobrecubierta ? 1 : 0;
$data['sobrecubierta']['solapas_ancho'] = $presupuesto->solapas_ancho_sobrecubierta;
$data['sobrecubierta']['plastificado'] = $modelAcabado->getCodeFromId($presupuesto->acabado_sobrecubierta_id);
if ($data['sobrecubierta']['plastificado'] == '') {
$data['sobrecubierta']['plastificado'] = 'NONE';
$data['sobrecubierta']['acabado']['id'] = $presupuesto->acabado_sobrecubierta_id;
if ($presupuesto->acabado_sobrecubierta_id == 0) {
$data['sobrecubierta']['acabado']['text'] = "Ninguno";
} else {
$data['sobrecubierta']['acabado']['text'] = $modelAcabado->find($presupuesto->acabado_sobrecubierta_id)->nombre;
}
$data['guardas'] = array_key_exists('guardas', $datos_papel) ? $datos_papel['guardas'] : [];
@ -1488,7 +1462,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$gramajeCubierta = $datos_entrada['cubierta']['gramajeCubierta'];
$carasCubierta = $datos_entrada['cubierta']['carasCubierta'];
$solapasCubierta = $datos_entrada['cubierta']['solapasCubierta'];
$acabadosCubierta = $datos_entrada['cubierta']['acabadosCubierta'] ?? [];
$lomoRedondo = $datos_entrada['cubierta']['lomoRedondo'];
// Sobrecubierta
@ -1726,20 +1699,18 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
];
return $return_data;
}
// Acabados Cubierta
$tarifaAcabadoCubierta = $this->obtenerTarifasAcabado($acabadosCubierta);
$acabadoCubierta = [];
foreach ($tarifaAcabadoCubierta as $tarifa) {
if ($tarifa == 0)
continue;
// Acabado Cubierta
if (intval($datos_entrada['cubierta']['acabado']) != 0) {
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
$acabadoCubierta = $model->getPrecioTarifa($tarifa, $datosPedido->tirada, -1, $POD);
$acabadoCubierta = $model->getPrecioTarifa(intval($datos_entrada['cubierta']['acabado']), $datosPedido->tirada, -1, $POD);
if (count($acabadoCubierta) > 0) {
if ($acabadoCubierta[0]->total <= 0) {
$input_data['tarifas_acabado_cubierta'] = $tarifaAcabadoCubierta;
$input_data['tarifas_acabado_cubierta'] = intval($datos_entrada['cubierta']['acabado']);
$errorModel = new ErrorPresupuesto();
$errorModel->insertError(
$datos_entrada['id'],
@ -1813,21 +1784,17 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
$lomo_sobrecubierta = $lomo + floatval($linea_sobrecubierta['mano']);
$tarifaAcabadoSobrecubierta = $this->obtenerTarifasAcabado(['plastificado' => $sobreCubierta['acabados']]);
$acabadoSobrecubierta = [];
foreach ($tarifaAcabadoSobrecubierta as $tarifa) {
// Acabado sobrecubierta
if (intval($datos_entrada['sobrecubierta']['acabado']) != 0) {
// NONE
if ($tarifa == 0)
continue;
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
$acabadoSobrecubierta = $model->getPrecioTarifa($tarifa, $datosPedido->tirada, -1, $POD);
$acabadoSobrecubierta = $model->getPrecioTarifa(intval($datos_entrada['sobrecubierta']['acabado']), $datosPedido->tirada, -1, $POD);
if (count($acabadoSobrecubierta) > 0) {
if ($acabadoSobrecubierta[0]->total <= 0) {
$input_data['tarifas_acabado_sobrecubierta'] = $tarifaAcabadoSobrecubierta;
$input_data['tarifas_acabado_sobrecubierta'] = intval($datos_entrada['sobrecubierta']['acabado']);
$errorModel = new ErrorPresupuesto();
$errorModel->insertError(
$datos_entrada['id'],

View File

@ -0,0 +1,36 @@
<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class RemoveEstampadoBarnizado extends Migration
{
public function up()
{
$this->forge->dropColumn('presupuestos', 'barniz_cubierta_id');
$this->forge->dropColumn('presupuestos', 'estampado_cubierta_id');
}
public function down()
{
$fields = [
'barniz_cubierta_id' => [
'type' => 'INT',
'constraint' => 10,
'unsigned' => true,
'null' => false,
'default' => 0,
],
'estampado_cubierta_id' => [
'type' => 'INT',
'constraint' => 10,
'unsigned' => true,
'null' => false,
'default' => 0,
],
];
$this->forge->addColumn('presupuestos', $fields);
}
}

View File

@ -443,10 +443,8 @@ class PresupuestoModel extends \App\Models\BaseModel
'comparador_json_data' => $this->generateJson($data),
'acabado_cubierta_id' => $data['cubierta']['acabadosCubierta']['plastificado'],
'barniz_cubierta_id' => $data['cubierta']['acabadosCubierta']['barniz'],
'estampado_cubierta_id' => $data['cubierta']['acabadosCubierta']['estampado'],
'acabado_sobrecubierta_id' => !$data['sobrecubierta'] ? 0 : $data['sobrecubierta']['acabados'],
'acabado_cubierta_id' => $data['cubierta']['acabado'],
'acabado_sobrecubierta_id' => !$data['sobrecubierta'] ? 0 : $data['sobrecubierta']['acabado'],
'comp_tipo_impresion' => $data['isHq'] ? ($data['isColor'] ? 'colorhq' : 'negrohq') : ($data['isColor'] ? 'color' : 'negro'),

View File

@ -200,7 +200,7 @@
<div class="row col-sm-3 mb-3 d-flex flex-column align-items-center sobrecubierta-items">
<div class="row col-sm-2 mb-3 d-flex flex-column align-items-center sobrecubierta-items">
<div class="form-check form-switch mb-2">
<input class="calcular-presupuesto form-check-input" type="checkbox" id="addSobrecubierta"
name="add_sobrecubierta" value="1">
@ -232,7 +232,7 @@
</div>
</div>
<div class="col-sm-3 config-sobrecubierta d-none sobrecubierta-items">
<div class="col-sm-4 config-sobrecubierta d-none sobrecubierta-items">
<label for="plastificadoSobrecubierta" class="form-label">
<?= lang('Presupuestos.acabado') ?>
</label>

View File

@ -216,9 +216,8 @@ class DisenioCubierta {
$(`#divGramajeCubierta .gramaje-cubierta input[data-value="${datosCubierta.gramaje}"]`).trigger('click');
}, 0);
// JJO this.cubiertaPlastificado.val(datosCubierta.plastificado).trigger('change');
//this.cubiertaBarniz.val(datosCubierta.barniz).trigger('change');
//this.cubiertaEstampado.val(datosCubierta.estampado).trigger('change');
this.acabadoCubierta.setOption(datosCubierta.acabado.id, datosCubierta.acabado.text);
if (datosCubierta.retractilado) {
setTimeout(() => {
this.cubiertaRetractilado.trigger('click');
@ -229,7 +228,7 @@ class DisenioCubierta {
this.sobrecubierta.trigger('click');
this.papelSobrecubierta.val(datosSobrecubierta.papel.code + "_" + datosSobrecubierta.gramaje).trigger('change');
this.solapasSobrecubierta.val(datosSobrecubierta.solapas_ancho);
// JJO this.plastificadoSobrecubierta.val(datosSobrecubierta.plastificado).trigger('change');
this.acabadoSobrecubierta.setOption(datosSobrecubierta.acabado.id, datosSobrecubierta.acabado.text);
}
}
@ -411,7 +410,7 @@ class DisenioCubierta {
if (papel != null && gramaje != null) {
this.rl_papel_cubierta.text(papel + " " + gramaje + " gr");
this.rl_acabado_cubierta.text(this.domItem.find("#plastificado").children("option:selected").text());
this.rl_acabado_cubierta.text("Acabado: " + this.acabadoCubierta.getText());
this.rl_papel_cubierta.removeClass('d-none');
this.rl_acabado_cubierta.removeClass('d-none');
@ -454,10 +453,7 @@ class DisenioCubierta {
const sobrecubierta = this.getSobrecubierta(true);
this.rl_papel_sobrecubierta.text(sobrecubierta.papel + " " + sobrecubierta.gramaje + " gr")
this.rl_tamanio_sobrecubierta.text("Solapas: " + sobrecubierta.solapas + " mm")
let acabado_text = sobrecubierta.plastificado;
if (acabado_text.includes("Sin plastificar"))
acabado_text = "Sin plastificar";
this.rl_acabado_sobrecubierta.text(acabado_text);
this.rl_acabado_sobrecubierta.text("Acabado: " + this.acabadoSobrecubierta.getText());
}
}
else {
@ -537,21 +533,14 @@ class DisenioCubierta {
getAcabados(forResumen = false) {
try {
let acabados = {};
let acabado;
if (forResumen) {
acabados = 'Plastificado ' + this.domItem.find("#plastificado").children("option:selected").text();
if (this.domItem.find("#barniz").children("option:selected").val() != 'NONE')
acabados += ", Barniz UVI " + this.domItem.find("#barniz").children("option:selected").text();
if (this.domItem.find("#estampado").children("option:selected").val() != 'NONE')
acabados += ", Estampado " + this.domItem.find("#estampado").children("option:selected").text();
return acabados;
acabado = 'Acabado: ' + this.acabadoCubierta.getText();
}
else {
acabados.plastificado = this.domItem.find("#plastificado ").children("option:selected").val();
acabados.barniz = this.domItem.find("#barniz").children("option:selected").val();
acabados.estampado = this.domItem.find("#estampado").children("option:selected").val();
acabado = this.acabadoCubierta.getVal();
}
return acabados;
return acabado;
} catch (e) {
return null;
}
@ -616,7 +605,7 @@ class DisenioCubierta {
sobrecubierta.papel = papel.split(' ')[0] + ' ' + papel.split(' ')[1];
sobrecubierta.gramaje = papel.split(' ')[2];
sobrecubierta.solapas = this.domItem.find("#solapasSobrecubierta").val();
sobrecubierta.plastificado = 'Plastificado ' + this.domItem.find("#plastificadoSobrecubierta").children("option:selected").text();
sobrecubierta.acabado = 'Acabado: ' + this.acabadoSobrecubierta.getText();
return sobrecubierta;
}
else {
@ -625,7 +614,7 @@ class DisenioCubierta {
sobrecubierta.papel = papel.split('_')[0];
sobrecubierta.gramaje = papel.split('_')[1];
sobrecubierta.solapas = this.domItem.find("#solapasSobrecubierta").val();
sobrecubierta.plastificado = this.domItem.find("#plastificadoSobrecubierta").children("option:selected").val();
sobrecubierta.acabado = this.acabadoSobrecubierta.getVal();
return sobrecubierta;
}
}

View File

@ -71,6 +71,7 @@ class PresupuestoCliente {
this.disenioInterior.init();
this.disenioCubierta.init();
this.direcciones.init();
if (window.location.href.includes("edit")) {
this.resumen.init(window.location.href.split("/").pop());
}
@ -588,17 +589,11 @@ class PresupuestoCliente {
if (datos_to_check.posPaginasColor == "" || datos_to_check.posPaginasColor == null) {
delete datos_to_check.posPaginasColor;
}
if (datos_to_check.cubierta.acabados.barniz == undefined) {
delete datos_to_check.cubierta.acabados.barniz;
if (datos_to_check.cubierta.acabado == 0) {
delete datos_to_check.cubierta.acabado;
}
if (datos_to_check.cubierta.acabados.plastificado == undefined) {
delete datos_to_check.cubierta.acabados.plastificado;
}
if (datos_to_check.cubierta.acabados.estampado == undefined) {
delete datos_to_check.cubierta.acabados.estampado;
}
if (datos_to_check.sobrecubierta.plastificado == undefined) {
delete datos_to_check.sobrecubierta.plastificado;
if (datos_to_check.sobrecubierta.acabado == 0) {
delete datos_to_check.sobrecubierta.acabado;
}
return datos_to_check;
@ -650,7 +645,7 @@ class PresupuestoCliente {
papelCubierta: this.disenioCubierta.getPapel(),
gramajeCubierta: this.disenioCubierta.getGramaje(),
cabezada: this.disenioCubierta.getCabezada(),
acabados: this.disenioCubierta.getAcabados(),
acabado: this.disenioCubierta.getAcabados(),
carasImpresion: this.disenioCubierta.carasCubierta.val(),
};