From fa6e8c91bd98100b6ef862ce388817515f77b55d Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Mon, 12 Aug 2024 13:15:25 +0700 Subject: add api tracking order --- indoteknik_api/controllers/api_v1/sale_order.py | 33 ++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'indoteknik_api/controllers/api_v1/sale_order.py') diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py index ee173d29..d44868f0 100644 --- a/indoteknik_api/controllers/api_v1/sale_order.py +++ b/indoteknik_api/controllers/api_v1/sale_order.py @@ -615,4 +615,35 @@ class SaleOrder(controller.Controller): } return self.response(data) - \ No newline at end of file + + @http.route(prefix + 'tracking_order', auth='public', method=['GET', 'OPTIONS']) + @controller.Controller.must_authorized() + def tracking_get_sale_order_detail(self, **kw): + # Extract 'so' and 'email' parameters from query parameters + so = kw.get('so') + email_user = kw.get('email') + + if not email_user or not so: + return self.response(code=400, description="Email and Sale Order number are required.") + + # Search for the sale order by the name (so) + sale_order = request.env['sale.order'].search([('name', '=', so)], limit=1) + if not sale_order: + return self.response(code=404, description="Sale Order not found.") + + # Get the partner associated with the sale order + partner = sale_order.partner_id + + # Check if the email matches the partner's email + if partner.email != email_user: + return self.response(code=403, description="Email does not match the Sale Order.") + + # Check for partner child ids if needed + partner_child_ids = self.get_partner_child_ids(partner.id) + if sale_order.partner_id.id not in partner_child_ids: + return self.response(code=403, description="Unauthorized access to Sale Order details.") + + # Prepare the response data + data = request.env['sale.order'].api_v1_single_response(sale_order, context='with_detail') + + return self.response(data) \ No newline at end of file -- cgit v1.2.3 From 57bc06d6991f4ab2f0f0ef4baecbf071eb62042a Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Mon, 12 Aug 2024 16:32:06 +0700 Subject: update api tracking order --- indoteknik_api/controllers/api_v1/sale_order.py | 29 ++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) (limited to 'indoteknik_api/controllers/api_v1/sale_order.py') diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py index d44868f0..a9113ada 100644 --- a/indoteknik_api/controllers/api_v1/sale_order.py +++ b/indoteknik_api/controllers/api_v1/sale_order.py @@ -624,26 +624,45 @@ class SaleOrder(controller.Controller): email_user = kw.get('email') if not email_user or not so: - return self.response(code=400, description="Email and Sale Order number are required.") + return self.response({ + 'code': 400, + 'so': so, + 'email': email_user, + 'description': "Email and Sale Order number are required." + }) # Search for the sale order by the name (so) sale_order = request.env['sale.order'].search([('name', '=', so)], limit=1) if not sale_order: - return self.response(code=404, description="Sale Order not found.") + return self.response({ + 'code': 404, + 'so': so, + 'email': email_user, + 'description': "Sale Order not found." + }) # Get the partner associated with the sale order partner = sale_order.partner_id # Check if the email matches the partner's email if partner.email != email_user: - return self.response(code=403, description="Email does not match the Sale Order.") + return self.response({ + 'code': 403, + 'so': so, + 'email': email_user, + 'description': "Email does not match the Sale Order." + }) # Check for partner child ids if needed partner_child_ids = self.get_partner_child_ids(partner.id) if sale_order.partner_id.id not in partner_child_ids: - return self.response(code=403, description="Unauthorized access to Sale Order details.") + return self.response({ + 'so': so, + 'email': email_user, + 'description': "Unauthorized access to Sale Order details." + }) # Prepare the response data data = request.env['sale.order'].api_v1_single_response(sale_order, context='with_detail') - return self.response(data) \ No newline at end of file + return self.response(data) -- cgit v1.2.3 From 2513b765773fca587dbd298e77732d2d005949c8 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Tue, 13 Aug 2024 11:24:51 +0700 Subject: update api tracking order to get email same partner in company --- indoteknik_api/controllers/api_v1/sale_order.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'indoteknik_api/controllers/api_v1/sale_order.py') diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py index a9113ada..0da7f894 100644 --- a/indoteknik_api/controllers/api_v1/sale_order.py +++ b/indoteknik_api/controllers/api_v1/sale_order.py @@ -643,20 +643,26 @@ class SaleOrder(controller.Controller): # Get the partner associated with the sale order partner = sale_order.partner_id + company_id = partner.company_id.id - # Check if the email matches the partner's email - if partner.email != email_user: + # Search for all partners within the same company + partners_in_company = request.env['res.partner'].search([('company_id', '=', company_id)]) + + # Check if the email matches any partner's email in the same company + email_match = partners_in_company.filtered(lambda p: p.email == email_user) + if not email_match: return self.response({ 'code': 403, 'so': so, 'email': email_user, - 'description': "Email does not match the Sale Order." + 'description': "Email does not match any partner in the same company as the Sale Order." }) # Check for partner child ids if needed partner_child_ids = self.get_partner_child_ids(partner.id) if sale_order.partner_id.id not in partner_child_ids: return self.response({ + 'code': 403, 'so': so, 'email': email_user, 'description': "Unauthorized access to Sale Order details." @@ -666,3 +672,4 @@ class SaleOrder(controller.Controller): data = request.env['sale.order'].api_v1_single_response(sale_order, context='with_detail') return self.response(data) + -- cgit v1.2.3 From 0e9e58da406e62a72ce2ba18c6317e3de57963a1 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Thu, 29 Aug 2024 13:09:54 +0700 Subject: cr api voucher --- indoteknik_api/controllers/api_v1/sale_order.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'indoteknik_api/controllers/api_v1/sale_order.py') diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py index b351bacc..f6417bf9 100644 --- a/indoteknik_api/controllers/api_v1/sale_order.py +++ b/indoteknik_api/controllers/api_v1/sale_order.py @@ -342,11 +342,21 @@ class SaleOrder(controller.Controller): @http.route(prefix + 'user//sale_order/checkout', auth='public', method=['GET', 'OPTIONS'], csrf=False) @controller.Controller.must_authorized(private=True, private_key='user_id') def get_user_checkout_so(self, user_id, **kw): - cart = request.env['website.user.cart'] + m_voucher = request.env['voucher'] + m_cart = request.env['website.user.cart'] + voucher_code = kw.get('voucher') + voucher_shipping_code = kw.get('voucher_shipping') source = kw.get('source') - voucher = request.env['voucher'].search([('code', '=', voucher_code)], limit=1) - result = cart.with_context(price_for="web").get_user_checkout(user_id, voucher, source) + + voucher = m_voucher.search([('code', '=', voucher_code)], limit=1) + voucher_shipping = m_voucher.search([('code', '=', voucher_shipping_code)], limit=1) + result = m_cart.with_context(price_for="web").get_user_checkout( + user_id, + voucher=voucher, + voucher_shipping=voucher_shipping, + source=source + ) return self.response(result) @http.route(PREFIX_PARTNER + 'sale_order/checkout', auth='public', method=['POST', 'OPTIONS'], csrf=False) -- cgit v1.2.3 From f1b4d965f17184fb1a44c4bda759bd5a23f9df8d Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Thu, 29 Aug 2024 15:23:13 +0700 Subject: fix voucher --- indoteknik_api/controllers/api_v1/sale_order.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indoteknik_api/controllers/api_v1/sale_order.py') diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py index f6417bf9..1b7c1af4 100644 --- a/indoteknik_api/controllers/api_v1/sale_order.py +++ b/indoteknik_api/controllers/api_v1/sale_order.py @@ -349,8 +349,8 @@ class SaleOrder(controller.Controller): voucher_shipping_code = kw.get('voucher_shipping') source = kw.get('source') - voucher = m_voucher.search([('code', '=', voucher_code)], limit=1) - voucher_shipping = m_voucher.search([('code', '=', voucher_shipping_code)], limit=1) + voucher = m_voucher.search([('code', '=', voucher_code), ('apply_type', 'in', ['all', 'brand'])], limit=1) + voucher_shipping = m_voucher.search([('code', '=', voucher_shipping_code), ('apply_type', '=', 'shipping')], limit=1) result = m_cart.with_context(price_for="web").get_user_checkout( user_id, voucher=voucher, -- cgit v1.2.3 From eced81efba75d710d164f1baa2d2e50b4d2d3c18 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Tue, 3 Sep 2024 14:14:40 +0700 Subject: fix bug --- indoteknik_api/controllers/api_v1/sale_order.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'indoteknik_api/controllers/api_v1/sale_order.py') diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py index 1b7c1af4..c871b69e 100644 --- a/indoteknik_api/controllers/api_v1/sale_order.py +++ b/indoteknik_api/controllers/api_v1/sale_order.py @@ -460,11 +460,16 @@ class SaleOrder(controller.Controller): sale_order.apply_promotion_program() voucher_code = params['value']['voucher'] - voucher = request.env['voucher'].search([('code', '=', voucher_code)]) + voucher = request.env['voucher'].search([('code', '=', voucher_code),('apply_type', 'in', ['all', 'brand'])], limit=1) + voucher_shipping = request.env['voucher'].search([('code', '=', voucher_code),('apply_type', 'in', ['shipping'])], limit=1) if voucher and len(promotions) == 0: sale_order.voucher_id = voucher.id sale_order.apply_voucher() + if voucher_shipping and len(promotions) == 0: + sale_order.voucher_shipping_id = voucher_shipping.id + sale_order.apply_voucher() + cart_ids = [x['cart_id'] for x in carts] if sale_order._requires_approval_margin_leader(): #jika ada error tambahkan kondisi if params['value']['type'] == 'sale_order': sale_order.approval_status = 'pengajuan2' -- cgit v1.2.3 From 1bb074bb8f63072fb990c57c18986c50981f1402 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Wed, 4 Sep 2024 17:12:38 +0700 Subject: fix voucher shipping --- indoteknik_api/controllers/api_v1/sale_order.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indoteknik_api/controllers/api_v1/sale_order.py') diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py index c871b69e..e8d18366 100644 --- a/indoteknik_api/controllers/api_v1/sale_order.py +++ b/indoteknik_api/controllers/api_v1/sale_order.py @@ -407,7 +407,7 @@ class SaleOrder(controller.Controller): 'real_invoice_id': params['value']['partner_invoice_id'], 'partner_purchase_order_name': params['value']['po_number'], 'partner_purchase_order_file': params['value']['po_file'], - 'delivery_amt': params['value']['delivery_amount'], + 'delivery_amt': params['value']['delivery_amount'] * 1.10, 'estimated_arrival_days': params['value']['estimated_arrival_days'], 'shipping_cost_covered': 'customer', 'shipping_paid_by': 'customer', @@ -468,7 +468,7 @@ class SaleOrder(controller.Controller): if voucher_shipping and len(promotions) == 0: sale_order.voucher_shipping_id = voucher_shipping.id - sale_order.apply_voucher() + sale_order.apply_voucher_shipping() cart_ids = [x['cart_id'] for x in carts] if sale_order._requires_approval_margin_leader(): #jika ada error tambahkan kondisi if params['value']['type'] == 'sale_order': -- cgit v1.2.3