You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
1.7 KiB

3 years ago
  1. # © 2020 Le Filament (<http://www.le-filament.com>)
  2. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
  3. from odoo import http, _
  4. from odoo.http import request
  5. from odoo.addons.website_sale.controllers.main import WebsiteSale
  6. class WebsiteSale(WebsiteSale):
  7. @http.route(['/shop/cart/update'], type='http', auth="public", methods=['POST'], website=True, csrf=False)
  8. def cart_update(self, product_id, add_qty=1, set_qty=0, **kw):
  9. res = super(WebsiteSale, self).cart_update(product_id, add_qty, set_qty, **kw)
  10. if kw.get('consignes'):
  11. order = request.website.sale_get_order()
  12. # Recherche de la ligne de commande correspondant au produit référent
  13. line_id = order._cart_find_product_line(int(product_id))
  14. # Recherche du produit consigne correspondant
  15. consigne_id = request.env['product.product'].sudo().search([
  16. ('product_tmpl_id', '=', int(kw.get('consignes')))], limit=1)
  17. # Calcul du nombre de consignes correspondants
  18. # Recherche de la quantité produit
  19. temp_id = request.env['product.template'].sudo().browse(int(kw.get('product_template_id')))
  20. if temp_id.pack_ok:
  21. qty_consigne = add_qty
  22. else:
  23. qty_consigne = 0
  24. # Ajout de l'article consigné
  25. order._cart_update(
  26. product_id=consigne_id.id,
  27. add_qty=qty_consigne,
  28. linked_line_id=line_id.id,
  29. set_qty=0,
  30. product_custom_attribute_values=None,
  31. no_variant_attribute_values=None
  32. )
  33. return request.redirect("/shop/cart")