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('menuitems', 'Presupuestoadmin::menuItems', ['as' => 'menuItemsOfPresupuestoAdmin']);
$routes->get('checklomointerior', 'Presupuestoadmin::checkLomo');
$routes->get('cargar/(:any)', 'Presupuestoadmin::cargar/$1');
$routes->post('comparadorinterior', 'Presupuestoadmin::obtenerComparadorInterior');
$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()
{

View File

@ -459,9 +459,9 @@ return [
'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_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.",
'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.",
],
'resize_preview' => 'Refrescar vista esquema'

View File

@ -2079,15 +2079,14 @@ class PresupuestoService extends BaseService
if ($tirada == 1) {
$merma = 0;
}
else if ($tirada > intval($POD)) {
} else if ($tirada > intval($POD)) {
$merma = $tirada * 0.1;
} else {
$merma_lineas = [];
foreach ($formas_lineas_interior as $formas_linea) {
if ($formas_linea > $tirada)
array_push($merma_lineas, $formas_linea - $tirada);
else{
else {
$total_pliegos = ceil($tirada / $formas_linea);
$total_formas = $total_pliegos * $formas_linea;
array_push($merma_lineas, $total_formas - $tirada);
@ -2127,27 +2126,25 @@ class PresupuestoService extends BaseService
$presupuesto->titulo = $presupuesto->titulo . ' - ' . lang('Presupuestos.duplicado');
$presupuesto->is_duplicado = 1;
$presupuesto->estado_id = 1;
if($is_reimpresion && boolval($copy_files)){
if ($is_reimpresion && boolval($copy_files)) {
$presupuesto->inc_rei = "reimpresion";
$modelPedidoLinea = model('App\Models\Pedidos\PedidoLineaModel');
$pedido_linea = $modelPedidoLinea->where('presupuesto_id', $id)->first();
if($pedido_linea){
$text = "REIMPRESION [" . date('Y-m-d H:i:s') . "] - PEDIDO: " . $pedido_linea->pedido_id .
"\n================================================\n";
$presupuesto->comentarios_safekat = $text . $presupuesto->comentarios_safekat ;
}
}
else if($is_reimpresion){
$presupuesto->inc_rei = null;
$modelPedidoLinea = model('App\Models\Pedidos\PedidoLineaModel');
$pedido_linea = $modelPedidoLinea->where('presupuesto_id', $id)->first();
if($pedido_linea){
$text = "DUPLICADO [" . date('Y-m-d H:i:s') . "] - PEDIDO: " . $pedido_linea->pedido_id .
if ($pedido_linea) {
$text = "REIMPRESION [" . date('Y-m-d H:i:s') . "] - PEDIDO: " . $pedido_linea->pedido_id .
"\n================================================\n";
$presupuesto->comentarios_safekat = $text . $presupuesto->comentarios_safekat;
}
}
else{
} else if ($is_reimpresion) {
$presupuesto->inc_rei = null;
$modelPedidoLinea = model('App\Models\Pedidos\PedidoLineaModel');
$pedido_linea = $modelPedidoLinea->where('presupuesto_id', $id)->first();
if ($pedido_linea) {
$text = "DUPLICADO [" . date('Y-m-d H:i:s') . "] - PEDIDO: " . $pedido_linea->pedido_id .
"\n================================================\n";
$presupuesto->comentarios_safekat = $text . $presupuesto->comentarios_safekat;
}
} else {
$presupuesto->inc_rei = null;
}
$new_id = $modelPresupuesto->insert($presupuesto);
@ -2192,7 +2189,7 @@ class PresupuestoService extends BaseService
$presupuestoLineaModel->duplicateLineasPresupuesto($presupuesto->id, $new_id);
if (boolval($copy_files)== true) {
if (boolval($copy_files) == true) {
$presupuestoFilesModel = model('App\Models\Presupuestos\PresupuestoFicheroModel');
$presupuestoFilesModel->copyFiles($presupuesto->id, $new_id);
}
@ -2200,7 +2197,7 @@ class PresupuestoService extends BaseService
return [
'success' => true,
'id' => $new_id,
'message' => lang('Presupuestos.presupuestoGenerado'),
'message' => lang('Presupuestos.presupuestoGenerado'),
];
} catch (\Exception $e) {
@ -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() ?>
<?= view("themes/_commonPartialsBs/_alertBoxes") ?>
<div id="sk-alert-lomo"></div>
<?= view("themes/vuexy/form/presupuestos/cliente/loader") ?>
<?= !empty($validation->getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?>