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);