Merge branch 'mod/presupuesto_cliente' into 'main'

Mod/presupuesto cliente

See merge request jjimenez/safekat!867
This commit is contained in:
2025-06-28 09:59:48 +00:00
21 changed files with 1170 additions and 446 deletions

View File

@ -319,6 +319,7 @@ $routes->group('clienteusuarios', ['namespace' => 'App\Controllers\Clientes'], f
$routes->group('misdirecciones', ['namespace' => 'App\Controllers\Clientes'], function ($routes) {
$routes->get('', 'Clientedirecciones::index', ['as' => 'clientedireccionesIndex']);
$routes->get('get/(:num)', 'Clientedirecciones::get/$1', ['as' => 'get']);
$routes->get('getId', 'Clientedirecciones::getDireccionIdFromData');
$routes->get('getDireccionPresupuesto/(:num)', 'Clientedirecciones::getDireccionPresupuesto/$1', ['as' => 'getDireccionPresupuesto']);
$routes->post('add', 'Clientedirecciones::add', ['as' => 'newClientedirecciones']);
$routes->get('getSelect2', 'Clientedirecciones::getSelect2', ['as' => 'listaClientedirecciones']);

View File

@ -215,13 +215,13 @@ class Clientedirecciones extends \App\Controllers\BaseResourceController
{
try {
$resourceData = $this->model->getDireccion($id);
$response = (object)[
$response = (object) [
'error' => false,
'data' => $resourceData
];
return $this->respond($response);
} catch (\Exception $e) {
$response = (object)[
$response = (object) [
'error' => true,
'message' => $e->getMessage()
];
@ -229,22 +229,61 @@ class Clientedirecciones extends \App\Controllers\BaseResourceController
}
}
public function getDireccionIdFromData()
{
$data = $this->request->getGet('data') ?? [];
$cliente_id = $this->request->getGet('cliente_id') ?? -1;
$att = $data['att'] ?? "";
$direccion = $data['direccion'] ?? "";
$cp = $data['cp'] ?? "";
$municipio = $data['municipio'] ?? "";
$provincia = $data['provincia'] ?? "";
$pais_id = $data['pais_id'] ?? -1;
$email = $data['email'] ?? "";
$telefono = $data['telefono'] ?? "";
try {
$model = model('App\Models\Clientes\ClienteDireccionesModel');
$id = $model->select('id')
->where('att', $att)
->where('direccion', $direccion)
->where('cp', $cp)
->where('municipio', $municipio)
->where('provincia', $provincia)
->where('pais_id', $pais_id)
->where('email', $email)
->where('telefono', $telefono)
->where('cliente_id', $cliente_id)
->get()
->getResultObject();
if (count($id) > 0) {
$id = $id[0]->id;
} else {
$id = null;
}
return $id;
} catch (\Exception $e) {
throw new \RuntimeException($e->getMessage());
}
}
public function getDireccionPresupuesto($id)
{
try {
$model = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
$resourceData = $model->getDireccion($id);
if(count($resourceData) > 0){
if (count($resourceData) > 0) {
$resourceData[0]->direccionId = $id;
}
$response = (object)[
$response = (object) [
'error' => false,
'data' => $resourceData
];
return $this->respond($response);
} catch (\Exception $e) {
$response = (object)[
$response = (object) [
'error' => true,
'message' => $e->getMessage()
];
@ -400,11 +439,11 @@ class Clientedirecciones extends \App\Controllers\BaseResourceController
protected function getComunidadAutonomaListItems($selId = null)
{
$data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('ComunidadesAutonomas.comunidadAutonoma'))])];
if (!is_null($selId)) :
if (!is_null($selId)):
$comunidadAutonomaModel = model('App\Models\Configuracion\ComunidadAutonomaModel');
$selOption = $comunidadAutonomaModel->where('id', $selId)->findColumn('nombre');
if (!empty($selOption)) :
if (!empty($selOption)):
$data[$selId] = $selOption[0];
endif;
endif;
@ -414,11 +453,11 @@ class Clientedirecciones extends \App\Controllers\BaseResourceController
protected function getProvinciaListItems($selId = null)
{
$data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Provincias.provincia'))])];
if (!empty($selId)) :
if (!empty($selId)):
$provinciaModel = model('App\Models\Configuracion\ProvinciaModel');
$selOption = $provinciaModel->where('id', $selId)->findColumn('nombre');
if (!empty($selOption)) :
if (!empty($selOption)):
$data[$selId] = $selOption[0];
endif;
endif;

View File

@ -1065,6 +1065,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$direcciones = $reqData['direcciones'] ?? [];
$direccionesFP1 = $reqData['direccionesFP1'] ?? [];
$direccionesFP2 = $reqData['direccionesFP2'] ?? [];
if ($tipo != "")
$tipo_impresion_id = $this->getTipoImpresion($tipo, $cubierta['tipoCubierta']);
else
@ -1557,6 +1560,14 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
}
if (count($direccionesFP1) > 0) {
$this->guardarLineaEnvio($id, $direccionesFP1, $peso_libro, true);
}
if (count($direccionesFP2) > 0) {
$this->guardarLineaEnvio($id, $direccionesFP2, $peso_libro, true);
}
if ($confirmar) {
$model_presupuesto->confirmarPresupuesto($id);
PresupuestoService::crearPedido($id);
@ -1585,7 +1596,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$modelPapelFormato = new PapelFormatoModel();
$modelCliente = new ClienteModel();
$presupuesto = $this->model->find($id);
$data = [];
if ($presupuesto) {
@ -1695,7 +1705,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
if (intval($presupuesto->recoger_en_taller) == 1) {
$data['direcciones']['entrega_taller'] = 1;
} else {
$data['direcciones'] = $this->obtenerDireccionesEnvio($id, $presupuesto->cliente_id);
$data['direcciones'] = $this->obtenerDireccionesEnvio($id);
}
if (intval($presupuesto->estado_id) == 2) {
@ -1861,12 +1871,13 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
protected function guardarLineaEnvio($presupuestoId, $direccion, $peso_libro)
protected function guardarLineaEnvio($presupuestoId, $direccion, $peso_libro, $coste_cero = false)
{
$unidades = intval($direccion['unidades']);
$peso_envio = $peso_libro * $unidades / 1000.0;
$data = $this->getCosteEnvio(
$direccion['direccion'],
$peso_libro,
@ -1880,7 +1891,11 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$data->presupuesto_id = $presupuestoId;
$data->tarifa_id = $data->id;
unset($data->id);
$data->precio = $data->coste;
if($coste_cero) {
$data->coste = 0;
} else {
$data->precio = $data->coste;
}
unset($data->coste);
$data->entregaPieCalle = ($direccion['entregaPalets'] == 'false' || $direccion['entregaPalets'] == 0) ? 0 : 1;
unset($data->tipo);
@ -3398,39 +3413,22 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
}
protected function obtenerDireccionesEnvio($id, $cliente_id)
protected function obtenerDireccionesEnvio($id)
{
$model = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
$model_direcciones = model('App\Models\Clientes\ClienteDireccionesModel');
$direcciones = $model->where('presupuesto_id', $id)->asArray()->findAll();
$direcciones = $model->where('presupuesto_id', $id)
->where('is_ferro_prototipo', 0)->asArray()->findAll();
return $direcciones;
}
$result = [];
$temp = [];
for ($i = 0; $i < count($direcciones); $i++) {
$direccion_id = $model_direcciones->getIdForPresupuestoCliente(
$cliente_id,
$direcciones[$i]->att,
$direcciones[$i]->email,
$direcciones[$i]->direccion,
$direcciones[$i]->cp,
$direcciones[$i]->pais_id,
$direcciones[$i]->telefono
);
if (count($direccion_id) > 0) {
$temp = $direcciones[$i]->toArray();
array_push($result, [
'id' => $temp['id'],
'unidades' => $temp['cantidad'],
'palets' => $temp['entregaPieCalle'],
]);
}
}
if (count($result) > 0)
return $result;
else
return [];
protected function obtenerDireccionesEnvioFerro($id)
{
$model = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
$direcciones = $model->where('presupuesto_id', $id)
->where('is_ferro_prototipo', 0)->asArray()->findAll();
return $direcciones;
}
protected function obtenerDatosPapel($presupuesto_id)
@ -3643,10 +3641,18 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
foreach ($data as $servicio) {
$id = "service_extra_" . $servicio->id;
$tarifa_excluyente = false;
if (str_contains(strtolower($servicio->nombre), 'ferro') || str_contains(strtolower($servicio->nombre), 'prototipo')) {
$tarifa_excluyente = true;
}
$atributo_excluyente = $tarifa_excluyente ? 'data-tarifa-extra-excluyente="1"' : '';
array_push(
$servicios,
"<input class=\"calcular-presupuesto form-check-input\" type=\"checkbox\" id=\"{$id}\"
name=\"{$id}\" value=\"1\" data-tarifa-id=\"{$servicio->id}\" data-tarifa-tipo=\"extra\" data-tarifa-nombre=\"{$servicio->nombre}\">
name=\"{$id}\" value=\"1\" data-tarifa-id=\"{$servicio->id}\" data-tarifa-tipo=\"extra\" data-tarifa-nombre=\"{$servicio->nombre}\"
{$atributo_excluyente}>
<label class=\"form-check-label\" for=\"{$id}\">{$servicio->nombre}</label>"
);
}

View File

@ -0,0 +1,30 @@
<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class DireccionesFerroPrototipo extends Migration
{
public function up()
{
// Insertar nuevo campo: lomo_maximo_espiral
$this->forge->addColumn('presupuesto_direcciones', [
'num_ferro_prototipo' => [
'type' => 'INT',
'constraint' => 3,
'null' => false,
'default' => '0',
'description' => 'numero de ferro/prototipo',
],
]);
}
public function down()
{
$this->db->table('presupuesto_direcciones')->whereIn('name', [
'num_ferro_prototipo',
'lomo_maximo_wireo'
])->delete();
}
}

View File

@ -26,6 +26,7 @@ class PresupuestoDireccionesEntity extends \CodeIgniter\Entity\Entity
"margen" => null,
"entregaPieCalle" => null,
"is_ferro_prototipo" => null,
"num_ferro_prototipo" => null,
];
protected $casts = [
"presupuesto_id" => "int",
@ -40,6 +41,7 @@ class PresupuestoDireccionesEntity extends \CodeIgniter\Entity\Entity
"proveedor_id" => "int",
"entregaPieCalle" => "int",
"is_ferro_prototipo" => "int",
"num_ferro_prototipo" => "int",
];
}

View File

@ -42,8 +42,8 @@ return [
'papelFormatoAncho' => 'Width',
'papelFormatoAlto' => 'Height',
'cosido' => 'Sewn',
'ferro' => 'Ferro',
'ferroDigital' => 'Digital Ferro',
'ferro' => 'Blueline proof',
'ferroDigital' => 'Digital Blueline proof',
'prototipo' => 'Prototype',
'imagenesBnInterior' => 'B/W pictures inside',
'recogerEnTaller' => 'Pick up in workshop',

View File

@ -396,8 +396,7 @@ return [
'paginasColor' => 'El número de páginas a color debe ser un número entero mayor o igual que 0.',
'paginasNegro' => 'El número de páginas en negro debe ser un número entero mayor o igual que 0.',
'paginas' => 'El total de páginas tiene que ser mayor que 0.',
'paginas_pares' => 'El número de páginas debe ser par.',
'tipo_libro' => 'Seleccione el tipo de libro que desea para el presupuesto.',
'tipo_libro' => 'Seleccione el tipo de encuadernación que desea para el presupuesto.',
'decimal' => 'El campo {field} debe contener un número decimal.',
'integer' => 'El campo {field} debe contener un número entero.',
'requerido' => 'El campo {field} es obligatorio.',

View File

@ -21,6 +21,8 @@ return [
'costePrecio' => 'Coste/Precio',
'saveDirection' => 'Guardar en direcciones de cliente',
'entregaPieCalle' => 'Entrega a pie de calle (enviado en palets)',
'sameAddPrincipal' => 'Usar la dirección principal del presupuesto',
'sameAddFP1' => 'Usar la dirección del ferro/prototipo 1',
'validation' => [
'ejemplares_envio' => 'El número de ejemplares enviados no coincide con la tirada',
'max_length' => 'Max. valor caracteres alcanzado',

View File

@ -45,7 +45,8 @@ class PresupuestoDireccionesModel extends \App\Models\BaseModel
"proveedor_id",
"proveedor",
"entregaPieCalle",
"is_ferro_prototipo"
"is_ferro_prototipo",
"num_ferro_prototipo"
];
protected $returnType = "App\Entities\Presupuestos\PresupuestoDireccionesEntity";

View File

@ -283,12 +283,12 @@
<div class="col-sm-3 form-check form-switch mb-2 d-flex align-items-center gap-2">
<input class="calcular-presupuesto form-check-input" type="checkbox" id="retractilado"
name="retractilado" value="1">
<label class="form-check-label" for="ferro">Retractilado</label>
<label class="form-check-label" for="retractilado">Retractilado</label>
</div>
<div class="col-sm-3 form-check form-switch mb-2 d-flex align-items-center gap-2">
<input class="calcular-presupuesto form-check-input" type="checkbox" id="retractilado5"
name="retractilado5" value="1">
<label class="form-check-label" for="ferro">Retractilado de 5</label>
<label class="form-check-label" for="retractilado5">Retractilado de 5</label>
</div>
<?php foreach ($serviciosExtra as $servicio): ?>
@ -300,7 +300,7 @@
<div class="col-sm-3 form-check form-switch mb-2 d-flex align-items-center gap-2">
<input class="calcular-presupuesto form-check-input" type="checkbox" id="marcapaginas"
name="marcapaginas" value="1">
<label class="form-check-label" for="ferro">Marcapáginas</label>
<label class="form-check-label" for="marcapaginas">Marcapáginas</label>
</div>
</div>

View File

@ -62,7 +62,91 @@
</div>
</div>
<div id="divDirecciones" class="calcular-presupuesto col-sm-12 d-flex flex-column align-items-center div-direcciones">
<div id="divDirecciones"
class="calcular-presupuesto col-sm-12 d-flex flex-column align-items-center div-direcciones">
</div>
</div>
<div id="direccionesFerroPrototipo" class="row col-sm-12 mb-5 justify-content-center d-none">
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<h3 class="mb-1 fw-bold"> Dirección de envío ferro/prototipo</h3>
</div><!--//.mb-3 -->
<div class="row mb-3 justify-content-center div-direcciones-fp1">
<!-- Select: Mis direcciones -->
<div class="col-sm-4 mb-3">
<label for="direccionesFP1" class="form-label">Mis direcciones</label>
<select id="direccionesFP1" name="direcciones" class="form-control select2bs2"
style="width: 100%;"></select>
</div>
<div class="col-sm-2 mb-3 mt-auto mb-0">
<button id="insertarDireccionFP1" type="button"
class="btn btn-secondary waves-effect waves-light">Insertar</button>
</div>
</div>
<div class="row mb-3 justify-content-center">
<div class="col-sm-6 mb-3">
<div class="form-check form-switch mb-2">
<input class="form-check-input" type="checkbox" id="sameAddPrincipalFP1" name="sameAddPrincipalFP1"
value="1">
<label class="form-check-label"
for="sameAddPrincipalFP1"><?= lang('PresupuestosDirecciones.sameAddPrincipal') ?></label>
</div>
</div>
</div>
<div id="divDireccionesFerroPrototipo"
class="calcular-presupuesto col-sm-12 d-flex flex-column align-items-center div-direcciones-ferro-prototipo">
</div>
</div>
<div id="direccionesFerroPrototipo2" class="row col-sm-12 mb-5 justify-content-center d-none">
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<h3 class="mb-1 fw-bold"> Dirección de envío ferro/prototipo 2</h3>
</div><!--//.mb-3 -->
<div class="row mb-3 justify-content-center div-direcciones-fp2">
<div class="col-sm-4 mb-3">
<label for="direcciones" class="form-label">Mis direcciones</label>
<select id="direccionesFP2" name="direccionesFP2" class="form-control select2bs2"
style="width: 100%;"></select>
</div>
<div class="col-sm-2 mb-3 mt-auto mb-0">
<button id="insertarDireccionFP2" type="button"
class="btn btn-secondary waves-effect waves-light">Insertar</button>
</div>
</div>
<div class="row mb-3 justify-content-center">
<div class="col-sm-6">
<div class="form-check form-switch mb-2">
<input class="form-check-input" type="checkbox" id="sameAddPrincipalFP2" name="sameAddPrincipalFP2"
value="1">
<label class="form-check-label"
for="sameAddPrincipalFP2"><?= lang('PresupuestosDirecciones.sameAddPrincipal') ?></label>
</div>
</div>
</div>
<div class="row mb-3 justify-content-center">
<div class="col-sm-6 mb-3">
<div class="form-check form-switch mb-2">
<input class="form-check-input" type="checkbox" id="sameAddFP1" name="sameAddFP1" value="1">
<label class="form-check-label"
for="sameAddFP1"><?= lang('PresupuestosDirecciones.sameAddFP1') ?></label>
</div>
</div>
</div>
<div id="divDireccionesFerroPrototipo2"
class="calcular-presupuesto col-sm-12 d-flex flex-column align-items-center div-direcciones-ferro-prototipo">
</div>
</div>

View File

@ -200,7 +200,7 @@
<div class="row col-sm-2 mb-3 d-flex flex-column align-items-center sobrecubierta-items">
<div class="form-check form-switch mb-2">
<input class="calcular-presupuesto form-check-input" type="checkbox" id="addSobrecubierta"
<input class="form-check-input" type="checkbox" id="addSobrecubierta"
name="add_sobrecubierta" value="1">
<label class="form-check-label" for="addSobrecubierta"><?= lang('Presupuestos.sobrecubierta') ?></label>
</div>
@ -211,7 +211,7 @@
<label for="papelSobrecubierta" class="form-label">
<?= lang('Presupuestos.papelSobrecubierta') ?>
</label>
<select class="form-select select2bs2 calcular-presupuesto" id="papelSobrecubierta" name="papel_sobrecubierta">
<select class="form-select select2bs2" id="papelSobrecubierta" name="papel_sobrecubierta">
</select>
</div>
<div class="">
@ -251,7 +251,7 @@
<div class="col-sm-2 mb-3 d-flex flex-column align-items-center">
<div class="form-check form-switch mb-2">
<input class="calcular-presupuesto form-check-input" type="checkbox" id="addFaja" name="add_faja"
<input class="form-check-input" type="checkbox" id="addFaja" name="add_faja"
value="1">
<label class="form-check-label" for="addFaja"><?= lang('Presupuestos.faja') ?></label>
</div>
@ -262,7 +262,7 @@
<label for="papelFaja" class="form-label">
<?= lang('Presupuestos.papelFaja') ?>
</label>
<select class="form-select select2bs2 calcular-presupuesto" id="papelFaja" name="papel_faja">
<select class="form-select select2bs2" id="papelFaja" name="papel_faja">
</select>
</div>
<div class="">

View File

@ -1,24 +1,24 @@
class Ajax{
constructor(url, data, headers, success, error, type='default'){
this.url = url;
this.data = data;
this.headers = headers;
this.success = success;
this.error = error;
this.type = type;
this.jqXHR = null;
}
post(){
(this.type == 'default') ? this.ajax('POST'): this.ajaxForm('POST');
class Ajax {
constructor(url, data, headers, success, error, type = 'default') {
this.url = url;
this.data = data;
this.headers = headers;
this.success = success;
this.error = error;
this.type = type;
this.jqXHR = null;
}
get(){
post() {
(this.type == 'default') ? this.ajax('POST') : this.ajaxForm('POST');
}
get() {
this.ajax('GET');
}
put(){
(this.type == 'default') ? this.ajax('PUT'): this.ajaxForm('PUT');
put() {
(this.type == 'default') ? this.ajax('PUT') : this.ajaxForm('PUT');
}
delete(){
(this.type == 'default') ? this.ajax('DELETE'): this.ajaxForm('DELETE');
delete() {
(this.type == 'default') ? this.ajax('DELETE') : this.ajaxForm('DELETE');
}
abort() {
if (this.jqXHR) {
@ -26,31 +26,31 @@ class Ajax{
this.jqXHR = null; // Limpiamos la referencia a la petición
}
}
setData(data){
setData(data) {
this.data = data;
}
ajax(method){
ajax(method) {
if (this.jqXHR) {
this.jqXHR.abort();
}
this.jqXHR = $.ajax({
url : this.url,
type : method,
url: this.url,
type: method,
data: this.data,
headers: this.headers,
success: this.success,
error: this.error
})
}
ajaxForm(method){
ajaxForm(method) {
if (this.jqXHR) {
this.jqXHR.abort();
}
this.jqXHR = $.ajax({
url : this.url,
type : method,
url: this.url,
type: method,
data: this.data,
processData: false,
contentType: false,
@ -59,6 +59,28 @@ class Ajax{
error: this.error
})
}
getPromise() {
if (this.jqXHR) {
this.jqXHR.abort();
}
return new Promise((resolve, reject) => {
this.jqXHR = $.ajax({
url: this.url,
type: 'GET',
data: this.data,
headers: this.headers,
success: (response) => {
if (this.success) this.success(response);
resolve(response);
},
error: (xhr) => {
if (this.error) this.error(xhr);
reject(xhr);
}
});
});
}
}
export default Ajax

View File

@ -17,9 +17,10 @@ class ConfigVariableDatatable
init(){
this.datatable = this.datatableItem.DataTable({
processing: true,
dom: 'Brtip',
dom: 'Blrtip',
serverSide: true,
lengthMenu: [ 25, 50, 100, 200 ],
pageLength: 50,
language: {
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
},

View File

@ -1,14 +1,17 @@
class tarjetaDireccion {
constructor(container, id, direccion) {
constructor(container, id, direccion, isFerroPrototipo = false, numFerro = 0) {
this.container = container;
this.id = id;
this.direccionId = direccion.id;
this.direccion = direccion;
this.isFerroPrototipo = isFerroPrototipo;
this.numFerro = numFerro || 0;
this.card = this.#generateHTML(id, direccion);
this.deleteBtn = this.card.find('.direccion-eliminar');
this.editBtn = this.card.find('.direccion-editar');
this.direccion = direccion;
}
@ -38,7 +41,13 @@ class tarjetaDireccion {
var $hr = $('<hr>', { class: 'my-2' });
var $eliminar = $('<a>', { class: 'ms-auto direccion-eliminar', href: 'javascript:void(0)', text: 'Eliminar' });
var $editar = $('<a>', { class: 'me-auto direccion-editar', href: 'javascript:void(0)', text: 'Editar' });
var $eliminarContainer = $('<span>', { class: 'd-flex w-100 position-relative' }).append($editar, $eliminar);
var $eliminarContainer = '';
if(!this.isFerroPrototipo) {
$eliminarContainer = $('<span>', { class: 'd-flex w-100 position-relative' }).append($editar, $eliminar);
}
else{
$eliminarContainer = $('<span>', { class: 'd-flex w-100 position-relative' }).append($eliminar);
}
// Construir la estructura del HTML
$header.append($name, $unidades);
@ -109,6 +118,13 @@ class tarjetaDireccion {
entregaPalets: this.getEntregaPalets()
};
}
getIsFerroPrototipo() {
return this.isFerroPrototipo;
}
getNumFerro() {
return this.numFerro;
}
}
export default tarjetaDireccion;

View File

@ -365,6 +365,7 @@ class Comparador {
popErrorAlert(window.language.Presupuestos.errores.error_sobrecubierta_sin_solapas, 'divAlarmasComparador')
}*/
$('#solapas_sobrecubierta').prop('checked', true);
$('#solapas_sobrecubierta').trigger('change');
$('#div_solapas_ancho_sobrecubierta').removeClass('d-none');
$('#solapas_ancho_sobrecubierta').val(60);
$('#compPapelSobrecubierta').prop('disabled', false);
@ -373,6 +374,8 @@ class Comparador {
else {
this.papelSobrecubierta.setVal(0);
this.gramajeSobrecubierta.setVal(0);
$('#solapas_sobrecubierta').prop('checked', false);
$('#solapas_sobrecubierta').trigger('change')
$('#compPapelSobrecubierta').prop('disabled', true);
$('#compGramajeSobrecubierta').prop('disabled', true);
@ -387,6 +390,7 @@ class Comparador {
popErrorAlert(window.language.Presupuestos.errores.error_faja_sin_solapas, 'divAlarmasComparador');
}
$('#faja').prop('checked', true);
$('#faja').trigger('change');
$('.faja-div').removeClass('d-none');
$('#compPapelFaja').prop('disabled', false);
$('#compGramajeFaja').prop('disabled', false);
@ -394,6 +398,8 @@ class Comparador {
else {
this.papelFaja.setVal(0);
this.gramajeFaja.setVal(0);
$('#faja').prop('checked', false);
$('#faja').trigger('change');
$('#compPapelFaja').prop('disabled', true);
$('#compGramajeFaja').prop('disabled', true);
}

View File

@ -103,9 +103,44 @@ class DatosGenerales {
this.pagColorConsecutivas.on('change', this.#handPaginasConsecutivas.bind(this));
this.papelDiferente.on('change', this.#handlePapelDiferente.bind(this));
// 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);
if ((current.data('tarifa-nombre')?.toString().toLowerCase() || '').includes('2')) {
$('#direccionesFerroPrototipo2').removeClass('d-none');
}
$('#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();
}
}
}
});
$('.tirada-presupuesto').on('change', () => {
self.validate(false);
if (this.validateTiradas()) {
this.removeError(window.translations["validation"].tirada_integer_greatherThan_0);
this.removeError(window.translations["validation"].tirada_pod_nopod);
}
else {
this.addErrors();
}
let tiradas = self.getTiradas();
if (!Array.isArray(tiradas)) {
tiradas = [tiradas];
@ -120,7 +155,24 @@ class DatosGenerales {
this.anchoPersonalizado.on("change", this.#checkValue.bind(this));
this.altoPersonalizado.on("change", this.#checkValue.bind(this));
this.titulo.on('change', () => { $(".titulo").html(this.titulo.val()); });
this.titulo.on('change', () => {
$(".titulo").html(this.titulo.val());
if (this.validateTitulo()) {
this.removeError(window.translations["validation"].titulo_requerido);
}
else {
this.addErrors();
}
});
this.cliente.item.on('change', () => {
if (this.validateCliente()) {
this.removeError(window.translations["validation"].cliente);
}
else {
this.addErrors();
}
});
this.retractilado.on('change', this.#eventRetractilado.bind(this));
this.retractilado5.on('change', this.#eventRetractilado.bind(this));
@ -132,60 +184,114 @@ class DatosGenerales {
this.errores = [];
// Titulo
if (this.titulo.val().trim() === '') {
this.errores.push(window.translations["validation"].titulo_requerido);
this.titulo.addClass('is-invalid');
} else {
this.titulo.removeClass('is-invalid');
}
this.validateTitulo();
// Cliente
if ($(this.excluirRotativa).prop('hidden')) {
if ($('#clienteId').val() === null || $('#clienteId').val().length === 0) {
this.errores.push(window.translations["validation"].cliente);
$('#clienteId').addClass('is-invalid');
} else {
$('#clienteId').removeClass('is-invalid');
}
} else {
if (this.cliente.getVal() <= 0) {
this.errores.push(window.translations["validation"].cliente);
this.cliente.item.addClass('is-invalid');
} else {
this.cliente.item.removeClass('is-invalid');
}
}
this.validateCliente();
// Tirada
let tiradas = this.getTiradas();
if (tiradas.length === 0 || tiradas.some(tirada =>
!Number.isInteger(tirada) ||
parseInt(tirada) <= 0 ||
tirada == "")) {
this.errores.push(window.translations["validation"].tirada_integer_greatherThan_0);
this.tirada1.addClass('is-invalid');
} else {
this.tirada1.removeClass('is-invalid');
// Comprobar tiradas POD
const noPOD = tiradas.some(tirada => parseInt(tirada) > 30);
const siPOD = tiradas.some(tirada => parseInt(tirada) <= 30);
if (noPOD && siPOD) {
this.errores.push(window.translations["validation"].tirada_pod_nopod);
this.tirada1.addClass('is-invalid');
}
else {
this.tirada1.removeClass('is-invalid');
}
}
this.validateTiradas();
// formato libro
this.validateFormatoLibro();
// Paginas
this.validatePaginas();
// Tipo de libro
this.validateTipoLibro();
this.addErrors();
if (this.errores.length > 0) {
return false;
}
else {
if (goToNext)
this.validatorStepper.next();
else
return true;
}
}
validateTipoLibro() {
let noError = true;
if ($('.tipo-libro.selected').length > 0) {
if ($('#cosido').hasClass('selected') || $('#grapado').hasClass('selected')) {
const value = parseInt($("#paginas").val());
if (value % 4 != 0) {
if (parseInt(this.paginas.val()) % 4 != 0) {
this.errores.push(window.translations["validation"].paginas_multiplo_4);
this.paginas.addClass('is-invalid');
noError = false;
} else {
this.paginas.removeClass('is-invalid');
}
}
}
this.domItem.find('#divTipoLibro').removeClass('is-invalid');
} else {
this.errores.push(window.translations["validation"].tipo_libro);
this.domItem.find('#divTipoLibro').addClass('is-invalid');
noError = false;
}
return noError;
}
validatePaginas() {
let noError = true;
if (this.paginasColor.val() == '' || isNaN(this.paginasColor.val()) || parseInt(this.paginasColor.val()) < 0) {
this.errores.push(window.translations["validation"].paginasColor);
this.paginasColor.addClass('is-invalid');
noError = false;
}
else if (parseInt(this.paginasColor.val()) % 2 != 0) {
this.errores.push(window.translations["validation"].paginas_pares);
this.paginasColor.addClass('is-invalid');
noError = false;
}
else {
this.paginasColor.removeClass('is-invalid');
}
if (this.paginasNegro.val() == '' || isNaN(this.paginasNegro.val()) || parseInt(this.paginasNegro.val()) < 0) {
this.errores.push(window.translations["validation"].paginasNegro);
this.paginasNegro.addClass('is-invalid');
noError = false;
}
else if (parseInt(this.paginasNegro.val()) % 2 != 0) {
this.errores.push(window.translations["validation"].paginas_pares);
this.paginasNegro.addClass('is-invalid');
noError = false;
}
else {
this.paginasNegro.removeClass('is-invalid');
}
if (this.paginas.val() == '' || isNaN(this.paginas.val()) || parseInt(this.paginas.val()) <= 0) {
this.errores.push(window.translations["validation"].paginas);
this.paginas.addClass('is-invalid');
noError = false;
} else {
this.paginas.removeClass('is-invalid');
}
return noError;
}
validateFormatoLibro() {
let noError = true;
if (this.checkFormatoPersonalizado.is(':checked')) {
if (this.anchoPersonalizado.val().length === 0 || isNaN(this.anchoPersonalizado.val()) ||
parseFloat(this.anchoPersonalizado.val()) <= 0) {
this.errores.push(window.translations["validation"].papelFormatoAncho);
this.anchoPersonalizado.addClass('is-invalid');
noError = false;
} else {
this.anchoPersonalizado.removeClass('is-invalid');
}
@ -193,6 +299,7 @@ class DatosGenerales {
parseFloat(this.altoPersonalizado.val()) <= 0) {
this.errores.push(window.translations["validation"].papelFormatoAlto);
this.altoPersonalizado.addClass('is-invalid');
noError = false;
} else {
this.altoPersonalizado.removeClass('is-invalid');
}
@ -204,78 +311,73 @@ class DatosGenerales {
} else {
this.errores.push(window.translations["validation"].papelFormato);
this.papelFormatoId.addClass('is-invalid');
noError = false;
}
}
return noError;
}
// Paginas
if (this.paginasColor.val() == '' || isNaN(this.paginasColor.val()) || parseInt(this.paginasColor.val()) < 0) {
this.errores.push(window.translations["validation"].paginasColor);
this.paginasColor.addClass('is-invalid');
}
else if (parseInt(this.paginasColor.val()) % 2 != 0) {
this.errores.push(window.translations["validation"].paginas_pares);
this.paginasColor.addClass('is-invalid');
}
else {
this.paginasColor.removeClass('is-invalid');
}
if (this.paginasNegro.val() == '' || isNaN(this.paginasNegro.val()) || parseInt(this.paginasNegro.val()) < 0) {
this.errores.push(window.translations["validation"].paginasNegro);
this.paginasNegro.addClass('is-invalid');
}
else if (parseInt(this.paginasNegro.val()) % 2 != 0) {
this.errores.push(window.translations["validation"].paginas_pares);
this.paginasNegro.addClass('is-invalid');
}
else {
this.paginasNegro.removeClass('is-invalid');
}
if (this.paginas.val() == '' || isNaN(this.paginas.val()) || parseInt(this.paginas.val()) <= 0) {
this.errores.push(window.translations["validation"].paginas);
this.paginas.addClass('is-invalid');
} else {
this.paginas.removeClass('is-invalid');
}
validateTiradas() {
// Tipo de libro
if ($('.tipo-libro.selected').length > 0) {
if ($('#cosido').hasClass('selected') || $('#grapado').hasClass('selected')) {
const value = parseInt($("#paginas").val());
if (value % 4 != 0) {
if (parseInt(this.paginas.val()) % 4 != 0) {
this.errores.push(window.translations["validation"].paginas_multiplo_4);
this.paginas.addClass('is-invalid');
} else {
this.paginas.removeClass('is-invalid');
}
}
}
this.domItem.find('#divTipoLibro').removeClass('is-invalid');
} else {
this.errores.push(window.translations["validation"].tipo_libro);
this.domItem.find('#divTipoLibro').addClass('is-invalid');
}
let tiradas = this.getTiradas();
if (tiradas.length === 0 || tiradas.some(tirada =>
!Number.isInteger(tirada) ||
parseInt(tirada) <= 0 ||
tirada == "")) {
const skAlert = document.getElementById('sk-alert');
skAlert.innerHTML = '';
const uniqueErrors = [...new Set(this.errores)];
if (uniqueErrors.length > 0) {
const message = window.translations["validation"].fix_errors +
`<ul class="mb-0">
${uniqueErrors.map(err => `<li>${err}</li>`).join('')}
</ul>`;
popErrorAlert(message, 'sk-alert', false);
this.errores = [];
this.errores.push(window.translations["validation"].tirada_integer_greatherThan_0);
this.tirada1.addClass('is-invalid');
return false;
}
else {
document.getElementById('sk-alert').innerHTML = '';
this.errores = [];
if (goToNext)
this.validatorStepper.next();
else
} else {
this.tirada1.removeClass('is-invalid');
// Comprobar tiradas POD
const noPOD = tiradas.some(tirada => parseInt(tirada) > 30);
const siPOD = tiradas.some(tirada => parseInt(tirada) <= 30);
if (noPOD && siPOD) {
this.errores.push(window.translations["validation"].tirada_pod_nopod);
this.tirada1.addClass('is-invalid');
return false;
}
else {
this.tirada1.removeClass('is-invalid');
return true;
}
}
}
validateCliente() {
if ($(this.excluirRotativa).prop('hidden')) {
if ($('#clienteId').val() === null || $('#clienteId').val().length === 0) {
this.errores.push(window.translations["validation"].cliente);
$('#clienteId').addClass('is-invalid');
return false;
} else {
$('#clienteId').removeClass('is-invalid');
return true;
}
} else {
if (this.cliente.getVal() <= 0) {
this.errores.push(window.translations["validation"].cliente);
this.cliente.item.addClass('is-invalid');
return false;
} else {
this.cliente.item.removeClass('is-invalid');
return true;
}
}
}
validateTitulo() {
if (this.titulo.val().trim() === '') {
this.errores.push(window.translations["validation"].titulo_requerido);
this.titulo.addClass('is-invalid');
return false;
} else {
this.titulo.removeClass('is-invalid');
return true;
}
}
@ -570,8 +672,11 @@ class DatosGenerales {
this.formatoEstandar.removeClass('d-none');
this.formatoPersonalizado.addClass('d-none');
}
const alto = this.getDimensionLibro().alto;
$('#altoFaja').closest('.config-faja').find('.form-text').text('Entre 50 y ' + alto + ' mm');
const dimensionLibro = this.getDimensionLibro();
if (dimensionLibro && dimensionLibro.alto) {
$('#altoFaja').closest('.config-faja').find('.form-text').text('Entre 50 y ' + dimensionLibro.alto + ' mm');
}
}
#checkValue(event) {
@ -579,6 +684,13 @@ class DatosGenerales {
if (target.value < target.min) {
target.value = target.min;
}
if (this.validateFormatoLibro()) {
this.removeError(window.translations["validation"].papelFormatoAncho);
this.removeError(window.translations["validation"].papelFormatoAlto);
}
else {
this.addErrors();
}
}
#eventRetractilado(event) {
@ -597,6 +709,7 @@ class DatosGenerales {
#handleTipolibro(event) {
// Accede al ID del elemento que disparó el evento
const element = $(event.target);
@ -631,7 +744,7 @@ class DatosGenerales {
$('#addSobrecubierta').prop('checked', false).trigger('change');
$(".sobrecubierta-items").addClass('d-none');
if (this.grapado.hasClass('selected')){
if (this.grapado.hasClass('selected')) {
$("#tapaBlanda").addClass('selected');
$("#tapaBlanda").removeClass('d-none');
@ -647,7 +760,13 @@ class DatosGenerales {
}
}
this.validate(false);
if (this.validateTipoLibro()) {
this.removeError(window.translations["validation"].tipo_libro);
this.removeError(window.translations["validation"].paginas_multiplo_4);
}
else {
this.addErrors();
}
// Para recalcular el presupuesto
$('#paginas').trigger('change');
@ -692,7 +811,7 @@ class DatosGenerales {
this.domItem.find('#grapado').show();
}
if( totalPaginas < 20){
if (totalPaginas < 20) {
this.domItem.find('#espiral').removeClass('selected');
this.domItem.find('#espiral').find('.image-presupuesto').removeClass('selected');
this.domItem.find('#espiral').hide();
@ -740,6 +859,15 @@ class DatosGenerales {
}
$('.calcular-lomo').trigger('change');
if (this.validatePaginas()) {
this.removeError(window.translations["validation"].paginas);
this.removeError(window.translations["validation"].paginasColor);
this.removeError(window.translations["validation"].paginasNegro);
this.removeError(window.translations["validation"].paginas_pares);
}
else {
this.addErrors();
}
}
@ -829,6 +957,38 @@ class DatosGenerales {
return servicios;
}
removeError(error) {
const hasError = this.errores.filter(err => err === error).length > 0;
if (hasError) {
// remove the item from this.errores
this.errores = this.errores.filter(err => err !== error);
}
if (this.errores.length == 0) {
document.getElementById('sk-alert').innerHTML = '';
}
else {
document.getElementById('sk-alert').innerHTML = document.getElementById('sk-alert').innerHTML
.replace(`<li>${error}</li>`, '').replace(error, '');
}
}
addErrors() {
const skAlert = document.getElementById('sk-alert');
skAlert.innerHTML = '';
this.errores = [...new Set(this.errores)];
if (this.errores.length > 0) {
const message = window.translations["validation"].fix_errors +
`<ul class="mb-0">
${this.errores.map(err => `<li>${err}</li>`).join('')}
</ul>`;
popErrorAlert(message, 'sk-alert', false);
}
else {
skAlert.innerHTML = '';
}
}
}

View File

@ -22,13 +22,21 @@ class Direcciones {
this.entregaPieCallero = this.domItem.find('#entregaPieCalle');
this.direccionesCliente = new ClassSelect($("#direcciones"), '/misdirecciones/getSelect2');
this.direccionesClienteFP1 = new ClassSelect($("#direccionesFP1"), '/misdirecciones/getSelect2');
this.direccionesClienteFP2 = new ClassSelect($("#direccionesFP2"), '/misdirecciones/getSelect2');
this.divDirecciones = $(this.domItem.find('#divDirecciones'));
this.divTiradas = this.domItem.find('#containerTiradasEnvios');
this.sameAddPrincipalFP1 = this.domItem.find('#sameAddPrincipalFP1');
this.sameAddPrincipalFP2 = this.domItem.find('#sameAddPrincipalFP2');
this.sameAddFP1 = this.domItem.find('#sameAddFP1');
this.checksTiradasEnvio = $('.check-tirada-envio');
this.direcciones = [];
this.direccionesFP1 = [];
this.direccionesFP2 = [];
this.tiradaSeleccionada = null;
@ -57,9 +65,18 @@ class Direcciones {
this.direccionesCliente.init();
this.direccionesClienteFP1.init();
this.direccionesClienteFP2.init();
this.btnAdd.on('click', this.#insertDireccion.bind(this));
this.btnNew.on('click', this.#nuevaDireccion.bind(this));
$('#insertarDireccionFP1').on('click', () => {
this.#insertDireccionFP(1);
});
$('#insertarDireccionFP2').on('click', () => {
this.#insertDireccionFP(2);
});
// evento para actualizar el selector de tiradas
$(document).on('update-tiradas-envios', (event, data) => {
self.divTiradas.empty();
@ -80,9 +97,14 @@ class Direcciones {
self.divTiradas.trigger('change');
}
});
this.sameAddPrincipalFP1.on('change', this.#handleSameAddPrincipalFP1.bind(this));
this.sameAddPrincipalFP2.on('change', this.#handleSameAddPrincipalFP2.bind(this));
this.sameAddFP1.on('change', this.#handleSameAddFP1.bind(this));
}
cargarDatos(datos, datosGenerales) {
self = this;
@ -150,29 +172,6 @@ class Direcciones {
tarjeta.card.find('.direccion-eliminar').on('click', this.#deleteDireccion.bind(self));
this.divDirecciones.append(tarjeta.card);
this.direcciones.push(tarjeta);
/*let peticion = new Ajax('/misdirecciones/getDireccionPresupuesto/' + id, {}, {},
(response) => {
let divId = "dirEnvio-1";
let direccionesActuales = this.divDirecciones.find('.direccion-cliente');
if (direccionesActuales.length > 0) {
// the the lass item
let last = direccionesActuales[direccionesActuales.length - 1];
divId = "dirEnvio-" + (parseInt(last.id.split('-')[1]) + 1);
}
let tarjeta = new tarjetaDireccion(this.divDirecciones, divId, response.data[0]);
tarjeta.setUnidades(unidades);
tarjeta.setEntregaPalets(entregaPalets);
tarjeta.card.find('.direccion-editar').on('click', this.#editUnits.bind(self));
tarjeta.card.find('.direccion-eliminar').on('click', this.#deleteDireccion.bind(self));
this.divDirecciones.append(tarjeta.card);
this.direcciones.push(tarjeta);
},
() => {
console.error('Error getting address');
});
peticion.get();*/
}
}
} catch (e) {
@ -223,72 +222,6 @@ class Direcciones {
}
}
initValidation() {
const stepper = this.validatorStepper;
this.formValidation = FormValidation.formValidation(this.wizardStep, {
fields: {
div_error_envios: {
validators: {
callback: {
callback: () => {
div.find('.fv-plugins-message-container').remove();
if ($('.check-tirada-envio:checked').length > 0) {
let unidades = parseInt($($('.check-tirada-envio:checked')[0]).attr('tirada'));
let total_envio = 0;
// se recorre el array this.direcciones
this.direcciones.forEach(direccion => {
total_envio += parseInt(direccion.getUnidades());
});
if (total_envio <= unidades) {
return true;
}
}
div.append(`
<div class="fv-plugins-message-container invalid-feedback">
<div data-field="div_tipo_cubierta" data-validator="callback">
El total de unidades enviadas no puede ser mayor que la tirada seleccionada
</div>
</div>
`);
return false;
},
}
}
}
},
plugins: {
trigger: new FormValidation.plugins.Trigger(),
bootstrap5: new FormValidation.plugins.Bootstrap5({
// Use this for enabling/changing valid/invalid class
// eleInvalidClass: '',
eleValidClass: '',
rowSelector: function (field, ele) {
// field is the field name
// ele is the field element
switch (field) {
case 'div_error_envios':
return '.col-sm-10';
default:
return '.col-sm-3';
}
}
}),
autoFocus: new FormValidation.plugins.AutoFocus(),
submitButton: new FormValidation.plugins.SubmitButton()
}
}).on('core.form.valid', () => {
if (this.allowNext)
stepper.next();
});
}
insertTirada(tirada) {
@ -408,47 +341,116 @@ class Direcciones {
return;
}
}
this.#addTarjetaDireccion(this.divDirecciones, this.direcciones, divId, id, unidades, entregaPalets);
$('#loader').modal('show');
let peticion = new Ajax('/misdirecciones/get/' + id, {}, {},
(response) => {
if (this.direcciones.length == 0) {
$('#loader').modal('hide');
if (entregaPalets) {
this.calcularPresupuesto = true;
}
}
else {
this.calcularPresupuesto = true;
}
let tarjeta = new tarjetaDireccion(this.divDirecciones, divId, response.data[0]);
tarjeta.setUnidades(unidades);
tarjeta.setEntregaPalets(entregaPalets);
tarjeta.card.find('.direccion-editar').on('click', this.#editUnits.bind(self));
tarjeta.card.find('.direccion-eliminar').on('click', this.#deleteDireccion.bind(self));
this.divDirecciones.append(tarjeta.card);
this.direcciones.push(tarjeta);
self.divDirecciones.trigger('change');
},
() => {
console.error('Error getting address');
$('#loader').modal('hide');
});
peticion.get();
} catch (e) {
console.error(e);
$('#loader').modal('hide');
}
}
#insertDireccionFP(num_ferroPrototipo) {
self = this;
try {
let id = 0;
if( num_ferroPrototipo === 1) {
id = this.direccionesClienteFP1.getVal();
}
if( num_ferroPrototipo === 2) {
id = this.direccionesClienteFP2.getVal();
}
let unidades = 1;
if (id == null || id <= 0 || id == undefined)
return;
let divId = "dirEnvio-FP-" + num_ferroPrototipo;
let containerId = num_ferroPrototipo === 1 ? "#divDireccionesFerroPrototipo" : "#divDireccionesFerroPrototipo2";
let arrayName = num_ferroPrototipo === 1 ? this.direccionesFP1 : this.direccionesFP2;
this.#addTarjetaDireccion(
$(containerId),
arrayName,
divId,
id,
1, false, true, num_ferroPrototipo);
$('.div-direcciones-fp' + num_ferroPrototipo).addClass('d-none');
} catch (e) {
console.error(e);
$('#loader').modal('hide');
}
}
async #addTarjetaDireccion(container, addArray, divId, data, unidades, entregaPalets = false, isFerroPrototipo = false, numFerroPrototipo = 0) {
const self = this;
let id = data;
try {
if (typeof data === 'object') {
const ajaxGetId = new Ajax('/misdirecciones/getId', {
data: data,
cliente_id: $("#clienteId").select2('data')[0].id
}, {}, null, null);
const response = await ajaxGetId.getPromise();
id = response;
}
$('#loader').modal('show');
const ajaxGetDireccion = new Ajax('/misdirecciones/get/' + id, {}, {}, null, null);
const response = await ajaxGetDireccion.getPromise();
if (this.direcciones.length === 0) {
$('#loader').modal('hide');
if (entregaPalets) {
this.calcularPresupuesto = true;
}
} else {
this.calcularPresupuesto = true;
}
const tarjeta = new tarjetaDireccion(container, divId, response.data[0], isFerroPrototipo, numFerroPrototipo);
tarjeta.setUnidades(unidades);
tarjeta.setEntregaPalets(entregaPalets);
if (!isFerroPrototipo) {
tarjeta.card.find('.direccion-eliminar').on('click', this.#deleteDireccion.bind(self));
tarjeta.card.find('.direccion-editar').on('click', this.#editUnits.bind(self));
}
else {
tarjeta.card.find('.direccion-eliminar').on('click', (event) => {
this.#deleteDireccionFP(event, numFerroPrototipo);
$('.div-direcciones-fp' + numFerroPrototipo).removeClass('d-none');
});
}
container.append(tarjeta.card);
addArray.push(tarjeta);
container.trigger('change');
} catch (err) {
console.error('Error en petición Ajax:', err);
$('#loader').modal('hide');
}
}
handleChangeCliente() {
this.direccionesCliente.setParams({ 'cliente_id': $("#clienteId").select2('data')[0].id })
this.direccionesCliente.empty();
this.direccionesClienteFP1.setParams({ 'cliente_id': $("#clienteId").select2('data')[0].id })
this.direccionesClienteFP1.empty();
this.direccionesClienteFP2.setParams({ 'cliente_id': $("#clienteId").select2('data')[0].id })
this.direccionesClienteFP2.empty();
this.domItem.find('.direccion-cliente').remove();
this.direcciones = [];
@ -500,6 +502,124 @@ class Direcciones {
this.divDirecciones.trigger('change');
}
#deleteDireccionFP(event, num_ferroPrototipo = 1) {
let tarjeta = event.currentTarget.closest('.direccion-cliente');
this.calcularPresupuesto = true;
if (num_ferroPrototipo === 1) {
this.direccionesFP1 = [];
this.sameAddPrincipalFP1.prop('checked', false);
$('#divDireccionesFerroPrototipo1').trigger('change');
}
if (num_ferroPrototipo === 2) {
this.direccionesFP2 = [];
this.sameAddPrincipalFP2.prop('checked', false);
this.sameAddFP1.prop('checked', false);
$('#divDireccionesFerroPrototipo2').trigger('change');
}
tarjeta.remove();
}
#handleSameAddPrincipalFP1() {
if (this.sameAddPrincipalFP1.is(':checked')) {
$('.div-direcciones-fp1').addClass('d-none');
$('#divDireccionesFerroPrototipo').empty();
if (this.direcciones.length > 0) {
// get first element
let data = this.direcciones[0].getDireccion();
this.direccionesFP1 = [];
this.#addTarjetaDireccion(
$("#divDireccionesFerroPrototipo"),
this.direccionesFP1,
'dirEnvio-FP-1',
data,
1, false, true, 1);
$('#divDireccionesFerroPrototipo').removeClass('d-none');
}
else {
// mostrar alerta de que no hay direcciones
}
}
else {
$('.div-direcciones-fp1').removeClass('d-none');
$('#divDireccionesFerroPrototipo').removeClass('d-none');
$('#divDireccionesFerroPrototipo').empty();
}
}
#handleSameAddPrincipalFP2() {
if (this.sameAddPrincipalFP2.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(
$("#divDireccionesFerroPrototipo2"),
this.direccionesFP2,
'dirEnvio-FP-2',
data,
1, false, true, 2);
$('#divDireccionesFerroPrototipo2').removeClass('d-none');
}
else {
// mostrar alerta de que no hay direcciones
}
}
else {
$('.div-direcciones-fp2').removeClass('d-none');
$('#divDireccionesFerroPrototipo2').removeClass('d-none');
$('#divDireccionesFerroPrototipo2').empty();
}
}
#handleSameAddFP1() {
if (this.sameAddFP1.is(':checked')) {
if(this.sameAddPrincipalFP2.is(':checked')) {
this.sameAddPrincipalFP2.prop('checked', false);
}
$('.div-direcciones-fp2').addClass('d-none');
$('#divDireccionesFerroPrototipo2').empty();
if (this.direccionesFP1.length > 0) {
let data = this.direccionesFP1[0].getDireccion();
this.direccionesFP1 = [];
this.#addTarjetaDireccion(
$("#divDireccionesFerroPrototipo2"),
this.direccionesFP2,
'dirEnvio-FP-2',
data,
1, false, true, 2);
$('#divDireccionesFerroPrototipo2').removeClass('d-none');
}
else {
// mostrar alerta de que no hay direcciones
}
}
else {
$('.div-direcciones-fp2').removeClass('d-none');
$('#divDireccionesFerroPrototipo2').removeClass('d-none');
$('#divDireccionesFerroPrototipo2').empty();
}
}
getSelectedTirada() {
if ($('.check-tirada-envio:checked').length > 0)
return parseInt($($('.check-tirada-envio:checked')[0]).attr('tirada'));

View File

@ -1,5 +1,4 @@
import { getToken } from '../../common/common.js';
import { capitalizeFirstLetter } from '../../common/common.js';
import { capitalizeFirstLetter, getToken } from '../../common/common.js';
import Ajax from '../../components/ajax.js';
import ClassSelect from '../../components/select2.js';
@ -265,6 +264,8 @@ class DisenioCubierta {
this.presupuestoConfirmado = false;
this.papelForResumen = "";
this.gramajeForResumen = "";
this.errores = [];
}
@ -286,6 +287,15 @@ class DisenioCubierta {
this.papelFaja.init();
this.gramajeFaja.init();
this.acabadoCubierta.onChange(() => {
if (this.acabadoCubierta.getVal() > 0) {
$('#alert-cubierta-sin-acabado').addClass('d-none');
}
else {
$('#alert-cubierta-sin-acabado').removeClass('d-none');
}
});
$('#papelEspecialCubiertaSel').on("change", this.#handlePapelCubiertaEspecial.bind(this));
// Eventos
@ -299,18 +309,54 @@ class DisenioCubierta {
this.carasCubierta.on('change', this.#handleCarasCubierta.bind(this));
this.sobrecubierta.on('change', () => {
this.sobrecubierta.is(":checked") ? this.configuracionSobrecubierta.removeClass("d-none") : this.configuracionSobrecubierta.addClass("d-none")
if (this.sobrecubierta.is(":checked")) {
this.configuracionSobrecubierta.removeClass("d-none");
if (this.papelSobrecubierta.getVal() && this.gramajeSobrecubierta.getVal()) {
$('#tirada').trigger('change'); // recalcular presupuesto
}
}
else {
this.configuracionSobrecubierta.addClass("d-none");
$('#tirada').trigger('change'); // recalcular presupuesto
}
}
);
this.faja.on('change', () => {
this.faja.is(":checked") ? this.configuracionFaja.removeClass("d-none") : this.configuracionFaja.addClass("d-none");
if(this.faja.is(":checked")) {
this.configuracionFaja.removeClass("d-none");
if (this.papelFaja.getVal() && this.gramajeFaja.getVal()) {
$('#tirada').trigger('change'); // recalcular presupuesto
}
}
else{
this.configuracionFaja.addClass("d-none");
$('#tirada').trigger('change'); // recalcular presupuesto
}
const div = $('#divExtras'); // Selecciona el div
div.find('.fv-plugins-message-container').remove();
});
this.papelFaja.item.on('change', () => { this.gramajeFaja.empty(); });
this.papelSobrecubierta.item.on('change', () => {
this.gramajeSobrecubierta.item.find('option').remove();
this.gramajeSobrecubierta.item.val(null);
this.gramajeSobrecubierta.item.trigger('select2:clear');
});
this.papelGuardas.item.on('change', () => { this.gramajeGuardas.empty(); });
this.papelFaja.item.on('change', () => {
this.gramajeFaja.item.find('option').remove();
this.gramajeFaja.item.val(null);
this.gramajeFaja.item.trigger('select2:clear');
});
this.papelGuardas.item.on('change', () => {
this.gramajeGuardas.item.find('option').remove();
this.gramajeGuardas.item.val(null);
this.gramajeGuardas.item.trigger('select2:clear');
});
// Observadores
this.observer.observe(this.tapaBlanda[0], { attributes: true });
@ -318,6 +364,18 @@ class DisenioCubierta {
this.observer.observe(this.tapaDuraLomoRedondo[0], { attributes: true });
this.observer.observe(this.conSolapas[0], { attributes: true });
this.observer.observe(this.sinSolapas[0], { attributes: true });
this.papelGuardas.onChange(() => {
if (self.validateTapaDuraOptions()) {
self.removeError(window.translations["validation"].papel_guardas)
}
});
this.gramajeGuardas.onChange(() => {
if (self.validateTapaDuraOptions()) {
self.removeError(window.translations["validation"].gramaje_guardas)
}
});
}
@ -394,106 +452,46 @@ class DisenioCubierta {
validate(goToNext = true) {
let errores = [];
this.errores = [];
let continueCheck = true;
// diseño cubierta
$('#divTipoCubierta').removeClass('is-invalid');
if ($('.tipo-cubierta.selected').length == 0) {
$('#divTipoCubierta').addClass('is-invalid');
errores.push(window.translations["validation"].tipo_cubierta);
continueCheck = false;
}
continueCheck = this.validateDisenioCubierta();
// solapas cubierta
$('#divSolapasCubierta').removeClass('is-invalid');
if (!$('#divSolapasCubierta').hasClass("d-none") && $('.solapas-cubierta.selected').length == 0 && continueCheck) {
$('#divSolapasCubierta').addClass('is-invalid');
errores.push(window.translations["validation"].opcion_solapas);
}
this.validateSolapasCubierta(continueCheck);
// opciones tapa dura y lomo redondo
$('#papelGuardas').removeClass('is-invalid');
$('#gramajeGuardas').removeClass('is-invalid');
if (!$('#divConfigTapaDura').hasClass('d-none') && continueCheck) {
if ($('#papelGuardas').select2('data').length == 0) {
$('#papelGuardas').addClass('is-invalid');
errores.push(window.translations["validation"].papel_guardas);
}
if ($('#gramajeGuardas').select2('data').length == 0) {
$('#gramajeGuardas').addClass('is-invalid');
errores.push(window.translations["validation"].gramaje_guardas);
}
}
this.validateTapaDuraOptions(continueCheck);
// papel
$('#divPapelCubierta').removeClass('is-invalid');
if ($('.custom-selector-papel-cubierta input[type="radio"]:checked').length == 0 && continueCheck) {
$('#divPapelCubierta').addClass('is-invalid');
errores.push(window.translations["validation"].papel_cubierta);
continueCheck = false;
}
else if (!$('#divPapelEspecialCubierta').hasClass("d-none")) {
if ($('#papelEspecialCubiertaSel').select2('data').length == 0 && continueCheck) {
$('#divPapelEspecialCubierta').addClass('is-invalid');
errores.push(window.translations["validation"].papel_cubierta_especial);
continueCheck = false;
}
}
continueCheck = this.validatePapelCubierta(continueCheck);
// gramaje
$('#divGramajeCubierta').removeClass('is-invalid');
if ($('.custom-selector-gramaje-cubierta input[type="radio"]:checked').length == 0 && continueCheck) {
$('#divGramajeCubierta').addClass('is-invalid');
errores.push(window.translations["validation"].gramaje_cubierta);
}
this.validateGramajeCubierta(continueCheck);
// sobrecubierta
$('#papelSobrecubierta').removeClass('is-invalid');
$('#gramajeSobrecubierta').removeClass('is-invalid');
if ($("#addSobrecubierta").prop("checked") == true) {
if ($('#papelSobrecubierta').select2('data').length == 0) {
$('#papelSobrecubierta').addClass('is-invalid');
errores.push(window.translations["validation"].papel_sobrecubierta);
}
if ($('#gramajeSobrecubierta').select2('data').length == 0) {
$('#gramajeSobrecubierta').addClass('is-invalid');
errores.push(window.translations["validation"].gramaje_sobrecubierta);
}
}
this.validateSobrecubierta();
// faja
$('#papelFaja').removeClass('is-invalid');
$('#gramajeFaja').removeClass('is-invalid');
if ($("#addFaja").prop("checked") == true) {
if ($('#papelFaja').select2('data').length == 0) {
$('#papelFaja').addClass('is-invalid');
errores.push(window.translations["validation"].papel_faja);
}
if ($('#gramajeFaja').select2('data').length == 0) {
$('#gramajeFaja').addClass('is-invalid');
errores.push(window.translations["validation"].gramaje_faja);
}
}
this.validateFaja();
const skAlert = document.getElementById('sk-alert');
skAlert.innerHTML = '';
const uniqueErrors = [...new Set(errores)];
this.errores = [...new Set(this.errores)];
if (uniqueErrors.length > 0) {
if (this.errores.length > 0) {
const message = window.translations["validation"].fix_errors +
`<ul class="mb-0">
${uniqueErrors.map(err => `<li>${err}</li>`).join('')}
${this.errores.map(err => `<li>${err}</li>`).join('')}
</ul>`;
popErrorAlert(message, 'sk-alert', false);
errores = [];
return false;
}
else {
document.getElementById('sk-alert').innerHTML = '';
errores = [];
this.errores = [];
if (goToNext)
this.validatorStepper.next();
else
@ -502,6 +500,123 @@ class DisenioCubierta {
}
validateDisenioCubierta() {
$('#divTipoCubierta').removeClass('is-invalid');
if ($('.tipo-cubierta.selected').length == 0) {
$('#divTipoCubierta').addClass('is-invalid');
this.errores.push(window.translations["validation"].tipo_cubierta);
return false;
}
return true;
}
validateSolapasCubierta(continueCheck = true) {
$('#divSolapasCubierta').removeClass('is-invalid');
if (!$('#divSolapasCubierta').hasClass("d-none") && $('.solapas-cubierta.selected').length == 0) {
$('#divSolapasCubierta').addClass('is-invalid');
this.errores.push(window.translations["validation"].opcion_solapas);
return false;
}
return true;
}
validateTapaDuraOptions(continueCheck = true) {
$('#papelGuardas').removeClass('is-invalid');
$('#gramajeGuardas').removeClass('is-invalid');
if (!continueCheck)
return false;
if (!$('#divConfigTapaDura').hasClass('d-none') && continueCheck) {
if ($('#papelGuardas').select2('data').length == 0) {
$('#papelGuardas').addClass('is-invalid');
this.errores.push(window.translations["validation"].papel_guardas);
return false;
}
if ($('#gramajeGuardas').select2('data').length == 0) {
$('#gramajeGuardas').addClass('is-invalid');
this.errores.push(window.translations["validation"].gramaje_guardas);
return false;
}
}
return true;
}
validatePapelCubierta(continueCheck = true) {
$('#divPapelCubierta').removeClass('is-invalid');
$('#divPapelEspecialCubierta').removeClass('is-invalid');
if (!continueCheck)
return false;
if ($('.custom-selector-papel-cubierta input[type="radio"]:checked').length == 0 && continueCheck) {
$('#divPapelCubierta').addClass('is-invalid');
this.errores.push(window.translations["validation"].papel_cubierta);
return false;
}
else if (!$('#divPapelEspecialCubierta').hasClass("d-none")) {
if ($('#papelEspecialCubiertaSel').select2('data').length == 0 && continueCheck) {
$('#divPapelEspecialCubierta').addClass('is-invalid');
this.errores.push(window.translations["validation"].papel_cubierta_especial);
return false;
}
}
return true;
}
validateGramajeCubierta(continueCheck = true) {
$('#divGramajeCubierta').removeClass('is-invalid');
if ($('.custom-selector-gramaje-cubierta input[type="radio"]:checked').length == 0 && continueCheck) {
$('#divGramajeCubierta').addClass('is-invalid');
this.errores.push(window.translations["validation"].gramaje_cubierta);
return false;
}
return true;
}
validateSobrecubierta() {
let noError = true;
$('#papelSobrecubierta').removeClass('is-invalid');
$('#gramajeSobrecubierta').removeClass('is-invalid');
if ($("#addSobrecubierta").prop("checked") == true) {
if ($('#papelSobrecubierta').select2('data').length == 0) {
$('#papelSobrecubierta').addClass('is-invalid');
this.errores.push(window.translations["validation"].papel_sobrecubierta);
noError = false;
}
if ($('#gramajeSobrecubierta').select2('data').length == 0) {
$('#gramajeSobrecubierta').addClass('is-invalid');
this.errores.push(window.translations["validation"].gramaje_sobrecubierta);
noError = false;
}
}
return noError;
}
validateFaja() {
let noError = true;
$('#papelFaja').removeClass('is-invalid');
$('#gramajeFaja').removeClass('is-invalid');
if ($("#addFaja").prop("checked") == true) {
if ($('#papelFaja').select2('data').length == 0) {
$('#papelFaja').addClass('is-invalid');
this.errores.push(window.translations["validation"].papel_faja);
noError = false;
}
if ($('#gramajeFaja').select2('data').length == 0) {
$('#gramajeFaja').addClass('is-invalid');
this.errores.push(window.translations["validation"].gramaje_faja);
noError = false;
}
}
return noError;
}
getLomoCubierta() {
const lomoRedondo = this.tapaDuraLomoRedondo.hasClass("selected");
@ -809,6 +924,10 @@ class DisenioCubierta {
}
element.trigger('change');
if (this.validateDisenioCubierta()) {
this.removeError(window.translations["validation"].tipo_cubierta);
}
}
@ -830,6 +949,10 @@ class DisenioCubierta {
element.closest('.image-presupuesto').toggleClass('selected');
element.trigger('change');
if (this.validateSolapasCubierta()) {
this.removeError(window.translations["validation"].opcion_solapas);
}
}
@ -902,6 +1025,11 @@ class DisenioCubierta {
this.papelCubierta = this.papelEspecial.getVal();
const tapa_dura = this.tapaBlanda.hasClass("selected") ? 0 : 1;
if (this.validatePapelCubierta()) {
this.removeError(window.translations["validation"].papel_cubierta);
this.removeError(window.translations["validation"].papel_cubierta_especial);
}
new Ajax('/configuracion/papelesgenericos/getpapelcliente',
{
[this.csrf_token]: this.csrf_hash,
@ -916,6 +1044,7 @@ class DisenioCubierta {
tirada: this.presupuestoCliente.datosGenerales.getTiradas()[0],
},
{},
this.fillGramajes.bind(context),
(response) => { console.log(response); }
).get();
@ -925,8 +1054,13 @@ class DisenioCubierta {
fillPapeles(response) {
const self = this;
this.divPapelCubierta.empty();
this.divGramajeCubierta.empty();
this.divPapelCubierta.removeClass('is-invalid');
this.divGramajeCubierta.removeClass('is-invalid');
this.divPapelEspecial.removeClass('is-invalid');
if (response.papeles.length > 0) {
this.textoPapelCubierta.removeClass('d-none');
@ -953,7 +1087,11 @@ class DisenioCubierta {
text: papel.nombre
});
radioButton.on('click', this.#handleGramajeCubierta.bind(this));
radioButton.on('click', () => {
self.removeError(window.translations["validation"].papel_cubierta);
self.removeError(window.translations["validation"].papel_cubierta_especial);
this.#handleGramajeCubierta();
});
container.append(radioButton).append(label);
$('#divPapelCubierta').append(container);
@ -1092,6 +1230,10 @@ class DisenioCubierta {
const element = $(event.target);
const gramaje = element[0].id;
/*if(this.validateGramajeCubierta()) {
this.removeError(window.translations["validation"].gramaje_cubierta);
}*/
this.presupuestoCliente.checkForm(event);
});
@ -1162,6 +1304,21 @@ class DisenioCubierta {
else if ($('#' + id).val() > max)
$('#' + id).val(max);
}
removeError(error) {
const hasError = this.errores.filter(err => err === error).length > 0;
if (hasError) {
// remove the item from this.errores
this.errores = this.errores.filter(err => err !== error);
}
if (this.errores.length == 0) {
document.getElementById('sk-alert').innerHTML = '';
}
else {
document.getElementById('sk-alert').innerHTML = document.getElementById('sk-alert').innerHTML.
replace(error, '');
}
}
}

View File

@ -93,6 +93,8 @@ class DisenioInterior {
this.gramajeNegroForResumen = "";
this.papelColorForResumen = "";
this.gramajeColorForResumen = "";
this.errores = [];
}
@ -377,72 +379,36 @@ class DisenioInterior {
validate(goToNext = true) {
let errores = [];
let continueCheck = true;
this.errores = [];
// impresion interior
if ($('.disenio-interior.selected').length > 0) {
$('#divImpresionInterior').removeClass('is-invalid');
}
else {
errores.push(window.translations["validation"].disenio_interior);
$('#divImpresionInterior').addClass('is-invalid');
continueCheck = false;
}
let continueCheck = this.validateDisenioInterior();
// papel interior
if (continueCheck) {
const papelSeleccionado = $('.custom-selector-papel input[type="radio"]:checked');
if (papelSeleccionado.length > 0) {
if (!$('#divPapelEspecialInterior').hasClass("d-none")) {
if ($('#papelEspecialInterior').select2('data').length == 0) {
$('#divPapelInterior').addClass('is-invalid');
errores.push(window.translations["validation"].papel_interior_especial);
continueCheck = false;
}
else {
$('#divPapelInterior').removeClass('is-invalid');
}
}
else {
$('#divPapelInterior').removeClass('is-invalid');
}
} else {
$('#divPapelInterior').addClass('is-invalid');
errores.push(window.translations["validation"].papel_interior);
continueCheck = false;
}
continueCheck = this.validatePapelInterior();
}
// gramaje interior
if (continueCheck) {
const gramajeSeleccionado = $('.custom-selector-gramaje input[type="radio"]:checked');
if (gramajeSeleccionado.length > 0) {
$('#divGramajeInterior').removeClass('is-invalid');
}
else {
$('#divGramajeInterior').addClass('is-invalid');
errores.push(window.translations["validation"].gramaje_interior);
}
this.validateGramajeInterior();
}
const skAlert = document.getElementById('sk-alert');
skAlert.innerHTML = '';
const uniqueErrors = [...new Set(errores)];
this.errores = [...new Set(this.errores)];
if (uniqueErrors.length > 0) {
if (this.errores.length > 0) {
const message = window.translations["validation"].fix_errors +
`<ul class="mb-0">
${uniqueErrors.map(err => `<li>${err}</li>`).join('')}
${this.errores.map(err => `<li>${err}</li>`).join('')}
</ul>`;
popErrorAlert(message, 'sk-alert', false);
errores = [];
return false;
}
else {
document.getElementById('sk-alert').innerHTML = '';
errores = [];
this.errores = [];
if (goToNext)
this.validatorStepper.next();
else
@ -450,6 +416,58 @@ class DisenioInterior {
}
}
validateDisenioInterior() {
if ($('.disenio-interior.selected').length > 0) {
$('#divImpresionInterior').removeClass('is-invalid');
return true;
}
else {
this.errores.push(window.translations["validation"].disenio_interior);
$('#divImpresionInterior').addClass('is-invalid');
return false;
}
}
validatePapelInterior() {
const papelSeleccionado = $('.custom-selector-papel input[type="radio"]:checked');
if (papelSeleccionado.length > 0) {
if (!$('#divPapelEspecialInterior').hasClass("d-none")) {
if ($('#papelEspecialInterior').select2('data').length == 0) {
$('#divPapelInterior').addClass('is-invalid');
this.errores.push(window.translations["validation"].papel_interior_especial);
return false;
}
else {
$('#divPapelInterior').removeClass('is-invalid');
return true;
}
}
else {
$('#divPapelInterior').removeClass('is-invalid');
return true;
}
} else {
$('#divPapelInterior').addClass('is-invalid');
this.errores.push(window.translations["validation"].papel_interior);
return false;
}
}
validateGramajeInterior() {
const gramajeSeleccionado = $('.custom-selector-gramaje input[type="radio"]:checked');
if (gramajeSeleccionado.length > 0) {
$('#divGramajeInterior').removeClass('is-invalid');
return true;
}
else {
$('#divGramajeInterior').addClass('is-invalid');
this.errores.push(window.translations["validation"].gramaje_interior);
return false;
}
}
getTipoImpresion() {
@ -730,6 +748,21 @@ class DisenioInterior {
else
this.updatePapeles();
}
if (this.validateDisenioInterior()) {
const hasError = this.errores.filter(err => err === window.translations["validation"].disenio_interior).length > 0;
if (hasError) {
// remove the item from this.errores
this.errores = this.errores.filter(err => err !== window.translations["validation"].disenio_interior);
}
if (this.errores.length == 0) {
document.getElementById('sk-alert').innerHTML = '';
}
else {
document.getElementById('sk-alert').innerHTML = document.getElementById('sk-alert').innerHTML.
replace(window.translations["validation"].disenio_interior, '');
}
}
}
@ -780,8 +813,23 @@ class DisenioInterior {
(response) => { console.log(response); }
).get();
}
if (!this.cargando)
if (!this.cargando) {
this.gramaje = null;
if (this.validatePapelInterior()) {
const hasError = this.errores.filter(err => err === window.translations["validation"].papel_interior).length > 0;
if (hasError) {
// remove the item from this.errores
this.errores = this.errores.filter(err => err !== window.translations["validation"].papel_interior);
}
if (this.errores.length == 0) {
document.getElementById('sk-alert').innerHTML = '';
}
else {
document.getElementById('sk-alert').innerHTML = document.getElementById('sk-alert').innerHTML.
replace(window.translations["validation"].papel_interior, '');
}
}
}
else {
this.cargando = false;
}
@ -938,9 +986,24 @@ class DisenioInterior {
const element = $(event.target);
const gramaje = element[0].id;
this.presupuestoCliente.calcularSolapas(event);
this.presupuestoCliente.checkLomoInterior(event);
this.presupuestoCliente.checkForm(event);
if (this.validateGramajeInterior()) {
const hasError = this.errores.filter(err => err === window.translations["validation"].gramaje_interior).length > 0;
if (hasError) {
// remove the item from this.errores
this.errores = this.errores.filter(err => err !== window.translations["validation"].gramaje_interior);
}
if (this.errores.length == 0) {
document.getElementById('sk-alert').innerHTML = '';
}
else {
document.getElementById('sk-alert').innerHTML = document.getElementById('sk-alert').innerHTML.
replace(window.translations["validation"].gramaje_interior, '');
}
this.presupuestoCliente.calcularSolapas(event);
this.presupuestoCliente.checkLomoInterior(event);
this.presupuestoCliente.checkForm(event);
};
});

View File

@ -86,6 +86,8 @@ class PresupuestoCliente {
if (this.datosGenerales.excluirRotativa.length == 0) {
this.direcciones.direccionesCliente.setParams({ 'cliente_id': $("#clienteId").val() })
this.direcciones.direccionesClienteFP1.setParams({ 'cliente_id': $("#clienteId").val() })
this.direcciones.direccionesClienteFP2.setParams({ 'cliente_id': $("#clienteId").val() })
}
@ -791,6 +793,19 @@ class PresupuestoCliente {
};
}
}
if( this.direcciones.direccionesFP1.length > 0) {
this.datos.direccionesFP1 = this.direcciones.direccionesFP1.map((direccion) => {
return direccion.getFormData();
});
}
if( this.direcciones.direccionesFP2.length > 0) {
this.datos.direccionesFP2 = this.direcciones.direccionesFP2.map((direccion) => {
return direccion.getFormData();
});
}
if (save) {
this.datos.datosCabecera = {
titulo: this.datosGenerales.titulo.val(),