From 233142b7cb6ff0ce0824099c1d700157d5437607 Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Thu, 27 Aug 2015 11:17:04 +0200 Subject: [PATCH] [DEL] account_analytic_plans: deprecated module Reason: complete rewrite of the Sale module. Responsible: fp, dbo, nim --- addons/account_analytic_plans/__init__.py | 5 - addons/account_analytic_plans/__openerp__.py | 63 --- .../account_analytic_plans.py | 459 ----------------- .../account_analytic_plans_report.xml | 15 - .../account_analytic_plans_view.xml | 249 --------- .../i18n/account_analytic_plans.pot | 483 ------------------ .../account_analytic_plans/report/__init__.py | 4 - .../report/crossovered_analytic.py | 164 ------ .../account_analytic_plan_security.xml | 10 - .../security/ir.model.access.csv | 8 - .../src/js/account_bank_reconciliation.js | 40 -- .../test/acount_analytic_plans_report.yml | 11 - .../views/account_analytic_plans.xml | 10 - .../views/report_crossoveredanalyticplans.xml | 66 --- .../account_analytic_plans/wizard/__init__.py | 5 - .../wizard/account_crossovered_analytic.py | 52 -- .../account_crossovered_analytic_view.xml | 45 -- .../wizard/analytic_plan_create_model.py | 39 -- .../analytic_plan_create_model_view.xml | 40 -- 19 files changed, 1768 deletions(-) delete mode 100644 addons/account_analytic_plans/__init__.py delete mode 100644 addons/account_analytic_plans/__openerp__.py delete mode 100644 addons/account_analytic_plans/account_analytic_plans.py delete mode 100644 addons/account_analytic_plans/account_analytic_plans_report.xml delete mode 100644 addons/account_analytic_plans/account_analytic_plans_view.xml delete mode 100644 addons/account_analytic_plans/i18n/account_analytic_plans.pot delete mode 100644 addons/account_analytic_plans/report/__init__.py delete mode 100644 addons/account_analytic_plans/report/crossovered_analytic.py delete mode 100644 addons/account_analytic_plans/security/account_analytic_plan_security.xml delete mode 100644 addons/account_analytic_plans/security/ir.model.access.csv delete mode 100644 addons/account_analytic_plans/static/src/js/account_bank_reconciliation.js delete mode 100644 addons/account_analytic_plans/test/acount_analytic_plans_report.yml delete mode 100644 addons/account_analytic_plans/views/account_analytic_plans.xml delete mode 100644 addons/account_analytic_plans/views/report_crossoveredanalyticplans.xml delete mode 100644 addons/account_analytic_plans/wizard/__init__.py delete mode 100644 addons/account_analytic_plans/wizard/account_crossovered_analytic.py delete mode 100644 addons/account_analytic_plans/wizard/account_crossovered_analytic_view.xml delete mode 100644 addons/account_analytic_plans/wizard/analytic_plan_create_model.py delete mode 100644 addons/account_analytic_plans/wizard/analytic_plan_create_model_view.xml diff --git a/addons/account_analytic_plans/__init__.py b/addons/account_analytic_plans/__init__.py deleted file mode 100644 index 70b62a3b8f9..00000000000 --- a/addons/account_analytic_plans/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -# -*- coding: utf-8 -*- -# Part of Odoo. See LICENSE file for full copyright and licensing details. -import account_analytic_plans -import wizard -import report diff --git a/addons/account_analytic_plans/__openerp__.py b/addons/account_analytic_plans/__openerp__.py deleted file mode 100644 index 165b34b29fe..00000000000 --- a/addons/account_analytic_plans/__openerp__.py +++ /dev/null @@ -1,63 +0,0 @@ -# -*- coding: utf-8 -*- -# Part of Odoo. See LICENSE file for full copyright and licensing details. - -{ - 'name': 'Multiple Analytic Plans', - 'version': '1.0', - 'category': 'Accounting & Finance', - 'description': """ -This module allows to use several analytic plans according to the general journal. -================================================================================== - -Here multiple analytic lines are created when the invoice or the entries -are confirmed. - -For example, you can define the following analytic structure: -------------------------------------------------------------- - * **Projects** - * Project 1 - + SubProj 1.1 - - + SubProj 1.2 - - * Project 2 - - * **Salesman** - * Eric - - * Fabien - -Here, we have two plans: Projects and Salesman. An invoice line must be able to write analytic entries in the 2 plans: SubProj 1.1 and Fabien. The amount can also be split. - -The following example is for an invoice that touches the two subprojects and assigned to one salesman: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -**Plan1:** - - * SubProject 1.1 : 50% - - * SubProject 1.2 : 50% - -**Plan2:** - Eric: 100% - -So when this line of invoice will be confirmed, it will generate 3 analytic lines,for one account entry. - -The analytic plan validates the minimum and maximum percentage at the time of creation of distribution models. - """, - 'website': 'https://www.odoo.com/page/accounting', - 'depends': ['account', 'account_analytic_default'], - 'data': [ - 'security/account_analytic_plan_security.xml', - 'security/ir.model.access.csv', - 'account_analytic_plans_view.xml', - 'account_analytic_plans_report.xml', - 'wizard/analytic_plan_create_model_view.xml', - 'wizard/account_crossovered_analytic_view.xml', - 'views/report_crossoveredanalyticplans.xml', - 'views/account_analytic_plans.xml', - ], - 'demo': [], - 'test': ['test/acount_analytic_plans_report.yml'], - 'installable': True, - 'auto_install': False, -} diff --git a/addons/account_analytic_plans/account_analytic_plans.py b/addons/account_analytic_plans/account_analytic_plans.py deleted file mode 100644 index 9f5db2194ac..00000000000 --- a/addons/account_analytic_plans/account_analytic_plans.py +++ /dev/null @@ -1,459 +0,0 @@ -# -*- coding: utf-8 -*- -# Part of Odoo. See LICENSE file for full copyright and licensing details. - -import time -from lxml import etree - -from openerp.osv import fields, osv -from openerp import tools, api -from openerp.tools.translate import _ -from openerp.exceptions import UserError - -class one2many_mod2(fields.one2many): - def get(self, cr, obj, ids, name, user=None, offset=0, context=None, values=None): - if context is None: - context = {} - res = {} - for id in ids: - res[id] = [] - ids2 = None - if 'journal_id' in context: - journal = obj.pool.get('account.journal').browse(cr, user, context['journal_id'], context=context) - pnum = int(name[7]) -1 - plan = journal.plan_id - if plan and len(plan.plan_ids) > pnum: - acc_id = plan.plan_ids[pnum].root_analytic_id.id - ids2 = obj.pool[self._obj].search(cr, user, [(self._fields_id,'in',ids),('analytic_account_id','child_of',[acc_id])], limit=self._limit) - if ids2 is None: - ids2 = obj.pool[self._obj].search(cr, user, [(self._fields_id,'in',ids)], limit=self._limit) - - for r in obj.pool[self._obj].read(cr, user, ids2, [self._fields_id], context=context, load='_classic_write'): - key = r[self._fields_id] - if isinstance(key, tuple): - # Read return a tuple in the case where the field is a many2one - # but we want to get the id of this field. - key = key[0] - - res[key].append( r['id'] ) - return res - -class account_analytic_line(osv.osv): - _inherit = 'account.analytic.line' - _description = 'Analytic Line' - - def _get_amount(self, cr, uid, ids, name, args, context=None): - res = {} - for id in ids: - res.setdefault(id, 0.0) - for line in self.browse(cr, uid, ids, context=context): - amount = line.move_id and line.move_id.amount_currency * (line.percentage / 100) or 0.0 - res[line.id] = amount - return res - - _columns = { - 'amount_currency': fields.function(_get_amount, string="Amount Currency", type="float", store=True, help="The amount expressed in the related account currency if not equal to the company one.", readonly=True), - 'percentage': fields.float('Percentage') - } - - -class account_analytic_plan(osv.osv): - _name = "account.analytic.plan" - _description = "Analytic Plan" - _columns = { - 'name': fields.char('Analytic Plan', required=True, select=True), - 'plan_ids': fields.one2many('account.analytic.plan.line', 'plan_id', 'Analytic Plans', copy=True), - } - - -class account_analytic_plan_line(osv.osv): - _name = "account.analytic.plan.line" - _description = "Analytic Plan Line" - _order = "sequence, id" - _columns = { - 'plan_id': fields.many2one('account.analytic.plan','Analytic Plan',required=True), - 'name': fields.char('Axis Name', required=True, select=True), - 'sequence': fields.integer('Sequence'), - 'root_analytic_id': fields.many2one('account.analytic.account', 'Root Account', help="Root account of this plan.", required=False), - 'min_required': fields.float('Minimum Allowed (%)'), - 'max_required': fields.float('Maximum Allowed (%)'), - } - _defaults = { - 'min_required': 100.0, - 'max_required': 100.0, - } - - -class account_analytic_plan_instance(osv.osv): - _name = "account.analytic.plan.instance" - _description = "Analytic Plan Instance" - _columns = { - 'name': fields.char('Analytic Distribution'), - 'code': fields.char('Distribution Code', size=16), - 'journal_id': fields.many2one('account.analytic.journal', 'Analytic Journal' ), - 'account_ids': fields.one2many('account.analytic.plan.instance.line', 'plan_id', 'Account Id', copy=True), - 'account1_ids': one2many_mod2('account.analytic.plan.instance.line', 'plan_id', 'Account1 Id'), - 'account2_ids': one2many_mod2('account.analytic.plan.instance.line', 'plan_id', 'Account2 Id'), - 'account3_ids': one2many_mod2('account.analytic.plan.instance.line', 'plan_id', 'Account3 Id'), - 'account4_ids': one2many_mod2('account.analytic.plan.instance.line', 'plan_id', 'Account4 Id'), - 'account5_ids': one2many_mod2('account.analytic.plan.instance.line', 'plan_id', 'Account5 Id'), - 'account6_ids': one2many_mod2('account.analytic.plan.instance.line', 'plan_id', 'Account6 Id'), - 'plan_id': fields.many2one('account.analytic.plan', "Model's Plan"), - } - - def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False): - if context is None: - context = {} - journal_obj = self.pool.get('account.journal') - if context.get('journal_id', False): - journal = journal_obj.browse(cr, user, [context['journal_id']], context=context)[0] - analytic_journal = journal.analytic_journal_id and journal.analytic_journal_id.id or False - args.append('|') - args.append(('journal_id', '=', analytic_journal)) - args.append(('journal_id', '=', False)) - res = super(account_analytic_plan_instance, self).search(cr, user, args, offset=offset, limit=limit, order=order, - context=context, count=count) - return res - - def _default_journal(self, cr, uid, context=None): - if context is None: - context = {} - journal_obj = self.pool.get('account.journal') - if context.has_key('journal_id') and context['journal_id']: - journal = journal_obj.browse(cr, uid, context['journal_id'], context=context) - if journal.analytic_journal_id: - return journal.analytic_journal_id.id - return False - - _defaults = { - 'plan_id': False, - 'journal_id': _default_journal, - } - def name_get(self, cr, uid, ids, context=None): - res = [] - for inst in self.browse(cr, uid, ids, context=context): - name = inst.name or '/' - if name and inst.code: - name=name+' ('+inst.code+')' - res.append((inst.id, name)) - return res - - def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=100): - args = args or [] - if name: - ids = self.search(cr, uid, [('code', '=', name)] + args, limit=limit, context=context or {}) - if not ids: - ids = self.search(cr, uid, [('name', operator, name)] + args, limit=limit, context=context or {}) - else: - ids = self.search(cr, uid, args, limit=limit, context=context or {}) - return self.name_get(cr, uid, ids, context or {}) - - def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): - if context is None: - context = {} - wiz_id = self.pool.get('ir.actions.act_window').search(cr, uid, [("name","=","analytic.plan.create.model.action")], context=context) - res = super(account_analytic_plan_instance,self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu) - journal_obj = self.pool.get('account.journal') - analytic_plan_obj = self.pool.get('account.analytic.plan') - if (res['type']=='form'): - plan_id = False - if context.get('journal_id', False): - plan_id = journal_obj.browse(cr, uid, int(context['journal_id']), context=context).plan_id - elif context.get('plan_id', False): - plan_id = analytic_plan_obj.browse(cr, uid, int(context['plan_id']), context=context) - - if plan_id: - i=1 - res['arch'] = """
- - - -