Merge pull request #23666 from marination/payment-reco-mandatory-check
fix: Payment Reconciliation client side validations
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
index 355fe96..6b07197 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
@@ -37,6 +37,11 @@
erpnext.accounts.PaymentReconciliationController = frappe.ui.form.Controller.extend({
onload: function() {
var me = this;
+
+ this.frm.set_query("party", function() {
+ check_mandatory(me.frm);
+ });
+
this.frm.set_query("party_type", function() {
return {
"filters": {
@@ -46,37 +51,39 @@
});
this.frm.set_query('receivable_payable_account', function() {
- if(!me.frm.doc.company || !me.frm.doc.party_type) {
- frappe.msgprint(__("Please select Company and Party Type first"));
- } else {
- return{
- filters: {
- "company": me.frm.doc.company,
- "is_group": 0,
- "account_type": frappe.boot.party_account_types[me.frm.doc.party_type]
- }
- };
- }
-
+ check_mandatory(me.frm);
+ return {
+ filters: {
+ "company": me.frm.doc.company,
+ "is_group": 0,
+ "account_type": frappe.boot.party_account_types[me.frm.doc.party_type]
+ }
+ };
});
this.frm.set_query('bank_cash_account', function() {
- if(!me.frm.doc.company) {
- frappe.msgprint(__("Please select Company first"));
- } else {
- return{
- filters:[
- ['Account', 'company', '=', me.frm.doc.company],
- ['Account', 'is_group', '=', 0],
- ['Account', 'account_type', 'in', ['Bank', 'Cash']]
- ]
- };
- }
+ check_mandatory(me.frm, true);
+ return {
+ filters:[
+ ['Account', 'company', '=', me.frm.doc.company],
+ ['Account', 'is_group', '=', 0],
+ ['Account', 'account_type', 'in', ['Bank', 'Cash']]
+ ]
+ };
});
this.frm.set_value('party_type', '');
this.frm.set_value('party', '');
this.frm.set_value('receivable_payable_account', '');
+
+ var check_mandatory = (frm, only_company=false) => {
+ var title = __("Mandatory");
+ if (only_company && !frm.doc.company) {
+ frappe.throw({message: __("Please Select a Company First"), title: title});
+ } else if (!frm.doc.company || !frm.doc.party_type) {
+ frappe.throw({message: __("Please Select Both Company and Party Type First"), title: title});
+ }
+ };
},
refresh: function() {
@@ -90,7 +97,7 @@
party: function() {
var me = this
- if(!me.frm.doc.receivable_payable_account && me.frm.doc.party_type && me.frm.doc.party) {
+ if (!me.frm.doc.receivable_payable_account && me.frm.doc.party_type && me.frm.doc.party) {
return frappe.call({
method: "erpnext.accounts.party.get_party_account",
args: {
@@ -99,7 +106,7 @@
party: me.frm.doc.party
},
callback: function(r) {
- if(!r.exc && r.message) {
+ if (!r.exc && r.message) {
me.frm.set_value("receivable_payable_account", r.message);
}
}
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index 2f800bb..e8d3cd3 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -203,7 +203,7 @@
return out
@frappe.whitelist()
-def get_party_account(party_type, party, company):
+def get_party_account(party_type, party, company=None):
"""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 Group),