Fetch employee advance in expense claim on adding it manually (#12069)
* added trigger on manually adding an advance
* improvised the query
* codacy fix
* updated
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.js b/erpnext/hr/doctype/expense_claim/expense_claim.js
index c6333db..65d1065 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.js
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.js
@@ -168,6 +168,16 @@
frm.trigger("set_query_for_payable_account");
frm.add_fetch("company", "cost_center", "cost_center");
frm.add_fetch("company", "default_payable_account", "payable_account");
+ frm.set_query("employee_advance", "advances", function(doc) {
+ return {
+ filters: [
+ ['docstatus', '=', 1],
+ ['employee', '=', doc.employee],
+ ['paid_amount', '>', 0],
+ ['paid_amount', '>', 'claimed_amount']
+ ]
+ };
+ });
},
refresh: function(frm) {
@@ -294,10 +304,41 @@
}
});
+frappe.ui.form.on("Expense Claim Advance", {
+ employee_advance: function(frm, cdt, cdn) {
+ var child = locals[cdt][cdn];
+ if(!frm.doc.employee){
+ frappe.msgprint('Select an employee to get the employee advance.');
+ frm.doc.advances = [];
+ refresh_field("advances");
+ }
+ else {
+ return frappe.call({
+ method: "erpnext.hr.doctype.expense_claim.expense_claim.get_advances",
+ args: {
+ employee: frm.doc.employee,
+ advance_id: child.employee_advance
+ },
+ callback: function(r, rt) {
+ if(r.message) {
+ child.employee_advance = r.message[0].name;
+ child.posting_date = r.message[0].posting_date;
+ child.advance_account = r.message[0].advance_account;
+ child.advance_paid = r.message[0].paid_amount;
+ child.unclaimed_amount = flt(r.message[0].paid_amount) - flt(r.message[0].claimed_amount);
+ child.allocated_amount = flt(r.message[0].paid_amount) - flt(r.message[0].claimed_amount);
+ refresh_field("advances");
+ }
+ }
+ });
+ }
+ }
+});
+
cur_frm.fields_dict['task'].get_query = function(doc) {
return {
filters:{
'project': doc.project
}
};
-};
+};
\ No newline at end of file
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.py b/erpnext/hr/doctype/expense_claim/expense_claim.py
index d27675c..9462211 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.py
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.py
@@ -310,9 +310,16 @@
}
@frappe.whitelist()
-def get_advances(employee):
+def get_advances(employee, advance_id=None):
+ if not advance_id:
+ condition = 'docstatus=1 and employee="{0}" and paid_amount > 0 and paid_amount > claimed_amount'.format(frappe.db.escape(employee))
+ else:
+ condition = 'name="{0}"'.format(frappe.db.escape(advance_id))
+
return frappe.db.sql("""
- select name, posting_date, paid_amount, claimed_amount, advance_account
- from `tabEmployee Advance`
- where docstatus=1 and employee=%s and paid_amount > 0 and paid_amount > claimed_amount
- """, employee, as_dict=1)
\ No newline at end of file
+ select
+ name, posting_date, paid_amount, claimed_amount, advance_account
+ from
+ `tabEmployee Advance`
+ where {0}
+ """.format(condition), as_dict=1)
\ No newline at end of file