odoo/ext/3rd-party-addons/global_discount/models/purchase.py

50 lines
2.0 KiB
Python
Executable File

# -*- coding: utf-8 -*-
from odoo import fields, models, api, _
from odoo.exceptions import UserError
class PurchaseOrder(models.Model):
_inherit = "purchase.order"
global_discount = fields.Boolean("Add Global Discount", readonly=True, states={'draft': [('readonly', False)]},)
discount_type = fields.Selection([('fixed','Fixed'),('percentage','Percentage')],
"Discount Type", readonly=True, states={'draft': [('readonly', False)]}, default='fixed')
discount_amount = fields.Float("Discount Amount", readonly=True, states={'draft': [('readonly', False)]},)
discount_percentage = fields.Float("Discount Percentage", readonly=True, states={'draft': [('readonly', False)]},)
@api.multi
def _discount_unset(self):
if self.env.user.company_id.purchase_discount_product_id:
self.env['purchase.order.line'].search([('order_id', 'in', self.ids), ('product_id', '=', self.env.user.company_id.purchase_discount_product_id.id)]).unlink()
@api.multi
def create_discount(self):
Line = self.env['purchase.order.line']
product_id = self.env.user.company_id.purchase_discount_product_id
if not product_id:
raise UserError(_('Please set Purchase Discount product in General Settings first.'))
# Remove Discount line first
self._discount_unset()
for order in self:
amount = 0
if order.discount_type == 'fixed':
amount = order.discount_amount
if order.discount_type == 'percentage':
amount = (order.amount_total * order.discount_percentage)/100
# Create the Purchase line
Line.create({
'name': product_id.name,
'price_unit': -amount,
'product_qty': 1.0,
'product_uom': product_id.uom_id.id,
'product_id': product_id.id,
'order_id': order.id,
'date_planned': fields.datetime.now(),
#'sequence': 100,
})
return True