Merge pull request #21100 from nextchamp-saqib/payment-req-status-fix
fix: payment request status fixes
This commit is contained in:
commit
f3c44a97f0
@ -81,8 +81,13 @@ class PaymentEntry(AccountsController):
|
|||||||
self.update_advance_paid()
|
self.update_advance_paid()
|
||||||
self.update_expense_claim()
|
self.update_expense_claim()
|
||||||
self.delink_advance_entry_references()
|
self.delink_advance_entry_references()
|
||||||
|
self.set_payment_req_status()
|
||||||
self.set_status()
|
self.set_status()
|
||||||
|
|
||||||
|
def set_payment_req_status(self):
|
||||||
|
from erpnext.accounts.doctype.payment_request.payment_request import update_payment_req_status
|
||||||
|
update_payment_req_status(self, None)
|
||||||
|
|
||||||
def update_outstanding_amounts(self):
|
def update_outstanding_amounts(self):
|
||||||
self.set_missing_ref_details(force=True)
|
self.set_missing_ref_details(force=True)
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -66,6 +66,8 @@ class PaymentRequest(Document):
|
|||||||
if self.payment_request_type == 'Outward':
|
if self.payment_request_type == 'Outward':
|
||||||
self.db_set('status', 'Initiated')
|
self.db_set('status', 'Initiated')
|
||||||
return
|
return
|
||||||
|
elif self.payment_request_type == 'Inward':
|
||||||
|
self.db_set('status', 'Requested')
|
||||||
|
|
||||||
send_mail = self.payment_gateway_validation()
|
send_mail = self.payment_gateway_validation()
|
||||||
ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
|
ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
|
||||||
@ -415,16 +417,30 @@ def make_payment_entry(docname):
|
|||||||
doc = frappe.get_doc("Payment Request", docname)
|
doc = frappe.get_doc("Payment Request", docname)
|
||||||
return doc.create_payment_entry(submit=False).as_dict()
|
return doc.create_payment_entry(submit=False).as_dict()
|
||||||
|
|
||||||
def make_status_as_paid(doc, method):
|
def update_payment_req_status(doc, method):
|
||||||
|
from erpnext.accounts.doctype.payment_entry.payment_entry import get_reference_details
|
||||||
|
|
||||||
for ref in doc.references:
|
for ref in doc.references:
|
||||||
payment_request_name = frappe.db.get_value("Payment Request",
|
payment_request_name = frappe.db.get_value("Payment Request",
|
||||||
{"reference_doctype": ref.reference_doctype, "reference_name": ref.reference_name,
|
{"reference_doctype": ref.reference_doctype, "reference_name": ref.reference_name,
|
||||||
"docstatus": 1})
|
"docstatus": 1})
|
||||||
|
|
||||||
if payment_request_name:
|
if payment_request_name:
|
||||||
doc = frappe.get_doc("Payment Request", payment_request_name)
|
ref_details = get_reference_details(ref.reference_doctype, ref.reference_name, doc.party_account_currency)
|
||||||
if doc.status != "Paid":
|
pay_req_doc = frappe.get_doc('Payment Request', payment_request_name)
|
||||||
doc.db_set('status', 'Paid')
|
status = pay_req_doc.status
|
||||||
|
|
||||||
|
if status != "Paid" and not ref_details.outstanding_amount:
|
||||||
|
status = 'Paid'
|
||||||
|
elif status != "Partially Paid" and ref_details.outstanding_amount != ref_details.total_amount:
|
||||||
|
status = 'Partially Paid'
|
||||||
|
elif ref_details.outstanding_amount == ref_details.total_amount:
|
||||||
|
if pay_req_doc.payment_request_type == 'Outward':
|
||||||
|
status = 'Initiated'
|
||||||
|
elif pay_req_doc.payment_request_type == 'Inward':
|
||||||
|
status = 'Requested'
|
||||||
|
|
||||||
|
pay_req_doc.db_set('status', status)
|
||||||
frappe.db.commit()
|
frappe.db.commit()
|
||||||
|
|
||||||
def get_dummy_message(doc):
|
def get_dummy_message(doc):
|
||||||
|
@ -4,14 +4,20 @@ frappe.listview_settings['Payment Request'] = {
|
|||||||
if(doc.status == "Draft") {
|
if(doc.status == "Draft") {
|
||||||
return [__("Draft"), "darkgrey", "status,=,Draft"];
|
return [__("Draft"), "darkgrey", "status,=,Draft"];
|
||||||
}
|
}
|
||||||
|
if(doc.status == "Requested") {
|
||||||
|
return [__("Requested"), "green", "status,=,Requested"];
|
||||||
|
}
|
||||||
else if(doc.status == "Initiated") {
|
else if(doc.status == "Initiated") {
|
||||||
return [__("Initiated"), "green", "status,=,Initiated"];
|
return [__("Initiated"), "green", "status,=,Initiated"];
|
||||||
}
|
}
|
||||||
|
else if(doc.status == "Partially Paid") {
|
||||||
|
return [__("Partially Paid"), "orange", "status,=,Partially Paid"];
|
||||||
|
}
|
||||||
else if(doc.status == "Paid") {
|
else if(doc.status == "Paid") {
|
||||||
return [__("Paid"), "blue", "status,=,Paid"];
|
return [__("Paid"), "blue", "status,=,Paid"];
|
||||||
}
|
}
|
||||||
else if(doc.status == "Cancelled") {
|
else if(doc.status == "Cancelled") {
|
||||||
return [__("Cancelled"), "orange", "status,=,Cancelled"];
|
return [__("Cancelled"), "red", "status,=,Cancelled"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -101,6 +101,23 @@ class TestPaymentRequest(unittest.TestCase):
|
|||||||
self.assertEqual(expected_gle[gle.account][2], gle.credit)
|
self.assertEqual(expected_gle[gle.account][2], gle.credit)
|
||||||
self.assertEqual(expected_gle[gle.account][3], gle.against_voucher)
|
self.assertEqual(expected_gle[gle.account][3], gle.against_voucher)
|
||||||
|
|
||||||
|
def test_status(self):
|
||||||
|
si_usd = create_sales_invoice(customer="_Test Customer USD", debit_to="_Test Receivable USD - _TC",
|
||||||
|
currency="USD", conversion_rate=50)
|
||||||
|
|
||||||
|
pr = make_payment_request(dt="Sales Invoice", dn=si_usd.name, recipient_id="saurabh@erpnext.com",
|
||||||
|
mute_email=1, payment_gateway="_Test Gateway - USD", submit_doc=1, return_doc=1)
|
||||||
|
|
||||||
|
pe = pr.create_payment_entry()
|
||||||
|
pr.load_from_db()
|
||||||
|
|
||||||
|
self.assertEqual(pr.status, 'Paid')
|
||||||
|
|
||||||
|
pe.cancel()
|
||||||
|
pr.load_from_db()
|
||||||
|
|
||||||
|
self.assertEqual(pr.status, 'Requested')
|
||||||
|
|
||||||
def test_multiple_payment_entries_against_sales_order(self):
|
def test_multiple_payment_entries_against_sales_order(self):
|
||||||
# Make Sales Order, grand_total = 1000
|
# Make Sales Order, grand_total = 1000
|
||||||
so = make_sales_order()
|
so = make_sales_order()
|
||||||
|
@ -239,7 +239,7 @@ doc_events = {
|
|||||||
"on_trash": "erpnext.regional.check_deletion_permission"
|
"on_trash": "erpnext.regional.check_deletion_permission"
|
||||||
},
|
},
|
||||||
"Payment Entry": {
|
"Payment Entry": {
|
||||||
"on_submit": ["erpnext.regional.create_transaction_log", "erpnext.accounts.doctype.payment_request.payment_request.make_status_as_paid"],
|
"on_submit": ["erpnext.regional.create_transaction_log", "erpnext.accounts.doctype.payment_request.payment_request.update_payment_req_status"],
|
||||||
"on_trash": "erpnext.regional.check_deletion_permission"
|
"on_trash": "erpnext.regional.check_deletion_permission"
|
||||||
},
|
},
|
||||||
'Address': {
|
'Address': {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user