feat: add computed cash_difference field to pos.session and display in tree view

This commit is contained in:
Suherdy Yacob 2026-06-13 22:40:36 +07:00
parent 6518ac6250
commit 24e108e903
3 changed files with 33 additions and 1 deletions

View File

@ -5,7 +5,9 @@
"category": "Point of Sale", "category": "Point of Sale",
"author": "Suherdy Yacob", "author": "Suherdy Yacob",
"depends": ["point_of_sale"], "depends": ["point_of_sale"],
"data": [], "data": [
"views/pos_session_views.xml",
],
"assets": { "assets": {
"point_of_sale.assets": [ "point_of_sale.assets": [
"pos_cash_opening_adjustment/static/src/xml/closing_popup.xml", "pos_cash_opening_adjustment/static/src/xml/closing_popup.xml",

View File

@ -43,6 +43,12 @@ class PosSession(models.Model):
readonly=True, readonly=True,
help="Difference between expected and counted cash at session closing.", help="Difference between expected and counted cash at session closing.",
) )
cash_difference = fields.Monetary(
string="Cash Different",
currency_field="currency_id",
compute="_compute_cash_difference",
help="The difference between the expected cash and the counted cash.",
)
@api.depends("opening_cash_expected", "opening_cash_counted") @api.depends("opening_cash_expected", "opening_cash_counted")
def _compute_opening_cash_difference(self): def _compute_opening_cash_difference(self):
@ -51,6 +57,14 @@ class PosSession(models.Model):
counted = session.opening_cash_counted or 0.0 counted = session.opening_cash_counted or 0.0
session.opening_cash_difference = counted - expected session.opening_cash_difference = counted - expected
@api.depends("state", "closing_cash_difference", "cash_register_difference")
def _compute_cash_difference(self):
for session in self:
if session.state == "closed":
session.cash_difference = session.closing_cash_difference or 0.0
else:
session.cash_difference = session.cash_register_difference or 0.0
def action_pos_session_open(self): def action_pos_session_open(self):
res = super().action_pos_session_open() res = super().action_pos_session_open()
for session in self: for session in self:

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--
Inherit the pos.session list/tree view to add "Cash Different" field.
-->
<record id="view_pos_session_tree_inherit" model="ir.ui.view">
<field name="name">pos.session.tree.inherit.cash.difference</field>
<field name="model">pos.session</field>
<field name="inherit_id" ref="point_of_sale.view_pos_session_tree"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='cash_register_balance_end']" position="after">
<field name="cash_difference" optional="show"/>
</xpath>
</field>
</record>
</odoo>