Merge branch 'master' of https://github.com/odoo/odoo
[odoo/odoo.git] / addons / account / product.py
1 # -*- coding: utf-8 -*-
2 ##############################################################################
3 #
4 #    OpenERP, Open Source Management Solution
5 #    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
6 #
7 #    This program is free software: you can redistribute it and/or modify
8 #    it under the terms of the GNU Affero General Public License as
9 #    published by the Free Software Foundation, either version 3 of the
10 #    License, or (at your option) any later version.
11 #
12 #    This program is distributed in the hope that it will be useful,
13 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
14 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 #    GNU Affero General Public License for more details.
16 #
17 #    You should have received a copy of the GNU Affero General Public License
18 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
19 #
20 ##############################################################################
21
22 from openerp.osv import fields, osv
23 from openerp.tools.translate import _
24
25 class product_category(osv.osv):
26     _inherit = "product.category"
27     _columns = {
28         'property_account_income_categ': fields.property(
29             type='many2one',
30             relation='account.account',
31             string="Income Account",
32             help="This account will be used for invoices to value sales."),
33         'property_account_expense_categ': fields.property(
34             type='many2one',
35             relation='account.account',
36             string="Expense Account",
37             help="This account will be used for invoices to value expenses."),
38     }
39
40 #----------------------------------------------------------
41 # Products
42 #----------------------------------------------------------
43
44 class product_template(osv.osv):
45     _inherit = "product.template"
46     _columns = {
47         'taxes_id': fields.many2many('account.tax', 'product_taxes_rel',
48             'prod_id', 'tax_id', 'Customer Taxes',
49             domain=[('parent_id','=',False),('type_tax_use','in',['sale','all'])]),
50         'supplier_taxes_id': fields.many2many('account.tax',
51             'product_supplier_taxes_rel', 'prod_id', 'tax_id',
52             'Supplier Taxes', domain=[('parent_id', '=', False),('type_tax_use','in',['purchase','all'])]),
53         'property_account_income': fields.property(
54             type='many2one',
55             relation='account.account',
56             string="Income Account",
57             help="This account will be used for invoices instead of the default one to value sales for the current product."),
58         'property_account_expense': fields.property(
59             type='many2one',
60             relation='account.account',
61             string="Expense Account",
62             help="This account will be used for invoices instead of the default one to value expenses for the current product."),
63     }
64
65     def write(self, cr, uid, ids, vals, context=None):
66         if 'uom_po_id' in vals:
67             product_ids = self.pool.get('product.product').search(cr, uid, [('product_tmpl_id', 'in', ids)], context=context)
68             if self.pool.get('account.move.line').search(cr, uid, [('product_id', 'in', product_ids)], context=context, limit=1):
69                 raise osv.except_osv(_('Error!'), _("You can not change the unit of measure of a product that has been already used in an account journal item. If you need to change the unit of measure, you may deactivate this product.") % ())
70         return super(product_template, self).write(cr, uid, ids, vals, context=context)
71
72
73 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: