mirror of
https://git.imnavajas.es/jjimenez/erp-imprimelibros.git
synced 2026-01-28 14:48:50 +00:00
añadida validacion en el backend para datos generales
This commit is contained in:
@ -35,7 +35,11 @@
|
||||
<th:block layout:fragment="pagejs">
|
||||
<div th:unless="${#authorization.expression('isAuthenticated()')}">
|
||||
<script th:src="@{/assets/js/pages/imprimelibros/presupuestador/imagen-presupuesto.js}"></script>
|
||||
<script th:src="@{/assets/js/pages/imprimelibros/presupuestador/presupuestador.js}"></script>
|
||||
</div>
|
||||
<script th:inline="javascript">
|
||||
window.languageBundle = /*[[${languageBundle}]]*/ {};
|
||||
</script>
|
||||
</th:block>
|
||||
</body>
|
||||
|
||||
|
||||
@ -1,18 +1,13 @@
|
||||
<html th:lang="${#locale.language}"
|
||||
th:with="isAuth=${#authorization.expression('isAuthenticated()')}"
|
||||
th:attrappend="data-layout=${isAuth} ? 'semibox' : 'horizontal'"
|
||||
data-sidebar-visibility="show"
|
||||
data-topbar="light"
|
||||
data-sidebar="light"
|
||||
data-sidebar-size="lg"
|
||||
data-sidebar-image="none"
|
||||
data-preloader="disable"
|
||||
xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
|
||||
<html th:lang="${#locale.language}" th:with="isAuth=${#authorization.expression('isAuthenticated()')}"
|
||||
th:attrappend="data-layout=${isAuth} ? 'semibox' : 'horizontal'" data-sidebar-visibility="show" data-topbar="light"
|
||||
data-sidebar="light" data-sidebar-size="lg" data-sidebar-image="none" data-preloader="disable"
|
||||
xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
|
||||
|
||||
<head>
|
||||
<th:block layout:fragment="pagetitle" />
|
||||
<th:block th:replace="~{imprimelibros/partials/head-css :: head-css}" />
|
||||
<link href="/assets/libs/sweetalert2/sweetalert2.min.css" rel="stylesheet" type="text/css" />
|
||||
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
|
||||
<th:block layout:fragment="pagecss" />
|
||||
</head>
|
||||
|
||||
@ -32,11 +27,13 @@
|
||||
</section>
|
||||
|
||||
<th:block layout:fragment="modal" />
|
||||
<!-- de momento comenta vendor-scripts si no lo usas -->
|
||||
<th:block th:replace="~{theme/partials/vendor-scripts :: scripts}" />
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
||||
<script src="/assets/libs/sweetalert2/sweetalert2.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
|
||||
<th:block layout:fragment="pagejs" />
|
||||
<script th:src="@{/assets/js/app.js}"></script>
|
||||
<script th:src="@{/assets/js/pages/imprimelibros/languageBundle.js}"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@ -0,0 +1,216 @@
|
||||
<div>
|
||||
<div class="row justify-content-center mb-3">
|
||||
<div class="col-auto">
|
||||
<button type="button" id="btn-plantilla-cubierta" class="btn btn-outline-primary btn-border">
|
||||
<i class="ri-questionnaire-line label-icon align-middle fs-16 me-2"></i>
|
||||
<span th:text="#{presupuesto.plantilla-cubierta}">
|
||||
Plantilla de cubierta
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Ribbon Shape -->
|
||||
<div class="card ribbon-box border shadow-none mb-lg-0 material-shadow">
|
||||
<div class="card-body">
|
||||
<div class="ribbon ribbon-primary ribbon-shape" th:text="#{presupuesto.tipo-cubierta}">Tipo cubierta
|
||||
</div>
|
||||
<h5 class="fs-14 text-end" th:text="#{presupuesto.tipo-cubierta-descripcion}">Seleccione el tipo de cubierta
|
||||
</h5>
|
||||
</div>
|
||||
|
||||
<div class="ribbon-content mt-4">
|
||||
<div class="row justify-content-center imagen-container-group">
|
||||
<div id="tapa-blanda" class="image-container imagen-selector selected">
|
||||
<img class="image-presupuesto" src="/assets/images/imprimelibros/presupuestador/tapa-blanda.jpg"
|
||||
alt="">
|
||||
<label for="titulo" class="form-label" th:text="#{presupuesto.tapa-blanda}">
|
||||
Tapa blanda
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div id="tapa-dura" class="image-container imagen-selector">
|
||||
<img class="image-presupuesto"
|
||||
src="/assets/images/imprimelibros/presupuestador/tapa-dura-lomo-recto.jpg" alt="">
|
||||
<label class="form-label" th:text="#{presupuesto.tapa-dura}">
|
||||
Tapa dura
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div id="tapa-dura-lomo-redondo" class="image-container imagen-selector">
|
||||
<img class="image-presupuesto"
|
||||
src="/assets/images/imprimelibros/presupuestador/tapa-dura-lomo-redondo.jpg" alt="">
|
||||
<label class="form-label" th:text="#{presupuesto.tapa-dura-lomo-redondo}">
|
||||
Tapa dura lomo redondo
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row justify-content-center align-items-center mt-3 imagen-container-group tapa-blanda-options">
|
||||
<div id="sin-solapas" class="image-container imagen-selector">
|
||||
<img class="image-presupuesto"
|
||||
src="/assets/images/imprimelibros/presupuestador/sinSolapasCubierta.png" alt="">
|
||||
<label class="form-label" th:text="#{presupuesto.sin-solapas}">
|
||||
Sin solapas
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div id="con-solapas" class="image-container imagen-selector">
|
||||
<img class="image-presupuesto"
|
||||
src="/assets/images/imprimelibros/presupuestador/conSolapasCubierta.png" alt="">
|
||||
<label class="form-label" th:text="#{presupuesto.con-solapas}">
|
||||
Con solapas
|
||||
</label>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-auto mb-3">
|
||||
<label for="impresion-cubierta" class="form-label"
|
||||
th:text="#{presupuesto.impresion-cubierta}">Impresión de cubierta</label>
|
||||
<div class="input-group">
|
||||
<select class="form-select select2" id="impresion-cubierta">
|
||||
<option value="2" th:text="#{presupuesto.una-cara}">Una cara</option>
|
||||
<option value="4" th:text="#{presupuesto.dos-caras}">Dos cara</option>
|
||||
</select>
|
||||
<button class="btn btn-outline-primary btn-icon waves-effect waves-light material-shadow-none"
|
||||
type="button" id="impresion-cubierta-help">
|
||||
<i class="ri-questionnaire-line"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-auto mb-3">
|
||||
<label for="tamanio-solapas-cubierta" class="form-label"
|
||||
th:text="#{presupuesto.tamanio-solapa}">Tamaño solapa</label>
|
||||
<input type="number" class="form-control" id="tamanio-solapas-cubierta" value="80" step="1">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row justify-content-center align-items-center mt-3 imagen-container-group tapa-dura-options">
|
||||
<div class="col-auto mb-3">
|
||||
<label for="papel-guardas" class="form-label" th:text="#{presupuesto.papel-guardas}">Papel de
|
||||
guardas</label>
|
||||
<select class="form-select select2" id="papel-guardas">
|
||||
<option value="1" data-papel-id="3" data-gramaje="170"
|
||||
th:text="#{presupuesto.offset-blanco} + ' 170 gr'" selected>Offset blanco 170 gr</option>
|
||||
<option value="2" data-papel-id="4" data-gramaje="170"
|
||||
th:text="#{presupuesto.offset-ahuesado} + ' 170 gr'">Offset ahuesado 170 gr</option>
|
||||
<option value="3" data-papel-id="2" data-gramaje="170"
|
||||
th:text="#{presupuesto.estucado-mate} + ' 170 gr'">Estucado mate 170 gr</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-auto mb-3">
|
||||
<label for="guardas-impresas" class="form-label" th:text="#{presupuesto.guardas-impresas}">Guardas
|
||||
impresas</label>
|
||||
<select class="form-select select2" id="guardas-impresas">
|
||||
<option value="0" th:text="#{presupuesto.no}" selected>No</option>
|
||||
<option value="4" th:text="#{presupuesto.una-cara}">Una cara</option>
|
||||
<option value="8" th:text="#{presupuesto.dos-caras}">Dos caras</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-auto mb-3">
|
||||
<label for="cabezada" class="form-label" th:text="#{presupuesto.cabezada}">Cabezada</label>
|
||||
<select class="form-select select2" id="guardas-impresas">
|
||||
<option value="WHI" th:text="#{presupuesto.cabezada-blanca}" selected>Blanca</option>
|
||||
<option value="GRE" th:text="#{presupuesto.cabezada-verde}">Verde</option>
|
||||
<option value="BLUE" th:text="#{presupuesto.cabezada-azul}">Azul</option>
|
||||
<option value="REDYEL" th:text="#{presupuesto.cabezada-roja-amarilla}">Roja-Amarilla</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Ribbon Shape -->
|
||||
|
||||
<div class="card ribbon-box border shadow-none mb-lg-0 material-shadow mt-4">
|
||||
<div class="card-body">
|
||||
<div class="ribbon ribbon-primary ribbon-shape" th:text="#{presupuesto.papel-cubierta}">Papel cubierta</div>
|
||||
<h5 class="fs-14 text-end" th:text="#{presupuesto.papel-cubierta-descripcion}">
|
||||
Seleccione el papel para la cubierta</h5>
|
||||
</div>
|
||||
|
||||
<div class="ribbon-content mt-4">
|
||||
|
||||
<div class="row justify-content-center imagen-container-group">
|
||||
<div id="cartulina-grafica-cubierta" data-sk-id="3" class="image-container imagen-selector selected">
|
||||
<img class="image-presupuesto"
|
||||
src="/assets/images/imprimelibros/presupuestador/cartulina-grafica.png" alt="">
|
||||
<label for="titulo" class="form-label" th:text="#{presupuesto.cartulina-grafica-cubierta}">
|
||||
Cartulina gráfica estucada a una cara
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div id="estucado-mate-cubierta" data-sk-id="2" class="image-container imagen-selector">
|
||||
<img class="image-presupuesto"
|
||||
src="/assets/images/imprimelibros/presupuestador/estucado-mate-cubierta.png" alt="">
|
||||
<label class="form-label" th:text="#{presupuesto.estucado-mate}">
|
||||
Estucado Mate
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- End Ribbon Shape -->
|
||||
|
||||
<!-- Ribbon Shape -->
|
||||
<div class="card ribbon-box border shadow-none mb-lg-0 material-shadow mt-4">
|
||||
<div class="card-body">
|
||||
<div class="ribbon ribbon-primary ribbon-shape" th:text="#{presupuesto.gramaje-cubierta}">Gramaje cubierta
|
||||
</div>
|
||||
<h5 class="fs-14 text-end" th:text="#{presupuesto.gramaje-cubierta-descripcion}">
|
||||
Gramaje del interior</h5>
|
||||
</div>
|
||||
|
||||
<div class="ribbon-content mt-4">
|
||||
<div class="hstack gap-2 justify-content-center flex-wrap">
|
||||
<input type="radio" class="btn-check" id="gramaje-cubierta-240" name="gramaje-cubierta"
|
||||
data-gramaje="240">
|
||||
<label class="btn btn-outline-primary material-shadow gramaje-radio" for="gramaje-cubierta-240">
|
||||
240
|
||||
</label>
|
||||
|
||||
<input type="radio" class="btn-check" id="gramaje-cubierta-250" name="gramaje-cubierta"
|
||||
data-gramaje="250">
|
||||
<label class="btn btn-outline-primary material-shadow gramaje-radio" for="gramaje-cubierta-250">
|
||||
250
|
||||
</label>
|
||||
|
||||
<input type="radio" class="btn-check" id="gramaje-cubierta-270" name="gramaje-cubierta"
|
||||
data-gramaje="270">
|
||||
<label class="btn btn-outline-primary material-shadow gramaje-radio" for="gramaje-cubierta-270">
|
||||
270
|
||||
</label>
|
||||
|
||||
<input type="radio" class="btn-check" id="gramaje-cubierta-300" name="gramaje-cubierta"
|
||||
data-gramaje="300" checked>
|
||||
<label class="btn btn-outline-primary material-shadow gramaje-radio" for="gramaje-cubierta-300">
|
||||
<span class="invisible small">_</span>
|
||||
300
|
||||
<span class="text-warning small fw-bold">⭐</span>
|
||||
</label>
|
||||
|
||||
<input type="radio" class="btn-check" id="gramaje-cubierta-350" name="gramaje-cubierta"
|
||||
data-gramaje="350">
|
||||
<label class="btn btn-outline-primary material-shadow gramaje-radio" for="gramaje-cubierta-350">
|
||||
350
|
||||
</label>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Ribbon Shape -->
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center mt-4 w-100">
|
||||
<button type="button" class="btn btn-light d-flex align-items-center">
|
||||
<i class=" ri-arrow-left-circle-line label-icon align-middle fs-16 me-2"></i>
|
||||
<span th:text="#{presupuesto.volver-interior}">Volver a interior</span>
|
||||
</button>
|
||||
<button type="button" class="btn btn-primary d-flex align-items-center">
|
||||
<span th:text="#{presupuesto.continuar-extras-libro}">Continuar a extras del libro</span>
|
||||
<i class="ri-arrow-right-circle-line fs-16 ms-2"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@ -9,6 +9,14 @@
|
||||
|
||||
<div class="ribbon-content mt-4">
|
||||
|
||||
<div class="alert alert-danger alert-dismissible alert-label-icon rounded-label fade show material-shadow d-none"
|
||||
role="alert" id="datos-generales-alert">
|
||||
<i class="ri-error-warning-line label-icon"></i>
|
||||
<strong th:text="#{presupuesto.errores-title}">Corrija los siguientes errores:</strong>
|
||||
<ul class="mb-0" id="datos-generales-alert-list">
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="px-2">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@ -38,23 +46,23 @@
|
||||
<div class="col-sm-12">
|
||||
<div class="row">
|
||||
<div class="col-sm-3 mb-1">
|
||||
<label for="tirada" class="form-label" th:text="#{presupuesto.tirada1}">Tirada 1*</label>
|
||||
<input type="number" class="form-control" id="tirada" placeholder="" value="10">
|
||||
<label for="tirada1" class="form-label" th:text="#{presupuesto.tirada1}">Tirada 1*</label>
|
||||
<input type="number" class="form-control" id="tirada1" placeholder="" value="10">
|
||||
</div>
|
||||
<div class="col-sm-3 mb-1">
|
||||
<label for="tirada2" class="form-label" th:text="#{presupuesto.tirada2}">Tirada 2</label>
|
||||
<input type="number" class="form-control" id="tirada" placeholder="" value="">
|
||||
<input type="number" class="form-control" id="tirada2" placeholder="" value="">
|
||||
</div>
|
||||
<div class="col-sm-3 mb-1">
|
||||
<label for="tirada3" class="form-label" th:text="#{presupuesto.tirada3}">Tirada 3</label>
|
||||
<input type="number" class="form-control" id="tirada" placeholder="" value="">
|
||||
<input type="number" class="form-control" id="tirada3" placeholder="" value="">
|
||||
</div>
|
||||
<div class="col-sm-3 mb-1">
|
||||
<label for="tirada4" class="form-label" th:text="#{presupuesto.tirada4}">Tirada 4</label>
|
||||
<input type="number" class="form-control" id="tirada" placeholder="" value="">
|
||||
<input type="number" class="form-control" id="tirada4" placeholder="" value="">
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-muted" th:text="#{presupuesto.tiradasPODnoPOD}">
|
||||
<p class="text-muted" th:text="#{presupuesto.tiradasPODnoPOD(${pod})}">
|
||||
No puede mezclar tiradas menores de 30 unidades con mayores de 30
|
||||
unidades</p>
|
||||
</div>
|
||||
@ -63,7 +71,7 @@
|
||||
<div class="col-sm-4">
|
||||
<div class="mb-3">
|
||||
<label for="formato" class="form-label" th:text="#{presupuesto.formato}">Formato</label>
|
||||
<select class="form-control select2" id="formato">
|
||||
<select class="form-select select2" id="formato">
|
||||
<optgroup th:label="#{presupuesto.orientacion.vertical}">
|
||||
<option value="148x210">148x210 (A5)</option>
|
||||
<option value="115x170">115x170</option>
|
||||
@ -82,9 +90,10 @@
|
||||
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<div class="form-check form-switch form-switch-left form-switch-md">
|
||||
<input type="checkbox" class="form-check-input" id="checkbox-button">
|
||||
<label for="checkbox-button" class="form-label"
|
||||
<div class="form-check form-switch form-switch-custom form-switch-primary mb-3">
|
||||
<input type="checkbox" class="form-check-input form-switch-custom-primary"
|
||||
id="formato-personalizado" name="formato-personalizado">
|
||||
<label for="formato-personalizado" class="form-label"
|
||||
th:text="#{presupuesto.formato-personalizado}">Formato
|
||||
Personalizado</label>
|
||||
</div>
|
||||
@ -146,11 +155,12 @@
|
||||
<div class="row justify-content-center imagen-container-group">
|
||||
|
||||
<!-- Opción: Fresado -->
|
||||
<div class="col-12 col-sm-6 col-md-4 d-flex justify-content-center mb-4 selected">
|
||||
<div class="image-container imagen-selector" id="fresado">
|
||||
<div class="col-12 col-sm-6 col-md-4 d-flex justify-content-center mb-4">
|
||||
<div class="image-container imagen-selector selected" id="fresado">
|
||||
<img class="image-presupuesto" src="/assets/images/imprimelibros/presupuestador/fresado.png"
|
||||
alt="Fresado" />
|
||||
<div class="form-text text-center">Fresado (a partir de 32 páginas)</div>
|
||||
<div class="form-text text-center" th:text="#{presupuesto.fresado-descripcion}">
|
||||
Fresado (a partir de 32 páginas)</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -159,7 +169,8 @@
|
||||
<div class="image-container imagen-selector" id="cosido">
|
||||
<img class="image-presupuesto" src="/assets/images/imprimelibros/presupuestador/cosido.png"
|
||||
alt="Cosido" />
|
||||
<div class="form-text text-center">Cosido (a partir de 32 páginas)</div>
|
||||
<div class="form-text text-center" th:text="#{presupuesto.cosido-descripcion}">
|
||||
Cosido (a partir de 32 páginas)</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -168,7 +179,8 @@
|
||||
<div class="image-container imagen-selector" id="grapado">
|
||||
<img class="image-presupuesto" src="/assets/images/imprimelibros/presupuestador/grapado.png"
|
||||
alt="Grapado" />
|
||||
<div class="form-text text-center">Grapado (entre 12 y 40 páginas)</div>
|
||||
<div class="form-text text-center" th:text="#{presupuesto.grapado-descripcion}">
|
||||
Grapado (entre 12 y 40 páginas)</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -177,7 +189,8 @@
|
||||
<div class="image-container imagen-selector" id="espiral">
|
||||
<img class="image-presupuesto" src="/assets/images/imprimelibros/presupuestador/espiral.png"
|
||||
alt="Espiral" />
|
||||
<div class="form-text text-center">Espiral (a partir de 20 páginas)</div>
|
||||
<div class="form-text text-center" th:text="#{presupuesto.espiral-descripcion}">
|
||||
Espiral (a partir de 20 páginas)</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -186,7 +199,8 @@
|
||||
<div class="image-container imagen-selector" id="wireo">
|
||||
<img class="image-presupuesto" src="/assets/images/imprimelibros/presupuestador/wire-o.png"
|
||||
alt="Wire-O" />
|
||||
<div class="form-text text-center">Wire-O (a partir de 20 páginas)</div>
|
||||
<div class="form-text text-center" th:text="#{presupuesto.wire-o-descripcion}">
|
||||
Wire-O (a partir de 20 páginas)</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -194,10 +208,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex align-items-start gap-3 mt-3">
|
||||
<button type="button" id="next-datos-generales" class="btn btn-primary btn-label right ms-auto">
|
||||
<i class="ri-arrow-right-circle-line align-middle fs-16 ms-2"></i>
|
||||
<label th:text="#{presupuesto.siguiente}">Siguiente</label>
|
||||
</button>
|
||||
|
||||
<div class="d-flex align-items-center justify-content-center gap-3 mt-3">
|
||||
<button type="button" id="next-datos-generales" class="btn btn-primary d-flex align-items-center ms-auto">
|
||||
<span th:text="#{presupuesto.continuar-interior}">Continuar a diseño interior</span>
|
||||
<i class="ri-arrow-right-circle-line fs-16 ms-2"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@ -0,0 +1,148 @@
|
||||
<div>
|
||||
<!-- Ribbon Shape -->
|
||||
<div class="card ribbon-box border shadow-none mb-lg-0 material-shadow">
|
||||
<div class="card-body">
|
||||
<div class="ribbon ribbon-primary ribbon-shape" th:text="#{presupuesto.tipo-impresion}">Tipo de impresión
|
||||
</div>
|
||||
<h5 class="fs-14 text-end" th:text="#{presupuesto.tipo-impresion-descripcion}">Elija entre calidad estándar
|
||||
o premium</h5>
|
||||
</div>
|
||||
|
||||
<div class="ribbon-content mt-4">
|
||||
<div class="row justify-content-center imagen-container-group">
|
||||
<div id="negroEstandar" class="image-container imagen-selector selected">
|
||||
<img class="image-presupuesto" src="/assets/images/imprimelibros/presupuestador/blancoYnegro.png"
|
||||
alt="Negro">
|
||||
<label for="titulo" class="form-label" th:text="#{presupuesto.blanco-negro}">
|
||||
Blanco y Negro
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div id="negroPremium" class="image-container imagen-selector">
|
||||
<img class="image-presupuesto" src="/assets/images/imprimelibros/presupuestador/negroFoto.png"
|
||||
alt="NegroPremium">
|
||||
<label class="form-label" th:text="#{presupuesto.blanco-negro-premium}">
|
||||
Blanco y Negro Premium
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div id="colorEstandar" class="image-container imagen-selector">
|
||||
<img class="image-presupuesto" src="/assets/images/imprimelibros/presupuestador/color.png"
|
||||
alt="Color">
|
||||
<label class="form-label" th:text="#{presupuesto.color}">
|
||||
Color
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div id="colorPremium" class="image-container imagen-selector">
|
||||
<img class="image-presupuesto" src="/assets/images/imprimelibros/presupuestador/colorFoto.png"
|
||||
alt="ColorPremium">
|
||||
<label class="form-label" th:text="#{presupuesto.color-premium}">
|
||||
Color Premium
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Ribbon Shape -->
|
||||
|
||||
<!-- Ribbon Shape -->
|
||||
<div class="card ribbon-box border shadow-none mb-lg-0 material-shadow mt-4">
|
||||
<div class="card-body">
|
||||
<div class="ribbon ribbon-primary ribbon-shape" th:text="#{presupuesto.papel-interior}">Papel interior</div>
|
||||
<h5 class="fs-14 text-end" th:text="#{presupuesto.papel-interior-descripcion}">
|
||||
Papel y gramaje del interior</h5>
|
||||
</div>
|
||||
|
||||
<div class="ribbon-content mt-4">
|
||||
|
||||
<div class="row justify-content-center imagen-container-group">
|
||||
<div id="offset-blanco" data-sk-id="3" class="image-container imagen-selector selected">
|
||||
<img class="image-presupuesto" src="/assets/images/imprimelibros/presupuestador/offset-blanco.png"
|
||||
alt="">
|
||||
<label for="titulo" class="form-label" th:text="#{presupuesto.offset-blanco}">
|
||||
Offset Blanco
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div id="offset-ahuesado" data-sk-id="4" class="image-container imagen-selector">
|
||||
<img class="image-presupuesto" src="/assets/images/imprimelibros/presupuestador/offset-ahuesado.png"
|
||||
alt="">
|
||||
<label class="form-label" th:text="#{presupuesto.offset-ahuesado}">
|
||||
Offset Ahuesado
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div id="offset-ahuesado-volumen" data-sk-id="6" class="image-container imagen-selector">
|
||||
<img class="image-presupuesto"
|
||||
src="/assets/images/imprimelibros/presupuestador/offset-ahuesado-volumen.png" alt="">
|
||||
<label class="form-label" th:text="#{presupuesto.offset-ahuesado-volumen}">
|
||||
Offset Ahuesado Volumen
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div id="estucado-mate" data-sk-id="2" class="image-container imagen-selector">
|
||||
<img class="image-presupuesto" src="/assets/images/imprimelibros/presupuestador/estucado-mate.png"
|
||||
alt="">
|
||||
<label class="form-label" th:text="#{presupuesto.estucado-mate}">
|
||||
Estucado Mate
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Ribbon Shape -->
|
||||
<div class="card ribbon-box border shadow-none mb-lg-0 material-shadow mt-4">
|
||||
<div class="card-body">
|
||||
<div class="ribbon ribbon-primary ribbon-shape" th:text="#{presupuesto.gramaje-interior}">Gramaje interior
|
||||
</div>
|
||||
<h5 class="fs-14 text-end" th:text="#{presupuesto.gramaje-interior-descripcion}">
|
||||
Gramaje del interior</h5>
|
||||
</div>
|
||||
|
||||
<div class="ribbon-content mt-4">
|
||||
<div class="hstack gap-2 justify-content-center flex-wrap">
|
||||
<input type="radio" class="btn-check" data-gramaje="70" id="gramaje-70" name="gramaje-interior">
|
||||
<label class="btn btn-outline-primary material-shadow gramaje-radio" for="gramaje-70">70</label>
|
||||
|
||||
<input type="radio" class="btn-check" data-gramaje="80" id="gramaje-80" name="gramaje-interior">
|
||||
<label class="btn btn-outline-primary material-shadow gramaje-radio" for="gramaje-80">80</label>
|
||||
|
||||
<input type="radio" class="btn-check" data-gramaje="90" id="gramaje-90" checked name="gramaje-interior">
|
||||
<label class="btn btn-outline-primary material-shadow gramaje-radio" for="gramaje-90">90</label>
|
||||
|
||||
<input type="radio" class="btn-check" data-gramaje="100" id="gramaje-100" name="gramaje-interior">
|
||||
<label class="btn btn-outline-primary material-shadow gramaje-radio" for="gramaje-100">100</label>
|
||||
|
||||
<input type="radio" class="btn-check" data-gramaje="115" id="gramaje-115" name="gramaje-interior">
|
||||
<label class="btn btn-outline-primary material-shadow gramaje-radio" for="gramaje-115">115</label>
|
||||
|
||||
<input type="radio" class="btn-check" data-gramaje="120" id="gramaje-120" name="gramaje-interior">
|
||||
<label class="btn btn-outline-primary material-shadow gramaje-radio" for="gramaje-120">120</label>
|
||||
|
||||
<input type="radio" class="btn-check" data-gramaje="135" id="gramaje-135" name="gramaje-interior">
|
||||
<label class="btn btn-outline-primary material-shadow gramaje-radio" for="gramaje-135">135</label>
|
||||
|
||||
<input type="radio" class="btn-check" data-gramaje="150" id="gramaje-150" name="gramaje-interior">
|
||||
<label class="btn btn-outline-primary material-shadow gramaje-radio" for="gramaje-150">150</label>
|
||||
|
||||
<input type="radio" class="btn-check" data-gramaje="170" id="gramaje-170" name="gramaje-interior">
|
||||
<label class="btn btn-outline-primary material-shadow gramaje-radio" for="gramaje-170">170</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center mt-4 w-100">
|
||||
<button type="button" class="btn btn-light d-flex align-items-center">
|
||||
<i class=" ri-arrow-left-circle-line label-icon align-middle fs-16 me-2"></i>
|
||||
<span th:text="#{presupuesto.volver-datos-generales}">Volver a datos generales</span>
|
||||
</button>
|
||||
<button type="button" class="btn btn-primary d-flex align-items-center">
|
||||
<span th:text="#{presupuesto.continuar-cubierta}">Continuar a diseño cubierta</span>
|
||||
<i class="ri-arrow-right-circle-line fs-16 ms-2"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -13,7 +13,7 @@
|
||||
data-bs-toggle="pill" data-bs-target="#pills-general-data" type="button"
|
||||
role="tab" aria-controls="pills-general-data" aria-selected="true">
|
||||
<i
|
||||
class="ri-information-fill fs-16 p-2 bg-soft-primary text-primary rounded-circle align-middle me-2"></i>
|
||||
class="ri-information-line fs-16 p-2 bg-soft-primary text-primary rounded-circle align-middle me-2"></i>
|
||||
<label th:text="#{presupuesto.datos-generales}">Datos Generales</label>
|
||||
</button>
|
||||
</li>
|
||||
@ -40,8 +40,8 @@
|
||||
data-bs-target="#pills-shipping" type="button" role="tab"
|
||||
aria-controls="pills-shipping" aria-selected="false">
|
||||
<i
|
||||
class="ri-truck-line fs-16 p-2 bg-soft-primary text-primary rounded-circle align-middle me-2"></i>
|
||||
<label th:text="#{presupuesto.envio}">Envío</label>
|
||||
class="ri-add-box-line fs-16 p-2 bg-soft-primary text-primary rounded-circle align-middle me-2"></i>
|
||||
<label th:text="#{presupuesto.extras}">Extras</label>
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
@ -52,262 +52,24 @@
|
||||
aria-labelledby="pills-general-data-tab">
|
||||
|
||||
<div th:include="~{imprimelibros/presupuestos/presupuestador-items/_datos-generales.html}"></div>
|
||||
|
||||
</div>
|
||||
<!-- end tab pane -->
|
||||
|
||||
<div class="tab-pane fade" id="pills-bill-address" role="tabpanel"
|
||||
aria-labelledby="pills-bill-address-tab">
|
||||
<div>
|
||||
<h5 class="mb-1">Shipping Information</h5>
|
||||
<p class="text-muted mb-4">Please fill all information below</p>
|
||||
</div>
|
||||
|
||||
<div class="mt-4">
|
||||
<div class="d-flex align-items-center mb-2">
|
||||
<div class="flex-grow-1">
|
||||
<h5 class="fs-14 mb-0">Saved Address</h5>
|
||||
</div>
|
||||
<div class="flex-shrink-0">
|
||||
<!-- Button trigger modal -->
|
||||
<button type="button" class="btn btn-sm btn-info mb-3"
|
||||
data-bs-toggle="modal" data-bs-target="#addAddressModal">
|
||||
Add Address
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row gy-3">
|
||||
<div class="col-lg-4 col-sm-6">
|
||||
<div class="form-check card-radio">
|
||||
<input id="shippingAddress01" name="shippingAddress" type="radio"
|
||||
class="form-check-input" checked>
|
||||
<label class="form-check-label" for="shippingAddress01">
|
||||
<span
|
||||
class="mb-4 fw-semibold d-block text-muted text-uppercase">Home
|
||||
Address</span>
|
||||
|
||||
<span class="fs-14 mb-2 d-block">Marcus Alfaro</span>
|
||||
<span class="text-muted fw-normal text-wrap mb-1 d-block">4739
|
||||
Bubby Drive Austin, TX 78729</span>
|
||||
<span class="text-muted fw-normal d-block">Mo.
|
||||
012-345-6789</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="d-flex flex-wrap p-2 py-1 bg-light rounded-bottom border mt-n1">
|
||||
<div>
|
||||
<a href="#" class="d-block text-body p-1 px-2"
|
||||
data-bs-toggle="modal" data-bs-target="#addAddressModal"><i
|
||||
class="ri-pencil-fill text-muted align-bottom me-1"></i>
|
||||
Edit</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="#" class="d-block text-body p-1 px-2"
|
||||
data-bs-toggle="modal" data-bs-target="#removeItemModal"><i
|
||||
class="ri-delete-bin-fill text-muted align-bottom me-1"></i>
|
||||
Remove</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4 col-sm-6">
|
||||
<div class="form-check card-radio">
|
||||
<input id="shippingAddress02" name="shippingAddress" type="radio"
|
||||
class="form-check-input">
|
||||
<label class="form-check-label" for="shippingAddress02">
|
||||
<span
|
||||
class="mb-4 fw-semibold d-block text-muted text-uppercase">Office
|
||||
Address</span>
|
||||
|
||||
<span class="fs-14 mb-2 d-block">James Honda</span>
|
||||
<span class="text-muted fw-normal text-wrap mb-1 d-block">1246
|
||||
Virgil Street Pensacola, FL 32501</span>
|
||||
<span class="text-muted fw-normal d-block">Mo.
|
||||
012-345-6789</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="d-flex flex-wrap p-2 py-1 bg-light rounded-bottom border mt-n1">
|
||||
<div>
|
||||
<a href="#" class="d-block text-body p-1 px-2"
|
||||
data-bs-toggle="modal" data-bs-target="#addAddressModal"><i
|
||||
class="ri-pencil-fill text-muted align-bottom me-1"></i>
|
||||
Edit</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="#" class="d-block text-body p-1 px-2"
|
||||
data-bs-toggle="modal" data-bs-target="#removeItemModal"><i
|
||||
class="ri-delete-bin-fill text-muted align-bottom me-1"></i>
|
||||
Remove</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-4">
|
||||
<h5 class="fs-14 mb-3">Shipping Method</h5>
|
||||
|
||||
<div class="row g-4">
|
||||
<div class="col-lg-6">
|
||||
<div class="form-check card-radio">
|
||||
<input id="shippingMethod01" name="shippingMethod" type="radio"
|
||||
class="form-check-input" checked>
|
||||
<label class="form-check-label" for="shippingMethod01">
|
||||
<span
|
||||
class="fs-20 float-end mt-2 text-wrap d-block fw-semibold">Free</span>
|
||||
<span class="fs-14 mb-1 text-wrap d-block">Free
|
||||
Delivery</span>
|
||||
<span class="text-muted fw-normal text-wrap d-block">Expected
|
||||
Delivery 3 to 5 Days</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-check card-radio">
|
||||
<input id="shippingMethod02" name="shippingMethod" type="radio"
|
||||
class="form-check-input" checked>
|
||||
<label class="form-check-label" for="shippingMethod02">
|
||||
<span
|
||||
class="fs-20 float-end mt-2 text-wrap d-block fw-semibold">$24.99</span>
|
||||
<span class="fs-14 mb-1 text-wrap d-block">Express
|
||||
Delivery</span>
|
||||
<span class="text-muted fw-normal text-wrap d-block">Delivery
|
||||
within 24hrs.</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex align-items-start gap-3 mt-4">
|
||||
<button type="button" class="btn btn-light btn-label previestab"
|
||||
data-previous="pills-bill-info-tab"><i
|
||||
class="ri-arrow-left-line label-icon align-middle fs-16 me-2"></i>Back
|
||||
to Personal Info</button>
|
||||
<button type="button" class="btn btn-primary btn-label right ms-auto nexttab"
|
||||
data-nexttab="pills-payment-tab"><i
|
||||
class="ri-bank-card-line label-icon align-middle fs-16 ms-2"></i>Continue
|
||||
to Payment</button>
|
||||
</div>
|
||||
<div class="tab-pane fade" id="pills-inside" role="tabpanel"
|
||||
aria-labelledby="pills-inside-tab">
|
||||
|
||||
<div th:include="~{imprimelibros/presupuestos/presupuestador-items/_interior.html}"></div>
|
||||
</div>
|
||||
<!-- end tab pane -->
|
||||
|
||||
<div class="tab-pane fade" id="pills-payment" role="tabpanel"
|
||||
aria-labelledby="pills-payment-tab">
|
||||
<div>
|
||||
<h5 class="mb-1">Payment Selection</h5>
|
||||
<p class="text-muted mb-4">Please select and enter your billing information</p>
|
||||
</div>
|
||||
|
||||
<div class="row g-4">
|
||||
<div class="col-lg-4 col-sm-6">
|
||||
<div data-bs-toggle="collapse" data-bs-target="#paymentmethodCollapse.show"
|
||||
aria-expanded="false" aria-controls="paymentmethodCollapse">
|
||||
<div class="form-check card-radio">
|
||||
<input id="paymentMethod01" name="paymentMethod" type="radio"
|
||||
class="form-check-input">
|
||||
<label class="form-check-label" for="paymentMethod01">
|
||||
<span class="fs-16 text-muted me-2"><i
|
||||
class="ri-paypal-fill align-bottom"></i></span>
|
||||
<span class="fs-14 text-wrap">Paypal</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4 col-sm-6">
|
||||
<div data-bs-toggle="collapse" data-bs-target="#paymentmethodCollapse"
|
||||
aria-expanded="true" aria-controls="paymentmethodCollapse">
|
||||
<div class="form-check card-radio">
|
||||
<input id="paymentMethod02" name="paymentMethod" type="radio"
|
||||
class="form-check-input" checked>
|
||||
<label class="form-check-label" for="paymentMethod02">
|
||||
<span class="fs-16 text-muted me-2"><i
|
||||
class="ri-bank-card-fill align-bottom"></i></span>
|
||||
<span class="fs-14 text-wrap">Credit / Debit Card</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 col-sm-6">
|
||||
<div data-bs-toggle="collapse" data-bs-target="#paymentmethodCollapse.show"
|
||||
aria-expanded="false" aria-controls="paymentmethodCollapse">
|
||||
<div class="form-check card-radio">
|
||||
<input id="paymentMethod03" name="paymentMethod" type="radio"
|
||||
class="form-check-input">
|
||||
<label class="form-check-label" for="paymentMethod03">
|
||||
<span class="fs-16 text-muted me-2"><i
|
||||
class="ri-money-dollar-box-fill align-bottom"></i></span>
|
||||
<span class="fs-14 text-wrap">Cash on Delivery</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="collapse show" id="paymentmethodCollapse">
|
||||
<div class="card p-4 border shadow-none mb-0 mt-4">
|
||||
<div class="row gy-3">
|
||||
<div class="col-md-12">
|
||||
<label for="cc-name" class="form-label">Name on card</label>
|
||||
<input type="text" class="form-control" id="cc-name"
|
||||
placeholder="Enter name">
|
||||
<small class="text-muted">Full name as displayed on card</small>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label for="cc-number" class="form-label">Credit card number</label>
|
||||
<input type="text" class="form-control" id="cc-number"
|
||||
placeholder="xxxx xxxx xxxx xxxx">
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<label for="cc-expiration" class="form-label">Expiration</label>
|
||||
<input type="text" class="form-control" id="cc-expiration"
|
||||
placeholder="MM/YY">
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<label for="cc-cvv" class="form-label">CVV</label>
|
||||
<input type="text" class="form-control" id="cc-cvv" placeholder="xxx">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-muted mt-2 fst-italic">
|
||||
<i data-feather="lock" class="text-muted icon-xs"></i> Your transaction is
|
||||
secured with SSL encryption
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex align-items-start gap-3 mt-4">
|
||||
<button type="button" class="btn btn-light btn-label previestab"
|
||||
data-previous="pills-bill-address-tab"><i
|
||||
class="ri-arrow-left-line label-icon align-middle fs-16 me-2"></i>Back
|
||||
to Shipping</button>
|
||||
<button type="button" class="btn btn-secondary btn-label right ms-auto nexttab"
|
||||
data-nexttab="pills-finish-tab"><i
|
||||
class="ri-shopping-basket-line label-icon align-middle fs-16 ms-2"></i>Complete
|
||||
Order</button>
|
||||
</div>
|
||||
<div class="tab-pane fade" id="pills-cover" role="tabpanel"
|
||||
aria-labelledby="pills-cover-tab">
|
||||
|
||||
<div th:include="~{imprimelibros/presupuestos/presupuestador-items/_cubierta.html}"></div>
|
||||
</div>
|
||||
<!-- end tab pane -->
|
||||
|
||||
<div class="tab-pane fade" id="pills-finish" role="tabpanel"
|
||||
aria-labelledby="pills-finish-tab">
|
||||
<div class="text-center py-5">
|
||||
|
||||
<div class="mb-4">
|
||||
<lord-icon src="https://cdn.lordicon.com/lupuorrc.json" trigger="loop"
|
||||
colors="primary:#0ab39c,secondary:#405189"
|
||||
style="width:120px;height:120px"></lord-icon>
|
||||
</div>
|
||||
<h5>Thank you ! Your Order is Completed !</h5>
|
||||
<p class="text-muted">You will receive an order confirmation email with details
|
||||
of your order.</p>
|
||||
|
||||
<h5 class="fw-semibold">Order ID: <a href="/apps-ecommerce-order-details"
|
||||
class="text-decoration-underline">VZ2451</a></h5>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end tab pane -->
|
||||
|
||||
</div>
|
||||
<!-- end tab content -->
|
||||
</form>
|
||||
@ -318,6 +80,7 @@
|
||||
</div>
|
||||
<!-- end col -->
|
||||
|
||||
<!-- Order Summary -->
|
||||
<div class="col-xl-4">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
|
||||
Reference in New Issue
Block a user