diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php
index f3ff7612..a8339e44 100644
--- a/ci4/app/Config/Routes.php
+++ b/ci4/app/Config/Routes.php
@@ -584,6 +584,7 @@ $routes->group('presupuestocliente', ['namespace' => 'App\Controllers\Presupuest
$routes->get('cargar/(:num)', 'Presupuestocliente::cargar/$1', ['as' => 'cargarPresupuesto']);
$routes->post('duplicarPresupuesto', 'Presupuestocliente::duplicarPresupuesto', ['as' => 'duplicarPresupuesto']);
$routes->post('calcular', 'Presupuestocliente::calcular', ['as' => 'calcularPresupuesto']);
+ $routes->post('calcularsolapas', 'Presupuestocliente::calcularMaxSolapas', ['as' => 'calcularSolapas']);
});
$routes->resource('presupuestocliente', ['namespace' => 'App\Controllers\Presupuestos', 'controller' => 'Presupuestocliente', 'except' => 'show,new,create,update']);
diff --git a/ci4/app/Controllers/Configuracion/Papelesgenericos.php b/ci4/app/Controllers/Configuracion/Papelesgenericos.php
index dfcef7ac..628be5c4 100755
--- a/ci4/app/Controllers/Configuracion/Papelesgenericos.php
+++ b/ci4/app/Controllers/Configuracion/Papelesgenericos.php
@@ -301,8 +301,10 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController
$tipo = goSanitize($this->request->getGet('tipo'))[0];
$selected_papel = goSanitize($this->request->getGet('papel'))[0] ?? null;
$cubierta = goSanitize($this->request->getGet('cubierta'))[0] ?? 0;
- $menu = $this->model->getPapelCliente($tipo, $cubierta, $selected_papel, false);
- $menu2 = $this->model->getPapelCliente($tipo, $cubierta, $selected_papel, true);
+ $tapa_dura = goSanitize($this->request->getGet('tapa_dura'))[0] ?? null;
+
+ $menu = $this->model->getPapelCliente($tipo, $cubierta, $selected_papel, $tapa_dura, false);
+ $menu2 = $this->model->getPapelCliente($tipo, $cubierta, $selected_papel, $tapa_dura, true);
$newTokenHash = csrf_hash();
$csrfTokenName = csrf_token();
diff --git a/ci4/app/Controllers/Configuracion/Papelesimpresion.php b/ci4/app/Controllers/Configuracion/Papelesimpresion.php
index 9b820be4..d3da2fad 100755
--- a/ci4/app/Controllers/Configuracion/Papelesimpresion.php
+++ b/ci4/app/Controllers/Configuracion/Papelesimpresion.php
@@ -175,7 +175,7 @@ class Papelesimpresion extends \App\Controllers\BaseResourceController
if ($this->request->getPost()) :
- $nullIfEmpty = true; // !(phpversion() >= '8.1');
+ $nullIfEmpty = false; // !(phpversion() >= '8.1');
$postData = $this->request->getPost();
@@ -200,6 +200,9 @@ class Papelesimpresion extends \App\Controllers\BaseResourceController
if ($this->request->getPost('cubierta') == null) {
$sanitizedData['cubierta'] = false;
}
+ if ($this->request->getPost('use_for_tapa_dura') == null) {
+ $sanitizedData['use_for_tapa_dura'] = false;
+ }
if ($this->request->getPost('sobrecubierta') == null) {
$sanitizedData['sobrecubierta'] = false;
}
diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php
index 5012bda2..f0ae65af 100755
--- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php
+++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php
@@ -324,10 +324,10 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
// Cubierta
$cubierta = [
- 'papel_generico_cubierta' => $modelPapelGenerico->getIdFromCode($cubierta['papelCubierta']),
+ 'papel_generico_cubierta' => $modelPapelGenerico->where('id', $cubierta['papelCubierta'])->first()->toArray(),
'gramajeCubierta' => intval($cubierta['gramajeCubierta']),
'carasCubierta' => intval($cubierta['carasImpresion'] ?? 0),
- 'solapasCubierta' => intval($cubierta['solapas'] ?? 0),
+ 'solapasCubierta' => intval($cubierta['solapas'] ?? 0) == 1 ? intval($cubierta['tamanioSolapas']) : 0,
'acabadosCubierta' => $cubierta['acabados'] ?? 0,
'lomoRedondo' => $lomoRedondo,
];
@@ -471,6 +471,94 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
}
+
+ public function calcularMaxSolapas()
+ {
+ if ($this->request->isAJAX()) {
+
+ $reqData = $this->request->getPost();
+ $modelPapelGenerico = new PapelGenericoModel();
+
+ $POD = model('App\Models\Configuracion\ConfiguracionSistemaModel')->getPOD();
+
+ $cliente_id = $reqData['clienteId'] ?? -1;
+
+ $tirada = $reqData['tirada'] ?? 0;
+ $tamanio = $reqData['tamanio'];
+ $paginas = $reqData['paginas'] ?? 0;
+ $paginas_color = $reqData['paginasColor'] ?? 0;
+ $papelInteriorDiferente = intval($reqData['papelInteriorDiferente']) ?? null;
+ $excluirRotativa = $reqData['excluirRotativa'] ?? 0;
+ $excluirRotativa = intval($excluirRotativa);
+
+ $tipo = $reqData['tipo'];
+ $tipoCubierta = 'blanda'; // solapas sólo tapa blanda y sobre cubierta
+
+ $isColor = intval($reqData['isColor']) ?? 0;
+ $isHq = intval($reqData['isHq']) ?? 0;
+
+ $tipo_impresion_id = $this->getTipoImpresion($tipo, $tipoCubierta);
+ $is_cosido = (new TipoPresupuestoModel())->get_isCosido($tipo_impresion_id);
+
+ $interior = $reqData['interior'] ?? [];
+
+ if ($papelInteriorDiferente) {
+ $papel['negro'] = $modelPapelGenerico->where('id', $interior['papelInterior']['negro'])->first()->toArray();
+ $papel['color'] = $modelPapelGenerico->where('id', $interior['papelInterior']['color'])->first()->toArray();
+ $gramaje['negro'] = intval($interior['gramajeInterior']['negro']);
+ $gramaje['color'] = intval($interior['gramajeInterior']['color']);
+ } else {
+ $papel = $modelPapelGenerico->where('id', $interior['papelInterior'])->first()->toArray();
+ $gramaje = intval($interior['gramajeInterior']);
+ }
+
+ $datosPedido = (object) array(
+ 'paginas' => $paginas,
+ 'tirada' => $tirada[0],
+ 'merma' => $tirada[0] > $POD ? $this->calcular_merma($tirada[0], $POD) : 0,
+ 'ancho' => intval($tamanio['ancho']) ?? 100000,
+ 'alto' => intval($tamanio['alto']) ?? 100000,
+ 'isCosido' => $is_cosido,
+ 'a_favor_fibra' => 1,
+ );
+
+ $input_data = array(
+ 'uso' => 'interior',
+ 'tipo_impresion_id' => $tipo_impresion_id,
+ 'datosPedido' => $datosPedido,
+ 'papel_generico' => $papel,
+ 'gramaje' => $gramaje,
+ 'isColor' => $isColor,
+ 'isHq' => $isHq,
+ 'cliente_id' => $cliente_id,
+ 'paginas_color' => $paginas_color,
+ 'excluirRotativa' => $excluirRotativa,
+ 'papelInteriorDiferente' => $papelInteriorDiferente
+ );
+
+ $interior = PresupuestoClienteService::obtenerInterior($input_data);
+ if ($interior == null) {
+ return $this->failServerError('Error al calcular el interior');
+ }
+ $anchoTotal = $interior[0]['mano'];
+ // le añadimos 2*ancho libro
+ $anchoTotal += 2 * $datosPedido->ancho;
+ // le añadimos los dobleces de las solapas
+ $anchoTotal += 6;
+ // le añadimos la sangre
+ $anchoTotal += PresupuestoService::SANGRE_FORMAS;
+ // 863 es el ancho máximo permitido por las máquinas
+ $maxSolapa = (865 - floor($anchoTotal)) / 2;
+ $maxSolapa = min($maxSolapa, 0.75 * $datosPedido->ancho);
+ return $this->respond($maxSolapa);
+
+ } else {
+ return $this->failUnauthorized('Invalid request', 403);
+ }
+
+ }
+
+
public function getDireccionesCliente()
{
if ($this->request->isAJAX()) {
@@ -488,6 +576,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
'menu' => $data,
$csrfTokenName => $newTokenHash
]);
+
} else {
return $this->failUnauthorized('Invalid request', 403);
}
@@ -696,10 +785,10 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
// Cubierta
$cubierta = [
- 'papel_generico_cubierta' => $modelPapelGenerico->getIdFromCode($cubierta['papelCubierta']),
+ 'papel_generico_cubierta' => $modelPapelGenerico->where('id', $cubierta['papelCubierta'])->first()->toArray(),
'gramajeCubierta' => intval($cubierta['gramajeCubierta']),
'carasCubierta' => intval($cubierta['carasImpresion'] ?? 0),
- 'solapasCubierta' => intval($cubierta['solapas'] ?? 0),
+ 'solapasCubierta' => intval($cubierta['solapas'] ?? 0) == 1 ? intval($cubierta['tamanioSolapas']) : 0,
'acabadosCubierta' => $cubierta['acabados'] ?? 0,
'lomoRedondo' => $cubierta['lomoRedondo'] ?? 0,
'cabezada' => $cubierta['cabezada'] ?? 'WHI',
@@ -913,6 +1002,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
} else if ($servicio->tarifa_id == 62) {
// Servicios manipulado
$this->guardarServicio($id, $servicio, 'manipulado');
+ } else if ($servicio->tarifa_id == 73) {
+ // Servicios manipulado
+ $this->guardarServicio($id, $servicio, 'manipulado');
}
}
@@ -1013,6 +1105,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$data['sobrecubierta']['solapas'] = $presupuesto->solapas_sobrecubierta ? 1 : 0;
$data['sobrecubierta']['solapas_ancho'] = $presupuesto->solapas_ancho_sobrecubierta;
$data['sobrecubierta']['plastificado'] = $modelAcabado->getCodeFromId($presupuesto->acabado_sobrecubierta_id);
+ if ($data['sobrecubierta']['plastificado'] == '') {
+ $data['sobrecubierta']['plastificado'] = 'NONE';
+ }
$data['guardas'] = array_key_exists('guardas', $datos_papel) ? $datos_papel['guardas'] : [];
@@ -1796,6 +1891,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
'solapas' => intval($solapasCubierta) > 0 ? 1 : 0,
'paginasCuadernillo' => $paginasCuadernillo,
]);
+
+
+
$costeServiciosDefecto = 0.0;
foreach ($servDefecto as $servicio) {
if ($servicio->total <= 0) {
@@ -1829,6 +1927,14 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
// Servicios
+
+
+ /*
+ 'retractilado' => 3,
+ 'prototipo' => 9,
+ */
+ $serviciosAutomaticos = [];
+ $servicios = [];
// se comprueba si $datos guardas es un array
if (is_array($datos_guardas)) {
if (count($datos_guardas) > 0) {
@@ -1839,13 +1945,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
array_push($servicios, 62); // Plegado de guardas
}
}
-
- /*
- 'retractilado' => 3,
- 'prototipo' => 9,
- */
- $serviciosAutomaticos = [];
- $servicios = [];
if ($datos_entrada['servicios']['retractilado']) // acabado
array_push($servicios, 3);
if ($datos_entrada['servicios']['retractilado5']) // acabado
@@ -1873,7 +1972,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$errorModel->insertError(
$datos_entrada['id'],
auth()->user()->id,
- 'No se puede obtener servicio con id ' . ((string)$servicio),
+ 'No se puede obtener servicio con id ' . ((string) $servicio),
$input_data
);
$return_data = [
@@ -1901,7 +2000,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$errorModel->insertError(
$datos_entrada['id'],
auth()->user()->id,
- 'No se puede obtener servicio con id ' . ((string)$servicio),
+ 'No se puede obtener servicio con id ' . ((string) $servicio),
$input_data
);
$return_data = [
@@ -1921,6 +2020,45 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
}
+ // Plegado de solapas grandes
+ if (
+ (intval($solapasCubierta) > 0 && intval($cubierta['dimension_desarrollo']['ancho']) > 630) ||
+ (is_array($sobreCubierta) && ($sobreCubierta['solapas'] > 0 && intval($linea_sobrecubierta['dimension_desarrollo']['ancho']) > 630))
+ ) {
+
+ // Servicios acabado
+ $resultado = PresupuestoCLienteService::getServiciosManipulado([
+ 'tarifa_id' => 73,
+ 'tirada' => $datosPedido->tirada,
+ 'POD' => $POD,
+ ]);
+ array_push($serviciosAutomaticos, $resultado[0]);
+
+ if ($resultado[0]->total <= 0) {
+
+ $errorModel = new ErrorPresupuesto();
+ $errorModel->insertError(
+ $datos_entrada['id'],
+ auth()->user()->id,
+ 'No se puede obtener servicio de manupulado con id ' . ((string) $servicio),
+ $input_data
+ );
+ $return_data = [
+ 'errors' => (object) ([
+ 'status' => 1
+ ]),
+ ];
+ return $return_data;
+ }
+
+ $coste_servicios += floatval($resultado[0]->total);
+ if ($extra_info) {
+ $totalServicios += floatval($resultado[0]->total);
+ $margenServicios += floatval($resultado[0]->total) * floatval($resultado[0]->margen) / 100.0;
+ }
+
+ }
+
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));
diff --git a/ci4/app/Controllers/Utiles.php b/ci4/app/Controllers/Utiles.php
new file mode 100644
index 00000000..c44a0aa8
--- /dev/null
+++ b/ci4/app/Controllers/Utiles.php
@@ -0,0 +1,320 @@
+where(['is_deleted' => 0])->findAll();
+
+ // Iterar sobre cada entidad
+ echo '
';
+ foreach ($results as $result) {
+ // Cada $result es una instancia de una entidad
+ print_r($result->toArray()); // Convierte la entidad a un array para imprimir sus valores
+ }
+ echo ' ';
+ }
+
+ public function get_tarifa_encuadernacion($tarifaEncuadernacionId)
+ {
+ // Llamar a los modelos
+ $modelTE = model('App\Models\Tarifas\TarifaEncuadernacionModel');
+ $modelTELineas = model('App\Models\Tarifas\TarifaEncuadernacionLineaModel');
+ $modelTELineasHoras = model('App\Models\Tarifas\TarifaEncuadernacionLineaHorasModel');
+ $modelTETiradas = model('App\Models\Tarifas\TarifaEncuadernacionTiradaModel');
+
+
+ // Obtener el registro principal de tarifa_encuadernacion
+ $tarifas_encuadernacion = $modelTE->where([
+ 'id' => $tarifaEncuadernacionId,
+ 'is_deleted' => 0
+ ])->findAll();
+
+ // Verificar si se encontró la tarifa
+ if (empty($tarifas_encuadernacion)) {
+ echo "No se encontraron datos para la tarifa de encuadernación con ID: $tarifaEncuadernacionId.";
+ return;
+ }
+
+ // Imprimir la tarifa de encuadernación principal
+ echo "---------------------- DATO TARIFA ENCUADERNACION ---------------------- ";
+ foreach ($tarifas_encuadernacion as $tarifa_encuadernacion) {
+ echo "ID Tarifa: " . $tarifa_encuadernacion->id . " ";
+ echo "Nombre: " . $tarifa_encuadernacion->nombre . " ";
+ echo " ";
+ }
+
+ // Obtener las tiradas asociadas a esta tarifa de encuadernación
+ $tarifas_encuadernacion_tiradas = $modelTETiradas->where([
+ 'tarifa_encuadernacion_id' => $tarifaEncuadernacionId,
+ 'is_deleted' => 0
+ ])->findAll();
+
+ // Verificar si existen tiradas para la tarifa de encuadernación
+ if (empty($tarifas_encuadernacion_tiradas)) {
+ echo "No hay tiradas asociadas a esta tarifa de encuadernación.";
+ return;
+ }
+
+ // Imprimir las tiradas asociadas
+ echo "---------------------- DATO TARIFA ENCUADERNACION (TIRADAS) ------------- ";
+ foreach ($tarifas_encuadernacion_tiradas as $tarifa_encuadernacion_tirada) {
+ echo "ID Tirada: " . $tarifa_encuadernacion_tirada->id . " ";
+ echo "Tirada Min: " . $tarifa_encuadernacion_tirada->tirada_min . " ";
+ echo "Tirada Max: " . $tarifa_encuadernacion_tirada->tirada_max . " ";
+
+ // Obtener las líneas asociadas a esta tirada
+ $tarifas_encuadernacion_lineas = $modelTELineas->where([
+ 'tirada_encuadernacion_id' => $tarifa_encuadernacion_tirada->id,
+ 'is_deleted' => 0
+ ])->findAll();
+
+ // Verificar si existen líneas asociadas a la tirada
+ if (empty($tarifas_encuadernacion_lineas)) {
+ echo "No hay líneas asociadas a esta tirada de encuadernación. ";
+ } else {
+ // Imprimir las líneas asociadas
+ echo "";
+ foreach ($tarifas_encuadernacion_lineas as $tarifa_encuadernacion_linea) {
+ echo "ID Línea: " . $tarifa_encuadernacion_linea->id . " ";
+ }
+ echo " ";
+ }
+
+ // Obtener las líneas y horas asociadas a esta tirada
+ $tarifas_encuadernacion_lineas_horas = $modelTELineasHoras->where([
+ 'tirada_encuadernacion_id' => $tarifa_encuadernacion_tirada->id,
+ 'is_deleted' => 0
+ ])->findAll();
+
+ // Verificar si existen líneas y horas asociadas a la tirada
+ if (empty($tarifas_encuadernacion_lineas_horas)) {
+ echo "No hay líneas y horas asociadas a esta tirada de encuadernación. ";
+ } else {
+ // Imprimir las líneas asociadas
+ echo "";
+ foreach ($tarifas_encuadernacion_lineas_horas as $tarifas_encuadernacion_linea_hora) {
+ echo "ID Línea/Hora: " . $tarifas_encuadernacion_linea_hora->id . " ";
+ }
+ echo " ";
+ }
+
+ echo " ";
+ }
+
+ echo "---------------------- FIN DE DATO TARIFA ENCUADERNACION ---------------------- ";
+ }
+
+ public function delete_tarifa_encuadernacion($tarifaEncuadernacionId)
+ {
+ // Llamar a los modelos
+ $modelTE = model('App\Models\Tarifas\TarifaEncuadernacionModel');
+ $modelTELineas = model('App\Models\Tarifas\TarifaEncuadernacionLineaModel');
+ $modelTELineasHoras = model('App\Models\Tarifas\TarifaEncuadernacionLineaHorasModel');
+ $modelTETiradas = model('App\Models\Tarifas\TarifaEncuadernacionTiradaModel');
+
+ // Obtener el registro principal de tarifa_encuadernacion
+ $tarifas_encuadernacion = $modelTE->where([
+ 'id' => $tarifaEncuadernacionId,
+ 'is_deleted' => 0
+ ])->findAll();
+
+ // Verificar si se encontró la tarifa
+ if (empty($tarifas_encuadernacion)) {
+ echo "No se encontró la tarifa de encuadernación con ID: $tarifaEncuadernacionId.";
+ return;
+ }
+
+ // Iniciar eliminación de datos asociados
+ echo "Eliminando datos asociados a la tarifa de encuadernación ID: $tarifaEncuadernacionId... ";
+
+ // Eliminar las tiradas asociadas a la tarifa de encuadernación
+ $tarifas_encuadernacion_tiradas = $modelTETiradas->where([
+ 'tarifa_encuadernacion_id' => $tarifaEncuadernacionId,
+ 'is_deleted' => 0
+ ])->findAll();
+
+ if (!empty($tarifas_encuadernacion_tiradas)) {
+ foreach ($tarifas_encuadernacion_tiradas as $tarifa_encuadernacion_tirada) {
+ // Eliminar las líneas de horas asociadas a cada tirada
+ $tarifas_encuadernacion_lineas_horas = $modelTELineasHoras->where([
+ 'tirada_encuadernacion_id' => $tarifa_encuadernacion_tirada->id,
+ 'is_deleted' => 0
+ ])->findAll();
+
+ if (!empty($tarifas_encuadernacion_lineas_horas)) {
+ foreach ($tarifas_encuadernacion_lineas_horas as $tarifa_encuadernacion_linea_hora) {
+ $modelTELineasHoras->delete($tarifa_encuadernacion_linea_hora->id); // Eliminar la línea/hora
+ echo "===sk >-Eliminando Línea/Hora ID: " . $tarifa_encuadernacion_linea_hora->id . " ";
+ }
+ }
+
+ // Eliminar las líneas asociadas a cada tirada
+ $tarifas_encuadernacion_lineas = $modelTELineas->where([
+ 'tirada_encuadernacion_id' => $tarifa_encuadernacion_tirada->id,
+ 'is_deleted' => 0
+ ])->findAll();
+
+ if (!empty($tarifas_encuadernacion_lineas)) {
+ foreach ($tarifas_encuadernacion_lineas as $tarifa_encuadernacion_linea) {
+ $modelTELineas->delete($tarifa_encuadernacion_linea->id); // Eliminar la línea
+ echo "===>-Eliminando Línea ID: " . $tarifa_encuadernacion_linea->id . " ";
+ }
+ }
+
+ // Eliminar la tirada
+ $modelTETiradas->delete($tarifa_encuadernacion_tirada->id); // Eliminar la tirada
+ echo "=>-Eliminando Tirada ID: " . $tarifa_encuadernacion_tirada->id . " ";
+ }
+ }
+
+ echo " *** Proceso de eliminación completado. *** ";
+ }
+
+ public function clone_tarifa_encuadernacion($origenId, $destinoId)
+ {
+ // Llamar a los modelos
+ $modelTETiradas = model('App\Models\Tarifas\TarifaEncuadernacionTiradaModel');
+ $modelTELineas = model('App\Models\Tarifas\TarifaEncuadernacionLineaModel');
+ $modelTELineasHoras = model('App\Models\Tarifas\TarifaEncuadernacionLineaHorasModel');
+
+ // 1. Eliminar el contenido asociado de la tarifa destino
+ $this->delete_tarifa_encuadernacion($destinoId);
+
+ // 2. Obtener las tiradas asociadas a la tarifa origen
+ $tiradasOrigen = $modelTETiradas->where([
+ 'tarifa_encuadernacion_id' => $origenId,
+ 'is_deleted' => 0
+ ])->findAll();
+
+ foreach ($tiradasOrigen as $tiradaOrigen) {
+ // Crear un nuevo registro para la tirada en la tarifa destino
+ $nuevaTirada = [
+ 'tarifa_encuadernacion_id' => (int) $destinoId,
+ 'proveedor_id' => (int) $tiradaOrigen->proveedor_id,
+ 'importe_fijo' => (float) $tiradaOrigen->importe_fijo,
+ 'tirada_min' => (int) $tiradaOrigen->tirada_min,
+ 'tirada_max' => (int) $tiradaOrigen->tirada_max,
+ 'user_created_id' => (int) auth()->id(),
+ 'is_deleted' => 0
+ ];
+
+ try {
+ $nuevaTiradaId = $modelTETiradas->insert($nuevaTirada);
+ if (!$nuevaTiradaId) {
+ throw new \Exception("Error al insertar el registro.");
+ }
+ echo " ==>+Tirada creada con ID: " . $nuevaTiradaId;
+ } catch (\Exception $e) {
+ echo "Error: " . $e->getMessage();
+ }
+
+ // 3. Clonar las líneas asociadas a esta tirada
+ $lineasOrigen = $modelTELineas->where([
+ 'tirada_encuadernacion_id' => $tiradaOrigen->id,
+ 'is_deleted' => 0
+ ])->findAll();
+
+ foreach ($lineasOrigen as $lineaOrigen) {
+ $nuevaLinea = [
+ 'tirada_encuadernacion_id' => (int) $nuevaTiradaId,
+ 'paginas_libro_min' => (float) $lineaOrigen->paginas_libro_min,
+ 'paginas_libro_max' => (float) $lineaOrigen->paginas_libro_max,
+ 'dimensiones_id' => (int) $lineaOrigen->dimensiones_id,
+ 'precio_min' => (float) $lineaOrigen->precio_min,
+ 'precio_max' => (float) $lineaOrigen->precio_max,
+ 'tirada_min' => (float) $lineaOrigen->tirada_min,
+ 'tirada_max' => (float) $lineaOrigen->tirada_max,
+ 'total_min' => (float) $lineaOrigen->total_min,
+ 'margen' => (float) $lineaOrigen->margen,
+ 'user_created_id' => (int) auth()->id(),
+ 'is_deleted' => 0
+ ];
+
+ try {
+ $nuevaLineaId = $modelTELineas->insert($nuevaLinea);
+ if (!$nuevaLineaId) {
+ throw new \Exception("Error al insertar el registro.");
+ }
+ echo " ====>+Linea creada con ID: " . $nuevaLineaId;
+ } catch (\Exception $e) {
+ echo "Error: " . $e->getMessage();
+ }
+
+ }
+
+ // 4. Clonar las líneas y horas asociadas a esta tirada
+ $lineasHorasOrigen = $modelTELineasHoras->where([
+ 'tirada_encuadernacion_id' => $tiradaOrigen->id,
+ 'is_deleted' => 0
+ ])->findAll();
+
+ foreach ($lineasHorasOrigen as $lineaHoraOrigen) {
+ $nuevaLineaHora = [
+ 'tirada_encuadernacion_id' => (int) $nuevaTiradaId,
+ 'tiempo_min' => (float) $lineaHoraOrigen->tiempo_min,
+ 'tiempo_max' => (float) $lineaHoraOrigen->tiempo_max,
+ 'precio_hora' => (float) $lineaHoraOrigen->precio_hora,
+ 'total_min' => (float) $lineaHoraOrigen->total_min,
+ 'margen' => (float) $lineaHoraOrigen->margen,
+ 'user_created_id' => (int) auth()->id(),
+ 'is_deleted' => 0
+ ];
+
+ try {
+ $nuevaLineaHoraId = $modelTELineasHoras->insert($nuevaLineaHora);
+ if (!$nuevaLineaHoraId) {
+ throw new \Exception("Error al insertar el registro.");
+ }
+ echo " ====>+Linea/Hora creado con ID: " . $nuevaLineaHoraId;
+ } catch (\Exception $e) {
+ echo "Error: " . $e->getMessage();
+ }
+
+ }
+ }
+
+ echo " *** Proceso de clonacion completado. *** ";
+ }
+
+
+
+
+
+
+}
diff --git a/ci4/app/Database/Migrations/2024-11-27-105608_AddTickTapaDuraPapelImp.php b/ci4/app/Database/Migrations/2024-11-27-105608_AddTickTapaDuraPapelImp.php
new file mode 100644
index 00000000..e5cc1b91
--- /dev/null
+++ b/ci4/app/Database/Migrations/2024-11-27-105608_AddTickTapaDuraPapelImp.php
@@ -0,0 +1,27 @@
+ [
+ 'type' => 'TINYINT',
+ 'constraint' => 1,
+ 'null' => false,
+ 'default' => 0,
+ ],
+ ];
+
+ $this->forge->addColumn('lg_papel_impresion', $fields);
+ }
+
+ public function down()
+ {
+ $this->forge->dropColumn('lg_papel_impresion', 'use_for_tapa_dura');
+ }
+}
diff --git a/ci4/app/Entities/Configuracion/PapelImpresion.php b/ci4/app/Entities/Configuracion/PapelImpresion.php
index d2e0b2ff..4d79a06e 100755
--- a/ci4/app/Entities/Configuracion/PapelImpresion.php
+++ b/ci4/app/Entities/Configuracion/PapelImpresion.php
@@ -25,6 +25,7 @@ class PapelImpresion extends \CodeIgniter\Entity\Entity
"rotativa" => false,
"isActivo" => true,
"use_in_client" => false,
+ "use_for_tapa_dura" => false,
"is_deleted" => 0,
"created_at" => null,
"updated_at" => null,
@@ -45,6 +46,7 @@ class PapelImpresion extends \CodeIgniter\Entity\Entity
"rotativa" => "boolean",
"isActivo" => "boolean",
"use_in_client" => "boolean",
+ "use_for_tapa_dura" => "boolean",
"is_deleted" => "int",
];
}
diff --git a/ci4/app/Language/es/PapelImpresion.php b/ci4/app/Language/es/PapelImpresion.php
index 780fc979..939442db 100755
--- a/ci4/app/Language/es/PapelImpresion.php
+++ b/ci4/app/Language/es/PapelImpresion.php
@@ -10,6 +10,7 @@ return [
'color' => 'Color',
'createdAt' => 'Creado en',
'cubierta' => 'Cubierta',
+ 'use_for_tapa_dura' => 'Papel tapa dura',
'sobrecubierta' => 'Sobrecubierta',
'guardas' => 'Guardas',
'defecto' => 'Por defecto',
diff --git a/ci4/app/Models/Configuracion/PapelGenericoModel.php b/ci4/app/Models/Configuracion/PapelGenericoModel.php
index 34dacfe0..63f0403e 100755
--- a/ci4/app/Models/Configuracion/PapelGenericoModel.php
+++ b/ci4/app/Models/Configuracion/PapelGenericoModel.php
@@ -313,7 +313,7 @@ class PapelGenericoModel extends \App\Models\BaseModel
}
- public function getPapelCliente($tipo, $is_cubierta = false, $selected_papel_id = null, $papel_especial = false)
+ public function getPapelCliente($tipo, $is_cubierta = false, $selected_papel_id = null, $tapa_dura = null, $papel_especial = false)
{
/*
1.-> Tipo impresion
@@ -382,6 +382,9 @@ class PapelGenericoModel extends \App\Models\BaseModel
if ($is_cubierta == true) {
$builder->where("t2.cubierta", 1);
$builder->where("t5.uso", 'cubierta');
+ if($tapa_dura == true){
+ $builder->where("t2.use_for_tapa_dura", 1);
+ }
} else {
$builder->where("t2.interior", 1);
$builder->where("t5.uso", 'interior');
@@ -394,6 +397,9 @@ class PapelGenericoModel extends \App\Models\BaseModel
if ($papel_especial == true) {
$builder->where("t1.show_in_client_special", 1);
}
+ else{
+ $builder->where("t1.show_in_client_special", 0);
+ }
if ($tipo == 'colorhq' || $tipo == 'negrohq') {
$builder->where("t2.rotativa", 0);
diff --git a/ci4/app/Models/Configuracion/PapelImpresionModel.php b/ci4/app/Models/Configuracion/PapelImpresionModel.php
index 814463f8..de9473b9 100755
--- a/ci4/app/Models/Configuracion/PapelImpresionModel.php
+++ b/ci4/app/Models/Configuracion/PapelImpresionModel.php
@@ -20,12 +20,13 @@ class PapelImpresionModel extends \App\Models\BaseModel
4 => "t1.bn",
5 => "t1.color",
6 => "t1.cubierta",
- 7 => "t1.sobrecubierta",
- 8 => "t1.guardas",
- 9 => "t1.inkjet",
- 10 => "t1.rotativa",
- 11 => "t1.isActivo",
- 12 => "t1.use_in_client",
+ 7 => "t1.use_for_tapa_dura",
+ 8 => "t1.sobrecubierta",
+ 9 => "t1.guardas",
+ 10 => "t1.inkjet",
+ 11 => "t1.rotativa",
+ 12 => "t1.isActivo",
+ 13 => "t1.use_in_client",
];
@@ -48,6 +49,7 @@ class PapelImpresionModel extends \App\Models\BaseModel
"rotativa",
"isActivo",
"use_in_client",
+ "use_for_tapa_dura",
"deleted_at",
"is_deleted",
"user_updated_id",
@@ -152,7 +154,8 @@ class PapelImpresionModel extends \App\Models\BaseModel
->select(
"t1.id AS id, t1.nombre AS nombre, t1.defecto AS defecto, t1.referencia AS referencia, t1.mano AS mano,
t1.espesor AS espesor, t1.gramaje AS gramaje, t1.interior AS interior, t1.precio_tonelada AS precio_tonelada,
- t1.bn AS bn, t1.color AS color, t1.cubierta AS cubierta, t1.sobrecubierta AS sobrecubierta, t1.guardas AS guardas,
+ t1.bn AS bn, t1.color AS color, t1.cubierta AS cubierta, t1.use_for_tapa_dura AS use_for_tapa_dura,
+ t1.sobrecubierta AS sobrecubierta, t1.guardas AS guardas,
t1.inkjet AS inkjet, t1.rotativa AS rotativa,
t1.isActivo AS isActivo, t2.nombre AS papel_generico_id,
t1.use_in_client AS use_in_client"
diff --git a/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php b/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php
index 9e78b7a1..7ce6c1c4 100755
--- a/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php
+++ b/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php
@@ -248,7 +248,7 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel
return [];
}
- public function getPrecioTarifaHoras($tarifa_encuadernacion_id, $paginas, $tirada, $proveedor_id, $POD, $paginas_cuadernillo = null){
+ public function getPrecioTarifaHoras($tarifa_encuadernacion_id, $paginas, $tirada, $proveedor_id, $POD, $paginas_cuadernillo = 32){
$modelTarifa = model('App\Models\Tarifas\TarifaEncuadernacionModel');
diff --git a/ci4/app/Models/Presupuestos/PresupuestoModel.php b/ci4/app/Models/Presupuestos/PresupuestoModel.php
index dc73bd25..974c29fa 100755
--- a/ci4/app/Models/Presupuestos/PresupuestoModel.php
+++ b/ci4/app/Models/Presupuestos/PresupuestoModel.php
@@ -426,7 +426,7 @@ class PresupuestoModel extends \App\Models\BaseModel
'solapas' => $data['cubierta']['solapasCubierta'] == 0 ? 0 : 1,
'lomo_redondo' => $data['cubierta']['lomoRedondo'] == 0 ? 0 : 1,
'cabezada' => $data['cubierta']['cabezada'] == 0 ? 0 : 1,
- 'solapas_ancho' => $data['cubierta']['solapasCubierta'] == 0 ? $data['cubierta']['solapasCubierta'] : 0,
+ 'solapas_ancho' => $data['cubierta']['solapasCubierta'] > 0 ? $data['cubierta']['solapasCubierta'] : 0,
'solapas_sobrecubierta' => !$data['sobrecubierta'] ? 0 : 1,
'solapas_ancho_sobrecubierta' => !$data['sobrecubierta'] ? 0 : $data['sobrecubierta']['solapas'],
'cosido' => $is_cosido,
diff --git a/ci4/app/Models/Presupuestos/TipoPresupuestoServiciosDefectoModel.php b/ci4/app/Models/Presupuestos/TipoPresupuestoServiciosDefectoModel.php
index 1cc1f9e9..8979b058 100755
--- a/ci4/app/Models/Presupuestos/TipoPresupuestoServiciosDefectoModel.php
+++ b/ci4/app/Models/Presupuestos/TipoPresupuestoServiciosDefectoModel.php
@@ -79,6 +79,7 @@ class TipoPresupuestoServiciosDefectoModel extends \App\Models\BaseModel
$where = "(t1.solapas IS NULL OR t1.solapas='" . $solapas . "')";
$builder->where($where);
+ $builder->where("t1.is_deleted", 0);
$builder->where("t2.is_deleted", 0);
$builder->select("t1.tarifa_id AS tarifa_id, t2.nombre AS tarifa_nombre");
diff --git a/ci4/app/Services/PresupuestoClienteService.php b/ci4/app/Services/PresupuestoClienteService.php
index ea59622c..000a27e3 100644
--- a/ci4/app/Services/PresupuestoClienteService.php
+++ b/ci4/app/Services/PresupuestoClienteService.php
@@ -416,6 +416,17 @@ class PresupuestoClienteService extends BaseService
return $values;
}
+ public static function getServiciosManipuladoDefault($data)
+ {
+
+ $tirada = $data['tirada'] ?? -1;
+ $anchoDesarrollo = $data['anchoDesarrollo'] ?? -1;
+
+ /*$model = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel');
+ $values = $model->initPresupuesto($tipo_impresion_id, $solapas, $tirada, $paginas, $ancho, $alto, $POD, $paginasCuadernillo);*/
+ //return $values;
+ }
+
public static function getServiciosManipulado($data)
{
diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php
index a6c1074b..1aba14fd 100755
--- a/ci4/app/Services/PresupuestoService.php
+++ b/ci4/app/Services/PresupuestoService.php
@@ -1479,7 +1479,7 @@ class PresupuestoService extends BaseService
// con el mismo proveedor
else {
if ($tarifaModel->isTarifaPorHoras($servicio->tarifa_encuadernado_id)) {
- $paginas_cuadernillo = $servicio->paginas_por_cuadernillo ?? null;
+ $paginas_cuadernillo = $servicio->paginas_por_cuadernillo ?? 32;
$nueva_tarifa = $model->getPrecioTarifaHoras(
$servicio->tarifa_encuadernado_id,
$input_data['paginas'],
@@ -1815,6 +1815,12 @@ class PresupuestoService extends BaseService
}
}
+ if ($uso == 'cubierta' || $uso == 'sobrecubierta') {
+
+ $linea['fields']['dimension_desarrollo']['ancho'] = $datosPedido->anchoExteriores;
+ $linea['fields']['dimension_desarrollo']['alto'] = $datosPedido->altoExteriores;
+ }
+
if (!array_key_exists('tipo_linea', $linea['fields'])) {
if ($isColor) {
if ($isHq)
diff --git a/ci4/app/Views/themes/vuexy/form/configuracion/papel/_papelImpresionFormItems.php b/ci4/app/Views/themes/vuexy/form/configuracion/papel/_papelImpresionFormItems.php
index b094e35d..5d0473d6 100644
--- a/ci4/app/Views/themes/vuexy/form/configuracion/papel/_papelImpresionFormItems.php
+++ b/ci4/app/Views/themes/vuexy/form/configuracion/papel/_papelImpresionFormItems.php
@@ -99,6 +99,17 @@
+
+
+
+
+ cubierta? ' ' : 'disabled ' ?> type="checkbox" id="useForTapaDura" name="use_for_tapa_dura" value="1" class="form-check-input"
+ = $papelImpresion->use_for_tapa_dura == true ? 'checked' : ''; ?>>
+ = lang('PapelImpresion.use_for_tapa_dura') ?>
+
+
+
+
diff --git a/ci4/app/Views/themes/vuexy/form/configuracion/papel/viewPapelImpresionForm.php b/ci4/app/Views/themes/vuexy/form/configuracion/papel/viewPapelImpresionForm.php
index 6e6079b1..9c4c2abc 100644
--- a/ci4/app/Views/themes/vuexy/form/configuracion/papel/viewPapelImpresionForm.php
+++ b/ci4/app/Views/themes/vuexy/form/configuracion/papel/viewPapelImpresionForm.php
@@ -403,6 +403,16 @@
`;
};
+ $('#cubierta').on('change', function() {
+ if($(this).is(':checked')) {
+ $('#useForTapaDura').prop('disabled', false);
+ $('#useForTapaDura').prop('checked', false);
+ }
+ else{
+ $('#useForTapaDura').prop('disabled', true);
+ }
+ });
+
// Etiquetas para las tipologias
const tipoTypes = [
diff --git a/ci4/app/Views/themes/vuexy/form/configuracion/papel/viewPapelImpresionList.php b/ci4/app/Views/themes/vuexy/form/configuracion/papel/viewPapelImpresionList.php
index 2ba47b1d..5dcf2c20 100644
--- a/ci4/app/Views/themes/vuexy/form/configuracion/papel/viewPapelImpresionList.php
+++ b/ci4/app/Views/themes/vuexy/form/configuracion/papel/viewPapelImpresionList.php
@@ -25,6 +25,7 @@
= lang('PapelImpresion.bn') ?>
= lang('PapelImpresion.color') ?>
= lang('PapelImpresion.cubierta') ?>
+
= lang('PapelImpresion.use_for_tapa_dura') ?>
= lang('PapelImpresion.sobrecubierta') ?>
= lang('PapelImpresion.guardas') ?>
= lang('PapelImpresion.inkjet') ?>
@@ -104,6 +105,7 @@
{ 'data': 'bn' },
{ 'data': 'color' },
{ 'data': 'cubierta' },
+ { 'data': 'use_for_tapa_dura'},
{ 'data': 'sobrecubierta' },
{ 'data': 'guardas' },
{ 'data': 'inkjet' },
@@ -116,7 +118,7 @@
theTable.on( 'draw.dt', function () {
- const boolCols = [3, 4, 5, 6, 7, 8, 9, 10, 11];
+ const boolCols = [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
for (let coln of boolCols) {
theTable.column(coln, { page: 'current' }).nodes().each( function (cell, i) {
cell.innerHTML = cell.innerHTML == '1' ? '
' : '';
diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.js b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.js
index 130adab0..f1871aef 100644
--- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.js
+++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.js
@@ -777,7 +777,7 @@ function convertirTiempo(horas){
// se convierte a formato hh:mm:ss
const h = Math.floor(seconds / 3600);
const minutos = Math.floor((seconds % 3600) / 60);
- const segundos = round(seconds % 60, 0);
+ const segundos = Math.round(seconds % 60, 0);
return h + ':' + minutos + ':' + segundos;
}
else{
diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.php
index 12c35b60..d6fbe850 100644
--- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.php
+++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.php
@@ -318,6 +318,8 @@
init_servicio_extra()
+ /* ELIMINADO PARA COMPROBAR EL MAXIMO DE SOLAPAS DESDE EL BACKEND
+ PENDIENTE
$('.solapas_cubierta').on('change', function(){
const ancho_libro = getDimensionLibro().ancho;
@@ -337,6 +339,7 @@
}
$('#compGramajeCubierta').trigger('change')
+
})
@@ -360,5 +363,7 @@
$('#compGramajeSobrecubierta').trigger('change')
})
+
+ */
= $this->endSection() ?>
diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php
index 37b01331..3f9997af 100644
--- a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php
+++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php
@@ -54,7 +54,7 @@
user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor')) ? " hidden" : "" ?> id="label_clienteId" for="clienteId" class="form-label">
Cliente*
-
user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor')) ? " hidden" : "" ?> id="clienteId" name="cliente_id" class="form-control select2bs2 calcular-presupuesto"
+ user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor')) ? " hidden" : "" ?> id="clienteId" name="cliente_id" class="form-control select2bs2 calcular-presupuesto calcular-solapas"
style="width: 100%;">
user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor')): ?>
cliente
@@ -66,7 +66,7 @@
@@ -86,7 +86,7 @@
= lang('Presupuestos.tirada') ?> 2
-
@@ -94,7 +94,7 @@
= lang('Presupuestos.tirada') ?> 3
-
@@ -102,7 +102,7 @@
= lang('Presupuestos.tirada') ?> 4
-
@@ -113,7 +113,7 @@
Formato Libro*
-
@@ -123,20 +123,20 @@
Ancho Libro*
+ class="form-control formato_libro calcular-presupuesto calcular-solapas num-input" min="110" value="110">
Alto Libro*
+ class="form-control formato_libro calcular-presupuesto calcular-solapas num-input" min="170" value="170">