diff options
Diffstat (limited to 'fixco_custom/models')
| -rwxr-xr-x | fixco_custom/models/__init__.py | 2 | ||||
| -rw-r--r-- | fixco_custom/models/purchase_order.py | 43 | ||||
| -rw-r--r-- | fixco_custom/models/purchase_order_line.py | 38 |
3 files changed, 83 insertions, 0 deletions
diff --git a/fixco_custom/models/__init__.py b/fixco_custom/models/__init__.py index 4fd81d8..226e6b9 100755 --- a/fixco_custom/models/__init__.py +++ b/fixco_custom/models/__init__.py @@ -16,3 +16,5 @@ from . import print_picking_list from . import stock_picking_print_picking_list from . import uangmuka_penjualan from . import upload_ginee +from . import purchase_order_line +from . import purchase_order diff --git a/fixco_custom/models/purchase_order.py b/fixco_custom/models/purchase_order.py new file mode 100644 index 0000000..a623ae4 --- /dev/null +++ b/fixco_custom/models/purchase_order.py @@ -0,0 +1,43 @@ +from odoo import fields, models, api, _ +from odoo.exceptions import AccessError, UserError, ValidationError +from dateutil.relativedelta import relativedelta +from datetime import datetime, timedelta +import logging +from pytz import timezone, utc +import io +import base64 +try: + from odoo.tools.misc import xlsxwriter +except ImportError: + import xlsxwriter + +_logger = logging.getLogger(__name__) + + +class PurchaseOrder(models.Model): + _inherit = 'purchase.order' + + amount_discount = fields.Monetary( + string='Total Discount', + compute='_compute_amount_discount', + store=True + ) + + biaya_lain_lain = fields.Float( + 'Biaya Lain Lain', + default=0.0, + tracking=True + ) + + @api.depends('order_line.price_total', 'biaya_lain_lain') + def _amount_all(self): + super(PurchaseOrder, self)._amount_all() + + for order in self: + amount_total = order.amount_untaxed + order.amount_tax - order.biaya_lain_lain + order.amount_total = order.currency_id.round(amount_total) + + @api.depends('order_line.discount_amount') + def _compute_amount_discount(self): + for order in self: + order.amount_discount = sum(line.discount_amount for line in order.order_line)
\ No newline at end of file diff --git a/fixco_custom/models/purchase_order_line.py b/fixco_custom/models/purchase_order_line.py new file mode 100644 index 0000000..8cac3d1 --- /dev/null +++ b/fixco_custom/models/purchase_order_line.py @@ -0,0 +1,38 @@ +from odoo import models, fields, api + +class PurchaseOrderLine(models.Model): + _inherit = 'purchase.order.line' + + discount = fields.Float( + string='Discount (%)', + digits='Discount', + default=0.0 + ) + discount_amount = fields.Float( + string='Discount Amount', + compute='_compute_discount_amount' + ) + + @api.depends('price_unit', 'product_qty', 'discount') + def _compute_discount_amount(self): + for line in self: + discount = line.discount or 0.0 + line.discount_amount = (line.price_unit * line.product_qty * discount) / 100.0 + + def _prepare_compute_all_values(self): + res = super(PurchaseOrderLine, self)._prepare_compute_all_values() + price_unit = res['price_unit'] * (1 - (self.discount or 0.0) / 100.0) + res.update({ + 'price_unit': price_unit, + }) + return res + + @api.depends('product_qty', 'price_unit', 'taxes_id', 'discount') + def _compute_amount(self): + return super(PurchaseOrderLine, self)._compute_amount() + + def write(self, values): + res = super().write(values) + if 'discount' in values: + self._compute_amount() + return res
\ No newline at end of file |
