1 # -*- coding: utf-8 -*-
2 ##############################################################################
4 # OpenERP, Open Source Management Solution
5 # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
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.
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.
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/>.
20 ##############################################################################
22 from openerp.osv import fields, osv
23 from openerp.tools.translate import _
25 class product_category(osv.osv):
26 _inherit = "product.category"
28 'property_account_income_categ': fields.property(
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(
35 relation='account.account',
36 string="Expense Account",
37 help="This account will be used for invoices to value expenses."),
40 #----------------------------------------------------------
42 #----------------------------------------------------------
44 class product_template(osv.osv):
45 _inherit = "product.template"
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(
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(
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."),
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)
73 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: