From 2aa917a4c73f6f66f8d4ce5968e9455b9d6dea59 Mon Sep 17 00:00:00 2001 From: Suherdy Yacob Date: Thu, 12 Mar 2026 09:12:07 +0700 Subject: [PATCH] feat: auto-adjust positive cash differences and remove zero-amount payments during POS session validation. --- models/pos_session.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/models/pos_session.py b/models/pos_session.py index 4f0ff3f..de33c58 100755 --- a/models/pos_session.py +++ b/models/pos_session.py @@ -132,4 +132,22 @@ class PosSession(models.Model): "expected_amount": expected_total, "amount": expected_total, }) - return data \ No newline at end of file + return data + + def _validate_session(self, balancing_account=False, amount_to_balance=0, bank_payment_method_diffs=None): + for session in self: + if session.config_id.cash_control: + difference = session.cash_register_balance_end_real - session.cash_register_balance_end + if session.currency_id.compare_amounts(difference, 0.0) > 0: + session.message_post(body="Auto-adjustment: Cashier input %s overridden to expected %s to suppress positive difference of %s." % ( + session.currency_id.format(session.cash_register_balance_end_real), + session.currency_id.format(session.cash_register_balance_end), + session.currency_id.format(difference) + )) + session.write({'cash_register_balance_end_real': session.cash_register_balance_end}) + + for order in session.order_ids: + for payment in order.payment_ids: + if session.currency_id.is_zero(payment.amount): + payment.unlink() + return super(PosSession, self)._validate_session(balancing_account, amount_to_balance, bank_payment_method_diffs) \ No newline at end of file