From 47eafa75ecfb42d2c4ff19cda1c54602835818ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Sat, 28 Jun 2025 18:15:49 +0200 Subject: [PATCH 01/11] =?UTF-8?q?funcionalidad=20completa=20de=20ferro=20p?= =?UTF-8?q?rototipo=20en=20cliente=20a=20excepci=C3=B3n=20de=20guardar=20l?= =?UTF-8?q?os=20checks=20de=20usar=20la=20misma=20direcci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Presupuestos/Presupuestocliente.php | 17 +++- ci4/app/Language/es/Presupuestos.php | 3 + .../cliente/items/_direcciones.php | 10 +- .../presupuestoCliente/datosGenerales.js | 34 +++---- .../pages/presupuestoCliente/direcciones.js | 92 +++++++++++++++---- .../presupuestoCliente/presupuestoCliente.js | 20 ++-- 6 files changed, 129 insertions(+), 47 deletions(-) diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index 60c3c251..7949c4f0 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -1561,11 +1561,11 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController } if (count($direccionesFP1) > 0) { - $this->guardarLineaEnvio($id, $direccionesFP1, $peso_libro, true); + $this->guardarLineaEnvio($id, $direccionesFP1, $peso_libro, true, true, 1); } if (count($direccionesFP2) > 0) { - $this->guardarLineaEnvio($id, $direccionesFP2, $peso_libro, true); + $this->guardarLineaEnvio($id, $direccionesFP2, $peso_libro, true, true, 2); } if ($confirmar) { @@ -1708,6 +1708,11 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $data['direcciones'] = $this->obtenerDireccionesEnvio($id); } + $direccionesFerroPrototipo = $this->obtenerDireccionesEnvioFerro($id); + if($direccionesFerroPrototipo && count($direccionesFerroPrototipo) > 0) { + $data['direccionesFerroPrototipo'] = $direccionesFerroPrototipo; + } + if (intval($presupuesto->estado_id) == 2) { $data['resumen']['base'] = $presupuesto->total_antes_descuento; $data['resumen']['total_envio'] = round( @@ -1871,7 +1876,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController } - protected function guardarLineaEnvio($presupuestoId, $direccion, $peso_libro, $coste_cero = false) + protected function guardarLineaEnvio($presupuestoId, $direccion, $peso_libro, $coste_cero = false, $is_ferro_prototipo = false, $num_ferro_prototipo = 0) { $unidades = intval($direccion['unidades']); @@ -1893,6 +1898,10 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController unset($data->id); if($coste_cero) { $data->coste = 0; + if($is_ferro_prototipo){ + $data->is_ferro_prototipo = 1; + $data->num_ferro_prototipo = $num_ferro_prototipo; + } } else { $data->precio = $data->coste; } @@ -3426,7 +3435,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController { $model = model('App\Models\Presupuestos\PresupuestoDireccionesModel'); $direcciones = $model->where('presupuesto_id', $id) - ->where('is_ferro_prototipo', 0)->asArray()->findAll(); + ->where('is_ferro_prototipo', 1)->get()->getResultArray(); return $direcciones; } diff --git a/ci4/app/Language/es/Presupuestos.php b/ci4/app/Language/es/Presupuestos.php index dae270ef..86757a06 100755 --- a/ci4/app/Language/es/Presupuestos.php +++ b/ci4/app/Language/es/Presupuestos.php @@ -435,6 +435,9 @@ return [ 'paginas_multiplo_4' => 'El número total de páginas para cosido y grapado debe ser múltiplo de 4', 'paginas_pares' => 'El número de páginas debe ser par', 'extras_cubierta' => 'Rellene todos los campos', + + 'error_sameAddPrincipal_FP' => 'Debe añadir al menos una dirección en el envío para usarla', + 'error_sameAddFP1' => 'Debe añadir al menos una dirección en el envío del primer ferro para usarla.' ], 'errores' => [ diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_direcciones.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_direcciones.php index 516f6767..b87ef927 100755 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_direcciones.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_direcciones.php @@ -68,6 +68,9 @@ + +
+

Dirección de envío ferro/prototipo

@@ -101,11 +104,14 @@
+ class="col-sm-12 d-flex flex-column align-items-center div-direcciones-ferro-prototipo">
+ +
+

Dirección de envío ferro/prototipo 2

@@ -146,7 +152,7 @@
+ class="col-sm-12 d-flex flex-column align-items-center div-direcciones-ferro-prototipo">
diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/datosGenerales.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/datosGenerales.js index 07254345..640e38bf 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/datosGenerales.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/datosGenerales.js @@ -105,27 +105,26 @@ class DatosGenerales { // check ferro y prototipo this.domItem.on('change', 'input[type="checkbox"][data-tarifa-extra-excluyente="1"]', (e) => { - if (!this.cargando) { - const current = $(e.target); - if (current.is(':checked')) { - this.domItem.find('input[type="checkbox"][data-tarifa-extra-excluyente="1"]') - .not(current) - .prop('checked', false); + const current = $(e.target); - if ((current.data('tarifa-nombre')?.toString().toLowerCase() || '').includes('2')) { - $('#direccionesFerroPrototipo2').removeClass('d-none'); - } - $('#direccionesFerroPrototipo').removeClass('d-none'); + if (current.is(':checked')) { + this.domItem.find('input[type="checkbox"][data-tarifa-extra-excluyente="1"]') + .not(current) + .prop('checked', false); + + if ((current.data('tarifa-nombre')?.toString().toLowerCase() || '').includes('2')) { + $('#direccionesFerroPrototipo2').removeClass('d-none'); } - else { - if (this.domItem.find('input[type="checkbox"][data-tarifa-extra-excluyente="1"]').prop('checked').length === 0) { + $('#direccionesFerroPrototipo').removeClass('d-none'); + } + else { + if (this.domItem.find('input[type="checkbox"][data-tarifa-extra-excluyente="1"]').prop('checked').length === 0) { - $('#direccionesFerroPrototipo').addClass('d-none'); - $('#divDireccionesFerroPrototipo').empty(); - $('#direccionesFerroPrototipo2').addClass('d-none'); - $('#divDireccionesFerroPrototipo2').empty(); - } + $('#direccionesFerroPrototipo').addClass('d-none'); + $('#divDireccionesFerroPrototipo').empty(); + $('#direccionesFerroPrototipo2').addClass('d-none'); + $('#divDireccionesFerroPrototipo2').empty(); } } }); @@ -597,6 +596,7 @@ class DatosGenerales { if (datos.serviciosExtra.includes(tarifaId)) { $(this).prop('checked', true); + $(this).trigger('change'); } }); } diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js index ca4a2d74..58415511 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js @@ -105,7 +105,7 @@ class Direcciones { - cargarDatos(datos, datosGenerales) { + cargarDatos(datos, datosGenerales, direccionesFP = []) { self = this; @@ -174,6 +174,30 @@ class Direcciones { this.direcciones.push(tarjeta); } } + + if (direccionesFP.length > 0) { + direccionesFP.forEach(element => { + let divId = "dirEnvio-fp-" + element.num_ferro_prototipo; + let containerId = element.num_ferro_prototipo == 1 ? "#divDireccionesFerroPrototipo" : "#divDireccionesFerroPrototipo2"; + let tarjeta = new tarjetaDireccion(containerId, + divId, element, true, element.num_ferro_prototipo); + tarjeta.setUnidades(1); + tarjeta.setEntregaPalets(0); + tarjeta.card.find('.direccion-eliminar').on('click', (event) => { + this.#deleteDireccionFP(event, element.num_ferro_prototipo); + $('.div-direcciones-fp' + element.num_ferro_prototipo).removeClass('d-none'); + }); + $(containerId).append(tarjeta.card); + if (element.num_ferro_prototipo == 1) { + this.direccionesFP1.push(tarjeta); + } + else { + this.direccionesFP2.push(tarjeta); + } + $('.div-direcciones-fp' + element.num_ferro_prototipo).addClass('d-none'); + + }); + } } catch (e) { console.error(e); $('#loader').modal('hide'); @@ -356,10 +380,10 @@ class Direcciones { try { let id = 0; - if( num_ferroPrototipo === 1) { + if (num_ferroPrototipo === 1) { id = this.direccionesClienteFP1.getVal(); } - if( num_ferroPrototipo === 2) { + if (num_ferroPrototipo === 2) { id = this.direccionesClienteFP2.getVal(); } let unidades = 1; @@ -369,16 +393,23 @@ class Direcciones { let divId = "dirEnvio-FP-" + num_ferroPrototipo; let containerId = num_ferroPrototipo === 1 ? "#divDireccionesFerroPrototipo" : "#divDireccionesFerroPrototipo2"; - let arrayName = num_ferroPrototipo === 1 ? this.direccionesFP1 : this.direccionesFP2; - + + if (num_ferroPrototipo === 1) { + this.direccionesFP1 = []; + } + if (num_ferroPrototipo === 2) { + this.direccionesFP2 = []; + } + this.#addTarjetaDireccion( - $(containerId), - arrayName, - divId, - id, - 1, false, true, num_ferroPrototipo); + $(containerId), + num_ferroPrototipo === 1 ? this.direccionesFP1 : this.direccionesFP2, + divId, + id, + 1, false, true, num_ferroPrototipo); $('.div-direcciones-fp' + num_ferroPrototipo).addClass('d-none'); + $('#loader').modal('hide'); } catch (e) { console.error(e); @@ -432,6 +463,7 @@ class Direcciones { container.append(tarjeta.card); addArray.push(tarjeta); container.trigger('change'); + $('#loader').modal('hide'); } catch (err) { console.error('Error en petición Ajax:', err); @@ -500,6 +532,17 @@ class Direcciones { tarjeta.remove(); this.divDirecciones.trigger('change'); + + if (this.direcciones.length === 0) { + if (this.sameAddPrincipalFP1.is(':checked')) { + this.sameAddPrincipalFP1.prop('checked', false); + this.sameAddPrincipalFP1.trigger('change'); + } + if (this.sameAddPrincipalFP2.is(':checked')) { + this.sameAddPrincipalFP2.prop('checked', false); + this.sameAddPrincipalFP2.trigger('change'); + } + } } #deleteDireccionFP(event, num_ferroPrototipo = 1) { @@ -512,12 +555,18 @@ class Direcciones { this.direccionesFP1 = []; this.sameAddPrincipalFP1.prop('checked', false); $('#divDireccionesFerroPrototipo1').trigger('change'); + if (this.sameAddFP1.is(':checked')) { + this.sameAddFP1.prop('checked', false); + this.sameAddFP1.trigger('change'); + } + $('.div-direcciones-fp1').removeClass('d-none'); } if (num_ferroPrototipo === 2) { this.direccionesFP2 = []; this.sameAddPrincipalFP2.prop('checked', false); this.sameAddFP1.prop('checked', false); $('#divDireccionesFerroPrototipo2').trigger('change'); + $('.div-direcciones-fp2').removeClass('d-none'); } tarjeta.remove(); @@ -542,7 +591,10 @@ class Direcciones { $('#divDireccionesFerroPrototipo').removeClass('d-none'); } else { - // mostrar alerta de que no hay direcciones + popErrorAlert(window.translations["validation"].error_sameAddPrincipal_FP, + 'sk-alert-ferro-prototipo1', true); + this.sameAddPrincipalFP1.prop('checked', false); + $('#divDireccionesFerroPrototipo').empty(); } } @@ -556,13 +608,13 @@ class Direcciones { #handleSameAddPrincipalFP2() { if (this.sameAddPrincipalFP2.is(':checked')) { - if(this.sameAddFP1.is(':checked')) { + if (this.sameAddFP1.is(':checked')) { this.sameAddFP1.prop('checked', false); } $('.div-direcciones-fp2').addClass('d-none'); $('#divDireccionesFerroPrototipo2').empty(); if (this.direcciones.length > 0) { - + let data = this.direcciones[0].getDireccion(); this.direccionesFP2 = []; this.#addTarjetaDireccion( @@ -574,7 +626,10 @@ class Direcciones { $('#divDireccionesFerroPrototipo2').removeClass('d-none'); } else { - // mostrar alerta de que no hay direcciones + popErrorAlert(window.translations["validation"].error_sameAddPrincipal_FP, + 'sk-alert-ferro-prototipo2', true); + this.sameAddPrincipalFP2.prop('checked', false); + $('#divDireccionesFerroPrototipo2').empty(); } } @@ -588,7 +643,7 @@ class Direcciones { #handleSameAddFP1() { if (this.sameAddFP1.is(':checked')) { - if(this.sameAddPrincipalFP2.is(':checked')) { + if (this.sameAddPrincipalFP2.is(':checked')) { this.sameAddPrincipalFP2.prop('checked', false); } $('.div-direcciones-fp2').addClass('d-none'); @@ -597,7 +652,7 @@ class Direcciones { let data = this.direccionesFP1[0].getDireccion(); - this.direccionesFP1 = []; + this.direccionesFP2 = []; this.#addTarjetaDireccion( $("#divDireccionesFerroPrototipo2"), this.direccionesFP2, @@ -608,7 +663,10 @@ class Direcciones { $('#divDireccionesFerroPrototipo2').removeClass('d-none'); } else { - // mostrar alerta de que no hay direcciones + popErrorAlert(window.translations["validation"].error_sameAddFP1, + 'sk-alert-ferro-prototipo2', true); + this.sameAddPrincipalFP2.prop('checked', false); + $('#divDireccionesFerroPrototipo2').empty(); } } diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js index 46768cdc..fea4333e 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js @@ -675,6 +675,12 @@ class PresupuestoCliente { if (datos_to_check.direcciones) { delete datos_to_check.direcciones; } + if (datos_to_check.direccionesFP1) { + delete datos_to_check.direccionesFP1; + } + if (datos_to_check.direccionesFP2) { + delete datos_to_check.direccionesFP2; + } if (datos_to_check.posPaginasColor == "" || datos_to_check.posPaginasColor == null) { delete datos_to_check.posPaginasColor; } @@ -795,15 +801,12 @@ class PresupuestoCliente { } if( this.direcciones.direccionesFP1.length > 0) { - this.datos.direccionesFP1 = this.direcciones.direccionesFP1.map((direccion) => { - return direccion.getFormData(); - }); + + this.datos.direccionesFP1 = this.direcciones.direccionesFP1[0].getFormData(); } if( this.direcciones.direccionesFP2.length > 0) { - this.datos.direccionesFP2 = this.direcciones.direccionesFP2.map((direccion) => { - return direccion.getFormData(); - }); + this.datos.direccionesFP2 = this.direcciones.direccionesFP2[0].getFormData(); } if (save) { @@ -844,7 +847,10 @@ class PresupuestoCliente { self.datosGenerales.cargarDatos(response.data.datosGenerales); self.direcciones.handleChangeCliente(); - self.direcciones.cargarDatos(response.data.direcciones, response.data.datosGenerales); + self.direcciones.cargarDatos(response.data.direcciones, response.data.datosGenerales, + response.data.direccionesFerroPrototipo && response.data.direccionesFerroPrototipo.length > 0 ? + response.data.direccionesFerroPrototipo : [] + ); try { self.disenioInterior.cargarDatos(response.data.interior, response.data.datosGenerales.papelInteriorDiferente); From bdc0252c72d19c906b38bfc1c441285c7ee6886e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Sat, 28 Jun 2025 20:09:37 +0200 Subject: [PATCH 02/11] carga de checks de misma direccion FP implementados en presupuesto cliente --- .../Presupuestos/Presupuestocliente.php | 5 ++++ ...194500_ConfigDireccionesFerroPrototipo.php | 24 +++++++++++++++++++ .../Presupuestos/PresupuestoEntity.php | 18 ++++++++++++++ .../Models/Presupuestos/PresupuestoModel.php | 3 +++ .../pages/presupuestoCliente/direcciones.js | 22 +++++++++++++++-- .../presupuestoCliente/presupuestoCliente.js | 8 ++++--- 6 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 ci4/app/Database/Migrations/2025-06-28-194500_ConfigDireccionesFerroPrototipo.php diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index 7949c4f0..55970f1d 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -1381,6 +1381,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $datos_presupuesto['faja'] = $faja; + $reqData['datosCabecera'] ?? []; + $datos_presupuesto['direcciones_fp_checks'] = $reqData['direcciones_fp_checks'] ?? null; + $id = $model_presupuesto->insertarPresupuestoCliente( $id, $selected_tirada, @@ -1713,6 +1716,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $data['direccionesFerroPrototipo'] = $direccionesFerroPrototipo; } + $data['direccionesFPChecks'] = $presupuesto->getDireccionFPChecks(); + if (intval($presupuesto->estado_id) == 2) { $data['resumen']['base'] = $presupuesto->total_antes_descuento; $data['resumen']['total_envio'] = round( diff --git a/ci4/app/Database/Migrations/2025-06-28-194500_ConfigDireccionesFerroPrototipo.php b/ci4/app/Database/Migrations/2025-06-28-194500_ConfigDireccionesFerroPrototipo.php new file mode 100644 index 00000000..e0727199 --- /dev/null +++ b/ci4/app/Database/Migrations/2025-06-28-194500_ConfigDireccionesFerroPrototipo.php @@ -0,0 +1,24 @@ +forge->addColumn('presupuestos', [ + 'direcciones_fp_checks' => [ + 'type' => 'JSON', + 'null' => false, + 'default' => '{"addFP1isAddMain": "0", "addFP2isAddMain": "0", "addFP2isaddFP1": "0"}', + 'comment' => 'valores de los checks de las direcciones ferro/prototipo', + ], + ]); + } + + public function down() + { + $this->forge->dropColumn('presupuestos', 'direcciones_fp_checks'); + } +} diff --git a/ci4/app/Entities/Presupuestos/PresupuestoEntity.php b/ci4/app/Entities/Presupuestos/PresupuestoEntity.php index c7d0edc3..e0f5f9cc 100755 --- a/ci4/app/Entities/Presupuestos/PresupuestoEntity.php +++ b/ci4/app/Entities/Presupuestos/PresupuestoEntity.php @@ -116,6 +116,12 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity 'lomo_redondo' => null, 'cabezada' => null, 'envio_base' => null, + 'direcciones_fp_checks' => [ + 'addFP1isAddMain' => "0", + 'addFP2isAddMain' => "0", + 'addFP2isaddFP1' => "0" + ], + ]; protected $casts = [ "cliente_id" => "int", @@ -188,6 +194,7 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity 'papel_interior_diferente' => "boolean", 'paginasCuadernillo' => "int", 'lomo_redondo' => "boolean", + 'direcciones_fp_checks' => 'json', ]; /** * Devuelve la entity con un campo `presupuesto_lineas` con las lineas de presupuesto asociadas @@ -324,4 +331,15 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity } return $tipo_presupuesto; } + + public function getDireccionFPChecks() + { + return $this->attributes['direcciones_fp_checks'] ?? []; + } + + public function setDireccionFPChecks($value) + { + $this->attributes['direcciones_fp_checks'] = is_array($value) ? json_encode($value) : $value; + return $this; + } } diff --git a/ci4/app/Models/Presupuestos/PresupuestoModel.php b/ci4/app/Models/Presupuestos/PresupuestoModel.php index d4689b02..6b5e9d42 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoModel.php @@ -138,6 +138,7 @@ class PresupuestoModel extends \App\Models\BaseModel 'lomo_redondo', 'cabezada', 'envio_base', + 'direcciones_fp_checks', ]; protected $returnType = "App\Entities\Presupuestos\PresupuestoEntity"; @@ -525,6 +526,8 @@ class PresupuestoModel extends \App\Models\BaseModel 'iva_reducido' => $iva_reducido, 'excluir_rotativa' => $excluir_rotativa, + 'direcciones_fp_checks' => $data['direcciones_fp_checks'] ? json_encode($data['direcciones_fp_checks']) : null, + ]; /* Actualizacion */ if ($id != 0) { diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js index 58415511..bcc21c6d 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js @@ -105,7 +105,7 @@ class Direcciones { - cargarDatos(datos, datosGenerales, direccionesFP = []) { + cargarDatos(datos, datosGenerales, direccionesFP = [], direccionesFPChecks = {}) { self = this; @@ -130,7 +130,6 @@ class Direcciones { }); }, 0); - $('#tiradaEnvios-' + datosGenerales.selectedTirada).trigger('click'); if (datos.entrega_taller == 1) { @@ -198,6 +197,17 @@ class Direcciones { }); } + + if(direccionesFPChecks.addFP1isAddMain && direccionesFPChecks.addFP1isAddMain === "true") { + this.sameAddPrincipalFP1.prop('checked', true); + } + + if (direccionesFPChecks.addFP2isFP1 && direccionesFPChecks.addFP2isFP1 === "true") { + this.sameAddFP1.prop('checked', true); + } + else if( direccionesFPChecks.addFP2isAddMain && direccionesFPChecks.addFP2isAddMain === "true") { + this.sameAddPrincipalFP2.prop('checked', true); + } } catch (e) { console.error(e); $('#loader').modal('hide'); @@ -684,6 +694,14 @@ class Direcciones { else return null; } + + getDireccionesFPChecks() { + return { + addFP1isAddMain: this.sameAddPrincipalFP1.is(':checked'), + addFP2isAddMain: this.sameAddPrincipalFP2.is(':checked'), + addFP2isFP1: this.sameAddFP1.is(':checked') + }; + } } diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js index fea4333e..c98fd81f 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js @@ -801,7 +801,6 @@ class PresupuestoCliente { } if( this.direcciones.direccionesFP1.length > 0) { - this.datos.direccionesFP1 = this.direcciones.direccionesFP1[0].getFormData(); } @@ -809,6 +808,8 @@ class PresupuestoCliente { this.datos.direccionesFP2 = this.direcciones.direccionesFP2[0].getFormData(); } + this.datos.direcciones_fp_checks = this.direcciones.getDireccionesFPChecks(); + if (save) { this.datos.datosCabecera = { titulo: this.datosGenerales.titulo.val(), @@ -848,8 +849,9 @@ class PresupuestoCliente { self.direcciones.handleChangeCliente(); self.direcciones.cargarDatos(response.data.direcciones, response.data.datosGenerales, - response.data.direccionesFerroPrototipo && response.data.direccionesFerroPrototipo.length > 0 ? - response.data.direccionesFerroPrototipo : [] + (response.data.direccionesFerroPrototipo && response.data.direccionesFerroPrototipo.length > 0) ? + response.data.direccionesFerroPrototipo : [] , + response.data.direccionesFPChecks ? JSON.parse(response.data.direccionesFPChecks) : {} ); try { From bdb1d1aaec82425f1a392c2afaee4a46563d3314 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Sat, 28 Jun 2025 20:17:15 +0200 Subject: [PATCH 03/11] modificado fichero ajax para tener getpromise --- httpdocs/assets/js/safekat/components/ajax.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/httpdocs/assets/js/safekat/components/ajax.js b/httpdocs/assets/js/safekat/components/ajax.js index 8a92c701..98313bbc 100644 --- a/httpdocs/assets/js/safekat/components/ajax.js +++ b/httpdocs/assets/js/safekat/components/ajax.js @@ -59,6 +59,7 @@ class Ajax { error: this.error }) } + getPromise() { if (this.jqXHR) { this.jqXHR.abort(); @@ -71,7 +72,7 @@ class Ajax { data: this.data, headers: this.headers, success: (response) => { - if (this.success) this.success(response); + if (this.success) this.success(response); resolve(response); }, error: (xhr) => { From 5c34316bc25c7b12ef880aee8d396c0af4eaaa6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Mon, 30 Jun 2025 10:03:16 +0200 Subject: [PATCH 04/11] =?UTF-8?q?se=20muestra=20un=20alert=20cuando=20se?= =?UTF-8?q?=20quiere=20a=C3=B1adir=20una=20direccion=20de=20la=20principal?= =?UTF-8?q?=20al=20ferro=20que=20no=20est=C3=A1=20en=20el=20de=20cliente.?= =?UTF-8?q?=20Arrteglado=20problema=20con=20los=20checks=20al=20guardar=20?= =?UTF-8?q?presupuesto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Presupuestos/Presupuestocliente.php | 6 +++- .../Presupuestos/PresupuestoEntity.php | 6 ++-- ci4/app/Language/es/Presupuestos.php | 1 + .../pages/presupuestoCliente/direcciones.js | 33 ++++++++++++++++--- 4 files changed, 38 insertions(+), 8 deletions(-) diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index 55970f1d..6423077c 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -1382,7 +1382,11 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $datos_presupuesto['faja'] = $faja; $reqData['datosCabecera'] ?? []; - $datos_presupuesto['direcciones_fp_checks'] = $reqData['direcciones_fp_checks'] ?? null; + $datos_presupuesto['direcciones_fp_checks'] = $reqData['direcciones_fp_checks'] ?? (object)[ + 'addFP1isAddMain' => "false", + 'addFP2isAddMain' => "false", + 'addFP2isaddFP1' => "false" + ]; $id = $model_presupuesto->insertarPresupuestoCliente( $id, diff --git a/ci4/app/Entities/Presupuestos/PresupuestoEntity.php b/ci4/app/Entities/Presupuestos/PresupuestoEntity.php index f69f032f..00fd262e 100755 --- a/ci4/app/Entities/Presupuestos/PresupuestoEntity.php +++ b/ci4/app/Entities/Presupuestos/PresupuestoEntity.php @@ -118,9 +118,9 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity 'cabezada' => null, 'envio_base' => null, 'direcciones_fp_checks' => [ - 'addFP1isAddMain' => "0", - 'addFP2isAddMain' => "0", - 'addFP2isaddFP1' => "0" + 'addFP1isAddMain' => "false", + 'addFP2isAddMain' => "false", + 'addFP2isaddFP1' => "false" ], ]; diff --git a/ci4/app/Language/es/Presupuestos.php b/ci4/app/Language/es/Presupuestos.php index 86757a06..5b6a92d2 100755 --- a/ci4/app/Language/es/Presupuestos.php +++ b/ci4/app/Language/es/Presupuestos.php @@ -465,6 +465,7 @@ return [ Por favor, disminuya el número de páginas o el gramaje del papel para que sea encuadernable.", 'error_lomo_minimo' => "No se pueden encuadernar libros {0} con un lomo interior inferior a {1} mm. El lomo actual es de {2} mm.
Por favor, aumente el número de páginas o el gramaje del papel para que sea encuadernable.", + 'error_direccion_principal_no_encontrada' => 'No se ha encontrado la dirección en las direcciones del cliente. Por favor, añádala antes de marcar esta opción.', ], 'resize_preview' => 'Refrescar vista esquema' diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js index bcc21c6d..6fb5da6a 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js @@ -198,14 +198,14 @@ class Direcciones { }); } - if(direccionesFPChecks.addFP1isAddMain && direccionesFPChecks.addFP1isAddMain === "true") { + if (direccionesFPChecks.addFP1isAddMain && direccionesFPChecks.addFP1isAddMain === "true") { this.sameAddPrincipalFP1.prop('checked', true); } - + if (direccionesFPChecks.addFP2isFP1 && direccionesFPChecks.addFP2isFP1 === "true") { this.sameAddFP1.prop('checked', true); } - else if( direccionesFPChecks.addFP2isAddMain && direccionesFPChecks.addFP2isAddMain === "true") { + else if (direccionesFPChecks.addFP2isAddMain && direccionesFPChecks.addFP2isAddMain === "true") { this.sameAddPrincipalFP2.prop('checked', true); } } catch (e) { @@ -444,6 +444,31 @@ class Direcciones { $('#loader').modal('show'); + if (id == null || id <= 0 || id == undefined || id === 'undefined' || id === '') { + $('#loader').modal('hide'); + Swal.fire({ + title: 'Error', + text: window.translations["errores"].error_direccion_principal_no_encontrada, + icon: 'error', + showCancelButton: false, + confirmButtonColor: '#3085d6', + confirmButtonText: 'Ok', + customClass: { + confirmButton: 'btn btn-primary me-1', + }, + buttonsStyling: false + }); + if(numFerroPrototipo === 1) { + this.sameAddPrincipalFP1.prop('checked', false); + this.sameAddPrincipalFP1.trigger('change'); + } + if(numFerroPrototipo === 2) { + this.sameAddPrincipalFP2.prop('checked', false); + this.sameAddPrincipalFP2.trigger('change'); + } + return; + } + const ajaxGetDireccion = new Ajax('/misdirecciones/get/' + id, {}, {}, null, null); const response = await ajaxGetDireccion.getPromise(); @@ -675,7 +700,7 @@ class Direcciones { else { popErrorAlert(window.translations["validation"].error_sameAddFP1, 'sk-alert-ferro-prototipo2', true); - this.sameAddPrincipalFP2.prop('checked', false); + this.sameAddFP1.prop('checked', false); $('#divDireccionesFerroPrototipo2').empty(); } From ee9e3eb143397a35b0ea4dc0d7a3c5706cda476e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Mon, 30 Jun 2025 11:45:44 +0200 Subject: [PATCH 05/11] trabajando en presupuesto admin --- .../form/presupuestos/admin/_datosEnvios.php | 1 - .../admin/_presupuestoDireccionesForm.php | 8 --- .../admin/viewPresupuestoadminForm.php | 1 + .../presupuestoAdmin/presupuestoAdminEdit.js | 4 +- .../presupuestoAdmin/sections/datosLibro.js | 5 ++ .../pages/presupuestoAdmin/sections/envios.js | 56 ++----------------- 6 files changed, 15 insertions(+), 60 deletions(-) diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.php index 891f10aa..63246a7a 100755 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.php @@ -39,7 +39,6 @@ Pallets? - Ferro o Prototipo? diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_presupuestoDireccionesForm.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_presupuestoDireccionesForm.php index c87a07a5..14d190a1 100755 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_presupuestoDireccionesForm.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_presupuestoDireccionesForm.php @@ -9,14 +9,6 @@
-
- - - -
-