mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
añadidos los ficheros
This commit is contained in:
@ -0,0 +1,140 @@
|
||||
<div class="col-12 pb-2 d-flex flex-column align-items-center">
|
||||
|
||||
|
||||
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
|
||||
<label for="titulo" class="form-label">
|
||||
<?= lang('Presupuestos.titulo') ?>*
|
||||
</label>
|
||||
<input type="text" id="titulo" placeholder="Introduzca el título de la publicación" name="titulo" maxLength="300" class="form-control text-center" value="">
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
|
||||
<div class="row col-sm-10 mb-3 justify-content-center">
|
||||
<div class="col-sm-2 d-flex flex-column align-items-center mx-1">
|
||||
<label for="tirada" class="form-label">
|
||||
<?= lang('Presupuestos.tirada') ?> 1
|
||||
</label>
|
||||
<input type="number" class="calcular-presupuesto form-control text-center" id="tirada" name="tirada" step="1" value="">
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
<div class="col-sm-2 d-flex flex-column align-items-center mx-1">
|
||||
<label for="tirada2" class="form-label">
|
||||
<?= lang('Presupuestos.tirada') ?> 2
|
||||
</label>
|
||||
<input type="number" class="calcular-presupuesto form-control text-center" id="tirada2" name="tirada2" step="1" value="">
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
<div class="col-sm-2 d-flex flex-column align-items-center mx-1">
|
||||
<label for="tirada3" class="form-label">
|
||||
<?= lang('Presupuestos.tirada') ?> 3
|
||||
</label>
|
||||
<input type="number" class="calcular-presupuesto form-control text-center" id="tirada3" name="tirada3" step="1" value="">
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
<div class="col-sm-2 d-flex flex-column align-items-center mx-1">
|
||||
<label for="tirada4" class="form-label">
|
||||
<?= lang('Presupuestos.tirada') ?> 4
|
||||
</label>
|
||||
<input type="number" class="calcular-presupuesto form-control text-center" id="tirada4" name="tirada4" step="1" value="">
|
||||
</div><!--//.mb-3 -->
|
||||
</div> <!--//.row -->
|
||||
|
||||
<div class="col-sm-10 d-flex flex-column align-items-center justify-content-center">
|
||||
|
||||
<div class="col-sm-4 mb-1 d-flex flex-column align-items-center">
|
||||
<label id="label_papelFormatoId" for="papelFormatoId" class="form-label">
|
||||
Formato Libro*
|
||||
</label>
|
||||
<select id="papelFormatoId" name="papel_formato_id" tabindex="3" class="form-control select2bs2 calcular-presupuesto" style="width: 100%;">
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div id="formatoPersonalizado" class="row col-sm-8 justify-content-center" style="display: none;">
|
||||
|
||||
<div class="col-sm-3 mb-1 mx-1">
|
||||
<label class="form-label" for="papelFormatoAncho">Ancho Libro</label>
|
||||
<input type="number" id="papelFormatoAncho" name="papel_formato_ancho" step="1" class="form-control formato_libro calcular-presupuesto" value="">
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
<div class="col-sm-3 mb-1 mx-1">
|
||||
<label class="form-label" for="papelFormatoAlto">Alto Libro</label>
|
||||
<input type="number" id="papelFormatoAlto" name="papel_formato_alto" step="1" class="form-control formato_libro calcular-presupuesto" value="">
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row col-sm-4 mb-3 d-flex flex-column align-items-center">
|
||||
<div class="form-check form-switch mb-2">
|
||||
<input class="form-check-input" type="checkbox" id="papelFormatoPersonalizado" name="papel_formato_personalizado" value="1" >
|
||||
<label class="form-check-label" for="papelFormatoPersonalizado"><?= lang('Presupuestos.papelFormatoPersonalizado') ?></label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row col-sm-10 mb-5 justify-content-center">
|
||||
|
||||
<div class="col-sm-3">
|
||||
<label for="paginasColor" class="form-label">
|
||||
<?= lang('Presupuestos.paginasColor') ?>
|
||||
</label>
|
||||
<input type="number" class="form-control calcular-presupuesto input-paginas" id="paginasColor" name="paginasColor" step="1" value="0">
|
||||
|
||||
<div class="form-text">
|
||||
Siempre deben ser pares
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-sm-3">
|
||||
<label for="paginasNegro" class="form-label">
|
||||
<?= lang('Presupuestos.paginasNegro') ?>
|
||||
</label>
|
||||
<input type="number" class="form-control calcular-presupuesto input-paginas" id="paginasNegro" name="paginasNegro" step="1" value="32">
|
||||
|
||||
<div class="form-text">
|
||||
Siempre deben ser pares
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-sm-3">
|
||||
<label for="paginas" class="form-label">
|
||||
<?= lang('Presupuestos.totalPaginas') ?>
|
||||
</label>
|
||||
<input readonly class="form-control calcular-presupuesto" id="paginas" name="paginas" step="1" value="32">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row col-sm-10 mb-3 justify-content-center">
|
||||
|
||||
<div id="fresado" class="tipo-libro imagen-selector image-container">
|
||||
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/fresado.png") ?>" alt="Fresado">
|
||||
<div class="form-text text-center">
|
||||
Fresado (a partir de 32 páginas)
|
||||
</div>
|
||||
</div>
|
||||
<div id="grapado" class="tipo-libro imagen-selector image-container">
|
||||
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/grapado.png") ?>" alt="Grapado">
|
||||
<div class="form-text text-center">
|
||||
Grapado (entre 12 y 40 páginas)
|
||||
</div>
|
||||
</div>
|
||||
<div id="espiral" class="tipo-libro imagen-selector image-container">
|
||||
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/espiral.png") ?>" alt="Espiral">
|
||||
<div class="form-text text-center">
|
||||
Espiral
|
||||
</div>
|
||||
</div>
|
||||
<div id="cosido" class="tipo-libro imagen-selector image-container">
|
||||
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/cosido.png") ?>" alt="Cosido">
|
||||
<div class="form-text text-center">
|
||||
Cosido (a partir de 32 páginas)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -0,0 +1,94 @@
|
||||
<div class="col-12 pb-2">
|
||||
|
||||
<input hidden readonly style="background: #E8E8E8;" id="id" name="id" maxLength="12" class="form-control" value="<?= old('id', $presupuestoEntity->id) ?>">
|
||||
|
||||
<div class="row g-2">
|
||||
|
||||
<div class="col-sm-6 mb-3">
|
||||
<label for="titulo" class="form-label">
|
||||
<?=lang('Presupuestos.titulo') ?>*
|
||||
</label>
|
||||
<input type="text" id="titulo" name="titulo" maxLength="300" class="form-control" value="<?=old('titulo', $presupuestoEntity->titulo) ?>">
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
<div class="col-sm-6 mb-3">
|
||||
<label for="autor" class="form-label">
|
||||
<?=lang('Presupuestos.autor') ?>
|
||||
</label>
|
||||
<input type="text" id="autor" name="autor" maxLength="150" class="form-control" value="<?=old('autor', $presupuestoEntity->autor) ?>">
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
<div class="col-sm-6 mb-3">
|
||||
<label for="coleccion" class="form-label">
|
||||
<?=lang('Presupuestos.coleccion') ?>
|
||||
</label>
|
||||
<input type="text" id="coleccion" name="coleccion" maxLength="255" class="form-control" value="<?=old('coleccion', $presupuestoEntity->coleccion) ?>">
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
<div class="col-sm-6 mb-3">
|
||||
<label for="numeroEdicion" class="form-label">
|
||||
<?=lang('Presupuestos.numeroEdicion') ?>
|
||||
</label>
|
||||
<input type="text" id="numeroEdicion" name="numero_edicion" maxLength="50" class="form-control" value="<?=old('numero_edicion', $presupuestoEntity->numero_edicion) ?>">
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
|
||||
<div class="col-sm-6 mb-3">
|
||||
<label for="numeroEdicion" class="form-label">
|
||||
<?=lang('Presupuestos.numeroEdicion') ?>
|
||||
</label>
|
||||
<input type="text" id="numeroEdicion" name="numero_edicion" maxLength="50" class="form-control" value="<?=old('numero_edicion', $presupuestoEntity->numero_edicion) ?>">
|
||||
</div>
|
||||
|
||||
<div class="col-sm-6 mb-3">
|
||||
<label for="isbn" class="form-label">
|
||||
<?=lang('Presupuestos.isbn') ?>
|
||||
</label>
|
||||
<input type="text" id="isbn" name="isbn" maxLength="50" class="form-control" value="<?=old('isbn', $presupuestoEntity->isbn) ?>">
|
||||
</div>
|
||||
|
||||
<div class="col-sm-6 mb-3">
|
||||
<label for="paisId" class="form-label">
|
||||
<?=lang('Presupuestos.paisId') ?>*
|
||||
</label>
|
||||
<select id="paisId" name="pais_id" class="form-control select2bs" style="width: 100%;" >
|
||||
<?php foreach ($datosPresupuesto->paisList as $item) : ?>
|
||||
<option value="<?=$item->id ?>"<?=$item->id==$presupuestoEntity->pais_id ? ' selected':'' ?>>
|
||||
<?=$item->nombre ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<hr> <!-- Separador -->
|
||||
|
||||
|
||||
<div class="col-sm-6 mb-3">
|
||||
<label for="clienteId" class="form-label">
|
||||
<?= lang('Presupuestos.clienteId') ?>*
|
||||
</label>
|
||||
<select id="clienteId" name="clienteId" class="form-control select2bs2" style="width: 100%;">
|
||||
|
||||
<?php if (isset($datosPresupuesto->clienteList) && is_array($datosPresupuesto->clienteList) && !empty($datosPresupuesto->clienteList)) :
|
||||
foreach ($datosPresupuesto->clienteList as $k => $v) : ?>
|
||||
<option value="<?= $k ?>" <?= $k == $presupuestoEntity->cliente_id ? ' selected' : '' ?>>
|
||||
<?= $v ?>
|
||||
</option>
|
||||
<?php endforeach;
|
||||
endif; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-sm-6 mb-3">
|
||||
<label for="referenciaCliente" class="form-label">
|
||||
<?=lang('Presupuestos.referenciaCliente') ?>
|
||||
</label>
|
||||
<input type="text" id="referenciaCliente" name="referencia_cliente" maxLength="100" class="form-control" value="<?=old('referencia_cliente', $presupuestoEntity->referencia_cliente) ?>">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div><!--//.col -->
|
||||
|
||||
|
||||
@ -0,0 +1,48 @@
|
||||
<div class="col-12 pb-2">
|
||||
|
||||
<div id="containerTiradasEnvios" class="row mb-3">
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
|
||||
<div class="col-sm-4 mb-3">
|
||||
<label for="direcciones" class="form-label">Mis direcciones</label>
|
||||
<select id="direcciones" name="direcciones" class="form-control select2bs2" style="width: 100%;"></select>
|
||||
</div>
|
||||
<div class="col-sm-2 mb-3">
|
||||
<label for="unidadesEnvio" class="form-label">
|
||||
Unidades
|
||||
</label>
|
||||
<input type="number" class="form-control" id="unidadesEnvio" name="unidadesEnvio" maxLength="8" step="1" class="form-control">
|
||||
</div><!--//.mb-3 -->
|
||||
<div class="col-sm-2 mb-3 mt-auto mb-0">
|
||||
<button id="insertarDireccion" type="button" class="btn btn-secondary waves-effect waves-light">Insertar</button>
|
||||
</div>
|
||||
<div id="errorDirecciones" class="fv-plugins-message-container invalid-feedback" style="display: none;">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-sm-4 mb-3">
|
||||
<div class="form-check form-switch mb-2">
|
||||
<input class="form-check-input" type="checkbox" id="entregaPieCalle" name="entregaPieCalle" value="1">
|
||||
<label class="form-check-label" for="add_entregaPieCalle"><?= lang('PresupuestosDirecciones.entregaPieCalle') ?></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="divDirecciones" class="col-12 pb-2">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?= $this->section("additionalInlineJs") ?>
|
||||
|
||||
window.direcciones = <?= json_encode($presupuestoEntity->direcciones_envio) ?>;
|
||||
window.direcciones_sel_tirada = <?= json_encode($presupuestoEntity->selected_tirada) ?>;
|
||||
window.routes_direcciones = {
|
||||
direcciones: "<?= route_to('getDirecciones') ?>",
|
||||
getDatos: "<?= route_to('getDatosDireccion') ?>",
|
||||
nuevaDireccion: "<?= route_to('nuevaDireccion') ?>",
|
||||
}
|
||||
<?= $this->endSection() ?>
|
||||
@ -0,0 +1,665 @@
|
||||
<div class="col-12 pb-2">
|
||||
|
||||
<input hidden readonly style="background: #E8E8E8;" id="id" name="id" maxLength="12" class="form-control" value="<?= old('id', $presupuestoEntity->id) ?>">
|
||||
|
||||
<div class="row g-2">
|
||||
|
||||
<h3 id="tituloDisenioLibro">Fresado</h3>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12 mb-3">
|
||||
<label for="titulo" class="form-label">
|
||||
<?= lang('Presupuestos.titulo') ?>*
|
||||
</label>
|
||||
<input type="text" id="titulo" name="titulo" maxLength="300" class="form-control" value="<?= old('titulo', $presupuestoEntity->titulo) ?>">
|
||||
</div><!--//.mb-3 -->
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-6 mb-3" <?= $clienteId != 0 && !(auth()->user()->inGroup('admin') || auth()->user()->inGroup('beta')) ?' style="display:none;"':''?>>
|
||||
<label for="clienteId" class="form-label">
|
||||
<?= lang('Presupuestos.clienteId') ?>*
|
||||
</label>
|
||||
<select id="clienteId" name="clienteId" class="form-control select2bs2" style="width: 100%;">
|
||||
|
||||
<?php if (isset($datosPresupuesto->clienteList) && is_array($datosPresupuesto->clienteList) && !empty($datosPresupuesto->clienteList)) :
|
||||
foreach ($datosPresupuesto->clienteList as $k => $v) : ?>
|
||||
<option value="<?= $k ?>" <?= $k == $clienteId ? ' selected' : '' ?>>
|
||||
<?= $v ?>
|
||||
</option>
|
||||
<?php endforeach;
|
||||
endif; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-sm-6 mb-3">
|
||||
<label for="referenciaCliente" class="form-label">
|
||||
<?php if($clienteId == 0): ?>
|
||||
<?= lang('Presupuestos.referenciaCliente') ?>
|
||||
<?php else: ?>
|
||||
<?= lang('Presupuestos.referenciaCliente2') ?>
|
||||
<?php endif; ?>
|
||||
</label>
|
||||
<input type="text" id="referenciaCliente" name="referencia_cliente" maxLength="100" class="form-control" value="<?= old('referencia_cliente', $presupuestoEntity->referencia_cliente) ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="tapaDiv" class="row mt-3">
|
||||
|
||||
<div class="col-sm-3 mb-md-0 mb-2" id="tapaBlandaDiv">
|
||||
<div id="tapaBlandaInnerDiv" class="form-check custom-option custom-option-tapa custom-option-basic
|
||||
<?php echo ($datosPresupuesto->tapa == 'blanda' ? ' checked"': '"'); ?> >
|
||||
<label class="form-check-label custom-option-content" for="tapaBlanda">
|
||||
<input name="tapaBlanda" class="form-check-input elementos-libro calcular-presupuesto" type="radio" value="" id="tapaBlanda"
|
||||
<?php echo ($datosPresupuesto->tapa == 'blanda' ? ' checked=""': ''); ?> >
|
||||
<span class="custom-option-header">
|
||||
<span class="h6 mb-0">Tapa blanda</span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div id="tapaDuraDiv" class="col-sm-3 mb-md-0 mb-2">
|
||||
<div class="form-check custom-option custom-option-tapa custom-option-basic
|
||||
<?php echo ($datosPresupuesto->tapa == 'dura' ? ' checked"': '"'); ?> >
|
||||
<label class="form-check-label custom-option-content" for="tapaDura">
|
||||
<input name="tapaDura" class="form-check-input elementos-libro calcular-presupuesto" type="radio" value="" id="tapaDura"
|
||||
<?php echo ($datosPresupuesto->tapa == 'dura' ? ' checked=""': ''); ?> >
|
||||
<span class="custom-option-header">
|
||||
<span class="h6 mb-0">Tapa Dura</span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!--//.row -->
|
||||
|
||||
<div class="divider divider-dark text-start mb-1">
|
||||
<div class="divider-text">
|
||||
<h5>Datos presupuesto</h5>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div id="errorTiradas" class="fv-plugins-message-container invalid-feedback" style="display: none;">
|
||||
<div>No puede mezclar tiradas mayores de 30 unidades con tiradas menores de 30 unidades</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-3 mb-3">
|
||||
<label for="tirada" class="form-label">
|
||||
<?= lang('Presupuestos.tirada') ?> 1
|
||||
</label>
|
||||
<input type="number" class="calcular-presupuesto" id="tirada" name="tirada" maxLength="8" step="1" class="form-control" value="<?= old(0, $presupuestoEntity->tirada) ?>">
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
<div class="col-sm-3 mb-3">
|
||||
<label for="tirada2" class="form-label">
|
||||
<?= lang('Presupuestos.tirada') ?> 2
|
||||
</label>
|
||||
<input type="number" class="calcular-presupuesto" id="tirada2" name="tirada2" maxLength="8" step="1" class="form-control" value="<?= old(0, $presupuestoEntity->tirada2) ?>">
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
<div class="col-sm-3 mb-3">
|
||||
<label for="tirada3" class="form-label">
|
||||
<?= lang('Presupuestos.tirada') ?> 3
|
||||
</label>
|
||||
<input type="number" class="calcular-presupuesto" id="tirada3" name="tirada3" maxLength="8" step="1" class="form-control" value="<?= old(0, $presupuestoEntity->tirada3) ?>">
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
<div class="col-sm-3 mb-3">
|
||||
<label for="tirada4" class="form-label">
|
||||
<?= lang('Presupuestos.tirada') ?> 4
|
||||
</label>
|
||||
<input type="number" class="calcular-presupuesto" id="tirada4" name="tirada4" maxLength="8" step="1" class="form-control" value="<?= old(0, $presupuestoEntity->tirada4) ?>">
|
||||
</div><!--//.mb-3 -->
|
||||
</div> <!--//.row -->
|
||||
|
||||
</div> <!--//.row -->
|
||||
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-sm-3 mb-3">
|
||||
<label for="paginas" class="form-label">
|
||||
<?= lang('Presupuestos.paginas') ?>
|
||||
</label>
|
||||
<input type="number" class="calcular-presupuesto" id="paginas" name="paginas" maxLength="8" step="1" class="form-control" value="<?= old(0, $presupuestoEntity->paginas) ?>">
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
<div id="div_pagCuadernillo" class="col-sm-3 mb-3">
|
||||
<label for="paginas_por_cuadernillo" class="form-label">
|
||||
<?= lang('Presupuestos.paginasCuadernillo') ?>
|
||||
</label>
|
||||
<select id="paginasCuadernillo" name="paginas_por_cuadernillo" class="calcular-presupuesto form-control select2bs2" style="width: 100%;">
|
||||
<?php if (isset($datosPresupuesto->paginasCuadernillo) && is_array($datosPresupuesto->paginasCuadernillo) && !empty($datosPresupuesto->paginasCuadernillo)) :
|
||||
foreach ($datosPresupuesto->paginasCuadernillo as $value) : ?>
|
||||
<option value="<?= $value ?>" <?= $value == $presupuestoEntity->paginas_por_cuadernillo ? ' selected' : '' ?>>
|
||||
<?= $value ?>
|
||||
</option>
|
||||
<?php endforeach;
|
||||
endif; ?>
|
||||
</select>
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
</div> <!--//.row -->
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div id="tamanioLibroDiv" class="col-sm-3 mb-3" <?= $presupuestoEntity->papel_formato_personalizado == false ? '' : 'style="display: none"'; ?>>
|
||||
<label id="label_papelFormatoId" for="papelFormatoId" class="form-label">
|
||||
Tamaño Libro*
|
||||
</label>
|
||||
|
||||
<select id="papelFormatoId" name="papel_formato_id" tabindex="3" class="form-control select2bs2 calcular-presupuesto" style="width: 100%;">
|
||||
|
||||
<?php if (isset($datosPresupuesto->papelFormatoList) && is_array($datosPresupuesto->papelFormatoList) && !empty($datosPresupuesto->papelFormatoList)) :
|
||||
foreach ($datosPresupuesto->papelFormatoList as $formato) : ?>
|
||||
<option value="<?= $formato->id ?>" <?= $formato->id == $presupuestoEntity->papel_formato_id ? ' selected' : '' ?>>
|
||||
<?= $formato->tamanio ?>
|
||||
</option>
|
||||
<?php endforeach;
|
||||
endif; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div id="anchoLibroDiv" class="col-sm-3 mb-3" <?= $presupuestoEntity->papel_formato_personalizado == true ? '' : 'style="display: none"'; ?>>
|
||||
<div class="mb-1">
|
||||
<label class="form-label" for="papelFormatoAncho">Ancho Libro</label>
|
||||
<input type="number" id="papelFormatoAncho" name="papel_formato_ancho" maxLength="8" step="1" class="form-control formato_libro calcular-presupuesto" value="<?= old('papel_formato_ancho', $presupuestoEntity->papel_formato_ancho) ?>">
|
||||
</div><!--//.mb-3 -->
|
||||
</div><!--//.col -->
|
||||
|
||||
<div id="altoLibroDiv" class="col-sm-3 mb-3" <?= $presupuestoEntity->papel_formato_personalizado == true ? '' : 'style="display: none"'; ?>>
|
||||
<div class="mb-1">
|
||||
<label class="form-label" for="papelFormatoAlto">Alto Libro</label>
|
||||
<input type="number" id="papelFormatoAlto" name="papel_formato_alto" maxLength="8" step="1" class="form-control formato_libro calcular-presupuesto" value="<?= old('papel_formato_alto', $presupuestoEntity->papel_formato_alto) ?>">
|
||||
</div><!--//.mb-3 -->
|
||||
</div><!--//.col -->
|
||||
|
||||
<div class="col-sm-3 mb-3 d-flex align-items-end">
|
||||
<div class="form-check form-switch mb-2">
|
||||
<input class="form-check-input" type="checkbox" id="papelFormatoPersonalizado" name="papel_formato_personalizado" value="1" <?= $presupuestoEntity->papel_formato_personalizado == true ? 'checked' : ''; ?>>
|
||||
<label class="form-check-label" for="papelFormatoPersonalizado"><?= lang('Presupuestos.papelFormatoPersonalizado') ?></label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!--//.row -->
|
||||
|
||||
<div class="divider divider-dark text-start mb-1">
|
||||
<div class="divider-text">
|
||||
<h5>Interior</h5>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="errorInterior" class="fv-plugins-message-container invalid-feedback" style="display: none;">
|
||||
<div>No existe combinación con las opciones seleccionadas. Pruebe con otro papel/gramaje</div>
|
||||
</div>
|
||||
|
||||
<h6> Color del interior </h6>
|
||||
|
||||
<div class="row-color">
|
||||
<!-- Fila 1 -->
|
||||
<div class="row mb-2">
|
||||
<!-- Imagen 1 (Color Negro) -->
|
||||
<div class="col-sm-4 offset-sm-1 d-flex flex-column align-items-center justify-content-center">
|
||||
<div id="colorNegroDiv" class="form-check change-tipo-impresion custom-option-color custom-option custom-option-image custom-option-image-radio">
|
||||
<label class="form-check-label custom-option-content" for="colorNegro">
|
||||
<span class="custom-option-body">
|
||||
<img style="height:150px;width:240px" src="<?= site_url('assets/img/bn.png') ?>" alt="">
|
||||
</span>
|
||||
</label>
|
||||
<input name="colorNegro" class="form-check-input calcular-presupuesto" type="radio" value="colorNegro" id="colorNegro"
|
||||
<?php echo ($datosPresupuesto->color_impresion == 'negro' ? ' checked=""': ''); ?> >
|
||||
</div>
|
||||
<!-- Texto alineado debajo de la imagen -->
|
||||
<div>
|
||||
<h6 class="mt-2 text-center">Blanco y Negro Estándar</h6>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Imagen 2 (Color Negro HQ) -->
|
||||
<div class="col-sm-4 d-flex flex-column align-items-center justify-content-center">
|
||||
<div id="colorNegroHqDiv" class="form-check change-tipo-impresion custom-option-color custom-option custom-option-image custom-option-image-radio">
|
||||
<label class="form-check-label custom-option-content" for="colorNegroHq">
|
||||
<span class="custom-option-body">
|
||||
<img style="height:150px;width:240px" src="<?= site_url('assets/img/bn_hq.png') ?>" alt="">
|
||||
</span>
|
||||
</label>
|
||||
<input name="colorNegroHq" class="form-check-input calcular-presupuesto" type="radio" value="colorNegroHq" id="colorNegroHq"
|
||||
<?php echo ($datosPresupuesto->color_impresion == 'negroHq' ? ' checked=""': ''); ?> >
|
||||
</div>
|
||||
<!-- Texto alineado debajo de la imagen -->
|
||||
<div>
|
||||
<h6 class="mt-2 text-center">Blanco y Negro Premium</h6>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- //.row -->
|
||||
|
||||
<!-- Fila 2 -->
|
||||
<div class="row mb-2">
|
||||
<!-- Imagen 3 (Color) -->
|
||||
<div class="col-sm-4 offset-sm-1 d-flex flex-column align-items-center justify-content-center">
|
||||
<div id="colorColorDiv" class="form-check change-tipo-impresion custom-option-color custom-option custom-option-image custom-option-image-radio">
|
||||
<label class="form-check-label custom-option-content" for="colorColor">
|
||||
<span class="custom-option-body">
|
||||
<img style="height:150px;width:240px" src="<?= site_url('assets/img/color.png') ?>" alt="">
|
||||
</span>
|
||||
</label>
|
||||
<input name="colorColor" class="form-check-input calcular-presupuesto" type="radio" value="colorColor" id="colorColor"
|
||||
<?php echo ($datosPresupuesto->color_impresion == 'color' ? ' checked=""': ''); ?> >
|
||||
</div>
|
||||
<!-- Texto alineado debajo de la imagen -->
|
||||
<div>
|
||||
<h6 class="mt-2 text-center">Color Estándar</h6>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Imagen 4 (Color HQ) -->
|
||||
<div class="col-sm-4 d-flex flex-column align-items-center justify-content-center">
|
||||
<div id="colorColorHqDiv" class="form-check change-tipo-impresion custom-option-color custom-option custom-option-image custom-option-image-radio">
|
||||
<label class="form-check-label custom-option-content" for="colorColorHq">
|
||||
<span class="custom-option-body">
|
||||
<img style="height:150px;width:240px" src="<?= site_url('assets/img/color_hq.png') ?>" alt="">
|
||||
</span>
|
||||
</label>
|
||||
<input name="colorColorHq" class="form-check-input calcular-presupuesto" type="radio" value="colorColorHq" id="colorColorHq"
|
||||
<?php echo ($datosPresupuesto->color_impresion == 'colorHq' ? ' checked=""': ''); ?> >
|
||||
</div>
|
||||
<!-- Texto alineado debajo de la imagen -->
|
||||
<div>
|
||||
<h6 class="mt-2 text-center">Color Premium</h6>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- //.row -->
|
||||
</div> <!-- //.row-color -->
|
||||
|
||||
<div id="pagColorDiv" class="row">
|
||||
<div class="col-sm-3 mb-3">
|
||||
<label for="paginasColor" class="form-label">
|
||||
Páginas a color
|
||||
</label>
|
||||
<input type="number" class="calcular-presupuesto" id="paginasColor" name="paginasColor" maxLength="8" step="1" class="form-control" value="<?= old(0, $presupuestoEntity->paginasColor) ?>">
|
||||
</div><!--//.mb-3 -->
|
||||
</div>
|
||||
|
||||
<h6> Papel </h6>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-sm-4 mb-md-0 mb-2">
|
||||
<label for="papelInterior" class="form-label">Tipo de papel</label>
|
||||
<select id="papelInterior" name="papelInterior" class="form-control select2bs2 calcular-presupuesto" style="width: 100%;"></select>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-2 mb-md-0 mb-2">
|
||||
<label for="gramajeInterior" class="form-label">Gramaje (g/m2)</label>
|
||||
<select id="gramajeInterior" name="gramajeInterior" class="form-control select2bs2 calcular-presupuesto" style="width: 100%;">
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<h6> Opciones extra </h6>
|
||||
<div class="row" <?= $clienteId != 0 ?' style="display:none;"':' '?>>
|
||||
<div class="col-sm-3 mb-3 d-flex align-items-end">
|
||||
<div class="form-check form-switch mb-2">
|
||||
<input class="form-check-input calcular-presupuesto" type="checkbox" id="excluirRotativa" name="excluir_rotativa" value="0" <?= $presupuestoEntity->excluir_rotativa == true ? 'checked' : ''; ?>>
|
||||
<label class="form-check-label" for="excluirRotativa">Excluir rotativa</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--SECCION DE CUBIERTA -->
|
||||
<div class="divider divider-dark text-start mb-1">
|
||||
<div class="divider-text">
|
||||
<h5>Cubierta</h5>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="errorCubierta" class="fv-plugins-message-container invalid-feedback" style="display: none;">
|
||||
<div>No existe combinación con las opciones seleccionadas. Pruebe con otro papel/gramaje</div>
|
||||
</div>
|
||||
|
||||
<h6> Papel </h6>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-sm-4 mb-md-0 mb-2">
|
||||
<label for="papelCubierta" class="form-label">Tipo de papel</label>
|
||||
<select id="papelCubierta" name="papelCubierta" class="form-control select2bs2 calcular-presupuesto" style="width: 100%;">
|
||||
<?php if (isset($datosPresupuesto->papelCubierta) && is_array($datosPresupuesto->papelCubierta) && !empty($datosPresupuesto->papelCubierta)) :
|
||||
foreach ($datosPresupuesto->papelCubierta as $k => $v) : ?>
|
||||
<option value="<?= $v->id ?>">
|
||||
<?= $v->nombre ?>
|
||||
</option>
|
||||
<?php endforeach;
|
||||
endif; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-2 mb-md-0 mb-2">
|
||||
<label for="gramajeCubierta" class="form-label">Gramaje (g/m2)</label>
|
||||
<select id="gramajeCubierta" name="gramajeCubierta" class="form-control select2bs2 calcular-presupuesto" style="width: 100%;">
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-sm-4 mb-md-0 mb-2">
|
||||
<label for="carasCubierta" class="form-label">Caras impresas cubierta</label>
|
||||
<select id="carasCubierta" name="carasCubierta" class="form-control select2bs2 calcular-presupuesto" style="width: 100%;">
|
||||
<option value="2" <?php echo $presupuestoEntity->paginas_cubierta==2?'selected':''?> >
|
||||
<p><?= lang('Presupuestos.unaCara') ?></p>
|
||||
</option>
|
||||
<option value="4" <?php echo $presupuestoEntity->paginas_cubierta==4?'selected':''?>>
|
||||
<p><?= lang('Presupuestos.dosCaras') ?></p>
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<h6 class='solapas-cubierta'> Opciones extra </h6>
|
||||
|
||||
<div class="row solapas-cubierta">
|
||||
|
||||
<div class="col-sm-3 mb-md-0 mb-2 d-flex align-items-end">
|
||||
<div class="form-check form-switch mb-2">
|
||||
<input class="form-check-input" type="checkbox" id="solapasCubierta" name="solapasCubierta" value="0" <?= $presupuestoEntity->solapas == true ? 'checked' : ''; ?>>
|
||||
<label class="form-check-label" for="solapasCubierta">Solapas cubierta</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="tamanioSolapasCubierta" class="col-sm-3 mb-md-0 mb-2" <?= $presupuestoEntity->solapas == true ? '' : 'style="display: none;"'; ?>>
|
||||
<label for="anchoSolapasCubierta" class="form-label">Tamaño</label>
|
||||
<input type="number" id="anchoSolapasCubierta" name="anchoSolapasCubierta" maxLength="8" step="1" class="form-control calcular-presupuesto" value="<?= old(0, $presupuestoEntity->solapas_ancho) ?>">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-sm-4 mb-md-0 mb-2">
|
||||
<label for="acabadosCubierta" class="form-label">Acabados cubierta</label>
|
||||
<select id="acabadosCubierta" name="acabadosCubierta" class="form-control select2bs2 calcular-presupuesto" style="width: 100%;">
|
||||
<?php if (isset($datosPresupuesto->acabadosCubierta) && is_array($datosPresupuesto->acabadosCubierta) && !empty($datosPresupuesto->acabadosCubierta)) :
|
||||
foreach ($datosPresupuesto->acabadosCubierta as $acabado) : ?>
|
||||
<option value="<?= $acabado->id ?>" <?= $acabado->id == $presupuestoEntity->acabado_cubierta_id ? ' selected' : '' ?>>
|
||||
<?= $acabado->label ?>
|
||||
</option>
|
||||
<?php endforeach;
|
||||
endif; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!--SECCION DE SOBRECUBIERTA -->
|
||||
<div class="divider divider-dark text-start mb-1 sobrecubierta">
|
||||
<div class="divider-text">
|
||||
<h5>Sobrecubierta</h5>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="errorSobrecubierta" class="fv-plugins-message-container invalid-feedback" style="display: none;">
|
||||
<div>No existe combinación con las opciones seleccionadas. Pruebe con otro papel/gramaje</div>
|
||||
</div>
|
||||
|
||||
<div class="row sobrecubierta">
|
||||
<div class="col-sm-3 mb-md-0 mb-2 d-flex align-items-end">
|
||||
<div class="form-check form-switch mb-2">
|
||||
<input class="form-check-input" type="checkbox" id="enableSobrecubierta" name="enableSobrecubierta" value="0"
|
||||
<?php if (isset($presupuestoEntity->papel_sobrecubierta) && $presupuestoEntity->papel_sobrecubierta>0) :
|
||||
echo 'checked';
|
||||
endif; ?>
|
||||
>
|
||||
<label class="form-check-label" for="enableSobrecubierta">Añadir sobrecubierta</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h6 class="sobrecubierta enable-sobrecubierta"
|
||||
<?php if (isset($presupuestoEntity->papel_sobrecubierta) && $presupuestoEntity->papel_sobrecubierta>0) :
|
||||
echo '';
|
||||
else:
|
||||
echo 'style="display: none;"';
|
||||
endif; ?>
|
||||
> Papel </h6>
|
||||
<div class="row sobrecubierta enable-sobrecubierta">
|
||||
|
||||
<div class="col-sm-4 mb-md-0 mb-2">
|
||||
<label for="papelSobrecubierta" class="form-label">Tipo de papel</label>
|
||||
<select id="papelSobrecubierta" name="papelSobrecubierta" class="form-control select2bs2 calcular-presupuesto input-sobrecubierta" style="width: 100%;">
|
||||
<?php if (isset($datosPresupuesto->papelSobrecubierta) && is_array($datosPresupuesto->papelSobrecubierta) && !empty($datosPresupuesto->papelSobrecubierta)) :
|
||||
foreach ($datosPresupuesto->papelSobrecubierta as $k => $v) : ?>
|
||||
<option value="<?= $v->id ?>">
|
||||
<?= $v->nombre ?>
|
||||
</option>
|
||||
<?php endforeach;
|
||||
endif; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-2 mb-md-0 mb-2">
|
||||
<label for="gramajeSobrecubierta" class="form-label">Gramaje (g/m2)</label>
|
||||
<select id="gramajeSobrecubierta" name="gramajeSobrecubierta" class="form-control select2bs2 calcular-presupuesto input-sobrecubierta" style="width: 100%;">
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<h6 class="sobrecubierta enable-sobrecubierta"
|
||||
<?php if (isset($presupuestoEntity->papel_sobrecubierta) && $presupuestoEntity->papel_sobrecubierta>0) :
|
||||
echo '';
|
||||
else:
|
||||
echo 'style="display: none;"';
|
||||
endif; ?>
|
||||
> Opciones extra </h6>
|
||||
|
||||
<div class="row sobrecubierta enable-sobrecubierta"
|
||||
<?php if (isset($presupuestoEntity->papel_sobrecubierta) && $presupuestoEntity->papel_sobrecubierta>0) :
|
||||
echo '';
|
||||
else:
|
||||
echo 'style="display: none;"';
|
||||
endif; ?>
|
||||
>
|
||||
|
||||
<div id="tamanioSolapasSobrecubierta" class="col-sm-3 mb-md-0 mb-2"">
|
||||
<label for="anchoSolapasSobrecubierta" class="form-label">Tamaño solapas</label>
|
||||
<input type="number" id="anchoSolapasSobrecubierta" name="anchoSolapasSobrecubierta" maxLength="8" step="1" class="form-control input-sobrecubierta calcular-presupuesto" value="<?= old(0, $presupuestoEntity->solapas_ancho_sobrecubierta) ?>">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row sobrecubierta enable-sobrecubierta"
|
||||
<?php if (isset($presupuestoEntity->papel_sobrecubierta) && $presupuestoEntity->papel_sobrecubierta>0) :
|
||||
echo '';
|
||||
else:
|
||||
echo 'style="display: none;"';
|
||||
endif; ?>
|
||||
>
|
||||
|
||||
<div class="col-sm-4 mb-md-0 mb-2">
|
||||
<label for="acabadosSobrecubierta" class="form-label">Acabados sobrecubierta</label>
|
||||
<select id="acabadosSobrecubierta" name="acabadosSobrecubierta" class="form-control select2bs2 calcular-presupuesto" style="width: 100%;">
|
||||
<?php if (isset($datosPresupuesto->acabadosSobrecubierta) && is_array($datosPresupuesto->acabadosSobrecubierta) && !empty($datosPresupuesto->acabadosSobrecubierta)) :
|
||||
foreach ($datosPresupuesto->acabadosSobrecubierta as $acabado) : ?>
|
||||
<option value="<?= $acabado->id ?>" <?= $acabado->id == $presupuestoEntity->acabado_sobrecubierta_id ? ' selected' : '' ?>>
|
||||
<?= $acabado->label ?>
|
||||
</option>
|
||||
<?php endforeach;
|
||||
endif; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!--SECCION DE GUARDAS -->
|
||||
<div class="divider divider-dark text-start mb-1 guardas">
|
||||
<div class="divider-text">
|
||||
<h5>Guardas</h5>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="errorGuardas" class="fv-plugins-message-container invalid-feedback" style="display: none;">
|
||||
<div>No existe combinación con las opciones seleccionadas. Pruebe con otro papel/gramaje</div>
|
||||
</div>
|
||||
|
||||
<div id="divGuardas" class="row guardas">
|
||||
<div class="col-sm-4 mb-md-0 mb-2">
|
||||
<label for="impresionGuardas" class="form-label">Impresión de guardas</label>
|
||||
<select id="impresionGuardas" name="impresionGuardas" class="form-control select2bs2 comp_guardas_items calcular-presupuesto" style="width: 100%;">
|
||||
<option value="0"
|
||||
<?php echo ((!isset($presupuestoEntity->paginas_guardas) || $presupuestoEntity->paginas_guardas==0) ? 'selected' : ''); ?>
|
||||
>
|
||||
<p><?= lang('Presupuestos.sinImpresion') ?></p>
|
||||
</option>
|
||||
<option value="4"
|
||||
<?php echo ($presupuestoEntity->paginas_guardas==4 ? 'selected' : ''); ?>
|
||||
>
|
||||
<p><?= lang('Presupuestos.unaCara') ?></p>
|
||||
</option>
|
||||
<option value="8"
|
||||
<?php echo ($presupuestoEntity->paginas_guardas==8 ? 'selected' : ''); ?>
|
||||
>
|
||||
<p><?= lang('Presupuestos.dosCaras') ?></p>
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row guardas">
|
||||
<div class="col-sm-4 mb-md-0 mb-2">
|
||||
<label for="papelGuardas" class="form-label">Tipo de papel</label>
|
||||
<select id="papelGuardas" name="papelGuardas" class="form-control select2bs2 calcular-presupuesto" style="width: 100%;">
|
||||
<?php if (isset($datosPresupuesto->papelGuardas) && is_array($datosPresupuesto->papelGuardas) && !empty($datosPresupuesto->papelGuardas)) :
|
||||
foreach ($datosPresupuesto->papelGuardas as $k => $v) : ?>
|
||||
<option value="<?= $v->id ?>" <?php echo ($v->id==$presupuestoEntity->papel_guardas?'selected':'');?> >
|
||||
<?= $v->nombre ?>
|
||||
</option>
|
||||
<?php endforeach;
|
||||
endif; ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!--SECCION DE SERVICIOS EXTRA -->
|
||||
<div class="divider divider-dark text-start mb-1">
|
||||
<div class="divider-text">
|
||||
<h5>Servicios Extra</h5>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-12 col-lg-3 px-4">
|
||||
<div class="mb-3">
|
||||
<div class="form-check">
|
||||
<label for="retractilado" class="form-check-label">
|
||||
<input type="checkbox" id="retractilado" name="retractilado" serv_id="3" value="1" class="form-check-input servicio-extra calcular-presupuesto" <?= $presupuestoEntity->retractilado == true ? 'checked' : ''; ?>>
|
||||
<?= lang('Presupuestos.retractilado') ?>
|
||||
</label>
|
||||
</div><!--//.form-check -->
|
||||
</div><!--//.mb-3 -->
|
||||
</div><!--//.col -->
|
||||
|
||||
<div class="col-md-12 col-lg-3 px-4">
|
||||
<div class="mb-3">
|
||||
<div class="form-check">
|
||||
<label for="retractilado5" class="form-check-label">
|
||||
<input type="checkbox" id="retractilado5" name="retractilado_5" serv_id="5" value="1" class="form-check-input servicio-extra calcular-presupuesto" <?= $presupuestoEntity->retractilado5 == true ? 'checked' : ''; ?>>
|
||||
<?= lang('Presupuestos.retractilado5') ?>
|
||||
</label>
|
||||
</div><!--//.form-check -->
|
||||
</div><!--//.mb-3 -->
|
||||
</div><!--//.col -->
|
||||
|
||||
|
||||
<div class="col-md-12 col-lg-3 px-4">
|
||||
<div class="mb-3">
|
||||
<div class="form-check">
|
||||
<label for="fajaColor" class="form-check-label">
|
||||
<input type="checkbox" id="fajaColor" name="faja_color" value="1" serv_id="16" class="form-check-input servicio-extra calcular-presupuesto" <?= $presupuestoEntity->faja_color == true ? 'checked' : ''; ?>>
|
||||
<?= lang('Presupuestos.fajaColor') ?>
|
||||
</label>
|
||||
</div><!--//.form-check -->
|
||||
</div><!--//.mb-3 -->
|
||||
</div><!--//.col -->
|
||||
|
||||
<div class="col-md-12 col-lg-3 px-4">
|
||||
<div class="mb-3">
|
||||
<div class="form-check">
|
||||
<label for="prototipo" class="form-check-label">
|
||||
<input type="checkbox" id="prototipo" name="prototipo" value="1" serv_id="9" class="form-check-input servicio-extra calcular-presupuesto" <?= $presupuestoEntity->prototipo == true ? 'checked' : ''; ?>>
|
||||
<?= lang('Presupuestos.prototipo') ?>
|
||||
</label>
|
||||
</div><!--//.form-check -->
|
||||
</div><!--//.mb-3 -->
|
||||
<div class="mb-3">
|
||||
|
||||
</div><!--//.mb-3 -->
|
||||
</div><!--//.col -->
|
||||
|
||||
<div class="col-md-12 col-lg-3 px-4">
|
||||
<div class="mb-3">
|
||||
<div class="form-check">
|
||||
<label for="ferro" class="form-check-label">
|
||||
<input type="checkbox" id="ferro" name="ferro" value="1" serv_id="24" class="form-check-input servicio-extra calcular-presupuesto" <?= $presupuestoEntity->ferro == true ? 'checked' : ''; ?>>
|
||||
<?= lang('Presupuestos.ferro') ?>
|
||||
</label>
|
||||
</div><!--//.form-check -->
|
||||
</div><!--//.mb-3 -->
|
||||
</div><!--//.col -->
|
||||
|
||||
</div><!--//.row -->
|
||||
|
||||
<!--SECCION DE OTRAS OPCIONES -->
|
||||
<div class="divider divider-dark text-start mb-1">
|
||||
<div class="divider-text">
|
||||
<h5>Otras opciones</h5>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-2 mb-md-0 mb-2">
|
||||
<label for="ivaReducido" class="form-label">I.V.A. reducido</label>
|
||||
<select id="ivaReducido" name="ivaReducido" class="form-control select2bs2 calcular-presupuesto" style="width: 100%;">
|
||||
<option value="1" <?= $presupuestoEntity->iva_reducido == 1? 'selected':''?> >
|
||||
<p><?= lang('SI') ?></p>
|
||||
</option>
|
||||
<option value="0" <?= $presupuestoEntity->iva_reducido == 0? 'selected':''?> >
|
||||
<p><?= lang('NO') ?></p>
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<p class="mt-2">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%.</p>
|
||||
</div>
|
||||
|
||||
</div><!--//.col -->
|
||||
</div>
|
||||
|
||||
|
||||
<?= $this->section("additionalInlineJs") ?>
|
||||
|
||||
|
||||
window.datosDisenioLibro = {
|
||||
papel_interior: <?php echo $presupuestoEntity->papel_interior ? $presupuestoEntity->papel_interior : 'null'; ?>,
|
||||
gramaje_interior: <?php echo $presupuestoEntity->gramaje_interior ? $presupuestoEntity->gramaje_interior : 'null'; ?>,
|
||||
papel_cubierta: <?php echo $presupuestoEntity->papel_cubierta ? $presupuestoEntity->papel_cubierta : 'null'; ?>,
|
||||
gramaje_cubierta: <?php echo $presupuestoEntity->gramaje_cubierta ? $presupuestoEntity->gramaje_cubierta : 'null'; ?>,
|
||||
papel_sobrecubierta: <?php echo $presupuestoEntity->papel_sobrecubierta ? $presupuestoEntity->papel_sobrecubierta : 'null'; ?>,
|
||||
gramaje_sobrecubierta: <?php echo $presupuestoEntity->gramaje_sobrecubierta ? $presupuestoEntity->gramaje_sobrecubierta : 'null'; ?>,
|
||||
}
|
||||
window.routes_disenio_libro = {
|
||||
obtenerGramaje: "<?= route_to('obtenerGramaje') ?>",
|
||||
presupuestoCliente: "<?= route_to('presupuestoCliente') ?>",
|
||||
}
|
||||
<?= $this->endSection() ?>
|
||||
@ -0,0 +1,316 @@
|
||||
<div class="col-12 pb-2">
|
||||
<div class="row mb-3">
|
||||
<?php if($presupuestoEntity->estado_id==2): ?>
|
||||
<h2>PRESUPUESTO ACEPTADO</h2>
|
||||
<input type="hidden" id="lomo_cubierta" value=<?php echo $presupuestoEntity->lomo_cubierta ?>>
|
||||
<br>
|
||||
<?php endif; ?>
|
||||
<h3>Resumen</h3>
|
||||
<div class="col-sm-6">
|
||||
<h5 class="mb-1">Libro</h5>
|
||||
<p class="mb-0"><small id="tipoLibro"><?php echo (isset($presupuestoEntity->resumen->titulo)?$presupuestoEntity->resumen->titulo:'') ?></small></p>
|
||||
<p class="mb-0"><small id="resumenTamanio">Tamaño: <?php echo (isset($presupuestoEntity->resumen->tamanio)?$presupuestoEntity->resumen->tamanio:'') ?></small></p>
|
||||
<p class="mb-0"><small id="resumenPaginas">Número de páginas: <?php echo $presupuestoEntity->paginas ?></small></p>
|
||||
<p class="mb-0"><small id="resumenTirada">Tirada: <?php echo $presupuestoEntity->tirada ?></small></p>
|
||||
<p class="mb-0"><small id="resumenPrototipo">Prototipo: <?php echo ($presupuestoEntity->prototipo?'SI':'NO') ?></small></p>
|
||||
<p class="mb-3"><small id="resumenFerro">Ferro: <?php echo ($presupuestoEntity->ferro?'SI':'NO') ?></small></p>
|
||||
|
||||
<h5 class="mb-1">Interior</h5>
|
||||
<p class="mb-0"><small id="tipoImpresion">Impresion:
|
||||
<?php echo (isset($presupuestoEntity->resumen->tipo_impresion)?$presupuestoEntity->resumen->tipo_impresion:'') ?>
|
||||
</small></p>
|
||||
<p id="pResumenPaginasColor" class="mb-0" <?php echo ($presupuestoEntity->paginasColor==0?'style="display:none"':'')?>>
|
||||
<small id="resumenPaginasColor">Páginas a color: <?php echo $presupuestoEntity->paginasColor?></small></p>
|
||||
<p class="mb-3"><small id="resumenPapelInterior">Papel:
|
||||
<?php echo (isset($presupuestoEntity->papel_interior_nombre)?$presupuestoEntity->papel_interior_nombre:'') ?>
|
||||
<?php echo (isset($presupuestoEntity->gramaje_interior)?$presupuestoEntity->gramaje_interior:'') ?>gr/m²</small></p>
|
||||
|
||||
<h5 class="mb-1">Cubierta</h5>
|
||||
<p class="mb-0"><small id="resumenPapelCubierta">Papel:
|
||||
<?php echo (isset($presupuestoEntity->papel_cubierta_nombre)?$presupuestoEntity->papel_cubierta_nombre:''); ?>
|
||||
<?php echo (isset($presupuestoEntity->gramaje_cubierta)?$presupuestoEntity->gramaje_cubierta:''); ?>gr/m²</small></p>
|
||||
<p class="mb-0"><small id="resumenCarasCubierta">Impresión: <?php echo ($presupuestoEntity->paginas_cubierta==2?"1 cara":"2 caras");?></small></p>
|
||||
<?php if($presupuestoEntity->solapas_ancho>0 || $presupuestoEntity->estado_id==1): ?>
|
||||
<p class="mb-0"><small id="resumenSolapasCubierta">Solapas: <?php echo $presupuestoEntity->solapas_ancho;?>mm</small></p>
|
||||
<?php endif; ?>
|
||||
<?php if($presupuestoEntity->acabado_cubierta_id>0 || $presupuestoEntity->estado_id==1): ?>
|
||||
<p class="mb-3"><small id="resumenAcabadoCubierta">Acabado:
|
||||
<?php if (isset($datosPresupuesto->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; ?>
|
||||
</small></p>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if($presupuestoEntity->papel_sobrecubierta || $presupuestoEntity->estado_id==1): ?>
|
||||
<h5 class="mb-1 resumen-sobrecubierta">Sobrecubierta</h5>
|
||||
<p class="mb-0 resumen-sobrecubierta"><small id="resumenPapelSobrecubierta">Papel:
|
||||
<?php echo (isset($presupuestoEntity->papel_sobrecubierta_nombre)?$presupuestoEntity->papel_sobrecubierta_nombre:'') ?>
|
||||
<?php echo (isset($presupuestoEntity->gramaje_sobrecubierta)?$presupuestoEntity->gramaje_sobrecubierta:'') ?>gr/m²</small></p>
|
||||
<?php if($presupuestoEntity->solapas_ancho_sobrecubierta>0 || $presupuestoEntity->estado_id==1): ?>
|
||||
<p class="mb-0 resumen-sobrecubierta"><small id="resumenSolapasCubierta">Ancho solapas: <?php echo $presupuestoEntity->solapas_ancho_sobrecubierta;?>mm</small></p>
|
||||
<?php endif; ?>
|
||||
<p class="mb-3 resumen-sobrecubierta"><small id="resumenAcabadoSobrecubierta">Acabado:
|
||||
<?php if (isset($datosPresupuesto->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; ?>
|
||||
</small></p>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if($presupuestoEntity->papel_guardas || $presupuestoEntity->estado_id==1): ?>
|
||||
<h5 class="mb-1 resumen-guardas">Guardas</h5>
|
||||
<p class="mb-0 resumen-guardas"><small id="resumenGuardasPapel">Papel:
|
||||
<?php echo (isset($presupuestoEntity->papel_guardas_nombre)?$presupuestoEntity->papel_guardas_nombre:''); ?>
|
||||
170gr/m²</small></p>
|
||||
<p class="mb-3 resumen-guardas"><small id="resumenGuardasCaras">Impresión:
|
||||
<?php if(!isset($presupuestoEntity->paginas_guardas) || $presupuestoEntity->paginas_guardas==0):
|
||||
echo "Sin impresion";
|
||||
elseif($presupuestoEntity->paginas_guardas==4):
|
||||
echo "1 cara";
|
||||
else:
|
||||
echo "2 caras";
|
||||
endif; ?></small></p>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if($presupuestoEntity->retractiladol || $presupuestoEntity->retractilado5 || $presupuestoEntity->faja_color || $presupuestoEntity->estado_id==1): ?>
|
||||
<h5 class="mb-1 resumen-extras">Extras</h5>
|
||||
<?php endif; ?>
|
||||
<?php if($presupuestoEntity->retractiladol): ?>
|
||||
<p class="mb-0 resumen-extras" id="resumenRetractilado1"><small>Retractilado individual</small></p>
|
||||
<?php elseif ($presupuestoEntity->retractilado5): ?>
|
||||
<p class="mb-0 resumen-extras" id="resumenRetractilado5"><small>Retractilado de 5</small></p>
|
||||
<?php elseif ($presupuestoEntity->faja_color): ?>
|
||||
<p class="mb-0 resumen-extras" id="resumenFajaColor"><small>Imprimir faja a color</small></p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-6">
|
||||
|
||||
<?php if($presupuestoEntity->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 '<h4 id="resumenTotalIVA" class="mb-1">Total: ' . round($total, 2) . '€</h4>';
|
||||
echo '<h6 id="resumenPrecioU" class="mb-0">' . round($total_unidad, 4) . '€/ud</h6>'
|
||||
?>
|
||||
<?php else: ?>
|
||||
<h4 id="resumenTotalIVA" class="mb-1">Total: 100€</h4>
|
||||
<h6 id="resumenPrecioU" class="mb-0">10.4€/ud</h6>
|
||||
<?php endif; ?>
|
||||
<div id="shape-container">
|
||||
<div id="thumbnail_ec_shape" style="width:350px;height:300px;margin:2.5% auto;"></div>
|
||||
<div class="d-flex justify-content-center">
|
||||
<button type="button" id="pv_details" class="btn btn-primary align-content-center"
|
||||
data-bs-toggle="modal" data-bs-target="#pv_ec_modal">
|
||||
Previsualizar detalles de cubierta
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php if($presupuestoEntity->estado_id==2):
|
||||
echo '<div class="row mb-3">';
|
||||
echo '<h3>Direcciones de envío</h3>';
|
||||
echo '<div class="col-sm-6">';
|
||||
if(isset($presupuestoEntity->direcciones_envio)):
|
||||
foreach ($presupuestoEntity->direcciones_envio as $direccion):
|
||||
echo '<div class="row mb-3">';
|
||||
echo '<div class="col-sm-5 form-check custom-option custom-option-basic checked">';
|
||||
echo '<label class="form-check-label custom-option-content">';
|
||||
echo '<span class="custom-option-header mb-2">';
|
||||
echo '<h6 class="fw-semibold mb-0">' . $direccion['att'] . '</h6>';
|
||||
echo '<span class="badge bg-label-primary">' . $direccion['cantidad'] . ' unidades</span>';
|
||||
echo '</span>';
|
||||
echo '<span class="custom-option-body">';
|
||||
echo '<small>' . $direccion['direccion'] . '</small><br>';
|
||||
echo '<small>' . $direccion['cp'] . '</small><br>';
|
||||
echo '<small>' . $direccion['municipio'] .', ' . $direccion['pais'] . '</small><br>';
|
||||
echo '<small>' . $direccion['telefono'] . '</small><br>';
|
||||
echo '<small>' . $direccion['email'] . '</small><br>';
|
||||
if($direccion['entregaPieCalle'] == 1){
|
||||
echo '<small><i>Envío en palets</i></small><br>';
|
||||
}
|
||||
echo '<hr class="my-2">';
|
||||
echo '</span>';
|
||||
echo '</label>';
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
endforeach;
|
||||
endif;
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
endif; ?>
|
||||
|
||||
<?php if($presupuestoEntity->estado_id==2): ?>
|
||||
<div class="row mb-3">
|
||||
<h3>Ficheros</h3>
|
||||
<div class="col-12">
|
||||
<div class="dropzone needsclick" id="dropzone-multi" >
|
||||
<div class="dz-message needsclick">
|
||||
Arrastre aquí los ficheros o haga click
|
||||
</div>
|
||||
<div class="fallback">
|
||||
<input name="file" type="file" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button id="submit-all" class="btn mt-3 btn-primary btn-submit waves-effect waves-light ml-2">
|
||||
<span class="align-middle d-sm-inline-block d-none me-sm-1">Actualizar ficheros</span>
|
||||
<i class="ti ti-upload ti-xs"></i>
|
||||
</button>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
<!-- Modal -->
|
||||
<div class="modal fade" id="pv_ec_modal" tabindex="-1">
|
||||
<div class="modal-dialog modal-xl modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Esquema de cubierta</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close">
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body" >
|
||||
<div id="pv_ec_shape" style="width:850px;height:600px;margin:2.5% auto;"></div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<?= $this->section("additionalInlineJs") ?>
|
||||
window.estado = <?= $presupuestoEntity->estado_id ?? 1?>;
|
||||
window.tirada = <?= $presupuestoEntity->selected_tirada ?? 0?>;
|
||||
window.total = <?= $presupuestoEntity->total_aceptado ?? 0?>;
|
||||
window.total_unidad = <?= $presupuestoEntity->total_precio_unidad ?? 0 ?>;
|
||||
window.routes_resumen = {
|
||||
guardarPresupuesto: "<?= route_to('guardarPresupuesto') ?>",
|
||||
duplicarPresupuesto: "<?= route_to('duplicarPresupuesto') ?>",
|
||||
}
|
||||
|
||||
<?php if ($presupuestoEntity->estado_id===2): ?>
|
||||
previewEsquemaCubierta(true);
|
||||
|
||||
const previewTemplate = `<div class="dz-preview dz-file-preview">
|
||||
<div class="dz-details">
|
||||
<div class="dz-thumbnail">
|
||||
<!---<img data-dz-thumbnail>
|
||||
<span class="dz-nopreview">No preview</span> --->
|
||||
<div class="dz-success-mark"></div>
|
||||
<div class="dz-error-mark"></div>
|
||||
<div class="dz-error-message"><span data-dz-errormessage></span></div>
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-primary" role="progressbar" aria-valuemin="0" aria-valuemax="100" data-dz-uploadprogress></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dz-filename" data-dz-name></div>
|
||||
<div class="dz-size" data-dz-size></div>
|
||||
</div>
|
||||
</div>`;
|
||||
|
||||
Dropzone.autoDiscover = false;
|
||||
|
||||
var dropzoneMulti = new Dropzone('#dropzone-multi', {
|
||||
url: "<?= site_url('presupuestos/presupuestocliente/upload_files') ?>",
|
||||
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: "<?= site_url('presupuestos/presupuestocliente/get_files') ?>",
|
||||
type: 'POST',
|
||||
data: { presupuesto_id: <?= $presupuestoEntity->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("<span class='dz-remove'>Ver</span>");
|
||||
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', <?= $presupuestoEntity->id ?>);
|
||||
|
||||
$.ajax({
|
||||
url: "<?= site_url('presupuestos/presupuestocliente/upload_files') ?>",
|
||||
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;
|
||||
});
|
||||
<?php endif; ?>
|
||||
<?= $this->endSection() ?>
|
||||
@ -0,0 +1,122 @@
|
||||
<div class="col-12 pb-2">
|
||||
<div class="tipo_libro">
|
||||
|
||||
<input type="hidden" id="lomo_cubierta" value=<?php echo $presupuestoEntity->lomo_cubierta ?>>
|
||||
|
||||
<div class="row row-cols-3 mb-6 d-flex justify-content-center d-flex justify-content-center">
|
||||
|
||||
<div class="container col-md-4 mb-6 d-flex justify-content-center" style="margin-bottom: 40px;">
|
||||
<div>
|
||||
<div style="max-width:200px;max-height:200px;padding-right:0px" id="cosidoDiv"
|
||||
class="form-check custom-option-tipo custom-option custom-option-image custom-option-image-radio
|
||||
<?php
|
||||
if($datosPresupuesto->tipo_libro == 'cosido' || $datosPresupuesto->tipo_libro == ''){
|
||||
echo ' checked"';
|
||||
}
|
||||
else
|
||||
{
|
||||
echo '"';
|
||||
}
|
||||
?>
|
||||
>
|
||||
<label style="max-width:200px;max-height:200px;" class="form-check-label custom-option-content"
|
||||
for="tipoCosido">
|
||||
<span class="custom-option-body">
|
||||
<img style="max-width:200px;max-height:200px;"
|
||||
src="<?= site_url("assets/img/libro_cosido.png") ?>" alt="radioImg">
|
||||
</span>
|
||||
</label>
|
||||
<input name="cosido" class="form-check-input elementos-libro calcular-presupuesto" type="radio" value="tipoCosido"
|
||||
id="tipoCosido"
|
||||
<?php
|
||||
if($datosPresupuesto->tipo_libro == 'cosido' || $datosPresupuesto->tipo_libro == ''){
|
||||
echo 'checked=""';
|
||||
}
|
||||
?>
|
||||
>
|
||||
</div>
|
||||
<h4 class="text-center">Rústica cosido</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container col-md-4 mb-6 d-flex justify-content-center" style="margin-bottom: 40px;">
|
||||
<div>
|
||||
<div style="max-width:200px;max-height:200px;padding-right:0px" id="fresadoDiv"
|
||||
class="form-check custom-option-tipo custom-option custom-option-image custom-option-image-radio
|
||||
<?php echo ($datosPresupuesto->tipo_libro == 'fresado' ? ' checked"': '"'); ?> >
|
||||
<label style="max-width:200px;max-height:200px;" class="form-check-label custom-option-content"
|
||||
for="tipoFresado">
|
||||
<span class="custom-option-body">
|
||||
<img style="max-width:200px;max-height:200px;"
|
||||
src="<?= site_url("assets/img/libro_fresado.png") ?>" alt="radioImg2">
|
||||
</span>
|
||||
</label>
|
||||
<input name="fresado" class="form-check-input elementos-libro calcular-presupuesto" type="radio" value="tipoFresado"
|
||||
id="tipoFresado" <?php echo (($datosPresupuesto->tipo_libro)=='fresado'? 'checked=""':''); ?> >
|
||||
</div>
|
||||
<h4 class="text-center">Rústica fresado</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container col-md-4 mb-6 d-flex justify-content-center" style="margin-bottom: 40px;">
|
||||
<div>
|
||||
<div style="max-width:200px;max-height:200px;padding-right:0px" id="grapadoDiv"
|
||||
class="form-check custom-option-tipo custom-option custom-option-image custom-option-image-radio
|
||||
<?php echo ($datosPresupuesto->tipo_libro == 'grapado' ? ' checked"': '"'); ?> >
|
||||
<label style="max-width:200px;max-height:200px;" class="form-check-label custom-option-content"
|
||||
for="tipoGrapado">
|
||||
<span class="custom-option-body">
|
||||
<img style="max-width:200px;max-height:200px;"
|
||||
src="<?= site_url("assets/img/libro_grapado.png") ?>" alt="radioImg3">
|
||||
</span>
|
||||
</label>
|
||||
<input name="grapado" class="form-check-input elementos-libro calcular-presupuesto" type="radio" value="tipoGrapado"
|
||||
id="tipoGrapado" <?php echo (($datosPresupuesto->tipo_libro)=='grapado'? 'checked=""':''); ?> >
|
||||
</div>
|
||||
<h4 class="text-center">Cosido con grapas</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row row-cols-3 d-flex justify-content-center d-flex justify-content-center">
|
||||
<div class="col-md-4 mb-6 d-flex justify-content-center">
|
||||
<div>
|
||||
<div style="max-width:200px;max-height:200px;padding-right:0px" id="espiralDiv"
|
||||
class="form-check custom-option-tipo custom-option custom-option-image custom-option-image-radio
|
||||
<?php echo ($datosPresupuesto->tipo_libro == 'espiral' ? ' checked"': '"'); ?> >
|
||||
<label style="max-width:200px;max-height:200px;" class="form-check-label custom-option-content"
|
||||
for="tipoEspiral">
|
||||
<span class="custom-option-body">
|
||||
<img style="max-width:200px;max-height:200px;"
|
||||
src="<?= site_url("assets/img/libro_espiral.png") ?>" alt="radioImg4">
|
||||
</span>
|
||||
</label>
|
||||
<input name="espiral" class="form-check-input elementos-libro calcular-presupuesto" type="radio" value="tipoEspiral"
|
||||
id="tipoEspiral" <?php echo (($datosPresupuesto->tipo_libro)=='espiral'? 'checked=""':''); ?> >
|
||||
</div>
|
||||
<h4 class="text-center">Espiral</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 mb-6 d-flex justify-content-center" >
|
||||
<div>
|
||||
<div style="max-width:200px;max-height:200px;padding-right:0px" id="wireoDiv"
|
||||
class="form-check custom-option-tipo custom-option custom-option-image custom-option-image-radio
|
||||
<?php echo ($datosPresupuesto->tipo_libro == 'wireo' ? ' checked"': '"'); ?> >
|
||||
<label style="max-width:200px;max-height:200px;" class="form-check-label custom-option-content"
|
||||
for="tipoWireO">
|
||||
<span class="custom-option-body">
|
||||
<img style="max-width:200px;max-height:200px;"
|
||||
src="<?= site_url("assets/img/libro_wire-o.png") ?>" alt="radioImg5">
|
||||
</span>
|
||||
</label>
|
||||
<input name="wireo" class="form-check-input elementos-libro calcular-presupuesto" type="radio" value="tipoWireO"
|
||||
id="tipoWireO" <?php echo (($datosPresupuesto->tipo_libro)=='wireo'? 'checked=""':''); ?> >
|
||||
</div>
|
||||
<h4 class="text-center">Wire-o</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -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('<option value="' + value.id + '">' + value.text + '</option>');
|
||||
});
|
||||
$("#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 += '<div class="col-sm-3">';
|
||||
html += '<div id=div-env_' + id + ' class="form-check custom-option custom-option-basic custom-option-tiradasDirecciones">';
|
||||
html += '<label class="form-check-label custom-option-content" for="tiradaEnvios' + i + '">';
|
||||
html += '<input name=env_"' + id + '" peso="' + peso + '" class="form-check-input" type="radio" value="" id="env_' + id + '"></input>';
|
||||
html += '<span class="custom-option-header">';
|
||||
html += '<span id="tiradaDireccionesValue' + i + '" class="h6 mb-0">' + $('#' + tirada_id).text().split(' ')[0] + '</span>';
|
||||
html += '<span class="text-muted">' + $('#' + total_id).text() + '</span>';
|
||||
html += '</span>';
|
||||
html += '<span class="custom-option-body">';
|
||||
html += '<small>' + $('#' + precio_u_id).text() + '</small>';
|
||||
html += '</span>';
|
||||
html += '</label>';
|
||||
html += '</div>';
|
||||
html += '</div>';
|
||||
|
||||
$('#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<window.direcciones.length; i++){
|
||||
const tipo = window.direcciones[i].entregaPieCalle == 1?'palets':'cajas';
|
||||
let html = '';
|
||||
html += '<div id="envioId' + window.direcciones[i].direccion_id + '" t="' + tipo + '" p= ' +window.direcciones[i].precio + ' class="row mb-3">';
|
||||
html += '<div class="col-sm-5 form-check custom-option custom-option-basic checked">';
|
||||
html += '<label class="form-check-label custom-option-content" for="customRadioAddress1">';
|
||||
html += '<span class="custom-option-header mb-2">';
|
||||
html += '<h6 class="fw-semibold mb-0">' + window.direcciones[i].att + '</h6>';
|
||||
html += '<span class="badge bg-label-primary">' + window.direcciones[i].cantidad + ' unidades</span>';
|
||||
html += '</span>';
|
||||
html += '<span class="custom-option-body">';
|
||||
html += '<small>' + window.direcciones[i].direccion + '</small><br>';
|
||||
html += '<small>' + window.direcciones[i].cp + '</small><br>';
|
||||
html += '<small>' + window.direcciones[i].municipio +', ' + window.direcciones[i].pais + '</small><br>';
|
||||
html += '<small>' + window.direcciones[i].telefono + '</small><br>';
|
||||
html += '<small>' + window.direcciones[i].email + '</small><br>';
|
||||
if(tipo == 'palets'){
|
||||
html += '<small><i>Envío en palets</i></small><br>';
|
||||
}
|
||||
html += '<hr class="my-2">';
|
||||
html += '<span class="d-flex">';
|
||||
html += '<a class="eliminar-direccion" href="javascript:void(0)">Eliminar</a>';
|
||||
html += '</span>';
|
||||
html += '</span>';
|
||||
html += '</label>';
|
||||
html += '</div>';
|
||||
html += '</div>';
|
||||
|
||||
$('#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<elements.length; index++){
|
||||
let unidades_direcciones = parseInt($(elements[index]).find('div label span span').text().split(' ')[0]);
|
||||
total += unidades_direcciones;
|
||||
};
|
||||
}
|
||||
return total;
|
||||
}
|
||||
|
||||
|
||||
$('#insertarDireccion').on('click', function() {
|
||||
|
||||
if( $('#direcciones').val() > 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 += '<div id="envioId' + response.data[0].id + '" t="' +response.data[0].tipo + '" p= ' +response.data[0].coste + ' class="row mb-3">';
|
||||
html += '<div class="col-sm-5 form-check custom-option custom-option-basic checked">';
|
||||
html += '<label class="form-check-label custom-option-content" for="customRadioAddress1">';
|
||||
html += '<span class="custom-option-header mb-2">';
|
||||
html += '<h6 class="fw-semibold mb-0">' + response.data[0].att + '</h6>';
|
||||
html += '<span class="badge bg-label-primary">' + unidades + ' unidades</span>';
|
||||
html += '</span>';
|
||||
html += '<span class="custom-option-body">';
|
||||
html += '<small>' + response.data[0].direccion + '</small><br>';
|
||||
html += '<small>' + response.data[0].cp + '</small><br>';
|
||||
html += '<small>' + response.data[0].municipio +', ' + response.data[0].pais + '</small><br>';
|
||||
html += '<small>' + response.data[0].telefono + '</small><br>';
|
||||
html += '<small>' + response.data[0].email + '</small><br>';
|
||||
if(response.data[0].tipo == 'palets'){
|
||||
html += '<small><i>Envío en palets</i></small><br>';
|
||||
}
|
||||
html += '<hr class="my-2">';
|
||||
html += '<span class="d-flex">';
|
||||
html += '<a class="eliminar-direccion" href="javascript:void(0)">Eliminar</a>';
|
||||
html += '</span>';
|
||||
html += '</span>';
|
||||
html += '</label>';
|
||||
html += '</div>';
|
||||
html += '</div>';
|
||||
|
||||
$('#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<elements.length; index++){
|
||||
let unidades_direcciones = parseInt($(elements[index]).find('div label span span').text().split(' ')[0]);
|
||||
total += unidades_direcciones;
|
||||
};
|
||||
}
|
||||
|
||||
if(total <= tirada) {
|
||||
$('#errorDirecciones').hide();
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
$('#direcciones').on('change', function() {
|
||||
if( $('#direcciones').val() == 0 ) {
|
||||
$("#addressForm").attr('action','create')
|
||||
|
||||
var $newAddDialog = $("#addressForm")
|
||||
$newAddDialog.modal('show')
|
||||
|
||||
$newAddDialog.on('hidden.bs.modal', function (e) {
|
||||
$('#direcciones').val('');
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
function saveAdd_callback(){
|
||||
if($('#addressForm').attr('action')=='create'){
|
||||
let data = {
|
||||
cliente_id: $('#clienteId').val(),
|
||||
alias: $('#add_alias').val(),
|
||||
att: $('#add_att').val(),
|
||||
email: $('#add_email').val(),
|
||||
direccion: $('#add_direccion').val(),
|
||||
pais_id: $("#add_pais_id option:selected").val(),
|
||||
municipio: $('#add_municipio').val(),
|
||||
provincia: $('#add_provincia').val(),
|
||||
cp: $('#add_cp').val(),
|
||||
telefono: $('#add_telefono').val(),
|
||||
}
|
||||
data = Object.assign(data, window.token_ajax)
|
||||
|
||||
$.ajax({
|
||||
url: window.routes_direcciones.nuevaDireccion,
|
||||
type: 'POST',
|
||||
data: data,
|
||||
success: function(response) {
|
||||
$("#direcciones").empty();
|
||||
$.each(response.data, function(index, value) {
|
||||
$("#direcciones").append('<option value="' + value.id + '">' + value.text + '</option>');
|
||||
});
|
||||
$("#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<elements.length; index++){
|
||||
const unidades = parseInt($(elements[index]).find('div label span span').text().split(' ')[0]);
|
||||
const id = $(elements[index]).attr('id').replace('envioId', '');
|
||||
const tipo = $(elements[index]).attr('t');
|
||||
|
||||
direcciones.push({
|
||||
unidades: unidades,
|
||||
id: id,
|
||||
tipo: tipo,
|
||||
})
|
||||
};
|
||||
}
|
||||
return direcciones;
|
||||
}
|
||||
@ -0,0 +1,789 @@
|
||||
$('#papelFormatoPersonalizado').on('change', function () {
|
||||
if ($(this).is(":checked")) {
|
||||
$('#tamanioLibroDiv').hide();
|
||||
$('#anchoLibroDiv').show();
|
||||
$('#altoLibroDiv').show();
|
||||
$('#papelFormatoId').val('').trigger('change');
|
||||
} else {
|
||||
$('#tamanioLibroDiv').show();
|
||||
$('#anchoLibroDiv').hide();
|
||||
$('#altoLibroDiv').hide();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Init custom option check
|
||||
function initTapaCheck() {
|
||||
const _this = this
|
||||
|
||||
const tapaOptionList = [].slice.call(document.querySelectorAll('.custom-option-tapa .form-check-input'))
|
||||
tapaOptionList.map(function (customOptionEL) {
|
||||
// Update custom options check on page load
|
||||
_this.updateTapaCheck(customOptionEL)
|
||||
|
||||
// Update custom options check on click
|
||||
customOptionEL.addEventListener('click', e => {
|
||||
_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($('<option>', {
|
||||
value: window.datosDisenioLibro.gramaje_interior,
|
||||
text: window.datosDisenioLibro.gramaje_interior
|
||||
}));
|
||||
$('#gramajeInterior').val(window.datosDisenioLibro.gramaje_interior);
|
||||
$('#papelCubierta').val('').trigger('change');
|
||||
$('#papelCubierta').val(window.datosDisenioLibro.papel_cubierta);
|
||||
$('#gramajeCubierta').append($('<option>', {
|
||||
value: window.datosDisenioLibro.gramaje_cubierta,
|
||||
text: window.datosDisenioLibro.gramaje_cubierta
|
||||
}));
|
||||
$('#gramajeCubierta').val(window.datosDisenioLibro.gramaje_cubierta);
|
||||
|
||||
$('#papelSobrecubierta').val('').trigger('change');
|
||||
$('#papelSobrecubierta').val(window.datosDisenioLibro.papel_sobrecubierta);
|
||||
$('#gramajeSobrecubierta').append($('<option>', {
|
||||
value: window.datosDisenioLibro.gramaje_sobrecubierta,
|
||||
text: window.datosDisenioLibro.gramaje_sobrecubierta
|
||||
}));
|
||||
$('#gramajeSobrecubierta').val(window.datosDisenioLibro.gramaje_sobrecubierta);
|
||||
|
||||
$('#enableSobrecubierta').trigger('change');
|
||||
}
|
||||
|
||||
$('.change-tipo-impresion').on('change', function () {
|
||||
|
||||
let isColor = false;
|
||||
if($('#colorColorDiv').hasClass('checked') || $('#colorColorHqDiv').hasClass('checked'))
|
||||
isColor = true;
|
||||
let isHq = false;
|
||||
if($('#colorNegroDiv').hasClass('checked') || $('#colorColorHqDiv').hasClass('checked'))
|
||||
isHq = true;
|
||||
|
||||
//si es color hay que mostrar el numero de paginas a color
|
||||
if (isColor) {
|
||||
$('#pagColorDiv').show();
|
||||
if($('#paginasColor').val() == '')
|
||||
$('#paginasColor').val('0');
|
||||
}
|
||||
else {
|
||||
$('#pagColorDiv').hide();
|
||||
$('#paginasColor').val('0');
|
||||
}
|
||||
|
||||
var data = [];
|
||||
|
||||
if (!isColor && !isHq) {
|
||||
data = window.datosPresupuesto.papelInteriorNegro;
|
||||
}
|
||||
else if (!isColor && isHq) {
|
||||
data = window.datosPresupuesto.papelInteriorNegroHq;
|
||||
}
|
||||
else if (isColor && !isHq) {
|
||||
data = window.datosPresupuesto.papelInteriorColor;
|
||||
}
|
||||
else if (isColor && isHq) {
|
||||
data = window.datosPresupuesto.papelInteriorColorHq;
|
||||
}
|
||||
|
||||
var dropdown = $("#papelInterior");
|
||||
dropdown.empty();
|
||||
$.each(data, function () {
|
||||
dropdown.append($("<option />").val(this.id).text(this.nombre));
|
||||
});
|
||||
//Se quita la seleccion del dropdown
|
||||
dropdown.val('').trigger('change');
|
||||
$('#gramajeInterior').val('').trigger('change');
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
$('#tirada').on('change', function () {
|
||||
|
||||
const valInterior = $('#gramajeInterior option:selected').val();
|
||||
const valCubierta = $('#gramajeCubierta option:selected').val();
|
||||
const valSobrecubierta = $('#gramajeSobrecubierta option:selected').val();
|
||||
|
||||
|
||||
$('#papelInterior').trigger('change');
|
||||
$('#papelCubierta').trigger('change');
|
||||
$('#papelSobrecubierta').trigger('change');
|
||||
});
|
||||
|
||||
|
||||
$('#papelInterior').on('change', function () {
|
||||
|
||||
let isColor = false;
|
||||
if($('#colorColorDiv').hasClass('checked') || $('#colorColorHqDiv').hasClass('checked'))
|
||||
isColor = true;
|
||||
let isHq = false;
|
||||
if($('#colorNegroDiv').hasClass('checked') || $('#colorColorHqDiv').hasClass('checked'))
|
||||
isHq = true;
|
||||
|
||||
if ($('#papelInterior option:selected').val() != undefined) {
|
||||
var uso = 'bn';
|
||||
|
||||
if (!isColor && !isHq) {
|
||||
uso = 'bn';
|
||||
}
|
||||
else if (!isColor && isHq) {
|
||||
uso = 'bnhq';
|
||||
}
|
||||
else if (isColor && !isHq) {
|
||||
uso = 'color';
|
||||
}
|
||||
else if (isColor && isHq) {
|
||||
uso = 'colorhq';
|
||||
}
|
||||
datos = {
|
||||
tirada: $('#tirada').val(),
|
||||
merma: 0,
|
||||
uso: uso,
|
||||
papel: $('#papelInterior option:selected').text()
|
||||
};
|
||||
datos = Object.assign(datos, window.token_ajax)
|
||||
|
||||
const valInterior = $('#gramajeInterior option:selected').val();
|
||||
|
||||
$.ajax({
|
||||
url: window.routes_disenio_libro.obtenerGramaje,
|
||||
type: 'POST',
|
||||
data: datos,
|
||||
success: function (response) {
|
||||
|
||||
if(response.menu){
|
||||
|
||||
$('#gramajeInterior').empty();
|
||||
$(response.menu).each(function (index, element) {
|
||||
$('#gramajeInterior').append($("<option />").val(element.id).text(element.text));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
if (valInterior != undefined && valInterior != '')
|
||||
$('#gramajeInterior option[value=' + valInterior + ']').prop('selected', true).trigger('change');
|
||||
else
|
||||
$('#gramajeInterior').val('').trigger('change');
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$('#papelCubierta').on('change', function () {
|
||||
let isColor = true;
|
||||
let isHq = true;
|
||||
|
||||
if ($('#papelCubierta option:selected').val() != undefined) {
|
||||
var uso = 'cubierta';
|
||||
|
||||
datos = {
|
||||
tirada: $('#tirada').val(),
|
||||
merma: 0,
|
||||
uso: uso,
|
||||
papel: $('#papelCubierta option:selected').text().trim()
|
||||
};
|
||||
datos = Object.assign(datos, window.token_ajax)
|
||||
|
||||
const valCubierta = $('#gramajeCubierta option:selected').val();
|
||||
|
||||
$.ajax({
|
||||
url: window.routes_disenio_libro.obtenerGramaje,
|
||||
type: 'POST',
|
||||
data: datos,
|
||||
success: function (response) {
|
||||
|
||||
$('#gramajeCubierta').empty();
|
||||
$(response.menu).each(function (index, element) {
|
||||
$('#gramajeCubierta').append($("<option />").val(element.id).text(element.text));
|
||||
});
|
||||
|
||||
if (valCubierta != undefined && valCubierta != '')
|
||||
$('#gramajeCubierta option[value=' + valCubierta + ']').prop('selected', true).trigger('change');
|
||||
else
|
||||
$('#gramajeCubierta').val('').trigger('change');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$('#papelSobrecubierta').on('change', function () {
|
||||
let isColor = true;
|
||||
let isHq = true;
|
||||
|
||||
if ($('#papelSobrecubierta option:selected').val() != undefined) {
|
||||
var uso = 'sobrecubierta';
|
||||
|
||||
datos = {
|
||||
tirada: $('#tirada').val(),
|
||||
merma: 0,
|
||||
uso: uso,
|
||||
papel: $('#papelSobrecubierta option:selected').text().trim()
|
||||
};
|
||||
datos = Object.assign(datos, window.token_ajax)
|
||||
|
||||
const valSobrecubierta = $('#gramajeSobrecubierta option:selected').val();
|
||||
|
||||
$.ajax({
|
||||
url: window.routes_disenio_libro.obtenerGramaje,
|
||||
type: 'POST',
|
||||
data: datos,
|
||||
success: function (response) {
|
||||
|
||||
$('#gramajeSobrecubierta').empty();
|
||||
$(response.menu).each(function (index, element) {
|
||||
$('#gramajeSobrecubierta').append($("<option />").val(element.id).text(element.text));
|
||||
});
|
||||
|
||||
if (valSobrecubierta != undefined)
|
||||
$('#gramajeSobrecubierta option[value=' + valSobrecubierta + ']').prop('selected', true).trigger('change');
|
||||
else
|
||||
$('#gramajeSobrecubierta').val('').trigger('change');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$('#solapasCubierta').on('change', function () {
|
||||
if ($(this).is(":checked")) {
|
||||
$('#tamanioSolapasCubierta').show();
|
||||
} else {
|
||||
$('#tamanioSolapasCubierta').hide();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Funcion que comprueba que están rellenos todos los datos necesarios para calcular el presupuesto
|
||||
function checkValues() {
|
||||
|
||||
const tirada = $('#tirada').val();
|
||||
const paginas = $('#paginas').val();
|
||||
const papelInterior = $('#papelInterior option:selected').val();
|
||||
const gramajeInterior = $('#gramajeInterior option:selected').text();
|
||||
const papelCubierta = $('#papelCubierta option:selected').val();
|
||||
const gramajeCubierta = $('#gramajeCubierta option:selected').text();
|
||||
const papelFormatoAlto = $('#papelFormatoAlto').val();
|
||||
const papelFormatoAncho = $('#papelFormatoAncho').val();
|
||||
const clienteId = $('#clienteId').val();
|
||||
|
||||
if (paginas == '' || isNaN(paginas) || parseInt(paginas) <= 0) {
|
||||
return false;
|
||||
}
|
||||
if(parseInt(paginas)%2!=0){
|
||||
$('#paginas').val(parseInt(paginas)+1).trigger('change');
|
||||
return false;
|
||||
}
|
||||
|
||||
if(clienteId == '' || isNaN(clienteId) || parseInt(clienteId) <= 0){
|
||||
return false;
|
||||
}
|
||||
|
||||
if (tirada == '' || isNaN(tirada) || parseInt(tirada) <= 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (papelInterior == '' || gramajeInterior == '') {
|
||||
return false;
|
||||
}
|
||||
if (papelCubierta == '' || gramajeCubierta == '') {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($('#papelFormatoId').val() == null && !$('#papelFormatoPersonalizado').is(':checked')){
|
||||
return false;
|
||||
}
|
||||
if($('#papelFormatoPersonalizado').is(':checked')){
|
||||
if(papelFormatoAncho == '' || parseInt(papelFormatoAncho) <= 0 ||
|
||||
papelFormatoAlto == '' || parseInt(papelFormatoAlto) <= 0){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
function getTiradas() {
|
||||
let tiradas = [];
|
||||
tiradas.push(parseInt($('#tirada').val()));
|
||||
if ($('#tirada2').val().length > 0 && parseInt($('#tirada2').val()) > 0)
|
||||
tiradas.push(parseInt($('#tirada2').val()));
|
||||
if ($('#tirada3').val().length > 0 && parseInt($('#tirada3').val()) > 0)
|
||||
tiradas.push(parseInt($('#tirada3').val()));
|
||||
if ($('#tirada4').val().length > 0 && parseInt($('#tirada4').val()) > 0)
|
||||
tiradas.push(parseInt($('#tirada4').val()));
|
||||
return tiradas;
|
||||
}
|
||||
|
||||
|
||||
function getDimensionLibro() {
|
||||
|
||||
var ancho = 0;
|
||||
var alto = 0;
|
||||
|
||||
if ($('#papelFormatoId option:selected').length > 0) {
|
||||
var selectedText = $('#papelFormatoId option:selected').text();
|
||||
if (selectedText.length > 0) {
|
||||
ancho = parseFloat(selectedText.trim().split(" x ")[0]);
|
||||
alto = parseFloat(selectedText.trim().split(" x ")[1]);
|
||||
}
|
||||
else if (document.getElementById('papelFormatoPersonalizado').checked) {
|
||||
ancho = parseFloat(document.getElementById('papelFormatoAncho').value);
|
||||
alto = parseFloat(document.getElementById('papelFormatoAlto').value);
|
||||
}
|
||||
}
|
||||
|
||||
else if (document.getElementById('papelFormatoPersonalizado').checked) {
|
||||
ancho = parseFloat(document.getElementById('papelFormatoAncho').value);
|
||||
alto = parseFloat(document.getElementById('papelFormatoAlto').value);
|
||||
}
|
||||
return {
|
||||
ancho: ancho,
|
||||
alto: alto
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$('#retractilado').on('change', function () {
|
||||
if ($(this).is(':checked')) {
|
||||
if ($('#retractilado5').is(':checked'))
|
||||
$('#retractilado5').prop('checked', false);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$('#retractilado5').on('change', function () {
|
||||
if ($(this).is(':checked')) {
|
||||
if ($('#retractilado').is(':checked'))
|
||||
$('#retractilado').prop('checked', false);
|
||||
}
|
||||
});
|
||||
|
||||
$('.elementos-libro').on('change', function () {
|
||||
// Libro cosido
|
||||
if ($('#cosidoDiv').hasClass('checked')) {
|
||||
$('#tituloDisenioLibro').text("Rústica cosido");
|
||||
if ($('#tapaBlandaInnerDiv').hasClass('checked')) {
|
||||
// Cosido tapa blanda
|
||||
$('.guardas').hide();
|
||||
$('.solapas-cubierta').show();
|
||||
$('.sobrecubierta').show();
|
||||
$('#enableSobrecubierta').trigger('change');
|
||||
}
|
||||
else {
|
||||
// Cosido tapa dura
|
||||
$('.guardas').show();
|
||||
numCarasGuardas(2);
|
||||
$('.solapas-cubierta').hide();
|
||||
$('.sobrecubierta').show();
|
||||
$('#enableSobrecubierta').trigger('change');
|
||||
}
|
||||
}
|
||||
// Libro fresado
|
||||
else if ($('#fresadoDiv').hasClass('checked')) {
|
||||
$('#tituloDisenioLibro').text("Rústica fresado");
|
||||
if ($('#tapaBlandaInnerDiv').hasClass('checked')) {
|
||||
// fresado tapa blanda
|
||||
$('.guardas').hide();
|
||||
$('.solapas-cubierta').show();
|
||||
$('.sobrecubierta').show();
|
||||
$('#enableSobrecubierta').trigger('change');
|
||||
}
|
||||
else {
|
||||
// fresado tapa dura
|
||||
$('.guardas').show();
|
||||
numCarasGuardas(2);
|
||||
$('.solapas-cubierta').hide();
|
||||
$('.sobrecubierta').show();
|
||||
$('#enableSobrecubierta').trigger('change');
|
||||
}
|
||||
}
|
||||
// Libro grapado
|
||||
else if ($('#grapadoDiv').hasClass('checked')) {
|
||||
$('#tituloDisenioLibro').text("Cosido con grapas");
|
||||
if ($('#tapaBlandaInnerDiv').hasClass('checked')) {
|
||||
// grapado tapa blanda
|
||||
$('.guardas').hide();
|
||||
$('.solapas-cubierta').show();
|
||||
$('.sobrecubierta').hide();
|
||||
$('#enableSobrecubierta').prop('checked', false);
|
||||
}
|
||||
}
|
||||
// Libro wire-o
|
||||
else if ($('#wireoDiv').hasClass('checked')) {
|
||||
$('#tituloDisenioLibro').text("Wire-O");
|
||||
if ($('#tapaBlandaInnerDiv').hasClass('checked')) {
|
||||
// wire-o tapa blanda
|
||||
$('.guardas').hide();
|
||||
$('.solapas-cubierta').show();
|
||||
$('.sobrecubierta').hide();
|
||||
$('#enableSobrecubierta').prop('checked', false);
|
||||
}
|
||||
else {
|
||||
// wire-o tapa dura
|
||||
$('.guardas').show();
|
||||
numCarasGuardas(1);
|
||||
$('.solapas-cubierta').hide();
|
||||
$('.sobrecubierta').hide();
|
||||
$('#enableSobrecubierta').prop('checked', false);
|
||||
}
|
||||
}
|
||||
// Libro espiral
|
||||
else if ($('#espiralDiv').hasClass('checked')) {
|
||||
$('#tituloDisenioLibro').text("Espiral");
|
||||
if ($('#tapaBlandaInnerDiv').hasClass('checked')) {
|
||||
// espiral tapa blanda
|
||||
$('.guardas').hide();
|
||||
$('.solapas-cubierta').show();
|
||||
$('.sobrecubierta').hide();
|
||||
$('#enableSobrecubierta').prop('checked', false);
|
||||
}
|
||||
else {
|
||||
// espiral tapa dura
|
||||
$('.espiral').show();
|
||||
numCarasGuardas(1);
|
||||
$('.solapas-cubierta').hide();
|
||||
$('.sobrecubierta').hide();
|
||||
$('#enableSobrecubierta').prop('checked', false);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
function numCarasGuardas(numCaras) {
|
||||
if (numCaras == 1) {
|
||||
$("#impresionGuardas option[value='8']").remove();
|
||||
}
|
||||
else {
|
||||
if ($("#impresionGuardas option[value='8']").length == 0)
|
||||
$("#impresionGuardas").append('<option value="8">' + window.Presupuestos.dosCaras + '</option>');
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$('.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 += '<div id="' + label + '" peso="' +response.peso[i]+ '" class="list-group" >';
|
||||
html += '<a href="javascript:void(0);" class="list-group-item list-group-item-action">';
|
||||
html += '<div class="li-wrapper d-flex justify-content-start align-items-center" >';
|
||||
html += '<div class="list-content">';
|
||||
html += '<h7 id="ud_' + label + '" class="mb-1">' + (response.tiradas[i] + ' ud.') + '</h7>';
|
||||
html += '<h6 id="tot_' + label + '" class="mb-1">' + ('Total: ' + total + '€') + '</h6>';
|
||||
html += '<h7 id="pu_' + label + '" class="mb-1">' + (response.precio_u[i] + '€/ud') + '</h7>';
|
||||
html += '</div>';
|
||||
html += '</div>'
|
||||
html += '</a>';
|
||||
html += '</div>';
|
||||
|
||||
$('#divTiradasPrecio').append(html);
|
||||
}
|
||||
}
|
||||
|
||||
if($('#resumen-libro').hasClass('active')) {
|
||||
initDirecciones();
|
||||
initTiradasDirecciones();
|
||||
generarResumen();
|
||||
previewEsquemaCubierta(true);
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
error: function (error) {
|
||||
$('#loader').hide();
|
||||
$('#divTiradasPrecio').empty();
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -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 += "<br>(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);
|
||||
}
|
||||
|
||||
}
|
||||
})();
|
||||
|
||||
|
||||
@ -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());
|
||||
}
|
||||
@ -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<elements.length; index++){
|
||||
let precio_envio = parseFloat($(elements[index]).attr('p'));
|
||||
total += precio_envio;
|
||||
};
|
||||
}
|
||||
|
||||
return total;
|
||||
}
|
||||
|
||||
|
||||
$('#btnSave').on('click', function() {
|
||||
|
||||
finalizarPresupuesto(false);
|
||||
|
||||
});
|
||||
|
||||
$('#btnConfirm').on('click', function() {
|
||||
|
||||
finalizarPresupuesto(true);
|
||||
|
||||
});
|
||||
|
||||
$('#btnDuplicar').on('click', function() {
|
||||
|
||||
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];
|
||||
}
|
||||
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();
|
||||
},
|
||||
});
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,332 @@
|
||||
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
|
||||
<?= $this->include("themes/_commonPartialsBs/select2bs5") ?>
|
||||
<?= $this->include("themes/_commonPartialsBs/sweetalert") ?>
|
||||
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
|
||||
|
||||
|
||||
<?= $this->section("content") ?>
|
||||
|
||||
<?= view("themes/vuexy/form/clientes/cliente/_clienteDireccionesForm") ?>
|
||||
<div class="container-xxl flex-grow-1 container-p-y">
|
||||
<div class="col-12">
|
||||
<h3 class="card-title"><?= $boxTitle ?? $pageTitle ?></h3>
|
||||
<?= csrf_field() ?>
|
||||
<?= view("themes/_commonPartialsBs/_alertBoxes") ?>
|
||||
<?= view("themes/vuexy/form/presupuestos/cliente/loader") ?>
|
||||
<?= !empty($validation->getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?>
|
||||
|
||||
|
||||
<!-- Create Deal Wizard -->
|
||||
<div id="wizard-presupuesto-cliente" class="bs-stepper vertical mt-2 linear">
|
||||
|
||||
<?php if ($presupuestoEntity->estado_id == 1) : ?>
|
||||
|
||||
<div class="bs-stepper-header">
|
||||
|
||||
<div class="step active" data-target="#datos-generales">
|
||||
<button type="button" class="step-trigger" aria-selected="false" disabled="disabled">
|
||||
<span class="bs-stepper-circle"><i class="ti ti-book ti-sm"></i></span>
|
||||
<span class="bs-stepper-label">
|
||||
<span class="bs-stepper-title">Datos generales</span>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
|
||||
<div class="step" data-target="#disenio-libro">
|
||||
<button type="button" class="step-trigger" aria-selected="false" disabled="disabled">
|
||||
<span class="bs-stepper-circle"><i class="ti ti-book ti-sm"></i></span>
|
||||
<span class="bs-stepper-label">
|
||||
<span class="bs-stepper-title">Diseño del libro</span>
|
||||
<span class="bs-stepper-subtitle">Detalles técnicos del libro</span>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
|
||||
<div class="step" data-target="#direcciones-libro">
|
||||
<button type="button" class="step-trigger" aria-selected="false" disabled="disabled">
|
||||
<span class="bs-stepper-circle"><i class="ti ti-map-pins ti-sm"></i></span>
|
||||
<span class="bs-stepper-label">
|
||||
<span class="bs-stepper-title">Direcciones</span>
|
||||
<span class="bs-stepper-subtitle">Dirección envío, facturación</span>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
|
||||
<div class="step" data-target="#resumen-libro">
|
||||
<button type="button" class="step-trigger" aria-selected="false" disabled="disabled">
|
||||
<span class="bs-stepper-circle"><i class="ti ti-checkbox ti-sm"></i></span>
|
||||
<span class="bs-stepper-label">
|
||||
<span class="bs-stepper-title">Resumen del presupuesto</span>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div id="errorGeneral" class="fv-plugins-message-container invalid-feedback" style="display: none;">
|
||||
<p>Se ha producido un error <br>
|
||||
al calcular el presupuesto. <br>
|
||||
Póngase en contacto con el <br>
|
||||
administrador.</p>
|
||||
</div>
|
||||
|
||||
<div id='divTiradasPrecio'>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="bs-stepper-content">
|
||||
<form id="presupuesto-cliente-form" onsubmit="return false">
|
||||
|
||||
|
||||
<!-- Tipo Libro -->
|
||||
<div id="datos-generales" class="content active" dstepper-block fv-plugins-bootstrap5 fv-plugins-framework">
|
||||
|
||||
<div class="row g-3">
|
||||
|
||||
<?= view("themes/vuexy/form/presupuestos/cliente/_tipoLibroItems") ?>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Diseño Libro
|
||||
<div id="disenio-libro" class="content dstepper-block fv-plugins-bootstrap5 fv-plugins-framework">
|
||||
<div class="row g-3">
|
||||
|
||||
<?= view("themes/vuexy/form/presupuestos/cliente/_disenioLibroItems") ?>
|
||||
|
||||
<div class="col-12 d-flex justify-content-between mt-4">
|
||||
<button class="btn btn-primary btn-prev waves-effect waves-light">
|
||||
<i class="ti ti-arrow-left ti-xs me-sm-1 me-0"></i>
|
||||
<span class="align-middle d-sm-inline-block d-none me-sm-1">Anterior</span>
|
||||
</button>
|
||||
<button class="btn btn-primary btn-next waves-effect waves-light">
|
||||
<span class="align-middle d-sm-inline-block d-none me-sm-1">Siguiente</span>
|
||||
<i class="ti ti-arrow-right ti-xs"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Direcciones -->
|
||||
<div id="direcciones-libro" class="content fv-plugins-bootstrap5 fv-plugins-framework">
|
||||
<div class="row g-3">
|
||||
|
||||
<?= view("themes/vuexy/form/presupuestos/cliente/_direccionesItems") ?>
|
||||
|
||||
<div class="col-12 d-flex justify-content-between mt-4">
|
||||
<button class="btn btn-primary btn-prev waves-effect waves-light">
|
||||
<i class="ti ti-arrow-left ti-xs me-sm-1 me-0"></i>
|
||||
<span class="align-middle d-sm-inline-block d-none me-sm-1">Anterior</span>
|
||||
</button>
|
||||
<button id="toReview" class="btn btn-primary btn-next waves-effect waves-light">
|
||||
<span class="align-middle d-sm-inline-block d-none me-sm-1">Siguiente</span>
|
||||
<i class="ti ti-arrow-right ti-xs"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Review & Complete -->
|
||||
<div id="resumen-libro" class="content fv-plugins-bootstrap5 fv-plugins-framework">
|
||||
<div class="row g-3">
|
||||
|
||||
<?= view("themes/vuexy/form/presupuestos/cliente/_resumenItems") ?>
|
||||
|
||||
</div>
|
||||
<div class="col-12 d-flex justify-content-between mt-4">
|
||||
<div class="col-6 d-flex flex-row">
|
||||
<?php if ($presupuestoEntity->estado_id == 1) : ?>
|
||||
<button class="btn btn-primary btn-prev waves-effect waves-light">
|
||||
<i class="ti ti-arrow-left ti-xs me-sm-1 me-0"></i>
|
||||
<span class="align-middle d-sm-inline-block d-none me-sm-1">Anterior</span>
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="col-6 d-flex flex-row-reverse">
|
||||
<?php if ($presupuestoEntity->estado_id == 1) : ?>
|
||||
<button id="btnSave" class="btn btn-primary btn-submit waves-effect waves-light ml-2">
|
||||
<span class="align-middle d-sm-inline-block d-none me-sm-1">Guardar</span>
|
||||
<i class="ti ti-arrow-right ti-xs"></i>
|
||||
</button>
|
||||
<button id="btnConfirm" class="btn btn-success btn-submit btn-next mx-2 waves-effect waves-light ml-2">
|
||||
<span class="align-middle d-sm-inline-block d-none me-sm-1">Confirmar</span><i class="ti ti-check ti-xs"></i>
|
||||
</button>
|
||||
<?php else: ?>
|
||||
<button id="btnBack" class="btn btn-success btn-submit btn-next mx-2 waves-effect waves-light">
|
||||
<span class="align-middle d-sm-inline-block d-none me-sm-1">Volver</span><i class="ti ti-check ti-xs"></i>
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
<button id="btnDuplicar" class="btn btn-primary btn-submit waves-effect waves-light ml-2">
|
||||
<span class="align-middle d-sm-inline-block d-none me-sm-1">Duplicar</span>
|
||||
<i class="ti ti-copy ti-xs"></i>
|
||||
</button>
|
||||
<?php
|
||||
// Mostrar boton de impresion solo en presupuestos guardados (no add!)
|
||||
if ($formAction == "edit") {
|
||||
echo anchor(
|
||||
route_to("presupuestoToPdf", $presupuestoEntity->id),
|
||||
lang("Basic.global.Print"),
|
||||
[
|
||||
"class" => "btn btn-dark float-start me-sm-3 ml-2",
|
||||
"target" => "_blank"
|
||||
]
|
||||
);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<?php else: ?>
|
||||
|
||||
<div class="row">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<form id="presupuesto-cliente-form" onsubmit="return false">
|
||||
<div class="row g-3">
|
||||
|
||||
<?= view("themes/vuexy/form/presupuestos/cliente/_resumenItems") ?>
|
||||
|
||||
<div class="col-12 d-flex justify-content-between mt-4">
|
||||
<div class="col-6 d-flex flex-row">
|
||||
<?php if ($presupuestoEntity->estado_id == 1) : ?>
|
||||
<button class="btn btn-primary btn-prev waves-effect waves-light">
|
||||
<i class="ti ti-arrow-left ti-xs me-sm-1 me-0"></i>
|
||||
<span class="align-middle d-sm-inline-block d-none me-sm-1">Anterior</span>
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="col-6 d-flex flex-row-reverse">
|
||||
<?php if ($presupuestoEntity->estado_id == 1) : ?>
|
||||
<button id="btnSave" class="btn btn-primary btn-submit waves-effect waves-light ml-2">
|
||||
<span class="align-middle d-sm-inline-block d-none me-sm-1">Guardar</span>
|
||||
<i class="ti ti-arrow-right ti-xs"></i>
|
||||
</button>
|
||||
<button id="btnConfirm" class="btn btn-success btn-submit btn-next mx-2 waves-effect waves-light ml-2">
|
||||
<span class="align-middle d-sm-inline-block d-none me-sm-1">Confirmar</span><i class="ti ti-check ti-xs"></i>
|
||||
</button>
|
||||
<?php else: ?>
|
||||
<button id="btnBack" class="btn btn-success btn-submit btn-next mx-2 waves-effect waves-light">
|
||||
<span class="align-middle d-sm-inline-block d-none me-sm-1">Volver</span><i class="ti ti-check ti-xs"></i>
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
<button id="btnDuplicar" class="btn btn-primary btn-submit waves-effect waves-light ml-2">
|
||||
<span class="align-middle d-sm-inline-block d-none me-sm-1">Duplicar</span>
|
||||
<i class="ti ti-copy ti-xs"></i>
|
||||
</button>
|
||||
<?php
|
||||
// Si esta confirmado siempre es un presupuesto guardado
|
||||
echo anchor(
|
||||
route_to("presupuestoToPdf", $presupuestoEntity->id),
|
||||
lang("Basic.global.Print"),
|
||||
[
|
||||
"class" => "btn btn-dark float-start me-sm-3 ml-2",
|
||||
"target" => "_blank"
|
||||
]
|
||||
);
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
</div><!--//.col -->
|
||||
<?= view("themes/vuexy/components/chat_presupuesto",data:["modelId" => $presupuestoEntity->id]) ?>
|
||||
</div><!--//.row -->
|
||||
<?= view("themes/_commonPartialsBs/_modalConfirmDialog") ?>
|
||||
<?= view("themes/_commonPartialsBs/_modalMessageDialog") ?>
|
||||
|
||||
<?= $this->endSection() ?>
|
||||
|
||||
|
||||
|
||||
|
||||
<?= $this->section("additionalInlineJs") ?>
|
||||
|
||||
window.datosPresupuesto = <?= json_encode($datosPresupuesto) ?>;
|
||||
window.token_ajax= {<?= csrf_token() ?? "token" ?>: <?= csrf_token() ?>v};
|
||||
|
||||
<?php if ($presupuestoEntity->estado_id == 1) : ?>
|
||||
$('#clienteId').select2({
|
||||
allowClear: false,
|
||||
ajax: {
|
||||
url: '<?= route_to("menuItemsOfClientes") ?>',
|
||||
type: 'post',
|
||||
dataType: 'json',
|
||||
|
||||
data: function(params) {
|
||||
return {
|
||||
id: 'id',
|
||||
text: 'nombre',
|
||||
searchTerm: params.term,
|
||||
<?= csrf_token() ?? "token" ?> : <?= csrf_token() ?>v
|
||||
};
|
||||
},
|
||||
delay: 60,
|
||||
processResults: function(response) {
|
||||
yeniden(response.<?= csrf_token() ?>);
|
||||
return {
|
||||
results: response.menu
|
||||
};
|
||||
},
|
||||
cache: true
|
||||
}
|
||||
});
|
||||
|
||||
initDisenioLibro();
|
||||
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
|
||||
|
||||
<?= $this->endSection() ?>
|
||||
|
||||
|
||||
<?= $this->section('css') ?>
|
||||
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/bs-stepper/bs-stepper.css') ?>" />
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/formvalidation/dist/css/formValidation.min.css') ?>" />
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/dropzone/dropzone.css') ?>" />
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/css/pages/app-chat.css') ?>">
|
||||
|
||||
<?= $this->endSection() ?>
|
||||
|
||||
<?= $this->section('additionalExternalJs') ?>
|
||||
<script src="<?= site_url("themes/vuexy/vendor/libs/dropzone/dropzone.js") ?>"></script>
|
||||
<script src="<?= site_url("themes/vuexy/vendor/libs/bs-stepper/bs-stepper.js") ?>"></script>
|
||||
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/FormValidation.min.js") ?>"></script>
|
||||
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js") ?>"></script>
|
||||
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js") ?>"></script>
|
||||
<script src="<?= site_url("themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/dataTables.buttons.min.js") ?>"></script>
|
||||
<script src="<?= site_url("themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.bootstrap5.min.js") ?>"></script>
|
||||
<script src="<?= site_url("themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.html5.min.js") ?>"></script>
|
||||
<script src="<?= site_url("themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.print.min.js") ?>"></script>
|
||||
<script src="<?= site_url("themes/vuexy/vendor/libs/datatables-sk/plugins/select/dataTables.select.min.js") ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/js/datatables-editor/dataTables.editor.min.js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/autosize/autosize.js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/two/two.js') ?>"></script>
|
||||
<script src="<?= site_url('js_loader/translate_js/Presupuestos') ?>"></script>
|
||||
<script src="<?= site_url('js_loader/presupuestoClienteResumen_js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
|
||||
|
||||
<?php if ($presupuestoEntity->estado_id == 1) : ?>
|
||||
<script src="<?= site_url('js_loader/presupuestoCliente_js') ?>"></script>
|
||||
<?php endif; ?>
|
||||
<script src="<?= site_url('js_loader/presupuestoClienteTipoLibro_js') ?>"></script>
|
||||
<script src="<?= site_url('js_loader/presupuestoClienteDisenioLibro_js') ?>"></script>
|
||||
<script src="<?= site_url('js_loader/presupuestoClienteDirecciones_js') ?>"></script>
|
||||
<script src="<?= site_url('js_loader/presupuestoClientePreview_js') ?>"></script>
|
||||
<?= $this->endSection() ?>
|
||||
BIN
httpdocs/assets/img/presupuestoCliente/cosido.png
Normal file
BIN
httpdocs/assets/img/presupuestoCliente/cosido.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
BIN
httpdocs/assets/img/presupuestoCliente/espiral.png
Normal file
BIN
httpdocs/assets/img/presupuestoCliente/espiral.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 32 KiB |
BIN
httpdocs/assets/img/presupuestoCliente/fresado.png
Normal file
BIN
httpdocs/assets/img/presupuestoCliente/fresado.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
BIN
httpdocs/assets/img/presupuestoCliente/grapado.png
Normal file
BIN
httpdocs/assets/img/presupuestoCliente/grapado.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.9 KiB |
64
httpdocs/assets/js/safekat/components/select2.js
Normal file
64
httpdocs/assets/js/safekat/components/select2.js
Normal file
@ -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;
|
||||
@ -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;
|
||||
@ -0,0 +1,9 @@
|
||||
import DatosGenerales from './datosGenerales.js';
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
|
||||
let datosGenerales = new DatosGenerales($("#datos-generales"));
|
||||
datosGenerales.init();
|
||||
|
||||
});
|
||||
|
||||
39
httpdocs/themes/vuexy/css/presupuestoCliente.css
Normal file
39
httpdocs/themes/vuexy/css/presupuestoCliente.css
Normal file
@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user