mirror of
https://git.imnavajas.es/jjimenez/erp-imprimelibros.git
synced 2026-01-13 00:48:49 +00:00
vista de pedidos casi terminada (a falta de acciones delos botones, cambio de estados, etc). Trabajando en el presupuesto para modificar las reimpresiones
This commit is contained in:
@ -389,6 +389,19 @@ public class skApiClient {
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
public Map<String, Object> checkPedidoEstado(Long presupuestoId){
|
||||
|
||||
try{
|
||||
|
||||
}
|
||||
catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return Map.of("error", "Internal Server Error: 1"); // Fallback en caso de error
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/******************
|
||||
* PRIVATE METHODS
|
||||
******************/
|
||||
|
||||
@ -13,8 +13,9 @@ public class PedidoLinea {
|
||||
aprobado("pedido.estado.aprobado", 1),
|
||||
maquetacion("pedido.estado.maquetacion", 2),
|
||||
haciendo_ferro("pedido.estado.haciendo_ferro", 3),
|
||||
produccion("pedido.estado.produccion", 4),
|
||||
cancelado("pedido.estado.cancelado", 5);
|
||||
ferro_cliente("pedido.estado.ferro_cliente", 4),
|
||||
produccion("pedido.estado.produccion", 5),
|
||||
cancelado("pedido.estado.cancelado", 6);
|
||||
|
||||
private final String messageKey;
|
||||
private final int priority;
|
||||
|
||||
@ -21,6 +21,7 @@ import com.imprimelibros.erp.datatables.DataTablesParser;
|
||||
import com.imprimelibros.erp.datatables.DataTablesRequest;
|
||||
import com.imprimelibros.erp.datatables.DataTablesResponse;
|
||||
import com.imprimelibros.erp.paises.PaisesService;
|
||||
import com.imprimelibros.erp.presupuesto.service.PresupuestoService;
|
||||
import com.imprimelibros.erp.users.UserDao;
|
||||
|
||||
import jakarta.persistence.criteria.Join;
|
||||
@ -28,11 +29,15 @@ import jakarta.persistence.criteria.JoinType;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/pedidos")
|
||||
public class PedidosController {
|
||||
|
||||
private final PresupuestoService presupuestoService;
|
||||
|
||||
private final PedidoRepository repoPedido;
|
||||
private final PedidoService pedidoService;
|
||||
private final UserDao repoUser;
|
||||
@ -40,14 +45,16 @@ public class PedidosController {
|
||||
private final PedidoLineaRepository repoPedidoLinea;
|
||||
private final PaisesService paisesService;
|
||||
|
||||
public PedidosController(PedidoRepository repoPedido, PedidoService pedidoService, UserDao repoUser, MessageSource messageSource,
|
||||
PedidoLineaRepository repoPedidoLinea, PaisesService paisesService) {
|
||||
public PedidosController(PedidoRepository repoPedido, PedidoService pedidoService, UserDao repoUser,
|
||||
MessageSource messageSource,
|
||||
PedidoLineaRepository repoPedidoLinea, PaisesService paisesService, PresupuestoService presupuestoService) {
|
||||
this.repoPedido = repoPedido;
|
||||
this.pedidoService = pedidoService;
|
||||
this.repoUser = repoUser;
|
||||
this.messageSource = messageSource;
|
||||
this.repoPedidoLinea = repoPedidoLinea;
|
||||
this.paisesService = paisesService;
|
||||
this.presupuestoService = presupuestoService;
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
@ -71,8 +78,7 @@ public class PedidosController {
|
||||
Long currentUserId = Utils.currentUserId(principal);
|
||||
|
||||
List<String> searchable = List.of(
|
||||
"id"
|
||||
);
|
||||
"id");
|
||||
|
||||
// Campos ordenables
|
||||
List<String> orderable = List.of(
|
||||
@ -171,8 +177,8 @@ public class PedidosController {
|
||||
|
||||
@GetMapping("/view/{id}")
|
||||
public String verPedido(
|
||||
@PathVariable(name = "id", required = true) Long id,
|
||||
Model model, Locale locale) {
|
||||
@PathVariable(name = "id", required = true) Long id,
|
||||
Model model, Locale locale) {
|
||||
|
||||
Boolean isAdmin = Utils.isCurrentUserAdmin();
|
||||
if (isAdmin) {
|
||||
@ -182,7 +188,7 @@ public class PedidosController {
|
||||
}
|
||||
|
||||
PedidoDireccion direccionFacturacion = pedidoService.getDireccionFacturacionPedido(id);
|
||||
if(direccionFacturacion != null){
|
||||
if (direccionFacturacion != null) {
|
||||
String paisNombre = paisesService.getPaisNombrePorCode3(direccionFacturacion.getPaisCode3(), locale);
|
||||
direccionFacturacion.setPaisNombre(paisNombre);
|
||||
}
|
||||
@ -192,8 +198,7 @@ public class PedidosController {
|
||||
List<Map<String, Object>> lineas = pedidoService.getLineas(id, locale);
|
||||
for (Map<String, Object> linea : lineas) {
|
||||
List<PedidoDireccion> dirEntrega = pedidoService.getDireccionesEntregaPedidoLinea(
|
||||
((Number) linea.get("lineaId")).longValue()
|
||||
);
|
||||
((Number) linea.get("lineaId")).longValue());
|
||||
|
||||
if (dirEntrega != null && !dirEntrega.isEmpty()) {
|
||||
for (PedidoDireccion direccion : dirEntrega) {
|
||||
@ -202,11 +207,25 @@ public class PedidosController {
|
||||
}
|
||||
}
|
||||
linea.put("direccionesEntrega", dirEntrega);
|
||||
|
||||
|
||||
}
|
||||
model.addAttribute("lineas", lineas);
|
||||
model.addAttribute("id", id);
|
||||
return "imprimelibros/pedidos/pedidos-view";
|
||||
}
|
||||
|
||||
// -------------------------------------
|
||||
// Acciones sobre las lineas de pedido
|
||||
// -------------------------------------
|
||||
@GetMapping("/linea/{id}/update-status")
|
||||
public String getMethodName(
|
||||
@PathVariable(name = "id", required = true) Long id) {
|
||||
|
||||
PedidoLinea linea = repoPedidoLinea.findById(id).orElse(null);
|
||||
if (linea != null) {
|
||||
Long externalId = linea.getPresupuesto().getProveedorRef2();
|
||||
|
||||
}
|
||||
return new String();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1357,6 +1357,10 @@ public class PresupuestoService {
|
||||
return resumen;
|
||||
}
|
||||
|
||||
public Presupuesto findPresupuestoById(Long id) {
|
||||
return presupuestoRepository.findById(id).orElse(null);
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// Métodos privados
|
||||
// =======================================================================
|
||||
|
||||
@ -20,6 +20,7 @@ checkout.authorization-required=Certifico que tengo los derechos para imprimir l
|
||||
pedido.estado.aprobado=Aprobado
|
||||
pedido.estado.maquetacion=Maquetación
|
||||
pedido.estado.haciendo_ferro=Haciendo ferro
|
||||
pedido.estado.ferro_cliente=Esperando aprobación de ferro
|
||||
pedido.estado.produccion=Producción
|
||||
pedido.estado.terminado=Terminado
|
||||
pedido.estado.cancelado=Cancelado
|
||||
@ -28,6 +29,7 @@ pedido.module-title=Pedidos
|
||||
pedido.pedido=Pedido
|
||||
pedido.fecha-entrega=Fecha de entrega
|
||||
pedido.cancelar=Cancelar pedido
|
||||
pedido.update-estado=Actualizar estado
|
||||
pedido.shipping-addresses=Direcciones de envío
|
||||
pedido.prueba=Prueba
|
||||
|
||||
|
||||
@ -37,6 +37,8 @@ presupuesto.tabla.region=Región
|
||||
presupuesto.tabla.ciudad=Ciudad
|
||||
presupuesto.tabla.acciones=Acciones
|
||||
|
||||
presupuesto.comentario-administrador=Comentarios
|
||||
|
||||
# Pestaña datos generales de presupuesto
|
||||
presupuesto.informacion-libro=Información del libro
|
||||
presupuesto.datos-generales-descripcion=Datos generales del presupuesto
|
||||
|
||||
@ -0,0 +1,36 @@
|
||||
$(()=>{
|
||||
const csrfToken = document.querySelector('meta[name="_csrf"]')?.getAttribute('content');
|
||||
const csrfHeader = document.querySelector('meta[name="_csrf_header"]')?.getAttribute('content');
|
||||
if (window.$ && csrfToken && csrfHeader) {
|
||||
$.ajaxSetup({
|
||||
beforeSend: function (xhr) {
|
||||
xhr.setRequestHeader(csrfHeader, csrfToken);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const language = document.documentElement.lang || 'es-ES';
|
||||
|
||||
|
||||
$(document).on('click', '.update-status-item', function(){
|
||||
const lineaId = $(this).data('linea-id');
|
||||
if(!lineaId){
|
||||
console.error('No se ha encontrado el ID de la línea del pedido.');
|
||||
return;
|
||||
}
|
||||
|
||||
// Llamada AJAX para actualizar el estado del pedido
|
||||
$.ajax({
|
||||
url: `/imprimelibros/pedidos/linea/${lineaId}/update-status`,
|
||||
type: 'POST',
|
||||
success: function(response) {
|
||||
alert('Estado del pedido actualizado correctamente.');
|
||||
// Aquí puedes agregar lógica adicional, como actualizar la interfaz de usuario
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
console.error('Error al actualizar el estado del pedido:', error);
|
||||
alert('Hubo un error al actualizar el estado del pedido.');
|
||||
}
|
||||
});
|
||||
});
|
||||
})
|
||||
@ -0,0 +1,48 @@
|
||||
$(() => {
|
||||
var snowEditor = document.querySelectorAll(".snow-editor");
|
||||
if (snowEditor) {
|
||||
Array.from(snowEditor).forEach(function (item) {
|
||||
var snowEditorData = {};
|
||||
var issnowEditorVal = item.classList.contains("snow-editor");
|
||||
if (issnowEditorVal == true) {
|
||||
snowEditorData.theme = 'snow',
|
||||
snowEditorData.modules = {
|
||||
'toolbar': [
|
||||
[{
|
||||
'font': []
|
||||
}, {
|
||||
'size': []
|
||||
}],
|
||||
['bold', 'italic', 'underline', 'strike'],
|
||||
[{
|
||||
'color': []
|
||||
}, {
|
||||
'background': []
|
||||
}],
|
||||
[{
|
||||
'script': 'super'
|
||||
}, {
|
||||
'script': 'sub'
|
||||
}],
|
||||
[{
|
||||
'header': [false, 1, 2, 3, 4, 5, 6]
|
||||
}, 'blockquote', 'code-block'],
|
||||
[{
|
||||
'list': 'ordered'
|
||||
}, {
|
||||
'list': 'bullet'
|
||||
}, {
|
||||
'indent': '-1'
|
||||
}, {
|
||||
'indent': '+1'
|
||||
}],
|
||||
['direction', {
|
||||
'align': []
|
||||
}]
|
||||
]
|
||||
}
|
||||
}
|
||||
new Quill(item, snowEditorData);
|
||||
});
|
||||
}
|
||||
});
|
||||
@ -1,39 +1,40 @@
|
||||
<div th:fragment="direccionEnvioCard(direccion, pais)" name="direccion"
|
||||
class="card card border mb-3 direccion-card mx-2">
|
||||
<div class="card-body">
|
||||
<div class="card-body position-relative">
|
||||
|
||||
<div class="row g-3 align-items-start flex-nowrap">
|
||||
<div class="col flex-nowrap">
|
||||
<span class="fs-14 mb-1 d-block text-break" th:text="${direccion.att}"></span>
|
||||
<span class="text-muted fw-normal text-wrap mb-1 d-block text-break"
|
||||
th:text="${direccion.direccion}"></span>
|
||||
<span class="text-muted fw-normal text-wrap mb-1 d-block text-break"
|
||||
th:text="${direccion.cp} + ', ' + ${direccion.ciudad} + ', (' + ${direccion.provincia} + ')'">
|
||||
</span>
|
||||
<span class="text-muted fw-normal d-block text-break" th:text="${pais}"></span>
|
||||
<span class="text-muted fw-normal d-block text-break"
|
||||
th:text="#{'direcciones.telefono'} + ': ' + ${direccion.telefono}"></span>
|
||||
<span class="fw-normal d-block text-break" th:text="${direccion.razonSocial}"></span>
|
||||
<span class="fw-normal d-block text-break" th:text="${direccion.identificacionFiscal}"></span>
|
||||
</div>
|
||||
<div class="col-auto ms-auto text-end">
|
||||
<th:block th:if="${direccion.unidades != null}">
|
||||
<div th:if="${direccion.isEjemplarPrueba}">
|
||||
<span id="units-text" class="mb-2 fw-semibold d-block text-muted text-uppercase"
|
||||
th:text="#{pedido.prueba}"></span>
|
||||
</div>
|
||||
<div th:if="${!direccion.isEjemplarPrueba}">
|
||||
<span id="units-text" class="mb-2 fw-semibold d-block text-muted text-uppercase"
|
||||
th:if="${direccion.unidades == 1}"
|
||||
th:text="|${direccion.unidades} #{cart.shipping.ud}|"></span>
|
||||
<th:block th:if="${direccion.unidades != null}">
|
||||
<div class="position-absolute top-0 end-0 mt-2 me-3 text-end">
|
||||
<div th:if="${direccion.isEjemplarPrueba}">
|
||||
<span class="mb-2 fw-semibold d-block text-muted text-uppercase"
|
||||
th:text="#{pedido.prueba}"></span>
|
||||
</div>
|
||||
<div th:if="${!direccion.isEjemplarPrueba}">
|
||||
<!-- singular -->
|
||||
<span class="mb-2 fw-semibold d-block text-muted text-uppercase"
|
||||
th:if="${direccion.unidades == 1}"
|
||||
th:text="|${direccion.unidades} #{cart.shipping.ud}|"></span>
|
||||
|
||||
<!-- plural -->
|
||||
<span id="units-text" class="mb-2 fw-semibold d-block text-muted text-uppercase"
|
||||
th:unless="${direccion.unidades == 1}"
|
||||
th:text="|${direccion.unidades} #{cart.shipping.uds}|"></span>
|
||||
</div>
|
||||
<!-- plural -->
|
||||
<span class="mb-2 fw-semibold d-block text-muted text-uppercase"
|
||||
th:unless="${direccion.unidades == 1}"
|
||||
th:text="|${direccion.unidades} #{cart.shipping.uds}|"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</th:block>
|
||||
|
||||
<!-- TEXTO: usa TODO el ancho -->
|
||||
<span class="fs-14 mb-1 d-block text-break" th:text="${direccion.att}"></span>
|
||||
<span class="text-muted fw-normal text-wrap mb-1 d-block text-break"
|
||||
th:text="${direccion.direccion}"></span>
|
||||
<span class="text-muted fw-normal text-wrap mb-1 d-block text-break"
|
||||
th:text="${direccion.cp} + ', ' + ${direccion.ciudad} + ', (' + ${direccion.provincia} + ')'">
|
||||
</span>
|
||||
<span class="text-muted fw-normal d-block text-break" th:text="${pais}"></span>
|
||||
<span class="text-muted fw-normal d-block text-break"
|
||||
th:text="#{'direcciones.telefono'} + ': ' + ${direccion.telefono}"></span>
|
||||
<span class="fw-normal d-block text-break" th:text="${direccion.razonSocial}"></span>
|
||||
<span class="fw-normal d-block text-break" th:text="${direccion.identificacionFiscal}"></span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -1,12 +1,13 @@
|
||||
<div th:fragment="direccionFacturacionCard(direccion, pais)" name="direccionFacturacion"
|
||||
class="card card border mb-3 w-auto direccion-facturacion-card d-inline-block ">
|
||||
class="card card border mb-3 direccion-facturacion-card">
|
||||
<div class="card-header bg-light">
|
||||
<span class="fs-16" th:text="#{'direcciones.direccionFacturacion'}"></span>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-start g-3 flex-nowrap w-auto">
|
||||
<div class="flex-shrink-0">
|
||||
<img src="/assets/images/billing_address2.gif" style="width: 100px; height: auto;" alt="Billing Address">
|
||||
<img src="/assets/images/billing_address2.gif" style="width: 100px; height: auto;"
|
||||
alt="Billing Address">
|
||||
</div>
|
||||
<div class="flex-nowrap">
|
||||
<span class="fs-14 mb-1 d-block text-break" th:text="${direccion.att}"></span>
|
||||
@ -20,7 +21,7 @@
|
||||
th:text="#{'direcciones.telefono'} + ': ' + ${direccion.telefono}"></span>
|
||||
<span class="fw-normal d-block text-break" th:text="${direccion.razonSocial}"></span>
|
||||
<span class="fw-normal d-block text-break" th:text="${direccion.identificacionFiscal}"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
<div th:fragment="pedido-linea (item, isAdmin)">
|
||||
<input type="hidden" id="lineaId" th:value="${item.lineaId}" />
|
||||
<div class="mb-3">
|
||||
<div class="card p-3 mb-0">
|
||||
<div class="row g-3 align-items-start">
|
||||
@ -79,19 +80,24 @@
|
||||
</div>
|
||||
<div class="card-body p-3">
|
||||
<div class="row g-3">
|
||||
<div class="flex-shrink-0">
|
||||
<img src="/assets/images/delivery-truck.gif" style="width: 120px; height: auto;"
|
||||
alt="delivery">
|
||||
<div class="col-auto d-none d-md-block">
|
||||
<div class="flex-shrink-0">
|
||||
<img src="/assets/images/delivery-truck.gif" style="width: 120px; height: auto;"
|
||||
alt="delivery">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="row g-3">
|
||||
<div th:each="direccionEnvio : ${item.direccionesEntrega}" class="mb-3 col-xl-4 col-lg-6 col-md-12 col-sm-12">
|
||||
<div th:insert="~{imprimelibros/direcciones/direccionEnvioCard :: direccionEnvioCard(
|
||||
direccion=${direccionEnvio},
|
||||
pais=${direccionEnvio.paisNombre}
|
||||
)}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:each="direccionEnvio : ${item.direccionesEntrega}" class="mb-3">
|
||||
<div th:insert="~{imprimelibros/direcciones/direccionEnvioCard :: direccionEnvioCard(
|
||||
direccion=${direccionEnvio},
|
||||
pais=${direccionEnvio.paisNombre}
|
||||
)}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -99,14 +105,22 @@
|
||||
<div class="row align-items-center gy-3">
|
||||
<div class="col-sm">
|
||||
<div class="d-flex flex-wrap my-n1">
|
||||
<!-- Botón eliminar -->
|
||||
<!-- Botón cancelar -->
|
||||
<div>
|
||||
<a href="javascript:void(0);" class="d-block text-body p-1 px-2 delete-item"
|
||||
th:attr="data-cart-item-id=${item.presupuestoId}">
|
||||
<a href="javascript:void(0);" class="d-block text-body p-1 px-2 cancel-item"
|
||||
th:attr="data-linea-id=${item.lineaId}">
|
||||
<i class="ri-delete-bin-fill text-muted align-bottom me-1"><span
|
||||
th:text="#{pedido.cancelar}">Cancelar Pedido</span></i>
|
||||
</a>
|
||||
</div>
|
||||
<!-- Actualizar estado-->
|
||||
<div>
|
||||
<a href="javascript:void(0);" class="d-block text-body p-1 px-2 update-status-item"
|
||||
th:attr="data-linea-id=${item.lineaId}">
|
||||
<i class="ri-refresh-line text-muted align-bottom me-1"><span
|
||||
th:text="#{pedido.update-estado}">Cancelar Pedido</span></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@ -35,10 +35,22 @@
|
||||
|
||||
<div class="container-fluid">
|
||||
|
||||
<div th:insert="~{imprimelibros/direcciones/direccionFacturacionCard :: direccionFacturacionCard (direccion=${direccionFacturacion}, pais=${direccionFacturacion != null ? direccionFacturacion.paisNombre : ''})}"></div>
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-auto">
|
||||
<div th:insert="~{imprimelibros/direcciones/direccionFacturacionCard ::
|
||||
direccionFacturacionCard(
|
||||
direccion=${direccionFacturacion},
|
||||
pais=${direccionFacturacion != null ? direccionFacturacion.paisNombre : ''}
|
||||
)}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<th:block th:each="linea: ${lineas}">
|
||||
<div th:insert="~{imprimelibros/pedidos/pedidos-linea :: pedido-linea (item=${linea}, isAdmin=${isAdmin})}"></div>
|
||||
<div
|
||||
th:insert="~{imprimelibros/pedidos/pedidos-linea :: pedido-linea (item=${linea}, isAdmin=${isAdmin})}">
|
||||
</div>
|
||||
</th:block>
|
||||
</div>
|
||||
</div>
|
||||
@ -63,8 +75,8 @@
|
||||
<script th:src="@{/assets/libs/datatables/buttons.print.min.js}"></script>
|
||||
<script th:src="@{/assets/libs/datatables/buttons.colVis.min.js}"></script>
|
||||
|
||||
<script type="module" th:src="@{/assets/js/pages/imprimelibros/pedidos/pedidos-common.js}"></script>
|
||||
<script type="module" th:src="@{/assets/js/pages/imprimelibros/pedidos/pedidos-admin.js}"></script>
|
||||
<script type="module" th:src="@{/assets/js/pages/imprimelibros/pedidos/pedidos-view.js}"></script>
|
||||
<script th:if="${isAdmin}" type="module" th:src="@{/assets/js/pages/imprimelibros/pedidos/pedidos-view-admin.js}"></script>
|
||||
</th:block>
|
||||
</body>
|
||||
|
||||
|
||||
@ -33,7 +33,8 @@
|
||||
aria-controls="pills-general-data" aria-selected="true">
|
||||
<i
|
||||
class="ri-information-line fs-5 p-1 bg-soft-primary text-primary rounded-circle align-middle me-2"></i>
|
||||
<label class="fs-13 my-2" th:text="#{presupuesto.datos-generales}">Datos Generales</label>
|
||||
<label class="fs-13 my-2" th:text="#{presupuesto.datos-generales}">Datos
|
||||
Generales</label>
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
@ -60,7 +61,8 @@
|
||||
aria-controls="pills-seleccion-tirada" aria-selected="false">
|
||||
<i
|
||||
class="ri-add-box-line fs-5 p-1 bg-soft-primary text-primary rounded-circle align-middle me-2"></i>
|
||||
<label class="fs-13 my-2" th:text="#{presupuesto.seleccion-tirada}">Seleccion de tirada</label>
|
||||
<label class="fs-13 my-2" th:text="#{presupuesto.seleccion-tirada}">Seleccion de
|
||||
tirada</label>
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
@ -137,6 +139,31 @@
|
||||
|
||||
</div>
|
||||
<!-- end tab content -->
|
||||
|
||||
<div sec:authorize="isAuthenticated() and hasAnyRole('SUPERADMIN','ADMIN')">
|
||||
<div class="accordion lefticon-accordion custom-accordionwithicon accordion-border-box mt-3"
|
||||
id="accordionlefticon">
|
||||
<div class="accordion-item material-shadow">
|
||||
<h2 class="accordion-header" id="accordionComentario">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
|
||||
data-bs-target="#accor_accordionComentario" aria-expanded="false"
|
||||
aria-controls="accor_accordionComentario"
|
||||
th:text="#{presupuesto.comentario-administrador}">Comentario
|
||||
</button>
|
||||
</h2>
|
||||
|
||||
<div id="accor_accordionComentario" class="accordion-collapse collapse"
|
||||
aria-labelledby="accordionComentario" data-bs-parent="#accordionlefticon">
|
||||
<div class="accordion-body">
|
||||
<div class="snow-editor" name="comentario"
|
||||
th:text="@{presupuesto.comentario}" style=" height: 300px;">
|
||||
</div> <!-- end Snow-editor-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<!-- end card body -->
|
||||
|
||||
@ -10,6 +10,8 @@
|
||||
</th:block>
|
||||
<th:block layout:fragment="pagecss">
|
||||
<link th:href="@{/assets/css/presupuestador.css}" rel="stylesheet" />
|
||||
<link sec:authorize="isAuthenticated() and hasAnyRole('SUPERADMIN','ADMIN')"
|
||||
th:href="@{/assets/libs/quill/quill.snow.css}" rel="stylesheet" type="text/css" />
|
||||
</th:block>
|
||||
</head>
|
||||
|
||||
@ -19,62 +21,75 @@
|
||||
<div th:replace="~{imprimelibros/partials/sidebar :: sidebar}"
|
||||
sec:authorize="isAuthenticated() and hasAnyRole('SUPERADMIN','ADMIN')">
|
||||
|
||||
<th:block layout:fragment="content">
|
||||
<div th:if="${#authorization.expression('isAuthenticated()')}">
|
||||
<th:block layout:fragment="content">
|
||||
<div th:if="${#authorization.expression('isAuthenticated()')}">
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a href="/"><i class="ri-home-5-fill"></i></a></li>
|
||||
<li class="breadcrumb-item"><a href="/presupuesto" th:text="#{presupuesto.title}"></a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page" th:if="${appMode == 'add'}" th:text="#{presupuesto.add}">
|
||||
<div class="container-fluid">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a href="/"><i class="ri-home-5-fill"></i></a></li>
|
||||
<li class="breadcrumb-item"><a href="/presupuesto" th:text="#{presupuesto.title}"></a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page" th:if="${appMode == 'add'}"
|
||||
th:text="#{presupuesto.add}">
|
||||
Nuevo presupuesto
|
||||
</li>
|
||||
<li class="breadcrumb-item active" aria-current="page" th:text="#{presupuesto.editar.title}" th:if="${appMode == 'edit'}">
|
||||
<li class="breadcrumb-item active" aria-current="page" th:text="#{presupuesto.editar.title}"
|
||||
th:if="${appMode == 'edit'}">
|
||||
Editar presupuesto
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div class="container-fluid">
|
||||
|
||||
<!-- alert info -->
|
||||
<div th:if="${appMode} == 'view'" class="alert alert-warning fade show" role="alert">
|
||||
<i class="ri-information-fill me-1 align-middle"></i>
|
||||
<span th:text="#{presupuesto.info.presupuestos-anonimos-view}"></span>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div th:insert="~{imprimelibros/presupuestos/presupuestador :: presupuestador}"></div>
|
||||
</div>
|
||||
</div>
|
||||
</th:block>
|
||||
<div class="container-fluid">
|
||||
|
||||
<th:block th:replace="~{theme/partials/vendor-scripts :: scripts}" />
|
||||
<th:block layout:fragment="pagejs">
|
||||
<script th:inline="javascript">
|
||||
window.languageBundle = /*[[${languageBundle}]]*/ {};
|
||||
</script>
|
||||
<!-- alert info -->
|
||||
<div th:if="${appMode} == 'view'" class="alert alert-warning fade show" role="alert">
|
||||
<i class="ri-information-fill me-1 align-middle"></i>
|
||||
<span th:text="#{presupuesto.info.presupuestos-anonimos-view}"></span>
|
||||
</div>
|
||||
|
||||
<!-- JS de Buttons y dependencias -->
|
||||
<div th:if="${appMode} == 'view'">
|
||||
<script type="module" th:src="@{/assets/js/pages/imprimelibros/presupuestador/wizard-publicos.js}"></script>
|
||||
</div>
|
||||
<div th:if="${appMode} == 'edit'">
|
||||
<script type="module" th:src="@{/assets/js/pages/imprimelibros/presupuestador/wizard-privado.js}"></script>
|
||||
</div>
|
||||
<div th:if="${appMode} == 'add'">
|
||||
<div th:if="${mode} == 'public'">
|
||||
<script type="module" th:src="@{/assets/js/pages/imprimelibros/presupuestador/wizard-publicos-add.js}"></script>
|
||||
<div th:insert="~{imprimelibros/presupuestos/presupuestador :: presupuestador}"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:if="${mode} != 'public'">
|
||||
<script type="module" th:src="@{/assets/js/pages/imprimelibros/presupuestador/wizard-privado.js}"></script>
|
||||
</th:block>
|
||||
|
||||
<th:block th:replace="~{theme/partials/vendor-scripts :: scripts}" />
|
||||
<th:block layout:fragment="pagejs">
|
||||
<script th:inline="javascript">
|
||||
window.languageBundle = /*[[${languageBundle}]]*/ {};
|
||||
</script>
|
||||
|
||||
<!-- JS de Buttons y dependencias -->
|
||||
<div th:if="${appMode} == 'view'">
|
||||
<script type="module"
|
||||
th:src="@{/assets/js/pages/imprimelibros/presupuestador/wizard-publicos.js}"></script>
|
||||
</div>
|
||||
</div>
|
||||
<script type="module" th:src="@{/assets/js/pages/imprimelibros/presupuestador/presupuesto-maquetacion.js}"></script>
|
||||
<script type="module" th:src="@{/assets/js/pages/imprimelibros/presupuestador/presupuesto-marcapaginas.js}"></script>
|
||||
</th:block>
|
||||
<div th:if="${appMode} == 'edit'">
|
||||
<script type="module"
|
||||
th:src="@{/assets/js/pages/imprimelibros/presupuestador/wizard-privado.js}"></script>
|
||||
</div>
|
||||
<div th:if="${appMode} == 'add'">
|
||||
<div th:if="${mode} == 'public'">
|
||||
<script type="module"
|
||||
th:src="@{/assets/js/pages/imprimelibros/presupuestador/wizard-publicos-add.js}"></script>
|
||||
</div>
|
||||
<div th:if="${mode} != 'public'">
|
||||
<script type="module"
|
||||
th:src="@{/assets/js/pages/imprimelibros/presupuestador/wizard-privado.js}"></script>
|
||||
</div>
|
||||
</div>
|
||||
<script type="module"
|
||||
th:src="@{/assets/js/pages/imprimelibros/presupuestador/presupuesto-maquetacion.js}"></script>
|
||||
<script type="module"
|
||||
th:src="@{/assets/js/pages/imprimelibros/presupuestador/presupuesto-marcapaginas.js}"></script>
|
||||
|
||||
<script sec:authorize="isAuthenticated() and hasAnyRole('SUPERADMIN','ADMIN')"
|
||||
th:src="@{/assets/libs/quill/quill.min.js}"></script>
|
||||
<script sec:authorize="isAuthenticated() and hasAnyRole('SUPERADMIN','ADMIN')"
|
||||
th:src="@{/assets/js/pages/imprimelibros/presupuestador/text-editor.js}"></script>
|
||||
</th:block>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user