diff options
| author | Fabien Pinckaers <fp@tinyerp.com> | 2011-10-02 12:54:04 +0200 |
|---|---|---|
| committer | Fabien Pinckaers <fp@tinyerp.com> | 2011-10-02 12:54:04 +0200 |
| commit | 31803314ab50731e8bcc38ebbba3154b48411558 (patch) | |
| tree | d268e4580c9d536bbfde5374daf63ce840a8bcf5 /addons | |
| parent | 23b7cca69134db61d8cd0df56a70637127e58908 (diff) | |
[IMP] allows to update credit/debit for initial balances of accounts, config wizard
bzr revid: fp@tinyerp.com-20111002105404-tkwzujn086qgjm6h
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/account/account.py | 50 | ||||
| -rw-r--r-- | addons/account/account_installer.xml | 1 | ||||
| -rw-r--r-- | addons/account/account_view.xml | 20 |
3 files changed, 61 insertions, 10 deletions
diff --git a/addons/account/account.py b/addons/account/account.py index c22c8c58413..68af88754f5 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -346,6 +346,52 @@ class account_account(osv.osv): res[account.id] = level return res + def _set_credit_debit(self, cr, uid, account_id, name, value, arg, context=None): + if context.get('config_invisible', True): + return True + + account = self.browse(cr, uid, account_id, context=context) + diff = value - getattr(account,name) + if not diff: + return True + + journal_obj = self.pool.get('account.journal') + jids = journal_obj.search(cr, uid, [('type','=','situation'),('centralisation','=',1),('company_id','=',account.company_id.id)], context=context) + if not jids: + raise osv.except_osv(_('Error!'),_("You need an Opening journal with centralisation checked to set the initial balance!")) + + period_obj = self.pool.get('account.period') + pids = period_obj.search(cr, uid, [('special','=',True),('company_id','=',account.company_id.id)], context=context) + if not pids: + raise osv.except_osv(_('Error!'),_("No opening/closing period defined, please create one to set the initial balance!")) + + move_obj = self.pool.get('account.move.line') + move_id = move_obj.search(cr, uid, [ + ('journal_id','=',jids[0]), + ('period_id','=',pids[0]), + ('account_id','=', account_id), + (name,'>', 0.0), + ('name','=', _('Opening Balance')) + ], context=context) + if move_id: + move = move_obj.browse(cr, uid, move_id[0], context=context) + move_obj.write(cr, uid, move_id[0], { + name: diff+getattr(move,name) + }, context=context) + else: + if diff<0.0: + raise osv.except_osv(_('Error!'),_("Unable to adapt the initial balance (negative value)!")) + nameinv = (name=='credit' and 'debit') or 'credit' + move_id = move_obj.create(cr, uid, { + 'name': _('Opening Balance'), + 'account_id': account_id, + 'journal_id': jids[0], + 'period_id': pids[0], + name: diff, + nameinv: 0.0 + }, context=context) + return True + _columns = { 'name': fields.char('Name', size=128, required=True, select=True), 'currency_id': fields.many2one('res.currency', 'Secondary Currency', help="Forces all moves for this account to have this secondary currency."), @@ -370,8 +416,8 @@ class account_account(osv.osv): 'child_consol_ids': fields.many2many('account.account', 'account_account_consol_rel', 'child_id', 'parent_id', 'Consolidated Children'), 'child_id': fields.function(_get_child_ids, type='many2many', relation="account.account", string="Child Accounts"), 'balance': fields.function(__compute, digits_compute=dp.get_precision('Account'), string='Balance', multi='balance'), - 'credit': fields.function(__compute, digits_compute=dp.get_precision('Account'), string='Credit', multi='balance'), - 'debit': fields.function(__compute, digits_compute=dp.get_precision('Account'), string='Debit', multi='balance'), + 'credit': fields.function(__compute, fnct_inv=_set_credit_debit, digits_compute=dp.get_precision('Account'), string='Credit', multi='balance'), + 'debit': fields.function(__compute, fnct_inv=_set_credit_debit, digits_compute=dp.get_precision('Account'), string='Debit', multi='balance'), 'reconcile': fields.boolean('Allow Reconciliation', help="Check this box if this account allows reconciliation of journal items."), 'shortcut': fields.char('Shortcut', size=12), 'tax_ids': fields.many2many('account.tax', 'account_account_tax_default_rel', diff --git a/addons/account/account_installer.xml b/addons/account/account_installer.xml index e2968b4d542..b7bf5d89fe2 100644 --- a/addons/account/account_installer.xml +++ b/addons/account/account_installer.xml @@ -91,6 +91,7 @@ <field name="res_model">account.account</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> + <field name="context">{'config_invisible': False}</field> </record> <record id="view_financial_accounts_todo" model="ir.actions.todo"> diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 30b6b52c150..888c2cd7f2b 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -162,14 +162,18 @@ <field name="arch" type="xml"> <form string="Account"> <group col="6" colspan="4"> - <field name="name" select="1"/> - <field name="code" select="1"/> - <field name="company_id" widget="selection" groups="base.group_multi_company"/> - <newline/> - <field name="parent_id"/> - <field name="type" select="1"/> - <field name="user_type" select="1"/> - <field name="active" groups="base.group_extended" /> + <field name="name" select="1"/> + <field name="code" select="1"/> + <field name="company_id" widget="selection" groups="base.group_multi_company"/> + <newline/> + <field name="parent_id"/> + <field name="type" select="1"/> + <field name="user_type" select="1"/> + <field name="active" groups="base.group_extended" /> + <newline/> + <field name="debit" invisible="context.get('config_invisible', True)"/> + <field name="credit" invisible="context.get('config_invisible', True)"/> + <field name="balance" invisible="context.get('config_invisible', True)"/> </group> <notebook colspan="4"> <page string="General Information"> |
