diff --git a/addons/account/account.py b/addons/account/account.py
index df446abc3bc..f32c6b7b853 100644
--- a/addons/account/account.py
+++ b/addons/account/account.py
@@ -716,6 +716,7 @@ class account_journal(osv.osv):
_name = "account.journal"
_description = "Journal"
_columns = {
+ 'with_last_closing_balance' : fields.boolean('Opening With Last Closing Balance'),
'name': fields.char('Journal Name', size=64, required=True),
'code': fields.char('Code', size=5, required=True, help="The code will be displayed on reports."),
'type': fields.selection([('sale', 'Sale'),('sale_refund','Sale Refund'), ('purchase', 'Purchase'), ('purchase_refund','Purchase Refund'), ('cash', 'Cash'), ('bank', 'Bank and Cheques'), ('general', 'General'), ('situation', 'Opening/Closing Situation')], 'Type', size=32, required=True,
@@ -746,6 +747,7 @@ class account_journal(osv.osv):
}
_defaults = {
+ 'with_last_closing_balance' : False,
'user_id': lambda self, cr, uid, context: uid,
'company_id': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id,
}
diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml
index 2ea269d93ae..83d2e6264c3 100644
--- a/addons/account/account_view.xml
+++ b/addons/account/account_view.xml
@@ -487,6 +487,7 @@
+
diff --git a/addons/point_of_sale/account_bank_statement.py b/addons/point_of_sale/account_bank_statement.py
index 9a64185659c..367d94fd8f5 100644
--- a/addons/point_of_sale/account_bank_statement.py
+++ b/addons/point_of_sale/account_bank_statement.py
@@ -31,7 +31,6 @@ class account_journal(osv.osv):
'closing_control': fields.boolean('Closing Control', help="If you want the journal should be control at closing, check this option"),
'amount_authorized_diff' : fields.float('Amount Authorized Difference'),
-
}
_defaults = {
'opening_control' : True,
diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py
index 4f688797d09..10c09dbe4ad 100644
--- a/addons/point_of_sale/point_of_sale.py
+++ b/addons/point_of_sale/point_of_sale.py
@@ -198,6 +198,14 @@ class pos_session(osv.osv):
return result
+ def _compute_show_closing_control(self, cr, uid, ids, fieldnames, args, context=None):
+ result = dict.fromkeys(ids, False)
+
+ for session in self.browse(cr, uid, ids, context=context):
+ result[session.id] = any(journal.closing_control == True for journal in session.config_id.journal_ids)
+
+ return result
+
_columns = {
'config_id' : fields.many2one('pos.config', 'PoS',
required=True,
@@ -242,14 +250,40 @@ class pos_session(osv.osv):
type='one2many', relation='account.cashbox.line',
string='CashBox Lines'),
- 'cash_register_date' : fields.related('cash_register_id', 'date', type='datetime', string='Started On'),
- 'cash_register_closing_date' : fields.related('cash_register_id', 'closing_date', type='datetime', string='Closed On'),
- 'cash_register_balance_end_real' : fields.related('cash_register_id', 'balance_end_real', type='float', digits_compute=dp.get_precision('Account'), string="Ending Balance"),
- 'cash_register_balance_start' : fields.related('cash_register_id', 'balance_start', type='float', digits_compute=dp.get_precision('Account'), string="Starting Balance"),
- 'cash_register_total_entry_encoding' : fields.related('cash_register_id', 'total_entry_encoding', string='Total Cash Transaction'),
- 'cash_register_balance_end' : fields.related('cash_register_id', 'balance_end', type='float', digits_compute=dp.get_precision('Account'), string="Computed Balance"),
- 'cash_register_balance_end_cash' : fields.related('cash_register_id', 'balance_end_cash', string='Closing Balance', help="Closing balance based on cashBox"),
- 'cash_register_difference' : fields.related('cash_register_id', 'difference', type='float', string='Difference'),
+ 'cash_register_date' : fields.related('cash_register_id', 'date',
+ type='datetime',
+ string='Started On',
+ readonly=True),
+ 'cash_register_closing_date' : fields.related('cash_register_id', 'closing_date',
+ type='datetime',
+ string='Closed On',
+ readonly=True),
+ 'cash_register_balance_end_real' : fields.related('cash_register_id', 'balance_end_real',
+ type='float',
+ digits_compute=dp.get_precision('Account'),
+ string="Ending Balance",
+ readonly=True),
+ 'cash_register_balance_start' : fields.related('cash_register_id', 'balance_start',
+ type='float',
+ digits_compute=dp.get_precision('Account'),
+ string="Starting Balance",
+ readonly=True),
+ 'cash_register_total_entry_encoding' : fields.related('cash_register_id', 'total_entry_encoding',
+ string='Total Cash Transaction',
+ readonly=True),
+ 'cash_register_balance_end' : fields.related('cash_register_id', 'balance_end',
+ type='float',
+ digits_compute=dp.get_precision('Account'),
+ string="Computed Balance",
+ readonly=True),
+ 'cash_register_balance_end_cash' : fields.related('cash_register_id', 'balance_end_cash',
+ string='Closing Balance',
+ help="Closing balance based on cashBox",
+ readonly=True),
+ 'cash_register_difference' : fields.related('cash_register_id', 'difference',
+ type='float',
+ string='Difference',
+ readonly=True),
'journal_ids' : fields.related('config_id', 'journal_ids',
type='many2many',
@@ -259,6 +293,7 @@ class pos_session(osv.osv):
'order_ids' : fields.one2many('pos.order', 'session_id', 'Orders'),
'statement_ids' : fields.one2many('account.bank.statement', 'pos_session_id', 'Bank Statement', readonly=True),
+ 'show_closing_control': fields.function(_compute_show_closing_control, method=True, type='boolean', string='Show Closing Control Button'),
}
_defaults = {
@@ -290,7 +325,7 @@ class pos_session(osv.osv):
for session in self.browse(cr, uid, ids, context=None):
domain = [
('state', '!=', 'closed'),
- ('config_id', '=', session.config.id),
+ ('config_id', '=', session.config_id.id),
('id', '!=', session.id),
]
@@ -301,7 +336,7 @@ class pos_session(osv.osv):
return True
- _constraints = [
+ _constraints2 = [
(_check_unicity, "You can create a new session, you have an existing and non closed session !", ['user_id', 'state']),
(_check_pos_config, "There is an existing session for the PoS Config", ['config_id']),
]
@@ -373,6 +408,18 @@ class pos_session(osv.osv):
self._confirm_orders(cr, uid, ids, context=context)
return self.write(cr, uid, ids, {'state' : 'closed'}, context=context)
+ def has_opening_control(self, cr, uid, ids, context=None):
+ return any(journal.opening_control == True
+ for session in self.browse(cr, uid, ids, context=context)
+ for journal in session.config_id.journal_ids)
+
+ def has_closing_control(self, cr, uid, ids, context=None):
+ result = any(journal.closing_control == True
+ for session in self.browse(cr, uid, ids, context=context)
+ for journal in session.config_id.journal_ids)
+ print "result: %r" % (result,)
+ return result
+
def _confirm_orders(self, cr, uid, ids, context=None):
wf_service = netsvc.LocalService("workflow")
diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml
index d28b9045630..58e26c5f05a 100644
--- a/addons/point_of_sale/point_of_sale_view.xml
+++ b/addons/point_of_sale/point_of_sale_view.xml
@@ -884,7 +884,7 @@
-
+
@@ -942,14 +942,20 @@
+
+
+
-
+
-
-
+
+
+
diff --git a/addons/point_of_sale/point_of_sale_workflow.xml b/addons/point_of_sale/point_of_sale_workflow.xml
index d37e71014ed..9a73e5e7f43 100644
--- a/addons/point_of_sale/point_of_sale_workflow.xml
+++ b/addons/point_of_sale/point_of_sale_workflow.xml
@@ -122,6 +122,14 @@
open
+
@@ -129,6 +137,15 @@
cashbox_control
+
+