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' automatic_purchase_id = fields.Many2one( 'automatic.purchase', string='Automatic Purchase Reference', ondelete='set null', index=True ) sale_order_id = fields.Many2one('sale.order', string='Sales 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 ) source = fields.Selection([ ('requisition', 'Requisition'), ('reordering', 'Reordering'), ('purchasing_job', 'Purchasing Job'), ('manual', 'Manual') ], string='Source', default='manual') @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)