diff --git a/addons/account/account.py b/addons/account/account.py
index b050f43ad4e..5fc97a13697 100644
--- a/addons/account/account.py
+++ b/addons/account/account.py
@@ -1027,6 +1027,33 @@ class account_move(osv.osv):
_description = "Account Entry"
_order = 'id desc'
+ def name_search(self, cr, user, name, args=None, operator='ilike', context=None, limit=80):
+ """
+ Returns a list of tupples containing id, name, as internally it is called {def name_get}
+ result format : {[(id, name), (id, name), ...]}
+
+ @param cr: A database cursor
+ @param user: ID of the user currently logged in
+ @param name: name to search
+ @param args: other arguments
+ @param operator: default operator is 'ilike', it can be changed
+ @param context: context arguments, like lang, time zone
+ @param limit: Returns first 'n' ids of complete result, default is 80.
+
+ @return: Returns a list of tupples containing id and name
+ """
+
+ if not args:
+ args=[]
+ if not context:
+ context={}
+ ids = []
+
+ if name:
+ ids += self.search(cr, user, [('state','=','draft'), ('id','=',name)], limit=limit)
+
+ return self.name_get(cr, user, ids, context=context)
+
def name_get(self, cursor, user, ids, context=None):
if not len(ids):
return []
@@ -2205,7 +2232,6 @@ class account_add_tmpl_wizard(osv.osv_memory):
def _get_def_cparent(self, cr, uid, context):
acc_obj=self.pool.get('account.account')
tmpl_obj=self.pool.get('account.account.template')
- #print "Searching for ",context
tids=tmpl_obj.read(cr, uid, [context['tmpl_ids']], ['parent_id'])
if not tids or not tids[0]['parent_id']:
return False
@@ -2247,7 +2273,6 @@ class account_add_tmpl_wizard(osv.osv_memory):
# 'tax_ids': [(6,0,tax_ids)], todo!!
'company_id': company_id,
}
- # print "Creating:", vals
new_account = acc_obj.create(cr, uid, vals)
return {'type':'state', 'state': 'end' }
diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py
index d3dd4f1ee78..d122da7d19e 100644
--- a/addons/account/account_move_line.py
+++ b/addons/account/account_move_line.py
@@ -407,7 +407,7 @@ class account_move_line(osv.osv):
'debit': fields.float('Debit', digits_compute=dp.get_precision('Account')),
'credit': fields.float('Credit', digits_compute=dp.get_precision('Account')),
'account_id': fields.many2one('account.account', 'Account', required=True, ondelete="cascade", domain=[('type','<>','view'), ('type', '<>', 'closed')], select=2),
- 'move_id': fields.many2one('account.move', 'Move', ondelete="cascade", states={'valid':[('readonly',True)]}, help="The move of this entry line.", select=2),
+ 'move_id': fields.many2one('account.move', 'Move', ondelete="cascade", help="The move of this entry line.", select=2),
'narration': fields.related('move_id','narration', type='text', relation='account.move', string='Narration'),
'ref': fields.char('Ref.', size=64),
'statement_id': fields.many2one('account.bank.statement', 'Statement', help="The bank statement used for bank reconciliation", select=1),
@@ -560,7 +560,7 @@ class account_move_line(osv.osv):
#if jt in ('sale', 'purchase_refund', 'bank', 'cash'):
if jt in ('sale', 'purchase_refund'):
val['account_id'] = self.pool.get('account.fiscal.position').map_account(cr, uid, part and part.property_account_position or False, id2)
- elif jt in ('purchase', 'sale_refund', 'expense'):
+ elif jt in ('purchase', 'sale_refund', 'expense', 'bank', 'cash'):
val['account_id'] = self.pool.get('account.fiscal.position').map_account(cr, uid, part and part.property_account_position or False, id1)
if val.get('account_id', False):
@@ -798,30 +798,30 @@ 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 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)
@@ -882,20 +882,29 @@ class account_move_line(osv.osv):
attrs = []
if field == 'debit':
attrs.append('sum="Total debit"')
+
elif field == 'credit':
attrs.append('sum="Total credit"')
+
elif field == 'account_tax_id':
attrs.append('domain="[(\'parent_id\',\'=\',False)]"')
attrs.append("context=\"{'journal_id':journal_id}\"")
+
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 == 'journal_id':
attrs.append("context=\"{'journal_id':journal_id}\"")
+
elif field == 'statement_id':
attrs.append("domain=\"[('state','!=','confirm'),('journal_id.type','=','bank')]\"")
-
+
+ elif field == 'date':
+ attrs.append('on_change="onchange_date(date)"')
+
if field in ('amount_currency', 'currency_id'):
attrs.append('on_change="onchange_currency(account_id, amount_currency,currency_id, date, journal_id)"')
diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml
index daf4ebcac26..68e9cc3ba7e 100644
--- a/addons/account/account_view.xml
+++ b/addons/account/account_view.xml
@@ -1048,7 +1048,7 @@
-
+
Entry Lines
@@ -1058,9 +1058,10 @@
-
+
+
@@ -1073,8 +1074,8 @@
-
-
+
+
@@ -1377,29 +1378,29 @@
-->
-
- Journal Items
- account.move.line
- form
- tree,form,graph
-
-
- [('journal_id.type', 'in', ['sale', 'purchase_refund'])]
-
+
+
+
+
+
+
+
+
+
-
+
-
- Journal Items
- account.move.line
- form
- tree,form,graph
-
-
- [('journal_id.type', 'in', ['purchase', 'sale_refund'])]
-
+
+
+
+
+
+
+
+
+
-
+
Entry Lines
@@ -2416,22 +2417,22 @@
id="menu_action_account_fiscal_position_form_template"
parent="account_template_folder" sequence="20"/>
-
- Journal Items
- account.move.line
- form
- tree,form,graph
-
-
-
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
diff --git a/addons/account/test/account_fiscalyear_close.yml b/addons/account/test/account_fiscalyear_close.yml
index fa4f24effc1..5af4787c6a6 100644
--- a/addons/account/test/account_fiscalyear_close.yml
+++ b/addons/account/test/account_fiscalyear_close.yml
@@ -48,7 +48,6 @@
-
!record {model: account.move.journal, id: account_move_journal_0}:
journal_id: account.sales_journal
- period_id: account_period_jan11
-
I clicked on Open Journal Button to check the entries
diff --git a/addons/account/wizard/account_journal_select_view.xml b/addons/account/wizard/account_journal_select_view.xml
index f5df24fa585..348218dd04d 100644
--- a/addons/account/wizard/account_journal_select_view.xml
+++ b/addons/account/wizard/account_journal_select_view.xml
@@ -8,11 +8,11 @@
form
diff --git a/addons/account/wizard/account_move_journal.py b/addons/account/wizard/account_move_journal.py
index 142ade01737..92e8f23da49 100644
--- a/addons/account/wizard/account_move_journal.py
+++ b/addons/account/wizard/account_move_journal.py
@@ -26,23 +26,82 @@ import tools
class account_move_journal(osv.osv_memory):
_name = "account.move.journal"
_description = "Move journal"
- _columns = {
- 'journal_id': fields.many2one('account.journal', 'Journal', required=True),
- 'period_id': fields.many2one('account.period', 'Period', required=True),
- }
def _get_period(self, cr, uid, context={}):
- """Return default account period value"""
+ """
+ Return default account period value
+ """
ids = self.pool.get('account.period').find(cr, uid, context=context)
period_id = False
if len(ids):
period_id = ids[0]
return period_id
- _defaults = {
- 'period_id': _get_period
- }
+ def _get_journal(self, cr, uid, context={}):
+ """
+ Return journal based on the journal type
+ """
+ journal_id = False
+
+ journal_pool = self.pool.get('account.journal')
+ if context.get('journal_type', False):
+ jids = journal_pool.search(cr, uid, [('type','=', context.get('journal_type'))])
+ journal_id = jids[0]
+
+ return journal_id
+
+ def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
+ """
+ Returns views and fields for current model where view will depend on {view_type}.
+ @param cr: A database cursor
+ @param user: ID of the user currently logged in
+ @param view_id: list of fields, which required to read signatures
+ @param view_type: defines a view type. it can be one of (form, tree, graph, calender, gantt, search, mdx)
+ @param context: context arguments, like lang, time zone
+ @param toolbar: contains a list of reports, wizards, and links related to current model
+
+ @return: Returns a dict that contains definition for fields, views, and toolbars
+ """
+
+ res = super(account_move_journal, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar, submenu)
+
+ if not view_id:
+ return res
+
+ period_pool = self.pool.get('account.period')
+ journal_pool = self.pool.get('account.journal')
+
+ journal_id = self._get_journal(cr, uid, context)
+ period_id = self._get_period(cr, uid, context)
+
+ journal = False
+ if journal_id:
+ journal = journal_pool.read(cr, uid, [journal_id], ['name'])[0]['name']
+ else:
+ journal = "All"
+
+ period = False
+ if period_id:
+ period = period_pool.browse(cr, uid, [period_id], ['name'])[0]['name']
+
+ view = """
+ """ % (str(journal), str(period))
+
+ res.update({
+ 'arch':view
+ })
+ return res
+
def action_open_window(self, cr, uid, ids, context=None):
"""
This function Open action move line window on given period and Journal/Payment Mode
@@ -50,48 +109,60 @@ class account_move_journal(osv.osv_memory):
@param uid: the current user’s ID for security checks,
@param ids: account move journal’s ID or list of IDs
@return: dictionary of Open action move line window on given period and Journal/Payment Mode
-
"""
- jp = self.pool.get('account.journal.period')
- mod_obj = self.pool.get('ir.model.data')
+
+ period_pool = self.pool.get('account.journal.period')
+ data_pool = self.pool.get('ir.model.data')
+ journal_pool = self.pool.get('account.journal')
+
if context is None:
context = {}
- data = self.read(cr, uid, ids, ['journal_id', 'period_id'], context=context)[0]
- cr.execute('select id,name from ir_ui_view where model=%s and type=%s', ('account.move.line', 'form'))
- view_res = cr.fetchone()
- journal_id = data['journal_id']
- period_id = data['period_id']
-
- ids = jp.search(cr, uid, [('journal_id', '=', journal_id), \
- ('period_id', '=', period_id)],context=context)
-
- if not len(ids):
- name = self.pool.get('account.journal').read(cr, uid, [journal_id])[0]['name']
- state = self.pool.get('account.period').read(cr, uid, [period_id])[0]['state']
- if state == 'done':
- raise osv.except_osv(_('UserError'), _('This period is already closed !'))
- company = self.pool.get('account.period').read(cr, uid, [period_id])[0]['company_id'][0]
- jp.create(cr, uid, {'name': name, 'period_id': period_id, 'journal_id': journal_id, 'company_id': company},context=context)
-
- ids = jp.search(cr, uid, [('journal_id', '=', journal_id), ('period_id', '=', period_id)],context=context)
- jp = jp.browse(cr, uid, ids, context=context)[0]
- name = (jp.journal_id.code or '') + ':' + (jp.period_id.code or '')
-
- result = mod_obj._get_id(cr, uid, 'account', 'view_account_move_line_filter')
- res = mod_obj.read(cr, uid, result, ['res_id'],context=context)
+
+ journal_id = self._get_journal(cr, uid, context)
+ period_id = self._get_period(cr, uid, context)
+ name = _("Journal Items")
+ if journal_id:
+ ids = period_pool.search(cr, uid, [('journal_id', '=', journal_id), ('period_id', '=', period_id)], context=context)
+
+ if not len(ids):
+ journal = journal_pool.browse(cr, uid, journal_id)
+ period = self.pool.get('account.period').browse(cr, uid, period_id)
+
+ name = journal.name
+ state = period.state
+
+ if state == 'done':
+ raise osv.except_osv(_('UserError'), _('This period is already closed !'))
+
+ company = period.company_id.id
+ res = {
+ 'name': name,
+ 'period_id': period_id,
+ 'journal_id': journal_id,
+ 'company_id': company
+ }
+ period_pool.create(cr, uid, res,context=context)
+
+ ids = period_pool.search(cr, uid, [('journal_id', '=', journal_id), ('period_id', '=', period_id)],context=context)
+ period = period_pool.browse(cr, uid, ids[0], context=context)
+ name = (period.journal_id.code or '') + ':' + (period.period_id.code or '')
+
+ result = data_pool._get_id(cr, uid, 'account', 'view_account_move_line_filter')
+ res_id = data_pool.browse(cr, uid, result, context=context).res_id
+
return {
- 'domain': "[('journal_id','=',%d), ('period_id','=',%d)]" % (journal_id, period_id),
+# 'domain': str([('journal_id', '=', journal_id), ('period_id', '=', period_id)]),
'name': name,
'view_type': 'form',
- 'view_mode': 'tree,form',
+ 'view_mode': 'tree,form,graph',
'res_model': 'account.move.line',
- 'view_id': view_res,
- 'context': "{'journal_id': %d, 'period_id': %d}" % (journal_id, period_id),
+ 'view_id': False,
+ 'context': "{'journal_id': %d, 'search_default_journal_id':%d, 'search_default_period_id':%d}" % (journal_id, journal_id, period_id),
'type': 'ir.actions.act_window',
- 'search_view_id': res['res_id']
- }
-
+ 'search_view_id': res_id
+ }
+
account_move_journal()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/account/wizard/account_move_journal_view.xml b/addons/account/wizard/account_move_journal_view.xml
index d766153a9b4..fbc160f9eb4 100644
--- a/addons/account/wizard/account_move_journal_view.xml
+++ b/addons/account/wizard/account_move_journal_view.xml
@@ -2,40 +2,72 @@
-
+
account.move.journal.form
account.move.journal
form
-
- Entries by Line
+
+ Journal Items
account.move.journal
form
- tree,form
-
- new
+
+ {'journal_type':'sale'}
+ new
+
+
+
+
+ Journal Refund Items
+ account.move.journal
+ form
+
+ {'journal_type':'purchase_refund'}
+ new
+
+
+
+
+ Journal Items
+ account.move.journal
+ form
+
+ {'journal_type':'purchase'}
+ new
+
+
+
+
+ Journal Refund Items
+ account.move.journal
+ form
+
+ {'journal_type':'sale_refund'}
+ new
+
+
+
+
+ Journal Items
+ account.move.journal
+ form
+
+ {'journal_type':'bank'}
+ new
-
-
-
-
-
+
-
\ No newline at end of file
+