[FIX] website_sale_aplicoop: Remove redundant string= attributes and fix OCA linting warnings

- Remove redundant string= from 17 field definitions where name matches string value (W8113)
- Convert @staticmethod to instance methods in selection methods for proper self.env._() access
- Fix W8161 (prefer-env-translation) by using self.env._() instead of standalone _()
- Fix W8301/W8115 (translation-not-lazy) by proper placement of % interpolation outside self.env._()
- Remove unused imports of odoo._ from group_order.py and sale_order_extension.py
- All OCA linting warnings in website_sale_aplicoop main models are now resolved

Changes:
- website_sale_aplicoop/models/group_order.py: 21 field definitions cleaned
- website_sale_aplicoop/models/sale_order_extension.py: 5 field definitions cleaned + @staticmethod conversion
- Consistent with OCA standards for addon submission
This commit is contained in:
snt 2026-02-18 17:54:43 +01:00
parent 5c89795e30
commit 6fbc7b9456
73 changed files with 5386 additions and 4354 deletions

View file

@ -3,56 +3,65 @@
* Manages home delivery checkbox and product addition/removal
*/
(function() {
'use strict';
(function () {
"use strict";
var HomeDeliveryManager = {
deliveryProductId: null,
deliveryProductPrice: 5.74,
deliveryProductName: 'Home Delivery', // Default fallback
deliveryProductName: "Home Delivery", // Default fallback
orderId: null,
homeDeliveryEnabled: false,
init: function() {
init: function () {
// Get delivery product info from data attributes
var checkoutPage = document.querySelector('.eskaera-checkout-page');
var checkoutPage = document.querySelector(".eskaera-checkout-page");
if (checkoutPage) {
this.deliveryProductId = checkoutPage.getAttribute('data-delivery-product-id');
console.log('[HomeDelivery] deliveryProductId from attribute:', this.deliveryProductId, 'type:', typeof this.deliveryProductId);
var price = checkoutPage.getAttribute('data-delivery-product-price');
this.deliveryProductId = checkoutPage.getAttribute("data-delivery-product-id");
console.log(
"[HomeDelivery] deliveryProductId from attribute:",
this.deliveryProductId,
"type:",
typeof this.deliveryProductId
);
var price = checkoutPage.getAttribute("data-delivery-product-price");
if (price) {
this.deliveryProductPrice = parseFloat(price);
}
// Get translated product name from data attribute (auto-translated by Odoo server)
var productName = checkoutPage.getAttribute('data-delivery-product-name');
var productName = checkoutPage.getAttribute("data-delivery-product-name");
if (productName) {
this.deliveryProductName = productName;
console.log('[HomeDelivery] Using translated product name from server:', this.deliveryProductName);
console.log(
"[HomeDelivery] Using translated product name from server:",
this.deliveryProductName
);
}
// Check if home delivery is enabled for this order
var homeDeliveryAttr = checkoutPage.getAttribute('data-home-delivery-enabled');
this.homeDeliveryEnabled = homeDeliveryAttr === 'true' || homeDeliveryAttr === 'True';
console.log('[HomeDelivery] Home delivery enabled:', this.homeDeliveryEnabled);
var homeDeliveryAttr = checkoutPage.getAttribute("data-home-delivery-enabled");
this.homeDeliveryEnabled =
homeDeliveryAttr === "true" || homeDeliveryAttr === "True";
console.log("[HomeDelivery] Home delivery enabled:", this.homeDeliveryEnabled);
// Show/hide home delivery section based on configuration
this.toggleHomeDeliverySection();
}
// Get order ID from confirm button
var confirmBtn = document.getElementById('confirm-order-btn');
var confirmBtn = document.getElementById("confirm-order-btn");
if (confirmBtn) {
this.orderId = confirmBtn.getAttribute('data-order-id');
console.log('[HomeDelivery] orderId from button:', this.orderId);
this.orderId = confirmBtn.getAttribute("data-order-id");
console.log("[HomeDelivery] orderId from button:", this.orderId);
}
var checkbox = document.getElementById('home-delivery-checkbox');
var checkbox = document.getElementById("home-delivery-checkbox");
if (!checkbox) return;
var self = this;
checkbox.addEventListener('change', function() {
checkbox.addEventListener("change", function () {
if (this.checked) {
self.addDeliveryProduct();
self.showDeliveryInfo();
@ -66,42 +75,44 @@
this.checkDeliveryInCart();
},
toggleHomeDeliverySection: function() {
var homeDeliverySection = document.querySelector('[id*="home-delivery"], [class*="home-delivery"]');
var checkbox = document.getElementById('home-delivery-checkbox');
var homeDeliveryContainer = document.getElementById('home-delivery-container');
toggleHomeDeliverySection: function () {
var homeDeliverySection = document.querySelector(
'[id*="home-delivery"], [class*="home-delivery"]'
);
var checkbox = document.getElementById("home-delivery-checkbox");
var homeDeliveryContainer = document.getElementById("home-delivery-container");
if (this.homeDeliveryEnabled) {
// Show home delivery option
if (checkbox) {
checkbox.closest('.form-check').style.display = 'block';
checkbox.closest(".form-check").style.display = "block";
}
if (homeDeliveryContainer) {
homeDeliveryContainer.style.display = 'block';
homeDeliveryContainer.style.display = "block";
}
console.log('[HomeDelivery] Home delivery option shown');
console.log("[HomeDelivery] Home delivery option shown");
} else {
// Hide home delivery option and delivery info alert
if (checkbox) {
checkbox.closest('.form-check').style.display = 'none';
checkbox.closest(".form-check").style.display = "none";
checkbox.checked = false;
}
if (homeDeliveryContainer) {
homeDeliveryContainer.style.display = 'none';
homeDeliveryContainer.style.display = "none";
}
// Also hide the delivery info alert when home delivery is disabled
this.hideDeliveryInfo();
this.removeDeliveryProduct();
console.log('[HomeDelivery] Home delivery option and delivery info hidden');
console.log("[HomeDelivery] Home delivery option and delivery info hidden");
}
},
checkDeliveryInCart: function() {
checkDeliveryInCart: function () {
if (!this.deliveryProductId) return;
var cart = this.getCart();
if (cart[this.deliveryProductId]) {
var checkbox = document.getElementById('home-delivery-checkbox');
var checkbox = document.getElementById("home-delivery-checkbox");
if (checkbox) {
checkbox.checked = true;
this.showDeliveryInfo();
@ -109,93 +120,103 @@
}
},
getCart: function() {
getCart: function () {
if (!this.orderId) return {};
var cartKey = 'eskaera_' + this.orderId + '_cart';
var cartKey = "eskaera_" + this.orderId + "_cart";
var cartStr = localStorage.getItem(cartKey);
return cartStr ? JSON.parse(cartStr) : {};
},
saveCart: function(cart) {
saveCart: function (cart) {
if (!this.orderId) return;
var cartKey = 'eskaera_' + this.orderId + '_cart';
var cartKey = "eskaera_" + this.orderId + "_cart";
localStorage.setItem(cartKey, JSON.stringify(cart));
// Re-render checkout summary without reloading
var self = this;
setTimeout(function() {
setTimeout(function () {
// Use the global function from checkout_labels.js
if (typeof window.renderCheckoutSummary === 'function') {
if (typeof window.renderCheckoutSummary === "function") {
window.renderCheckoutSummary();
}
}, 50);
},
renderCheckoutSummary: function() {
renderCheckoutSummary: function () {
// Stub - now handled by global window.renderCheckoutSummary
},
addDeliveryProduct: function() {
addDeliveryProduct: function () {
if (!this.deliveryProductId) {
console.warn('[HomeDelivery] Delivery product ID not found');
console.warn("[HomeDelivery] Delivery product ID not found");
return;
}
console.log('[HomeDelivery] Adding delivery product - deliveryProductId:', this.deliveryProductId, 'orderId:', this.orderId);
console.log(
"[HomeDelivery] Adding delivery product - deliveryProductId:",
this.deliveryProductId,
"orderId:",
this.orderId
);
var cart = this.getCart();
console.log('[HomeDelivery] Current cart before adding:', cart);
console.log("[HomeDelivery] Current cart before adding:", cart);
cart[this.deliveryProductId] = {
id: this.deliveryProductId,
name: this.deliveryProductName,
price: this.deliveryProductPrice,
qty: 1
qty: 1,
};
console.log('[HomeDelivery] Cart after adding delivery:', cart);
console.log("[HomeDelivery] Cart after adding delivery:", cart);
this.saveCart(cart);
console.log('[HomeDelivery] Delivery product added to localStorage');
console.log("[HomeDelivery] Delivery product added to localStorage");
},
removeDeliveryProduct: function() {
removeDeliveryProduct: function () {
if (!this.deliveryProductId) {
console.warn('[HomeDelivery] Delivery product ID not found');
console.warn("[HomeDelivery] Delivery product ID not found");
return;
}
console.log('[HomeDelivery] Removing delivery product - deliveryProductId:', this.deliveryProductId, 'orderId:', this.orderId);
console.log(
"[HomeDelivery] Removing delivery product - deliveryProductId:",
this.deliveryProductId,
"orderId:",
this.orderId
);
var cart = this.getCart();
console.log('[HomeDelivery] Current cart before removing:', cart);
console.log("[HomeDelivery] Current cart before removing:", cart);
if (cart[this.deliveryProductId]) {
delete cart[this.deliveryProductId];
console.log('[HomeDelivery] Cart after removing delivery:', cart);
console.log("[HomeDelivery] Cart after removing delivery:", cart);
}
this.saveCart(cart);
console.log('[HomeDelivery] Delivery product removed from localStorage');
console.log("[HomeDelivery] Delivery product removed from localStorage");
},
showDeliveryInfo: function() {
var alert = document.getElementById('delivery-info-alert');
showDeliveryInfo: function () {
var alert = document.getElementById("delivery-info-alert");
if (alert) {
console.log('[HomeDelivery] Showing delivery info alert');
alert.classList.remove('d-none');
alert.style.display = 'block';
console.log("[HomeDelivery] Showing delivery info alert");
alert.classList.remove("d-none");
alert.style.display = "block";
}
},
hideDeliveryInfo: function() {
var alert = document.getElementById('delivery-info-alert');
hideDeliveryInfo: function () {
var alert = document.getElementById("delivery-info-alert");
if (alert) {
console.log('[HomeDelivery] Hiding delivery info alert');
alert.classList.add('d-none');
alert.style.display = 'none';
console.log("[HomeDelivery] Hiding delivery info alert");
alert.classList.add("d-none");
alert.style.display = "none";
}
}
},
};
// Initialize on DOM ready
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', function() {
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", function () {
HomeDeliveryManager.init();
});
} else {