añadido checkeo de lomo en presupuesto admin

This commit is contained in:
2025-06-23 18:33:46 +02:00
parent da0ca27c8c
commit 819f297e90
8 changed files with 189 additions and 48 deletions

View File

@ -17,6 +17,8 @@ $routes->group('presupuestoadmin', ['namespace' => 'App\Controllers\Presupuestos
$routes->post('allmenuitems', 'Presupuestoadmin::allItemsSelect', ['as' => 'select2ItemsOfPresupuestoAdmin']); $routes->post('allmenuitems', 'Presupuestoadmin::allItemsSelect', ['as' => 'select2ItemsOfPresupuestoAdmin']);
$routes->post('menuitems', 'Presupuestoadmin::menuItems', ['as' => 'menuItemsOfPresupuestoAdmin']); $routes->post('menuitems', 'Presupuestoadmin::menuItems', ['as' => 'menuItemsOfPresupuestoAdmin']);
$routes->get('checklomointerior', 'Presupuestoadmin::checkLomo');
$routes->get('cargar/(:any)', 'Presupuestoadmin::cargar/$1'); $routes->get('cargar/(:any)', 'Presupuestoadmin::cargar/$1');
$routes->post('comparadorinterior', 'Presupuestoadmin::obtenerComparadorInterior'); $routes->post('comparadorinterior', 'Presupuestoadmin::obtenerComparadorInterior');
$routes->post('comparadorexteriores', 'Presupuestoadmin::obtenerComparadorExteriores'); $routes->post('comparadorexteriores', 'Presupuestoadmin::obtenerComparadorExteriores');

View File

@ -1841,6 +1841,18 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
} }
} }
public function checkLomo()
{
if ($this->request->isAJAX()) {
$tipo_impresion_id = $this->request->getGet('tipo_impresion_id');
$lomo = $this->request->getGet('lomo') ?? 0;
$response = PresupuestoService::check_lomo_interior($tipo_impresion_id, $lomo);
return $this->respond($response);
} else {
return $this->failUnauthorized('Invalid request', 403);
}
}
public function reprintPresupuesto() public function reprintPresupuesto()
{ {

View File

@ -459,9 +459,9 @@ return [
'errorPresupuesto' => 'Se ha producido un error al calcular el presupuesto. Póngase en contacto con el administrador', 'errorPresupuesto' => 'Se ha producido un error al calcular el presupuesto. Póngase en contacto con el administrador',
'error_sobrecubierta_sin_solapas' => 'Debe seleccionar "sobrecubierta" en los datos del libro para introducir el ancho de solapa', 'error_sobrecubierta_sin_solapas' => 'Debe seleccionar "sobrecubierta" en los datos del libro para introducir el ancho de solapa',
'error_faja_sin_solapas' => 'Debe seleccionar "faja" en los datos del libro para introducir el ancho de solapa', 'error_faja_sin_solapas' => 'Debe seleccionar "faja" en los datos del libro para introducir el ancho de solapa',
'error_lomo_maximo' => "No se pueden encuadernar libros {0} con un lomo superior a {1} mm. El lomo actual es de {2} mm. <br> 'error_lomo_maximo' => "No se pueden encuadernar libros {0} con un lomo interior superior a {1} mm. El lomo actual es de {2} mm. <br>
Por favor, disminuya el número de páginas o el gramaje del papel para que sea encuadernable.", Por favor, disminuya el número de páginas o el gramaje del papel para que sea encuadernable.",
'error_lomo_minimo' => "No se pueden encuadernar libros {0} con un lomo inferior a {1} mm. El lomo actual es de {2} mm. <br> 'error_lomo_minimo' => "No se pueden encuadernar libros {0} con un lomo interior inferior a {1} mm. El lomo actual es de {2} mm. <br>
Por favor, aumente el número de páginas o el gramaje del papel para que sea encuadernable.", Por favor, aumente el número de páginas o el gramaje del papel para que sea encuadernable.",
], ],
'resize_preview' => 'Refrescar vista esquema' 'resize_preview' => 'Refrescar vista esquema'

View File

@ -2079,8 +2079,7 @@ class PresupuestoService extends BaseService
if ($tirada == 1) { if ($tirada == 1) {
$merma = 0; $merma = 0;
} } else if ($tirada > intval($POD)) {
else if ($tirada > intval($POD)) {
$merma = $tirada * 0.1; $merma = $tirada * 0.1;
} else { } else {
$merma_lineas = []; $merma_lineas = [];
@ -2136,8 +2135,7 @@ class PresupuestoService extends BaseService
"\n================================================\n"; "\n================================================\n";
$presupuesto->comentarios_safekat = $text . $presupuesto->comentarios_safekat; $presupuesto->comentarios_safekat = $text . $presupuesto->comentarios_safekat;
} }
} } else if ($is_reimpresion) {
else if($is_reimpresion){
$presupuesto->inc_rei = null; $presupuesto->inc_rei = null;
$modelPedidoLinea = model('App\Models\Pedidos\PedidoLineaModel'); $modelPedidoLinea = model('App\Models\Pedidos\PedidoLineaModel');
$pedido_linea = $modelPedidoLinea->where('presupuesto_id', $id)->first(); $pedido_linea = $modelPedidoLinea->where('presupuesto_id', $id)->first();
@ -2146,8 +2144,7 @@ class PresupuestoService extends BaseService
"\n================================================\n"; "\n================================================\n";
$presupuesto->comentarios_safekat = $text . $presupuesto->comentarios_safekat; $presupuesto->comentarios_safekat = $text . $presupuesto->comentarios_safekat;
} }
} } else {
else{
$presupuesto->inc_rei = null; $presupuesto->inc_rei = null;
} }
$new_id = $modelPresupuesto->insert($presupuesto); $new_id = $modelPresupuesto->insert($presupuesto);
@ -2210,4 +2207,96 @@ class PresupuestoService extends BaseService
]; ];
} }
} }
public static function check_lomo_interior($tipo_impresion_id, $lomo = 0)
{
$lomo_maximo = 0;
$lomo_minimo = 0;
if ($lomo == 0) {
return [
'status' => true,
'message' => 'Lomo interior 0'
];
}
switch ($tipo_impresion_id) {
case 1: // Fresado
case 2:
case 3: // Cosido
case 4:
$lomo_minimo = intval(model('App\Models\Configuracion\ConfigVariableModel')->getVariable('lomo_minimo_fresado_cosido')->value);
$lomo_maximo = intval(model('App\Models\Configuracion\ConfigVariableModel')->getVariable('lomo_maximo_fresado_cosido')->value);
if ($lomo != 0 && $lomo < $lomo_minimo) {
return [
'status' => false,
'message' => lang(
'Presupuestos.errores.error_lomo_minimo',
[
lang('Presupuestos.cosido') . "/" . lang('Presupuestos.fresado'),
$lomo_minimo,
$lomo,
]
)
];
} else if ($lomo != 0 && $lomo > $lomo_maximo) {
return [
'status' => false,
'message' => lang(
'Presupuestos.errores.error_lomo_maximo',
[
lang('Presupuestos.cosido') . "/" . lang('Presupuestos.fresado'),
$lomo_maximo,
$lomo,
]
)
];
}
break;
case 5: // Espiral
case 6:
$lomo_maximo = intval(model('App\Models\Configuracion\ConfigVariableModel')->getVariable('lomo_maximo_espiral')->value);
if ($lomo != 0 && $lomo > $lomo_maximo) {
return [
'status' => false,
'message' => lang(
'Presupuestos.errores.error_lomo_maximo',
[
lang('Presupuestos.espiral'),
$lomo_maximo,
$lomo,
]
)
];
}
break;
case 7: // Wire-O
case 8:
$lomo_maximo = intval(model('App\Models\Configuracion\ConfigVariableModel')->getVariable('lomo_maximo_wireo')->value);
$lomo_maximo = intval(model('App\Models\Configuracion\ConfigVariableModel')->getVariable('lomo_maximo_espiral')->value);
if ($lomo != 0 && $lomo > $lomo_maximo) {
return [
'status' => false,
'message' => lang(
'Presupuestos.errores.error_lomo_maximo',
[
lang('Presupuestos.wireo'),
$lomo_maximo,
$lomo,
]
)
];
}
break;
default:
return [
'status' => true,
'message' => 'Lomo valido'
];
}
return [
'status' => true,
'message' => 'Lomo valido'
];
}
} }

View File

@ -14,6 +14,7 @@
<?= csrf_field() ?> <?= csrf_field() ?>
<?= view("themes/_commonPartialsBs/_alertBoxes") ?> <?= view("themes/_commonPartialsBs/_alertBoxes") ?>
<div id="sk-alert-lomo"></div>
<?= view("themes/vuexy/form/presupuestos/cliente/loader") ?> <?= view("themes/vuexy/form/presupuestos/cliente/loader") ?>
<?= !empty($validation->getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> <?= !empty($validation->getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?>

View File

@ -577,6 +577,8 @@ class DatosLibro {
update_tiradas_alternativas: true update_tiradas_alternativas: true
}); });
this.actualizarLimitesPaginas();
} }
} }
@ -775,7 +777,7 @@ class DatosLibro {
case 6: case 6:
case 7: // Wire-O case 7: // Wire-O
case 8: case 8:
min = 1; min = 20;
max = null; // Sin límite superior max = null; // Sin límite superior
break; break;
case 21: // Grapado case 21: // Grapado

View File

@ -485,7 +485,9 @@ class LineasPresupuesto {
if (lp.tipo == 'lp_guardas') if (lp.tipo == 'lp_guardas')
lp['paginas_impresion'] = lp.paginas_impresion; lp['paginas_impresion'] = lp.paginas_impresion;
}); })
this.checkLomo();
} }
async guardarLineasPresupuesto() { async guardarLineasPresupuesto() {
@ -1723,6 +1725,39 @@ class LineasPresupuesto {
this.table.columns.adjust(); this.table.columns.adjust();
this.checkLomo();
}
checkLomo() {
let lomo = 0.0;
for (let i = 0; i < this.table.rows().count(); i++) {
var rowData = this.table.row(i).data();
if (rowData.row_id !== 'lp_cubierta' && rowData.row_id !== 'lp_sobrecubierta' && rowData.row_id !== 'lp_guardas' && rowData.row_id !== 'lp_faja') {
if (rowData.lomo && rowData.lomo !== null && rowData.lomo !== '') {
lomo += parseFloat(rowData.lomo);
}
}
}
new Ajax('/presupuestoadmin/checklomointerior',
{ tipo_impresion_id: $("#tipo_impresion_id").val(), lomo: lomo}, {},
function (response) {
if (response.status !== true) {
popErrorAlert(response.message, 'sk-alert-lomo', false);
$(window).scrollTop(0);
}
else{
popAlert2Hide('sk-alert-lomo');
}
},
function (error) {
popErrorAlert(error.statusText? error.statusText : error);
}
).get();
} }