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') 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') 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') 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 a321d5437ae7b43a6839a1332f3c14e2aca0d953 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Wed, 28 Aug 2024 16:43:57 +0700 Subject: add api picking if no login --- indoteknik_api/controllers/api_v1/stock_picking.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'indoteknik_api/controllers/api_v1') diff --git a/indoteknik_api/controllers/api_v1/stock_picking.py b/indoteknik_api/controllers/api_v1/stock_picking.py index 5e919b31..8b941c16 100644 --- a/indoteknik_api/controllers/api_v1/stock_picking.py +++ b/indoteknik_api/controllers/api_v1/stock_picking.py @@ -99,3 +99,15 @@ class StockPicking(controller.Controller): return self.response(None) return self.response(picking.get_tracking_detail()) + + @http.route(prefix + 'stock-picking//tracking', auth='public', method=['GET', 'OPTIONS']) + @controller.Controller.must_authorized() + def get_partner_stock_picking_detail_tracking_iman(self, **kw): + id = int(kw.get('id', 0)) + picking_model = request.env['stock.picking'] + + picking = picking_model.browse(id) + if not picking: + return self.response(None) + + return self.response(picking.get_tracking_detail()) \ No newline at end of file -- 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') 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') 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 76a20ce3f62642cc930971659fe7645c6e52c469 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Fri, 30 Aug 2024 13:41:28 +0700 Subject: cr code voucher --- indoteknik_api/controllers/api_v1/voucher.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indoteknik_api/controllers/api_v1') diff --git a/indoteknik_api/controllers/api_v1/voucher.py b/indoteknik_api/controllers/api_v1/voucher.py index cd5dff20..910488d1 100644 --- a/indoteknik_api/controllers/api_v1/voucher.py +++ b/indoteknik_api/controllers/api_v1/voucher.py @@ -28,7 +28,7 @@ class Voucher(controller.Controller): domain = [] if code: visibility.append('private') - domain += [('code', '=', code)] + domain += [('code', 'ilike', code)] user_pricelist = request.env.context.get('user_pricelist') if user_pricelist: domain += [('excl_pricelist_ids', 'not in', [user_pricelist.id])] -- cgit v1.2.3 From 9808cae54a32a65a41d0a13a141e62d88abedfef Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Mon, 2 Sep 2024 16:14:26 +0700 Subject: cr api get user cart --- indoteknik_api/controllers/api_v1/cart.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'indoteknik_api/controllers/api_v1') diff --git a/indoteknik_api/controllers/api_v1/cart.py b/indoteknik_api/controllers/api_v1/cart.py index f472a9b0..aa47b247 100644 --- a/indoteknik_api/controllers/api_v1/cart.py +++ b/indoteknik_api/controllers/api_v1/cart.py @@ -19,7 +19,8 @@ class Cart(controller.Controller): carts.write({'source': 'add_to_cart'}) data = { 'product_total': user_cart.search_count(query), - 'products': carts.with_context(price_for="web").get_products() + 'products': carts.with_context(price_for="web").get_products(), + 'product_inactive': carts.with_context(price_for="web").get_products_inactive() } return self.response(data) -- cgit v1.2.3 From 8dab99ed68d5fdc3a47bcd2cd349cad1d93fd53d Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Tue, 3 Sep 2024 08:57:48 +0700 Subject: reverse code --- indoteknik_api/controllers/api_v1/cart.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'indoteknik_api/controllers/api_v1') diff --git a/indoteknik_api/controllers/api_v1/cart.py b/indoteknik_api/controllers/api_v1/cart.py index aa47b247..f472a9b0 100644 --- a/indoteknik_api/controllers/api_v1/cart.py +++ b/indoteknik_api/controllers/api_v1/cart.py @@ -19,8 +19,7 @@ class Cart(controller.Controller): carts.write({'source': 'add_to_cart'}) data = { 'product_total': user_cart.search_count(query), - 'products': carts.with_context(price_for="web").get_products(), - 'product_inactive': carts.with_context(price_for="web").get_products_inactive() + 'products': carts.with_context(price_for="web").get_products() } return self.response(data) -- cgit v1.2.3 From 0b2e64dd95b42eb26c5ae92d08b176591d542a0b Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Tue, 3 Sep 2024 10:17:40 +0700 Subject: cr api get user cart --- indoteknik_api/controllers/api_v1/cart.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'indoteknik_api/controllers/api_v1') diff --git a/indoteknik_api/controllers/api_v1/cart.py b/indoteknik_api/controllers/api_v1/cart.py index f472a9b0..a2fd6286 100644 --- a/indoteknik_api/controllers/api_v1/cart.py +++ b/indoteknik_api/controllers/api_v1/cart.py @@ -17,10 +17,25 @@ class Cart(controller.Controller): query = [('user_id', '=', user_id)] carts = user_cart.search(query, limit=limit, offset=offset, order='create_date desc') carts.write({'source': 'add_to_cart'}) - data = { - 'product_total': user_cart.search_count(query), - 'products': carts.with_context(price_for="web").get_products() - } + data = [] + for cart in carts: + if cart.product_id: + price = cart.product_id._v2_get_website_price_include_tax() + if cart.product_id.active and price > 0: + data.append({ + 'products': cart.with_context(price_for="web").get_products() + }) + else: + data.append({ + 'product_inactive': cart.with_context(price_for="web").get_products() + }) + else: + data.append({ + 'products': cart.with_context(price_for="web").get_products() + }) + data.append({ + 'product_total': user_cart.search_count(query) + }) return self.response(data) @http.route(PREFIX_USER + 'cart/count', auth='public', methods=['GET', 'OPTIONS']) -- cgit v1.2.3 From 857567b0d10c5888e20646b7258cc13f0cedfdd2 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Tue, 3 Sep 2024 10:25:46 +0700 Subject: reverse code --- indoteknik_api/controllers/api_v1/cart.py | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) (limited to 'indoteknik_api/controllers/api_v1') diff --git a/indoteknik_api/controllers/api_v1/cart.py b/indoteknik_api/controllers/api_v1/cart.py index a2fd6286..f472a9b0 100644 --- a/indoteknik_api/controllers/api_v1/cart.py +++ b/indoteknik_api/controllers/api_v1/cart.py @@ -17,25 +17,10 @@ class Cart(controller.Controller): query = [('user_id', '=', user_id)] carts = user_cart.search(query, limit=limit, offset=offset, order='create_date desc') carts.write({'source': 'add_to_cart'}) - data = [] - for cart in carts: - if cart.product_id: - price = cart.product_id._v2_get_website_price_include_tax() - if cart.product_id.active and price > 0: - data.append({ - 'products': cart.with_context(price_for="web").get_products() - }) - else: - data.append({ - 'product_inactive': cart.with_context(price_for="web").get_products() - }) - else: - data.append({ - 'products': cart.with_context(price_for="web").get_products() - }) - data.append({ - 'product_total': user_cart.search_count(query) - }) + data = { + 'product_total': user_cart.search_count(query), + 'products': carts.with_context(price_for="web").get_products() + } return self.response(data) @http.route(PREFIX_USER + 'cart/count', auth='public', methods=['GET', 'OPTIONS']) -- 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') 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 0222d907c08ef27dd8d3b303b55d70542cbeb788 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Wed, 4 Sep 2024 10:14:54 +0700 Subject: cr api cart v1 --- indoteknik_api/controllers/api_v1/cart.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'indoteknik_api/controllers/api_v1') diff --git a/indoteknik_api/controllers/api_v1/cart.py b/indoteknik_api/controllers/api_v1/cart.py index f472a9b0..6bbb812c 100644 --- a/indoteknik_api/controllers/api_v1/cart.py +++ b/indoteknik_api/controllers/api_v1/cart.py @@ -17,9 +17,27 @@ class Cart(controller.Controller): query = [('user_id', '=', user_id)] carts = user_cart.search(query, limit=limit, offset=offset, order='create_date desc') carts.write({'source': 'add_to_cart'}) + products = [] + products_inactive = [] + for cart in carts: + if cart.product_id: + price = cart.product_id._v2_get_website_price_include_tax() + if cart.product_id.active and price > 0: + product = cart.with_context(price_for="web").get_products() + for product_active in product: + products.append(product_active) + else: + product_inactives = cart.with_context(price_for="web").get_products() + for inactives in product_inactives: + products_inactive.append(inactives) + else: + program = cart.with_context(price_for="web").get_products() + for programs in program: + products.append(programs) data = { 'product_total': user_cart.search_count(query), - 'products': carts.with_context(price_for="web").get_products() + 'products': products, + 'products_inactive': products_inactive } return self.response(data) -- 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') 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 From 1b55d65464b9789164ba45bdef03c56428e026f2 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Thu, 5 Sep 2024 17:49:30 +0700 Subject: update category management --- .../controllers/api_v1/category_management.py | 46 +++++++++++++--------- 1 file changed, 28 insertions(+), 18 deletions(-) (limited to 'indoteknik_api/controllers/api_v1') diff --git a/indoteknik_api/controllers/api_v1/category_management.py b/indoteknik_api/controllers/api_v1/category_management.py index 836f4493..8015bffc 100644 --- a/indoteknik_api/controllers/api_v1/category_management.py +++ b/indoteknik_api/controllers/api_v1/category_management.py @@ -2,11 +2,12 @@ from odoo import http from odoo.http import request from .. import controller + class CategoryManagement(controller.Controller): prefix = '/api/v1/' @http.route(prefix + 'categories_management', auth='public', methods=['GET', 'OPTIONS'], csrf=False) - @controller.Controller.must_authorized() + # @controller.Controller.must_authorized() def get_categories_management(self, **kw): base_url = request.env['ir.config_parameter'].sudo().get_param('web.base.url') @@ -14,33 +15,42 @@ class CategoryManagement(controller.Controller): categories = request.env['website.categories.management'].search(query, order='sequence') data = [] + for category in categories: category_id2_data = [] - for x in category.category_id2: - child_data = [ - {'id_level_3': child.id, - 'name': child.name, - 'numFound': len(child.product_tmpl_ids.ids), - 'image': request.env['ir.attachment'].api_image('product.public.category', 'image_1920', child.id)} - for child in x.child_frontend_id2 + + # Loop through each line to get Category Level 2 and Level 3 + for line in category.line_ids: + category_id3_data = [ + { + 'id_level_3': child.id, + 'name': child.name, + 'numFound': len(child.product_tmpl_ids.ids), + 'image': request.env['ir.attachment'].api_image('product.public.category', 'image_1920', + child.id) + } + for child in line.category_id3_ids # Loop through Many2many Category Level 3 ] + category_id2_data.append({ - 'id_level_2': x.id, - 'name': x.name, - 'numFound': len(x.product_tmpl_ids.ids), - 'image': request.env['ir.attachment'].api_image('product.public.category', 'image_1920', x.id), - 'child_frontend_id_i': child_data + 'id_level_2': line.category_id2.id, + 'name': line.category_id2.name, + 'numFound': len(line.category_id2.product_tmpl_ids.ids), + 'image': request.env['ir.attachment'].api_image('product.public.category', 'image_1920', + line.category_id2.id), + 'child_frontend_id_i': category_id3_data # Add Category Level 3 data }) + # Add data for Category Level 1 along with its lines (Category Level 2) data.append({ 'id': category.id, 'sequence': category.sequence, 'category_id_i': category.category_id.id, 'name': category.category_id.name, - 'numFound': len(category.category_id.product_tmpl_ids.ids) , - 'image': request.env['ir.attachment'].api_image('product.public.category', 'image_1920', category.category_id.id), - 'categories': category_id2_data, + 'numFound': len(category.category_id.product_tmpl_ids.ids), + 'image': request.env['ir.attachment'].api_image('product.public.category', 'image_1920', + category.category_id.id), + 'categories': category_id2_data, # Category Level 2 with Level 3 nested inside }) - return self.response(data, headers=[('Cache-Control', 'max-age=3600, public')]) - + return self.response(data, headers=[('Cache-Control', 'max-age=3600, public')]) -- cgit v1.2.3 From 94be2756aa2ab4c5a403877e9085eab344468f1a Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Fri, 6 Sep 2024 09:31:28 +0700 Subject: update category management --- .../controllers/api_v1/category_management.py | 42 ++++++++-------------- 1 file changed, 15 insertions(+), 27 deletions(-) (limited to 'indoteknik_api/controllers/api_v1') diff --git a/indoteknik_api/controllers/api_v1/category_management.py b/indoteknik_api/controllers/api_v1/category_management.py index 8015bffc..c7c4651d 100644 --- a/indoteknik_api/controllers/api_v1/category_management.py +++ b/indoteknik_api/controllers/api_v1/category_management.py @@ -7,7 +7,6 @@ class CategoryManagement(controller.Controller): prefix = '/api/v1/' @http.route(prefix + 'categories_management', auth='public', methods=['GET', 'OPTIONS'], csrf=False) - # @controller.Controller.must_authorized() def get_categories_management(self, **kw): base_url = request.env['ir.config_parameter'].sudo().get_param('web.base.url') @@ -15,42 +14,31 @@ class CategoryManagement(controller.Controller): categories = request.env['website.categories.management'].search(query, order='sequence') data = [] - for category in categories: category_id2_data = [] - - # Loop through each line to get Category Level 2 and Level 3 - for line in category.line_ids: - category_id3_data = [ - { - 'id_level_3': child.id, - 'name': child.name, - 'numFound': len(child.product_tmpl_ids.ids), - 'image': request.env['ir.attachment'].api_image('product.public.category', 'image_1920', - child.id) - } - for child in line.category_id3_ids # Loop through Many2many Category Level 3 + for x in category.category_id2: + child_data = [ + {'id_level_3': child.id, + 'name': child.name, + 'numFound': len(child.product_tmpl_ids.ids), + 'image': request.env['ir.attachment'].api_image('product.public.category', 'image_1920', child.id)} + for child in x.child_frontend_id2 ] - category_id2_data.append({ - 'id_level_2': line.category_id2.id, - 'name': line.category_id2.name, - 'numFound': len(line.category_id2.product_tmpl_ids.ids), - 'image': request.env['ir.attachment'].api_image('product.public.category', 'image_1920', - line.category_id2.id), - 'child_frontend_id_i': category_id3_data # Add Category Level 3 data + 'id_level_2': x.id, + 'name': x.name, + 'numFound': len(x.product_tmpl_ids.ids), + 'image': request.env['ir.attachment'].api_image('product.public.category', 'image_1920', x.id), + 'child_frontend_id_i': child_data }) - # Add data for Category Level 1 along with its lines (Category Level 2) data.append({ 'id': category.id, 'sequence': category.sequence, 'category_id_i': category.category_id.id, 'name': category.category_id.name, - 'numFound': len(category.category_id.product_tmpl_ids.ids), - 'image': request.env['ir.attachment'].api_image('product.public.category', 'image_1920', - category.category_id.id), - 'categories': category_id2_data, # Category Level 2 with Level 3 nested inside + 'numFound': len(category.category_id.product_tmpl_ids.ids) , + 'image': request.env['ir.attachment'].api_image('product.public.category', 'image_1920', category.category_id.id), + 'categories': category_id2_data, }) - return self.response(data, headers=[('Cache-Control', 'max-age=3600, public')]) -- cgit v1.2.3 From 8940e5abaa3f4627875e93820aac95c032a03788 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Fri, 6 Sep 2024 09:53:17 +0700 Subject: back to code api original --- indoteknik_api/controllers/api_v1/category_management.py | 1 + 1 file changed, 1 insertion(+) (limited to 'indoteknik_api/controllers/api_v1') diff --git a/indoteknik_api/controllers/api_v1/category_management.py b/indoteknik_api/controllers/api_v1/category_management.py index c7c4651d..c0ecc6b9 100644 --- a/indoteknik_api/controllers/api_v1/category_management.py +++ b/indoteknik_api/controllers/api_v1/category_management.py @@ -7,6 +7,7 @@ class CategoryManagement(controller.Controller): prefix = '/api/v1/' @http.route(prefix + 'categories_management', auth='public', methods=['GET', 'OPTIONS'], csrf=False) + @controller.Controller.must_authorized() def get_categories_management(self, **kw): base_url = request.env['ir.config_parameter'].sudo().get_param('web.base.url') -- cgit v1.2.3 From f0aaf4476c8b92cb68503e9760216ca20fe4e34d Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Tue, 17 Sep 2024 14:05:31 +0700 Subject: api check_tempo and add type promotion on sale order --- indoteknik_api/controllers/api_v1/partner.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'indoteknik_api/controllers/api_v1') diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index 69a2f861..83f92a19 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -164,4 +164,32 @@ class Partner(controller.Controller): }) return self.response(data) + + @http.route(prefix + 'check//tempo', auth='public', methods=['GET', 'OPTIONS']) + @controller.Controller.must_authorized() + def get_check_tempo_partner(self, **kw): + partner_id = int(kw.get('partner_id')) + + partner = request.env['res.partner'].search([('id', '=', partner_id)], limit=1) + if not partner: + return self.response(code=404, description='Partner not found') + + partner = partner.parent_id or partner + + if any(line.days == 0 for line in partner.property_payment_term_id.line_ids): + return self.response(code=402, description='Partner not tempo') + + result_tempo = sum(m.amount_total_signed for m in request.env['account.move'].search([('partner_id', '=', partner.id), ('payment_state', '=', 'not_paid'), ('state', '=', 'posted')])) + + remaining_limit = partner.blocking_stage - result_tempo if partner.active_limit else None + + data = { + 'name': partner.name, + 'amount_due': result_tempo, + 'remaining_limit': remaining_limit + } + + return self.response(data) + + -- cgit v1.2.3 From aabe85f0b4fe6e88a99d4bfa946599d220a9aa9f Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Wed, 18 Sep 2024 08:49:43 +0700 Subject: testing code --- indoteknik_api/controllers/api_v1/cart.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indoteknik_api/controllers/api_v1') diff --git a/indoteknik_api/controllers/api_v1/cart.py b/indoteknik_api/controllers/api_v1/cart.py index 6bbb812c..2a24b205 100644 --- a/indoteknik_api/controllers/api_v1/cart.py +++ b/indoteknik_api/controllers/api_v1/cart.py @@ -16,7 +16,7 @@ class Cart(controller.Controller): offset = int(kw.get('offset', 0)) query = [('user_id', '=', user_id)] carts = user_cart.search(query, limit=limit, offset=offset, order='create_date desc') - carts.write({'source': 'add_to_cart'}) + # carts.write({'source': 'add_to_cart'}) products = [] products_inactive = [] for cart in carts: -- cgit v1.2.3