From cb982bd38a1e7d79c1441b7152255722636af1a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Mon, 30 Sep 2024 08:38:22 +0200 Subject: [PATCH] =?UTF-8?q?a=C3=B1adidos=20los=20ficheros?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cliente/items/_datosGenerales.php | 140 +++ .../cliente/old/_datosLibroItems.php | 94 ++ .../cliente/old/_direccionesItems.php | 48 + .../cliente/old/_disenioLibroItems.php | 665 ++++++++++++++ .../cliente/old/_resumenItems.php | 316 +++++++ .../cliente/old/_tipoLibroItems.php | 122 +++ .../presupuestos/cliente/old/direcciones.js | 387 +++++++++ .../presupuestos/cliente/old/disenioLibro.js | 789 +++++++++++++++++ .../cliente/old/presupuestoCliente.js | 356 ++++++++ .../form/presupuestos/cliente/old/previews.js | 819 ++++++++++++++++++ .../form/presupuestos/cliente/old/resumen.js | 311 +++++++ .../cliente/old/tipoLibroItems.js | 58 ++ .../old/viewPresupuestoclienteForm.php | 332 +++++++ .../assets/img/presupuestoCliente/cosido.png | Bin 0 -> 11108 bytes .../assets/img/presupuestoCliente/espiral.png | Bin 0 -> 32862 bytes .../assets/img/presupuestoCliente/fresado.png | Bin 0 -> 15032 bytes .../assets/img/presupuestoCliente/grapado.png | Bin 0 -> 9124 bytes .../assets/js/safekat/components/select2.js | 64 ++ .../presupuestoCliente/datosGenerales.js | 104 +++ .../presupuestoCliente/presupuestoCliente.js | 9 + .../themes/vuexy/css/presupuestoCliente.css | 39 + 21 files changed, 4653 insertions(+) create mode 100644 ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php create mode 100644 ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_datosLibroItems.php create mode 100644 ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_direccionesItems.php create mode 100644 ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_disenioLibroItems.php create mode 100644 ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_resumenItems.php create mode 100644 ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_tipoLibroItems.php create mode 100644 ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/direcciones.js create mode 100644 ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/disenioLibro.js create mode 100644 ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/presupuestoCliente.js create mode 100644 ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/previews.js create mode 100644 ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/resumen.js create mode 100644 ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/tipoLibroItems.js create mode 100644 ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/viewPresupuestoclienteForm.php create mode 100644 httpdocs/assets/img/presupuestoCliente/cosido.png create mode 100644 httpdocs/assets/img/presupuestoCliente/espiral.png create mode 100644 httpdocs/assets/img/presupuestoCliente/fresado.png create mode 100644 httpdocs/assets/img/presupuestoCliente/grapado.png create mode 100644 httpdocs/assets/js/safekat/components/select2.js create mode 100644 httpdocs/assets/js/safekat/pages/presupuestoCliente/datosGenerales.js create mode 100644 httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js create mode 100644 httpdocs/themes/vuexy/css/presupuestoCliente.css diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php new file mode 100644 index 00000000..30a1e54b --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php @@ -0,0 +1,140 @@ +
+ + +
+ + +
+ + +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+ +
+ + +
+ + + +
+
+ + +
+
+ +
+ + +
+ +
+ + + +
+ Siempre deben ser pares +
+ +
+ +
+ + + +
+ Siempre deben ser pares +
+ +
+ +
+ + + +
+
+ + +
+ +
+ " alt="Fresado"> +
+ Fresado (a partir de 32 páginas) +
+
+
+ " alt="Grapado"> +
+ Grapado (entre 12 y 40 páginas) +
+
+
+ " alt="Espiral"> +
+ Espiral +
+
+
+ " alt="Cosido"> +
+ Cosido (a partir de 32 páginas) +
+
+
+ +
diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_datosLibroItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_datosLibroItems.php new file mode 100644 index 00000000..d0d58e27 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_datosLibroItems.php @@ -0,0 +1,94 @@ +
+ + + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+ + +
+ +
+ +
+ + diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_direccionesItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_direccionesItems.php new file mode 100644 index 00000000..eb4fe1d7 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_direccionesItems.php @@ -0,0 +1,48 @@ +
+ +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+
+
+
+ + +
+
+
+ +
+ +
+
+ +section("additionalInlineJs") ?> + +window.direcciones = direcciones_envio) ?>; +window.direcciones_sel_tirada = selected_tirada) ?>; +window.routes_direcciones = { + direcciones: "", + getDatos: "", + nuevaDireccion: "", +} +endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_disenioLibroItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_disenioLibroItems.php new file mode 100644 index 00000000..0516df66 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_disenioLibroItems.php @@ -0,0 +1,665 @@ +
+ + + +
+ +

Fresado

+ +
+
+ + +
+
+ +
+
user()->inGroup('admin') || auth()->user()->inGroup('beta')) ?' style="display:none;"':''?>> + + +
+ + +
+ + +
+
+ +
+ +
+
> + +
+
+
+
> + +
+
+ +
+ +
+
+
Datos presupuesto
+
+
+ +
+ + + +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
papel_formato_personalizado == false ? '' : 'style="display: none"'; ?>> + + + +
+ +
papel_formato_personalizado == true ? '' : 'style="display: none"'; ?>> +
+ + +
+
+ +
papel_formato_personalizado == true ? '' : 'style="display: none"'; ?>> +
+ + +
+
+ +
+
+ papel_formato_personalizado == true ? 'checked' : ''; ?>> + +
+
+ +
+ +
+
+
Interior
+
+
+ + + +
Color del interior
+ +
+ +
+ +
+
+ + color_impresion == 'negro' ? ' checked=""': ''); ?> > +
+ +
+
Blanco y Negro Estándar
+
+
+ + +
+
+ + color_impresion == 'negroHq' ? ' checked=""': ''); ?> > +
+ +
+
Blanco y Negro Premium
+
+
+
+ + +
+ +
+
+ + color_impresion == 'color' ? ' checked=""': ''); ?> > +
+ +
+
Color Estándar
+
+
+ + +
+
+ + color_impresion == 'colorHq' ? ' checked=""': ''); ?> > +
+ +
+
Color Premium
+
+
+
+
+ +
+
+ + +
+
+ +
Papel
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
Opciones extra
+ + + +
+
+
Cubierta
+
+
+ + + +
Papel
+
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ + +
+ +
+ + +
Opciones extra
+ +
+ +
+
+ solapas == true ? 'checked' : ''; ?>> + +
+
+ +
solapas == true ? '' : 'style="display: none;"'; ?>> + + +
+ +
+ +
+ +
+ + +
+ +
+ + + +
+
+
Sobrecubierta
+
+
+ + + +
+
+
+ papel_sobrecubierta) && $presupuestoEntity->papel_sobrecubierta>0) : + echo 'checked'; + endif; ?> + > + +
+
+
+ +
papel_sobrecubierta) && $presupuestoEntity->papel_sobrecubierta>0) : + echo ''; + else: + echo 'style="display: none;"'; + endif; ?> + > Papel
+
+ +
+ + +
+ +
+ + +
+ +
+ +
papel_sobrecubierta) && $presupuestoEntity->papel_sobrecubierta>0) : + echo ''; + else: + echo 'style="display: none;"'; + endif; ?> + > Opciones extra
+ +
papel_sobrecubierta) && $presupuestoEntity->papel_sobrecubierta>0) : + echo ''; + else: + echo 'style="display: none;"'; + endif; ?> + > + +
+ + +
+ +
+ +
papel_sobrecubierta) && $presupuestoEntity->papel_sobrecubierta>0) : + echo ''; + else: + echo 'style="display: none;"'; + endif; ?> + > + +
+ + +
+ +
+ + + +
+
+
Guardas
+
+
+ + + +
+
+ + +
+
+ +
+
+ + +
+
+ + + +
+
+
Servicios Extra
+
+
+ +
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ + +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+
+
+ +
+ + +
+
+
Otras opciones
+
+
+ +
+
+ + +
+ +

Se verificará que el pedido cumpla con los requisitos establecidos en el Artículo 91 de la Ley 37/1992, sobre inserción de publicidad, antes de proceder con su producción, lo que garantiza la aplicación del IVA reducido del 4%.

+
+ +
+
+ + +section("additionalInlineJs") ?> + + +window.datosDisenioLibro = { + papel_interior: papel_interior ? $presupuestoEntity->papel_interior : 'null'; ?>, + gramaje_interior: gramaje_interior ? $presupuestoEntity->gramaje_interior : 'null'; ?>, + papel_cubierta: papel_cubierta ? $presupuestoEntity->papel_cubierta : 'null'; ?>, + gramaje_cubierta: gramaje_cubierta ? $presupuestoEntity->gramaje_cubierta : 'null'; ?>, + papel_sobrecubierta: papel_sobrecubierta ? $presupuestoEntity->papel_sobrecubierta : 'null'; ?>, + gramaje_sobrecubierta: gramaje_sobrecubierta ? $presupuestoEntity->gramaje_sobrecubierta : 'null'; ?>, +} +window.routes_disenio_libro = { + obtenerGramaje: "", + presupuestoCliente: "", +} +endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_resumenItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_resumenItems.php new file mode 100644 index 00000000..f9cf2d07 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_resumenItems.php @@ -0,0 +1,316 @@ +
+
+ estado_id==2): ?> +

PRESUPUESTO ACEPTADO

+ lomo_cubierta ?>> +
+ +

Resumen

+
+
Libro
+

resumen->titulo)?$presupuestoEntity->resumen->titulo:'') ?>

+

Tamaño: resumen->tamanio)?$presupuestoEntity->resumen->tamanio:'') ?>

+

Número de páginas: paginas ?>

+

Tirada: tirada ?>

+

Prototipo: prototipo?'SI':'NO') ?>

+

Ferro: ferro?'SI':'NO') ?>

+ +
Interior
+

Impresion: + resumen->tipo_impresion)?$presupuestoEntity->resumen->tipo_impresion:'') ?> +

+

paginasColor==0?'style="display:none"':'')?>> + Páginas a color: paginasColor?>

+

Papel: + papel_interior_nombre)?$presupuestoEntity->papel_interior_nombre:'') ?> + gramaje_interior)?$presupuestoEntity->gramaje_interior:'') ?>gr/m²

+ +
Cubierta
+

Papel: + papel_cubierta_nombre)?$presupuestoEntity->papel_cubierta_nombre:''); ?> + gramaje_cubierta)?$presupuestoEntity->gramaje_cubierta:''); ?>gr/m²

+

Impresión: paginas_cubierta==2?"1 cara":"2 caras");?>

+ solapas_ancho>0 || $presupuestoEntity->estado_id==1): ?> +

Solapas: solapas_ancho;?>mm

+ + acabado_cubierta_id>0 || $presupuestoEntity->estado_id==1): ?> +

Acabado: + acabadosCubierta) && is_array($datosPresupuesto->acabadosCubierta) && !empty($datosPresupuesto->acabadosCubierta)) : + foreach ($datosPresupuesto->acabadosCubierta as $acabado) : + if ($acabado->id == $presupuestoEntity->acabado_cubierta_id): + echo $acabado->label; + endif; + endforeach; + endif; ?> +

+ + + papel_sobrecubierta || $presupuestoEntity->estado_id==1): ?> +
Sobrecubierta
+

Papel: + papel_sobrecubierta_nombre)?$presupuestoEntity->papel_sobrecubierta_nombre:'') ?> + gramaje_sobrecubierta)?$presupuestoEntity->gramaje_sobrecubierta:'') ?>gr/m²

+ solapas_ancho_sobrecubierta>0 || $presupuestoEntity->estado_id==1): ?> +

Ancho solapas: solapas_ancho_sobrecubierta;?>mm

+ +

Acabado: + acabadosSobrecubierta) && is_array($datosPresupuesto->acabadosSobrecubierta) && !empty($datosPresupuesto->acabadosSobrecubierta)) : + foreach ($datosPresupuesto->acabadosSobrecubierta as $acabado) : + if ($acabado->id == $presupuestoEntity->acabado_sobrecubierta_id): + echo $acabado->label; + endif; + endforeach; + endif; ?> +

+ + + papel_guardas || $presupuestoEntity->estado_id==1): ?> +
Guardas
+

Papel: + papel_guardas_nombre)?$presupuestoEntity->papel_guardas_nombre:''); ?> + 170gr/m²

+

Impresión: + paginas_guardas) || $presupuestoEntity->paginas_guardas==0): + echo "Sin impresion"; + elseif($presupuestoEntity->paginas_guardas==4): + echo "1 cara"; + else: + echo "2 caras"; + endif; ?>

+ + + retractiladol || $presupuestoEntity->retractilado5 || $presupuestoEntity->faja_color || $presupuestoEntity->estado_id==1): ?> +
Extras
+ + retractiladol): ?> +

Retractilado individual

+ retractilado5): ?> +

Retractilado de 5

+ faja_color): ?> +

Imprimir faja a color

+ +
+ +
+ + estado_id==2): + $total = $presupuestoEntity->total_aceptado; + $iva = $presupuestoEntity->iva_reducido?1.04:1.21; + $total *= $iva; + $total_unidad = $presupuestoEntity->total_precio_unidad * $iva;; + echo '

Total: ' . round($total, 2) . '€

'; + echo '
' . round($total_unidad, 4) . '€/ud
' + ?> + +

Total: 100€

+
10.4€/ud
+ +
+
+
+ +
+
+
+
+ estado_id==2): + echo '
'; + echo '

Direcciones de envío

'; + echo '
'; + if(isset($presupuestoEntity->direcciones_envio)): + foreach ($presupuestoEntity->direcciones_envio as $direccion): + echo '
'; + echo '
'; + echo ''; + echo '
'; + echo '
'; + endforeach; + endif; + echo '
'; + echo '
'; + endif; ?> + + estado_id==2): ?> +
+

Ficheros

+
+
+
+ Arrastre aquí los ficheros o haga click +
+
+ +
+
+
+ +
+ +
+ + + + + +section("additionalInlineJs") ?> +window.estado = estado_id ?? 1?>; +window.tirada = selected_tirada ?? 0?>; +window.total = total_aceptado ?? 0?>; +window.total_unidad = total_precio_unidad ?? 0 ?>; +window.routes_resumen = { + guardarPresupuesto: "", + duplicarPresupuesto: "", +} + +estado_id===2): ?> + previewEsquemaCubierta(true); + + const previewTemplate = `
+
+
+ +
+
+
+
+
+
+
+
+
+
+
`; + + Dropzone.autoDiscover = false; + + var dropzoneMulti = new Dropzone('#dropzone-multi', { + url: "", + addRemoveLinks: true, + previewTemplate: previewTemplate, + paramName: "file", + uploadMultiple: true, + parallelUploads: 4, // Ajusta este número al máximo número de archivos que esperas subir a la vez + maxFiles: 5, // Ajusta este número al máximo número de archivos que esperas subir a la vez + autoProcessQueue: true, + dictRemoveFile: "Eliminar", + acceptedFiles: 'image/*, application/pdf', + maxFilesize: 5e+7, // Bytes + init: function() { + thisDropzone = this; + $('#loader').show(); + + $.ajax({ + url: "", + type: 'POST', + data: { presupuesto_id: id ?> }, + + }).done(function(response) { + if(response == null || response == ""){ + return; + } + values = JSON.parse(response); + for(var i = 0; i < values.length; i++){ + var mockFile = { name: values[i].name, size: values[i].size, hash: values[i].hash}; + + thisDropzone.files.push(mockFile); // add to files array + thisDropzone.emit("addedfile", mockFile); + thisDropzone.emit("thumbnail", mockFile, window.location.host + "/sistema/intranet/presupuestos/"+values[i].hash); + thisDropzone.emit("complete", mockFile); + thisDropzone.options.success.call(thisDropzone, mockFile); + }; + }).always(function() { + $('#loader').hide(); + }); + + this.on("addedfile", function (file) { + if(file.hash){ + var viewButton = Dropzone.createElement("Ver"); + file.previewElement.appendChild(viewButton); + // Listen to the view button click event + viewButton.addEventListener("click", function (e) { + + window.open(window.location.protocol + "//" + window.location.host + "/sistema/intranet/presupuestos/"+file.hash, '_blank'); + }); + } + }); + } + }); + + $('#presupuesto-cliente-form').submit(function(e){ + e.preventDefault(); + var files = dropzoneMulti.files; + $('#loader').show(); + + var formData = new FormData(); + var oldFiles = []; + var counter = 0; + for (var i = 0; i < files.length; i++) { + + if(files[i].upload){ + var file = files[i]; + formData.append('file[' + counter + ']', file); + counter += 1; + } + else{ + oldFiles.push(files[i].name); + } + } + formData.append('oldFiles', JSON.stringify(oldFiles)); + + formData.append('presupuesto_id', id ?>); + + $.ajax({ + url: "", + type: 'POST', + data: formData, + processData: false, // Indicar a jQuery que no procese los datos + contentType: false // Indicar a jQuery que no establezca el tipo de contenido + }).done(function(response) { + // Aquí puedes manejar la respuesta del servidor + }).always(function() { + $('#loader').hide(); + }) + + return false; + }); + +endSection() ?> diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_tipoLibroItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_tipoLibroItems.php new file mode 100644 index 00000000..54cf1280 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/_tipoLibroItems.php @@ -0,0 +1,122 @@ +
+
+ + lomo_cubierta ?>> + +
+ +
+
+
+ > + + tipo_libro == 'cosido' || $datosPresupuesto->tipo_libro == ''){ + echo 'checked=""'; + } + ?> + > +
+

Rústica cosido

+
+
+ +
+
+
> + + tipo_libro)=='fresado'? 'checked=""':''); ?> > +
+

Rústica fresado

+
+
+ +
+
+
> + + tipo_libro)=='grapado'? 'checked=""':''); ?> > +
+

Cosido con grapas

+
+
+
+ +
+
+
+
> + + tipo_libro)=='espiral'? 'checked=""':''); ?> > +
+

Espiral

+
+
+ +
+
+
> + + tipo_libro)=='wireo'? 'checked=""':''); ?> > +
+

Wire-o

+
+
+ +
+
+
\ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/direcciones.js b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/direcciones.js new file mode 100644 index 00000000..5a264add --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/direcciones.js @@ -0,0 +1,387 @@ +function initDirecciones() { + data = { + id: $('#clienteId').val() + }, + data = Object.assign(data, window.token_ajax); + $('#errorDirecciones').hide(); + + $.ajax({ + url: window.routes_direcciones.direcciones, + type: 'POST', + data: data, + success: function(response) { + $("#direcciones").empty(); + $.each(response.menu, function(index, value) { + $("#direcciones").append(''); + }); + $("#direcciones").val(''); + }, + error: function() { + $("#direcciones").empty(); + }, + }); +} + +function initTiradasDirecciones() { + const _this = this + let sel_index = 1; + + $('#containerTiradasEnvios').empty(); + + for (i = 1; i <= 4; i++) { + let id = "tiradaPrecio" + i; + if ($('#' + id).length > 0) { + + let tirada_id = "ud_tiradaPrecio" + i; + let total_id = "tot_tiradaPrecio" + i; + let precio_u_id = "pu_tiradaPrecio" + i; + let peso = $('#' + id).attr('peso'); + + let html = ''; + html += '
'; + html += '
'; + html += ''; + html += '
'; + html += '
'; + + $('#containerTiradasEnvios').append(html); + + if(parseInt($('#' + tirada_id).text().split(' ')[0]) == window.direcciones_sel_tirada){ + sel_index = i; + } + + $('#' + id).hide(); + } + } + $(('#env_tiradaPrecio' + sel_index)).trigger('click'); + + cargarDirecciones(); + + const tiradasDireccionesList = [].slice.call(document.querySelectorAll('.custom-option-tiradasDirecciones .form-check-input')) + tiradasDireccionesList.map(function (customOptionEL) { + // Update custom options check on page load + _this.updateTiradasDireccionesCheck(customOptionEL) + + // Update custom options check on click + customOptionEL.addEventListener('click', e => { + _this.updateTiradasDireccionesCheck(customOptionEL) + }) + }) +} + +function cargarDirecciones(){ + $('#loader').show(); + $('#divDirecciones').empty(); + + if(window.direcciones == null){ + $('#loader').hide(); + return; + } + for(let i=0; i'; + html += '
'; + html += ''; + html += '
'; + html += ''; + + $('#divDirecciones').append(html); + $('#errorDirecciones').hide(); + $('#loader').hide(); + } +} + +function updateTiradasDireccionesCheck(el) { + if (el.checked) { + // If custom option element is radio, remove checked from the siblings (closest `.row`) + if (el.type === 'radio') { + const customRadioOptionList = [].slice.call(el.closest('.row').querySelectorAll('.custom-option-tiradasDirecciones')) + customRadioOptionList.map(function (customRadioOptionEL) { + customRadioOptionEL.closest('.custom-option-tiradasDirecciones').classList.remove('checked') + let id_temp = customRadioOptionEL.id.split('-')[1]; + $('#' + id_temp).prop('checked', false); + }) + } + const element = el.closest('.custom-option-tiradasDirecciones'); + element.classList.add('checked'); + + let id = element.id.split('-')[1]; + $('#' + id).prop('checked', true); + + } else { + el.closest('.custom-option-tiradasDirecciones').classList.remove('checked') + } +} + + +function obtenerUnidadesEnvio(){ + + const elements = $('#divDirecciones').find('.row.mb-3'); + let total = 0; + + if(elements.length > 0) { + for (let index=0; index 0 ) { + + let unidades = $('#unidadesEnvio').val(); + if(unidades == '' || isNaN(unidades) || parseInt(unidades) <= 0){ + return false; + } + unidades = parseInt(unidades); + + const seleccion = $('.custom-option-tiradasDirecciones.checked'); + if(seleccion.length == 0) { + return false; + } + + const element_tirada =($(seleccion[0]).find('label input')[0]); + const number = element_tirada.id.match(/\d+$/); + if (number.length == 0) { + return false; + } + let tirada = parseInt($('#tiradaDireccionesValue' + number[0]).text()); + + let total = obtenerUnidadesEnvio(); + + if($('#prototipo').is(':checked')) { + tirada += 1; + } + + if(total + unidades <= tirada) { + + data = { + id: $('#direcciones').val(), + peso: $('#env_tiradaPrecio' + number[0]).attr('peso'), + unidades: unidades, + entregaPieCalle: $('#entregaPieCalle').is(':checked')?1:0, + }, + data = Object.assign(data, window.token_ajax) + + $('#loader').show(); + + $.ajax({ + url: window.routes_direcciones.getDatos, + type: 'POST', + data: data, + success: function(response) { + if(response.data.length > 0) { + let html = ''; + html += '
'; + html += '
'; + html += ''; + html += '
'; + html += '
'; + + $('#divDirecciones').append(html); + $('#errorDirecciones').hide(); + $('#loader').hide(); + } + }, + error: function() { + $("#direcciones").empty(); + $('#loader').hide(); + }, + }); + } + else{ + $('#errorDirecciones').text('El número de unidades supera la tirada seleccionada.'); + $('#errorDirecciones').show(); + } + } + return false; +}) + + + +$(document).on('click', '.eliminar-direccion', function(e) { + + $(this).closest('.row.mb-3').remove(); + + const seleccion = $('.custom-option-tiradasDirecciones.checked'); + if(seleccion.length == 0) { + return false; + } + + const element_tirada =($(seleccion[0]).find('label input')[0]); + const number = element_tirada.id.match(/\d+$/); + if (number.length == 0) { + return false; + } + + let tirada = parseInt($('#tiradaDireccionesValue' + number[0]).text()); + + const elements = $('#divDirecciones').find('.row.mb-3'); + + let total = 0; + if(elements.length > 0) { + for (let index=0; index' + value.text + ''); + }); + $("#direcciones").val(''); + $('#addressForm').modal('hide'); + }, + error: function() { + $('#addressForm').modal('hide'); + }, + }); + + } +} + +function validarEnvio(){ + + const seleccion = $('.custom-option-tiradasDirecciones.checked'); + if(seleccion.length == 0) { + return false; + } + + const element_tirada =($(seleccion[0]).find('label input')[0]); + + const number = element_tirada.id.match(/\d+$/); + if (number.length == 0) { + return false; + } + let tirada = parseInt($('#tiradaDireccionesValue' + number[0]).text()); + + let total = obtenerUnidadesEnvio(); + + if($('#prototipo').is(':checked')) { + tirada += 1; + } + + if(total != tirada){ + return false; + } + return true; +} + +function getDireccionesEnvio(){ + + const elements = $('#divDirecciones').find('.row.mb-3'); + + let direcciones = []; + + if(elements.length > 0) { + for (let index=0; index { + _this.updateTapaCheck(customOptionEL) + }) + }) +} + +function updateTapaCheck(el) { + if (el.checked) { + // If custom option element is radio, remove checked from the siblings (closest `.row`) + if (el.type === 'radio') { + const customRadioOptionList = [].slice.call(el.closest('.row').querySelectorAll('.custom-option-tapa')) + customRadioOptionList.map(function (customRadioOptionEL) { + customRadioOptionEL.closest('.custom-option-tapa').classList.remove('checked') + }) + } + el.closest('.custom-option-tapa').classList.add('checked') + if (el.closest('.custom-option-tapa').id == 'tapaBlandaInnerDiv') { + $('#tapaBlanda').prop('checked', true); + $('#tapaDura').prop('checked', false); + } + else { + $('#tapaBlanda').prop('checked', false); + $('#tapaDura').prop('checked', true); + } + } else { + el.closest('.custom-option-tapa').classList.remove('checked') + } +} + + +function initColorCheck() { + const _this = this + + const custopOptionList = [].slice.call(document.querySelectorAll('.custom-option-color .form-check-input')) + custopOptionList.map(function (customOptionEL) { + // Update custom options check on page load + _this.updateColorCheck(customOptionEL) + + // Update custom options check on click + customOptionEL.addEventListener('click', e => { + _this.updateColorCheck(customOptionEL) + }) + }) +} + +function updateColorCheck(el) { + if (el.checked) { + // If custom option element is radio, remove checked from the siblings (closest `.row`) + if (el.type === 'radio') { + const customRadioOptionList = [].slice.call(el.closest('.row-color').querySelectorAll('.custom-option-color')) + customRadioOptionList.map(function (customRadioOptionEL) { + customRadioOptionEL.closest('.custom-option-color').classList.remove('checked') + }) + } + el.closest('.custom-option-color').classList.add('checked') + if (el.closest('.custom-option-color').id == 'colorNegroDiv') { + $('#colorNegro').prop('checked', true); + $('#colorNegroHq').prop('checked', false); + $('#colorColor').prop('checked', false); + $('#colorColorHq').prop('checked', false); + } + else if (el.closest('.custom-option-color').id == 'colorNegroHqDiv') { + $('#colorNegro').prop('checked', false); + $('#colorNegroHq').prop('checked', true); + $('#colorColor').prop('checked', false); + $('#colorColorHq').prop('checked', false); + } + else if (el.closest('.custom-option-color').id == 'colorColorDiv') { + $('#colorNegro').prop('checked', false); + $('#colorNegroHq').prop('checked', false); + $('#colorColor').prop('checked', true); + $('#colorColorHq').prop('checked', false); + } + else { + $('#colorNegro').prop('checked', false); + $('#colorNegroHq').prop('checked', false); + $('#colorColor').prop('checked', false); + $('#colorColorHq').prop('checked', true); + } + + } else { + el.closest('.custom-option-color').classList.remove('checked') + } +} + + +$('#enableSobrecubierta').on('change', function () { + if ($(this).is(":checked")) { + $('.enable-sobrecubierta').show(); + } else { + $('#gramajeSobrecubierta').val('').trigger('change'); + $('#paperSobrecubierta').val('').trigger('change'); + $('#acabadosSobrecubierta').val('').trigger('change'); + $('#tamanioSolapasSobrecubierta').val(); + $('.enable-sobrecubierta').hide(); + + } +}); + + +function initDisenioLibro() { + initTapaCheck(); + initColorCheck(); + + $('.elementos-libro').trigger('change'); + $('.change-tipo-impresion').trigger('change'); + + $('#papelInterior').trigger('change'); + $('#papelInterior').val(window.datosDisenioLibro.papel_interior); + $('#gramajeInterior').append($(''); + + } +} + + +$('.calcular-presupuesto').on('change', function () { + + // se obtiene el id del elemento que ha disparado el evento + if($(this).hasClass('input-sobrecubierta')){ + if($('#papelSobrecubierta option:selected').val() == '' || $('#gramajeSobrecubierta option:selected').val() == ''){ + return; + } + } + calcularPresupuesto(); +}); + +function comprobarTiradasPOD(){ + const tiradas = getTiradas(); + + //Comprobar que todos los elementos del array tiradas estan por encima de 30 o por debajo + const tiradasPOD = tiradas.every(tirada => tirada <= 30); + const tiradasNoPOD = tiradas.every(tirada => tirada > 30); + if (tiradasPOD == !tiradasNoPOD) { + return true; + } + return false; +} + +$('#clienteId').on('select2:change', function () { + calcularPresupuesto(); +}); + + +async function calcularPresupuesto() { + + let isColor = false; + if($('#colorColorDiv').hasClass('checked') || $('#colorColorHqDiv').hasClass('checked')) + isColor = true; + let isHq = false; + if($('#colorNegroHqDiv').hasClass('checked') || $('#colorColorHqDiv').hasClass('checked')) + isHq = true; + + if(!comprobarTiradasPOD()){ + $('#errorTiradas').show(); + return; + } + $('#errorTiradas').hide(); + + // se obtiene la propiedad serv_id de los checkboxes seleccionados de la clase .servicio-extra + if (!checkValues()) { + return; + } + + let servicios = []; + $('.servicio-extra:checked').each(function () { + servicios.push($(this).attr('serv_id')); + }) + + let datos = { + tamanio: getDimensionLibro(), + tirada: getTiradas(), + paginas: $('#paginas').val(), + paginasColor: $('#paginasColor').val(), + tipo: $('.custom-option-tipo.checked').attr('id').replace('Div', ''), + tapa: $('#tapaDura').is(':checked') ? 'dura' : 'blanda', + isColor: isColor ? 1 : 0, + isHq: isHq ? 1 : 0, + papelInterior: $('#papelInterior option:selected').val(), + papelInteriorNombre: $('#papelInterior option:selected').text().trim(), + gramajeInterior: $('#gramajeInterior option:selected').text(), + excluirRotativa: $('#excluirRotativa').is(':checked')? 1 : 0, + papelCubierta: $('#papelCubierta option:selected').val(), + papelCubiertaNombre: $('#papelCubierta option:selected').text().trim(), + gramajeCubierta: $('#gramajeCubierta option:selected').text(), + carasCubierta: $('#carasCubierta').val(), + acabadoCubierta: $('#acabadosCubierta').val(), + clienteId: $('#clienteId').val(), + servicios: servicios, + } + + // Si es cosido, se añade el número de páginas del cuadernillo + if ($('#cosidoDiv').hasClass('checked')) { + datos.paginasCuadernillo = $('#paginasCuadernillo').val(); + } + // Si hay solapas de cubierta + if ($('#solapasCubierta').is(':checked')) { + datos.solapasCubierta = $('#anchoSolapasCubierta').val() + } + + + + // Si hay sobrecubierta + if ($('#enableSobrecubierta').is(':checked')) { + if($('#papelSobrecubierta option:selected').val()>0 && $('#gramajeSobrecubierta option:selected').val()>0){ + + datos.sobrecubierta = { + papel: $('#papelSobrecubierta option:selected').val(), + papel_nombre: $('#papelSobrecubierta option:selected').text().trim(), + gramaje: $('#gramajeSobrecubierta option:selected').text(), + acabado: $('#acabadosSobrecubierta').val() + } + + datos.sobrecubierta.solapas = $('#anchoSolapasSobrecubierta').val() + } + } + + if ($('#divGuardas').is(':visible')) { + datos.guardas = { + papel: $('#papelGuardas option:selected').val(), + papel_nombre: $('#papelGuardas option:selected').text().trim(), + gramaje: 170, + caras: $('#impresionGuardas option:selected').val() + } + } + + datos = Object.assign(datos, window.token_ajax) + + $('#divTiradasPrecio').empty(); + $('#loader').show(); + + $.ajax({ + url: window.routes_disenio_libro.presupuestoCliente, + type: 'POST', + data: datos, + success: function (response) { + error = false; + $('#errorGeneral').hide(); + try{ + + + if(response.errors.interior.length > 0){ + $('#errorInterior').show(); + error = true; + } + else + $('#errorInterior').hide(); + if(response.errors.cubierta.length > 0){ + $('#errorCubierta').show(); + error = true; + } + else + $('#errorCubierta').hide(); + + if(response.errors.sobrecubierta.length > 0){ + $('#errorSobrecubierta').show(); + error = true; + } + else + $('#errorSobrecubierta').hide(); + + + if(response.errors.guardas.length > 0){ + $('#errorGuardas').show(); + error = true; + } + else + $('#errorGuardas').hide(); + + if(response.errors.servicios.length > 0 || response.errors.serviciosDefecto.length > 0){ + error = true; + $('#errorGeneral').show(); + } + else{ + $('#errorGeneral').hide(); + } + } + catch(error){ + } + + //For debug only + //console.log(response); + + $('#loader').hide(); + + $('#divTiradasPrecio').empty(); + + if(!error){ + + $('#lomo_cubierta').val(response.info.lomo_cubierta); + + $('#precios').show(); + + if(response.tiradas){ + for (i = 0; i < response.tiradas.length; i++) { + const total = (parseFloat(response.precio_u[i]) * parseInt(response.tiradas[i])).toFixed(2) ; + const label = "tiradaPrecio" + parseInt(i+1); + + let html = ''; + + html += ''; + + $('#divTiradasPrecio').append(html); + } + } + + if($('#resumen-libro').hasClass('active')) { + initDirecciones(); + initTiradasDirecciones(); + generarResumen(); + previewEsquemaCubierta(true); + } + + } + }, + error: function (error) { + $('#loader').hide(); + $('#divTiradasPrecio').empty(); + } + }); +} \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/presupuestoCliente.js b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/presupuestoCliente.js new file mode 100644 index 00000000..6c79f0ee --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/presupuestoCliente.js @@ -0,0 +1,356 @@ +/** + * Cliente presupuesto Wizard + */ + +'use strict'; + +(function () { + + + // Init custom option check + //window.Helpers.initCustomOptionCheck(); + // Vertical Wizard + // -------------------------------------------------------------------- + + const clientePresupuestoWizard = document.querySelector('#wizard-presupuesto-cliente'); + if (typeof clientePresupuestoWizard !== undefined && clientePresupuestoWizard !== null ) { + // Wizard form + const clientePresupuestoWizardForm = clientePresupuestoWizard.querySelector('#presupuesto-cliente-form'); + // Wizard steps + const clientePresupuestoWizardFormStep2 = clientePresupuestoWizardForm.querySelector('#tipo-libro'); + const clientePresupuestoWizardFormStep3 = clientePresupuestoWizardForm.querySelector('#disenio-libro'); + const clientePresupuestoWizardFormStep4 = clientePresupuestoWizardForm.querySelector('#direcciones-libro'); + const clientePresupuestoWizardFormStep5 = clientePresupuestoWizardForm.querySelector('#resumen-libro'); + // Wizard next prev button + const clientePresupuestoWizardNext = [].slice.call(clientePresupuestoWizardForm.querySelectorAll('.btn-next')); + const clientePresupuestoWizardPrev = [].slice.call(clientePresupuestoWizardForm.querySelectorAll('.btn-prev')); + + let FormValidation2; + let FormValidation3; + let FormValidation4; + let FormValidation5; + + let validationStepper = new Stepper(clientePresupuestoWizard, { + linear: true + }); + + if(clientePresupuestoWizardFormStep2 != null) { + // select2 (clienteId) + const clienteId = $('#clienteId'); + + clienteId.on('change.select2', function () { + // Revalidate the clienteId field when an option is chosen + FormValidation2.revalidateField('clienteId'); + }); + + // Deal Details + FormValidation2 = FormValidation.formValidation(clientePresupuestoWizardFormStep2, { + fields: { + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap5: new FormValidation.plugins.Bootstrap5({ + // Use this for enabling/changing valid/invalid class + // eleInvalidClass: '', + eleValidClass: '', + rowSelector: '.col-sm-3' + }), + autoFocus: new FormValidation.plugins.AutoFocus(), + submitButton: new FormValidation.plugins.SubmitButton() + } + }).on('core.form.valid', function () { + // Jump to the next step when all fields in the current step are valid + validationStepper.next(); + }); + + + // Deal Usage + FormValidation3 = FormValidation.formValidation(clientePresupuestoWizardFormStep3, { + fields: { + titulo: { + validators: { + notEmpty: { + message: window.Presupuestos.validation.requerido_short + }, + } + }, + clienteId: { + validators: { + callback: { + message: window.Presupuestos.validation.cliente, + callback: function (input) { + // Get the selected options + const options = $("#clienteId").select2('data'); + const hasValidOption = options.some(option => parseInt(option.id) > 0); + return options !== null && options.length > 0 && hasValidOption; + }, + } + } + }, + tirada: { + validators: { + callback: { + message: window.Presupuestos.validation.integer_greatherThan_0, + callback: function (input) { + const value = $("#tirada").val(); + return value.length > 0 && Number.isInteger(parseInt(value)) && parseInt(value) > 0; + }, + } + } + }, + paginas: { + validators: { + callback: { + message: window.Presupuestos.validation.integer_greatherThan_0, + callback: function (input) { + const value = $("#paginas").val(); + return value.length > 0 && Number.isInteger(parseInt(value)) && parseInt(value) > 0; + }, + } + } + }, + paginasColor: { + validators: { + callback: { + message: window.Presupuestos.validation.integer_greatherThan_0, + callback: function (input) { + if ($('#pagColorDiv').is(':hidden')) + return true; + else { + const value = $("#paginasColor").val(); + return value.length > 0 && Number.isInteger(parseInt(value)) && parseInt(value) > 0; + } + }, + } + } + }, + gramajeInterior: { + validators: { + callback: { + callback: function (input) { + const value = $("#tirada").val(); + if ($('#gramajeInterior option:selected').text().length == 0) { + if(value.length > 0 && Number.isInteger(parseInt(value)) && parseInt(value) > 0){ + return { + valid: false, + message: window.Presupuestos.validation.sin_gramaje, + } + } + return { + valid: value.length > 0 && Number.isInteger(parseInt(value)) && parseInt(value) > 0, + message: window.Presupuestos.validation.tirada_no_valida, + } + } + return true; + }, + }, + } + }, + gramajeCubierta: { + validators: { + callback: { + message: window.Presupuestos.validation.tirada_no_valida, + callback: function (input) { + const value = $("#tirada").val(); + if ($('#gramajeCubierta option:selected').text().length == 0) { + return value.length > 0 && Number.isInteger(parseInt(value)) && parseInt(value) > 0; + } + return true; + }, + }, + callback: { + message: window.Presupuestos.validation.sin_gramaje, + callback: function (input) { + if ($('#gramajeCubierta option:selected').text().length == 0) { + return false; + } + return true; + }, + } + } + }, + gramajeSobrecubierta: { + validators: { + callback: { + message: window.Presupuestos.validation.tirada_no_valida, + callback: function (input) { + const value = $("#tirada").val(); + if ($('#gramajeSobrecubierta option:selected').text().length == 0) { + return value.length > 0 && Number.isInteger(parseInt(value)) && parseInt(value) > 0; + } + return true; + }, + } + } + }, + }, + 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 'gramajeInterior': + case 'gramajeCubierta': + case 'gramajeSobrecubierta': + return '.col-sm-2'; + + case 'titulo': + return '.col-sm-12'; + + case 'clienteId': + return '.col-sm-6'; + + default: + return '.col-sm-3'; + } + } + }), + autoFocus: new FormValidation.plugins.AutoFocus(), + submitButton: new FormValidation.plugins.SubmitButton() + } + }).on('core.form.valid', function () { + if($('#tiradaPrecio1').length > 0) { + validationStepper.next(); + initDirecciones(); + initTiradasDirecciones(); + } + }); + + const tirada = $('#tirada'); + tirada.on('change', function () { + // Revalidate the clienteId field when an option is chosen + FormValidation2.revalidateField('gramajeInterior'); + FormValidation2.revalidateField('gramajeCubierta'); + FormValidation2.revalidateField('gramajeSobrecubierta'); + }); + + // Direcciones + FormValidation4 = FormValidation.formValidation(clientePresupuestoWizardFormStep4, { + fields: { + + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap5: new FormValidation.plugins.Bootstrap5({ + // Use this for enabling/changing valid/invalid class + // eleInvalidClass: '', + eleValidClass: '', + rowSelector: '.col-md-12' + }), + autoFocus: new FormValidation.plugins.AutoFocus(), + submitButton: new FormValidation.plugins.SubmitButton() + } + }).on('core.form.valid', function () { + if(validarEnvio()){ + generarResumen(); + validationStepper.next(); + } + else{ + let text = "El número de unidades enviadas no coincie con la tirada seleccionada."; + if($('#prototipo').is(':checked')) { + text += "
(Tenga en cuenta que se ha seleccionado la opción de prototipo)"; + } + $('#errorDirecciones').text(text); + $('#errorDirecciones').show(); + } + }); + } + // Deal Usage + FormValidation5 = FormValidation.formValidation(clientePresupuestoWizardFormStep5, { + fields: { + // * Validate the fields here based on your requirements + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap5: new FormValidation.plugins.Bootstrap5({ + // Use this for enabling/changing valid/invalid class + // eleInvalidClass: '', + eleValidClass: '', + rowSelector: '.col-md-12' + }), + autoFocus: new FormValidation.plugins.AutoFocus(), + submitButton: new FormValidation.plugins.SubmitButton() + } + }).on('core.form.valid', function () { + // You can submit the form + // clientePresupuestoWizardForm.submit() + // or send the form data to server via an Ajax request + // To make the demo simple, I just placed an alert + //alert('Submitted..!!'); + }); + + clientePresupuestoWizardNext.forEach(item => { + item.addEventListener('click', event => { + // When click the Next button, we will validate the current step + switch (validationStepper._currentIndex) { + case 0: + FormValidation2.validate(); + break; + + case 1: + FormValidation3.validate(); + break; + + case 2: + FormValidation4.validate(); + break; + + case 3: + FormValidation5.validate(); + break; + + default: + validationStepper.next(); + break; + } + }); + }); + + clientePresupuestoWizardPrev.forEach(item => { + item.addEventListener('click', event => { + switch (validationStepper._currentIndex) { + case 4: + validationStepper.previous(); + break; + + case 3: + validationStepper.previous(); + break; + + case 2: + for (let i = 0; i < 4; i++) { + let id = "tiradaPrecio" + i; + if ($('#' + id).length > 0) { + $('#' + id).show(); + } + } + validationStepper.previous(); + break; + + case 1: + validationStepper.previous(); + break; + + case 0: + window.location.href = document.location.origin + '/presupuestocliente/list'; + + default: + break; + } + }); + }); + + var url = $(location).attr('href'); // Obtener URL actual + if (url.includes('/edit/')) { // Comprobar si la URL contiene 'edit' + validationStepper.to(4); + } + + } +})(); + + diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/previews.js b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/previews.js new file mode 100644 index 00000000..ca350aa3 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/previews.js @@ -0,0 +1,819 @@ +// Global parameters +var pvObj; + +$('#toReview').on("click", function () { + previewEsquemaCubierta(true); +}); + +$(document).on('shown.bs.modal', function (e) { + previewEsquemaCubierta(false); +}) + + +function previewEsquemaCubierta(isThumbnail = false) { + + if($('#cosidoDiv').length){ + + if ($('#cosidoDiv').hasClass('checked') || $("#fresadoDiv").hasClass('checked')) { + //console.log("Cosido/Fresado"); + if ($("#tapaBlanda").is(":checked")) { + portadaTapaBlanda(isThumbnail); + } else if ($("#tapaDura").is(":checked")) { + portadaTapaDura(isThumbnail); + } + } else if ($('#espiralDiv').hasClass('checked') || $('#wireoDiv').hasClass('checked')) { + //console.log("Espiral/Wireo"); + if ($("#tapaBlanda").is(":checked")) { + portadaEspiral(isThumbnail, false); + } else if ($("#tapaDura").is(":checked")) { + portadaEspiral(isThumbnail, true); + } + } else if ($('#grapadoDiv').hasClass('checked')) { + portadaGrapado(isThumbnail); + } + } + else{ + let titulo = $('#tipoLibro').text().toLowerCase(); + if(titulo.includes("cosido") || titulo.includes("fresado")){ + if(titulo.includes("dura")) + portadaTapaDura(isThumbnail); + else{ + portadaTapaBlanda(isThumbnail); + } + } + else if (titulo.includes("espiral") || titulo.includes("wire-o")){ + if(titulo.includes("dura")) + portadaEspiral(isThumbnail, true); + else + portadaEspiral(isThumbnail, false); + } + else if (titulo.includes("grapado")){ + portadaGrapado(isThumbnail); + } + } + + +} + +function portadaTapaDura(isThumbnail = false) { + + // Variables locales + let altoLibro, anchoLibro, lomoLibro, anchoCubierta, altoSangrado, anchoSangrado; + let styleCotas = {size: 12, family: 'Public Sans'}; + let sangradoTexto = "Sangrado 20 mm"; + let sangradoValor = parseFloat(20); // mm + let anchoPliegue = parseFloat(7); // mm + let altoPliegue = parseFloat(7); // mm + let anchoCarton = parseFloat(7); // mm + + let divIdName = (isThumbnail) ? 'thumbnail_ec_shape' : 'pv_ec_shape'; + + // Get the preview Object parameters + getObjetoToPreview(); + + // Definicion de los parametros del Esquema de Cubierta (EC) + if (isThumbnail) { + anchoSangrado = 350; // px + altoSangrado = (anchoSangrado * 0.647 > 300) ? 300 : anchoSangrado * 0.647; // px + } else { + anchoSangrado = 800; // px + altoSangrado = (anchoSangrado * 0.647 > 650) ? 650 : anchoSangrado * 0.647; // px + } + altoLibro = altoSangrado * 0.88; + anchoLibro = anchoSangrado * 0.39; + lomoLibro = anchoSangrado * 0.133; + anchoCubierta = (2 * anchoLibro) + lomoLibro; + + // Clear the canvas element + $(`#${divIdName}`).empty(); + // Get the element for placing the graphical elements + var divEC = document.getElementById(divIdName); + var previewEC = new Two({fitted: true}).appendTo(divEC); + + // Calculate the center of the canvas element + var origenEC = new Two.Vector(previewEC.width / 2, previewEC.height / 2); + + var sangrado = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + anchoSangrado, + altoSangrado + ); + sangrado.stroke = 'black'; + sangrado.dashes = [5, 5]; + sangrado.fill = '#FCEAF1'; + sangrado.linewidth = 1; + + var libro = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + ((2 * anchoLibro) + lomoLibro), + altoLibro); + libro.stroke = 'black'; + libro.linewidth = 1; + + var lomo = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + lomoLibro, + altoLibro); + lomo.stroke = 'black'; + lomo.fill = '#F4F8F2'; + lomo.linewidth = 1; + + // Cotas y textos + if (!isThumbnail) { + // Cotas: + var cotaAnchoCubierta = previewEC.makeDobleArrow( + origenEC.x - (anchoSangrado / 2), + origenEC.y + (altoLibro / 2) + 35, + origenEC.x + (anchoSangrado / 2), + origenEC.y + (altoLibro / 2) + 35, + 10); + cotaAnchoCubierta.linewidth = 2; + var cotaAltoCubierta = previewEC.makeDobleArrow( + origenEC.x + (anchoCubierta / 2) + 40, + origenEC.y + (altoSangrado / 2), + origenEC.x + (anchoCubierta / 2) + 40, + origenEC.y - (altoSangrado / 2), + 10); + cotaAltoCubierta.linewidth = 2; + var cotaAltoLibro = previewEC.makeDobleArrow( + origenEC.x + (lomoLibro / 2) + 35, + origenEC.y + (altoLibro / 2), + origenEC.x + (lomoLibro / 2) + 35, + origenEC.y - (altoLibro / 2), + 10); + cotaAltoLibro.linewidth = 2; + var cotaLomo = previewEC.makeDobleArrow( + origenEC.x - (lomoLibro / 2), + origenEC.y + (altoLibro / 3), + origenEC.x + (lomoLibro / 2), + origenEC.y + (altoLibro / 3), + 10); + cotaLomo.linewidth = 2; + var cotaContraportada = previewEC.makeDobleArrow( + origenEC.x - (lomoLibro / 2 + anchoLibro), + origenEC.y - (altoLibro / 3), + origenEC.x - (lomoLibro / 2), + origenEC.y - (altoLibro / 3), + 10); + cotaContraportada.linewidth = 2; + var cotaPortada = previewEC.makeDobleArrow( + origenEC.x + (lomoLibro / 2), + origenEC.y - (altoLibro / 3), + origenEC.x + (lomoLibro / 2 + anchoLibro), + origenEC.y - (altoLibro / 3), + 10); + cotaPortada.linewidth = 2; + + + // Textos: + // Titulos generales + let stylesEC = {size: 22, weight: 'bold', family: 'Public Sans'}; + previewEC.makeText("Portada", origenEC.x + (lomoLibro + anchoLibro) / 2, origenEC.y, stylesEC); + previewEC.makeText("Contraportada", origenEC.x - (lomoLibro + anchoLibro) / 2, origenEC.y, stylesEC); + previewEC.makeText("Lomo", origenEC.x, origenEC.y, stylesEC).rotation = -Math.PI / 2; + // Sangrados + let styleSangrado = {size: 10, family: 'Public Sans', style: 'italic', fill: 'red'}; + previewEC.makeText(sangradoTexto, origenEC.x, origenEC.y + (altoLibro / 2 + 13), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x, origenEC.y - (altoLibro / 2 + 13), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x + (lomoLibro / 2 + anchoLibro + 13), origenEC.y, styleSangrado).rotation = -Math.PI / 2; + previewEC.makeText(sangradoTexto, origenEC.x - (lomoLibro / 2 + anchoLibro + 13), origenEC.y, styleSangrado).rotation = -Math.PI / 2; + // Cotas + previewEC.makeText(pvObj.lomoLibro + anchoCarton + " mm", origenEC.x, origenEC.y + (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.anchoLibro + anchoPliegue + " mm", origenEC.x - (lomoLibro / 2 + anchoLibro / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.anchoLibro + anchoPliegue + " mm", origenEC.x + (lomoLibro / 2 + anchoLibro / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.altoLibro + altoPliegue + " mm", origenEC.x + (lomoLibro / 2) + 50, origenEC.y, styleCotas).rotation = -Math.PI / 2; + previewEC.makeText(pvObj.altoLibro + (2 * sangradoValor) + altoPliegue + " mm", origenEC.x + (lomoLibro / 2 + anchoLibro) + 55, origenEC.y, styleCotas).rotation = -Math.PI / 2; + previewEC.makeText((2 * pvObj.anchoLibro) + pvObj.lomoLibro + (2 * sangradoValor) + +(2 * anchoPliegue) + anchoCarton + " mm", + origenEC.x, + origenEC.y + (altoLibro / 2) + 50, + styleCotas); + + } + + previewEC.update(); + +} + +function portadaTapaBlanda(isThumbnail = false) { + + // Variables locales + let altoLibro, anchoLibro, lomoLibro, anchoSolapa, anchoCubierta, altoSangrado, anchoSangrado; + let styleCotas = {size: 12, family: 'Public Sans'}; + let sangradoTexto = "Sangrado 5 mm"; + let sangradoValor = parseFloat(5); // mm + let offsetSolapaValor = parseFloat(0); // mm + + let divIdName = (isThumbnail) ? 'thumbnail_ec_shape' : 'pv_ec_shape'; + + // Get the preview Object parameters + getObjetoToPreview(); + + + // Definicion de los parametros del Esquema de Cubierta (EC) + if (pvObj.anchoSolapa == 0) { + if (isThumbnail) { + anchoSangrado = 350; // px + altoSangrado = (anchoSangrado * 0.647 > 300) ? 300 : anchoSangrado * 0.647; // px + } else { + anchoSangrado = 800; // px + altoSangrado = (anchoSangrado * 0.647 > 650) ? 650 : anchoSangrado * 0.647; // px + } + + altoLibro = altoSangrado * 0.97; + anchoLibro = anchoSangrado * 0.419; + anchoSolapa = 0; + lomoLibro = anchoSangrado * 0.133; + anchoCubierta = (2 * anchoLibro) + (2 * anchoSolapa) + lomoLibro; + + } else { + if (isThumbnail) { + anchoSangrado = 350; // px + altoSangrado = (anchoSangrado * 0.647 > 300) ? 300 : anchoSangrado * 0.647; // px + } else { + anchoSangrado = 750; // px + altoSangrado = (anchoSangrado * 0.647 > 650) ? 650 : anchoSangrado * 0.647; // px + } + altoLibro = altoSangrado * 0.95; + anchoLibro = anchoSangrado * 0.28; + anchoSolapa = anchoSangrado * 0.163; + lomoLibro = anchoSangrado * 0.09; + anchoCubierta = (2 * anchoLibro) + (2 * anchoSolapa) + lomoLibro; + offsetSolapaValor = parseFloat('3.0'); // mm + } + + // Clear the canvas element + $(`#${divIdName}`).empty(); + // Get the element for placing the graphical elements + var divEC = document.getElementById(divIdName); + var previewEC = new Two({fitted: true}).appendTo(divEC); + // Calculate the center of the canvas element + var origenEC = new Two.Vector(previewEC.width / 2, previewEC.height / 2); + + var sangrado = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + anchoSangrado, + altoSangrado + ); + sangrado.stroke = 'black'; + sangrado.dashes = [5, 5]; + sangrado.fill = '#FCEAF1'; + sangrado.linewidth = 1; + + if (pvObj.anchoSolapa != 0) { + var solapas = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + anchoCubierta, + altoLibro); + solapas.stroke = 'black'; + solapas.linewidth = 1; + + // Cotas Solapas + if (!isThumbnail) { + var cotaSolapa2 = previewEC.makeDobleArrow( + origenEC.x - anchoCubierta / 2, + origenEC.y - (altoLibro / 3), + origenEC.x - anchoLibro - lomoLibro / 2, + origenEC.y - (altoLibro / 3), + 10); + cotaSolapa2.linewidth = 2; + var cotaSolapa1 = previewEC.makeDobleArrow( + origenEC.x + anchoCubierta / 2, + origenEC.y - (altoLibro / 3), + origenEC.x + anchoLibro + lomoLibro / 2, + origenEC.y - (altoLibro / 3), + 10); + cotaSolapa1.linewidth = 2; + + // Textos Solapas + let stylesSolapa = {size: 18, family: 'Public Sans'}; + previewEC.makeText("Solapa 1", origenEC.x + anchoLibro + (lomoLibro + anchoSolapa) / 2, origenEC.y, stylesSolapa); + previewEC.makeText("Solapa 2", origenEC.x - anchoLibro - (lomoLibro + anchoSolapa) / 2, origenEC.y, stylesSolapa); + // Textos Cotas Solapas + previewEC.makeText(pvObj.anchoSolapa + " mm", origenEC.x - anchoLibro - (lomoLibro + anchoSolapa) / 2, origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.anchoSolapa + " mm", origenEC.x + anchoLibro + (lomoLibro + anchoSolapa) / 2, origenEC.y - (altoLibro / 3) + 15, styleCotas); + } + + } + + var libro = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + ((2 * anchoLibro) + lomoLibro), + altoLibro); + libro.stroke = 'black'; + libro.linewidth = 1; + + var lomo = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + lomoLibro, + altoLibro); + lomo.stroke = 'black'; + lomo.fill = '#F4F8F2'; + lomo.linewidth = 1; + + // Cotas y textos + if (!isThumbnail) { + // Cotas: + var cotaAnchoCubierta = previewEC.makeDobleArrow( + origenEC.x - (anchoSangrado / 2), + origenEC.y + (altoLibro / 2) + 35, + origenEC.x + (anchoSangrado / 2), + origenEC.y + (altoLibro / 2) + 35, + 10); + cotaAnchoCubierta.linewidth = 2; + var cotaAltoCubierta = previewEC.makeDobleArrow( + origenEC.x + (anchoCubierta / 2) + 35, + origenEC.y + (altoSangrado / 2), + origenEC.x + (anchoCubierta / 2) + 35, + origenEC.y - (altoSangrado / 2), + 10); + cotaAltoCubierta.linewidth = 2; + var cotaAltoLibro = previewEC.makeDobleArrow( + origenEC.x + (lomoLibro / 2) + 35, + origenEC.y + (altoLibro / 2), + origenEC.x + (lomoLibro / 2) + 35, + origenEC.y - (altoLibro / 2), + 10); + cotaAltoLibro.linewidth = 2; + var cotaLomo = previewEC.makeDobleArrow( + origenEC.x - (lomoLibro / 2), + origenEC.y + (altoLibro / 3), + origenEC.x + (lomoLibro / 2), + origenEC.y + (altoLibro / 3), + 10); + cotaLomo.linewidth = 2; + var cotaContraportada = previewEC.makeDobleArrow( + origenEC.x - (lomoLibro / 2 + anchoLibro), + origenEC.y - (altoLibro / 3), + origenEC.x - (lomoLibro / 2), + origenEC.y - (altoLibro / 3), + 10); + cotaContraportada.linewidth = 2; + var cotaPortada = previewEC.makeDobleArrow( + origenEC.x + (lomoLibro / 2), + origenEC.y - (altoLibro / 3), + origenEC.x + (lomoLibro / 2 + anchoLibro), + origenEC.y - (altoLibro / 3), + 10); + cotaPortada.linewidth = 2; + + + // Textos: + // Titulos generales + let stylesEC = {size: 22, weight: 'bold', family: 'Public Sans'}; + previewEC.makeText("Portada", origenEC.x + (lomoLibro + anchoLibro) / 2, origenEC.y, stylesEC); + previewEC.makeText("Contraportada", origenEC.x - (lomoLibro + anchoLibro) / 2, origenEC.y, stylesEC); + let a = previewEC.makeText("Lomo", origenEC.x, origenEC.y, stylesEC).rotation = -Math.PI / 2; + // Sangrados + let styleSangrado = {size: 10, family: 'Public Sans', style: 'italic', fill: 'red'}; + previewEC.makeText(sangradoTexto, origenEC.x, origenEC.y + (altoLibro / 2 + 20), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x, origenEC.y - (altoLibro / 2 + 20), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x + (lomoLibro / 2 + anchoLibro + anchoSolapa + 20), origenEC.y, styleSangrado).rotation = -Math.PI / 2; + previewEC.makeText(sangradoTexto, origenEC.x - (lomoLibro / 2 + anchoLibro + anchoSolapa + 20), origenEC.y, styleSangrado).rotation = -Math.PI / 2; + // Cotas + previewEC.makeText(pvObj.lomoLibro + " mm", origenEC.x, origenEC.y + (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.anchoLibro + " mm", origenEC.x - (lomoLibro / 2 + anchoLibro / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.anchoLibro + " mm", origenEC.x + (lomoLibro / 2 + anchoLibro / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.altoLibro + " mm", origenEC.x + (lomoLibro / 2) + 25, origenEC.y, styleCotas).rotation = -Math.PI / 2; + previewEC.makeText(pvObj.altoLibro + (2 * sangradoValor) + " mm", origenEC.x + (lomoLibro / 2 + anchoLibro + anchoSolapa) + 50, origenEC.y, styleCotas).rotation = -Math.PI / 2; + previewEC.makeText((2 * pvObj.anchoLibro) + (2 * (pvObj.anchoSolapa + pvObj.offsetSolapa)) + pvObj.lomoLibro + (2 * sangradoValor) + " mm", + origenEC.x, + origenEC.y + (altoLibro / 2) + 50, + styleCotas); + + } + + previewEC.update(); + +} + +function portadaEspiral(isThumbnail = false, isTapaDura = false) { + + // Variables locales + let altoLibro, anchoLibro, anchoCalle, anchoCubierta, altoSangrado, anchoSangrado, anchoSolapa, offsetCubierta; + let styleCotas = {size: 12, family: 'Public Sans'}; + let sangradoTexto = (isTapaDura) ? "Sangrado 20 mm" : "Sangrado 5 mm"; + let sangradoValor = (isTapaDura) ? parseFloat(20) : parseFloat(5); // mm + + let divIdName = (isThumbnail) ? 'thumbnail_ec_shape' : 'pv_ec_shape'; + + // Get the preview Object parameters + getObjetoToPreview(); + + // Definicion de los parametros del Esquema de Cubierta (EC) + if ((pvObj.anchoSolapa !== 0) && (!isTapaDura)) { + if (isThumbnail) { + anchoSangrado = 350; // px + altoSangrado = (anchoSangrado * 0.647 > 300) ? 300 : anchoSangrado * 0.647; // px + } else { + anchoSangrado = 750; // px + altoSangrado = (anchoSangrado * 0.647 > 650) ? 650 : anchoSangrado * 0.647; // px + } + altoLibro = altoSangrado * 0.95; + anchoLibro = anchoSangrado * 0.28; + anchoCalle = anchoSangrado * 0.02; + anchoSolapa = anchoSangrado * 0.163; + sangrado = anchoSangrado * 0.03; + anchoCubierta = 2 * (anchoLibro + anchoSolapa + sangrado) + anchoCalle; + offsetCubierta = anchoLibro / 2 + anchoCalle / 2 + anchoSolapa / 2 + sangrado; + } else { + if (isThumbnail) { + anchoSangrado = 350; // px + altoSangrado = (anchoSangrado * 0.647 > 300) ? 300 : anchoSangrado * 0.647; // px + } else { + anchoSangrado = 750; // px + altoSangrado = (anchoSangrado * 0.647 > 650) ? 650 : anchoSangrado * 0.647; // px + } + altoLibro = (isTapaDura) ? altoSangrado * 0.88 : altoSangrado * 0.97; + anchoLibro = (isTapaDura) ? anchoSangrado * 0.39 : anchoSangrado * 0.419; + anchoCalle = anchoSangrado * 0.02; + anchoSolapa = 0; + anchoCubierta = (2 * anchoLibro) + (2 * anchoSolapa) + anchoCalle; + offsetCubierta = anchoLibro / 2 + anchoCalle / 2 + anchoSolapa + sangradoValor; + } + + // Clear the canvas element + $(`#${divIdName}`).empty(); + // Get the element for placing the graphical elements + var divEC = document.getElementById(divIdName); + var previewEC = new Two({fitted: true}).appendTo(divEC); + // Calculate the center of the canvas element + var origenEC = new Two.Vector(previewEC.width / 2, previewEC.height / 2); + + var sangrado = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + anchoSangrado, + altoSangrado + ); + sangrado.stroke = 'black'; + sangrado.dashes = [5, 5]; + sangrado.fill = '#FCEAF1'; + sangrado.linewidth = 1; + + if ((pvObj.anchoSolapa != 0) && (!isTapaDura)) { + var solapa1 = previewEC.makeRectangle( + origenEC.x + (anchoLibro + anchoCalle / 2 + anchoSolapa / 2 + sangradoValor), + origenEC.y, + anchoSolapa, + altoLibro); + solapa1.stroke = 'black'; + solapa1.linewidth = 1; + + var solapa2 = previewEC.makeRectangle( + origenEC.x - (anchoLibro + anchoCalle / 2 + anchoSolapa / 2 + sangradoValor), + origenEC.y, + anchoSolapa, + altoLibro); + solapa2.stroke = 'black'; + solapa2.linewidth = 1; + + // Cotas y textos + if (!isThumbnail) { + // Cotas + var cotaSolapa2 = previewEC.makeDobleArrow( + origenEC.x - (anchoCalle / 2 + sangradoValor + anchoLibro + anchoSolapa), + origenEC.y - (altoLibro / 3), + origenEC.x - (anchoLibro + sangradoValor + anchoCalle / 2), + origenEC.y - (altoLibro / 3), + 10); + cotaSolapa2.linewidth = 2; + var cotaSolapa1 = previewEC.makeDobleArrow( + origenEC.x + (anchoCalle / 2 + sangradoValor + anchoLibro + anchoSolapa), + origenEC.y - (altoLibro / 3), + origenEC.x + (anchoLibro + sangradoValor + anchoCalle / 2), + origenEC.y - (altoLibro / 3), + 10); + cotaSolapa1.linewidth = 2; + + // Textos Solapas + let stylesSolapa = {size: 18, family: 'Public Sans'}; + previewEC.makeText("Solapa 1", origenEC.x + anchoLibro + (anchoCalle + anchoSolapa) / 2, origenEC.y, stylesSolapa); + previewEC.makeText("Solapa 2", origenEC.x - anchoLibro - (anchoCalle + anchoSolapa) / 2, origenEC.y, stylesSolapa); + // Textos Cotas Solapas + previewEC.makeText(pvObj.anchoSolapa + " mm", origenEC.x - anchoLibro - (anchoCalle + anchoSolapa) / 2, origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.anchoSolapa + " mm", origenEC.x + anchoLibro + (anchoCalle + anchoSolapa) / 2, origenEC.y - (altoLibro / 3) + 15, styleCotas); + } + + } + + var portada = previewEC.makeRectangle( + origenEC.x + (anchoLibro / 2 + anchoCalle / 2 + sangradoValor), + origenEC.y, + anchoLibro, + altoLibro); + portada.stroke = 'black'; + portada.linewidth = 1; + + var contraportada = previewEC.makeRectangle( + origenEC.x - (anchoLibro / 2 + anchoCalle / 2 + sangradoValor), + origenEC.y, + anchoLibro, + altoLibro); + contraportada.stroke = 'black'; + contraportada.linewidth = 1; + + var calle = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + anchoCalle, + altoSangrado); + calle.stroke = 'black'; + calle.dashes = [2, 5]; + calle.fill = '#F4F8F2'; + calle.linewidth = 1; + + // Cotas y textos + if (!isThumbnail) { + // Cotas: + var cotaAnchoCubierta = previewEC.makeDobleArrow( + origenEC.x - (anchoSangrado / 2), + origenEC.y + (altoLibro / 2) + 35, + origenEC.x + (anchoSangrado / 2), + origenEC.y + (altoLibro / 2) + 35, + 10); + cotaAnchoCubierta.linewidth = 2; + var cotaAltoCubierta = previewEC.makeDobleArrow( + origenEC.x + (anchoSangrado / 2) + 15, + origenEC.y + (altoSangrado / 2), + origenEC.x + (anchoSangrado / 2) + 15, + origenEC.y - (altoSangrado / 2), + 10); + cotaAltoCubierta.linewidth = 2; + var cotaAltoLibro = previewEC.makeDobleArrow( + origenEC.x + (anchoCalle / 2) + 35, + origenEC.y + (altoLibro / 2), + origenEC.x + (anchoCalle / 2) + 35, + origenEC.y - (altoLibro / 2), + 10); + cotaAltoLibro.linewidth = 2; + var cotaContraportada = previewEC.makeDobleArrow( + origenEC.x - (anchoCalle / 2 + anchoLibro + sangradoValor), + origenEC.y - (altoLibro / 3), + origenEC.x - ((anchoCalle / 2) + sangradoValor), + origenEC.y - (altoLibro / 3), + 10); + cotaContraportada.linewidth = 2; + var cotaPortada = previewEC.makeDobleArrow( + origenEC.x + ((anchoCalle / 2) + sangradoValor), + origenEC.y - (altoLibro / 3), + origenEC.x + (anchoCalle / 2 + anchoLibro + sangradoValor), + origenEC.y - (altoLibro / 3), + 10); + cotaPortada.linewidth = 2; + + + // Textos: + // Titulos generales + let stylesEC = {size: 22, weight: 'bold', family: 'Public Sans'}; + previewEC.makeText("Portada", + origenEC.x + anchoLibro / 2 + anchoCalle / 2 + sangradoValor + 15, + origenEC.y, + stylesEC + ); + previewEC.makeText("Contraportada", + origenEC.x - (anchoLibro / 2 + anchoCalle / 2 + sangradoValor), + origenEC.y, + stylesEC + ); + // Sangrados + let styleSangrado = {size: 10, family: 'Public Sans', style: 'italic', fill: 'red'}; + previewEC.makeText(sangradoTexto, origenEC.x + offsetCubierta, origenEC.y + (altoLibro / 2 + 13), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x + offsetCubierta, origenEC.y - (altoLibro / 2 + 13), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x - offsetCubierta, origenEC.y + (altoLibro / 2 + 13), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x - offsetCubierta, origenEC.y - (altoLibro / 2 + 13), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x + (anchoSangrado / 2) - 20, origenEC.y, styleSangrado).rotation = -Math.PI / 2; + previewEC.makeText(sangradoTexto, origenEC.x - (anchoSangrado / 2) + 20, origenEC.y, styleSangrado).rotation = -Math.PI / 2; + // Cotas + previewEC.makeText(pvObj.anchoLibro + " mm", origenEC.x - (offsetCubierta - anchoSolapa / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.anchoLibro + " mm", origenEC.x + (offsetCubierta - anchoSolapa / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.altoLibro + " mm", origenEC.x + (anchoCalle / 2) + 50, origenEC.y, styleCotas).rotation = -Math.PI / 2; + previewEC.makeText(pvObj.altoLibro + (2 * sangradoValor) + " mm", + origenEC.x + (anchoSangrado / 2) + 30, + origenEC.y, + styleCotas + ).rotation = -Math.PI / 2; + previewEC.makeText((2 * pvObj.anchoLibro) + pvObj.lomoLibro + (2 * sangradoValor) + " mm", + origenEC.x, + origenEC.y + (altoLibro / 2) + 50, + styleCotas); + } + + previewEC.update(); + +} + +function portadaGrapado(isThumbnail = false) { + + // Variables locales + let altoLibro, anchoLibro, lomoLibro, anchoSolapa, anchoCubierta, altoSangrado, anchoSangrado; + let styleCotas = {size: 12, family: 'Public Sans'}; + let sangradoTexto = "Sangrado 5 mm"; + let sangradoValor = parseFloat('5.0'); // mm + let offsetSolapaValor = parseFloat('0.0'); // mm + + let divIdName = (isThumbnail) ? 'thumbnail_ec_shape' : 'pv_ec_shape'; + + // Get the preview Object parameters + getObjetoToPreview(); + + // Definicion de los parametros del Esquema de Cubierta (EC) + if (pvObj.anchoSolapa == 0) { + if (isThumbnail) { + anchoSangrado = 350; // px + altoSangrado = (anchoSangrado * 0.647 > 300) ? 300 : anchoSangrado * 0.647; // px + } else { + anchoSangrado = 750; // px + altoSangrado = (anchoSangrado * 0.647 > 650) ? 650 : anchoSangrado * 0.647; // px + } + altoLibro = altoSangrado * 0.97; + anchoLibro = anchoSangrado * 0.48; + anchoSolapa = 0; + lomoLibro = 0; // ESTA ES LA DIFERENCIA PARA GRAPADO + anchoCubierta = (2 * anchoLibro) + (2 * anchoSolapa) + lomoLibro; + + } else { + if (isThumbnail) { + anchoSangrado = 350; // px + altoSangrado = (anchoSangrado * 0.647 > 300) ? 300 : anchoSangrado * 0.647; // px + } else { + anchoSangrado = 750; // px + altoSangrado = (anchoSangrado * 0.647 > 650) ? 650 : anchoSangrado * 0.647; // px + } + altoLibro = altoSangrado * 0.95; + anchoLibro = anchoSangrado * 0.3; + anchoSolapa = anchoSangrado * 0.18; + lomoLibro = 0; // ESTA ES LA DIFERENCIA PARA GRAPADO + anchoCubierta = (2 * anchoLibro) + (2 * anchoSolapa) + lomoLibro; + offsetSolapaValor = parseFloat('3.0'); // mm + } + + // Clear the canvas element + $(`#${divIdName}`).empty(); + // Get the element for placing the graphical elements + var divEC = document.getElementById(divIdName); + var previewEC = new Two({fitted: true}).appendTo(divEC); + // Calculate the center of the canvas element + var origenEC = new Two.Vector(previewEC.width / 2, previewEC.height / 2); + + var sangrado = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + anchoSangrado, + altoSangrado + ); + sangrado.stroke = 'black'; + sangrado.dashes = [5, 5]; + sangrado.fill = '#FCEAF1'; + sangrado.linewidth = 1; + + if (pvObj.anchoSolapa != 0) { + var solapas = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + anchoCubierta, + altoLibro); + solapas.stroke = 'black'; + solapas.linewidth = 1; + + // Cotas y textos + if (!isThumbnail) { + // Cotas + var cotaSolapa2 = previewEC.makeDobleArrow( + origenEC.x - anchoCubierta / 2, + origenEC.y - (altoLibro / 3), + origenEC.x - anchoLibro - lomoLibro / 2, + origenEC.y - (altoLibro / 3), + 10); + cotaSolapa2.linewidth = 2; + var cotaSolapa1 = previewEC.makeDobleArrow( + origenEC.x + anchoCubierta / 2, + origenEC.y - (altoLibro / 3), + origenEC.x + anchoLibro + lomoLibro / 2, + origenEC.y - (altoLibro / 3), + 10); + cotaSolapa1.linewidth = 2; + + // Textos Solapas + let stylesSolapa = {size: 18, family: 'Public Sans'}; + previewEC.makeText("Solapa 1", origenEC.x + anchoLibro + (lomoLibro + anchoSolapa) / 2, origenEC.y, stylesSolapa); + previewEC.makeText("Solapa 2", origenEC.x - anchoLibro - (lomoLibro + anchoSolapa) / 2, origenEC.y, stylesSolapa); + // Textos Cotas Solapas + previewEC.makeText(pvObj.anchoSolapa + " mm", origenEC.x - anchoLibro - (lomoLibro + anchoSolapa) / 2, origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.anchoSolapa + " mm", origenEC.x + anchoLibro + (lomoLibro + anchoSolapa) / 2, origenEC.y - (altoLibro / 3) + 15, styleCotas); + } + + } + + var libro = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + ((2 * anchoLibro) + lomoLibro), + altoLibro); + libro.stroke = 'black'; + libro.linewidth = 1; + + var lomo = previewEC.makeRectangle( + origenEC.x, + origenEC.y, + lomoLibro, + altoLibro); + lomo.stroke = 'black'; + lomo.fill = '#F4F8F2'; + lomo.linewidth = 1; + + // Cotas y textos + if (!isThumbnail) { + // Cotas: + var cotaAnchoCubierta = previewEC.makeDobleArrow( + origenEC.x - (anchoSangrado / 2), + origenEC.y + (altoLibro / 2) + 35, + origenEC.x + (anchoSangrado / 2), + origenEC.y + (altoLibro / 2) + 35, + 10); + cotaAnchoCubierta.linewidth = 2; + var cotaAltoCubierta = previewEC.makeDobleArrow( + origenEC.x + (anchoCubierta / 2) + 35, + origenEC.y + (altoSangrado / 2), + origenEC.x + (anchoCubierta / 2) + 35, + origenEC.y - (altoSangrado / 2), + 10); + cotaAltoCubierta.linewidth = 2; + var cotaAltoLibro = previewEC.makeDobleArrow( + origenEC.x + (lomoLibro / 2) + 35, + origenEC.y + (altoLibro / 2), + origenEC.x + (lomoLibro / 2) + 35, + origenEC.y - (altoLibro / 2), + 10); + cotaAltoLibro.linewidth = 2; + var cotaContraportada = previewEC.makeDobleArrow( + origenEC.x - (lomoLibro / 2 + anchoLibro), + origenEC.y - (altoLibro / 3), + origenEC.x - (lomoLibro / 2), + origenEC.y - (altoLibro / 3), + 10); + cotaContraportada.linewidth = 2; + var cotaPortada = previewEC.makeDobleArrow( + origenEC.x + (lomoLibro / 2), + origenEC.y - (altoLibro / 3), + origenEC.x + (lomoLibro / 2 + anchoLibro), + origenEC.y - (altoLibro / 3), + 10); + cotaPortada.linewidth = 2; + + // Textos: + // Titulos generales + let stylesEC = {size: 22, weight: 'bold', family: 'Public Sans'}; + previewEC.makeText("Portada", origenEC.x + (lomoLibro + anchoLibro) / 2, origenEC.y, stylesEC); + previewEC.makeText("Contraportada", origenEC.x - (lomoLibro + anchoLibro) / 2, origenEC.y, stylesEC); + // Sangrados + let styleSangrado = {size: 10, family: 'Public Sans', style: 'italic', fill: 'red'}; + previewEC.makeText(sangradoTexto, origenEC.x, origenEC.y + (altoLibro / 2 + 20), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x, origenEC.y - (altoLibro / 2 + 20), styleSangrado); + previewEC.makeText(sangradoTexto, origenEC.x + (lomoLibro / 2 + anchoLibro + anchoSolapa + 20), origenEC.y, styleSangrado).rotation = -Math.PI / 2; + previewEC.makeText(sangradoTexto, origenEC.x - (lomoLibro / 2 + anchoLibro + anchoSolapa + 20), origenEC.y, styleSangrado).rotation = -Math.PI / 2; + // Cotas + previewEC.makeText(pvObj.anchoLibro + " mm", origenEC.x - (lomoLibro / 2 + anchoLibro / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.anchoLibro + " mm", origenEC.x + (lomoLibro / 2 + anchoLibro / 2), origenEC.y - (altoLibro / 3) + 15, styleCotas); + previewEC.makeText(pvObj.altoLibro + " mm", origenEC.x + (lomoLibro / 2) + 25, origenEC.y, styleCotas).rotation = -Math.PI / 2; + previewEC.makeText(pvObj.altoLibro + (2 * sangradoValor) + " mm", origenEC.x + (lomoLibro / 2 + anchoLibro + anchoSolapa) + 50, origenEC.y, styleCotas).rotation = -Math.PI / 2; + previewEC.makeText((2 * pvObj.anchoLibro) + (2 * (pvObj.anchoSolapa + pvObj.offsetSolapa)) + pvObj.lomoLibro + (2 * sangradoValor) + " mm", + origenEC.x, + origenEC.y + (altoLibro / 2) + 50, + styleCotas); + } + + previewEC.update(); + +} + + +function getObjetoToPreview() { + + if($('#cosidoDiv').length){ + pvObj = { + lomoLibro: $('#lomo_cubierta').val() === '' ? parseFloat('0.0') : parseFloat(parseFloat($('#lomo_cubierta').val()).toFixed(2)), + anchoSolapa: $('#solapasCubierta').is(':checked') ? parseFloat($('#anchoSolapasCubierta').val()) : parseFloat('0.0'), + altoLibro: getDimensionLibro().alto, + anchoLibro: getDimensionLibro().ancho, + offsetSolapa: $('#solapasCubierta').is(':checked') ? parseFloat('3.0') : parseFloat('0.0') + }; + } else { + let tamanio = $('#resumenTamanio').text().split(' ')[1].split('x'); + let solapas = parseInt($('#resumenSolapasCubierta').length ? $('#resumenSolapasCubierta').text().split(' ')[1].replace("mm", '') : 0); + pvObj = { + lomoLibro: $('#lomo_cubierta').val() === '' ? parseFloat('0.0') : parseFloat(parseFloat($('#lomo_cubierta').val()).toFixed(2)), + anchoSolapa: solapas, + altoLibro: parseInt(tamanio[1]), + anchoLibro: parseInt(tamanio[0]), + offsetSolapa: (solapas != 0) ? parseFloat('3.0') : parseFloat('0.0') + }; + } + //console.log($('#lomo_cubierta').val()); +} diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/resumen.js b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/resumen.js new file mode 100644 index 00000000..956eb8fa --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/resumen.js @@ -0,0 +1,311 @@ +function generarResumen(){ + $('#tipoLibro').text($('#tituloDisenioLibro').text() + ' tapa ' + (($('#tapaBlandaInnerDiv').hasClass('checked'))?'blanda':'dura')); + $('#resumenTamanio').text('Dimensiones: ' + getDimensionLibro().ancho + 'x' + getDimensionLibro().alto + 'mm'); + $('#resumenPaginas').text('Páginas: '+ $('#paginas').val() + ' páginas'); + + const seleccion = $('.custom-option-tiradasDirecciones.checked'); + let tirada = 0; + if(seleccion.length != 0) { + + const element_tirada =($(seleccion[0]).find('label input')[0]); + const number = element_tirada.id.match(/\d+$/); + if (number.length != 0) { + tirada = parseInt($('#tiradaDireccionesValue' + number[0]).text()); + } + } + $('#resumenTirada').text('Tirada: '+ tirada + ' unidades'); + + $('#resumenPrototipo').text('Prototipo: ' + (($('#prototipo').is(':checked'))?'Sí':'No')); + $('#resumenFerro').text('Ferro: ' + (($('#ferro').is(':checked'))?'Sí':'No')); + + $('#tipoImpresion').text('Impresión: ' + + ($('#colorNegroDiv').hasClass('checked')?'Negro estándar': + $('#colorNegroHqDiv').hasClass('checked')?'Negro premium': + $('#colorColorDiv').hasClass('checked')?'Color estándar':'Color premium')); + + if($('#colorNegroDiv').hasClass('checked') || $('#colorNegroHqDiv').hasClass('checked')){ + $('#pResumenPaginasColor').hide(); + } + else{ + $('#pResumenPaginasColor').show(); + $('#resumenPaginasColor').text($('#paginasColor').val()); + } + $('#resumenPapelInterior').text($('#papelInterior option:selected').text().trim() + ' ' + + $('#gramajeInterior option:selected').text() + 'gr/m²'); + + let papelCubierta = $('#papelCubierta option:selected').text().trim() + ' ' + + $('#gramajeCubierta option:selected').text(); + papelCubierta += 'gr/m²'; + $('#resumenPapelCubierta').text(papelCubierta); + $('#resumenCarasCubierta').text('Impresión: ' + $('#carasCubierta option:selected').text()) + $('#resumenAcabadoCubierta').text('Acabado: ' + $('#acabadosCubierta option:selected').text()) + if ($('#solapasCubierta').is(':checked')) { + $('#resumenSolapasCubierta').text('Solapas: ' + $('#anchoSolapasCubierta').val()) + } + else{ + $('#resumenSolapasCubierta').text('Solapas: No') + } + + if ($('#enableSobrecubierta').is(':checked')) { + $(".resumen-sobrecubierta").show(); + $('#resumenPapelCubierta').text($('#papelSobrecubierta option:selected').text().trim() + ' ' + + $('#gramajeSobrecubierta option:selected').text() + 'gr/m²'); + $('#resumenAcabadoSobrecubierta').text('Acabado: ' + $('#acabadosSobrecubierta option:selected').text()) + $('#resumenSolapasSobrecubierta').text('Solapas: ' + $('#anchoSolapasSobrecubierta').val()) + + } + else{ + $(".resumen-sobrecubierta").hide(); + } + + if ($('#divGuardas').css('display') != 'none') { + + $(".resumen-guardas").show(); + $('#resumenGuardasPapel').text($('#papelGuardas option:selected').text().trim() + ' ' + '170gr/m²'); + $('#resumenGuardasCaras').text('Impresión: ' + $('#impresionGuardas option:selected').text()) + } + else{ + $(".resumen-guardas").hide(); + } + + + if($('#retractilado').is(':checked') || $('#retractilado5').is(':checked') || $('#fajaColor').is(':checked')){ + + $('.resumen-extras').show(); + $('#retractilado').is(':checked')?$('#resumenRetractilado1').show():$('#resumenRetractilado1').hide(); + $('#retractilado5').is(':checked')?$('#resumenRetractilado5').show():$('#resumenRetractilado5').hide(); + $('#fajaColor').is(':checked')?$('#resumenFajaColor').show():$('#resumenFajaColor').hide(); + } + else{ + $('.resumen-extras').hide(); + } + + for (i = 1; i <= 4; i++) { + let id = "tiradaPrecio" + i; + if ($('#' + id).length > 0) { + + const envio = getTotalEnvio(); + + let tirada_id = "ud_tiradaPrecio" + i; + if(parseInt($('#' + tirada_id).text().replace(' ud.', '')) != tirada){ + continue; + } + + let total_id = "tot_tiradaPrecio" + i; + + let total = parseFloat($('#' + total_id).text().replace('€', '').replace('Total: ', '')) + envio; + let total_iva = 0.0; + if($('#ivaReducido').val() == '1'){ + total_iva = total * 1.04; + } + else{ + total_iva = total * 1.21; + } + const precio_u = total_iva/tirada; + $('#resumenTotalIVA').text('Total (I.V.A. ' + (($('#ivaReducido').val() == '1')?'4':'21') + '%): ' + total_iva.toFixed(2) + '€'); + $('#resumenPrecioU').text(precio_u.toFixed(4) + '€/ud'); + } + } + + +} + +function getTotalEnvio(){ + const elements = $('#divDirecciones').find('.row.mb-3'); + let total = 0.0; + + if(elements.length > 0) { + for (let index=0; index path !== ""); + let id=0; + if(paths.length > 0 && paths[paths.length - 2] == 'edit'){ + id=paths[paths.length - 1]; + } + datos = { + id: id, + } + datos = Object.assign(datos, window.token_ajax) + + $('#loader').show(); + + $.ajax({ + url: window.routes_resumen.duplicarPresupuesto, + type: 'POST', + data: datos, + success: function(response) { + + if(Object.keys(response).length > 0) { + if(response.success){ + $('#loader').hide(); + window.location.href = document.location.origin + '/presupuestos/presupuestocliente/edit/' + response.id; + } + } + $('#loader').hide(); + + }, + error: function() { + $('#loader').hide(); + }, + }); +}); + + +$('#btnBack').on('click', function() { + window.location.href = document.location.origin + '/presupuestocliente/list'; +}); + +function finalizarPresupuesto(confirmar){ + + let isColor = false; + if($('#colorColorDiv').hasClass('checked') || $('#colorColorHqDiv').hasClass('checked')) + isColor = true; + let isHq = false; + if($('#colorNegroDiv').hasClass('checked') || $('#colorColorHqDiv').hasClass('checked')) + isHq = true; + + const paths = window.location.pathname.split("/").filter(path => path !== ""); + let id=0; + if(paths.length > 0 && paths[paths.length - 2] == 'edit'){ + id=paths[paths.length - 1]; + } + + let servicios = []; + $('.servicio-extra:checked').each(function () { + servicios.push($(this).attr('serv_id')); + }) + + let datos_libro = { + tamanio: getDimensionLibro(), + tirada: getTiradas(), + paginas: $('#paginas').val(), + paginasColor: $('#paginasColor').val(), + tipo: $('.custom-option-tipo.checked').attr('id').replace('Div', ''), + tapa: $('#tapaDura').is(':checked') ? 'dura' : 'blanda', + isColor: isColor, + isHq: isHq, + papelInterior: $('#papelInterior option:selected').val(), + papelInteriorNombre: $('#papelInterior option:selected').text().trim(), + gramajeInterior: $('#gramajeInterior option:selected').text(), + excluirRotativa: $('#excluirRotativa').is(':checked')? 1 : 0, + papelCubierta: $('#papelCubierta option:selected').val(), + papelCubiertaNombre: $('#papelCubierta option:selected').text().trim(), + gramajeCubierta: $('#gramajeCubierta option:selected').text(), + carasCubierta: $('#carasCubierta').val(), + acabadoCubierta: $('#acabadosCubierta').val(), + clienteId: $('#clienteId').val(), + servicios: servicios, + }; + + // Si es cosido, se añade el número de páginas del cuadernillo + if ($('#cosidoDiv').hasClass('checked')) { + datos_libro.paginasCuadernillo = $('#paginasCuadernillo').val(); + } + + // Si hay solapas de cubierta + if ($('#solapasCubierta').is(':checked')) { + datos_libro.solapasCubierta = $('#anchoSolapasCubierta').val() + } + + // Si hay sobrecubierta + if ($('#enableSobrecubierta').is(':checked')) { + if($('#papelSobrecubierta option:selected').val()>0 && $('#gramajeSobrecubierta option:selected').val()>0){ + + datos_libro.sobrecubierta = { + papel: $('#papelSobrecubierta option:selected').val(), + papel_nombre: $('#papelSobrecubierta option:selected').text().trim(), + gramaje: $('#gramajeSobrecubierta option:selected').text(), + acabado: $('#acabadosSobrecubierta').val() + } + + datos_libro.sobrecubierta.solapas = $('#anchoSolapasSobrecubierta').val() + } + } + + if ($('#divGuardas').css('display') != 'none') { + datos_libro.guardas = { + papel: $('#papelGuardas option:selected').val(), + papel_nombre: $('#papelGuardas option:selected').text().trim(), + gramaje: 170, + caras: $('#impresionGuardas option:selected').val() + } + } + + let datos_cabecera = { + titulo: $('#titulo').val(), + referenciaCliente: $('#referenciaCliente').val(), + } + + const seleccion = $('.custom-option-tiradasDirecciones.checked'); + let tirada = 0; + let peso_libro = 0; + if(seleccion.length != 0) { + + const element_tirada =($(seleccion[0]).find('label input')[0]); + const number = element_tirada.id.match(/\d+$/); + if (number.length != 0) { + tirada = parseInt($('#tiradaDireccionesValue' + number[0]).text()); + peso_libro = ($(seleccion[0])).find('label input').attr('peso'); + } + } + + + let direcciones = getDireccionesEnvio(); + datos = { + id: id, + datos_libro : datos_libro, + datos_cabecera: datos_cabecera, + direcciones: direcciones, + tirada: tirada, + peso: peso_libro, + iva_reducido: $('#ivaReducido').val()==1?1:0, + confirmar: confirmar?1:0, + }, + + datos = Object.assign(datos, window.token_ajax) + + $('#loader').show(); + + $.ajax({ + url: window.routes_resumen.guardarPresupuesto, + type: 'POST', + data: datos, + success: function(response) { + + if(Object.keys(response).length > 0) { + if(response.status > 0){ + if(confirmar || window.location.href.includes("add")) + window.location.href = response.url + '/' + response.status; + } + + } + $('#loader').hide(); + + }, + error: function() { + $('#loader').hide(); + }, + }); +} \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/tipoLibroItems.js b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/tipoLibroItems.js new file mode 100644 index 00000000..11ee90da --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/tipoLibroItems.js @@ -0,0 +1,58 @@ +// Init custom option check +function initTipoLibroCheck() +{ + const _this = this + + const custopOptionList = [].slice.call(document.querySelectorAll('.custom-option-tipo .form-check-input')) + custopOptionList.map(function (customOptionEL) { + // Update custom options check on page load + _this.updateTipoLibroCheck(customOptionEL) + + // Update custom options check on click + customOptionEL.addEventListener('click', e => { + _this.updateTipoLibroCheck(customOptionEL) + }) + }) +} + +function updateTipoLibroCheck(el) +{ + if (el.checked) { + // If custom option element is radio, remove checked from the siblings (closest `.row`) + if (el.type === 'radio') { + const customRadioOptionList = [].slice.call(el.closest('.tipo_libro').querySelectorAll('.custom-option-tipo')) + customRadioOptionList.map(function (customRadioOptionEL) { + customRadioOptionEL.closest('.custom-option-tipo').classList.remove('checked') + }) + } + el.closest('.custom-option-tipo').classList.add('checked') + if(el.closest('.custom-option-tipo').id == 'grapadoDiv') { + $('#tapaDuraDiv').hide(); + $('#tapaBlanda').prop('checked', true); + } + else { + $('#tapaDuraDiv').show(); + } + if(el.closest('.custom-option-tipo').id == 'cosidoDiv') { + $('#div_pagCuadernillo').show(); + } + else { + $('#div_pagCuadernillo').hide(); + } + } else { + el.closest('.custom-option-tipo').classList.remove('checked') + } +} + +initTipoLibroCheck(); + + +function getUpdatePapelInterior() { + var impresionInterior = $('input[name="impresionInterior"]:checked').val(); + if(impresionInterior == 'color') { + $('#colorInteriorDiv').show(); + } + else { + $('#colorInteriorDiv').hide(); + } +} diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/viewPresupuestoclienteForm.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/viewPresupuestoclienteForm.php new file mode 100644 index 00000000..3235d696 --- /dev/null +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/old/viewPresupuestoclienteForm.php @@ -0,0 +1,332 @@ +include('themes/_commonPartialsBs/datatables') ?> +include("themes/_commonPartialsBs/select2bs5") ?> +include("themes/_commonPartialsBs/sweetalert") ?> +extend('themes/vuexy/main/defaultlayout') ?> + + +section("content") ?> + + +
+
+

+ + + + getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> + + + +
+ + estado_id == 1) : ?> + +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + + +
+ +
+ +
+ +
+
+ + + +
+ +
+ + + + +
+
+ + +
+
+ + + +
+ + +
+
+
+ + +
+
+ + + +
+
+
+ estado_id == 1) : ?> + + +
+
+ estado_id == 1) : ?> + + + + + + + id), + lang("Basic.global.Print"), + [ + "class" => "btn btn-dark float-start me-sm-3 ml-2", + "target" => "_blank" + ] + ); + } + ?> +
+
+
+
+
+ + + +
+
+
+
+
+ + + +
+
+ estado_id == 1) : ?> + + +
+
+ estado_id == 1) : ?> + + + + + + + id), + lang("Basic.global.Print"), + [ + "class" => "btn btn-dark float-start me-sm-3 ml-2", + "target" => "_blank" + ] + ); + ?> +
+
+ +
+
+
+ + + + + +
+ $presupuestoEntity->id]) ?> +
+ + + + endSection() ?> + + + + + section("additionalInlineJs") ?> + + window.datosPresupuesto = ; + window.token_ajax= {: v}; + + estado_id == 1) : ?> + $('#clienteId').select2({ + allowClear: false, + ajax: { + url: '', + type: 'post', + dataType: 'json', + + data: function(params) { + return { + id: 'id', + text: 'nombre', + searchTerm: params.term, + : v + }; + }, + delay: 60, + processResults: function(response) { + yeniden(response.); + return { + results: response.menu + }; + }, + cache: true + } + }); + + initDisenioLibro(); + + + + + + + endSection() ?> + + + section('css') ?> + + + + + + + endSection() ?> + + section('additionalExternalJs') ?> + + + + + + + + + + + + + + + + + + estado_id == 1) : ?> + + + + + + + endSection() ?> \ No newline at end of file diff --git a/httpdocs/assets/img/presupuestoCliente/cosido.png b/httpdocs/assets/img/presupuestoCliente/cosido.png new file mode 100644 index 0000000000000000000000000000000000000000..03bf99de471c158d772c8f0db31f271b07724e93 GIT binary patch literal 11108 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 D=_7`2 literal 0 HcmV?d00001 diff --git a/httpdocs/assets/img/presupuestoCliente/espiral.png b/httpdocs/assets/img/presupuestoCliente/espiral.png new file mode 100644 index 0000000000000000000000000000000000000000..3177ab2d29bca4030abbb7b70b43ff17e2ab8ec8 GIT binary patch literal 32862 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 GAn<=B6;$c~ literal 0 HcmV?d00001 diff --git a/httpdocs/assets/img/presupuestoCliente/fresado.png b/httpdocs/assets/img/presupuestoCliente/fresado.png new file mode 100644 index 0000000000000000000000000000000000000000..33c4040563daf63e26d92d38f26e1567bdbb704f GIT binary patch literal 15032 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 b-`+{(-KKSRpWgykQQ?&2)IoJJreFUL|1+^s literal 0 HcmV?d00001 diff --git a/httpdocs/assets/img/presupuestoCliente/grapado.png b/httpdocs/assets/img/presupuestoCliente/grapado.png new file mode 100644 index 0000000000000000000000000000000000000000..fc6c407f22bda822d7666350a0fb9047da7bc6f1 GIT binary patch literal 9124 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 Y41OEzx!hJpeY*k3Nh?cLLXCs}2Z1hxo&W#< literal 0 HcmV?d00001 diff --git a/httpdocs/assets/js/safekat/components/select2.js b/httpdocs/assets/js/safekat/components/select2.js new file mode 100644 index 00000000..be3d9c4d --- /dev/null +++ b/httpdocs/assets/js/safekat/components/select2.js @@ -0,0 +1,64 @@ +class ClassSelect2 { + + constructor(domItem, url, placeholder = "", delay = 60, text_field = 'nombre', id_field = 'id') { + this.domItem = domItem; + this.url = url; + this.placeholder = placeholder; + this.delay = delay; + this.text_field = text_field; + this.id_field = id_field; + } + + init() { + + this.domItem.select2({ + allowClear: false, + placeholder: this.placeholder, + ajax: { + url: this.url, + type: 'post', + dataType: 'json', + data: (params) => { + + return { + id: this.id_field, + text: this.text_field, + searchTerm: params.term, + }; + }, + delay: this.delay, + processResults: function (response) { + + return { + results: response.menu + }; + }, + cache: true + } + }); + } + + // Método para obtener el valor seleccionado + getValue() { + return this.domItem.val(); + } + + // Método para establecer el valor seleccionado + setValue(value) { + this.domItem.val(value).trigger('change'); + } + + // Método para oculatar el select2 + hide() { + console.log(this.domItem); + this.domItem.select2('close'); + this.domItem.next('.select2-container').hide(); + } + + // Método para mostrar el select2 + show() { + this.domItem.next('.select2-container').show(); + } +} + +export default ClassSelect2; diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/datosGenerales.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/datosGenerales.js new file mode 100644 index 00000000..2fcd0b57 --- /dev/null +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/datosGenerales.js @@ -0,0 +1,104 @@ +import ClassSelect from '../../components/select2.js'; + + +class DatosGenerales { + + constructor(domItem) { + this.domItem = domItem; + this.formatoLibro = new ClassSelect($("#papelFormatoId"), '/papel-formato/menuitems', 'Seleccione formato'); + this.checkFormatoPersonalizado = this.domItem.find("#papelFormatoPersonalizado"); + this.formatoPersonalizado = this.domItem.find("#formatoPersonalizado"); + + this.tiposLibro = this.domItem.find(".tipo-libro"); + + this.paginas = this.domItem.find("#paginas"); + this.paginasNegro = this.domItem.find("#paginasNegro"); + this.paginasColor = this.domItem.find("#paginasColor"); + + } + + + init() { + + this.formatoLibro.init(); + this.checkFormatoPersonalizado.bind('change', this.#handleFormatoLibro.bind(this)); + + this.tiposLibro.on('click', this.#handleTipolibro.bind(this)); + + this.domItem.find('.input-paginas').on('change', this.#handlePaginas.bind(this)); + } + + + #handleFormatoLibro() { + + if(this.checkFormatoPersonalizado.is(':checked')) { + this.formatoLibro.hide(); + this.formatoPersonalizado.show(); + } + else{ + this.formatoLibro.show(); + this.formatoPersonalizado.hide(); + } + } + + #handleTipolibro(event) { + // Accede al ID del elemento que disparó el evento + const element = $(event.target); + + let containers = element.closest('.tipo-libro').parent().find('.tipo-libro'); + for (let container of containers) { + if (container != element.closest('.tipo-libro')[0]) { + $(container).removeClass('selected'); + $(container).find('.image-presupuesto').removeClass('selected'); + } + } + + element.closest('.tipo-libro').toggleClass('selected'); + element.closest('.image-presupuesto').toggleClass('selected'); + } + + #handlePaginas(event) { + let paginas = this.paginas.val(); + let paginasNegro = this.paginasNegro.val(); + let paginasColor = this.paginasColor.val(); + + if (paginasNegro == '' || isNaN(paginasNegro)) { + paginasNegro = 0; + } + if (paginasColor == '' || isNaN(paginasColor)) { + paginasColor = 0; + } + + let totalPaginas = parseInt(paginasNegro) + parseInt(paginasColor); + this.paginas.val(totalPaginas); + + let tipos = [this.domItem.find('#fresado'), this.domItem.find('#cosido')]; + if (totalPaginas < 32){ + for (let tipo of tipos) { + tipo.removeClass('selected'); + tipo.find('.image-presupuesto').removeClass('selected'); + + tipo.hide(); + } + } + else{ + for (let tipo of tipos) { + tipo.show(); + } + } + + + if (totalPaginas < 12 || totalPaginas > 40) { + this.domItem.find('#grapado').removeClass('selected'); + this.domItem.find('#grapado').find('.image-presupuesto').removeClass('selected'); + this.domItem.find('#grapado').hide(); + } + else{ + this.domItem.find('#grapado').show(); + } + } + +} + + +export default DatosGenerales; \ No newline at end of file diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js new file mode 100644 index 00000000..fca50cba --- /dev/null +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js @@ -0,0 +1,9 @@ +import DatosGenerales from './datosGenerales.js'; + +document.addEventListener('DOMContentLoaded', function() { + + let datosGenerales = new DatosGenerales($("#datos-generales")); + datosGenerales.init(); + +}); + diff --git a/httpdocs/themes/vuexy/css/presupuestoCliente.css b/httpdocs/themes/vuexy/css/presupuestoCliente.css new file mode 100644 index 00000000..9702aa6a --- /dev/null +++ b/httpdocs/themes/vuexy/css/presupuestoCliente.css @@ -0,0 +1,39 @@ +.image-container { + position: relative; + display: inline-block; + max-height: 150px; + max-width: 200px; +} + +/* Estilo de la imagen */ +.image-container img { + max-width: 150px; + max-height: 150px; +} + +/* Pseudo-elemento que muestra el tick */ +.image-container.selected::after { + content: '✔'; /* Símbolo de tick */ + position: absolute; + top: 90px; + right: 25px; + font-size: 50px; + font-weight: bold; + color: green; + background-color: rgba(255, 255, 255, 0); + border-radius: 100%; + padding: 5px; +} + +.image-presupuesto { + transition: transform 1s ease; +} + +.image-presupuesto.selected { + --webkit-transform: rotateY(360deg); + --webkit-transform-style: preserve-3d; + + transform: rotateY(360deg); + transform-style: preserve-3d; +} +