diff --git a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php index 44432708..32085f3f 100644 --- a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php @@ -121,6 +121,52 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $id = $this->model->db->insertID(); + // Guardar los servicios de encuadernación por defecto + $POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; + $ancho = 0; + $alto = 0; + if(isset($sanitizedData['papel_formato_personalizado']) && $sanitizedData['papel_formato_personalizado'] == '1'){ + $ancho = $sanitizedData['papel_formato_ancho']; + $alto = $sanitizedData['papel_formato_alto']; + } + else{ + $papelFormatoModel = new PapelFormatoModel(); + $papelFormato = $papelFormatoModel->find($sanitizedData['papel_formato_id']); + $ancho = $papelFormato->ancho; + $alto = $papelFormato->alto; + } + $servDefectoEnc = PresupuestoCLienteService::getServiciosEncuadernacionDefault([ + 'tipo_impresion_id' => $sanitizedData['tipo_impresion_id'], + 'tirada' => $sanitizedData['tirada'], + 'paginas' => $sanitizedData['paginas'], + 'ancho' => $ancho, + 'alto' => $alto, + 'POD' => $POD, + 'solapas' => 0, // default + 'paginasCuadernillo' => 32, // default + ]); + + $model = new PresupuestoEncuadernacionesModel(); + foreach($servDefectoEnc as $servicio){ + + $data = [ + 'presupuesto_id' => $id, + 'tarifa_encuadernado_id' => $servicio->tarifa_id, + 'proveedor_id' => $servicio->proveedor_id, + 'tiempo' => $servicio->tiempo, + 'precio_total' => round($servicio->total, 2), + 'precio_unidad' => round($servicio->precio_unidad, 2), + 'margen' => $servicio->margen, + ]; + + // Se comprueba que $servicio tiene paginasCuadernillo + if (isset($servicio->paginas_por_cuadernillo)) { + $data['paginas_por_cuadernillo'] = $servicio->paginas_por_cuadernillo; + } + + $model->insert($data); + } + $message = lang('Basic.global.saveSuccess', [lang('Basic.global.record')]) . '.'; if ($thenRedirect): @@ -252,7 +298,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $successfulResult = false; } else { - if ($successfulResult = $this->canValidate()): // if ($successfulResult = $this->validate($this->formValidationRules) ) + if ($successfulResult = $this->canValidate()): // if ($successfulResult = $this->validate($this->formValidationRules) ) if ($this->canValidate()): try { @@ -510,7 +556,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $data['datosLibro']['marcapaginas'] = $presupuesto->marcapaginas; $data['datosLibro']['retractilado'] = $presupuesto->retractilado; $data['datosLibro']['retractilado5'] = $presupuesto->retractilado5; - + $data['comparador']['tipo_impresion'] = $presupuesto->comp_tipo_impresion; $data['comparador']['json_data'] = json_decode($presupuesto->comparador_json_data, true); if ($data['comparador']['json_data'] != null) { @@ -677,7 +723,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $tipo_impresion_id = $sobrecubierta['tipo_impresion_id']; $faja = intval($sobrecubierta['faja'] ?? 0); $uso = $faja==1? 'faja' : $sobrecubierta['uso']; - + $data = array( 'cliente_id' => $cliente_id, @@ -725,7 +771,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController // guardas siempre hq $isHq = true; - + // Para el caso de Fresado y Cosido tapa dura, las guardas son un diptico // y hay que imprimirlas como "cosido" (dos hojas pegadas). En el caso de espiral // o wire-o tapa dura, las guardas se imprimen como hojas sueltas @@ -1108,14 +1154,14 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $model = model('App\Models\Configuracion\PapelGenericoModel'); $query = $model->getPapelForComparador( - $tipo, - $cubierta, - $sobrecubierta, - $rotativa, - $guardas, - $tapa_dura, + $tipo, + $cubierta, + $sobrecubierta, + $rotativa, + $guardas, + $tapa_dura, $isPOD, - $anchoLibro, + $anchoLibro, $alto, $tirada); if ($this->request->getGet("q")) { @@ -1171,15 +1217,15 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController } $model = model('App\Models\Configuracion\PapelGenericoModel'); - $query = $model->getGramajeForComparador($tipo, - $papel_generico_id, - $cubierta, - $sobrecubierta, - $rotativa, - $guardas, - $tapa_dura, - $isPOD, - $anchoLibro, + $query = $model->getGramajeForComparador($tipo, + $papel_generico_id, + $cubierta, + $sobrecubierta, + $rotativa, + $guardas, + $tapa_dura, + $isPOD, + $anchoLibro, $alto, $tirada); if ($this->request->getGet("q")) { @@ -1417,13 +1463,13 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController /** * Duplica un presupuesto dado por su ID. * - * Esta función duplica un presupuesto y todas sus entidades relacionadas como acabados, encuadernaciones, manipulados, - * preimpresiones, direcciones y lineas. El presupuesto duplicado se marca como tal y a su título se le añade + * Esta función duplica un presupuesto y todas sus entidades relacionadas como acabados, encuadernaciones, manipulados, + * preimpresiones, direcciones y lineas. El presupuesto duplicado se marca como tal y a su título se le añade * una cadena 'duplicado'. La función devuelve un array con un estado de éxito y el ID del nuevo presupuesto. * * @param int $id El ID del presupuesto a duplicar. - * @return array Un array asociativo que contiene una clave 'success' que indica el estado de éxito de la operación, - * y una clave 'id' que contiene el ID del nuevo presupuesto si la operación fue exitosa. + * @return array Un array asociativo que contiene una clave 'success' que indica el estado de éxito de la operación, + * y una clave 'id' que contiene el ID del nuevo presupuesto si la operación fue exitosa. * Si ocurre una excepción, la clave 'success' será false y una clave 'message' contendrá el mensaje de la excepción. * @throws \Exception Si ocurre un error durante la operación. */ @@ -1553,7 +1599,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $gramaje = $reqData['gramaje'] ?? null; $tipoLinea = $reqData['tipoLinea'] ?? null; // En este caso contiene el nombre del papel generico - // Uso: negro, negrohq, color, colorhq, rot_bn, rot_color, + // Uso: negro, negrohq, color, colorhq, rot_bn, rot_color, $model = new PapelImpresionModel(); $menu = $model->getPapelesImpresionForMenu($datos, $gramaje, $tipoLinea, $uso); @@ -1568,7 +1614,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $ancho = $reqData['ancho'] ?? null; $alto = $reqData['alto'] ?? null; // Datos contiene la tirada - // uso: negro, negrohq, color, colorhq, + // uso: negro, negrohq, color, colorhq, $uso_tarifa = $reqData['uso_tarifa'] ?? 'interior'; $model = new MaquinaModel(); $maquinas = $model->getMaquinaImpresionForPresupuesto($is_rotativa, $uso, $uso_tarifa, $datos, $papel_impresion); 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 a96f9556..aaf44c33 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.php @@ -12,9 +12,11 @@ data-bs-parent="#accordionDatosServicios">
+
+
@@ -143,7 +145,7 @@
- + @@ -152,7 +154,7 @@
- + @@ -168,7 +170,7 @@ - +
@@ -179,9 +181,9 @@
- +
- +
@@ -211,7 +213,7 @@
- +
@@ -243,7 +245,7 @@
- + diff --git a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/servicios.js b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/servicios.js index 1bef2905..b6e63cee 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/servicios.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/servicios.js @@ -15,7 +15,7 @@ class Servicios { this.ServiciosManipulado = new ServiciosManipulado(this.csrf_token, this.csrf_hash); this.serviciosExtra = new ServiciosExtra(this.csrf_token, this.csrf_hash); - this.serviciosDefecto = $('#serv_default'); + //this.serviciosDefecto = $('#serv_default'); } init() { @@ -28,21 +28,22 @@ class Servicios { this.ServiciosManipulado.init(); this.serviciosExtra.init(); + /* this.serviciosDefecto.on('click', function () { $('#loader').modal('show'); try { self.ServiciosEncuadernacion.getServiciosDefecto().then(function (response) { - self.ServiciosManipulado.getServiciosDefecto().then(function (response) { + //self.ServiciosManipulado.getServiciosDefecto().then(function (response) { $('#loader').modal('hide'); - }); + //}); }); } catch (error) { console.log(error); $('#loader').modal('hide'); } - }); + });*/ $('.nav-servicios button').on('shown.bs.tab', function () { $("#tableOfServiciosAcabado").DataTable().columns.adjust(); @@ -73,7 +74,7 @@ class Servicios { $(document).on('update-servicios', async function(){ await self.updateServicios() - + $(document).trigger('update-servicios-completed'); }); } @@ -382,7 +383,7 @@ class ServiciosAcabado { { data: 'precio_total', render: function (data, type, row) { let total = 0; - if(data !==undefined) + if(data !==undefined) total = parseFloat(data).toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); return ` `; @@ -453,7 +454,7 @@ class ServiciosAcabado { update_resumen: true, update_tiradas_alternativas: true }); - } + } }); @@ -531,7 +532,7 @@ class ServiciosAcabado { uso = 'faja'; } - + this.getPresupuestoAcabado(tarifa_id, uso, null); } @@ -722,7 +723,7 @@ class ServiciosPreimpresion { data: 'precio', render: function (data, type, row) { let total = 0; - if(data !==undefined) + if(data !==undefined) total = parseFloat(data).toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); return ` `; @@ -757,15 +758,15 @@ class ServiciosPreimpresion { $('#tableOfServiciosPreimpresion tbody').on('change', '.totales-preimpresion', function () { let input = $(this); - let tarifa_id = input.attr('id').replace('precio_preimpresion_', ''); - let newValue = parseFloat(input.val().replace(/\./g, '').replace(',', '.')) || 0; - + let tarifa_id = input.attr('id').replace('precio_preimpresion_', ''); + let newValue = parseFloat(input.val().replace(/\./g, '').replace(',', '.')) || 0; + let table = $('#tableOfServiciosPreimpresion').DataTable(); let row = table.rows().data().toArray().find(r => r.tarifa_id == tarifa_id); - + if (row) { - row.precio = newValue; - table.row($(this).closest('tr')).data(row).draw(false); + row.precio = newValue; + table.row($(this).closest('tr')).data(row).draw(false); self.check_serv_preimpresion_error(); } }); @@ -862,7 +863,7 @@ class ServiciosPreimpresion { } async guardarServiciosPreimpresion() { - + let datos = []; this.table.rows().every(function () { datos.push(this.data()); @@ -956,7 +957,7 @@ class ServiciosEncuadernacion { { data: 'precio_total', render: function (data, type, row) { let total = 0; - if(data !==undefined) + if(data !==undefined) total = parseFloat(data).toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); return ` `; @@ -1246,7 +1247,7 @@ class ServiciosEncuadernacion { } async guardarServiciosEncuadernacion() { - + let datos = []; this.table.rows().every(function () { datos.push(this.data()); @@ -1385,7 +1386,7 @@ class ServiciosManipulado { { data: 'precio_total', render: function (data, type, row) { let total = 0; - if(data !==undefined) + if(data !==undefined) total = parseFloat(data).toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); else data = 0; @@ -1418,15 +1419,15 @@ class ServiciosManipulado { $('#tableOfServiciosManipulado tbody').on('change', '.totales-manipulado', function () { let input = $(this); - let tarifa_id = input.attr('id').replace('precio_manipulado_', ''); - let newValue = parseFloat(input.val().replace(/\./g, '').replace(',', '.')) || 0; - + let tarifa_id = input.attr('id').replace('precio_manipulado_', ''); + let newValue = parseFloat(input.val().replace(/\./g, '').replace(',', '.')) || 0; + let table = $('#tableOfServiciosManipulado').DataTable(); let row = table.rows().data().toArray().find(r => r.tarifa_id == tarifa_id); - + if (row) { - row.precio_total = newValue; - table.row($(this).closest('tr')).data(row).draw(false); + row.precio_total = newValue; + table.row($(this).closest('tr')).data(row).draw(false); self.check_serv_manipulado_error(); } }); @@ -1490,7 +1491,7 @@ class ServiciosManipulado { showBreadCrumbSaveButton(true); } - + updateServicios() { const self = this; @@ -1651,7 +1652,7 @@ class ServiciosExtra { data: 'precio', render: function (data, type, row) { let total = 0; - if(data !==undefined) + if(data !==undefined) total = parseFloat(data).toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); return ` `; @@ -1684,19 +1685,19 @@ class ServiciosExtra { $('#tableOfServiciosExtra tbody').on('change', '.totales-extra', function () { let input = $(this); - let tarifa_id = input.attr('id').replace('precio_extra_', ''); - let newValue = parseFloat(input.val().replace(/\./g, '').replace(',', '.')) || 0; - + let tarifa_id = input.attr('id').replace('precio_extra_', ''); + let newValue = parseFloat(input.val().replace(/\./g, '').replace(',', '.')) || 0; + let table = $('#tableOfServiciosExtra').DataTable(); let row = table.rows().data().toArray().find(r => r.tarifa_id == tarifa_id); - + if (row) { - row.precio = newValue; - table.row($(this).closest('tr')).data(row).draw(false); + row.precio = newValue; + table.row($(this).closest('tr')).data(row).draw(false); self.check_serv_extra_error(); } }); - + $(document).on('click', '.btn-delete-servextra', function () { const rowId = $(this).closest('td').parent()[0].sectionRowIndex; self.table.row(rowId).remove().draw(); @@ -1733,7 +1734,7 @@ class ServiciosExtra { } async guardarServiciosExtra() { - + let datos = []; this.table.rows().every(function () { datos.push(this.data());