diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2024-08-12 13:15:25 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2024-08-12 13:15:25 +0700 |
| commit | fa6e8c91bd98100b6ef862ce388817515f77b55d (patch) | |
| tree | bd586ce7112afa59c5eab3775911ce94c022958f /indoteknik_api/controllers/api_v1 | |
| parent | 5be79e919b64ea6d3f92b255a697f8f56c75e764 (diff) | |
<iman> add api tracking order
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
| -rw-r--r-- | indoteknik_api/controllers/api_v1/sale_order.py | 33 |
1 files changed, 32 insertions, 1 deletions
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 |
