22# For license information, please see license.txt
33
44
5+ from pypika import Order
6+
57import frappe
68from 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