fix: multiple issues in Payment Request (#42427)
* fix: multiple issues in Payment Request
* chore: minor changes
* fix: remove bug
* fix: replace `round` with `flt`
* fix: update `set_advance_payment_status()` logic
* fix: removed bug of `set_advance_payment_status`
* fix: changes as per review
* refactor: replace sql query of `matched_payment_requests` to query builder
* fix: replace `locals` with `get_doc` in set_query
* fix: changes during review
* fix: minor review changes
* fix: remove unnecessary code for setting payment entry received amount
* fix: logic for ser payment_request if PE made from transaction
* fix: Use rounded total to make Payment Request from `Sales Invoice` or `Purchase Invoice`
* refactor: enhance logic of `set_open_payment_requests_to_references`
* fix: added one optional arg `created_from_payment_request`
* fix: handle multiple allocation of PR at PE's reference
* fix: logic for PR if outstanding docs fetch
* fix: formatted Link field for `Payment Request` for PE's references
* fix: replace `get_all()` with `get_list()` for getting Payment Request for Link field
* fix: replace `get_all()` with `get_list()` for getting Payment Request for Link field
* chore: format `payment_entry.js` file
* style: Show preview popup of `Payment Request`
* fix: remove minor bug
* fix: add virtual field for Payment Term and Request `outstanding_amount` in PE's reference
* fix: get outstanding amount in PE's reference on realtime
* fix: move allocation of allocated_amount to server side (no change)
* fix: some minor changes to allocation
* fix: Split `Payment Request` if PE is created from PR and there are `Payment Terms`
* fix: minor logic changes
* fix: Allocation of allocated_amount if `paid_amount` is changes
* fix: improve logic of allocation
* fix: set matched payment request if unset
* fix: minor changes
* fix: Allocate single Payment Request if PE created from PR
* fix: improve code logic
* fix: Removed duplication code
* fix: proper message title
* refactor: Rename method of Allocation Amount to References
* refactor: Changing `grand_total` description based on `party_type`
* refactor: update Payment Request
* fix: Remove virtual property of payment_term_oustanding from references
* fix: fetch party account currency for creating payment request
* fix: use transaction currency as base in payment request
* fix: party amount for creating payment entry
* fix: allow for proportional amount paid by bank
* fix: Changed field order in Payment Request
* fix: Minor refactor in Payment Entry Reference table data
* test: Added test cases for allow Payment at `Partially Paid` status for PR
* test: Update partial paid status test case
* test: Update test case for same currency PR
* refactor: Wider the `msgprint` dialog for after save PE
* test: Update PR test cases
* chore: Remove dirty lines
* test: Checking `Advance Payment Status`
* fix: formatting update
* fix: Use `flt` where doing subtraction
* test: PR test case with Payment Term for same currency
* fix: remove redundant `flt`
* test: Add test cases for PR
---------
Co-authored-by: Sagar Vora <sagar@resilient.tech>
(cherry picked from commit ea69ba7cd8)
# Conflicts:
# erpnext/accounts/doctype/payment_entry/payment_entry.js
# erpnext/accounts/doctype/payment_entry/payment_entry.py
# erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json
# erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.py
# erpnext/accounts/doctype/payment_request/payment_request.json
# erpnext/accounts/doctype/payment_request/payment_request.py
This commit is contained in:
committed by
Mergify
parent
31ecdb2104
commit
ef52be2f17
@@ -1844,7 +1844,38 @@ class AccountsController(TransactionBase):
|
||||
).format(formatted_advance_paid, self.name, formatted_order_total)
|
||||
)
|
||||
|
||||
frappe.db.set_value(self.doctype, self.name, "advance_paid", advance_paid)
|
||||
self.db_set("advance_paid", advance_paid)
|
||||
|
||||
self.set_advance_payment_status()
|
||||
|
||||
def set_advance_payment_status(self):
|
||||
new_status = None
|
||||
|
||||
paid_amount = frappe.get_value(
|
||||
doctype="Payment Request",
|
||||
filters={
|
||||
"reference_doctype": self.doctype,
|
||||
"reference_name": self.name,
|
||||
"docstatus": 1,
|
||||
},
|
||||
fieldname="sum(grand_total - outstanding_amount)",
|
||||
)
|
||||
|
||||
if not paid_amount:
|
||||
if self.doctype in frappe.get_hooks("advance_payment_receivable_doctypes"):
|
||||
new_status = "Not Requested" if paid_amount is None else "Requested"
|
||||
elif self.doctype in frappe.get_hooks("advance_payment_payable_doctypes"):
|
||||
new_status = "Not Initiated" if paid_amount is None else "Initiated"
|
||||
else:
|
||||
total_amount = self.get("rounded_total") or self.get("grand_total")
|
||||
new_status = "Fully Paid" if paid_amount == total_amount else "Partially Paid"
|
||||
|
||||
if new_status == self.advance_payment_status:
|
||||
return
|
||||
|
||||
self.db_set("advance_payment_status", new_status, update_modified=False)
|
||||
self.set_status(update=True)
|
||||
self.notify_update()
|
||||
|
||||
@property
|
||||
def company_abbr(self):
|
||||
|
||||
Reference in New Issue
Block a user