From c6dbde248d5a9c12f7e1f53ce4596f6b5611750a Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Fri, 22 Dec 2023 14:31:37 +0700 Subject: fix suggest po --- indoteknik_custom/models/purchase_order_line.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'indoteknik_custom/models/purchase_order_line.py') diff --git a/indoteknik_custom/models/purchase_order_line.py b/indoteknik_custom/models/purchase_order_line.py index ca0e77ab..9406f85f 100755 --- a/indoteknik_custom/models/purchase_order_line.py +++ b/indoteknik_custom/models/purchase_order_line.py @@ -33,10 +33,21 @@ class PurchaseOrderLine(models.Model): indent = fields.Boolean(string='Indent', help='centang ini jika barang indent') is_ltc = fields.Boolean(string='Sudah di LTC', default=False, help='centang ini jika barang sudah di LTC') note = fields.Char(string='Note') + qty_reserved = fields.Float(string='Qty Reserved', compute='_compute_qty_reserved') + + def _compute_qty_reserved(self): + for line in self: + sale_line = self.env['sale.order.line'].search([ + ('product_id', '=', line.product_id.id), + ('order_id', '=', line.order_id.sale_order_id.id) + ]) + + reserved_qty = sum(line.qty_reserved for line in sale_line) + line.qty_reserved = reserved_qty def suggest_purchasing(self): - for line in self: - if line.qty_available < line.product_qty: + for line in self: + if line.product_id.qty_available_bandengan + line.qty_reserved < line.product_qty: line.suggest = 'harus beli' else: line.suggest = 'masih cukup' -- 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_line.py | 1 + 1 file changed, 1 insertion(+) (limited to 'indoteknik_custom/models/purchase_order_line.py') diff --git a/indoteknik_custom/models/purchase_order_line.py b/indoteknik_custom/models/purchase_order_line.py index 9406f85f..9240c504 100755 --- a/indoteknik_custom/models/purchase_order_line.py +++ b/indoteknik_custom/models/purchase_order_line.py @@ -34,6 +34,7 @@ class PurchaseOrderLine(models.Model): is_ltc = fields.Boolean(string='Sudah di LTC', default=False, help='centang ini jika barang sudah di LTC') note = fields.Char(string='Note') qty_reserved = fields.Float(string='Qty Reserved', compute='_compute_qty_reserved') + delete = fields.Boolean(string='Delete', default=False, help='centang ini jika anda ingin menghapus line ini') def _compute_qty_reserved(self): for line in self: -- 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_line.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indoteknik_custom/models/purchase_order_line.py') diff --git a/indoteknik_custom/models/purchase_order_line.py b/indoteknik_custom/models/purchase_order_line.py index 9240c504..807ee628 100755 --- a/indoteknik_custom/models/purchase_order_line.py +++ b/indoteknik_custom/models/purchase_order_line.py @@ -34,7 +34,7 @@ class PurchaseOrderLine(models.Model): is_ltc = fields.Boolean(string='Sudah di LTC', default=False, help='centang ini jika barang sudah di LTC') note = fields.Char(string='Note') qty_reserved = fields.Float(string='Qty Reserved', compute='_compute_qty_reserved') - delete = fields.Boolean(string='Delete', default=False, help='centang ini jika anda ingin menghapus line ini') + delete_line = fields.Boolean(string='Delete', default=False, help='centang ini jika anda ingin menghapus line ini') def _compute_qty_reserved(self): for line in self: -- 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_line.py | 31 +++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) (limited to 'indoteknik_custom/models/purchase_order_line.py') diff --git a/indoteknik_custom/models/purchase_order_line.py b/indoteknik_custom/models/purchase_order_line.py index 807ee628..c7da0e24 100755 --- a/indoteknik_custom/models/purchase_order_line.py +++ b/indoteknik_custom/models/purchase_order_line.py @@ -78,14 +78,12 @@ class PurchaseOrderLine(models.Model): def _onchange_product_custom(self): self._compute_qty_stock() - # Override method from addons/purchase/models/purchase.py - @api.onchange('product_qty', 'product_uom') + @api.onchange('product_id','product_qty', 'product_uom') def _onchange_quantity(self): res = super(PurchaseOrderLine, self)._onchange_quantity() - # Custom script purchase_pricelist = self.env['purchase.pricelist'].search([ ('product_id', '=', self.product_id.id), - ('vendor_id', '=', self.partner_id.id) + ('vendor_id', '=', self.partner_id.id), ], limit=1) price_unit = purchase_pricelist.product_price @@ -96,8 +94,33 @@ class PurchaseOrderLine(models.Model): ], limit=1) price_unit = product_supplierinfo.price + price_unit, taxes = self._get_valid_purchase_price(purchase_pricelist) + self.price_unit = price_unit + if purchase_pricelist.taxes_product_id or purchase_pricelist.taxes_system_id: + self.taxes_id = taxes + return res + + def _get_valid_purchase_price(self, purchase_price): + p_price = 0 + taxes = False + + if purchase_price.system_price > 0 and purchase_price.product_price > 0: + if purchase_price.human_last_update > purchase_price.system_last_update: + p_price = purchase_price.product_price + taxes = purchase_price.taxes_product_id + else: + p_price = purchase_price.system_price + taxes = purchase_price.taxes_system_id + elif purchase_price.system_price > 0 and purchase_price.product_price == 0: + p_price = purchase_price.system_price + taxes = purchase_price.taxes_system_id + elif purchase_price.system_price == 0 and purchase_price.product_price > 0: + p_price = purchase_price.product_price + taxes = purchase_price.taxes_product_id + + return p_price, taxes def compute_item_margin(self): sum_so_margin = sum_sales_price = sum_margin = 0 -- cgit v1.2.3 From d331e26d7149bf62629c62f01994fd7a285da0c3 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Fri, 26 Jan 2024 11:48:32 +0700 Subject: fix error sale order sync --- indoteknik_custom/models/purchase_order_line.py | 32 +++++++++++-------------- 1 file changed, 14 insertions(+), 18 deletions(-) (limited to 'indoteknik_custom/models/purchase_order_line.py') diff --git a/indoteknik_custom/models/purchase_order_line.py b/indoteknik_custom/models/purchase_order_line.py index c7da0e24..465944d5 100755 --- a/indoteknik_custom/models/purchase_order_line.py +++ b/indoteknik_custom/models/purchase_order_line.py @@ -2,6 +2,7 @@ from odoo import fields, models, api, _ from odoo.exceptions import AccessError, UserError, ValidationError from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT import logging +from datetime import datetime _logger = logging.getLogger(__name__) @@ -103,24 +104,19 @@ class PurchaseOrderLine(models.Model): return res def _get_valid_purchase_price(self, purchase_price): - p_price = 0 - taxes = False - - if purchase_price.system_price > 0 and purchase_price.product_price > 0: - if purchase_price.human_last_update > purchase_price.system_last_update: - p_price = purchase_price.product_price - taxes = purchase_price.taxes_product_id - else: - p_price = purchase_price.system_price - taxes = purchase_price.taxes_system_id - elif purchase_price.system_price > 0 and purchase_price.product_price == 0: - p_price = purchase_price.system_price - taxes = purchase_price.taxes_system_id - elif purchase_price.system_price == 0 and purchase_price.product_price > 0: - p_price = purchase_price.product_price - taxes = purchase_price.taxes_product_id - - return p_price, taxes + price = 0 + taxes = None + human_last_update = purchase_price.human_last_update or datetime.min + system_last_update = purchase_price.system_last_update or datetime.min + + if system_last_update > human_last_update: + price = purchase_price.system_price + taxes = [purchase.taxes_system_id.id for purchase in purchase_price ] + else: + price = purchase_price.product_price + taxes = [purchase.taxes_product_id.id for purchase in purchase_price ] + + return price, taxes def compute_item_margin(self): sum_so_margin = sum_sales_price = sum_margin = 0 -- 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_line.py | 28 +++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'indoteknik_custom/models/purchase_order_line.py') diff --git a/indoteknik_custom/models/purchase_order_line.py b/indoteknik_custom/models/purchase_order_line.py index 465944d5..f1881942 100755 --- a/indoteknik_custom/models/purchase_order_line.py +++ b/indoteknik_custom/models/purchase_order_line.py @@ -36,6 +36,34 @@ class PurchaseOrderLine(models.Model): note = fields.Char(string='Note') qty_reserved = fields.Float(string='Qty Reserved', compute='_compute_qty_reserved') delete_line = fields.Boolean(string='Delete', default=False, help='centang ini jika anda ingin menghapus line ini') + is_edit_product_qty = fields.Boolean(string='Is Edit Product Qty', compute='_compute_is_edit_product_qty') + + def _compute_is_edit_product_qty(self): + for line in self: + + if line.order_id.state in ['draft']: + is_valid = True + else: + is_valid = False + + line.is_edit_product_qty = is_valid + + # @api.constrains('product_qty') + # def change_qty_po_and_qty_demand(self): + # for line in self: + # if line.order_id.state in ['draft', 'cancel'] and len(line.order_id.picking_ids) == 0: + # continue + + # for stock_picking in line.order_id.picking_ids: + # picking = self.env['stock.move'].search([ + # ('picking_id.purchase_id', '=', line.order_id.id), + # ('product_id', '=', line.product_id.id) + # ]) + + # if picking: + # picking.write({ + # 'product_uom_qty': line.product_qty + # }) def _compute_qty_reserved(self): for line in self: -- cgit v1.2.3