refactor: support payment against reverse payment reconciliation
This commit is contained in:
@@ -611,9 +611,9 @@ class PaymentEntry(AccountsController):
|
|||||||
|
|
||||||
def get_valid_reference_doctypes(self):
|
def get_valid_reference_doctypes(self):
|
||||||
if self.party_type == "Customer":
|
if self.party_type == "Customer":
|
||||||
return ("Sales Order", "Sales Invoice", "Journal Entry", "Dunning")
|
return ("Sales Order", "Sales Invoice", "Journal Entry", "Dunning", "Payment Entry")
|
||||||
elif self.party_type == "Supplier":
|
elif self.party_type == "Supplier":
|
||||||
return ("Purchase Order", "Purchase Invoice", "Journal Entry")
|
return ("Purchase Order", "Purchase Invoice", "Journal Entry", "Payment Entry")
|
||||||
elif self.party_type == "Shareholder":
|
elif self.party_type == "Shareholder":
|
||||||
return ("Journal Entry",)
|
return ("Journal Entry",)
|
||||||
elif self.party_type == "Employee":
|
elif self.party_type == "Employee":
|
||||||
@@ -1279,6 +1279,7 @@ class PaymentEntry(AccountsController):
|
|||||||
"Journal Entry",
|
"Journal Entry",
|
||||||
"Sales Order",
|
"Sales Order",
|
||||||
"Purchase Order",
|
"Purchase Order",
|
||||||
|
"Payment Entry",
|
||||||
):
|
):
|
||||||
self.add_advance_gl_for_reference(gl_entries, ref)
|
self.add_advance_gl_for_reference(gl_entries, ref)
|
||||||
|
|
||||||
@@ -1301,7 +1302,9 @@ class PaymentEntry(AccountsController):
|
|||||||
if getdate(posting_date) < getdate(self.posting_date):
|
if getdate(posting_date) < getdate(self.posting_date):
|
||||||
posting_date = self.posting_date
|
posting_date = self.posting_date
|
||||||
|
|
||||||
dr_or_cr = "credit" if invoice.reference_doctype in ["Sales Invoice", "Sales Order"] else "debit"
|
dr_or_cr = (
|
||||||
|
"credit" if invoice.reference_doctype in ["Sales Invoice", "Payment Entry"] else "debit"
|
||||||
|
)
|
||||||
args_dict["account"] = invoice.account
|
args_dict["account"] = invoice.account
|
||||||
args_dict[dr_or_cr] = invoice.allocated_amount
|
args_dict[dr_or_cr] = invoice.allocated_amount
|
||||||
args_dict[dr_or_cr + "_in_account_currency"] = invoice.allocated_amount
|
args_dict[dr_or_cr + "_in_account_currency"] = invoice.allocated_amount
|
||||||
@@ -1751,7 +1754,7 @@ def get_outstanding_reference_documents(args, validate=False):
|
|||||||
outstanding_invoices = get_outstanding_invoices(
|
outstanding_invoices = get_outstanding_invoices(
|
||||||
args.get("party_type"),
|
args.get("party_type"),
|
||||||
args.get("party"),
|
args.get("party"),
|
||||||
party_account,
|
[party_account],
|
||||||
common_filter=common_filter,
|
common_filter=common_filter,
|
||||||
posting_date=posting_and_due_date,
|
posting_date=posting_and_due_date,
|
||||||
min_outstanding=args.get("outstanding_amt_greater_than"),
|
min_outstanding=args.get("outstanding_amt_greater_than"),
|
||||||
|
|||||||
@@ -340,10 +340,15 @@ class PaymentReconciliation(Document):
|
|||||||
|
|
||||||
self.build_qb_filter_conditions(get_invoices=True)
|
self.build_qb_filter_conditions(get_invoices=True)
|
||||||
|
|
||||||
|
accounts = [self.receivable_payable_account]
|
||||||
|
|
||||||
|
if self.default_advance_account:
|
||||||
|
accounts.append(self.default_advance_account)
|
||||||
|
|
||||||
non_reconciled_invoices = get_outstanding_invoices(
|
non_reconciled_invoices = get_outstanding_invoices(
|
||||||
self.party_type,
|
self.party_type,
|
||||||
self.party,
|
self.party,
|
||||||
self.receivable_payable_account,
|
accounts,
|
||||||
common_filter=self.common_filter_conditions,
|
common_filter=self.common_filter_conditions,
|
||||||
posting_date=self.ple_posting_date_filter,
|
posting_date=self.ple_posting_date_filter,
|
||||||
min_outstanding=self.minimum_invoice_amount if self.minimum_invoice_amount else None,
|
min_outstanding=self.minimum_invoice_amount if self.minimum_invoice_amount else None,
|
||||||
|
|||||||
@@ -1027,7 +1027,7 @@ def get_outstanding_invoices(
|
|||||||
|
|
||||||
if account:
|
if account:
|
||||||
root_type, account_type = frappe.get_cached_value(
|
root_type, account_type = frappe.get_cached_value(
|
||||||
"Account", account, ["root_type", "account_type"]
|
"Account", account[0], ["root_type", "account_type"]
|
||||||
)
|
)
|
||||||
party_account_type = "Receivable" if root_type == "Asset" else "Payable"
|
party_account_type = "Receivable" if root_type == "Asset" else "Payable"
|
||||||
party_account_type = account_type or party_account_type
|
party_account_type = account_type or party_account_type
|
||||||
@@ -1038,7 +1038,7 @@ def get_outstanding_invoices(
|
|||||||
|
|
||||||
common_filter = common_filter or []
|
common_filter = common_filter or []
|
||||||
common_filter.append(ple.account_type == party_account_type)
|
common_filter.append(ple.account_type == party_account_type)
|
||||||
common_filter.append(ple.account == account)
|
common_filter.append(ple.account.isin(account))
|
||||||
common_filter.append(ple.party_type == party_type)
|
common_filter.append(ple.party_type == party_type)
|
||||||
common_filter.append(ple.party == party)
|
common_filter.append(ple.party == party)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user