Skip to content

Commit 58ef03b

Browse files
authored
Merge pull request #4100 from frappe/mergify/bp/version-16-hotfix/pr-4043
feat: add return amount column in employee advance summary report (backport #4043)
2 parents 1b09631 + a20e08e commit 58ef03b

File tree

1 file changed

+41
-20
lines changed

1 file changed

+41
-20
lines changed

hrms/hr/report/employee_advance_summary/employee_advance_summary.py

Lines changed: 41 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
# For license information, please see license.txt
33

44

5+
from pypika import Order
6+
57
import frappe
68
from frappe import _, msgprint
79

@@ -27,6 +29,7 @@ def execute(filters=None):
2729
advance.advance_amount,
2830
advance.paid_amount,
2931
advance.claimed_amount,
32+
advance.return_amount,
3033
advance.status,
3134
advance.currency,
3235
]
@@ -80,6 +83,13 @@ def get_columns():
8083
"options": "currency",
8184
"width": 120,
8285
},
86+
{
87+
"label": _("Returned Amount"),
88+
"fieldname": "return_amount",
89+
"fieldtype": "Currency",
90+
"options": "currency",
91+
"width": 120,
92+
},
8393
{"label": _("Status"), "fieldname": "status", "fieldtype": "Data", "width": 120},
8494
{
8595
"label": _("Currency"),
@@ -92,31 +102,42 @@ def get_columns():
92102
]
93103

94104

95-
def get_conditions(filters):
96-
conditions = ""
105+
def get_advances(filters):
106+
EmployeeAdvance = frappe.qb.DocType("Employee Advance")
107+
108+
query = (
109+
frappe.qb.from_(EmployeeAdvance)
110+
.select(
111+
EmployeeAdvance.name,
112+
EmployeeAdvance.employee,
113+
EmployeeAdvance.paid_amount,
114+
EmployeeAdvance.status,
115+
EmployeeAdvance.advance_amount,
116+
EmployeeAdvance.claimed_amount,
117+
EmployeeAdvance.return_amount,
118+
EmployeeAdvance.company,
119+
EmployeeAdvance.posting_date,
120+
EmployeeAdvance.purpose,
121+
EmployeeAdvance.currency,
122+
)
123+
.where(EmployeeAdvance.docstatus < 2)
124+
)
97125

98126
if filters.get("employee"):
99-
conditions += "and employee = %(employee)s"
127+
query = query.where(EmployeeAdvance.employee == filters.employee)
128+
100129
if filters.get("company"):
101-
conditions += " and company = %(company)s"
130+
query = query.where(EmployeeAdvance.company == filters.company)
131+
102132
if filters.get("status"):
103-
conditions += " and status = %(status)s"
104-
if filters.get("from_date"):
105-
conditions += " and posting_date>=%(from_date)s"
106-
if filters.get("to_date"):
107-
conditions += " and posting_date<=%(to_date)s"
133+
query = query.where(EmployeeAdvance.status == filters.status)
108134

109-
return conditions
135+
if filters.get("from_date"):
136+
query = query.where(EmployeeAdvance.posting_date >= filters.from_date)
110137

138+
if filters.get("to_date"):
139+
query = query.where(EmployeeAdvance.posting_date <= filters.to_date)
111140

112-
def get_advances(filters):
113-
conditions = get_conditions(filters)
114-
return frappe.db.sql(
115-
"""select name, employee, paid_amount, status, advance_amount, claimed_amount, company,
116-
posting_date, purpose, currency
117-
from `tabEmployee Advance`
118-
where docstatus<2 %s order by posting_date, name desc"""
119-
% conditions,
120-
filters,
121-
as_dict=1,
141+
return query.orderby(EmployeeAdvance.posting_date, EmployeeAdvance.name, order=Order.desc).run(
142+
as_dict=True
122143
)

0 commit comments

Comments
 (0)