odoo.define("website_decimal_qty.website_sale", function (require) { "use strict"; var publicWidget = require("web.public.widget"); var wSaleUtils = require("website_sale.utils"); require("website_sale.website_sale"); /** * This module extends the website_sale module to support decimal quantity input for adding products to the cart. * It overrides the onClickAddCartJSON function from sale.VariantMixin to add support for decimal quantity input, * and extends the WebsiteSale widget to handle updating cart quantities when a decimal quantity is entered. */ publicWidget.registry.WebsiteSale.include({ _changeCartQuantity: function ($input, value, $dom_optional, line_id, productIDs) { _.each($dom_optional, function (elem) { $(elem).find(".js_quantity").text(value); productIDs.push($(elem).find("span[data-product-id]").data("product-id")); }); $input.data("update_change", true); this._rpc({ route: "/shop/cart/update_json", params: { line_id: line_id, product_id: parseInt($input.data("product-id"), 10), set_qty: value, }, }).then(function (data) { $input.data("update_change", false); var check_value = parseFloat($input.val()); if (isNaN(check_value)) { check_value = 1; } if (value !== check_value) { $input.trigger("change"); return; } if (!data.cart_quantity) { return (window.location = "/shop/cart"); } wSaleUtils.updateCartNavBar(data); $input.val(data.quantity); $(".js_quantity[data-line-id=" + line_id + "]") .val(data.quantity) .text(data.quantity); if (data.warning) { var cart_alert = $(".oe_cart").parent().find("#data_warning"); if (cart_alert.length === 0) { $(".oe_cart").prepend( '