añadidor los ficheros que faltaban en el commit anterior

This commit is contained in:
Jaime Jiménez
2025-07-22 11:37:00 +02:00
parent 3a4e80b1d3
commit 14f6633b83
29 changed files with 1218 additions and 0 deletions

View File

@ -0,0 +1,203 @@
<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.informacion-libro}">Información del
libro</div>
<h5 class="fs-14 text-end" th:text="#{presupuesto.datos-generales-descripcion}"></h5>
</div>
<div class="ribbon-content mt-4">
<div class="px-2">
<div class="row">
<div class="col-sm-12">
<div class="mb-3">
<label for="titulo" class="form-label" th:text="#{presupuesto.titulo}">
>Título*</label>
<input type="text" class="form-control" id="titulo" placeholder="" value="">
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="mb-3">
<label for="autor" class="form-label" th:text="#{presupuesto.autor}">Autor</label>
<input type="text" class="form-control" id="autor" value="">
</div>
</div>
<div class="col-sm-6">
<div class="mb-3">
<label for="isbn" class="form-label" th:text="#{presupuesto.isbn}">ISBN</label>
<input type="text" class="form-control" id="isbn" value="">
</div>
</div>
</div>
<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">
</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="">
</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="">
</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="">
</div>
</div>
<p class="text-muted" th:text="#{presupuesto.tiradasPODnoPOD}">
No puede mezclar tiradas menores de 30 unidades con mayores de 30
unidades</p>
</div>
<div class="row justify-content-center">
<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">
<optgroup th:label="#{presupuesto.orientacion.vertical}">
<option value="148x210">148x210 (A5)</option>
<option value="115x170">115x170</option>
<option value="210x297">210x297 (A4)</option>
</optgroup>
<optgroup th:label="#{presupuesto.orientacion.cuadrado}">
<option value="210x210">210x210</option>
<option value="230x230">230x230</option>
</optgroup>
<optgroup th:label="#{presupuesto.orientacion.apaisado}">
<option value="210x148">210x148 (A5)</option>
<option value="240x170">240x170</option>
<option value="297x210">297x210 (A4)</option>
</optgroup>
</select>
</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"
th:text="#{presupuesto.formato-personalizado}">Formato
Personalizado</label>
</div>
</div>
</div>
</div>
<div class="row justify-content-center mb-2">
<div class="col-sm-2">
<label for="paginas-negro" class="form-label" th:text="#{presupuesto.paginas-negro}">Páginas
Negro</label>
<input type="number" step="2" class="form-control" id="paginas-negro" name="paginas-negro"
value="0">
<div class="form-text" th:text="#{presupuesto.siempre-pares}">
Siempre deben ser pares</div>
</div>
<div class="col-auto d-flex align-items-center justify-content-center">
<i class="mdi mdi-plus-box fs-2"></i>
</div>
<div class="col-sm-2">
<label for="paginas-color" class="form-label" th:text="#{presupuesto.paginas-color}">Páginas
Color</label>
<input type="number" step="2" class="form-control" id="paginas-color" name="paginas-color"
value="32">
<div class="form-text" th:text="#{presupuesto.siempre-pares}">
Siempre deben ser pares</div>
</div>
<div class="col-auto d-flex align-items-center justify-content-center">
<i class="mdi mdi-equal-box fs-2"></i>
</div>
<div class="col-sm-2">
<label for="paginas" class="form-label" th:text="#{presupuesto.paginas-total}">Total
Páginas</label>
<input disabled class="form-control" id="paginas" name="paginas" value="32">
</div>
</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.encuadernacion}">Encuadernación</div>
<h5 class="fs-14 text-end" th:text="#{presupuesto.encuadernacion-descripcion}">
Seleccione la encuadernación del libro</h5>
</div>
<div class="ribbon-content mt-4">
<div class="px-2">
<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">
<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>
</div>
<!-- Opción: Cosido -->
<div class="col-12 col-sm-6 col-md-4 d-flex justify-content-center mb-4">
<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>
</div>
<!-- Opción: Grapado -->
<div class="col-12 col-sm-6 col-md-4 d-flex justify-content-center mb-4">
<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>
</div>
<!-- Opción: Espiral -->
<div class="col-12 col-sm-6 col-md-4 d-flex justify-content-center mb-4">
<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>
</div>
<!-- Opción: Wire-O -->
<div class="col-12 col-sm-6 col-md-4 d-flex justify-content-center mb-4">
<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>
</div>
</div>
</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>

View File

@ -0,0 +1,419 @@
<div th:fragment="presupuestador">
<div class="row">
<div class="col-xl-8">
<div class="card">
<div class="card-body checkout-tab">
<form action="#">
<div class="step-arrow-nav mt-n3 mx-n3 mb-3">
<ul class="nav nav-pills nav-justified custom-nav" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link fs-15 p-3 active" id="pills-general-data-tab"
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>
<label th:text="#{presupuesto.datos-generales}">Datos Generales</label>
</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link fs-15 p-3" id="pills-inside-tab" data-bs-toggle="pill"
data-bs-target="#pills-inside" type="button" role="tab"
aria-controls="pills-inside" aria-selected="false">
<i
class="ri-book-open-line fs-16 p-2 bg-soft-primary text-primary rounded-circle align-middle me-2"></i>
<label th:text="#{presupuesto.interior}">Interior</label>
</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link fs-15 p-3" id="pills-cover-tab" data-bs-toggle="pill"
data-bs-target="#pills-cover" type="button" role="tab"
aria-controls="pills-cover" aria-selected="false">
<i
class="ri-book-2-line fs-16 p-2 bg-soft-primary text-primary rounded-circle align-middle me-2"></i>
<label th:text="#{presupuesto.cubierta}">Cubierta</label>
</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link fs-15 p-3" id="pills-shipping-tab" data-bs-toggle="pill"
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>
</button>
</li>
</ul>
</div>
<div class="tab-content">
<div class="tab-pane fade show active" id="pills-general-data" role="tabpanel"
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>
<!-- 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>
<!-- 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>
</div>
<!-- end card body -->
</div>
<!-- end card -->
</div>
<!-- end col -->
<div class="col-xl-4">
<div class="card">
<div class="card-header">
<div class="d-flex">
<div class="flex-grow-1">
<h5 class="card-title mb-0">Order Summary</h5>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive table-card">
<table class="table table-borderless align-middle mb-0">
<thead class="table-light text-muted">
<tr>
<th style="width: 90px;" scope="col">Product</th>
<th scope="col">Product Info</th>
<th scope="col" class="text-end">Price</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="avatar-md bg-light rounded p-1">
<img src="/assets/images/products/img-8.png" alt=""
class="img-fluid d-block">
</div>
</td>
<td>
<h5 class="fs-14"><a href="/apps-ecommerce-product-details"
class="text-dark">Sweatshirt for Men (Pink)</a></h5>
<p class="text-muted mb-0">$ 119.99 x 2</p>
</td>
<td class="text-end">$ 239.98</td>
</tr>
<tr>
<td>
<div class="avatar-md bg-light rounded p-1">
<img src="/assets/images/products/img-7.png" alt=""
class="img-fluid d-block">
</div>
</td>
<td>
<h5 class="fs-14"><a href="/apps-ecommerce-product-details"
class="text-dark">Noise Evolve Smartwatch</a></h5>
<p class="text-muted mb-0">$ 94.99 x 1</p>
</td>
<td class="text-end">$ 94.99</td>
</tr>
<tr>
<td>
<div class="avatar-md bg-light rounded p-1">
<img src="/assets/images/products/img-3.png" alt=""
class="img-fluid d-block">
</div>
</td>
<td>
<h5 class="fs-14"><a href="/apps-ecommerce-product-details"
class="text-dark">350 ml Glass Grocery Container</a></h5>
<p class="text-muted mb-0">$ 24.99 x 1</p>
</td>
<td class="text-end">$ 24.99</td>
</tr>
<tr>
<td class="fw-semibold" colspan="2">Sub Total :</td>
<td class="fw-semibold text-end">$ 359.96</td>
</tr>
<tr>
<td colspan="2">Discount <span class="text-muted">(VELZON15)</span> : </td>
<td class="text-end">- $ 50.00</td>
</tr>
<tr>
<td colspan="2">Shipping Charge :</td>
<td class="text-end">$ 24.99</td>
</tr>
<tr>
<td colspan="2">Estimated Tax (12%): </td>
<td class="text-end">$ 18.20</td>
</tr>
<tr class="table-active">
<th colspan="2">Total (USD) :</th>
<td class="text-end">
<span class="fw-semibold">
$353.15
</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- end card body -->
</div>
<!-- end card -->
</div>
<!-- end col -->
</div>
<!--end row-->
</div>