diff --git a/addons/point_of_sale/wizard/__init__.py b/addons/point_of_sale/wizard/__init__.py
index d85d8a81c86..16789e5d2ae 100644
--- a/addons/point_of_sale/wizard/__init__.py
+++ b/addons/point_of_sale/wizard/__init__.py
@@ -3,5 +3,4 @@
from . import pos_box
from . import pos_details
-from . import pos_open_statement
from . import pos_payment
diff --git a/addons/point_of_sale/wizard/pos_open_statement.xml b/addons/point_of_sale/wizard/pos_open_statement.xml
deleted file mode 100644
index 506a42667b3..00000000000
--- a/addons/point_of_sale/wizard/pos_open_statement.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
- pos.open.statement.form
- pos.open.statement
-
-
-
-
-
-
-
- Open Cash Register
- ir.actions.act_window
- pos.open.statement
- form
- new
-
-
diff --git a/addons/point_of_sale/wizard/pos_payment.py b/addons/point_of_sale/wizard/pos_payment.py
index 72998e7a3b6..f028ea8e83f 100644
--- a/addons/point_of_sale/wizard/pos_payment.py
+++ b/addons/point_of_sale/wizard/pos_payment.py
@@ -7,40 +7,33 @@ from odoo.tools import float_is_zero
class PosMakePayment(models.TransientModel):
_name = 'pos.make.payment'
- _description = 'Point of Sale Payment'
+ _description = 'Point of Sale Make Payment Wizard'
- def _default_session(self):
+ def _default_config(self):
active_id = self.env.context.get('active_id')
if active_id:
- return self.env['pos.order'].browse(active_id).session_id
- return False
-
- def _default_journal(self):
- active_id = self.env.context.get('active_id')
- if active_id:
- session = self.env['pos.order'].browse(active_id).session_id
- return session.config_id.journal_ids and session.config_id.journal_ids.ids[0] or False
+ return self.env['pos.order'].browse(active_id).session_id.config_id
return False
def _default_amount(self):
active_id = self.env.context.get('active_id')
if active_id:
order = self.env['pos.order'].browse(active_id)
- return (order.amount_total - order.amount_paid)
+ return order.amount_total - order.amount_paid
return False
- session_id = fields.Many2one('pos.session', required=True, default=_default_session)
- journal_id = fields.Many2one('account.journal', string='Payment Mode', required=True, default=_default_journal)
- amount = fields.Float(digits=0, required=True, default=_default_amount)
- payment_name = fields.Char(string='Payment Reference')
- payment_date = fields.Date(string='Payment Date', required=True, default=lambda self: fields.Date.context_today(self))
+ def _default_payment_method(self):
+ active_id = self.env.context.get('active_id')
+ if active_id:
+ order_id = self.env['pos.order'].browse(active_id)
+ return order_id.session_id.payment_method_ids.sorted(lambda pm: pm.is_cash_count, reverse=True)[:1]
+ return False
- @api.onchange('session_id')
- def _on_change_session(self):
- if self.session_id:
- return {
- 'domain': {'journal_id': [('id', 'in', self.session_id.config_id.journal_ids.ids)]}
- }
+ config_id = fields.Many2one('pos.config', string='Point of Sale Configuration', required=True, default=_default_config)
+ amount = fields.Float(digits=0, required=True, default=_default_amount)
+ payment_method_id = fields.Many2one('pos.payment.method', string='Payment Method', required=True, default=_default_payment_method)
+ payment_name = fields.Char(string='Payment Reference')
+ payment_date = fields.Datetime(string='Payment Date', required=True, default=lambda self: fields.Datetime.now())
def check(self):
"""Check the order:
@@ -48,18 +41,23 @@ class PosMakePayment(models.TransientModel):
if the order is paid print ticket.
"""
self.ensure_one()
+
order = self.env['pos.order'].browse(self.env.context.get('active_id', False))
- currency = order.pricelist_id.currency_id
- amount = order.amount_total - order.amount_paid
- data = self.read()[0]
- # add_payment expect a journal key
- data['journal'] = data['journal_id'][0]
- data['amount'] = currency.round(data['amount']) if currency else data['amount']
- if not float_is_zero(amount, precision_rounding=currency.rounding or 0.01):
- order.add_payment(data)
- if order.test_paid():
+ currency = order.currency_id
+
+ init_data = self.read()[0]
+ if not float_is_zero(init_data['amount'], precision_rounding=currency.rounding):
+ order.add_payment({
+ 'pos_order_id': order.id,
+ 'amount': currency.round(init_data['amount']) if currency else init_data['amount'],
+ 'name': init_data['payment_name'],
+ 'payment_method_id': init_data['payment_method_id'][0],
+ })
+
+ if float_is_zero(order.amount_total - order.amount_paid, precision_rounding=currency.rounding):
order.action_pos_order_paid()
return {'type': 'ir.actions.act_window_close'}
+
return self.launch_payment()
def launch_payment(self):
@@ -73,4 +71,3 @@ class PosMakePayment(models.TransientModel):
'type': 'ir.actions.act_window',
'context': self.env.context,
}
-
diff --git a/addons/point_of_sale/wizard/pos_payment.xml b/addons/point_of_sale/wizard/pos_payment.xml
index 2bdd45f3dbb..e44bb4293b5 100644
--- a/addons/point_of_sale/wizard/pos_payment.xml
+++ b/addons/point_of_sale/wizard/pos_payment.xml
@@ -6,8 +6,8 @@
-
- POS Journal
- account.journal
-
+
+ Payment Method
+ pos.payment.method
+
-
- 0
-
-
-
-
-
+
+