|
|
# -*- coding: utf-8 -*- from openerp import models, fields, api from openerp.addons.decimal_precision import decimal_precision as dp from openerp.exceptions import ValidationError
from openerp.tools.translate import _
from openerp.osv import fields as old_fields
class AccountAnalyticInvoiceLine(models.Model): _inherit = "account.analytic.invoice.line"
def _amount_line(self, cr, uid, ids, prop, unknow_none, unknow_dict, context=None): res = super(AccountAnalyticInvoiceLine, self)._amount_line( cr, uid, ids, prop, unknow_none, unknow_dict, context=context) for line in self.browse(cr, uid, ids, context=context): discount = (line.discount or 0) / 100 res[line.id] = res[line.id] * (1 - discount) return res
discount = fields.Float( string='Discount (%)', digits=dp.get_precision('Discount'), copy=True, help='Discount that is applied in generated invoices.' ' It should be less or equal to 100')
_columns = { 'price_subtotal': old_fields.function( _amount_line, string='Sub Total', type="float", digits_compute=dp.get_precision('Account')), }
@api.one @api.constrains('discount') def _check_discount(self): if self.discount > 100: raise ValidationError(_("Discount should be less or equal to 100"))
class AccountAnalyticAccount(models.Model): _inherit = 'account.analytic.account'
@api.model def _prepare_invoice_line(self, line, fiscal_position): res = super(AccountAnalyticAccount, self)._prepare_invoice_line( line, fiscal_position) res['discount'] = line.discount or 0 return res
|