Merge branch 'add/faja_cliente' into 'main'

Add/faja cliente

See merge request jjimenez/safekat!511
This commit is contained in:
2025-02-02 20:11:05 +00:00
24 changed files with 655 additions and 203 deletions

View File

@ -74,7 +74,7 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController
if ($this->request->getPost()) : if ($this->request->getPost()):
$nullIfEmpty = true; // !(phpversion() >= '8.1'); $nullIfEmpty = true; // !(phpversion() >= '8.1');
@ -84,36 +84,36 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController
$noException = true; $noException = true;
if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : if ($successfulResult = $this->canValidate()): // if ($successfulResult = $this->validate($this->formValidationRules) ) :
if ($this->canValidate()) : if ($this->canValidate()):
try { try {
$successfulResult = $this->model->skipValidation(true)->save($sanitizedData); $successfulResult = $this->model->skipValidation(true)->save($sanitizedData);
} catch (\Exception $e) { } catch (\Exception $e) {
$noException = false; $noException = false;
$this->dealWithException($e); $this->dealWithException($e);
} }
else : else:
$this->viewData['errorMessage'] = lang('Basic.global.formErr1', [lang('Basic.global.record')]); $this->viewData['errorMessage'] = lang('Basic.global.formErr1', [lang('Basic.global.record')]);
$this->session->setFlashdata('formErrors', $this->model->errors()); $this->session->setFlashdata('formErrors', $this->model->errors());
endif; endif;
$thenRedirect = true; // Change this to false if you want your user to stay on the form after submission $thenRedirect = true; // Change this to false if you want your user to stay on the form after submission
endif; endif;
if ($noException && $successfulResult) : if ($noException && $successfulResult):
$id = $this->model->db->insertID(); $id = $this->model->db->insertID();
$message = lang('Basic.global.saveSuccess', [lang('Basic.global.record')]) . '.'; $message = lang('Basic.global.saveSuccess', [lang('Basic.global.record')]) . '.';
if ($thenRedirect) : if ($thenRedirect):
if (!empty($this->indexRoute)) : if (!empty($this->indexRoute)):
return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message); return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message);
else : else:
return $this->redirect2listView('sweet-success', $message); return $this->redirect2listView('sweet-success', $message);
endif; endif;
else : else:
$this->session->setFlashData('sweet-success', $message); $this->session->setFlashData('sweet-success', $message);
endif; endif;
@ -133,20 +133,20 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController
public function edit($requestedId = null) public function edit($requestedId = null)
{ {
if ($requestedId == null) : if ($requestedId == null):
return $this->redirect2listView(); return $this->redirect2listView();
endif; endif;
$id = filter_var($requestedId, FILTER_SANITIZE_URL); $id = filter_var($requestedId, FILTER_SANITIZE_URL);
$papelGenerico = $this->model->find($id); $papelGenerico = $this->model->find($id);
if ($papelGenerico == false) : if ($papelGenerico == false):
$message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('PapelGenerico.papelGenerico')), $id]); $message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('PapelGenerico.papelGenerico')), $id]);
return $this->redirect2listView('sweet-error', $message); return $this->redirect2listView('sweet-error', $message);
endif; endif;
if ($this->request->getPost()) : if ($this->request->getPost()):
$nullIfEmpty = true; // !(phpversion() >= '8.1'); $nullIfEmpty = true; // !(phpversion() >= '8.1');
@ -160,23 +160,23 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController
$sanitizedData['show_in_client_special'] = false; $sanitizedData['show_in_client_special'] = false;
} }
if($sanitizedData['show_in_client_special']){ if ($sanitizedData['show_in_client_special']) {
$sanitizedData['show_in_client'] = true; $sanitizedData['show_in_client'] = true;
} }
$noException = true; $noException = true;
if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : if ($successfulResult = $this->canValidate()): // if ($successfulResult = $this->validate($this->formValidationRules) ) :
if ($this->canValidate()) : if ($this->canValidate()):
try { try {
$successfulResult = $this->model->skipValidation(true)->update($id, $sanitizedData); $successfulResult = $this->model->skipValidation(true)->update($id, $sanitizedData);
} catch (\Exception $e) { } catch (\Exception $e) {
$noException = false; $noException = false;
$this->dealWithException($e); $this->dealWithException($e);
} }
else : else:
$this->viewData['warningMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('PapelGenerico.papelGenerico'))]); $this->viewData['warningMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('PapelGenerico.papelGenerico'))]);
$this->session->setFlashdata('formErrors', $this->model->errors()); $this->session->setFlashdata('formErrors', $this->model->errors());
@ -186,17 +186,17 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController
$thenRedirect = false; $thenRedirect = false;
endif; endif;
if ($noException && $successfulResult) : if ($noException && $successfulResult):
$id = $papelGenerico->id ?? $id; $id = $papelGenerico->id ?? $id;
$message = lang('Basic.global.updateSuccess', [lang('Basic.global.record')]).'.'; $message = lang('Basic.global.updateSuccess', [lang('Basic.global.record')]) . '.';
if ($thenRedirect) : if ($thenRedirect):
if (!empty($this->indexRoute)) : if (!empty($this->indexRoute)):
return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message); return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message);
else : else:
return $this->redirect2listView('sweet-success', $message); return $this->redirect2listView('sweet-success', $message);
endif; endif;
else : else:
$this->session->setFlashData('sweet-success', $message); $this->session->setFlashData('sweet-success', $message);
endif; endif;
@ -300,12 +300,11 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController
$tirada = goSanitize($this->request->getGet('tirada'))[0] ?? null; $tirada = goSanitize($this->request->getGet('tirada'))[0] ?? null;
$POD = null; $POD = null;
if($tirada != null){ if ($tirada != null) {
$POD_value = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; $POD_value = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value;
if(intval($tirada) <= intval($POD_value)){ if (intval($tirada) <= intval($POD_value)) {
$POD = true; $POD = true;
} } else {
else{
$POD = false; $POD = false;
} }
} }
@ -313,16 +312,37 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController
$selected_papel = goSanitize($this->request->getGet('papel'))[0] ?? null; $selected_papel = goSanitize($this->request->getGet('papel'))[0] ?? null;
$cubierta = goSanitize($this->request->getGet('cubierta'))[0] ?? 0; $cubierta = goSanitize($this->request->getGet('cubierta'))[0] ?? 0;
$tapa_dura = goSanitize($this->request->getGet('tapa_dura'))[0] ?? null; $tapa_dura = goSanitize($this->request->getGet('tapa_dura'))[0] ?? null;
$sobrecubierta = goSanitize($this->request->getGet('sobrecubierta'))[0] ?? 0;
$ancho = floatval($this->request->getGet('ancho') ?? 0); $ancho = floatval($this->request->getGet('ancho') ?? 0);
$alto = floatval($this->request->getGet('alto') ?? 0); $alto = floatval($this->request->getGet('alto') ?? 0);
$solapas = floatval($this->request->getGet('solapas') ?? 0); $solapas = floatval($this->request->getGet('solapas') ?? 0);
$lomo = floatval($this->request->getGet('lomo') ?? 0); $lomo = floatval($this->request->getGet('lomo') ?? 0);
$anchoLibro = 2* $ancho + 2 * $solapas + $lomo; $forSelect2 = intval($this->request->getGet('forSelect2') ?? 0);
$menu = $this->model->getPapelCliente($tipo, $cubierta, $selected_papel, $tapa_dura, false, $POD, $anchoLibro, $alto, $tirada); $anchoLibro = 2 * $ancho + 2 * $solapas + $lomo;
$menu2 = $this->model->getPapelCliente($tipo, $cubierta, $selected_papel, $tapa_dura, true, $POD, $anchoLibro, $alto, $tirada);
$menu = $this->model->getPapelCliente($tipo, $cubierta, $sobrecubierta, $selected_papel, $tapa_dura, false, $POD, $anchoLibro, $alto, $tirada);
$menu2 = $this->model->getPapelCliente($tipo, $cubierta, $sobrecubierta, $selected_papel, $tapa_dura, true, $POD, $anchoLibro, $alto, $tirada);
if ($forSelect2) {
$menu = array_map(function ($item) {
if (isset($item->id)) {
return [
'id' => $item->id,
'name' => $item->nombre
];
} else {
return [
'id' => $item->gramaje,
'name' => $item->gramaje
];
}
}, $menu);
return $this->respond($menu);
}
$newTokenHash = csrf_hash(); $newTokenHash = csrf_hash();
$csrfTokenName = csrf_token(); $csrfTokenName = csrf_token();
@ -345,17 +365,17 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController
$tirada = goSanitize($this->request->getGet('tirada'))[0] ?? null; $tirada = goSanitize($this->request->getGet('tirada'))[0] ?? null;
$POD = null; $POD = null;
if($tirada != null){ if ($tirada != null) {
$POD_value = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; $POD_value = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value;
if(intval($tirada) <= intval($POD_value)){ if (intval($tirada) <= intval($POD_value)) {
$POD = true; $POD = true;
} } else {
else{
$POD = false; $POD = false;
} }
} }
$tipo = goSanitize($this->request->getGet('tipo'))[0]; $tipo = goSanitize($this->request->getGet('tipo'))[0];
$cubierta = goSanitize($this->request->getGet('cubierta'))[0] ?? 0; $cubierta = goSanitize($this->request->getGet('cubierta'))[0] ?? 0;
$sobrecubierta = goSanitize($this->request->getGet('sobrecubierta'))[0] ?? 0;
$ancho = floatval($this->request->getGet('ancho') ?? 0); $ancho = floatval($this->request->getGet('ancho') ?? 0);
$alto = floatval($this->request->getGet('alto') ?? 0); $alto = floatval($this->request->getGet('alto') ?? 0);
@ -364,9 +384,9 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController
$tapa_dura = $this->request->getGet('tapa_dura') ?? 0; $tapa_dura = $this->request->getGet('tapa_dura') ?? 0;
$anchoLibro = 2* $ancho + 2 * $solapas + $lomo; $anchoLibro = 2 * $ancho + 2 * $solapas + $lomo;
$items = $this->model->getPapelCliente($tipo, $cubierta, null, $tapa_dura, true, $POD, $anchoLibro, $alto, $tirada); $items = $this->model->getPapelCliente($tipo, $cubierta, $sobrecubierta, null, $tapa_dura, true, $POD, $anchoLibro, $alto, $tirada);
$items = array_map(function ($item) { $items = array_map(function ($item) {
return [ return [
'id' => $item->id, 'id' => $item->id,

View File

@ -97,6 +97,7 @@ class Presupuestoacabados extends \App\Controllers\BaseResourceController
$values = $model->getPrecioTarifa($tarifa['tarifa_id'], $tirada, $proveedor, $POD); $values = $model->getPrecioTarifa($tarifa['tarifa_id'], $tirada, $proveedor, $POD);
$values[0]->cubierta = $tarifa['cubierta'] ?? 0; $values[0]->cubierta = $tarifa['cubierta'] ?? 0;
$values[0]->sobrecubierta = $tarifa['sobrecubierta'] ?? 0; $values[0]->sobrecubierta = $tarifa['sobrecubierta'] ?? 0;
$values[0]->faja = $tarifa['faja'] ?? 0;
array_push($result, $values[0]); array_push($result, $values[0]);
} }
} }

View File

@ -495,6 +495,12 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
} else { } else {
$data['datosLibro']['acabadoSobrecubierta']['text'] = $modelAcabado->find($presupuesto->acabado_sobrecubierta_id)->nombre; $data['datosLibro']['acabadoSobrecubierta']['text'] = $modelAcabado->find($presupuesto->acabado_sobrecubierta_id)->nombre;
} }
$data['datosLibro']['acabadoFaja']['id'] = $presupuesto->acabado_faja_id;
if ($presupuesto->acabado_faja_id == 0) {
$data['datosLibro']['acabadoFaja']['text'] = "Ninguno";
} else {
$data['datosLibro']['acabadoFaja']['text'] = $modelAcabado->find($presupuesto->acabado_faja_id)->nombre;
}
$data['datosLibro']['prototipo'] = $presupuesto->prototipo; $data['datosLibro']['prototipo'] = $presupuesto->prototipo;
$data['datosLibro']['ferro'] = $presupuesto->ferro; $data['datosLibro']['ferro'] = $presupuesto->ferro;
$data['datosLibro']['ferroDigital'] = $presupuesto->ferro_digital; $data['datosLibro']['ferroDigital'] = $presupuesto->ferro_digital;

View File

@ -540,6 +540,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
'cubierta' => $cubierta, 'cubierta' => $cubierta,
'sobrecubierta' => $sobrecubierta, 'sobrecubierta' => $sobrecubierta,
'datos_guardas' => $datos_guardas, 'datos_guardas' => $datos_guardas,
'faja' => $faja,
'servicios' => $reqData['servicios'] ?? [], 'servicios' => $reqData['servicios'] ?? [],
); );
@ -694,7 +695,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$excluirRotativa = $reqData['excluirRotativa'] ?? 0; $excluirRotativa = $reqData['excluirRotativa'] ?? 0;
$excluirRotativa = intval($excluirRotativa); $excluirRotativa = intval($excluirRotativa);
$tipo = $reqData['tipo'] ??'cosido'; $tipo = $reqData['tipo'] ?? 'cosido';
$tipoCubierta = 'blanda'; // solapas sólo tapa blanda y sobre cubierta $tipoCubierta = 'blanda'; // solapas sólo tapa blanda y sobre cubierta
$isColor = intval($reqData['isColor']) ?? 0; $isColor = intval($reqData['isColor']) ?? 0;
@ -1054,6 +1055,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
'cubierta' => $cubierta, 'cubierta' => $cubierta,
'sobrecubierta' => $sobrecubierta, 'sobrecubierta' => $sobrecubierta,
'datos_guardas' => $datos_guardas, 'datos_guardas' => $datos_guardas,
'faja' => $faja,
'servicios' => $reqData['servicios'] ?? [], 'servicios' => $reqData['servicios'] ?? [],
); );
@ -1241,6 +1243,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$resultado_presupuesto['info']['merma'] = $this->calcular_merma($selected_tirada, $POD); $resultado_presupuesto['info']['merma'] = $this->calcular_merma($selected_tirada, $POD);
$datos_presupuesto['faja'] = $faja;
$id = $model_presupuesto->insertarPresupuestoCliente( $id = $model_presupuesto->insertarPresupuestoCliente(
$id, $id,
$selected_tirada, $selected_tirada,
@ -1267,6 +1271,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$this->guardarLineaPresupuesto($id, $resultado_presupuesto['values']['cubierta']); $this->guardarLineaPresupuesto($id, $resultado_presupuesto['values']['cubierta']);
if (count($resultado_presupuesto['values']['sobrecubierta']) > 0) if (count($resultado_presupuesto['values']['sobrecubierta']) > 0)
$this->guardarLineaPresupuesto($id, $resultado_presupuesto['values']['sobrecubierta']); $this->guardarLineaPresupuesto($id, $resultado_presupuesto['values']['sobrecubierta']);
if (count($resultado_presupuesto['values']['faja']) > 0)
$this->guardarLineaPresupuesto($id, $resultado_presupuesto['values']['faja']);
if (count($resultado_presupuesto['values']['guardas']) > 0) if (count($resultado_presupuesto['values']['guardas']) > 0)
$this->guardarLineaPresupuesto($id, $resultado_presupuesto['values']['guardas']); $this->guardarLineaPresupuesto($id, $resultado_presupuesto['values']['guardas']);
@ -1293,6 +1299,17 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
} }
} }
}
if (intval($faja['acabado']) > 0) {
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
$servicio = $model->getPrecioTarifa(intval($faja['acabado']), intval($selected_tirada), -1, $POD);
if (count($servicio) > 0) {
if ($servicio[0]->total > 0) {
$this->guardarServicio($id, $servicio[0], 'acabado', false, false, true);
}
}
} }
foreach ($resultado_presupuesto['values']['serviciosDefecto']['encuadernacion'] as $servicio) { foreach ($resultado_presupuesto['values']['serviciosDefecto']['encuadernacion'] as $servicio) {
$this->guardarServicio($id, $servicio, 'encuadernacion'); $this->guardarServicio($id, $servicio, 'encuadernacion');
@ -1475,6 +1492,21 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$data['sobrecubierta']['acabado']['text'] = $modelAcabado->find($presupuesto->acabado_sobrecubierta_id)->nombre; $data['sobrecubierta']['acabado']['text'] = $modelAcabado->find($presupuesto->acabado_sobrecubierta_id)->nombre;
} }
if (array_key_exists('faja', $datos_papel)) {
$data['faja']['papel'] = $datos_papel['faja'];
$data['faja']['alto'] = $presupuesto->alto_faja_color;
$data['faja']['solapas'] = 1;
$data['faja']['solapas_ancho'] = $presupuesto->solapas_ancho_faja_color;
$data['faja']['acabado']['id'] = $presupuesto->acabado_sobrecubierta_id;
if ($presupuesto->acabado_faja_id == 0) {
$data['faja']['acabado']['text'] = "Ninguno";
} else {
$data['faja']['acabado']['text'] = $modelAcabado->find($presupuesto->acabado_faja_id)->nombre;
}
} else {
$data['faja'] = [];
}
$data['guardas'] = array_key_exists('guardas', $datos_papel) ? $datos_papel['guardas'] : []; $data['guardas'] = array_key_exists('guardas', $datos_papel) ? $datos_papel['guardas'] : [];
$modelLinea = new PresupuestoLineaModel(); $modelLinea = new PresupuestoLineaModel();
@ -1586,11 +1618,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
if (!is_null($new_name)) { if (!is_null($new_name)) {
$path = WRITEPATH . 'uploads/presupuestos/' . $new_name; $path = WRITEPATH . 'uploads/presupuestos/' . $new_name;
move_uploaded_file($tmp_name, $path); move_uploaded_file($tmp_name, $path);
<<<<<<< HEAD
=======
>>>>>>> main
} }
} }
$ftp->uploadFilePresupuesto($presupuesto_id); $ftp->uploadFilePresupuesto($presupuesto_id);
@ -1684,7 +1711,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
} }
protected function guardarServicio($presupuestoId, $servicio, $tipo, $cubierta = false, $sobrecubierta = false) protected function guardarServicio($presupuestoId, $servicio, $tipo, $cubierta = false, $sobrecubierta = false, $faja = false)
{ {
if ($tipo == 'encuadernacion') { if ($tipo == 'encuadernacion') {
@ -1728,6 +1755,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
'proveedor_id' => $servicio->proveedor_id, 'proveedor_id' => $servicio->proveedor_id,
'cubierta' => $cubierta, 'cubierta' => $cubierta,
'sobrecubierta' => $sobrecubierta, 'sobrecubierta' => $sobrecubierta,
'faja' => $faja,
]; ];
$model->insert($data); $model->insert($data);
} else if ($tipo == 'manipulado') { } else if ($tipo == 'manipulado') {
@ -1840,6 +1868,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
// Sobrecubierta // Sobrecubierta
$sobreCubierta = $datos_entrada["sobrecubierta"] ?? null; $sobreCubierta = $datos_entrada["sobrecubierta"] ?? null;
// Faja
$faja = $datos_entrada["faja"] ?? null;
// Guardas // Guardas
$datos_guardas = $datos_entrada['datos_guardas'] ?? []; $datos_guardas = $datos_entrada['datos_guardas'] ?? [];
@ -2251,6 +2282,92 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
} }
} }
} }
$coste_faja = 0.0;
$peso_faja = 0.0;
$linea_faja = [];
$acabadoFaja = [];
if (!is_null($faja) && $faja && $faja != false) {
$input_data['papel_generico']['id'] = $faja['papel'] ?? 0;
$input_data['gramaje'] = $faja['gramaje'] ?? 0;
$input_data['datosPedido']->paginas = 4;
$input_data['datosPedido']->alto = floatval($faja['alto'] ?? 0);
$input_data['paginas_color'] = 4;
$input_data['datosPedido']->solapas_ancho = intval($faja['solapas'] ?? 0);
$input_data['datosPedido']->solapas = 1;
$input_data['datosPedido']->lomo = $this->calcular_lomo([$cubierta], $input_data['datosPedido']->lomo);
$input_data['isColor'] = 1;
$input_data['isHq'] = 1;
$input_data['uso'] = 'faja';
$linea_faja = PresupuestoClienteService::obtenerSobrecubierta($input_data);
if (count($linea_faja) > 0) {
$linea_faja['tipo_linea'] = 'lp_faja';
$coste_faja += floatval($linea_faja['total_impresion']);
$peso_faja += floatval($linea_faja['peso']);
if ($extra_info) {
$this->calcular_coste_linea(
$linea_faja,
$totalPapel,
$margenPapel,
$sumForFactor,
$totalImpresion,
$margenImpresion
);
}
}
if ($coste_faja <= 0) {
$errorModel = new ErrorPresupuesto();
$errorModel->insertError(
$datos_entrada['id'],
auth()->user()->id,
'No se puede obtener la faja',
$input_data
);
$return_data = [
'errors' => (object) ([
'status' => 1
]),
];
return $return_data;
}
// Acabado faja
if (intval($faja['acabado']) != 0) {
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
$acabadoFaja = $model->getPrecioTarifa(intval($faja['acabado']), $datosPedido->tirada, -1, $POD);
if (count($acabadoFaja) > 0) {
if ($acabadoFaja[0]->total <= 0) {
$input_data['tarifas_acabado_faja'] = intval($faja['acabado']);
$errorModel = new ErrorPresupuesto();
$errorModel->insertError(
$datos_entrada['id'],
auth()->user()->id,
'No se puede obtener acabados de faja',
$input_data
);
$return_data = [
'errors' => (object) ([
'status' => 1
]),
];
return $return_data;
}
$coste_servicios += floatval($acabadoFaja[0]->total);
}
}
}
if ($extra_info) { if ($extra_info) {
$totalPapel -= $margenPapel; $totalPapel -= $margenPapel;
$totalImpresion -= $margenImpresion; $totalImpresion -= $margenImpresion;
@ -2388,11 +2505,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_plegado_exceso_solapas_faja')->value 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_plegado_exceso_solapas_faja')->value
]; ];
<<<<<<< HEAD
// se comprueba si $datos guardas es un array // se comprueba si $datos guardas es un array
=======
// se comprueba si $datos guardas es un array
>>>>>>> main
if (is_array($datos_guardas)) { if (is_array($datos_guardas)) {
if (count($datos_guardas) > 0) { if (count($datos_guardas) > 0) {
array_push($servicios, $servicio_plegado_guardas); // Plegado de guardas array_push($servicios, $servicio_plegado_guardas); // Plegado de guardas
@ -2411,18 +2524,13 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
array_push($servicios, $servicio_prototipo); array_push($servicios, $servicio_prototipo);
if ($datos_entrada['servicios']['ferro']) // extra if ($datos_entrada['servicios']['ferro']) // extra
array_push($servicios, $servicio_ferro); array_push($servicios, $servicio_ferro);
if ($input_data['datosPedido']->solapas_ancho > 0) if ($solapasCubierta > 0)
array_push($servicios, $servicio_solapas_cubierta); array_push($servicios, $servicio_solapas_cubierta);
if (!is_null($sobreCubierta) && $sobreCubierta) // Si hay sobrecubierta, siempre con solapas if (!is_null($sobreCubierta) && $sobreCubierta) // Si hay sobrecubierta, siempre con solapas
array_push($servicios, $servicio_solapas_sobrecubierta); array_push($servicios, $servicio_solapas_sobrecubierta);
<<<<<<< HEAD if(!is_null($faja) && $faja && $faja != false) // Si hay faja, siempre con solapas
/* TO-DO
=======
/* TO-DO
>>>>>>> main
if (!is_null($faja) && $faja) // Si hay faja, siempre con solapas
array_push($servicios, $servicio_solapas_faja); array_push($servicios, $servicio_solapas_faja);
*/
foreach ($servicios as $servicio) { foreach ($servicios as $servicio) {
@ -2487,8 +2595,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$totalServicios += floatval($resultado[0]->precio); $totalServicios += floatval($resultado[0]->precio);
$margenServicios += floatval($resultado[0]->precio) * floatval($resultado[0]->margen) / 100.0; $margenServicios += floatval($resultado[0]->precio) * floatval($resultado[0]->margen) / 100.0;
} }
} } else if ($servicio->nombre == 'solapas_cubierta' || $servicio->nombre == 'solapas_sobrecubierta' || $servicio->nombre == 'solapas_faja') {
else if ($servicio->nombre == 'solapas_cubierta' || $servicio->nombre == 'solapas_sobrecubierta' || $servicio->nombre == 'solapas_faja'){
// Servicios manipulado // Servicios manipulado
$resultado = PresupuestoCLienteService::getServiciosManipulado([ $resultado = PresupuestoCLienteService::getServiciosManipulado([
'tarifa_id' => intval($servicio->id), 'tarifa_id' => intval($servicio->id),
@ -2593,8 +2700,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
} }
} }
// TO-DO Faja
array_push($precio_u, round(($costeInterior + $coste_cubierta + $coste_sobrecubierta + $costeServiciosDefecto + $coste_servicios) / $tirada[$t], 4)); array_push($precio_u, round(($costeInterior + $coste_cubierta + $coste_sobrecubierta + $costeServiciosDefecto + $coste_servicios) / $tirada[$t], 4));
array_push($peso, round($peso_interior + $peso_cubierta + $peso_sobrecubierta + $peso_guardas, 2)); array_push($peso, round($peso_interior + $peso_cubierta + $peso_sobrecubierta + $peso_guardas, 2));
@ -2638,6 +2743,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$return_data['values']['cubierta'] = $cubierta; $return_data['values']['cubierta'] = $cubierta;
$return_data['values']['sobrecubierta'] = $linea_sobrecubierta; $return_data['values']['sobrecubierta'] = $linea_sobrecubierta;
$return_data['values']['guardas'] = $guardas; $return_data['values']['guardas'] = $guardas;
$return_data['values']['faja'] = $linea_faja;
$return_data['values']['serviciosDefecto']['encuadernacion'] = $servDefectoEnc; $return_data['values']['serviciosDefecto']['encuadernacion'] = $servDefectoEnc;
$return_data['values']['serviciosDefecto']['manipulado'] = $servDefectoMan; $return_data['values']['serviciosDefecto']['manipulado'] = $servDefectoMan;
$return_data['values']['servicios_automaticos'] = $serviciosAutomaticos; $return_data['values']['servicios_automaticos'] = $serviciosAutomaticos;
@ -2980,6 +3086,11 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$return_data['sobrecubierta']['papel'] = $modelPapelGenerico->getCodeFromId($linea->papel_id); $return_data['sobrecubierta']['papel'] = $modelPapelGenerico->getCodeFromId($linea->papel_id);
$return_data['sobrecubierta']['gramaje'] = $linea->gramaje; $return_data['sobrecubierta']['gramaje'] = $linea->gramaje;
$return_data['sobrecubierta']['paginas'] = $linea->paginas; $return_data['sobrecubierta']['paginas'] = $linea->paginas;
} else if ($linea->tipo == 'lp_faja') {
$return_data['faja']['papel'] = $modelPapelGenerico->getNombre($linea->papel_id)['nombre'];
$return_data['faja']['papel_id'] = $linea->papel_id;
$return_data['faja']['gramaje'] = $linea->gramaje;
$return_data['faja']['paginas'] = $linea->paginas;
} else if ($linea->tipo == 'lp_guardas') { } else if ($linea->tipo == 'lp_guardas') {
$return_data['guardas']['papel'] = $modelPapelGenerico->getCodeFromId($linea->papel_id); $return_data['guardas']['papel'] = $modelPapelGenerico->getCodeFromId($linea->papel_id);
$return_data['guardas']['gramaje'] = $linea->gramaje; $return_data['guardas']['gramaje'] = $linea->gramaje;

View File

@ -90,6 +90,9 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro
$json_data_manipulado = $reqData['json_manipulado'] ?? null; $json_data_manipulado = $reqData['json_manipulado'] ?? null;
$cliente_id = $reqData['cliente_id'] ?? 0; $cliente_id = $reqData['cliente_id'] ?? 0;
$faja_alto = $reqData['faja_alto'] ?? 0;
$solapas_faja = $reqData['solapas_faja'] ?? 0;
$tipo_impresion_id = $reqData['tipo_impresion_id'] ?? 4; $tipo_impresion_id = $reqData['tipo_impresion_id'] ?? 4;
$values = []; $values = [];
@ -120,14 +123,27 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro
} else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) { } else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) {
$datosPedido->isCosido = false; $datosPedido->isCosido = false;
} }
} else if ($linea['row_id'] == 'lp_sobrecubierta' || $linea['row_id'] == 'lp_cubierta') { } else if ($linea['row_id'] == 'lp_sobrecubierta' || $linea['row_id'] == 'lp_cubierta' || $linea['row_id'] == 'lp_faja') {
$datosPedido->solapas = $datosPedido->solapas = $reqData['solapas_cubierta'];
$linea['row_id'] == 'lp_cubierta' ? $reqData['solapas_cubierta'] : $reqData['solapas_sobrecubierta']; if ($linea['row_id'] == 'lp_faja') {
$datosPedido->solapas_ancho = $datosPedido->solapas = $solapas_faja;
$linea['row_id'] == 'lp_cubierta' ? $reqData['solapas_cubierta_ancho'] : $reqData['solapas_sobrecubierta_ancho']; } else if ($linea['row_id'] == 'lp_sobrecubierta') {
$datosPedido->solapas = $reqData['solapas_sobrecubierta'];
}
$datosPedido->solapas_ancho = $reqData['solapas_cubierta_ancho'];
if ($linea['row_id'] == 'lp_faja') {
$datosPedido->solapas_ancho = $solapas_faja;
} else if ($linea['row_id'] == 'lp_sobrecubierta') {
$datosPedido->solapas_ancho = $reqData['solapas_sobrecubierta_ancho'];
}
$datosPedido->lomo = $reqData['lomo']; $datosPedido->lomo = $reqData['lomo'];
$type = $linea['row_id'] == 'lp_cubierta' ? 'cubierta' : 'sobrecubierta'; $type = 'lp_cubierta';
if ($linea['row_id'] == 'lp_sobrecubierta') {
$type = 'lp_sobrecubierta';
} else if ($linea['row_id'] == 'lp_faja') {
$type = 'lp_faja';
}
$datosPedido->anchoExteriores = PresupuestoService::getAnchoTotalExteriores($type, $tipo_impresion_id, $datosPedido); $datosPedido->anchoExteriores = PresupuestoService::getAnchoTotalExteriores($type, $tipo_impresion_id, $datosPedido);
$datosPedido->altoExteriores = PresupuestoService::getAltoTotalExteriores($type, $tipo_impresion_id, $datosPedido); $datosPedido->altoExteriores = PresupuestoService::getAltoTotalExteriores($type, $tipo_impresion_id, $datosPedido);
@ -174,6 +190,9 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro
case 'lp_sobrecubierta': case 'lp_sobrecubierta':
$uso = 'sobrecubierta'; $uso = 'sobrecubierta';
break; break;
case 'lp_faja':
$uso = 'faja';
break;
case 'lp_guardas': case 'lp_guardas':
$uso = 'guardas'; $uso = 'guardas';
break; break;
@ -185,7 +204,7 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro
break; break;
} }
if ($uso == 'cubierta' || $uso == 'sobrecubierta' || $uso == 'guardas') { if ($uso == 'cubierta' || $uso == 'sobrecubierta' || $uso == 'faja' || $uso == 'guardas') {
$isColor = true; $isColor = true;
$isHq = true; $isHq = true;
$tipo = 'colorhq'; $tipo = 'colorhq';
@ -233,6 +252,10 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro
$datosLinea['gramaje'] = $linea['gramaje'] ?? 0; $datosLinea['gramaje'] = $linea['gramaje'] ?? 0;
if ($linea['row_id'] != 'lp_rot_bn' && $linea['row_id'] != 'lp_rot_color') { if ($linea['row_id'] != 'lp_rot_bn' && $linea['row_id'] != 'lp_rot_color') {
$data = $datosLinea;
if($uso=='faja'){
$data['datosPedido']->alto = $faja_alto;
}
$linea_coste = PresupuestoService::getLineaPresupuestoPlana($datosLinea); $linea_coste = PresupuestoService::getLineaPresupuestoPlana($datosLinea);
} else { } else {
$linea_coste = PresupuestoService::getLineaPresupuestoRotativa($datosLinea); $linea_coste = PresupuestoService::getLineaPresupuestoRotativa($datosLinea);
@ -339,8 +362,8 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro
$peso_libro = floatval($reqData['peso_libro']); $peso_libro = floatval($reqData['peso_libro']);
// el primer envio con la tirada base // el primer envio con la tirada base
$model = model('App\Models\Tarifas\TarifaEnvioModel'); $model = model('App\Models\Tarifas\TarifaEnvioModel');
$envios = $model->getTarifaEnvio(1, 18000, $tirada_base * $peso_libro/1000.0, "cajas"); $envios = $model->getTarifaEnvio(1, 18000, $tirada_base * $peso_libro / 1000.0, "cajas");
$resultado = $this->calcular_envio($envios, $tirada_base * $peso_libro/1000.0); $resultado = $this->calcular_envio($envios, $tirada_base * $peso_libro / 1000.0);
$coste_envio += $resultado->coste; $coste_envio += $resultado->coste;
$margen_envio += $resultado->margen; $margen_envio += $resultado->margen;
@ -348,7 +371,7 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro
$json_envios = json_decode($json_envios, true); $json_envios = json_decode($json_envios, true);
if (count($json_envios) > 0) { if (count($json_envios) > 0) {
//la primera linea es el envio base //la primera linea es el envio base
for($i = 1; $i < count($json_envios); $i++) { for ($i = 1; $i < count($json_envios); $i++) {
$porcentaje = ($json_envios[$i]['cantidad']) / $tirada_base * 100.0; $porcentaje = ($json_envios[$i]['cantidad']) / $tirada_base * 100.0;
$cantidad = floor($reqData['tirada'] * $porcentaje / 100.0); $cantidad = floor($reqData['tirada'] * $porcentaje / 100.0);

View File

@ -19,6 +19,7 @@ class PresupuestoAcabadosEntity extends \CodeIgniter\Entity\Entity
"margen" => null, "margen" => null,
"cubierta" => null, "cubierta" => null,
"sobrecubierta" => null, "sobrecubierta" => null,
"faja" => null,
"created_at" => null, "created_at" => null,
"updated_at" => null, "updated_at" => null,
]; ];
@ -31,6 +32,7 @@ class PresupuestoAcabadosEntity extends \CodeIgniter\Entity\Entity
"margen" => "float", "margen" => "float",
"cubierta" => "int", "cubierta" => "int",
"sobrecubierta" => "int", "sobrecubierta" => "int",
"faja" => "int",
]; ];
public function maquinas() : array public function maquinas() : array

View File

@ -104,6 +104,7 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity
'excluir_rotativa' => null, 'excluir_rotativa' => null,
"acabado_cubierta_id" => null, "acabado_cubierta_id" => null,
"acabado_sobrecubierta_id" => null, "acabado_sobrecubierta_id" => null,
"acabado_faja_id" => null,
"is_duplicado" => false, "is_duplicado" => false,
'paginas_color_consecutivas' => null, 'paginas_color_consecutivas' => null,
'papel_interior_diferente' => null, 'papel_interior_diferente' => null,
@ -176,6 +177,7 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity
'excluir_rotativa' => "?boolean", 'excluir_rotativa' => "?boolean",
"acabado_cubierta_id" => "int", "acabado_cubierta_id" => "int",
"acabado_sobrecubierta_id" => "int", "acabado_sobrecubierta_id" => "int",
"acabado_faja_id" => "int",
"is_duplicado" => "boolean", "is_duplicado" => "boolean",
'paginas_color_consecutivas' => "boolean", 'paginas_color_consecutivas' => "boolean",
'papel_interior_diferente' => "boolean", 'papel_interior_diferente' => "boolean",

View File

@ -71,6 +71,7 @@ return [
'acabadosExteriores' => 'Acabados exteriores', 'acabadosExteriores' => 'Acabados exteriores',
'acabadoCubierta' => 'Acabado Cubierta', 'acabadoCubierta' => 'Acabado Cubierta',
'acabadoSobrecubierta' => 'Acabado Sobrecubierta', 'acabadoSobrecubierta' => 'Acabado Sobrecubierta',
'acabadoFaja' => 'Acabado Faja',
'cosido' => 'Cosido', 'cosido' => 'Cosido',
'ferro' => 'Ferro', 'ferro' => 'Ferro',
'ferroDigital' => 'Ferro Digital', 'ferroDigital' => 'Ferro Digital',
@ -125,6 +126,7 @@ return [
'faja' => 'Faja', 'faja' => 'Faja',
'altoFaja' => 'Alto faja', 'altoFaja' => 'Alto faja',
'papelFaja' => 'Papel faja', 'papelFaja' => 'Papel faja',
'gramajeFaja' => 'Gramaje faja',
'tamanioSolapasFaja' => 'Tamaño solapas faja', 'tamanioSolapasFaja' => 'Tamaño solapas faja',
'plastificadoFaja' => 'Plastificado faja', 'plastificadoFaja' => 'Plastificado faja',
'estucadoMate170gr' => 'Estucado mate 170 gr', 'estucadoMate170gr' => 'Estucado mate 170 gr',
@ -263,7 +265,7 @@ return [
'formatoLibro' => "Formato libro", 'formatoLibro' => "Formato libro",
'selectCliente' => "Seleccione cliente", 'selectCliente' => "Seleccione cliente",
'selectPapel' => "Seleccione papel", 'selectPapel' => "Seleccione papel",
'selectGramaje' => "Seleccione gramaje",
// Preview // Preview
'preview' => 'Previsualización de configuraciones', 'preview' => 'Previsualización de configuraciones',
@ -370,6 +372,7 @@ return [
'opcion_solapas' => 'Seleccione la opción para las solapas', 'opcion_solapas' => 'Seleccione la opción para las solapas',
'paginas_multiplo_4' => 'El número de páginas para <b>cosido</b> o <b>grapado</b> debe ser múltiplo de 4', 'paginas_multiplo_4' => 'El número de páginas para <b>cosido</b> o <b>grapado</b> debe ser múltiplo de 4',
'paginas_pares' => 'El número de páginas debe ser par', 'paginas_pares' => 'El número de páginas debe ser par',
'extras_cubierta' => 'Rellene todos los campos',
], ],
'errores' => [ 'errores' => [

View File

@ -129,16 +129,16 @@ class PapelGenericoModel extends \App\Models\BaseModel
return empty($search) return empty($search)
? $builder ? $builder
: $builder : $builder
->groupStart() ->groupStart()
->like("t1.id", $search) ->like("t1.id", $search)
->orLike("t1.nombre", $search) ->orLike("t1.nombre", $search)
->orLike("t1.code", $search) ->orLike("t1.code", $search)
->orLike("t1.code_ot", $search) ->orLike("t1.code_ot", $search)
->orLike("t1.id", $search) ->orLike("t1.id", $search)
->orLike("t1.nombre", $search) ->orLike("t1.nombre", $search)
->orLike("t1.code", $search) ->orLike("t1.code", $search)
->orLike("t1.code_ot", $search) ->orLike("t1.code_ot", $search)
->groupEnd(); ->groupEnd();
} }
@ -413,6 +413,7 @@ class PapelGenericoModel extends \App\Models\BaseModel
public function getPapelCliente( public function getPapelCliente(
$tipo, $tipo,
$is_cubierta = false, $is_cubierta = false,
$is_sobrecubierta = false,
$selected_papel_id = null, $selected_papel_id = null,
$tapa_dura = null, $tapa_dura = null,
$papel_especial = false, $papel_especial = false,
@ -517,6 +518,9 @@ class PapelGenericoModel extends \App\Models\BaseModel
if ($tapa_dura == true) { if ($tapa_dura == true) {
$builder->where("t2.use_for_tapa_dura", 1); $builder->where("t2.use_for_tapa_dura", 1);
} }
} else if ($is_sobrecubierta == true) {
$builder->where("t2.sobrecubierta", 1);
$builder->where("t5.uso", 'sobrecubierta');
} else { } else {
$builder->where("t2.interior", 1); $builder->where("t2.interior", 1);
$builder->where("t5.uso", 'interior'); $builder->where("t5.uso", 'interior');

View File

@ -22,7 +22,7 @@ class PresupuestoAcabadosModel extends \App\Models\BaseModel
3 => "t1.precio_total" 3 => "t1.precio_total"
]; ];
protected $allowedFields = ["presupuesto_id", "tarifa_acabado_id", "proveedor_id", "nombre", "precio_total", "precio_unidad", "margen", "cubierta", "sobrecubierta"]; protected $allowedFields = ["presupuesto_id", "tarifa_acabado_id", "proveedor_id", "nombre", "precio_total", "precio_unidad", "margen", "cubierta", "sobrecubierta", "faja"];
protected $returnType = "App\Entities\Presupuestos\PresupuestoAcabadosEntity"; protected $returnType = "App\Entities\Presupuestos\PresupuestoAcabadosEntity";
protected $useTimestamps = true; protected $useTimestamps = true;
@ -132,7 +132,8 @@ class PresupuestoAcabadosModel extends \App\Models\BaseModel
foreach($tarifas as $tarifa){ foreach($tarifas as $tarifa){
if($tarifa->tarifa_id == $result->tarifa_acabado_id && if($tarifa->tarifa_id == $result->tarifa_acabado_id &&
$tarifa->cubierta == $result->cubierta && $tarifa->cubierta == $result->cubierta &&
$tarifa->sobrecubierta == $result->sobrecubierta) $tarifa->sobrecubierta == $result->sobrecubierta &&
$tarifa->faja == $result->faja)
$found = true; $found = true;
} }
if(!$found){ if(!$found){
@ -162,6 +163,7 @@ class PresupuestoAcabadosModel extends \App\Models\BaseModel
$builder->where('tarifa_acabado_id', $tarifa->tarifa_id); $builder->where('tarifa_acabado_id', $tarifa->tarifa_id);
$builder->where('cubierta', $tarifa->cubierta); $builder->where('cubierta', $tarifa->cubierta);
$builder->where('sobrecubierta', $tarifa->sobrecubierta); $builder->where('sobrecubierta', $tarifa->sobrecubierta);
$builder->where('faja', $tarifa->faja);
$result = $builder->get()->getResultObject(); $result = $builder->get()->getResultObject();
if(count($result)>0){ if(count($result)>0){
$this->db $this->db
@ -174,6 +176,7 @@ class PresupuestoAcabadosModel extends \App\Models\BaseModel
->set('margen', $tarifa->margen) ->set('margen', $tarifa->margen)
->set('cubierta', $tarifa->cubierta) ->set('cubierta', $tarifa->cubierta)
->set('sobrecubierta', $tarifa->sobrecubierta) ->set('sobrecubierta', $tarifa->sobrecubierta)
->set('faja', $tarifa->faja)
->update(); ->update();
@ -189,6 +192,7 @@ class PresupuestoAcabadosModel extends \App\Models\BaseModel
->set('margen', $tarifa->margen) ->set('margen', $tarifa->margen)
->set('cubierta', $tarifa->cubierta) ->set('cubierta', $tarifa->cubierta)
->set('sobrecubierta', $tarifa->sobrecubierta) ->set('sobrecubierta', $tarifa->sobrecubierta)
->set('faja', $tarifa->faja)
->insert(); ->insert();
} }
} }
@ -208,6 +212,7 @@ class PresupuestoAcabadosModel extends \App\Models\BaseModel
->select( ->select(
"t1.id AS id, t1.tarifa_acabado_id AS tarifa_acabado_id, t1.tarifa_acabado_id AS tarifa_id, t1.precio_unidad AS precio_unidad, "t1.id AS id, t1.tarifa_acabado_id AS tarifa_acabado_id, t1.tarifa_acabado_id AS tarifa_id, t1.precio_unidad AS precio_unidad,
t1.precio_total AS precio_total, t1.margen AS margen, t2.nombre AS nombre, t1.cubierta AS cubierta, t1.sobrecubierta AS sobrecubierta, t1.precio_total AS precio_total, t1.margen AS margen, t2.nombre AS nombre, t1.cubierta AS cubierta, t1.sobrecubierta AS sobrecubierta,
t1.faja AS faja,
t1.proveedor_id AS proveedor_id, t3.nombre AS proveedor," t1.proveedor_id AS proveedor_id, t3.nombre AS proveedor,"
); );

View File

@ -71,14 +71,26 @@ class PresupuestoManipuladosModel extends \App\Models\BaseModel
return $ret_array; return $ret_array;
} }
else{ else{
$ret_array[] = (object)[ if(is_array($tarifa_manipulado_id)){
'tarifa_id'=> $tarifa_manipulado_id, $ret_array[] = (object)[
'tarifa_nombre'=> $modelTarifa->getNombreTarifaManipulado($tarifa_manipulado_id)[0]->nombre, 'tarifa_id'=> $tarifa_manipulado_id['id'],
'nombre'=> $modelTarifa->getNombreTarifaManipulado($tarifa_manipulado_id)[0]->nombre, 'tarifa_nombre'=> $tarifa_manipulado_id['nombre'],
'precio_unidad' => 0, 'nombre'=> $tarifa_manipulado_id['nombre'],
'total'=> 0, 'precio_unidad' => 0,
'margen' => 0, 'total'=> 0,
]; 'margen' => 0,
];
}
else{
$ret_array[] = (object)[
'tarifa_id'=> $tarifa_manipulado_id,
'tarifa_nombre'=> $modelTarifa->getNombreTarifaManipulado($tarifa_manipulado_id)[0]->nombre,
'nombre'=> $modelTarifa->getNombreTarifaManipulado($tarifa_manipulado_id)[0]->nombre,
'precio_unidad' => 0,
'total'=> 0,
'margen' => 0,
];
}
return $ret_array; return $ret_array;
} }
} }

View File

@ -129,6 +129,7 @@ class PresupuestoModel extends \App\Models\BaseModel
"barniz_cubierta_id", "barniz_cubierta_id",
"estampado_cubierta_id", "estampado_cubierta_id",
"acabado_sobrecubierta_id", "acabado_sobrecubierta_id",
"acabado_faja_id",
"is_duplicado", "is_duplicado",
'paginas_color_consecutivas', 'paginas_color_consecutivas',
'papel_interior_diferente', 'papel_interior_diferente',
@ -410,8 +411,6 @@ class PresupuestoModel extends \App\Models\BaseModel
'pais_id' => 1, 'pais_id' => 1,
'retractilado' => $data['retractilado'] ? 1 : 0, 'retractilado' => $data['retractilado'] ? 1 : 0,
'retractilado5' => $data['retractilado5'] ? 1 : 0, 'retractilado5' => $data['retractilado5'] ? 1 : 0,
'guardas' => in_array(62, $data['servicios']) ? 1 : 0,
'faja_color' => in_array(16, $data['servicios']) ? 1 : 0,
'ferro' => $data['ferro'] ? 1 : 0, 'ferro' => $data['ferro'] ? 1 : 0,
'ferro_digital' => $data['ferro_digital'] ? 1 : 0, 'ferro_digital' => $data['ferro_digital'] ? 1 : 0,
'marcapaginas' => $data['marcapaginas'] ? 1 : 0, 'marcapaginas' => $data['marcapaginas'] ? 1 : 0,
@ -450,8 +449,13 @@ class PresupuestoModel extends \App\Models\BaseModel
'comparador_json_data' => $this->generateJson($data), 'comparador_json_data' => $this->generateJson($data),
'faja_color' => count($data['faja'])>0 ? 1 : 0,
'solapas_ancho_faja_color' => count($data['faja'])>0 ? $data['faja']['solapas'] : 60,
'alto_faja_color' => count($data['faja'])>0 ? $data['faja']['alto'] : 50,
'acabado_cubierta_id' => $data['cubierta']['acabado'], 'acabado_cubierta_id' => $data['cubierta']['acabado'],
'acabado_sobrecubierta_id' => !$data['sobrecubierta'] ? 0 : $data['sobrecubierta']['acabado'], 'acabado_sobrecubierta_id' => !$data['sobrecubierta'] ? 0 : $data['sobrecubierta']['acabado'],
'acabado_faja_id' => count($data['faja'])>0 ? $data['faja']['acabado'] : 0,
'comp_tipo_impresion' => $data['isHq'] ? ($data['isColor'] ? 'colorhq' : 'negrohq') : ($data['isColor'] ? 'color' : 'negro'), 'comp_tipo_impresion' => $data['isHq'] ? ($data['isColor'] ? 'colorhq' : 'negrohq') : ($data['isColor'] ? 'color' : 'negro'),

View File

@ -112,7 +112,8 @@ class TarifaManipuladoModel extends \App\Models\BaseModel
return $builder->orderBy("t1.nombre", "asc")->get()->getResultObject(); return $builder->orderBy("t1.nombre", "asc")->get()->getResultObject();
} }
public function getTarifaPresupuestoManipulado($tarifa_id, $tirada){ public function getTarifaPresupuestoManipulado($tarifa_id, $tirada)
{
$builder = $this->db $builder = $this->db
->table($this->table . " t1") ->table($this->table . " t1")
@ -126,14 +127,21 @@ class TarifaManipuladoModel extends \App\Models\BaseModel
//->where("t1.mostrar_en_presupuesto", 1) //->where("t1.mostrar_en_presupuesto", 1)
->where("t2.is_deleted", 0); ->where("t2.is_deleted", 0);
$builder->where('t1.id =', $tarifa_id); // check if tarifa_id is an array
if (is_array($tarifa_id)) {
// check if tarifa_id['id'] exists
$builder->where('t1.id', array_key_exists('id', $tarifa_id)? $tarifa_id['id']:$tarifa_id['tarifa_id']);
} else {
$builder->where('t1.id', $tarifa_id);
}
$builder->where('t2.tirada_min <=', $tirada); $builder->where('t2.tirada_min <=', $tirada);
$builder->where('t2.tirada_max >=', $tirada); $builder->where('t2.tirada_max >=', $tirada);
return $builder->get()->getResultObject(); return $builder->get()->getResultObject();
} }
public function getNombreTarifaManipulado($id=-1) public function getNombreTarifaManipulado($id = -1)
{ {
/* /*
Todos los servicios de encuadernacion activas que se pueden usar en presupuestos Todos los servicios de encuadernacion activas que se pueden usar en presupuestos
@ -142,9 +150,13 @@ class TarifaManipuladoModel extends \App\Models\BaseModel
->table($this->table . " t1") ->table($this->table . " t1")
->select( ->select(
"t1.nombre AS nombre" "t1.nombre AS nombre"
) );
->where("t1.id", $id) $builder->where("t1.is_deleted", 0);
->where("t1.is_deleted", 0); if (is_array($id)) {
$builder->where("t1.id", $id['id']);
} else
$builder->where("t1.id", $id);
return $builder->orderBy("t1.nombre", "asc")->get()->getResultObject(); return $builder->orderBy("t1.nombre", "asc")->get()->getResultObject();
} }

View File

@ -242,6 +242,18 @@
</div> </div>
</div> </div>
<div class="col-md-12 col-lg-6 px-4 d-none acabado-faja">
<div class="row">
<div class="mb-1">
<label id="label_acabado_faja_id" for="acabado_faja_id" class="form-label">
<?= lang('Presupuestos.acabadoFaja') ?>*
</label>
<select id="acabado_faja_id" name="acabado_faja_id" tabindex="3"
class="form-control select2bs2" style="width: 100%;">
</select>
</div>
</div>
</div>
</div> </div>
<!-----------------------------------------------------------------------------> <!----------------------------------------------------------------------------->

View File

@ -96,6 +96,7 @@
<th><?= lang('Tarifaacabado.margen') ?></th> <th><?= lang('Tarifaacabado.margen') ?></th>
<th></th> <th></th>
<th></th> <th></th>
<th></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th> <th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
</tr> </tr>
</thead> </thead>

View File

@ -172,8 +172,9 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-sm-6"> <div class="col-sm-6">
<select class="form-select select2bs2 calcular-presupuesto" id="acabadoCubierta" name="acabado_cubierta"> <select class="form-select select2bs2 calcular-presupuesto" id="acabadoCubierta"
<option value="0"> <?=lang('Presupuestos.acabadoNinguno') ?> </option> name="acabado_cubierta">
<option value="0"> <?= lang('Presupuestos.acabadoNinguno') ?> </option>
</select> </select>
</div> </div>
@ -187,58 +188,54 @@
<h3 class="mb-1 fw-bold"> Extras </h3> <h3 class="mb-1 fw-bold"> Extras </h3>
</div><!--//.mb-3 --> </div><!--//.mb-3 -->
<div class="row col-sm-12 mb-3 justify-content-center align-items-top"> <div id="divExtras" name="div_extras" class="row col-sm-12 mb-3 justify-content-center align-items-top">
<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">
<div class="row col-sm-2 mb-3 d-flex flex-column align-items-center sobrecubierta-items"> <input class="calcular-presupuesto form-check-input" type="checkbox" id="addSobrecubierta"
<div class="form-check form-switch mb-2"> name="add_sobrecubierta" value="1">
<input class="calcular-presupuesto form-check-input" type="checkbox" id="addSobrecubierta" <label class="form-check-label" for="addSobrecubierta"><?= lang('Presupuestos.sobrecubierta') ?></label>
name="add_sobrecubierta" value="1">
<label class="form-check-label"
for="addSobrecubierta"><?= lang('Presupuestos.sobrecubierta') ?></label>
</div>
</div> </div>
</div>
<div class="col-sm-3 config-sobrecubierta d-none sobrecubierta-items"> <div class="col-sm-3 config-sobrecubierta d-none sobrecubierta-items">
<label for="papelSobrecubierta" class="form-label"> <label for="papelSobrecubierta" class="form-label">
<?= lang('Presupuestos.papelSobrecubierta') ?> <?= lang('Presupuestos.papelSobrecubierta') ?>
</label> </label>
<select class="form-select select2bs2 calcular-presupuesto" id="papelSobrecubierta" <select class="form-select select2bs2 calcular-presupuesto" id="papelSobrecubierta"
name="papel_sobrecubierta"> name="papel_sobrecubierta">
<option value="EST2_170"><?= lang('Presupuestos.estucadoMate170gr') ?></option> <option value="EST2_170"><?= lang('Presupuestos.estucadoMate170gr') ?></option>
<option value="EST2_200"><?= lang('Presupuestos.estucadoMate200gr') ?></option> <option value="EST2_200"><?= lang('Presupuestos.estucadoMate200gr') ?></option>
</select> </select>
</div> </div>
<div class="col-sm-3 config-sobrecubierta d-none sobrecubierta-items"> <div class="col-sm-3 config-sobrecubierta d-none sobrecubierta-items">
<label for="solapasSobrecubierta" class="form-label"> <label for="solapasSobrecubierta" class="form-label">
<?= lang('Presupuestos.tamanioSolapasSobrecubierta') ?> <?= lang('Presupuestos.tamanioSolapasSobrecubierta') ?>
</label> </label>
<input id="solapasSobrecubierta" name="solapas_sobrecubierta" type="number" <input id="solapasSobrecubierta" name="solapas_sobrecubierta" type="number"
class="calcular-presupuesto form-control text-center num-input" min="60" max="120" step="1" class="calcular-presupuesto form-control text-center num-input" min="60" max="120" step="1" value="60">
value="60"> <div id="textoLimitesSolapasSobrecubierta" class="form-text">
<div id="textoLimitesSolapasSobrecubierta" class="form-text"> Entre 60 y 120 mm
Entre 60 y 120 mm
</div>
</div> </div>
</div>
<div class="col-sm-4 config-sobrecubierta d-none sobrecubierta-items"> <div class="col-sm-4 config-sobrecubierta d-none sobrecubierta-items">
<label for="plastificadoSobrecubierta" class="form-label"> <label for="plastificadoSobrecubierta" class="form-label">
<?= lang('Presupuestos.acabado') ?> <?= lang('Presupuestos.acabado') ?>
</label> </label>
<select class="form-select select2bs2 calcular-presupuesto" id="acabadoSobrecubierta" <select class="form-select select2bs2 calcular-presupuesto" id="acabadoSobrecubierta"
name="acabado_sobrecubierta"> name="acabado_sobrecubierta">
<option value="0"> <?=lang('Presupuestos.acabadoNinguno') ?> </option> <option value="0"> <?= lang('Presupuestos.acabadoNinguno') ?> </option>
</select> </select>
</div> </div>
</div> </div>
<div class="row col-sm-12 mb-0 justify-content-center d-none"> <div class="row col-sm-12 mb-0 justify-content-center">
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="row col-sm-2 mb-3 d-flex flex-column align-items-center"> <div class="col-sm-2 mb-3 d-flex flex-column align-items-center">
<div class="form-check form-switch mb-2"> <div class="form-check form-switch mb-2">
<input class="calcular-presupuesto form-check-input" type="checkbox" id="addFaja" name="add_faja" <input class="calcular-presupuesto form-check-input" type="checkbox" id="addFaja" name="add_faja"
value="1"> value="1">
@ -246,26 +243,35 @@
</div> </div>
</div> </div>
<div class="row col-sm-3 config-faja d-none">
<div class="">
<label for="papelFaja" class="form-label">
<?= lang('Presupuestos.papelFaja') ?>
</label>
<select class="form-select select2bs2 calcular-presupuesto" id="papelFaja" name="papel_faja">
</select>
</div>
<div class="">
<label for="papelFaja" class="form-label">
<?= lang('Presupuestos.gramajeFaja') ?>
</label>
<select class="form-select select2bs2 calcular-presupuesto" id="gramajeFaja" name="gramaje_faja">
</select>
</div>
</div>
<div class="col-sm-2 config-faja d-none"> <div class="col-sm-2 config-faja d-none">
<label for="altoFaja" class="form-label"> <label for="altoFaja" class="form-label">
<?= lang('Presupuestos.altoFaja') ?> <?= lang('Presupuestos.altoFaja') ?>
</label> </label>
<input id="altoFaja" name="alto_faja" type="number" <input id="altoFaja" name="alto_faja" type="number"
class="calcular-presupuesto form-control text-center num-input" min="60" step="1" value="60"> class="calcular-presupuesto form-control text-center num-input" min="50" step="1" value="60">
<div class="form-text"> <div class="form-text">
Mayor 60 mm Entre 50 mm y 120 mm
</div> </div>
</div> </div>
<div class="col-sm-3 config-faja d-none">
<label for="barniz" class="form-label">
<?= lang('Presupuestos.papelFaja') ?>
</label>
<select class="form-select select2bs2 calcular-presupuesto" id="papelFaja" name="papel_sobrecubierta">
<option value="EST2_170"><?= lang('Presupuestos.estucadoMate170gr') ?></option>
<option value="EST2_200"><?= lang('Presupuestos.estucadoMate200gr') ?></option>
</select>
</div>
<div class="col-sm-2 config-faja d-none"> <div class="col-sm-2 config-faja d-none">
<label for="solapasFaja" class="form-label"> <label for="solapasFaja" class="form-label">
@ -274,21 +280,17 @@
<input id="solapasFaja" name="solapas_faja" type="number" <input id="solapasFaja" name="solapas_faja" type="number"
class="calcular-presupuesto form-control text-center num-input" min="60" max="120" step="1" class="calcular-presupuesto form-control text-center num-input" min="60" max="120" step="1"
value="60"> value="60">
<div class="form-text"> <div id="textoLimitesSolapasFaja" class="form-text">
Entre 60 y 120 mm Entre 60 y 120 mm
</div> </div>
</div> </div>
<div class="col-sm-3 config-faja d-none"> <div class="col-sm-3 config-faja d-none">
<label for="plastificadoFaja" class="form-label"> <label for="acabadoFaja" class="form-label">
<?= lang('Presupuestos.plastificadoFaja') ?> <?= lang('Presupuestos.plastificadoFaja') ?>
</label> </label>
<select class="form-select select2bs2 calcular-presupuesto" id="plastificadoFaja" <select class="form-select select2bs2 calcular-presupuesto" id="acabadoFaja"
name="plastificado_faja"> name="plastificado_faja">
<option value="NONE"> - </option>
<option value="BRIL"><?= lang('Presupuestos.brillo') ?></option>
<option value="MATE"><?= lang('Presupuestos.mate') ?></option>
<option value="ANTI"><?= lang('Presupuestos.antirrayado') ?></option>
</select> </select>
</div> </div>

View File

@ -424,7 +424,7 @@ class PresupuestoAdminEdit {
</span> </span>
<div class="d-flex flex-column ps-1"> <div class="d-flex flex-column ps-1">
<h5 class="alert-heading mb-2">` + <h5 class="alert-heading mb-2">` +
window.Presupuestos.errores.paginasLP + window.language.Presupuestos.errores.paginasLP +
`</h5> `</h5>
</div> </div>
</div>`; </div>`;

View File

@ -1509,6 +1509,9 @@ class Comparador {
let datosComp = {}; let datosComp = {};
datosComp.sobrecubierta = this.getDataForComp('faja'); datosComp.sobrecubierta = this.getDataForComp('faja');
if(datosComp.sobrecubierta.error){
return;
}
datosComp.sobrecubierta.data['faja'] = 1; // se indica que es faja para el calculo de formas datosComp.sobrecubierta.data['faja'] = 1; // se indica que es faja para el calculo de formas
datosComp.sobrecubierta.data[this.csrf_token] = this.csrf_hash; datosComp.sobrecubierta.data[this.csrf_token] = this.csrf_hash;

View File

@ -48,6 +48,15 @@ class DatosLibro {
"sobrecubierta": 1 "sobrecubierta": 1
} }
); );
this.acabadoFaja = new ClassSelect($("#acabado_faja_id"),
'/serviciosacabados/getacabados',
'',
false,
{
[this.csrf_token]: this.csrf_hash,
"sobrecubierta": 1
}
);
this.retractilado = this.domItem.find('#retractilado'); this.retractilado = this.domItem.find('#retractilado');
this.retractilado5 = this.domItem.find('#retractilado5'); this.retractilado5 = this.domItem.find('#retractilado5');
@ -70,13 +79,32 @@ class DatosLibro {
this.tamanio.init(); this.tamanio.init();
this.acabadoCubierta.init(); this.acabadoCubierta.init();
this.acabadoSobrecubierta.init(); this.acabadoSobrecubierta.init();
this.acabadoFaja.init();
this.acabadoCubierta.item.on('select2:select', function () { this.acabadoCubierta.item.on('select2:select', function () {
$(document).trigger('add-servicio-lineas', 'acabadoCubierta'); if(self.acabadoCubierta.getVal() == 0){
$(document).trigger('remove-servicio-lineas', 'acabadoCubierta');
}
else{
$(document).trigger('add-servicio-lineas', 'acabadoCubierta');
}
}); });
this.acabadoSobrecubierta.item.on('select2:select', function () { this.acabadoSobrecubierta.item.on('select2:select', function () {
$(document).trigger('add-servicio-lineas', 'acabadoSobrecubierta'); if(self.acabadoCubierta.getVal() == 0){
$(document).trigger('remove-servicio-lineas', 'acabadoSobrecubierta');
}
else{
$(document).trigger('add-servicio-lineas', 'acabadoSobrecubierta');
}
});
this.acabadoFaja.item.on('select2:select', function () {
if(self.acabadoFaja.getVal() == 0){
$(document).trigger('remove-servicio-lineas', 'acabadoFaja');
}
else{
$(document).trigger('add-servicio-lineas', 'acabadoFaja');
}
}); });
if (window.location.href.includes("edit")) { if (window.location.href.includes("edit")) {
@ -98,6 +126,7 @@ class DatosLibro {
this.anchoSolapasCubierta.on('change', this.changeAnchoSolapasCubierta.bind(this)); this.anchoSolapasCubierta.on('change', this.changeAnchoSolapasCubierta.bind(this));
this.anchoSolapasSobrecubierta.on('change', this.changeAnchoSolapasSobrecubierta.bind(this)); this.anchoSolapasSobrecubierta.on('change', this.changeAnchoSolapasSobrecubierta.bind(this));
this.fajaSolapasAncho.on('change', this.changeAnchoSolapasFaja.bind(this));
this.paginas.on('change', this.changePaginas.bind(this)); this.paginas.on('change', this.changePaginas.bind(this));
this.tirada.on('change', this.changeTirada.bind(this)); this.tirada.on('change', this.changeTirada.bind(this));
@ -116,10 +145,16 @@ class DatosLibro {
if (this.faja.prop('checked')) { if (this.faja.prop('checked')) {
this.div_faja.removeClass('d-none'); this.div_faja.removeClass('d-none');
$('#compFaja').val(1).trigger('change'); $('#compFaja').val(1).trigger('change');
$(document).trigger('add-servicio-lineas', 'solapas_faja');
$('.acabado-faja').removeClass('d-none');
} }
else { else {
this.div_faja.addClass('d-none'); this.div_faja.addClass('d-none');
$('#compFaja').val(0).trigger('change'); $('#compFaja').val(0).trigger('change');
$(document).trigger('remove-servicio-lineas', 'solapas_faja');
$(document).trigger('remove-servicio-lineas', 'solapas_grandes_faja');
$('.acabado-faja').addClass('d-none');
$(document).trigger('remove-servicio-lineas', 'acabadoFaja');
} }
} }
@ -300,7 +335,7 @@ class DatosLibro {
changeAnchoSolapasSobrecubierta() { changeAnchoSolapasSobrecubierta() {
if (this.checkSolapasGrandes('cubierta')) { if (this.checkSolapasGrandes('sobrecubierta')) {
$(document).trigger('add-servicio-lineas', 'solapas_grandes_sobrecubierta'); $(document).trigger('add-servicio-lineas', 'solapas_grandes_sobrecubierta');
} }
else { else {
@ -311,18 +346,38 @@ class DatosLibro {
$('#compSobrecubierta').trigger('change'); $('#compSobrecubierta').trigger('change');
} }
changeAnchoSolapasFaja() {
if (this.checkSolapasGrandes('faja')) {
$(document).trigger('add-servicio-lineas', 'solapas_grandes_faja');
}
else {
$(document).trigger('remove-servicio-lineas', 'solapas_grandes_faja');
}
// para que se actualice el comparador
if($('#compGramajeFaja').select2('data').length > 0){
$('#compGramajeFaja').trigger('change');
}
}
checkSolapasGrandes(elemento) { checkSolapasGrandes(elemento) {
const ancho_libro = 2 * this.getDimensionLibro().ancho; const ancho_libro = 2 * this.getDimensionLibro().ancho;
let ancho_solapas = 0.0; let ancho_solapas = 0.0;
let lomo = 0.0; let lomo = 0.0;
if (elemento == 'cubierta') { if (elemento == 'cubierta') {
ancho_solapas = 2 * parseFloat($('solapas_ancho').val()); ancho_solapas = 2 * parseFloat($('#solapas_ancho').val());
lomo = parseFloat($('lomo_cubierta').val()); lomo = parseFloat($('#lomo_cubierta').val());
} }
else if (elemento == 'sobrecubierta') { else if (elemento == 'sobrecubierta') {
ancho_solapas = 2 * parseFloat($('solapas_ancho_sobrecubierta').val()); ancho_solapas = 2 * parseFloat($('#solapas_ancho_sobrecubierta').val());
lomo = parseFloat($('lomo_sobrecubierta').val()); lomo = parseFloat($('#lomo_sobrecubierta').val());
}
else if (elemento == 'faja') {
ancho_solapas = 2 * parseFloat($('#faja_solapas_ancho').val());
lomo = parseFloat($('#lomo_sobrecubierta').val());
} }
else else
return false; return false;
@ -515,6 +570,7 @@ class DatosLibro {
this.div_faja.removeClass('d-none'); this.div_faja.removeClass('d-none');
this.fajaAlto.val(datos.fajaColorAlto).trigger('change'); this.fajaAlto.val(datos.fajaColorAlto).trigger('change');
this.fajaSolapasAncho.val(datos.fajaColorSolapasAncho).trigger('change'); this.fajaSolapasAncho.val(datos.fajaColorSolapasAncho).trigger('change');
$('.acabado-faja').removeClass('d-none');
} }
@ -530,6 +586,8 @@ class DatosLibro {
this.acabadoSobrecubierta.setOption(datos.acabadoSobrecubierta.id, datos.acabadoSobrecubierta.text); this.acabadoSobrecubierta.setOption(datos.acabadoSobrecubierta.id, datos.acabadoSobrecubierta.text);
} }
this.acabadoFaja.setOption(datos.acabadoFaja.id, datos.acabadoFaja.text);
this.retractilado.prop('checked', datos.retractilado); this.retractilado.prop('checked', datos.retractilado);
this.retractilado5.prop('checked', datos.retractilado5); this.retractilado5.prop('checked', datos.retractilado5);
this.prototipo.prop('checked', datos.prototipo); this.prototipo.prop('checked', datos.prototipo);

View File

@ -105,10 +105,13 @@ class Servicios {
addServicio(event, servicio) { addServicio(event, servicio) {
if (servicio == 'acabadoCubierta') { if (servicio == 'acabadoCubierta') {
this.serviciosAcabado.updateAcabadosExteriores(1, 0); this.serviciosAcabado.updateAcabadosExteriores(1, 0, 0);
} }
else if (servicio == 'acabadoSobrecubierta') { else if (servicio == 'acabadoSobrecubierta') {
this.serviciosAcabado.updateAcabadosExteriores(0, 1); this.serviciosAcabado.updateAcabadosExteriores(0, 1, 0);
}
else if (servicio == 'acabadoFaja') {
this.serviciosAcabado.updateAcabadosExteriores(0, 0, 1);
} }
else if (servicio == 'ferro'){ else if (servicio == 'ferro'){
const id = $('#ferro').attr('service-id'); const id = $('#ferro').attr('service-id');
@ -144,6 +147,10 @@ class Servicios {
const id = $('#serv_solapas_sobrecubierta').attr('service-id'); const id = $('#serv_solapas_sobrecubierta').attr('service-id');
this.ServiciosManipulado.getPresupuestoManipulado(id); this.ServiciosManipulado.getPresupuestoManipulado(id);
} }
else if (servicio == 'solapas_faja'){
const id = $('#solapas_faja').attr('service-id');
this.ServiciosManipulado.getPresupuestoManipulado(id);
}
else if (servicio == 'solapas_grandes_cubierta'){ else if (servicio == 'solapas_grandes_cubierta'){
const id = $('#solapas_grandes_cubierta').attr('service-id'); const id = $('#solapas_grandes_cubierta').attr('service-id');
this.ServiciosManipulado.getPresupuestoManipulado(id); this.ServiciosManipulado.getPresupuestoManipulado(id);
@ -152,6 +159,10 @@ class Servicios {
const id = $('#solapas_grandes_sobrecubierta').attr('service-id'); const id = $('#solapas_grandes_sobrecubierta').attr('service-id');
this.ServiciosManipulado.getPresupuestoManipulado(id); this.ServiciosManipulado.getPresupuestoManipulado(id);
} }
else if (servicio == 'solapas_grandes_faja'){
const id = $('#solapas_grandes_faja').attr('service-id');
this.ServiciosManipulado.getPresupuestoManipulado(id);
}
} }
removeServicio(event, servicio) { removeServicio(event, servicio) {
@ -226,6 +237,16 @@ class Servicios {
}); });
this.ServiciosManipulado.table.draw(); this.ServiciosManipulado.table.draw();
} }
else if (servicio == 'solapas_faja'){
const id = $('#solapas_faja').attr('service-id');
this.ServiciosManipulado.table.rows().every(function () {
let data = this.data();
if (data && data.tarifa_id == id) {
this.remove().draw();
}
});
this.ServiciosManipulado.table.draw();
}
else if (servicio == 'solapas_grandes_cubierta'){ else if (servicio == 'solapas_grandes_cubierta'){
const id = $('#solapas_grandes_cubierta').attr('service-id'); const id = $('#solapas_grandes_cubierta').attr('service-id');
this.ServiciosManipulado.table.rows().every(function () { this.ServiciosManipulado.table.rows().every(function () {
@ -246,6 +267,43 @@ class Servicios {
}); });
this.ServiciosManipulado.table.draw(); this.ServiciosManipulado.table.draw();
} }
else if (servicio == 'solapas_grandes_faja'){
const id = $('#solapas_grandes_faja').attr('service-id');
this.ServiciosManipulado.table.rows().every(function () {
var data = this.data();
if (data && data.tarifa_id == id) {
this.remove();
}
});
this.ServiciosManipulado.table.draw();
}
else if (servicio == 'acabadoCubierta') {
for (let i = 0; i < this.serviciosAcabado.table.rows().count(); i++) {
let data = this.serviciosAcabado.table.row(i).data();
if (data.cubierta == 1) {
this.serviciosAcabado.table.row(i).remove();
}
};
this.serviciosAcabado.table.draw();
}
else if (servicio == 'acabadoSobrecubierta') {
for (let i = 0; i < this.serviciosAcabado.table.rows().count(); i++) {
let data = this.serviciosAcabado.table.row(i).data();
if (data.sobrecubierta == 1) {
this.serviciosAcabado.table.row(i).remove();
}
};
this.serviciosAcabado.table.draw();
}
else if (servicio == 'acabadoFaja') {
for (let i = 0; i < this.serviciosAcabado.table.rows().count(); i++) {
let data = this.serviciosAcabado.table.row(i).data();
if (data.faja == 1) {
this.serviciosAcabado.table.row(i).remove();
}
};
this.serviciosAcabado.table.draw();
}
} }
async updateServicios() { async updateServicios() {
@ -296,6 +354,9 @@ class ServiciosAcabado {
else if (row.sobrecubierta == 1) { else if (row.sobrecubierta == 1) {
return row.nombre + ' (' + window.language.Presupuestos.sobrecubierta + ')'; return row.nombre + ' (' + window.language.Presupuestos.sobrecubierta + ')';
} }
else if (row.faja == 1) {
return row.nombre + ' (' + window.language.Presupuestos.faja + ')';
}
else { else {
return row.nombre; return row.nombre;
} }
@ -330,6 +391,7 @@ class ServiciosAcabado {
{ data: 'margen' }, { data: 'margen' },
{ data: 'cubierta', visible: false }, { data: 'cubierta', visible: false },
{ data: 'sobrecubierta', visible: false }, { data: 'sobrecubierta', visible: false },
{ data: 'faja', visible: false },
{ {
data: function (row) { data: function (row) {
return ` return `
@ -414,10 +476,11 @@ class ServiciosAcabado {
const proveedor_ids = this.table.rows().data().toArray().map(row => row.proveedor_id); const proveedor_ids = this.table.rows().data().toArray().map(row => row.proveedor_id);
const cubiertas = this.table.rows().data().toArray().map(row => row.cubierta); const cubiertas = this.table.rows().data().toArray().map(row => row.cubierta);
const sobrecubiertas = this.table.rows().data().toArray().map(row => row.sobrecubierta); const sobrecubiertas = this.table.rows().data().toArray().map(row => row.sobrecubierta);
const fajas = this.table.rows().data().toArray().map(row => row.fajas);
// emparejar los tarifa_ids con los proveedor_ids // emparejar los tarifa_ids con los proveedor_ids
let tarifa_data = []; let tarifa_data = [];
for (let i = 0; i < tarifa_ids.length; i++) { for (let i = 0; i < tarifa_ids.length; i++) {
tarifa_data.push({ tarifa_id: tarifa_ids[i], proveedor_id: proveedor_ids[i], cubierta: cubiertas[i], sobrecubierta: sobrecubiertas[i] }); tarifa_data.push({ tarifa_id: tarifa_ids[i], proveedor_id: proveedor_ids[i], cubierta: cubiertas[i], sobrecubierta: sobrecubiertas[i], faja: fajas[i] });
} }
let tirada = 0; let tirada = 0;
@ -444,25 +507,33 @@ class ServiciosAcabado {
} }
updateAcabadosExteriores(cubierta, sobrecubierta) { updateAcabadosExteriores(cubierta, sobrecubierta, faja) {
this.table.rows().every(function () { this.table.rows().every(function () {
var data = this.data(); var data = this.data();
if (data.cubierta == cubierta && data.sobrecubierta == sobrecubierta) { if (data && (data.cubierta == cubierta && data.sobrecubierta == sobrecubierta && data.faja == faja)) {
this.remove().draw(); this.remove().draw();
} }
}); });
let tarifa_id = 0; let tarifa_id = 0;
let uso = 'cubierta';
if (cubierta == 1) { if (cubierta == 1) {
tarifa_id = $('#acabado_cubierta_id').val(); tarifa_id = $('#acabado_cubierta_id').val();
} }
else if (sobrecubierta == 1) { else if (sobrecubierta == 1) {
tarifa_id = $('#acabado_sobrecubierta_id').val(); tarifa_id = $('#acabado_sobrecubierta_id').val();
uso = 'sobrecubierta';
}
else if (faja == 1) {
tarifa_id = $('#acabado_faja_id').val();
uso = 'faja';
} }
this.getPresupuestoAcabado(tarifa_id, cubierta == 1 ? 'cubierta' : 'sobrecubierta', null);
this.getPresupuestoAcabado(tarifa_id, uso, null);
} }
getPresupuestoAcabado(tarifa_id = -1, uso = null, updateSelect = null) { getPresupuestoAcabado(tarifa_id = -1, uso = null, updateSelect = null) {
@ -491,12 +562,16 @@ class ServiciosAcabado {
if (response.values) { if (response.values) {
response.values[0].cubierta = 0; response.values[0].cubierta = 0;
response.values[0].sobrecubierta = 0; response.values[0].sobrecubierta = 0;
response.values[0].faja = 0;
if (uso == 'cubierta') { if (uso == 'cubierta') {
response.values[0].cubierta = 1; response.values[0].cubierta = 1;
} }
else if (uso == 'sobrecubierta') { else if (uso == 'sobrecubierta') {
response.values[0].sobrecubierta = 1; response.values[0].sobrecubierta = 1;
} }
else if (uso == 'faja') {
response.values[0].faja = 1;
}
if (updateSelect != null) { if (updateSelect != null) {
self.table.row(updateSelect.closest('tr')).data(response.values[0]).draw(); self.table.row(updateSelect.closest('tr')).data(response.values[0]).draw();

View File

@ -190,6 +190,8 @@ class TiradasAlernativas {
solapas_sobrecubierta: $('#solapas_sobrecubierta').is(':checked') ? 1 : 0, solapas_sobrecubierta: $('#solapas_sobrecubierta').is(':checked') ? 1 : 0,
solapas_sobrecubierta_ancho: $('#solapas_sobrecubierta').is(':checked') ? parseInt($('#solapas_ancho_sobrecubierta').val()) : 0, solapas_sobrecubierta_ancho: $('#solapas_sobrecubierta').is(':checked') ? parseInt($('#solapas_ancho_sobrecubierta').val()) : 0,
lomo: $('#lomo_cubierta').val(), lomo: $('#lomo_cubierta').val(),
faja_alto: $('#faja_alto').val(),
solapas_faja: $('#faja_solapas_ancho').val(),
}; };
$.ajax({ $.ajax({

View File

@ -92,6 +92,7 @@ class DatosGenerales {
// Eventos // Eventos
this.checkFormatoPersonalizado.bind('change', this.#handleFormatoLibro.bind(this)); this.checkFormatoPersonalizado.bind('change', this.#handleFormatoLibro.bind(this));
this.formatoLibro.item.on('change', this.#handleFormatoLibro.bind(this));
this.tiposLibro.on('click', this.#handleTipolibro.bind(this)); this.tiposLibro.on('click', this.#handleTipolibro.bind(this));
this.domItem.find('.input-paginas').on('change', this.#handlePaginas.bind(this)); this.domItem.find('.input-paginas').on('change', this.#handlePaginas.bind(this));
this.anchoPersonalizado.on('blur', this.#handleCheckFormatoPersonalizado.bind(this)); this.anchoPersonalizado.on('blur', this.#handleCheckFormatoPersonalizado.bind(this));
@ -674,6 +675,8 @@ class DatosGenerales {
this.formValidation.revalidateField('papel_formato_ancho'); this.formValidation.revalidateField('papel_formato_ancho');
this.formValidation.revalidateField('papel_formato_alto'); this.formValidation.revalidateField('papel_formato_alto');
} }
const alto = this.getDimensionLibro().alto;
$('#altoFaja').closest('.config-faja').find('.form-text').text('Entre 50 y ' + alto + ' mm');
} }
#checkValue(event){ #checkValue(event){

View File

@ -33,12 +33,12 @@ class DisenioCubierta {
[this.csrf_token]: this.csrf_hash, [this.csrf_token]: this.csrf_hash,
tipo: 'colorhq', tipo: 'colorhq',
cubierta: 1, cubierta: 1,
ancho: () => {return this.presupuestoCliente.datosGenerales.getDimensionLibro().ancho}, ancho: () => { return this.presupuestoCliente.datosGenerales.getDimensionLibro().ancho },
alto: () => {return this.presupuestoCliente.datosGenerales.getDimensionLibro().alto}, alto: () => { return this.presupuestoCliente.datosGenerales.getDimensionLibro().alto },
solapas: () => {return $('#solapas_cubierta').hasClass("d-none") ? 0 : $('#solapas_cubierta').val()}, solapas: () => { return $('#solapas_cubierta').hasClass("d-none") ? 0 : $('#solapas_cubierta').val() },
lomo: () => {return $('#lc').val()}, lomo: () => { return $('#lc').val() },
tapa_dura: () => {return this.tapaBlanda.hasClass("selected") ? 0 : 1}, tapa_dura: () => { return this.tapaBlanda.hasClass("selected") ? 0 : 1 },
tirada: () => {return this.presupuestoCliente.datosGenerales.getTiradas()[0]}, tirada: () => { return this.presupuestoCliente.datosGenerales.getTiradas()[0] },
} }
); );
@ -77,11 +77,47 @@ class DisenioCubierta {
this.configuracionFaja = this.domItem.find(".config-faja"); this.configuracionFaja = this.domItem.find(".config-faja");
this.faja = this.domItem.find("#addFaja"); this.faja = this.domItem.find("#addFaja");
this.papelFaja = new ClassSelect($("#papelFaja"),
'/papelesgenericos/getpapelcliente',
window.translations["selectPapel"],
false,
{
[this.csrf_token]: this.csrf_hash,
tipo: 'colorhq',
sobrecubierta: 1,
ancho: () => { return this.presupuestoCliente.datosGenerales.getDimensionLibro().ancho },
alto: () => { return $('#altoFaja').val() },
solapas: () => { return $('#solapasFaja').val() },
lomo: () => { return parseFloat($('#lsc').val()) + parseFloat($('#lc').val()) },
tirada: () => { return this.presupuestoCliente.datosGenerales.getTiradas()[0] },
forSelect2: 1,
}
);
this.gramajeFaja = new ClassSelect($("#gramajeFaja"),
'/papelesgenericos/getpapelcliente',
window.translations["selectGramaje"],
false,
{
[this.csrf_token]: this.csrf_hash,
tipo: 'colorhq',
papel: () => { return this.papelFaja.getVal() },
sobrecubierta: 1,
ancho: () => { return this.presupuestoCliente.datosGenerales.getDimensionLibro().ancho },
alto: () => { return $('#altoFaja').val() },
solapas: () => { return $('#solapasFaja').val() },
lomo: () => { return parseFloat($('#lsc').val()) + parseFloat($('#lc').val()) },
tirada: () => { return this.presupuestoCliente.datosGenerales.getTiradas()[0] },
forSelect2: 1,
}
);
this.solapasSobrecubierta = this.domItem.find("#solapasSobrecubierta"); this.solapasSobrecubierta = this.domItem.find("#solapasSobrecubierta");
this.textoSolapasSobrecubierta = this.domItem.find("#textoLimitesSolapasSobrecubierta"); this.textoSolapasSobrecubierta = this.domItem.find("#textoLimitesSolapasSobrecubierta");
this.solapasFaja = this.domItem.find("#solapasFaja"); this.solapasFaja = this.domItem.find("#solapasFaja");
this.altoFaja = this.domItem.find("#altoFaja"); this.altoFaja = this.domItem.find("#altoFaja");
this.textoSolapasFaja = this.domItem.find("#textoLimitesSolapasFaja");
this.fresado = $(this.domItem.find("#fresado")[0]); this.fresado = $(this.domItem.find("#fresado")[0]);
this.cosido = $(this.domItem.find("#cosido")[0]); this.cosido = $(this.domItem.find("#cosido")[0]);
@ -117,6 +153,16 @@ class DisenioCubierta {
} }
); );
this.acabadoFaja = new ClassSelect($("#acabadoFaja"),
'/serviciosacabados/getacabados',
'',
false,
{
[this.csrf_token]: this.csrf_hash,
"sobrecubierta": 1
}
);
this.initValidation(); this.initValidation();
// Creamos un nuevo observador que detecta cambios en los atributos // Creamos un nuevo observador que detecta cambios en los atributos
@ -153,6 +199,10 @@ class DisenioCubierta {
this.papelEspecial.init(); this.papelEspecial.init();
this.acabadoCubierta.init(); this.acabadoCubierta.init();
this.acabadoSobrecubierta.init(); this.acabadoSobrecubierta.init();
this.acabadoFaja.init();
this.papelFaja.init();
this.gramajeFaja.init();
$('#papelEspecialCubiertaSel').on("change", this.#handlePapelCubiertaEspecial.bind(this)); $('#papelEspecialCubiertaSel').on("change", this.#handlePapelCubiertaEspecial.bind(this));
@ -171,10 +221,12 @@ class DisenioCubierta {
} }
); );
this.faja.on('change', () => { this.faja.on('change', () => {
this.faja.is(":checked") ? this.configuracionFaja.removeClass("d-none") : this.configuracionFaja.addClass("d-none") this.faja.is(":checked") ? this.configuracionFaja.removeClass("d-none") : this.configuracionFaja.addClass("d-none");
} const div = $('#divExtras'); // Selecciona el div
); div.find('.fv-plugins-message-container').remove();
});
this.papelFaja.item.on('change', () => { this.gramajeFaja.empty(); });
// Observadores // Observadores
this.observer.observe(this.tapaBlanda[0], { attributes: true }); this.observer.observe(this.tapaBlanda[0], { attributes: true });
@ -185,7 +237,7 @@ class DisenioCubierta {
} }
cargarDatos(datosCubierta, datosGuardas, datosSobrecubierta) { cargarDatos(datosCubierta, datosGuardas, datosSobrecubierta, datosFaja) {
this.papelCubierta = datosCubierta.papel.id; this.papelCubierta = datosCubierta.papel.id;
this.gramaje = datosCubierta.gramaje; this.gramaje = datosCubierta.gramaje;
@ -234,6 +286,15 @@ class DisenioCubierta {
this.acabadoSobrecubierta.setOption(datosSobrecubierta.acabado.id, datosSobrecubierta.acabado.text); this.acabadoSobrecubierta.setOption(datosSobrecubierta.acabado.id, datosSobrecubierta.acabado.text);
} }
if (datosFaja) {
this.faja.trigger('click');
this.papelFaja.setOption(datosFaja.papel.papel_id, datosFaja.papel.papel);
this.gramajeFaja.setOption(datosFaja.papel.gramaje, datosFaja.papel.gramaje);
this.solapasFaja.val(datosFaja.solapas_ancho);
this.altoFaja.val(datosFaja.alto);
this.acabadoFaja.setOption(datosFaja.acabado.id, datosFaja.acabado.text);
}
} }
@ -371,6 +432,34 @@ class DisenioCubierta {
} }
} }
}, },
div_extras: {
validators: {
callback: {
callback: function (input) {
const div = $('#divExtras'); // Selecciona el div
div.find('.fv-plugins-message-container').remove();
const papelFaja = $('#papelFaja').select2('data').length > 0;
const gramajeFaja = $('#gramajeFaja').select2('data').length > 0;
if (papelFaja && gramajeFaja) {
return true;
}
else {
div.append(`
<div class="fv-plugins-message-container invalid-feedback">
<div data-field="div_impresion_interior" data-validator="callback" style="margin-top: 50px;">
${window.translations["validation"].extras_cubierta}
</div>
</div>
`);
return false;
}
},
}
}
},
}, },
plugins: { plugins: {
trigger: new FormValidation.plugins.Trigger(), trigger: new FormValidation.plugins.Trigger(),
@ -388,6 +477,8 @@ class DisenioCubierta {
case 'div_gramaje_cubierta': case 'div_gramaje_cubierta':
case 'div_papel_especial_cubierta': case 'div_papel_especial_cubierta':
return '.col-sm-10'; return '.col-sm-10';
case 'div_extras':
return '.col-sm-12';
default: default:
return '.col-sm-3'; return '.col-sm-3';
} }
@ -643,11 +734,10 @@ class DisenioCubierta {
else { else {
let faja = {}; let faja = {};
faja.alto = this.domItem.find("#altoFaja").val(); faja.alto = this.domItem.find("#altoFaja").val();
let papel = this.domItem.find("#papelFaja").children("option:selected").val(); faja.papel = this.papelFaja.getVal();
faja.papel = papel.split('_')[0]; faja.gramaje = this.gramajeFaja.getVal();
faja.gramaje = papel.split('_')[1];
faja.solapas = this.domItem.find("#solapasFaja").val(); faja.solapas = this.domItem.find("#solapasFaja").val();
faja.plastificado = this.domItem.find("#plastificadoFaja").children("option:selected").val(); faja.acabado = this.acabadoFaja.getVal();
return faja; return faja;
} }

View File

@ -178,6 +178,7 @@ class PresupuestoCliente {
this.disenioCubierta.solapasSobrecubierta.attr('max', response); this.disenioCubierta.solapasSobrecubierta.attr('max', response);
this.disenioCubierta.textoSolapasCubierta.text("Entre 60 y " + response + " mm"); this.disenioCubierta.textoSolapasCubierta.text("Entre 60 y " + response + " mm");
this.disenioCubierta.textoSolapasSobrecubierta.text("Entre 60 y " + response + " mm"); this.disenioCubierta.textoSolapasSobrecubierta.text("Entre 60 y " + response + " mm");
this.disenioCubierta.textoSolapasFaja.text("Entre 60 y " + response + " mm");
}, },
() => { } () => { }
).post(); ).post();
@ -810,7 +811,7 @@ class PresupuestoCliente {
console.log("Error al cargar diseño interior: " + e); console.log("Error al cargar diseño interior: " + e);
} }
try { try {
self.disenioCubierta.cargarDatos(response.data.cubierta, response.data.guardas, response.data.sobrecubierta); self.disenioCubierta.cargarDatos(response.data.cubierta, response.data.guardas, response.data.sobrecubierta, response.data.faja);
} }
catch (e) { catch (e) {
console.log("Error al cargar diseño cubierta: " + e); console.log("Error al cargar diseño cubierta: " + e);