[fix] payment tool #2791
diff --git a/erpnext/accounts/doctype/payment_tool/payment_tool.js b/erpnext/accounts/doctype/payment_tool/payment_tool.js
index 0cb51d3..8ff9597 100644
--- a/erpnext/accounts/doctype/payment_tool/payment_tool.js
+++ b/erpnext/accounts/doctype/payment_tool/payment_tool.js
@@ -5,7 +5,7 @@
// Help content
frappe.ui.form.on("Payment Tool", "onload", function(frm) {
- frm.set_value("make_jv_help", '<i class="icon-hand-right"></i> '
+ frm.set_value("make_jv_help",
+ __("Note: If payment is not made against any reference, make Journal Entry manually."));
frm.set_query("party_type", function() {
@@ -36,7 +36,7 @@
});
frappe.ui.form.on("Payment Tool", "party", function(frm) {
- if(!frm.doc.party_account && frm.doc.party_type && frm.doc.party) {
+ if(frm.doc.party_type && frm.doc.party) {
return frappe.call({
method: "erpnext.accounts.party.get_party_account",
args: {
@@ -46,7 +46,7 @@
},
callback: function(r) {
if(!r.exc && r.message) {
- frappe.model.set_value("party_account", r.message);
+ frm.set_value("party_account", r.message);
erpnext.payment_tool.check_mandatory_to_set_button(frm);
}
}
@@ -62,12 +62,16 @@
erpnext.payment_tool.check_mandatory_to_set_button(frm);
});
+frappe.ui.form.on("Payment Tool", "party", function(frm) {
+ erpnext.payment_tool.check_mandatory_to_set_button(frm);
+});
+
// Fetch bank/cash account based on payment mode
frappe.ui.form.on("Payment Tool", "payment_mode", function(frm) {
return frappe.call({
method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.get_bank_cash_account",
args: {
- "mode_of_payment": frm.doc.mode_of_payment,
+ "mode_of_payment": frm.doc.payment_mode,
"company": frm.doc.company
},
callback: function(r, rt) {
@@ -81,7 +85,7 @@
erpnext.payment_tool.check_mandatory_to_set_button = function(frm) {
- if (frm.doc.company && frm.doc.party_type && frm.doc.party && frm.doc.received_or_paid) {
+ if (frm.doc.company && frm.doc.party_type && frm.doc.party && frm.doc.received_or_paid && frm.doc.party_account) {
frm.fields_dict.get_outstanding_vouchers.$input.addClass("btn-primary");
}
}
@@ -108,16 +112,18 @@
frm.fields_dict.get_outstanding_vouchers.$input.removeClass("btn-primary");
frm.fields_dict.make_journal_entry.$input.addClass("btn-primary");
- frappe.model.clear_table(frm.doc, "vouchers");
+ frm.clear_table("vouchers");
+
$.each(r.message, function(i, d) {
- var invoice_detail = frappe.model.add_child(frm.doc, "Payment Tool Detail", "vouchers");
- invoice_detail.against_voucher_type = d.voucher_type;
- invoice_detail.against_voucher_no = d.voucher_no;
- invoice_detail.total_amount = d.invoice_amount;
- invoice_detail.outstanding_amount = d.outstanding_amount;
+ var c = frm.add_child("vouchers");
+ c.against_voucher_type = d.voucher_type;
+ c.against_voucher_no = d.voucher_no;
+ c.total_amount = d.invoice_amount;
+ c.outstanding_amount = d.outstanding_amount;
});
}
refresh_field("vouchers");
+ frm.layout.refresh_sections();
erpnext.payment_tool.set_total_payment_amount(frm);
}
});
diff --git a/erpnext/accounts/doctype/payment_tool/payment_tool.json b/erpnext/accounts/doctype/payment_tool/payment_tool.json
index d8965eb..909f9c4 100644
--- a/erpnext/accounts/doctype/payment_tool/payment_tool.json
+++ b/erpnext/accounts/doctype/payment_tool/payment_tool.json
@@ -11,7 +11,7 @@
{
"fieldname": "sec_break1",
"fieldtype": "Section Break",
- "label": "",
+ "label": "Find Invoices to Match",
"permlevel": 0
},
{
@@ -44,6 +44,43 @@
},
{
"allow_on_submit": 0,
+ "fieldname": "received_or_paid",
+ "fieldtype": "Select",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "in_filter": 0,
+ "in_list_view": 1,
+ "label": "Received Or Paid",
+ "no_copy": 0,
+ "options": "Received\nPaid",
+ "permlevel": 0,
+ "print_hide": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0
+ },
+ {
+ "allow_on_submit": 0,
+ "fieldname": "col_break1",
+ "fieldtype": "Column Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Column Break 1",
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0
+ },
+ {
+ "allow_on_submit": 0,
"depends_on": "",
"fieldname": "party",
"fieldtype": "Dynamic Link",
@@ -70,26 +107,8 @@
"no_copy": 1,
"options": "Account",
"permlevel": 0,
- "read_only": 0
- },
- {
- "allow_on_submit": 0,
- "fieldname": "received_or_paid",
- "fieldtype": "Select",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 1,
- "label": "Received Or Paid",
- "no_copy": 0,
- "options": "Received\nPaid",
- "permlevel": 0,
- "print_hide": 0,
"read_only": 0,
- "report_hide": 0,
- "reqd": 1,
- "search_index": 0,
- "set_only_once": 0
+ "reqd": 1
},
{
"allow_on_submit": 0,
@@ -111,13 +130,14 @@
},
{
"allow_on_submit": 0,
- "fieldname": "col_break1",
- "fieldtype": "Column Break",
+ "depends_on": "eval:(doc.company && doc.party_type && doc.received_or_paid && doc.party_account)",
+ "fieldname": "sec_break3",
+ "fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
"in_filter": 0,
"in_list_view": 0,
- "label": "Column Break 1",
+ "label": "Set Matching Amounts",
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
@@ -129,6 +149,33 @@
},
{
"allow_on_submit": 0,
+ "fieldname": "vouchers",
+ "fieldtype": "Table",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Against Vouchers",
+ "no_copy": 0,
+ "options": "Payment Tool Detail",
+ "permlevel": 0,
+ "print_hide": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0
+ },
+ {
+ "depends_on": "eval:(doc.company && doc.party_type && doc.received_or_paid && doc.party_account)",
+ "fieldname": "section_break_19",
+ "fieldtype": "Section Break",
+ "label": "Make Payment Entry",
+ "permlevel": 0,
+ "precision": ""
+ },
+ {
+ "allow_on_submit": 0,
"fieldname": "payment_mode",
"fieldtype": "Link",
"hidden": 0,
@@ -166,22 +213,17 @@
"set_only_once": 0
},
{
- "allow_on_submit": 0,
- "fieldname": "reference_no",
- "fieldtype": "Data",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Reference No",
- "no_copy": 0,
+ "fieldname": "total_payment_amount",
+ "fieldtype": "Currency",
+ "label": "Total Payment Amount",
"permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0
+ "read_only": 1
+ },
+ {
+ "fieldname": "data_22",
+ "fieldtype": "Column Break",
+ "permlevel": 0,
+ "precision": ""
},
{
"allow_on_submit": 0,
@@ -203,14 +245,13 @@
},
{
"allow_on_submit": 0,
- "depends_on": "eval:(doc.company && doc.party_type && doc.received_or_paid && (doc.customer || doc.supplier))",
- "fieldname": "sec_break3",
- "fieldtype": "Section Break",
+ "fieldname": "reference_no",
+ "fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"in_filter": 0,
"in_list_view": 0,
- "label": "Against Voucher",
+ "label": "Reference No",
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
@@ -222,39 +263,6 @@
},
{
"allow_on_submit": 0,
- "fieldname": "vouchers",
- "fieldtype": "Table",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Against Vouchers",
- "no_copy": 0,
- "options": "Payment Tool Detail",
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0
- },
- {
- "depends_on": "eval:(doc.company && doc.party_type && doc.received_or_paid && (doc.customer || doc.supplier))",
- "fieldname": "section_break_19",
- "fieldtype": "Section Break",
- "permlevel": 0,
- "precision": ""
- },
- {
- "fieldname": "total_payment_amount",
- "fieldtype": "Currency",
- "label": "Total Payment Amount",
- "permlevel": 0,
- "read_only": 1
- },
- {
- "allow_on_submit": 0,
"fieldname": "make_journal_entry",
"fieldtype": "Button",
"hidden": 0,
@@ -272,13 +280,7 @@
"set_only_once": 0
},
{
- "fieldname": "data_22",
- "fieldtype": "Column Break",
- "permlevel": 0,
- "precision": ""
- },
- {
- "depends_on": "eval:(doc.company && doc.party_type && doc.received_or_paid && (doc.customer || doc.supplier))",
+ "depends_on": "eval:(doc.company && doc.party_type && doc.received_or_paid && doc.party_account)",
"fieldname": "section_break_21",
"fieldtype": "Section Break",
"permlevel": 0,
@@ -310,7 +312,7 @@
"is_submittable": 0,
"issingle": 1,
"istable": 0,
- "modified": "2015-02-20 05:09:19.812606",
+ "modified": "2015-02-21 03:59:08.154966",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Tool",
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index 0d9876a..79460db 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -128,22 +128,26 @@
@frappe.whitelist()
def get_party_account(company, party, party_type):
+ """Returns the account for the given `party`.
+ Will first search in party (Customer / Supplier) record, if not found,
+ will search in group (Customer Group / Supplier Type),
+ finally will return default."""
if not company:
frappe.throw(_("Please select company first."))
if party:
- party_group_doctype = "Customer Group" if party_type=="Customer" else "Supplier Type"
- party_details = frappe.db.sql("""select p.{0}, pa.account
- from `tab{1}` p left join `tabParty Account` pa on pa.parent = p.name
- where p.name = %s""".format(scrub(party_group_doctype), party_type), party)
- if party_details:
- party_group, account = party_details[0]
+ account = frappe.db.get_value("Party Account",
+ {"parenttype": party_type, "parent": party, "company": company}, "account")
if not account:
+ party_group_doctype = "Customer Group" if party_type=="Customer" else "Supplier Type"
+ group = frappe.db.get_value(party_type, party, scrub(party_group_doctype))
account = frappe.db.get_value("Party Account",
- {"parenttype": party_group_doctype, "parent": party_group, "company": company}, "account") or \
- frappe.db.get_value("Company", company,
- "default_receivable_account" if party_type=="Customer" else "default_payable_account")
+ {"parenttype": party_group_doctype, "parent": group, "company": company}, "account")
+
+ if not account:
+ default_account_name = "default_receivable_account" if party_type=="Customer" else "default_payable_account"
+ account = frappe.db.get_value("Company", company, default_account_name)
return account