diff --git a/addons/account/data/account_minimal.xml b/addons/account/data/account_minimal.xml index 7b2b35e87c1..58c3012ab38 100644 --- a/addons/account/data/account_minimal.xml +++ b/addons/account/data/account_minimal.xml @@ -2,10 +2,6 @@ - - x 0 Chart For Automated Tests @@ -16,8 +12,8 @@ This chart of account is used for automated testing purpose. It is installed only if you selected demo data during your database creation. Modules can do black box testing on entries on this chart of account, without modifying -your own chart of account. - +your own accounts. + diff --git a/addons/account/project/project_view.xml b/addons/account/project/project_view.xml index d338bc06c29..8a83abe52b6 100644 --- a/addons/account/project/project_view.xml +++ b/addons/account/project/project_view.xml @@ -75,8 +75,8 @@ form - - + + Analytic Chart of Accounts @@ -89,7 +89,7 @@ + parent="account.menu_analytic_account"/> diff --git a/addons/product_analytic_default/__init__.py b/addons/account_analytic_default/__init__.py similarity index 100% rename from addons/product_analytic_default/__init__.py rename to addons/account_analytic_default/__init__.py diff --git a/addons/product_analytic_default/__terp__.py b/addons/account_analytic_default/__terp__.py similarity index 60% rename from addons/product_analytic_default/__terp__.py rename to addons/account_analytic_default/__terp__.py index 1f4d1ceabff..fd05c44a341 100644 --- a/addons/product_analytic_default/__terp__.py +++ b/addons/account_analytic_default/__terp__.py @@ -1,17 +1,22 @@ # -*- encoding: utf-8 -*- { - "name" : "Product Analytic Default", + "name" : "Account Analytic Default", "version" : "1.0", "author" : "Tiny", "website" : "http://tinyerp.com", "category" : "Generic Modules/product_analytic_default", "description": """ - - add property field on product object and used this field on sale order line and invoice lines.. +Allows to automatically select analytic accounts based on criterions: +* Product +* Partner +* User +* Company +* Date """, - "depends" : ['base','account'], + "depends" : ['account'], "init_xml" : [], "demo_xml" : [], - "update_xml" : ["product_analytic_default.xml"], + "update_xml" : ["account_analytic_default.xml"], "active": False, "installable": True } diff --git a/addons/account_analytic_default/account_analytic_default.py b/addons/account_analytic_default/account_analytic_default.py new file mode 100644 index 00000000000..67ee9e7d4d7 --- /dev/null +++ b/addons/account_analytic_default/account_analytic_default.py @@ -0,0 +1,84 @@ +# -*- encoding: utf-8 -*- + +############################################################################## +# +# Copyright (c) 2007 TINY SPRL. (http://tiny.be) All Rights Reserved. +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsability of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# garantees and support are strongly adviced to contract a Free Software +# Service Company +# +# This program is Free Software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +############################################################################## + +from osv import fields,osv +from osv import orm + +class account_analytic_default(osv.osv): + _name = 'account.analytic.default' + _description = 'Analytic Distributions' + _rec_name = 'analytic_id' + _order = 'sequence' + _columns = { + 'sequence': fields.integer('Sequence'), + 'analytic_id': fields.many2one('account.analytic.account', 'Analytic Account', required=True), + 'product_id': fields.many2one('product.product', 'Product', ondelete='cascade'), + 'partner_id': fields.many2one('res.partner', 'Partner', ondelete='cascade'), + 'user_id': fields.many2one('res.users', 'User', ondelete='cascade'), + 'company_id': fields.many2one('res.company', 'Company', ondelete='cascade'), + 'date_start': fields.date('Start Date'), + 'date_stop': fields.date('End Date'), + } + def account_get(self, cr, uid, product_id=None, partner_id=None, user_id=None, date=None, context={}): + domain = [] + if product_id: + domain += ['|',('product_id','=',product_id),('product_id','=',False)] + if partner_id: + domain += ['|',('partner_id','=',partner_id),('partner_id','=',False)] + if partner_id: + domain += ['|',('user_id','=',uid),('user_id','=',False)] + if date: + domain += ['|',('date_start','<=',date),('date_start','=',False)] + domain += ['|',('date_stop','>=',date),('date_stop','=',False)] + best_index = -1 + res = False + for rec in self.browse(cr, uid, self.search(cr, uid, domain, context=context), context=context): + index = 0 + if rec.product_id: index+=1 + if rec.partner_id: index+=1 + if rec.user_id: index+=1 + if rec.date_start: index+=1 + if rec.date_stop: index+=1 + if index>best_index: + res = rec + best_index = index + return res +account_analytic_default() + +class account_invoice_line(osv.osv): + _inherit = 'account.invoice.line' + _description = 'account invoice line' + def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', type='out_invoice', partner_id=False, price_unit=False, address_invoice_id=False, context={}): + res_prod = super(account_invoice_line,self).product_id_change(cr, uid, ids, product, uom, qty, name, type, partner_id, price_unit, address_invoice_id, context) + rec = self.pool.get('account.analytic.default').account_get(cr, uid, product, partner_id, uid, time.strftime('%Y-%m-%d'), context) + if rec: + res_prod['value'].update({'account_analytic_id':res.account_id.id}) + return res_prod +account_invoice_line() + diff --git a/addons/account_analytic_default/account_analytic_default.xml b/addons/account_analytic_default/account_analytic_default.xml new file mode 100644 index 00000000000..33d70750676 --- /dev/null +++ b/addons/account_analytic_default/account_analytic_default.xml @@ -0,0 +1,51 @@ + + + + + account.analytic.default.tree + account.analytic.default + tree + + + + + + + + + + + + + + + account.analytic.default.form + account.analytic.default + form + +
+ + + + + + + + + + + +
+ + Analytic Defaults + account.analytic.default + form + tree,form + + + +
+
diff --git a/addons/account_analytic_plans/account_analytic_plans_view.xml b/addons/account_analytic_plans/account_analytic_plans_view.xml index 2caa03382b9..3b4af6f908f 100644 --- a/addons/account_analytic_plans/account_analytic_plans_view.xml +++ b/addons/account_analytic_plans/account_analytic_plans_view.xml @@ -184,7 +184,7 @@
diff --git a/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml b/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml index 9dab5605d6a..b01fec3f086 100644 --- a/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml +++ b/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml @@ -203,7 +203,7 @@ form - +
diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml index a1890d1e990..9e3be0e8479 100644 --- a/addons/mrp/mrp_view.xml +++ b/addons/mrp/mrp_view.xml @@ -290,7 +290,7 @@ ir.actions.act_window mrp.bom form - form,tree + form,tree [('bom_id','=',False)] @@ -300,10 +300,10 @@ ir.actions.act_window mrp.bom form - [('bom_id','<>',False)] + [('bom_id','<>',False)] - + Bill of Materials Structure ir.actions.act_window diff --git a/addons/product_analytic_default/product_analytic_default.py b/addons/product_analytic_default/product_analytic_default.py deleted file mode 100644 index 8ff57d63645..00000000000 --- a/addons/product_analytic_default/product_analytic_default.py +++ /dev/null @@ -1,66 +0,0 @@ -# -*- encoding: utf-8 -*- - -############################################################################## -# -# Copyright (c) 2007 TINY SPRL. (http://tiny.be) All Rights Reserved. -# -# WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsability of assessing all potential -# consequences resulting from its eventual inadequacies and bugs -# End users who are looking for a ready-to-use solution with commercial -# garantees and support are strongly adviced to contract a Free Software -# Service Company -# -# This program is Free Software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -############################################################################## - -from osv import fields,osv -from osv import orm - -class product_product(osv.osv): - _name = 'product.product' - _inherit = 'product.product' - _description = 'Product' - - _columns = { - 'property_account_analytic': fields.property( - 'account.analytic.account', - type='many2one', - relation='account.analytic.account', - string="Analytic Account", - method=True, - view_load=True, - group_name="Accounting Properties", - help="This Analytic Account will be use in sale order line and invoice lines", - ), - } - -product_product() - -class account_invoice_line(osv.osv): - _inherit = 'account.invoice.line' - _description = 'account invoice line' - - def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', type='out_invoice', partner_id=False, price_unit=False, address_invoice_id=False, context={}): - res_prod = super(account_invoice_line,self).product_id_change(cr, uid, ids, product, uom, qty, name, type, partner_id, price_unit, address_invoice_id, context) - if product: - res = self.pool.get('product.product').browse(cr, uid, product, context=context) - res_prod['value'].update({'account_analytic_id':res.property_account_analytic.id}) - return res_prod - -account_invoice_line() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - diff --git a/addons/product_analytic_default/product_analytic_default.xml b/addons/product_analytic_default/product_analytic_default.xml deleted file mode 100644 index 3ba169b25ab..00000000000 --- a/addons/product_analytic_default/product_analytic_default.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - product.template.property.analytic.form.inherit - product.template - form - - - - - - - - - - - product.normal.property.analytic.form.inherit - product.product - form - - - - - - - - - - -