addons-cm/website_sale_aplicoop/views/load_from_history_templates.xml
snt 3ca90578ae [IMP] website_sale_aplicoop: Validar disponibilidad de productos al cargar órdenes históricas
- Backend: Agregar método _validate_items_for_group_order() para validar que los productos históricos sigan siendo disponibles en la orden de grupo actual
- Backend: Modificar load_order_from_history() para filtrar solo items disponibles antes de pasar al template
- Backend: Generar mensaje de aviso traducido cuando hay productos no disponibles
- Template: Pasar información de productos no disponibles y warnings al JavaScript
- Frontend: Mostrar notificación de advertencia si hubo productos excluidos durante la carga histórica
- Notas: Esto evita cargar productos que ya no existen en la orden actual debido a cambios en categorías, proveedores o listas negras
2026-05-20 16:05:14 +02:00

72 lines
4.4 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<!-- Template to load items from history and redirect to group order -->
<template id="eskaera_load_from_history" name="Load Order from History">
<html>
<head>
<meta charset="utf-8"/>
<title>Loading Order...</title>
</head>
<body>
<script type="text/javascript">
// Items are embedded directly in the script (pre-serialized JSON from controller)
var itemsJson = <t t-raw="items_json"/>; // This is a JSON array/string
var groupOrderId = <t t-esc="group_order_id"/>;
var saleOrderName = '<t t-esc="sale_order_name"/>';
var pickupDay = '<t t-esc="pickup_day or ''"/>';
var pickupDate = '<t t-esc="pickup_date or ''"/>';
var homeDelivery = <t t-esc="home_delivery and 'true' or 'false'"/>;
var sameGroupOrder = <t t-esc="same_group_order and 'true' or 'false'"/>;
// Product availability warning
var hasUnavailableItems = <t t-esc="has_unavailable_items and 'true' or 'false'"/>;
var warningMessage = '<t t-esc="warning_message or ''"/>';
console.log('load_from_history template: groupOrderId=', groupOrderId);
console.log('load_from_history template: saleOrderName=', saleOrderName);
console.log('load_from_history template: pickupDay=', pickupDay);
console.log('load_from_history template: pickupDate=', pickupDate);
console.log('load_from_history template: homeDelivery=', homeDelivery);
console.log('load_from_history template: sameGroupOrder=', sameGroupOrder);
console.log('load_from_history template: hasUnavailableItems=', hasUnavailableItems);
console.log('load_from_history template: itemsJson type=', typeof itemsJson);
console.log('load_from_history template: itemsJson value=', itemsJson);
// If itemsJson is already a string, use it directly; if it's an array, stringify it
var itemsJsonString = (typeof itemsJson === 'string') ? itemsJson : JSON.stringify(itemsJson);
// Store items to sessionStorage
sessionStorage['load_from_history_' + groupOrderId] = itemsJsonString;
// Store sale order name separately
sessionStorage['load_from_history_order_name_' + groupOrderId] = saleOrderName;
// Store pickup fields ONLY if from same group order
if (sameGroupOrder === 'true') {
sessionStorage['load_from_history_pickup_day_' + groupOrderId] = pickupDay;
sessionStorage['load_from_history_pickup_date_' + groupOrderId] = pickupDate;
sessionStorage['load_from_history_home_delivery_' + groupOrderId] = homeDelivery;
console.log('Saved pickup fields (same group order)');
} else {
console.log('Skipped saving pickup fields (different group order - will use current group order days)');
}
// Store warning about unavailable products if they exist
if (hasUnavailableItems === 'true') {
sessionStorage['load_from_history_warning_' + groupOrderId] = warningMessage;
console.log('Unavailable products detected:', warningMessage);
}
console.log('Saved to sessionStorage[load_from_history_' + groupOrderId + ']:', itemsJsonString);
console.log('Saved order name to sessionStorage[load_from_history_order_name_' + groupOrderId + ']:', saleOrderName);
// Redirect to group order page
// The JavaScript on that page will detect this and load the items
window.location.href = '/eskaera/' + groupOrderId;
</script>
</body>
</html>
</template>
</data>
</odoo>