# -*- coding: utf-8 -*- from openerp import models, fields, tools, api, _ import openerp.addons.decimal_precision as dp from openerp.exceptions import Warning, except_orm, AccessError class ConstructionExpensesMoveLine(models.Model): _name = 'construction.expenses.move.line' name = fields.Char('name') ''' Move Line ''' code = fields.Char('Code', size=32) move_line_id = fields.Many2one('construction.move.line', string='Move Line', ondelete='restrict', index=True) invoice_id = fields.Many2one('account.invoice', string='Invoice', ondelete='restrict', index=True) quantity = fields.Float('Price Unit', default=0.0) price_unit = fields.Float('Price Unit', digits_compute=dp.get_precision('Account'), default=0.0) amount_total = fields.Float('Amount Total', digits_compute=dp.get_precision('Account'), default=0.0) comment = fields.Text('Comment', help='information') invoice_line_id = fields.Many2one('account.invoice.line', string='Invoice Line', ondelete='restrict', index=True) ''' Invoice Line ''' ''' onchange select invoice line ''' @api.onchange('invoice_line_id') def cheak_line_invoice(self): line = self.invoice_line_id self.quantity = line.quantity self.price_unit = line.price_unit self.amount_total = self.quantity * self.price_unit ''' onchange Amount and quantity ''' @api.onchange('quantity', 'price_unit') def onchange_amount_expenses(self): self.amount_total = self.quantity * self.price_unit @api.multi def write(self, vals): newVals = sorted(vals) qty = vals['quantity'] if('quantity' in newVals) else self.quantity priceUnit = vals['price_unit'] if('price_unit' in newVals) else self.price_unit vals['amount_total'] = qty * priceUnit expensesMove = super(ConstructionExpensesMoveLine, self).write(vals) moveLine = self.env['construction.move.line'].browse(self.move_line_id.id) if (moveLine): amount = 0 for expense in moveLine.expenses_ids: amount += expense.amount_total moveLine.amount_expenses = amount moveLine.residual = moveLine.amount_total - amount # import web_pdb; web_pdb.set_trace() moveLine.recalculate_paid_expense() class ConstructionMoveLineExpenses(models.Model): _inherit = 'construction.move.line' expenses_ids = fields.One2many('construction.expenses.move.line', 'move_line_id', string='Expenses') class AccountInvoiceMoveLineExpenses(models.Model): _inherit = 'account.invoice' expenses_ids = fields.One2many('construction.expenses.move.line', 'invoice_id', string='Expenses')