summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorFabien Pinckaers <fp@tinyerp.com>2011-10-02 12:54:04 +0200
committerFabien Pinckaers <fp@tinyerp.com>2011-10-02 12:54:04 +0200
commit31803314ab50731e8bcc38ebbba3154b48411558 (patch)
treed268e4580c9d536bbfde5374daf63ce840a8bcf5 /addons
parent23b7cca69134db61d8cd0df56a70637127e58908 (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.py50
-rw-r--r--addons/account/account_installer.xml1
-rw-r--r--addons/account/account_view.xml20
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">