*commited jvo's work:
-Changed the type of parent_id of account.account from many2many to many2one and changes account charts accordingly. -Bugfix: solved error of no period_ids and misc. changes in wizard_fiscalyear_close.py -Bugfix: solved error of fiscal year and period in report-account_balance.py bzr revid: qdp@tinyerp.com-20080729120906-zin2q9epxgq8xos9
This commit is contained in:
commit
cd629fb096
|
@ -246,14 +246,33 @@ class account_account(osv.osv):
|
|||
result[rec.id] = (rec.company_id.currency_id.id,rec.company_id.currency_id.code)
|
||||
return result
|
||||
|
||||
def _get_child_ids(self, cr, uid, ids, field_name, arg, context={}):
|
||||
result={}
|
||||
for record in self.browse(cr, uid, ids, context):
|
||||
if record.child_parent_ids:
|
||||
result[record.id]=[x.id for x in record.child_parent_ids]
|
||||
else:
|
||||
result[record.id]=[]
|
||||
|
||||
if record.child_consol_ids:
|
||||
for acc in record.child_consol_ids:
|
||||
result[record.id].append(acc.id)
|
||||
|
||||
return result
|
||||
|
||||
_columns = {
|
||||
'name': fields.char('Name', size=128, required=True, select=True),
|
||||
'sign': fields.selection([(-1, 'Negative'), (1, 'Positive')], 'Sign', required=True, help='Allows to change the displayed amount of the balance to see positive results instead of negative ones in expenses accounts'),
|
||||
'currency_id': fields.many2one('res.currency', 'Secondary Currency', help="Force all moves for this account to have this secondary currency."),
|
||||
'code': fields.char('Code', size=64),
|
||||
'type': fields.selection(_code_get, 'Account Type', required=True),
|
||||
'parent_id': fields.many2many('account.account', 'account_account_rel', 'child_id', 'parent_id', 'Parents'),
|
||||
'child_id': fields.many2many('account.account', 'account_account_rel', 'parent_id', 'child_id', 'Children'),
|
||||
# 'parent_id': fields.many2many('account.account', 'account_account_rel', 'child_id', 'parent_id', 'Parents'),
|
||||
'parent_id': fields.many2one('account.account','Parent'),
|
||||
'child_parent_ids':fields.one2many('account.account','parent_id','Children'),
|
||||
'child_consol_ids':fields.many2many('account.account', 'account_account_consol_rel', 'child_id', 'parent_id', 'Consolidated Children',domain=[('type','=','root'), ('type', '=', 'consolidation')]),
|
||||
'child_id': fields.function(_get_child_ids, method=True, type='many2many',relation="account.account",string="Children Accounts"),
|
||||
|
||||
# 'child_id': fields.many2many('account.account', 'account_account_rel', 'parent_id', 'child_id', 'Children'),
|
||||
'balance': fields.function(_balance, digits=(16,2), method=True, string='Balance'),
|
||||
'credit': fields.function(_credit, digits=(16,2), method=True, string='Credit'),
|
||||
'debit': fields.function(_debit, digits=(16,2), method=True, string='Debit'),
|
||||
|
@ -283,16 +302,38 @@ class account_account(osv.osv):
|
|||
'active': lambda *a: True,
|
||||
}
|
||||
|
||||
# def _check_recursion(self, cr, uid, ids):
|
||||
# level = 100
|
||||
# while len(ids):
|
||||
# cr.execute('select distinct parent_id from account_account_rel where child_id in ('+','.join(map(str,ids))+')')
|
||||
# ids = filter(None, map(lambda x:x[0], cr.fetchall()))
|
||||
# if not level:
|
||||
# return False
|
||||
# level -= 1
|
||||
# return True
|
||||
|
||||
def _check_recursion(self, cr, uid, ids):
|
||||
level = 100
|
||||
while len(ids):
|
||||
cr.execute('select distinct parent_id from account_account_rel where child_id in ('+','.join(map(str,ids))+')')
|
||||
ids = filter(None, map(lambda x:x[0], cr.fetchall()))
|
||||
if not level:
|
||||
obj_self=self.browse(cr,uid,ids[0])
|
||||
p_id=obj_self.parent_id and obj_self.parent_id.id
|
||||
|
||||
if (obj_self in obj_self.child_consol_ids) or (p_id and (p_id is obj_self.id)):
|
||||
return False
|
||||
level -= 1
|
||||
|
||||
while(ids):
|
||||
cr.execute('select distinct child_id from account_account_consol_rel where parent_id in ('+','.join(map(str,ids))+')')
|
||||
child_ids = filter(None, map(lambda x:x[0], cr.fetchall()))
|
||||
c_ids=child_ids
|
||||
if (p_id and (p_id in c_ids)) or (obj_self.id in c_ids):
|
||||
return False
|
||||
while len(c_ids):
|
||||
s_ids=self.search(cr,uid,[('parent_id','in',c_ids)])
|
||||
if p_id and (p_id in s_ids):
|
||||
return False
|
||||
c_ids=s_ids
|
||||
ids=child_ids
|
||||
return True
|
||||
|
||||
|
||||
_constraints = [
|
||||
(_check_recursion, 'Error ! You can not create recursive accounts.', ['parent_id'])
|
||||
]
|
||||
|
|
|
@ -26,8 +26,7 @@
|
|||
</assert>
|
||||
|
||||
<assert model="account.account" search="[]" string="Every account must have at least one parent account of type '0'">
|
||||
<test expr="not parent_id or '0' in [p.code for p in parent_id]"/>
|
||||
|
||||
<test expr="not parent_id or (code!='0')"/>
|
||||
</assert>
|
||||
</data>
|
||||
</terp>
|
|
@ -126,7 +126,9 @@
|
|||
<field name="close_method"/>
|
||||
<field name="reconcile"/>
|
||||
<newline/>
|
||||
<field colspan="4" name="parent_id"/>
|
||||
<field name="parent_id"/>
|
||||
<newline/>
|
||||
<field name="child_consol_ids" colspan="4"/>
|
||||
<field colspan="4" name="tax_ids"/>
|
||||
</page>
|
||||
<page string="Notes">
|
||||
|
|
|
@ -22,6 +22,16 @@
|
|||
<field name="code">view</field>
|
||||
<field name="close_method">none</field>
|
||||
</record>
|
||||
<record id="account_type_root" model="account.account.type">
|
||||
<field name="name">Root</field>
|
||||
<field name="code">root</field>
|
||||
<field name="close_method">none</field>
|
||||
</record>
|
||||
<record id="account_type_consolidation" model="account.account.type">
|
||||
<field name="name">Consolidation</field>
|
||||
<field name="code">consolidation</field>
|
||||
<field name="close_method">none</field>
|
||||
</record>
|
||||
<record id="account_type_income" model="account.account.type">
|
||||
<field name="name">Income</field>
|
||||
<field name="code">income</field>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<field name="code">0</field>
|
||||
<field name="name">Minimal account chart</field>
|
||||
<field name="close_method">none</field>
|
||||
<field eval="[]" name="parent_id"/>
|
||||
<field eval="0" name="parent_id"/>
|
||||
<field name="type">view</field>
|
||||
</record>
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
|||
<field name="name">Main Receivable</field>
|
||||
<field name="code">40</field>
|
||||
<field name="type">receivable</field>
|
||||
<field eval="[(6,0,[ref('minimal_0')])]" name="parent_id"/>
|
||||
<field eval="ref('minimal_0')" name="parent_id"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field eval="True" name="reconcile"/>
|
||||
</record>
|
||||
|
@ -26,7 +26,7 @@
|
|||
<field name="name">Main Payable</field>
|
||||
<field name="code">440</field>
|
||||
<field name="type">payable</field>
|
||||
<field eval="[(6,0,[ref('minimal_0')])]" name="parent_id"/>
|
||||
<field eval="ref('minimal_0')" name="parent_id"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field eval="True" name="reconcile"/>
|
||||
</record>
|
||||
|
@ -35,7 +35,7 @@
|
|||
<field name="name">Petty Cash</field>
|
||||
<field name="code">57</field>
|
||||
<field name="type">cash</field>
|
||||
<field eval="[(6,0,[ref('minimal_0')])]" name="parent_id"/>
|
||||
<field eval="ref('minimal_0')" name="parent_id"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
|
||||
|
@ -43,14 +43,14 @@
|
|||
<field name="name">Products Purchase</field>
|
||||
<field name="code">600</field>
|
||||
<field name="type">expense</field>
|
||||
<field eval="[(6,0,[ref('minimal_0')])]" name="parent_id"/>
|
||||
<field eval="ref('minimal_0')" name="parent_id"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
<record id="a_sale" model="account.account">
|
||||
<field name="name">Products Sales</field>
|
||||
<field name="code">701</field>
|
||||
<field name="type">income</field>
|
||||
<field eval="[(6,0,[ref('minimal_0')])]" name="parent_id"/>
|
||||
<field eval="ref('minimal_0')" name="parent_id"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
|
||||
|
|
|
@ -48,15 +48,27 @@ class account_balance(report_sxw.rml_parse):
|
|||
|
||||
def get_fiscalyear(self, form):
|
||||
fisc_id = form['fiscalyear']
|
||||
if not(fisc_id):
|
||||
return ''
|
||||
if fisc_id:
|
||||
self.cr.execute("select name from account_fiscalyear where id = %d" %(int(fisc_id)))
|
||||
res=self.cr.fetchone()
|
||||
return res and res[0] or ''
|
||||
else:
|
||||
self.cr.execute("select name from account_fiscalyear where state='draft'")
|
||||
res=self.cr.fetchall()
|
||||
result=''
|
||||
for r in res:
|
||||
result+=r[0]+","
|
||||
return str(result and result[:-1]) or ''
|
||||
|
||||
|
||||
def get_periods(self, form):
|
||||
periods=form['periods'][0][2]
|
||||
if periods:
|
||||
period_ids = ",".join([str(x) for x in form['periods'][0][2] if x])
|
||||
self.cr.execute("select name from account_period where id in (%s)" % (period_ids))
|
||||
else:
|
||||
if form['fiscalyear']:
|
||||
self.cr.execute("select name from account_period where fiscalyear_id = %d"%(int(form['fiscalyear'])))
|
||||
else:
|
||||
self.cr.execute("select name from account_period")
|
||||
res=self.cr.fetchall()
|
||||
result=''
|
||||
for r in res:
|
||||
|
|
|
@ -64,7 +64,11 @@ def _data_save(self, cr, uid, data, context):
|
|||
|
||||
fy_id = data['form']['fy_id']
|
||||
if data['form']['report_new']:
|
||||
period = pool.get('account.fiscalyear').browse(cr, uid, data['form']['fy2_id']).period_ids[0]
|
||||
periods_fy2 = pool.get('account.fiscalyear').browse(cr, uid, data['form']['fy2_id']).period_ids
|
||||
if not periods_fy2:
|
||||
raise wizard.except_wizard(_('UserError'),
|
||||
_('There are no periods defined on New Fiscal Year.'))
|
||||
period=periods_fy2[0]
|
||||
new_fyear = pool.get('account.fiscalyear').browse(cr, uid, data['form']['fy2_id'])
|
||||
start_jp = new_fyear.start_journal_period_id
|
||||
if not start_jp:
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -19,7 +19,7 @@
|
|||
|
||||
<field name="close_method">none</field>
|
||||
|
||||
<field eval="[]" name="parent_id"/>
|
||||
<field eval="0" name="parent_id"/>
|
||||
|
||||
<field name="type">view</field>
|
||||
|
||||
|
@ -38,7 +38,7 @@
|
|||
|
||||
<field name="close_method">none</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('chart0')])]" name="parent_id"/>
|
||||
<field ref="chart0" name="parent_id"/>
|
||||
|
||||
<field name="type">view</field>
|
||||
|
||||
|
@ -53,7 +53,7 @@
|
|||
|
||||
<field name="close_method">none</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('bal')])]" name="parent_id"/>
|
||||
<field ref="bal" name="parent_id"/>
|
||||
|
||||
<field name="type">view</field>
|
||||
|
||||
|
@ -68,7 +68,7 @@
|
|||
|
||||
<field name="close_method">balance</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('fas')])]" name="parent_id"/>
|
||||
<field ref="fas" name="parent_id"/>
|
||||
|
||||
<field name="type">asset</field>
|
||||
|
||||
|
@ -83,7 +83,7 @@
|
|||
|
||||
<field name="close_method">none</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('bal')])]" name="parent_id"/>
|
||||
<field ref="bal" name="parent_id"/>
|
||||
|
||||
<field name="type">view</field>
|
||||
|
||||
|
@ -98,7 +98,7 @@
|
|||
|
||||
<field name="close_method">none</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('nca')])]" name="parent_id"/>
|
||||
<field ref="nca" name="parent_id"/>
|
||||
|
||||
<field name="type">view</field>
|
||||
|
||||
|
@ -115,7 +115,7 @@
|
|||
|
||||
<field name="close_method">unreconciled</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('cas')])]" name="parent_id"/>
|
||||
<field ref="cas" name="parent_id"/>
|
||||
|
||||
<field name="type">asset</field>
|
||||
|
||||
|
@ -132,7 +132,7 @@
|
|||
|
||||
<field name="close_method">balance</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('cas')])]" name="parent_id"/>
|
||||
<field ref="cas" name="parent_id"/>
|
||||
|
||||
<field name="type">receivable</field>
|
||||
|
||||
|
@ -155,7 +155,7 @@
|
|||
|
||||
<field name="close_method">balance</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('cas')])]" name="parent_id"/>
|
||||
<field ref="cas" name="parent_id"/>
|
||||
|
||||
<field name="type">tax</field>
|
||||
|
||||
|
@ -170,7 +170,7 @@
|
|||
|
||||
<field name="close_method">balance</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('cas')])]" name="parent_id"/>
|
||||
<field ref="cas" name="parent_id"/>
|
||||
|
||||
<field name="type">cash</field>
|
||||
|
||||
|
@ -187,7 +187,7 @@
|
|||
|
||||
<field name="close_method">balance</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('cas')])]" name="parent_id"/>
|
||||
<field ref="cas" name="parent_id"/>
|
||||
|
||||
<field name="type">cash</field>
|
||||
|
||||
|
@ -202,7 +202,7 @@
|
|||
|
||||
<field name="close_method">none</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('nca')])]" name="parent_id"/>
|
||||
<field ref="nca" name="parent_id"/>
|
||||
|
||||
<field name="type">view</field>
|
||||
|
||||
|
@ -219,7 +219,7 @@
|
|||
|
||||
<field name="close_method">balance</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('cli')])]" name="parent_id"/>
|
||||
<field ref="cli" name="parent_id"/>
|
||||
|
||||
<field name="type">payable</field>
|
||||
|
||||
|
@ -242,7 +242,7 @@
|
|||
|
||||
<field name="close_method">balance</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('cli')])]" name="parent_id"/>
|
||||
<field ref="cli" name="parent_id"/>
|
||||
|
||||
<field name="type">tax</field>
|
||||
|
||||
|
@ -261,7 +261,7 @@
|
|||
|
||||
<field name="close_method">none</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('chart0')])]" name="parent_id"/>
|
||||
<field ref="chart0" name="parent_id"/>
|
||||
|
||||
<field name="type">view</field>
|
||||
|
||||
|
@ -276,7 +276,7 @@
|
|||
|
||||
<field name="close_method">none</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('gpf')])]" name="parent_id"/>
|
||||
<field ref="gpf" name="parent_id"/>
|
||||
|
||||
<field name="type">view</field>
|
||||
|
||||
|
@ -293,7 +293,7 @@
|
|||
|
||||
<field name="close_method">unreconciled</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('rev')])]" name="parent_id"/>
|
||||
<field ref="rev" name="parent_id"/>
|
||||
|
||||
<field name="type">income</field>
|
||||
|
||||
|
@ -314,7 +314,7 @@
|
|||
|
||||
<field name="close_method">none</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('gpf')])]" name="parent_id"/>
|
||||
<field ref="gpf" name="parent_id"/>
|
||||
|
||||
<field name="type">view</field>
|
||||
|
||||
|
@ -331,7 +331,7 @@
|
|||
|
||||
<field name="close_method">unreconciled</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('cos')])]" name="parent_id"/>
|
||||
<field ref="cos" name="parent_id"/>
|
||||
|
||||
<field name="type">expense</field>
|
||||
|
||||
|
@ -346,7 +346,7 @@
|
|||
|
||||
<field name="close_method">none</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('gpf')])]" name="parent_id"/>
|
||||
<field ref="gpf" name="parent_id"/>
|
||||
|
||||
<field name="type">view</field>
|
||||
|
||||
|
@ -363,7 +363,7 @@
|
|||
|
||||
<field name="close_method">unreconciled</field>
|
||||
|
||||
<field eval="[(6, 0, [ref('ovr')])]" name="parent_id"/>
|
||||
<field ref="ovr" name="parent_id"/>
|
||||
|
||||
<field name="type">expense</field>
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue