diff --git a/addons/account/account_cash_statement.py b/addons/account/account_cash_statement.py
index 17fa05d5f24..9a5eb93286f 100644
--- a/addons/account/account_cash_statement.py
+++ b/addons/account/account_cash_statement.py
@@ -78,7 +78,7 @@ class account_cash_statement(osv.osv):
"""
res = {}
for statement in self.browse(cr, uid, ids, context=context):
- if statement.journal_id.type not in ('cash',):
+ if (statement.journal_id.type not in ('cash',)) or (not statement.journal_id.cash_control):
continue
start = end = 0
for line in statement.details_ids:
diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py
index 9a4711e5f6b..39c98c9faa7 100644
--- a/addons/point_of_sale/point_of_sale.py
+++ b/addons/point_of_sale/point_of_sale.py
@@ -296,49 +296,53 @@ class pos_session(osv.osv):
]
def create(self, cr, uid, values, context=None):
- config_id = values.get('config_id', False) or False
- if config_id:
- # journal_id is not required on the pos_config because it does not
- # exists at the installation. If nothing is configured at the
- # installation we do the minimal configuration. Impossible to do in
- # the .xml files as the CoA is not yet installed.
- jobj = self.pool.get('pos.config')
- pos_config = jobj.browse(cr, uid, config_id, context=context)
- if not pos_config.journal_id:
- jid = jobj.default_get(cr, uid, ['journal_id'], context=context)['journal_id']
- if jid:
- jobj.write(cr, uid, [pos_config.id], {'journal_id': jid}, context=context)
- else:
- raise osv.except_osv( _('error!'),
- _("Unable to open the session. You have to assign a sale journal to your point of sale."))
+ context = context or {}
+ config_id = values.get('config_id', False) or context.get('default_config_id', False)
+ if not config_id:
+ raise osv.except_osv( _('Error!'),
+ _("You should assign a Point of Sale to your session."))
- # define some cash journal if no payment method exists
- if not pos_config.journal_ids:
- journal_proxy = self.pool.get('account.journal')
- cashids = journal_proxy.search(cr, uid, [('journal_user', '=', True), ('type','=','cash')], context=context)
+ # journal_id is not required on the pos_config because it does not
+ # exists at the installation. If nothing is configured at the
+ # installation we do the minimal configuration. Impossible to do in
+ # the .xml files as the CoA is not yet installed.
+ jobj = self.pool.get('pos.config')
+ pos_config = jobj.browse(cr, uid, config_id, context=context)
+ if not pos_config.journal_id:
+ jid = jobj.default_get(cr, uid, ['journal_id'], context=context)['journal_id']
+ if jid:
+ jobj.write(cr, uid, [pos_config.id], {'journal_id': jid}, context=context)
+ else:
+ raise osv.except_osv( _('error!'),
+ _("Unable to open the session. You have to assign a sale journal to your point of sale."))
+
+ # define some cash journal if no payment method exists
+ if not pos_config.journal_ids:
+ journal_proxy = self.pool.get('account.journal')
+ cashids = journal_proxy.search(cr, uid, [('journal_user', '=', True), ('type','=','cash')], context=context)
+ if not cashids:
+ cashids = journal_proxy.search(cr, uid, [('type', '=', 'cash')], context=context)
if not cashids:
- cashids = journal_proxy.search(cr, uid, [('type', '=', 'cash')], context=context)
- if not cashids:
- cashids = journal_proxy.search(cr, uid, [('journal_user','=',True)], context=context)
+ cashids = journal_proxy.search(cr, uid, [('journal_user','=',True)], context=context)
- jobj.write(cr, uid, [pos_config.id], {'journal_ids': [(6,0, cashids)]})
+ jobj.write(cr, uid, [pos_config.id], {'journal_ids': [(6,0, cashids)]})
- pos_config = jobj.browse(cr, uid, config_id, context=context)
- bank_statement_ids = []
- for journal in pos_config.journal_ids:
- bank_values = {
- 'journal_id' : journal.id,
- 'user_id' : uid,
- }
- statement_id = self.pool.get('account.bank.statement').create(cr, uid, bank_values, context=context)
- bank_statement_ids.append(statement_id)
+ pos_config = jobj.browse(cr, uid, config_id, context=context)
+ bank_statement_ids = []
+ for journal in pos_config.journal_ids:
+ bank_values = {
+ 'journal_id' : journal.id,
+ 'user_id' : uid,
+ }
+ statement_id = self.pool.get('account.bank.statement').create(cr, uid, bank_values, context=context)
+ bank_statement_ids.append(statement_id)
- values.update({
- 'name' : pos_config.sequence_id._next(),
- 'statement_ids' : [(6, 0, bank_statement_ids)],
- 'config_id': config_id
- })
+ values.update({
+ 'name' : pos_config.sequence_id._next(),
+ 'statement_ids' : [(6, 0, bank_statement_ids)],
+ 'config_id': config_id
+ })
return super(pos_session, self).create(cr, uid, values, context=context)
@@ -390,7 +394,7 @@ class pos_session(osv.osv):
def wkf_action_closing_control(self, cr, uid, ids, context=None):
for session in self.browse(cr, uid, ids, context=context):
for statement in session.statement_ids:
- if statement != session.cash_register_id and statement.balance_end != statement.balance_end_real:
+ if (statement != session.cash_register_id) and (statement.balance_end != statement.balance_end_real):
self.pool.get('account.bank.statement').write(cr, uid, [statement.id], {'balance_end_real': statement.balance_end})
return self.write(cr, uid, ids, {'state' : 'closing_control', 'stop_at' : time.strftime('%Y-%m-%d %H:%M:%S')}, context=context)
diff --git a/addons/point_of_sale/point_of_sale_workflow.xml b/addons/point_of_sale/point_of_sale_workflow.xml
index 601fbae4d23..ad7b149f6bc 100644
--- a/addons/point_of_sale/point_of_sale_workflow.xml
+++ b/addons/point_of_sale/point_of_sale_workflow.xml
@@ -152,7 +152,7 @@
-
+
close
cash_control == False
@@ -163,5 +163,13 @@
close
+
+
+
+ cash_control == False
+
+
+
+