feat: add grand total field
This commit is contained in:
parent
444313bdfc
commit
a1d354e147
@ -112,9 +112,6 @@ cur_frm.cscript.calculate_total = function(doc){
|
||||
doc.total_claimed_amount += d.amount;
|
||||
doc.total_sanctioned_amount += d.sanctioned_amount;
|
||||
});
|
||||
|
||||
refresh_field("total_claimed_amount");
|
||||
refresh_field('total_sanctioned_amount');
|
||||
};
|
||||
|
||||
cur_frm.cscript.calculate_total_amount = function(doc,cdt,cdn){
|
||||
@ -157,14 +154,14 @@ frappe.ui.form.on("Expense Claim", {
|
||||
}
|
||||
};
|
||||
});
|
||||
// frm.set_query("taxes", "account_head", function(doc) {
|
||||
// return {
|
||||
// filters: [
|
||||
// ['docstatus', '=', 1],
|
||||
// ['company', '=', doc.company]
|
||||
// ]
|
||||
// };
|
||||
// });
|
||||
frm.set_query("account_head", "taxes", function(doc) {
|
||||
return {
|
||||
filters: [
|
||||
['company', '=', doc.company],
|
||||
['account_type', 'in', ["Tax", "Chargeable", "Income Account", "Expenses Included In Valuation"]]
|
||||
]
|
||||
};
|
||||
});
|
||||
},
|
||||
|
||||
onload: function(frm) {
|
||||
@ -205,6 +202,12 @@ frappe.ui.form.on("Expense Claim", {
|
||||
}
|
||||
},
|
||||
|
||||
calculate_grand_total: function(frm) {
|
||||
var grand_total = flt(frm.doc.total_sanctioned_amount) + flt(frm.doc.total_taxes_and_charges) - flt(frm.doc.total_advance_amount);
|
||||
frm.set_value("grand_total", grand_total);
|
||||
frm.refresh_fields();
|
||||
},
|
||||
|
||||
make_payment_entry: function(frm) {
|
||||
var method = "erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry";
|
||||
if(frm.doc.__onload && frm.doc.__onload.make_payment_via_journal_entry) {
|
||||
@ -319,6 +322,7 @@ frappe.ui.form.on("Expense Claim Detail", {
|
||||
var doc = frm.doc;
|
||||
cur_frm.cscript.calculate_total(doc,cdt,cdn);
|
||||
frm.trigger("get_taxes");
|
||||
frm.trigger("calculate_grand_total");
|
||||
}
|
||||
});
|
||||
|
||||
@ -345,6 +349,7 @@ frappe.ui.form.on("Expense Claim Advance", {
|
||||
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);
|
||||
frm.trigger('calculate_grand_total');
|
||||
refresh_field("advances");
|
||||
}
|
||||
}
|
||||
@ -370,27 +375,30 @@ frappe.ui.form.on("Expense Taxes and Charges", {
|
||||
}
|
||||
},
|
||||
|
||||
calculate_total: function(frm, cdt, cdn) {
|
||||
calculate_total_tax: function(frm, cdt, cdn) {
|
||||
var child = locals[cdt][cdn];
|
||||
child.total = flt(frm.doc.total_sanctioned_amount) + flt(child.tax_amount);
|
||||
frm.trigger("calculate_tax_amount", cdt, cdn);
|
||||
},
|
||||
|
||||
refresh_field("taxes");
|
||||
calculate_tax_amount: function(frm) {
|
||||
frm.doc.total_taxes_and_charges = 0;
|
||||
(frm.doc.taxes || []).forEach(function(d) {
|
||||
frm.doc.total_taxes_and_charges += d.tax_amount;
|
||||
});
|
||||
frm.trigger("calculate_grand_total")
|
||||
},
|
||||
|
||||
rate: function(frm, cdt, cdn) {
|
||||
var child = locals[cdt][cdn];
|
||||
if(!child.amount) {
|
||||
child.tax_amount = flt(frm.doc.total_sanctioned_amount) * (flt(child.rate)/100);
|
||||
refresh_field("taxes");
|
||||
}
|
||||
frm.trigger("calculate_total", cdt, cdn)
|
||||
frm.trigger("calculate_total_tax", cdt, cdn)
|
||||
},
|
||||
|
||||
tax_amount: function(frm, cdt, cdn) {
|
||||
var child = locals[cdt][cdn];
|
||||
child.rate = flt(child.tax_amount/frm.doc.total_sanctioned_amount) * 100;
|
||||
frm.trigger("calculate_total", cdt, cdn)
|
||||
refresh_field("taxes");
|
||||
frm.trigger("calculate_total_tax", cdt, cdn)
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -19,10 +19,13 @@
|
||||
"sb1",
|
||||
"taxes",
|
||||
"transactions_section",
|
||||
"total_tax_amount",
|
||||
"total_amount_reimbursed",
|
||||
"total_sanctioned_amount",
|
||||
"total_claimed_amount",
|
||||
"total_advance_amount",
|
||||
"column_break_17",
|
||||
"total_amount_reimbursed",
|
||||
"total_taxes_and_charges",
|
||||
"grand_total",
|
||||
"section_break_16",
|
||||
"posting_date",
|
||||
"vehicle_log",
|
||||
@ -44,8 +47,7 @@
|
||||
"status",
|
||||
"amended_from",
|
||||
"advance_payments",
|
||||
"advances",
|
||||
"total_advance_amount"
|
||||
"advances"
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
@ -122,7 +124,6 @@
|
||||
{
|
||||
"fieldname": "total_sanctioned_amount",
|
||||
"fieldtype": "Currency",
|
||||
"in_list_view": 1,
|
||||
"label": "Total Sanctioned Amount",
|
||||
"no_copy": 1,
|
||||
"oldfieldname": "total_sanctioned_amount",
|
||||
@ -337,9 +338,21 @@
|
||||
"label": "Transactions"
|
||||
},
|
||||
{
|
||||
"fieldname": "total_tax_amount",
|
||||
"fieldname": "grand_total",
|
||||
"fieldtype": "Currency",
|
||||
"label": "Total Tax Amount",
|
||||
"in_list_view": 1,
|
||||
"label": "Grand Total",
|
||||
"options": "Company:company:default_currency",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break_17",
|
||||
"fieldtype": "Column Break"
|
||||
},
|
||||
{
|
||||
"fieldname": "total_taxes_and_charges",
|
||||
"fieldtype": "Currency",
|
||||
"label": "Total Taxes and Charges",
|
||||
"options": "Company:company:default_currency",
|
||||
"read_only": 1
|
||||
}
|
||||
@ -347,7 +360,7 @@
|
||||
"icon": "fa fa-money",
|
||||
"idx": 1,
|
||||
"is_submittable": 1,
|
||||
"modified": "2019-06-12 12:32:13.775009",
|
||||
"modified": "2019-06-12 15:35:09.092603",
|
||||
"modified_by": "Administrator",
|
||||
"module": "HR",
|
||||
"name": "Expense Claim",
|
||||
|
@ -104,15 +104,13 @@ class ExpenseClaim(AccountsController):
|
||||
gl_entry = []
|
||||
self.validate_account_details()
|
||||
|
||||
payable_amount = flt(self.net_total) - flt(self.total_advance_amount)
|
||||
|
||||
# payable entry
|
||||
if payable_amount:
|
||||
if self.grand_total:
|
||||
gl_entry.append(
|
||||
self.get_gl_dict({
|
||||
"account": self.payable_account,
|
||||
"credit": payable_amount,
|
||||
"credit_in_account_currency": payable_amount,
|
||||
"credit": self.grand_total,
|
||||
"credit_in_account_currency": self.grand_total,
|
||||
"against": ",".join([d.default_account for d in self.expenses]),
|
||||
"party_type": "Employee",
|
||||
"party": self.employee,
|
||||
@ -146,15 +144,16 @@ class ExpenseClaim(AccountsController):
|
||||
"against_voucher": self.name
|
||||
})
|
||||
)
|
||||
self.add_tax_gl_entries(gl_entry)
|
||||
|
||||
if self.is_paid and payable_amount:
|
||||
if self.is_paid and self.grand_total:
|
||||
# payment entry
|
||||
payment_account = get_bank_cash_account(self.mode_of_payment, self.company).get("account")
|
||||
gl_entry.append(
|
||||
self.get_gl_dict({
|
||||
"account": payment_account,
|
||||
"credit": payable_amount,
|
||||
"credit_in_account_currency": payable_amount,
|
||||
"credit": self.grand_total,
|
||||
"credit_in_account_currency": self.grand_total,
|
||||
"against": self.employee
|
||||
})
|
||||
)
|
||||
@ -165,15 +164,13 @@ class ExpenseClaim(AccountsController):
|
||||
"party_type": "Employee",
|
||||
"party": self.employee,
|
||||
"against": payment_account,
|
||||
"debit": payable_amount,
|
||||
"debit_in_account_currency": payable_amount,
|
||||
"debit": self.grand_total,
|
||||
"debit_in_account_currency": self.grand_total,
|
||||
"against_voucher": self.name,
|
||||
"against_voucher_type": self.doctype,
|
||||
})
|
||||
)
|
||||
|
||||
self.add_tax_gl_entries(gl_entry)
|
||||
|
||||
return gl_entry
|
||||
|
||||
def add_tax_gl_entries(self, gl_entries):
|
||||
@ -184,11 +181,12 @@ class ExpenseClaim(AccountsController):
|
||||
self.get_gl_dict({
|
||||
"account": tax.account_head,
|
||||
"debit": tax.tax_amount,
|
||||
"debit_in_account_currency": tax.tax_amount,
|
||||
"against": self.employee,
|
||||
"cost_center": self.cost_center,
|
||||
"against_voucher_type": self.doctype,
|
||||
"against_voucher": self.name
|
||||
}, account_currency)
|
||||
})
|
||||
)
|
||||
|
||||
def validate_account_details(self):
|
||||
@ -213,13 +211,15 @@ class ExpenseClaim(AccountsController):
|
||||
self.total_sanctioned_amount += flt(d.sanctioned_amount)
|
||||
|
||||
def calculate_taxes(self):
|
||||
self.total_taxes_and_charges = 0
|
||||
for tax in self.taxes:
|
||||
if tax.rate:
|
||||
tax.tax_amount = flt(self.total_sanctioned_amount) * flt(tax.rate/100)
|
||||
if tax.tax_amount:
|
||||
tax.rate = flt(tax.tax_amount)/flt(self.total_sanctioned_amount) * 100
|
||||
|
||||
tax.total = flt(tax.tax_amount) + flt(self.total_sanctioned_amount)
|
||||
self.net_total += tax.total
|
||||
self.total_taxes_and_charges += flt(tax.tax_amount)
|
||||
|
||||
self.grand_total = flt(self.total_sanctioned_amount) + flt(self.total_taxes_and_charges) - flt(self.total_advance_amount)
|
||||
|
||||
def update_task(self):
|
||||
task = frappe.get_doc("Task", self.task)
|
||||
|
Loading…
x
Reference in New Issue
Block a user