[IMP]: improvement in accounting
bzr revid: mga@tinyerp.com-20100723140726-9dcas1qebivvy4vo
This commit is contained in:
parent
bb78b5c34a
commit
c5c499418d
|
@ -248,59 +248,59 @@ class account_account(osv.osv):
|
|||
|
||||
def __compute(self, cr, uid, ids, field_names, arg=None, context=None,
|
||||
query='', query_params=()):
|
||||
""" compute the balance, debit and/or credit for the provided
|
||||
account ids
|
||||
Arguments:
|
||||
`ids`: account ids
|
||||
`field_names`: the fields to compute (a list of any of
|
||||
'balance', 'debit' and 'credit')
|
||||
`arg`: unused fields.function stuff
|
||||
`query`: additional query filter (as a string)
|
||||
`query_params`: parameters for the provided query string
|
||||
(__compute will handle their escaping) as a
|
||||
tuple
|
||||
"""
|
||||
mapping = {
|
||||
'balance': "COALESCE(SUM(l.debit),0) " \
|
||||
"- COALESCE(SUM(l.credit), 0) as balance",
|
||||
'debit': "COALESCE(SUM(l.debit), 0) as debit",
|
||||
'credit': "COALESCE(SUM(l.credit), 0) as credit"
|
||||
}
|
||||
#get all the necessary accounts
|
||||
children_and_consolidated = self._get_children_and_consol(cr, uid, ids, context=context)
|
||||
#compute for each account the balance/debit/credit from the move lines
|
||||
accounts = {}
|
||||
if children_and_consolidated:
|
||||
aml_query = self.pool.get('account.move.line')._query_get(cr, uid, context=context)
|
||||
""" compute the balance, debit and/or credit for the provided
|
||||
account ids
|
||||
Arguments:
|
||||
`ids`: account ids
|
||||
`field_names`: the fields to compute (a list of any of
|
||||
'balance', 'debit' and 'credit')
|
||||
`arg`: unused fields.function stuff
|
||||
`query`: additional query filter (as a string)
|
||||
`query_params`: parameters for the provided query string
|
||||
(__compute will handle their escaping) as a
|
||||
tuple
|
||||
"""
|
||||
mapping = {
|
||||
'balance': "COALESCE(SUM(l.debit),0) " \
|
||||
"- COALESCE(SUM(l.credit), 0) as balance",
|
||||
'debit': "COALESCE(SUM(l.debit), 0) as debit",
|
||||
'credit': "COALESCE(SUM(l.credit), 0) as credit"
|
||||
}
|
||||
#get all the necessary accounts
|
||||
children_and_consolidated = self._get_children_and_consol(cr, uid, ids, context=context)
|
||||
#compute for each account the balance/debit/credit from the move lines
|
||||
accounts = {}
|
||||
if children_and_consolidated:
|
||||
aml_query = self.pool.get('account.move.line')._query_get(cr, uid, context=context)
|
||||
|
||||
wheres = [""]
|
||||
if query.strip():
|
||||
wheres.append(query.strip())
|
||||
if aml_query.strip():
|
||||
wheres.append(aml_query.strip())
|
||||
filters = " AND ".join(wheres)
|
||||
self.logger.notifyChannel('addons.'+self._name, netsvc.LOG_DEBUG,
|
||||
'Filters: %s'%filters)
|
||||
# IN might not work ideally in case there are too many
|
||||
# children_and_consolidated, in that case join on a
|
||||
# values() e.g.:
|
||||
# SELECT l.account_id as id FROM account_move_line l
|
||||
# INNER JOIN (VALUES (id1), (id2), (id3), ...) AS tmp (id)
|
||||
# ON l.account_id = tmp.id
|
||||
# or make _get_children_and_consol return a query and join on that
|
||||
request = ("SELECT l.account_id as id, " +\
|
||||
' , '.join(map(mapping.__getitem__, field_names)) +
|
||||
" FROM account_move_line l" \
|
||||
" WHERE l.account_id IN %s " \
|
||||
+ filters +
|
||||
" GROUP BY l.account_id")
|
||||
params = (tuple(children_and_consolidated),) + query_params
|
||||
cr.execute(request, params)
|
||||
self.logger.notifyChannel('addons.'+self._name, netsvc.LOG_DEBUG,
|
||||
'Status: %s'%cr.statusmessage)
|
||||
wheres = [""]
|
||||
if query.strip():
|
||||
wheres.append(query.strip())
|
||||
if aml_query.strip():
|
||||
wheres.append(aml_query.strip())
|
||||
filters = " AND ".join(wheres)
|
||||
self.logger.notifyChannel('addons.'+self._name, netsvc.LOG_DEBUG,
|
||||
'Filters: %s'%filters)
|
||||
# IN might not work ideally in case there are too many
|
||||
# children_and_consolidated, in that case join on a
|
||||
# values() e.g.:
|
||||
# SELECT l.account_id as id FROM account_move_line l
|
||||
# INNER JOIN (VALUES (id1), (id2), (id3), ...) AS tmp (id)
|
||||
# ON l.account_id = tmp.id
|
||||
# or make _get_children_and_consol return a query and join on that
|
||||
request = ("SELECT l.account_id as id, " +\
|
||||
' , '.join(map(mapping.__getitem__, field_names)) +
|
||||
" FROM account_move_line l" \
|
||||
" WHERE l.account_id IN %s " \
|
||||
+ filters +
|
||||
" GROUP BY l.account_id")
|
||||
params = (tuple(children_and_consolidated),) + query_params
|
||||
cr.execute(request, params)
|
||||
self.logger.notifyChannel('addons.'+self._name, netsvc.LOG_DEBUG,
|
||||
'Status: %s'%cr.statusmessage)
|
||||
|
||||
for res in cr.dictfetchall():
|
||||
accounts[res['id']] = res
|
||||
for res in cr.dictfetchall():
|
||||
accounts[res['id']] = res
|
||||
|
||||
# consolidate accounts with direct children
|
||||
children_and_consolidated.reverse()
|
||||
|
@ -2539,9 +2539,9 @@ class wizard_multi_charts_accounts(osv.osv_memory):
|
|||
'account_paid_id': acc_template_ref[value['account_paid_id']],
|
||||
})
|
||||
|
||||
# Creating Journals
|
||||
# Creating Journals Sales and Purchase
|
||||
vals_journal={}
|
||||
data_id = data_pool.search(cr, uid, [('model','=','account.journal.view'), ('name','=','account_journal_view')])
|
||||
data_id = data_pool.search(cr, uid, [('model','=','account.journal.view'), ('name','=','account_sp_journal_view')])
|
||||
data = data_pool.browse(cr, uid, data_id[0])
|
||||
view_id = data.res_id
|
||||
|
||||
|
@ -2573,6 +2573,7 @@ class wizard_multi_charts_accounts(osv.osv_memory):
|
|||
vals_journal['type'] = 'purchase'
|
||||
vals_journal['code'] = _('EXJ')
|
||||
vals_journal['sequence_id'] = seq_id_purchase
|
||||
vals_journal['view_id'] = view_id
|
||||
|
||||
if obj_multi.chart_template_id.property_account_payable:
|
||||
vals_journal['default_credit_account_id'] = acc_template_ref[obj_multi.chart_template_id.property_account_expense_categ.id]
|
||||
|
|
|
@ -183,7 +183,7 @@ class account_move_line(osv.osv):
|
|||
# Compute the current move
|
||||
move_id = False
|
||||
partner_id = False
|
||||
if context.get('journal_id',False) and context.get('period_id',False):
|
||||
if context.get('journal_id', False) and context.get('period_id', False):
|
||||
if 'move_id' in fields:
|
||||
cr.execute('select move_id \
|
||||
from \
|
||||
|
@ -199,6 +199,7 @@ class account_move_line(osv.osv):
|
|||
return data
|
||||
else:
|
||||
data['move_id'] = move_id
|
||||
|
||||
if 'date' in fields:
|
||||
cr.execute('select date \
|
||||
from \
|
||||
|
@ -214,7 +215,6 @@ class account_move_line(osv.osv):
|
|||
period = period_obj.browse(cr, uid, context['period_id'],
|
||||
context=context)
|
||||
data['date'] = period.date_start
|
||||
|
||||
if not move_id:
|
||||
return data
|
||||
|
||||
|
@ -786,6 +786,31 @@ class account_move_line(osv.osv):
|
|||
return j+(p and (':'+p) or '')
|
||||
return False
|
||||
|
||||
# def onchange_date(self, cr, user, ids, date, context={}):
|
||||
# """
|
||||
# Returns a dict that contains new values and context
|
||||
# @param cr: A database cursor
|
||||
# @param user: ID of the user currently logged in
|
||||
# @param date: latest value from user input for field date
|
||||
# @param args: other arguments
|
||||
# @param context: context arguments, like lang, time zone
|
||||
# @return: Returns a dict which contains new values, and context
|
||||
# """
|
||||
# res = {}
|
||||
# period_pool = self.pool.get('account.period')
|
||||
# pids = period_pool.search(cr, user, [('date_start','<=',date), ('date_stop','>=',date)])
|
||||
# if pids:
|
||||
# res.update({
|
||||
# 'period_id':pids[0]
|
||||
# })
|
||||
# context.update({
|
||||
# 'period_id':pids[0]
|
||||
# })
|
||||
# return {
|
||||
# 'value':res,
|
||||
# 'context':context,
|
||||
# }
|
||||
|
||||
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context={}, toolbar=False, submenu=False):
|
||||
result = super(osv.osv, self).fields_view_get(cr, uid, view_id,view_type,context,toolbar=toolbar, submenu=submenu)
|
||||
if view_type != 'tree':
|
||||
|
@ -848,11 +873,14 @@ class account_move_line(osv.osv):
|
|||
elif field == 'credit':
|
||||
attrs.append('sum="Total credit"')
|
||||
elif field == 'account_tax_id':
|
||||
attrs.append('domain="[(\'parent_id\',\'=\',False)]"')
|
||||
attrs.append('domain="[(\'parent_id\',\'=\',False), (\'type_tax_use\',\'=\',context.get(journal_id.type, \'sale\'))]"')
|
||||
elif field == 'account_id' and journal.id:
|
||||
attrs.append('domain="[(\'journal_id\', \'=\', '+str(journal.id)+'),(\'type\',\'<>\',\'view\'), (\'type\',\'<>\',\'closed\')]" on_change="onchange_account_id(account_id, partner_id)"')
|
||||
elif field == 'partner_id':
|
||||
attrs.append('on_change="onchange_partner_id(move_id, partner_id, account_id, debit, credit, date, journal_id)"')
|
||||
# elif field == 'date':
|
||||
# attrs.append('on_change="onchange_date(date)"')
|
||||
|
||||
# if field.readonly:
|
||||
# attrs.append('readonly="1"')
|
||||
# if field.required:
|
||||
|
|
|
@ -269,9 +269,9 @@
|
|||
<field colspan="4" name="name" select="1"/>
|
||||
<field name="field" select="1"/>
|
||||
<field name="sequence"/>
|
||||
<newline/>
|
||||
<field name="readonly"/>
|
||||
<field name="required"/>
|
||||
<!-- <newline/>-->
|
||||
<!-- <field name="readonly"/>-->
|
||||
<!-- <field name="required"/>-->
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -283,8 +283,8 @@
|
|||
<tree string="Journal Column">
|
||||
<field name="sequence"/>
|
||||
<field name="name"/>
|
||||
<field name="required"/>
|
||||
<field name="readonly"/>
|
||||
<!-- <field name="required"/>-->
|
||||
<!-- <field name="readonly"/>-->
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -295,11 +295,18 @@
|
|||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Journal View">
|
||||
<field colspan="4" name="name" select="1"/>
|
||||
<field name="name" select="1"/>
|
||||
<field colspan="4" name="columns_id" nolabel="1" widget="one2many_list"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_account_journal_view" model="ir.actions.act_window">
|
||||
<field name="name">Journal Views</field>
|
||||
<field name="res_model">account.journal.view</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
<menuitem action="action_account_journal_view" id="menu_action_account_journal_view" parent="account.menu_low_level"/>
|
||||
|
||||
<!--
|
||||
# Account Journal
|
||||
|
@ -953,7 +960,7 @@
|
|||
<field eval="9" name="priority"/>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Account Entry Line">
|
||||
<notebook>
|
||||
<notebook colspan="4">
|
||||
<page string="Information">
|
||||
<separator colspan="4" string="General Information"/>
|
||||
<field name="name" select="1"/>
|
||||
|
@ -1001,8 +1008,11 @@
|
|||
<search string="Search Entry Lines">
|
||||
<group col='10' colspan='4'>
|
||||
<filter icon="terp-document-new" string="Draft" domain="[('state','=','draft')]" help="Draft Entry Lines"/>
|
||||
<filter icon="terp-camera_test" string="Posted" domain="[('state','=','valid')]" help="Posted Entry Lines"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter icon="terp-camera_test" string="Posted" domain="[('state','=','valid')]" help="Posted Entry Lines"/>
|
||||
<filter icon="terp-stock_symbol-selection" string="Unposted" domain="[('move_id.state','=','draft')]" help="Unposted Entry Lines"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter icon="terp-stock_symbol-selection" string="Unreconciled" domain="[('reconcile_id','=',False), ('account_id.type','in',['receivable', 'payable'])]" help="Unreconciled Entry Lines"/>
|
||||
<field name="date" select='1'/>
|
||||
<field name="account_id" select='1'/>
|
||||
<field name="partner_id" select='1'>
|
||||
|
@ -1012,8 +1022,8 @@
|
|||
</group>
|
||||
<newline/>
|
||||
<group col="10" colspan="4">
|
||||
<field name="journal_id" widget="selection" context="{'journal_id':self, 'visible_id':self or 0, 'normal_view':False}"/>
|
||||
<field name="period_id" widget="selection" context="{'period_id':self}"/>
|
||||
<field name="journal_id" required="1" widget="selection" context="{'journal_id':self, 'visible_id':self or 0, 'normal_view':False}"/>
|
||||
<field name="period_id" required="1" widget="selection" context="{'period_id':self}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
|
@ -1255,7 +1265,6 @@
|
|||
<field name="view_id" ref="view_move_line_tree"/>
|
||||
<field name="search_view_id" ref="view_account_move_line_filter"/>
|
||||
<field name="domain">[('journal_id.type', 'in', ['purchase', 'sale_refund'])]</field>
|
||||
<field name="context">{'journal_id':1}</field>
|
||||
</record>
|
||||
|
||||
<menuitem action="action_account_moves_purchase" id="menu_eaction_account_moves_purchase" parent="menu_finance_payables"/>
|
||||
|
|
|
@ -296,9 +296,12 @@ class account_installer(osv.osv_memory):
|
|||
'account_paid_id': acc_template_ref[value['account_paid_id']],
|
||||
})
|
||||
|
||||
# Creating Journals
|
||||
# Creating Journals Sales and Purchase
|
||||
vals_journal={}
|
||||
view_id = self.pool.get('account.journal.view').search(cr,uid,[('name','=','Journal View')])[0]
|
||||
data_id = data_pool.search(cr, uid, [('model','=','account.journal.view'), ('name','=','account_sp_journal_view')])
|
||||
data = data_pool.browse(cr, uid, data_id[0])
|
||||
view_id = data.res_id
|
||||
|
||||
seq_id = obj_sequence.search(cr,uid,[('name','=','Account Journal')])[0]
|
||||
|
||||
if seq_journal:
|
||||
|
|
Loading…
Reference in New Issue