From 043ce9731360bdaffdacc7ee8188ec33ce649d96 Mon Sep 17 00:00:00 2001 From: "Indoteknik ." Date: Wed, 13 Aug 2025 09:14:43 +0700 Subject: (andri) fix API User --- indoteknik_api/controllers/api_v1/user.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py index b5b7e055..3cfad141 100644 --- a/indoteknik_api/controllers/api_v1/user.py +++ b/indoteknik_api/controllers/api_v1/user.py @@ -396,7 +396,7 @@ class User(controller.Controller): 'user': request.env['res.users'].api_single_response(user) }) - @http.route(prefix + 'user/', auth='public', methods=['PUT', 'OPTIONS'], csrf=False) + @http.route(prefix + 'user/', auth='public', methods=['POST', 'OPTIONS'], csrf=False) @controller.Controller.must_authorized() def update_user(self, **kw): id = kw.get('id') @@ -446,7 +446,7 @@ class User(controller.Controller): return self.response(address) - @http.route(prefix + 'user//switch', auth='public', methods=['PUT', 'OPTIONS'], csrf=False) + @http.route(prefix + 'user//switch', auth='public', methods=['POST', 'OPTIONS'], csrf=False) @controller.Controller.must_authorized() def switch_account(self, **kw): id = int(kw.get('id')) -- cgit v1.2.3 From 48acecc8e8b1f77b9b9ea7d71e3d0ff72bed1f3f Mon Sep 17 00:00:00 2001 From: "Indoteknik ." Date: Wed, 13 Aug 2025 13:23:50 +0700 Subject: (andri) fix --- indoteknik_api/controllers/api_v1/user.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py index 3cfad141..50ea8c98 100644 --- a/indoteknik_api/controllers/api_v1/user.py +++ b/indoteknik_api/controllers/api_v1/user.py @@ -489,7 +489,7 @@ class User(controller.Controller): if type_acc == 'business': parameter = [ - ('company_type', '=', 'company'), + ('is_company', '=', True), ('name', 'ilike', business_name) ] if parent_id: -- cgit v1.2.3 From b5a88d98b019c5a561864e56b8d73aaec4f4896a Mon Sep 17 00:00:00 2001 From: "Indoteknik ." Date: Wed, 13 Aug 2025 14:06:54 +0700 Subject: (andri) try fix user company request via switchaccount --- indoteknik_api/controllers/api_v1/user.py | 5 ++--- indoteknik_custom/models/user_company_request.py | 10 ++++++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py index 50ea8c98..9044e69c 100644 --- a/indoteknik_api/controllers/api_v1/user.py +++ b/indoteknik_api/controllers/api_v1/user.py @@ -691,11 +691,10 @@ class User(controller.Controller): new_company_request = request.env['user.company.request'].search(parameter, limit=1) is_approve = '' if new_company_request: - # Mengambil nilai is_approve - if new_company_request.is_approve == False: + if not new_company_request.is_approve: # None atau '' response['status'] = 'pending' else: - response['status'] = new_company_request.is_approve + response['status'] = new_company_request.is_approve # 'approved' atau 'rejected' else: response['status'] = False return self.response(response) diff --git a/indoteknik_custom/models/user_company_request.py b/indoteknik_custom/models/user_company_request.py index 9216e8eb..2261545f 100644 --- a/indoteknik_custom/models/user_company_request.py +++ b/indoteknik_custom/models/user_company_request.py @@ -1,6 +1,9 @@ from odoo import models, fields, api from odoo.exceptions import UserError from odoo.http import request +import logging + +_logger = logging.getLogger(__name__) class UserCompanyRequest(models.Model): _name = 'user.company.request' @@ -65,8 +68,8 @@ class UserCompanyRequest(models.Model): is_approve = vals.get('is_approve') is_internal_input = vals.get('internal_input') is_company_id = vals.get('user_company_id') - if self.is_approve and is_approve: - raise UserError('Tidak dapat mengubah approval yang sudah diisi') + # if self.is_approve and is_approve: + # raise UserError('Tidak dapat mengubah approval yang sudah diisi') if is_internal_input: if self.user_company_id.nama_wajib_pajak == self.user_company_id.name: @@ -75,6 +78,7 @@ class UserCompanyRequest(models.Model): user_company_id = [] if is_company_id: user_company_id = request.env['res.partner'].search([('id', '=', is_company_id)], limit=1) + _logger.info('User Company ID: %s', user_company_id) # self.user_company_id.customer_type = self.similar_company_ids.customer_type # self.user_company_id.npwp = self.similar_company_ids.npwp # self.user_company_id.sppkp = self.similar_company_ids.sppkp @@ -101,6 +105,8 @@ class UserCompanyRequest(models.Model): self.user_id.property_account_payable_id = user_company_id.property_account_payable_id if user_company_id else self.user_company_id.property_account_payable_id self.user_id.property_payment_term_id = user_company_id.property_payment_term_id if user_company_id else self.user_company_id.property_payment_term_id self.user_id.property_supplier_payment_term_id = user_company_id.property_supplier_payment_term_id if user_company_id else self.user_company_id.property_supplier_payment_term_id + self.user_id.is_company = True + self.user_id.active = True self.user_company_id.active = True user.send_company_switch_approve_mail() if vals.get('is_switch_account') == True else user.send_company_request_approve_mail() else: -- cgit v1.2.3 From c920de946ec9e942ea98d5f46b8c20fe6c5d9f63 Mon Sep 17 00:00:00 2001 From: "Indoteknik ." Date: Thu, 14 Aug 2025 13:53:19 +0700 Subject: (andri) fix isparent user --- indoteknik_custom/models/user_company_request.py | 45 ++++++++++++++---------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/indoteknik_custom/models/user_company_request.py b/indoteknik_custom/models/user_company_request.py index 2261545f..0c192239 100644 --- a/indoteknik_custom/models/user_company_request.py +++ b/indoteknik_custom/models/user_company_request.py @@ -75,7 +75,7 @@ class UserCompanyRequest(models.Model): if self.user_company_id.nama_wajib_pajak == self.user_company_id.name: self.user_company_id.nama_wajib_pajak = is_internal_input self.user_company_id.name = is_internal_input - user_company_id = [] + user_company_id = request.env['res.partner'] if is_company_id: user_company_id = request.env['res.partner'].search([('id', '=', is_company_id)], limit=1) _logger.info('User Company ID: %s', user_company_id) @@ -92,23 +92,32 @@ class UserCompanyRequest(models.Model): if not self.is_approve and is_approve: if is_approve == 'approved': - self.user_id.parent_id = user_company_id if user_company_id else self.user_company_id - self.user_id.customer_type = user_company_id.customer_type if user_company_id else self.user_company_id.customer_type - self.user_id.npwp = user_company_id.npwp if user_company_id else self.user_company_id.npwp - self.user_id.sppkp = user_company_id.sppkp if user_company_id else self.user_company_id.sppkp - self.user_id.nama_wajib_pajak = user_company_id.nama_wajib_pajak if user_company_id else self.user_company_id.nama_wajib_pajak - self.user_id.alamat_lengkap_text = user_company_id.alamat_lengkap_text if user_company_id else self.user_company_id.alamat_lengkap_text - self.user_id.industry_id = user_company_id.industry_id.id if user_company_id else self.user_company_id.industry_id - self.user_id.company_type_id = user_company_id.company_type_id.id if user_company_id else self.user_company_id.company_type_id - self.user_id.user_id = user_company_id.user_id if user_company_id else self.user_company_id.user_id - self.user_id.property_account_receivable_id = user_company_id.property_account_receivable_id if user_company_id else self.user_company_id.property_account_receivable_id - self.user_id.property_account_payable_id = user_company_id.property_account_payable_id if user_company_id else self.user_company_id.property_account_payable_id - self.user_id.property_payment_term_id = user_company_id.property_payment_term_id if user_company_id else self.user_company_id.property_payment_term_id - self.user_id.property_supplier_payment_term_id = user_company_id.property_supplier_payment_term_id if user_company_id else self.user_company_id.property_supplier_payment_term_id - self.user_id.is_company = True - self.user_id.active = True - self.user_company_id.active = True - user.send_company_switch_approve_mail() if vals.get('is_switch_account') == True else user.send_company_request_approve_mail() + company_rec = user_company_id if user_company_id else self.user_company_id + _logger.info('Company Record: %s', company_rec) + if not company_rec: + raise UserError("Company record tidak ditemukan untuk set parent_id.") + + self.user_id.parent_id = company_rec.id + self.user_id.customer_type = company_rec.customer_type + self.user_id.npwp = company_rec.npwp + self.user_id.sppkp = company_rec.sppkp + self.user_id.nama_wajib_pajak = company_rec.nama_wajib_pajak + self.user_id.alamat_lengkap_text = company_rec.alamat_lengkap_text + self.user_id.industry_id = company_rec.industry_id.id if company_rec.industry_id else False + self.user_id.company_type_id = company_rec.company_type_id.id if company_rec.company_type_id else False + self.user_id.user_id = company_rec.user_id + self.user_id.property_account_receivable_id = company_rec.property_account_receivable_id + self.user_id.property_account_payable_id = company_rec.property_account_payable_id + self.user_id.property_payment_term_id = company_rec.property_payment_term_id + self.user_id.property_supplier_payment_term_id = company_rec.property_supplier_payment_term_id + # self.user_id.is_company = True + self.user_id.active = True + company_rec.active = True + + if vals.get('is_switch_account') is True: + user.send_company_switch_approve_mail() + else: + user.send_company_request_approve_mail() else: # new_company = self.env['res.partner'].create({ # 'name': self.user_input -- cgit v1.2.3 From 33d3124e1283778cfb957c7bb75afc6619c4dd7d Mon Sep 17 00:00:00 2001 From: "Indoteknik ." Date: Thu, 14 Aug 2025 15:11:00 +0700 Subject: (andri) fix --- indoteknik_custom/models/user_company_request.py | 45 ++++++++++-------------- 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/indoteknik_custom/models/user_company_request.py b/indoteknik_custom/models/user_company_request.py index 0c192239..2261545f 100644 --- a/indoteknik_custom/models/user_company_request.py +++ b/indoteknik_custom/models/user_company_request.py @@ -75,7 +75,7 @@ class UserCompanyRequest(models.Model): if self.user_company_id.nama_wajib_pajak == self.user_company_id.name: self.user_company_id.nama_wajib_pajak = is_internal_input self.user_company_id.name = is_internal_input - user_company_id = request.env['res.partner'] + user_company_id = [] if is_company_id: user_company_id = request.env['res.partner'].search([('id', '=', is_company_id)], limit=1) _logger.info('User Company ID: %s', user_company_id) @@ -92,32 +92,23 @@ class UserCompanyRequest(models.Model): if not self.is_approve and is_approve: if is_approve == 'approved': - company_rec = user_company_id if user_company_id else self.user_company_id - _logger.info('Company Record: %s', company_rec) - if not company_rec: - raise UserError("Company record tidak ditemukan untuk set parent_id.") - - self.user_id.parent_id = company_rec.id - self.user_id.customer_type = company_rec.customer_type - self.user_id.npwp = company_rec.npwp - self.user_id.sppkp = company_rec.sppkp - self.user_id.nama_wajib_pajak = company_rec.nama_wajib_pajak - self.user_id.alamat_lengkap_text = company_rec.alamat_lengkap_text - self.user_id.industry_id = company_rec.industry_id.id if company_rec.industry_id else False - self.user_id.company_type_id = company_rec.company_type_id.id if company_rec.company_type_id else False - self.user_id.user_id = company_rec.user_id - self.user_id.property_account_receivable_id = company_rec.property_account_receivable_id - self.user_id.property_account_payable_id = company_rec.property_account_payable_id - self.user_id.property_payment_term_id = company_rec.property_payment_term_id - self.user_id.property_supplier_payment_term_id = company_rec.property_supplier_payment_term_id - # self.user_id.is_company = True - self.user_id.active = True - company_rec.active = True - - if vals.get('is_switch_account') is True: - user.send_company_switch_approve_mail() - else: - user.send_company_request_approve_mail() + self.user_id.parent_id = user_company_id if user_company_id else self.user_company_id + self.user_id.customer_type = user_company_id.customer_type if user_company_id else self.user_company_id.customer_type + self.user_id.npwp = user_company_id.npwp if user_company_id else self.user_company_id.npwp + self.user_id.sppkp = user_company_id.sppkp if user_company_id else self.user_company_id.sppkp + self.user_id.nama_wajib_pajak = user_company_id.nama_wajib_pajak if user_company_id else self.user_company_id.nama_wajib_pajak + self.user_id.alamat_lengkap_text = user_company_id.alamat_lengkap_text if user_company_id else self.user_company_id.alamat_lengkap_text + self.user_id.industry_id = user_company_id.industry_id.id if user_company_id else self.user_company_id.industry_id + self.user_id.company_type_id = user_company_id.company_type_id.id if user_company_id else self.user_company_id.company_type_id + self.user_id.user_id = user_company_id.user_id if user_company_id else self.user_company_id.user_id + self.user_id.property_account_receivable_id = user_company_id.property_account_receivable_id if user_company_id else self.user_company_id.property_account_receivable_id + self.user_id.property_account_payable_id = user_company_id.property_account_payable_id if user_company_id else self.user_company_id.property_account_payable_id + self.user_id.property_payment_term_id = user_company_id.property_payment_term_id if user_company_id else self.user_company_id.property_payment_term_id + self.user_id.property_supplier_payment_term_id = user_company_id.property_supplier_payment_term_id if user_company_id else self.user_company_id.property_supplier_payment_term_id + self.user_id.is_company = True + self.user_id.active = True + self.user_company_id.active = True + user.send_company_switch_approve_mail() if vals.get('is_switch_account') == True else user.send_company_request_approve_mail() else: # new_company = self.env['res.partner'].create({ # 'name': self.user_input -- cgit v1.2.3 From aef7941fa025879bfa47ad626c0de7cb716e2ccc Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Fri, 15 Aug 2025 09:08:22 +0700 Subject: fix bug --- indoteknik_custom/models/stock_picking.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py index bf6834d0..d63c5d4c 100644 --- a/indoteknik_custom/models/stock_picking.py +++ b/indoteknik_custom/models/stock_picking.py @@ -1060,7 +1060,7 @@ class StockPicking(models.Model): self.sale_id.date_doc_kirim = self.date_doc_kirim def action_assign(self): - if self.env.context.get('default_picking_type_id') and self.sale_id: + if self.env.context.get('default_picking_type_id') and ('BU/INPUT' not in self.name or 'BU/PUT' not in self.name): pickings_to_assign = self.filtered( lambda p: not (p.sale_id and p.sale_id.hold_outgoing) ) -- cgit v1.2.3 From 8dd70f877c68abb3f0331e18f4652acb11e1bf84 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Fri, 15 Aug 2025 10:42:48 +0700 Subject: partial check product bom --- indoteknik_custom/models/mrp_production.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/indoteknik_custom/models/mrp_production.py b/indoteknik_custom/models/mrp_production.py index 91da0597..b39995b5 100644 --- a/indoteknik_custom/models/mrp_production.py +++ b/indoteknik_custom/models/mrp_production.py @@ -263,7 +263,7 @@ class CheckBomProduct(models.Model): "The product '%s' tidak ada di operations. " ) % record.product_id.display_name) - total_qty_in_moves = sum(moves.mapped('product_uom_qty')) + total_qty_in_moves = sum(moves.mapped('quantity_done')) # Find existing lines for the same product, excluding the current line existing_lines = record.production_id.check_bom_product_lines.filtered( @@ -273,15 +273,15 @@ class CheckBomProduct(models.Model): if existing_lines: total_quantity = sum(existing_lines.mapped('quantity')) - if total_quantity > total_qty_in_moves: + if total_quantity != total_qty_in_moves: raise UserError(( - "Quantity Product '%s' kurang dari quantity demand." + "Quantity Product '%s' harus sama dengan quantity consumed." ) % (record.product_id.display_name)) else: # Check if the quantity exceeds the allowed total - if record.quantity > total_qty_in_moves: + if record.quantity != total_qty_in_moves: raise UserError(( - "Quantity Product '%s' kurang dari quantity demand." + "Quantity Product '%s' harus sama dengan quantity consumed." ) % (record.product_id.display_name)) # Set the quantity to the entered value @@ -446,7 +446,7 @@ class CheckBomProduct(models.Model): "The product '%s' tidak ada di operations. " ) % record.product_id.display_name) - total_qty_in_moves = sum(moves.mapped('product_uom_qty')) + total_qty_in_moves = sum(moves.mapped('quantity_done')) # Find existing lines for the same product, excluding the current line existing_lines = record.production_id.check_bom_product_lines.filtered( @@ -462,13 +462,13 @@ class CheckBomProduct(models.Model): if total_quantity > total_qty_in_moves: raise UserError(( - "Quantity Product '%s' sudah melebihi quantity demand." + "Quantity Product '%s' sudah melebihi quantity consumed." ) % (record.product_id.display_name)) else: # Check if the quantity exceeds the allowed total if record.quantity == total_qty_in_moves: raise UserError(( - "Quantity Product '%s' sudah melebihi quantity demand." + "Quantity Product '%s' sudah melebihi quantity consumed." ) % (record.product_id.display_name)) # Set the quantity to the entered value -- cgit v1.2.3 From c9111bcf2c71a5dac6f13dc5aceb55956127a055 Mon Sep 17 00:00:00 2001 From: "Indoteknik ." Date: Fri, 15 Aug 2025 13:59:36 +0700 Subject: (andri) fix --- indoteknik_api/controllers/api_v1/user.py | 16 +++++++++++++++- indoteknik_custom/models/user_company_request.py | 4 ++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py index 9044e69c..d134fc5a 100644 --- a/indoteknik_api/controllers/api_v1/user.py +++ b/indoteknik_api/controllers/api_v1/user.py @@ -674,7 +674,7 @@ class User(controller.Controller): # request_company.send_company_request_mail_switch() request_company.send_company_request_mail_switch() - response['switch'] = 'Pending' + response['switch'] = 'pending' return self.response(response) @http.route(prefix + 'user//switch_progres', auth='public', methods=['GET', 'OPTIONS'], csrf=False) @@ -699,6 +699,20 @@ class User(controller.Controller): response['status'] = False return self.response(response) + # @http.route(prefix + 'user//parent_status', auth='public', methods=['GET', 'OPTIONS'], csrf=False) + # # @controller.Controller.must_authorized() + # def parent_status(self, **kw): + # id = int(kw.get('id')) + # response = { + # 'parentId': None, + # 'parentName': None + # } + # partner = request.env['res.partner'].sudo().search([('id', '=', id)], limit=1) + # if partner and partner.parent_id: + # response['parentId'] = partner.parent_id.id + # response['parentName'] = partner.parent_id.name + # return self.response(response) + def get_user_by_email(self, email): return request.env['res.users'].search([ ('login', '=', email), diff --git a/indoteknik_custom/models/user_company_request.py b/indoteknik_custom/models/user_company_request.py index 2261545f..284575aa 100644 --- a/indoteknik_custom/models/user_company_request.py +++ b/indoteknik_custom/models/user_company_request.py @@ -105,8 +105,8 @@ class UserCompanyRequest(models.Model): self.user_id.property_account_payable_id = user_company_id.property_account_payable_id if user_company_id else self.user_company_id.property_account_payable_id self.user_id.property_payment_term_id = user_company_id.property_payment_term_id if user_company_id else self.user_company_id.property_payment_term_id self.user_id.property_supplier_payment_term_id = user_company_id.property_supplier_payment_term_id if user_company_id else self.user_company_id.property_supplier_payment_term_id - self.user_id.is_company = True - self.user_id.active = True + # self.user_id.is_company = True + # self.user_id.active = True self.user_company_id.active = True user.send_company_switch_approve_mail() if vals.get('is_switch_account') == True else user.send_company_request_approve_mail() else: -- cgit v1.2.3 From b6da6f96857b87f6433c9550085d86adf9319d08 Mon Sep 17 00:00:00 2001 From: "Indoteknik ." Date: Fri, 15 Aug 2025 18:04:51 +0700 Subject: (andri) fix api --- indoteknik_api/controllers/api_v1/user.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py index b5b7e055..1d35e01f 100644 --- a/indoteknik_api/controllers/api_v1/user.py +++ b/indoteknik_api/controllers/api_v1/user.py @@ -678,7 +678,7 @@ class User(controller.Controller): return self.response(response) @http.route(prefix + 'user//switch_progres', auth='public', methods=['GET', 'OPTIONS'], csrf=False) - # @controller.Controller.must_authorized() + @controller.Controller.must_authorized() def switch_account_progres(self, **kw): id = int(kw.get('id')) # user = request.env['res.partner'].search([('id', '=', id)], limit=1) -- cgit v1.2.3