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.

74 lines
3.0 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
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. @http.route(['/shop/check_type_carrier'], type='json', auth='public', methods=['POST'], website=True, csrf=False)
  15. def check_type_carrier(self, **post):
  16. results = {}
  17. if hasattr(self, '_check_carrier_type'):
  18. results.update(self._check_carrier_type(**post))
  19. return results
  20. def _get_shop_payment_values(self, order, **kwargs):
  21. values = super(VracoopWebsiteSaleDelivery, self)._get_shop_payment_values(order, **kwargs)
  22. points_retrait = request.env['vracoop.point.retrait'].sudo().search([('website_published', '=', True)])
  23. values['points_retrait'] = points_retrait
  24. return values
  25. def _update_website_sale_retrait(self, **post):
  26. order = request.website.sale_get_order()
  27. if order:
  28. if 'vracoop_point_retrait_id' in post:
  29. vracoop_point_retrait_id = int(post['vracoop_point_retrait_id'])
  30. order._check_retrait(force_retrait_id=vracoop_point_retrait_id)
  31. if 'hour_retrait' in post:
  32. hour_retrait = post['hour_retrait']
  33. order._update_day_hour(hour_retrait=hour_retrait)
  34. return self._update_website_sale_retrait_return(order, **post)
  35. def _update_website_sale_retrait_return(self, order, **post):
  36. status = False
  37. if 'vracoop_point_retrait_id' in post:
  38. vracoop_point_retrait_id = int(post['vracoop_point_retrait_id'])
  39. else:
  40. vracoop_point_retrait_id = ''
  41. if 'hour_retrait' in post:
  42. hour_retrait = post['hour_retrait']
  43. status = True
  44. else:
  45. hour_retrait = ''
  46. if order:
  47. return {'status': status,
  48. 'error_message': order.delivery_message,
  49. 'vracoop_point_retrait_id': vracoop_point_retrait_id,
  50. 'hour_retrait': hour_retrait
  51. }
  52. return {}
  53. def _check_carrier_type(self, **post):
  54. order = request.website.sale_get_order()
  55. carrier_id = int(post['carrier_id'])
  56. carrier = request.env['delivery.carrier'].sudo().browse(carrier_id)
  57. point_retrait = carrier.point_retrait
  58. if order:
  59. return {'carrier_id': carrier_id,
  60. 'point_retrait': point_retrait
  61. }
  62. return {}