From 5446eefa619906ba785d1f867fd828cce0d0748c Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Fri, 29 Dec 2023 13:44:00 +0700 Subject: multi update paid status on po --- indoteknik_custom/models/purchase_order.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 285c5a95..6641e204 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -52,6 +52,19 @@ class PurchaseOrder(models.Model): responsible_ids = fields.Many2many('res.users', string='Responsibles', compute='_compute_responsibles') status_paid_cbd = fields.Boolean(string='Paid Status', tracking=3, help='Field ini diisi secara manual oleh Finance AP dan hanya untuk status PO CBD') + def action_multi_update_paid_status(self): + for purchase in self: + purchase.update({ + 'status_paid_cbd': True, + }) + + def open_form_multi_update_paid_status(self): + action = self.env['ir.actions.act_window']._for_xml_id('indoteknik_custom.action_purchase_order_multi_update') + action['context'] = { + 'purchase_ids': [x.id for x in self] + } + return action + def _compute_responsibles(self): for purchase in self: resposible_ids = [] -- cgit v1.2.3 From 3615748eafd2d2cfd81f6ddc95d50a7bc347798d Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Tue, 9 Jan 2024 14:11:04 +0700 Subject: ETA on sales dan purchase order --- indoteknik_custom/models/purchase_order.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 6641e204..ba6b6c41 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -45,7 +45,7 @@ class PurchaseOrder(models.Model): summary_qty_po = fields.Float('Total Qty', compute='_compute_summary_qty') summary_qty_receipt = fields.Float('Summary Qty Receipt', compute='_compute_summary_qty') count_line_product = fields.Float('Total Item', compute='compute_count_line_product') - note_description = fields.Char(string='Note', help='bisa diisi sebagai informasi indent barang tertentu atau apapun') + note_description = fields.Char(string='Noteman', help='bisa diisi sebagai informasi indent barang tertentu atau apapun') has_active_invoice = fields.Boolean(string='Has Active Invoice', compute='_compute_has_active_invoice') description = fields.Char(string='Description', help='bisa diisi sebagai informasi indent barang tertentu atau apapun') purchase_order_lines = fields.One2many('purchase.order.line', 'order_id', string='Indent', auto_join=True) @@ -114,8 +114,9 @@ class PurchaseOrder(models.Model): def _compute_date_planned(self): for order in self: if order.date_approve: + leadtime = order.partner_id.leadtime current_time = order.date_approve - delta_time = current_time + timedelta(days=2) + delta_time = current_time + timedelta(days=leadtime) delta_time = delta_time.strftime('%Y-%m-%d %H:%M:%S') order.date_planned = delta_time else: @@ -261,6 +262,11 @@ class PurchaseOrder(models.Model): amount += line.price_total order.delivery_amount = amount + def date_deadline_ref_date_planned(self): + for picking in self.picking_ids: + picking.scheduled_date = self.date_planned + picking.date_deadline = self.date_planned + def button_confirm(self): res = super(PurchaseOrder, self).button_confirm() @@ -287,10 +293,12 @@ class PurchaseOrder(models.Model): self.calculate_line_no() # override date planned added with two days + leadtime = self.partner_id.leadtime current_time = datetime.now() - delta_time = current_time + timedelta(days=2) + delta_time = current_time + timedelta(days=leadtime) delta_time = delta_time.strftime('%Y-%m-%d %H:%M:%S') self.date_planned = delta_time + self.date_deadline_ref_date_planned() return res -- cgit v1.2.3 From dfd4a1617d2c62b99d4bbcb6386b477874a33ebf Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Tue, 9 Jan 2024 15:03:15 +0700 Subject: multiple confirm purchase orders --- indoteknik_custom/models/purchase_order.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index ba6b6c41..6a641aff 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -52,12 +52,26 @@ class PurchaseOrder(models.Model): responsible_ids = fields.Many2many('res.users', string='Responsibles', compute='_compute_responsibles') status_paid_cbd = fields.Boolean(string='Paid Status', tracking=3, help='Field ini diisi secara manual oleh Finance AP dan hanya untuk status PO CBD') + def open_form_multi_confirm_po(self): + action = self.env['ir.actions.act_window']._for_xml_id('indoteknik_custom.action_purchase_order_multi_confirm') + action['context'] = { + 'order_ids': [x.id for x in self] + } + return action + def action_multi_update_paid_status(self): for purchase in self: purchase.update({ 'status_paid_cbd': True, }) + def action_multi_confirm_po(self): + for purchase in self: + if purchase.state != 'draft': + continue + + purchase.button_confirm() + def open_form_multi_update_paid_status(self): action = self.env['ir.actions.act_window']._for_xml_id('indoteknik_custom.action_purchase_order_multi_update') action['context'] = { -- cgit v1.2.3 From e64e3a04ff6db3802779477398020738017b74b8 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Wed, 10 Jan 2024 09:18:26 +0700 Subject: multiple delete on purchase order line --- indoteknik_custom/models/purchase_order.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 6a641aff..6d156cb6 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -52,6 +52,10 @@ class PurchaseOrder(models.Model): responsible_ids = fields.Many2many('res.users', string='Responsibles', compute='_compute_responsibles') status_paid_cbd = fields.Boolean(string='Paid Status', tracking=3, help='Field ini diisi secara manual oleh Finance AP dan hanya untuk status PO CBD') + def delete_line(self): + lines_to_delete = self.order_line.filtered(lambda line: line.delete) + lines_to_delete.unlink() + def open_form_multi_confirm_po(self): action = self.env['ir.actions.act_window']._for_xml_id('indoteknik_custom.action_purchase_order_multi_confirm') action['context'] = { -- cgit v1.2.3 From 893fbb7a4d1467686c4de435393f1162c4d04bd7 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Wed, 10 Jan 2024 09:23:41 +0700 Subject: fix error delete --- indoteknik_custom/models/purchase_order.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 6d156cb6..3c446fa7 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -53,7 +53,7 @@ class PurchaseOrder(models.Model): status_paid_cbd = fields.Boolean(string='Paid Status', tracking=3, help='Field ini diisi secara manual oleh Finance AP dan hanya untuk status PO CBD') def delete_line(self): - lines_to_delete = self.order_line.filtered(lambda line: line.delete) + lines_to_delete = self.order_line.filtered(lambda line: line.delete_line) lines_to_delete.unlink() def open_form_multi_confirm_po(self): -- cgit v1.2.3 From 25748d7a8d537ffe6a3e905f59f05a4d737499d9 Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Wed, 10 Jan 2024 10:05:04 +0700 Subject: bug fix add tax in purchase pricelist if not have tax in purchase order --- indoteknik_custom/models/purchase_order.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 3c446fa7..44af8976 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -100,15 +100,19 @@ class PurchaseOrder(models.Model): for line in self.order_line: i += 1 current_time = datetime.utcnow() - print(i, len(self.order_line)) + # print(i, len(self.order_line)) price_unit = line.price_unit taxes = line.taxes_id for tax in taxes: tax_include = tax.price_include tax_amt = tax.amount if taxes: - if not tax_include: + if tax_include: price_unit = price_unit + (price_unit * tax_amt / 100) + else: + price_unit = price_unit + (price_unit * 11 / 100) + else: + price_unit = price_unit + (price_unit * 11 / 100) purchase_pricelist = self.env['purchase.pricelist'].search([ ('product_id', '=', line.product_id.id), -- cgit v1.2.3 From 5005eebb8fdd82db1e65a1d3de715d8bb5a63b32 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Wed, 10 Jan 2024 11:10:50 +0700 Subject: IU minus inventory validation --- indoteknik_custom/models/purchase_order.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 3c446fa7..b1dde1d5 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -54,6 +54,8 @@ class PurchaseOrder(models.Model): def delete_line(self): lines_to_delete = self.order_line.filtered(lambda line: line.delete_line) + if not lines_to_delete: + raise UserError('Tidak ada item yang dipilih') lines_to_delete.unlink() def open_form_multi_confirm_po(self): -- cgit v1.2.3 From ba593bd2979efdad24ee025f32504b72002205d2 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Mon, 15 Jan 2024 15:39:28 +0700 Subject: PO revision without entering altama API --- indoteknik_custom/models/purchase_order.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 910b694d..92632ea3 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -51,6 +51,7 @@ class PurchaseOrder(models.Model): purchase_order_lines = fields.One2many('purchase.order.line', 'order_id', string='Indent', auto_join=True) responsible_ids = fields.Many2many('res.users', string='Responsibles', compute='_compute_responsibles') status_paid_cbd = fields.Boolean(string='Paid Status', tracking=3, help='Field ini diisi secara manual oleh Finance AP dan hanya untuk status PO CBD') + revisi_po = fields.Boolean(string='Revisi', tracking=3) def delete_line(self): lines_to_delete = self.order_line.filtered(lambda line: line.delete_line) @@ -293,6 +294,7 @@ class PurchaseOrder(models.Model): def button_confirm(self): res = super(PurchaseOrder, self).button_confirm() + current_time = datetime.now() if self.total_percent_margin < self.total_so_percent_margin and not self.env.user.is_purchasing_manager and not self.env.user.is_leader: raise UserError("Beda Margin dengan Sales, harus approval Manager") @@ -310,6 +312,11 @@ class PurchaseOrder(models.Model): if send_email: self._send_mail() + + if self.revisi_po: + delta_time = current_time - timedelta(days=2) + delta_time = delta_time.strftime('%Y-%m-%d %H:%M:%S') + self.date_approve = delta_time self.approval_status = 'approved' self.po_status = 'menunggu' @@ -318,7 +325,6 @@ class PurchaseOrder(models.Model): # override date planned added with two days leadtime = self.partner_id.leadtime - current_time = datetime.now() delta_time = current_time + timedelta(days=leadtime) delta_time = delta_time.strftime('%Y-%m-%d %H:%M:%S') self.date_planned = delta_time -- cgit v1.2.3 From fb62bc36bf74496ecc4759b01cf95fce5000c09c Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Thu, 18 Jan 2024 11:34:54 +0700 Subject: command bug function --- indoteknik_custom/models/purchase_order.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 92632ea3..b44ce70a 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -301,7 +301,7 @@ class PurchaseOrder(models.Model): if not self.sale_order_id and not self.env.user.is_purchasing_manager and not self.env.user.is_leader: raise UserError("Tidak ada link dengan SO, harus approval Manager") send_email = False - self.add_product_to_pricelist() + # self.add_product_to_pricelist() for line in self.order_line: if not line.product_id.purchase_ok: raise UserError("Terdapat barang yang tidak bisa diproses") -- cgit v1.2.3 From 10c3e0308d8c71654e451b2f3b06083b7b1b7791 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Mon, 22 Jan 2024 15:23:39 +0700 Subject: Fix bug schedule date plan --- indoteknik_custom/models/purchase_order.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index b44ce70a..7a575748 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -289,6 +289,8 @@ class PurchaseOrder(models.Model): def date_deadline_ref_date_planned(self): for picking in self.picking_ids: + if picking.state in ['done', 'cancel']: + continue picking.scheduled_date = self.date_planned picking.date_deadline = self.date_planned -- cgit v1.2.3 From e5dbcd62560f4083d413d474b123ed971926a2a0 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Mon, 22 Jan 2024 16:58:11 +0700 Subject: final fix bug purchase pricelist --- indoteknik_custom/models/purchase_order.py | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 7a575748..5303f2c3 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -104,18 +104,18 @@ class PurchaseOrder(models.Model): i += 1 current_time = datetime.utcnow() # print(i, len(self.order_line)) + price_unit = line.price_unit taxes = line.taxes_id - for tax in taxes: - tax_include = tax.price_include - tax_amt = tax.amount - if taxes: - if tax_include: - price_unit = price_unit + (price_unit * tax_amt / 100) - else: - price_unit = price_unit + (price_unit * 11 / 100) - else: - price_unit = price_unit + (price_unit * 11 / 100) + # for tax in taxes: + # tax_include = tax.price_include + # if taxes: + # if tax_include: + # price_unit = price_unit + # else: + # price_unit = price_unit + (price_unit * 11 / 100) + # else: + # price_unit = price_unit + (price_unit * 11 / 100) purchase_pricelist = self.env['purchase.pricelist'].search([ ('product_id', '=', line.product_id.id), @@ -126,13 +126,15 @@ class PurchaseOrder(models.Model): purchase_pricelist.create([{ 'vendor_id': line.order_id.partner_id.id, 'product_id': line.product_id.id, - 'product_price': 0.00, + 'product_price': 0, + 'taxes_system_id': taxes.id, 'system_price': price_unit, - 'system_last_update': current_time, + 'system_last_update': current_time }]) else: purchase_pricelist.write({ 'system_last_update': current_time, + 'taxes_system_id': taxes.id, 'system_price': price_unit }) @@ -303,7 +305,7 @@ class PurchaseOrder(models.Model): if not self.sale_order_id and not self.env.user.is_purchasing_manager and not self.env.user.is_leader: raise UserError("Tidak ada link dengan SO, harus approval Manager") send_email = False - # self.add_product_to_pricelist() + self.add_product_to_pricelist() for line in self.order_line: if not line.product_id.purchase_ok: raise UserError("Terdapat barang yang tidak bisa diproses") -- cgit v1.2.3 From d87bcdfe5e6e49e31dce5c423bcdaa4dfba9623e Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Tue, 23 Jan 2024 14:00:37 +0700 Subject: change request sale_order_sync --- indoteknik_custom/models/purchase_order.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 5303f2c3..ebadff06 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -249,6 +249,8 @@ class PurchaseOrder(models.Model): self.order_line.unlink() for order_line in self.sale_order_id.order_line: + if order_line.vendor_id != self.partner_id: + continue if order_line.product_id.id and order_line.product_id.id not in products_exception: qty_available = order_line.product_id.qty_onhand_bandengan + order_line.product_id.qty_incoming_bandengan - order_line.product_id.outgoing_qty -- cgit v1.2.3 From 965b9ef647f582664c8fe4d85831faca33642468 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Wed, 24 Jan 2024 12:00:12 +0700 Subject: status printed di sj --- indoteknik_custom/models/purchase_order.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index ebadff06..984c8a23 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -302,9 +302,9 @@ class PurchaseOrder(models.Model): res = super(PurchaseOrder, self).button_confirm() current_time = datetime.now() - if self.total_percent_margin < self.total_so_percent_margin and not self.env.user.is_purchasing_manager and not self.env.user.is_leader: + if self.total_percent_margin < self.total_so_percent_margin and not self.env.user.is_purchasing_manager or not self.env.user.is_leader: raise UserError("Beda Margin dengan Sales, harus approval Manager") - if not self.sale_order_id and not self.env.user.is_purchasing_manager and not self.env.user.is_leader: + if not self.sale_order_id and not self.env.user.is_purchasing_manager or not self.env.user.is_leader: raise UserError("Tidak ada link dengan SO, harus approval Manager") send_email = False self.add_product_to_pricelist() -- cgit v1.2.3 From 90a388356693f34d259ba95c32d3a6ce11a95d77 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Wed, 24 Jan 2024 16:06:32 +0700 Subject: add new field to account move --- indoteknik_custom/models/purchase_order.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 984c8a23..ebadff06 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -302,9 +302,9 @@ class PurchaseOrder(models.Model): res = super(PurchaseOrder, self).button_confirm() current_time = datetime.now() - if self.total_percent_margin < self.total_so_percent_margin and not self.env.user.is_purchasing_manager or not self.env.user.is_leader: + if self.total_percent_margin < self.total_so_percent_margin and not self.env.user.is_purchasing_manager and not self.env.user.is_leader: raise UserError("Beda Margin dengan Sales, harus approval Manager") - if not self.sale_order_id and not self.env.user.is_purchasing_manager or not self.env.user.is_leader: + if not self.sale_order_id and not self.env.user.is_purchasing_manager and not self.env.user.is_leader: raise UserError("Tidak ada link dengan SO, harus approval Manager") send_email = False self.add_product_to_pricelist() -- cgit v1.2.3 From 6f0b80656e318914d56d085f9b9e08ccd9838450 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Thu, 1 Feb 2024 11:41:28 +0700 Subject: fix bug qty purchase and change request fiture delete line --- indoteknik_custom/models/purchase_order.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index ebadff06..67299d2c 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -54,9 +54,9 @@ class PurchaseOrder(models.Model): revisi_po = fields.Boolean(string='Revisi', tracking=3) def delete_line(self): - lines_to_delete = self.order_line.filtered(lambda line: line.delete_line) + lines_to_delete = self.order_line.filtered(lambda line: line.suggest == 'masih cukup') if not lines_to_delete: - raise UserError('Tidak ada item yang dipilih') + raise UserError('Tidak ada item yang masih cukup') lines_to_delete.unlink() def open_form_multi_confirm_po(self): -- cgit v1.2.3 From 8978868864925683d02342112020e7fc047a4acf Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Fri, 2 Feb 2024 13:32:55 +0700 Subject: logbook sj and mark as cancel po --- indoteknik_custom/models/purchase_order.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'indoteknik_custom/models/purchase_order.py') diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index 67299d2c..dc654196 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -53,6 +53,25 @@ class PurchaseOrder(models.Model): status_paid_cbd = fields.Boolean(string='Paid Status', tracking=3, help='Field ini diisi secara manual oleh Finance AP dan hanya untuk status PO CBD') revisi_po = fields.Boolean(string='Revisi', tracking=3) + @api.model + def action_multi_cancel(self): + for purchase in self: + purchase.update({ + 'state': 'cancel', + }) + + if purchase.state == 'cancel': + purchase.update({ + 'approval_status': False, + }) + + def open_form_multi_cancel(self): + action = self.env['ir.actions.act_window']._for_xml_id('indoteknik_custom.action_po_multi_cancel') + action['context'] = { + 'purchase_ids': [x.id for x in self] + } + return action + def delete_line(self): lines_to_delete = self.order_line.filtered(lambda line: line.suggest == 'masih cukup') if not lines_to_delete: -- cgit v1.2.3