terminado margenes presupuesto e incluido en la api

This commit is contained in:
2025-10-02 20:50:39 +02:00
parent 460d2cfc01
commit 1e24065fb7
18 changed files with 663 additions and 101 deletions

View File

@ -0,0 +1,67 @@
<div th:fragment="margenesPresupuestoForm">
<form id="margenesPresupuestoForm" novalidate th:action="${action}" th:object="${margenPresupuesto}" method="post" th:data-add="#{margenesPresupuesto.add}"
th:data-edit="#{margenesPresupuesto.editar}">
<input type="hidden" name="_method" value="PUT" th:if="${margenPresupuesto.id != null}" />
<div th:if="${#fields.hasGlobalErrors()}" class="alert alert-danger">
<div th:each="e : ${#fields.globalErrors()}" th:text="${e}"></div>
</div>
<div class="form-group">
<label th:text="#{margenes-presupuesto.form.tipo_encuadernacion}" for="tipo_encuadernacion">Tipo de Encuadernación</label>
<select class="form-control" id="tipo_encuadernacion" th:field="*{tipoEncuadernacion}" required
th:classappend="${#fields.hasErrors('tipoEncuadernacion')} ? ' is-invalid'">
<option value="fresado" th:text="#{presupuesto.fresado}" selected>Fresado</option>
<option value="cosido" th:text="#{presupuesto.cosido}">Cosido</option>
<option value="espiral" th:text="#{presupuesto.espiral}">Espiral</option>
<option value="wireo" th:text="#{presupuesto.wireo}">Wire-O</option>
<option value="grapado" th:text="#{presupuesto.grapado}">Grapado</option>
</select>
<div class="invalid-feedback" th:if="${#fields.hasErrors('tipoEncuadernacion')}" th:errors="*{tipoEncuadernacion}">Error</div>
</div>
<div class="form-group">
<label th:text="#{margenes-presupuesto.form.tipo_cubierta}" for="tipo_cubierta">Tipo de Cubierta</label>
<select class="form-control" id="tipo_cubierta" th:field="*{tipoCubierta}" required
th:classappend="${#fields.hasErrors('tipoCubierta')} ? ' is-invalid'">
<option value="tapaBlanda" th:text="#{presupuesto.tapaBlanda}" selected>Tapa Blanda</option>
<option value="tapaDura" th:text="#{presupuesto.tapaDura}">Tapa Dura</option>
<option value="tapaDuraLomoRedondo" th:text="#{presupuesto.tapaDuraLomoRedondo}">Tapa Dura Lomo Redondo</option>
</select>
<div class="invalid-feedback" th:if="${#fields.hasErrors('tipoCubierta')}" th:errors="*{tipoCubierta}">Error</div>
</div>
<div class="form-group">
<label th:text="#{margenes-presupuesto.form.tirada_minima}" for="tirada_minima">Tirada Mínima</label>
<input type="number" class="form-control" id="tirada_minima" th:field="*{tiradaMin}" min="1"
th:classappend="${#fields.hasErrors('tiradaMin')} ? ' is-invalid'" required>
<div class="invalid-feedback" th:if="${#fields.hasErrors('tiradaMin')}" th:errors="*{tiradaMin}">Error</div>
</div>
<div class="form-group">
<label th:text="#{margenes-presupuesto.form.tirada_maxima}" for="tirada_maxima">Tirada Máxima</label>
<input type="number" class="form-control" id="tirada_maxima" th:field="*{tiradaMax}" min="1"
th:classappend="${#fields.hasErrors('tiradaMax')} ? ' is-invalid'" required>
<div class="invalid-feedback" th:if="${#fields.hasErrors('tiradaMax')}" th:errors="*{tiradaMax}">Error</div>
</div>
<div class="form-group">
<label th:text="#{margenes-presupuesto.form.margen_maximo}" for="margen_maximo">Margen Máximo (%)</label>
<input type="number" class="form-control" id="margen_maximo" th:field="*{margenMax}" min="0" max="100" step="0.01"
th:classappend="${#fields.hasErrors('margenMax')} ? ' is-invalid'" required>
<div class="invalid-feedback" th:if="${#fields.hasErrors('margenMax')}" th:errors="*{margenMax}">Error</div>
</div>
<div class="form-group">
<label th:text="#{margenes-presupuesto.form.margen_minimo}" for="margen_minimo">Margen Mínimo (%)</label>
<input type="number" class="form-control" id="margen_minimo" th:field="*{margenMin}" min="0" max="100" step="0.01"
th:classappend="${#fields.hasErrors('margenMin')} ? ' is-invalid'" required>
<div class="invalid-feedback" th:if="${#fields.hasErrors('margenMin')}" th:errors="*{margenMin}">Error</div>
</div>
<div class="row mt-3 justified-content-center d-flex">
<button type="submit" class="btn btn-secondary" th:text="#{usuarios.guardar}">Guardar</button>
</div>
</form>
</div>

View File

@ -23,7 +23,7 @@
<!-- Modales-->
<div
th:replace="imprimelibros/partials/modal-form :: modal('userFormModal', 'usuarios.add', 'modal-md', 'userModalBody')">
th:replace="imprimelibros/partials/modal-form :: modal('margenesPresupuestoFormModal', 'margenes-presupuesto.add', 'modal-md', 'margenesPresupuestoModalBody')">
</div>
<nav aria-label="breadcrumb">
@ -72,16 +72,16 @@
</select>
</th>
<th>
<input type="text" class="form-control form-control-sm margenes-presupuesto-filter" data-col="tirada_min" />
<input type="text" class="form-control form-control-sm margenes-presupuesto-filter" data-col="tiradaMin" />
</th>
<th>
<input type="text" class="form-control form-control-sm margenes-presupuesto-filter" data-col="tirada_max" />
<input type="text" class="form-control form-control-sm margenes-presupuesto-filter" data-col="tiradaMax" />
</th>
<th>
<input type="text" class="form-control form-control-sm margenes-presupuesto-filter" data-col="margen_min" />
<input type="text" class="form-control form-control-sm margenes-presupuesto-filter" data-col="margenMax" />
</th>
<th>
<input type="text" class="form-control form-control-sm margenes-presupuesto-filter" data-col="margen_max" />
<input type="text" class="form-control form-control-sm margenes-presupuesto-filter" data-col="margenMin" />
</th>
<th></th>
</tr>

View File

@ -52,7 +52,7 @@
<div class="collapse menu-dropdown" id="sidebarConfig">
<ul class="nav nav-sm flex-column">
<li class="nav-item">
<a href="/configuracion/margenes-presupuestos" class="nav-link" th:text="#{margenes-presupuesto.titulo}">Márgenes de presupuesto</a>
<a href="/configuracion/margenes-presupuesto" class="nav-link" th:text="#{margenes-presupuesto.titulo}">Márgenes de presupuesto</a>
</li>
</ul>
</li>