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.

61 lines
2.6 KiB

5 years ago
  1. # © 2019 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. from odoo.addons.website_sale_delivery.controllers.main import WebsiteSaleDelivery
  7. class VracoopWebsiteSaleDelivery(WebsiteSale):
  8. @http.route(['/shop/update_retrait'], type='json', auth='public', methods=['POST'], website=True, csrf=False)
  9. def update_eshop_retrait(self, **post):
  10. results = {}
  11. if hasattr(self, '_update_website_sale_retrait'):
  12. results.update(self._update_website_sale_retrait(**post))
  13. return results
  14. def _get_shop_payment_values(self, order, **kwargs):
  15. values = super(VracoopWebsiteSaleDelivery, self)._get_shop_payment_values(order, **kwargs)
  16. points_retrait = request.env['vracoop.point.retrait'].sudo().search([('website_published', '=', True)])
  17. values['points_retrait'] = points_retrait
  18. return values
  19. def _update_website_sale_retrait(self, **post):
  20. order = request.website.sale_get_order()
  21. if order:
  22. if 'vracoop_point_retrait_id' in post:
  23. vracoop_point_retrait_id = int(post['vracoop_point_retrait_id'])
  24. order._check_retrait(force_retrait_id=vracoop_point_retrait_id)
  25. if 'day_retrait' in post:
  26. day_retrait = post['day_retrait']
  27. order._update_day(day_retrait=day_retrait)
  28. if 'hour_retrait' in post:
  29. hour_retrait = post['hour_retrait']
  30. order._update_hour(hour_retrait=hour_retrait)
  31. return self._update_website_sale_retrait_return(order, **post)
  32. def _update_website_sale_retrait_return(self, order, **post):
  33. if 'vracoop_point_retrait_id' in post:
  34. vracoop_point_retrait_id = int(post['vracoop_point_retrait_id'])
  35. else:
  36. vracoop_point_retrait_id = ''
  37. if 'day_retrait' in post:
  38. day_retrait = post['day_retrait']
  39. else:
  40. day_retrait = ''
  41. if 'hour_retrait' in post:
  42. hour_retrait = post['hour_retrait']
  43. else:
  44. hour_retrait = ''
  45. if order:
  46. return {'status': order.delivery_rating_success,
  47. 'error_message': order.delivery_message,
  48. 'vracoop_point_retrait_id': vracoop_point_retrait_id,
  49. 'day_retrait': day_retrait,
  50. 'hour_retrait': hour_retrait
  51. }
  52. return {}