diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2023-10-06 14:22:12 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2023-10-06 14:22:12 +0700 |
| commit | 5f9c6e2837c8201ca8132f3d3d71627bf799fb6d (patch) | |
| tree | df2b9d4d0b52a6cf8d45d153dff977e04785abb2 /indoteknik_api/controllers | |
| parent | bb3c3c6cac4382220ae8a521e8c2162a5fe3d3e9 (diff) | |
| parent | 7a23a18a45fbd38fabc33f4e1a74d9f31e86cd60 (diff) | |
Merge branch 'production' of bitbucket.org:altafixco/indoteknik-addons into production
Diffstat (limited to 'indoteknik_api/controllers')
| -rw-r--r-- | indoteknik_api/controllers/api_v1/cart.py | 2 | ||||
| -rw-r--r-- | indoteknik_api/controllers/api_v1/sale_order.py | 19 | ||||
| -rw-r--r-- | indoteknik_api/controllers/api_v1/voucher.py | 2 | ||||
| -rw-r--r-- | indoteknik_api/controllers/controller.py | 12 |
4 files changed, 21 insertions, 14 deletions
diff --git a/indoteknik_api/controllers/api_v1/cart.py b/indoteknik_api/controllers/api_v1/cart.py index cb0f5a99..88fa9f88 100644 --- a/indoteknik_api/controllers/api_v1/cart.py +++ b/indoteknik_api/controllers/api_v1/cart.py @@ -18,7 +18,7 @@ class Cart(controller.Controller): carts = user_cart.search(query, limit=limit, offset=offset, order='create_date desc') data = { 'product_total': user_cart.search_count(query), - 'products': carts.get_products() + 'products': carts.with_context(price_for="web").get_products() } return self.response(data) diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py index ef4c2688..8209c751 100644 --- a/indoteknik_api/controllers/api_v1/sale_order.py +++ b/indoteknik_api/controllers/api_v1/sale_order.py @@ -236,14 +236,15 @@ class SaleOrder(controller.Controller): voucher_code = kw.get('voucher') source = kw.get('source') voucher = request.env['voucher'].search([('code', '=', voucher_code)], limit=1) - result = cart.get_user_checkout(user_id, voucher, source) + result = cart.with_context(price_for="web").get_user_checkout(user_id, voucher, source) return self.response(result) @http.route(PREFIX_PARTNER + 'sale_order/checkout', auth='public', method=['POST', 'OPTIONS'], csrf=False) @controller.Controller.must_authorized(private=True, private_key='partner_id') def create_partner_sale_order(self, **kw): config = request.env['ir.config_parameter'] - product_pricelist_default_discount_id = int(config.get_param('product.pricelist.default_discount_id')) + product_pricelist_default_discount_id = int(config.get_param('product.pricelist.tier1_v2')) + user_pricelist = request.env.context.get('user_pricelist').id or False params = self.get_request_params(kw, { 'user_id': ['number'], @@ -268,8 +269,8 @@ class SaleOrder(controller.Controller): parameters = { 'warehouse_id': 8, 'carrier_id': 1, - 'sales_tax_id': 20, - 'pricelist_id': product_pricelist_default_discount_id, + 'sales_tax_id': 23, + 'pricelist_id': user_pricelist or product_pricelist_default_discount_id, 'payment_term_id': 26, 'team_id': 2, 'company_id': 1, @@ -301,18 +302,19 @@ class SaleOrder(controller.Controller): source = params['value']['source'] carts = user_cart.get_product_by_user(user_id=user_id, selected=True, source=source) - order_lines = [] promotions = [] for cart in carts: if cart['cart_type'] == 'product': - order_lines.append({ + order_line = request.env['sale.order.line'].create({ 'company_id': 1, 'order_id': sale_order.id, - 'price_unit': cart['price']['price'], - 'discount': cart['price']['discount_percentage'], 'product_id': cart['id'], 'product_uom_qty': cart['quantity'] }) + order_line.product_id_change() + order_line.onchange_vendor_id() + order_line.price_unit = cart['price']['price'] + order_line.discount = cart['price']['discount_percentage'] elif cart['cart_type'] == 'promotion': promotions.append({ 'order_id': sale_order.id, @@ -320,7 +322,6 @@ class SaleOrder(controller.Controller): 'quantity': cart['quantity'] }) - request.env['sale.order.line'].create(order_lines) request.env['sale.order.promotion'].create(promotions) if len(promotions) > 0: diff --git a/indoteknik_api/controllers/api_v1/voucher.py b/indoteknik_api/controllers/api_v1/voucher.py index dfe9ceba..3c056ecd 100644 --- a/indoteknik_api/controllers/api_v1/voucher.py +++ b/indoteknik_api/controllers/api_v1/voucher.py @@ -20,7 +20,7 @@ class Voucher(controller.Controller): if code: visibility.append('private') parameter += [('code', '=', code)] - user_pricelist = request.env.user_pricelist + user_pricelist = request.env.context.get('user_pricelist') if user_pricelist: parameter += [('excl_pricelist_ids', 'not in', [user_pricelist.id])] diff --git a/indoteknik_api/controllers/controller.py b/indoteknik_api/controllers/controller.py index 08b3084e..12305d92 100644 --- a/indoteknik_api/controllers/controller.py +++ b/indoteknik_api/controllers/controller.py @@ -21,9 +21,12 @@ class Controller(http.Controller): def inner_wrapper(*args, **kwargs): self = args[0] auth = self.authenticate() - request.env.user_pricelist = self.user_pricelist() + if not auth: return self.unauthorized_response() + + self.set_user_pricelist_ctx() + if private: auth_key = int(auth[private_key]) param_key = int(kwargs.get(private_key, -1)) @@ -56,13 +59,16 @@ class Controller(http.Controller): result = user_token return result - def user_pricelist(self): + def set_user_pricelist_ctx(self): user_token = self.authenticate() pricelist = request.env['product.pricelist'].new() if isinstance(user_token, dict): partner = request.env['res.partner'].browse(user_token['partner_id']) if partner: pricelist = partner.property_product_pricelist - return pricelist + + context = request.env.context.copy() + context.update({'user_pricelist': pricelist}) + request.env.context = context def get_request_params(self, kw, queries): result = { |
