sale_order_line_pack_line.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # -*- encoding: utf-8 -*-
  2. ##############################################################################
  3. # For copyright and license notices, see __openerp__.py file in root directory
  4. ##############################################################################
  5. from openerp import fields, models, api
  6. import openerp.addons.decimal_precision as dp
  7. class sale_order_line_pack_line(models.Model):
  8. _name = 'sale.order.line.pack.line'
  9. _description = 'Sale Order None Detailed Pack Lines'
  10. order_line_id = fields.Many2one(
  11. 'sale.order.line',
  12. 'Order Line',
  13. ondelete='cascade',
  14. required=True
  15. )
  16. product_id = fields.Many2one(
  17. 'product.product',
  18. 'Product',
  19. required=True
  20. )
  21. price_unit = fields.Float(
  22. 'Unit Price',
  23. required=True,
  24. digits=dp.get_precision('Product Price')
  25. )
  26. discount = fields.Float(
  27. 'Discount (%)',
  28. digits=dp.get_precision('Discount'),
  29. )
  30. price_subtotal = fields.Float(
  31. compute="_amount_line",
  32. string='Subtotal',
  33. digits=dp.get_precision('Account')
  34. )
  35. product_uom_qty = fields.Float(
  36. 'Quantity',
  37. digits=dp.get_precision('Product UoS'),
  38. required=True
  39. )
  40. @api.one
  41. @api.onchange('product_id')
  42. def onchange_product_id(self):
  43. self.price_unit = self.product_id.lst_price
  44. @api.one
  45. @api.depends('price_unit', 'product_uom_qty')
  46. def _amount_line(self):
  47. self.price_subtotal = (
  48. self.product_uom_qty * self.price_unit *
  49. (1 - (self.discount or 0.0) / 100.0))