construction_expenses_move_line.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. # -*- coding: utf-8 -*-
  2. from openerp import models, fields, tools, api, _
  3. import openerp.addons.decimal_precision as dp
  4. from openerp.exceptions import Warning, except_orm, AccessError
  5. class ConstructionExpensesMoveLine(models.Model):
  6. _name = 'construction.expenses.move.line'
  7. name = fields.Char('name')
  8. ''' Move Line '''
  9. code = fields.Char('Code', size=32)
  10. move_line_id = fields.Many2one('construction.move.line', string='Move Line', ondelete='restrict', index=True)
  11. invoice_id = fields.Many2one('account.invoice', string='Invoice', ondelete='restrict', index=True)
  12. quantity = fields.Float('Price Unit', default=0.0)
  13. price_unit = fields.Float('Price Unit', digits_compute=dp.get_precision('Account'), default=0.0)
  14. amount_total = fields.Float('Amount Total', digits_compute=dp.get_precision('Account'), default=0.0)
  15. comment = fields.Text('Comment', help='information')
  16. invoice_line_id = fields.Many2one('account.invoice.line', string='Invoice Line', ondelete='restrict', index=True)
  17. ''' Invoice Line '''
  18. ''' onchange select invoice line '''
  19. @api.onchange('invoice_line_id')
  20. def cheak_line_invoice(self):
  21. line = self.invoice_line_id
  22. self.quantity = line.quantity
  23. self.price_unit = line.price_unit
  24. self.amount_total = self.quantity * self.price_unit
  25. ''' onchange Amount and quantity '''
  26. @api.onchange('quantity', 'price_unit')
  27. def onchange_amount_expenses(self):
  28. self.amount_total = self.quantity * self.price_unit
  29. @api.multi
  30. def write(self, vals):
  31. newVals = sorted(vals)
  32. qty = vals['quantity'] if('quantity' in newVals) else self.quantity
  33. priceUnit = vals['price_unit'] if('price_unit' in newVals) else self.price_unit
  34. vals['amount_total'] = qty * priceUnit
  35. expensesMove = super(ConstructionExpensesMoveLine, self).write(vals)
  36. moveLine = self.env['construction.move.line'].browse(self.move_line_id.id)
  37. if (moveLine):
  38. amount = 0
  39. for expense in moveLine.expenses_ids:
  40. amount += expense.amount_total
  41. moveLine.amount_expenses = amount
  42. moveLine.residual = moveLine.amount_total - amount
  43. # import web_pdb; web_pdb.set_trace()
  44. moveLine.recalculate_paid_expense()
  45. class ConstructionMoveLineExpenses(models.Model):
  46. _inherit = 'construction.move.line'
  47. expenses_ids = fields.One2many('construction.expenses.move.line', 'move_line_id', string='Expenses')
  48. class AccountInvoiceMoveLineExpenses(models.Model):
  49. _inherit = 'account.invoice'
  50. expenses_ids = fields.One2many('construction.expenses.move.line', 'invoice_id', string='Expenses')