mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-27 17:04:47 +00:00
Merge pull request #32055 from frappe/mergify/bp/version-14-hotfix/pr-31942
fix: include payment against PO in AR/AP report (backport #31942)
This commit is contained in:
@@ -179,6 +179,11 @@ class ReceivablePayableReport(object):
|
|||||||
|
|
||||||
key = (ple.against_voucher_type, ple.against_voucher_no, ple.party)
|
key = (ple.against_voucher_type, ple.against_voucher_no, ple.party)
|
||||||
row = self.voucher_balance.get(key)
|
row = self.voucher_balance.get(key)
|
||||||
|
|
||||||
|
if not row:
|
||||||
|
# no invoice, this is an invoice / stand-alone payment / credit note
|
||||||
|
row = self.voucher_balance.get((ple.voucher_type, ple.voucher_no, ple.party))
|
||||||
|
|
||||||
return row
|
return row
|
||||||
|
|
||||||
def update_voucher_balance(self, ple):
|
def update_voucher_balance(self, ple):
|
||||||
|
|||||||
@@ -1,19 +1,27 @@
|
|||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
|
from frappe.tests.utils import FrappeTestCase
|
||||||
from frappe.utils import add_days, getdate, today
|
from frappe.utils import add_days, getdate, today
|
||||||
|
|
||||||
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
|
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
|
||||||
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
|
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
|
||||||
from erpnext.accounts.report.accounts_receivable.accounts_receivable import execute
|
from erpnext.accounts.report.accounts_receivable.accounts_receivable import execute
|
||||||
|
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
|
||||||
|
|
||||||
|
|
||||||
class TestAccountsReceivable(unittest.TestCase):
|
class TestAccountsReceivable(FrappeTestCase):
|
||||||
def test_accounts_receivable(self):
|
def setUp(self):
|
||||||
frappe.db.sql("delete from `tabSales Invoice` where company='_Test Company 2'")
|
frappe.db.sql("delete from `tabSales Invoice` where company='_Test Company 2'")
|
||||||
|
frappe.db.sql("delete from `tabSales Order` where company='_Test Company 2'")
|
||||||
|
frappe.db.sql("delete from `tabPayment Entry` where company='_Test Company 2'")
|
||||||
frappe.db.sql("delete from `tabGL Entry` where company='_Test Company 2'")
|
frappe.db.sql("delete from `tabGL Entry` where company='_Test Company 2'")
|
||||||
frappe.db.sql("delete from `tabPayment Ledger Entry` where company='_Test Company 2'")
|
frappe.db.sql("delete from `tabPayment Ledger Entry` where company='_Test Company 2'")
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
frappe.db.rollback()
|
||||||
|
|
||||||
|
def test_accounts_receivable(self):
|
||||||
filters = {
|
filters = {
|
||||||
"company": "_Test Company 2",
|
"company": "_Test Company 2",
|
||||||
"based_on_payment_terms": 1,
|
"based_on_payment_terms": 1,
|
||||||
@@ -66,6 +74,50 @@ class TestAccountsReceivable(unittest.TestCase):
|
|||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_payment_againt_po_in_receivable_report(self):
|
||||||
|
"""
|
||||||
|
Payments made against Purchase Order will show up as outstanding amount
|
||||||
|
"""
|
||||||
|
|
||||||
|
so = make_sales_order(
|
||||||
|
company="_Test Company 2",
|
||||||
|
customer="_Test Customer 2",
|
||||||
|
warehouse="Finished Goods - _TC2",
|
||||||
|
currency="EUR",
|
||||||
|
debit_to="Debtors - _TC2",
|
||||||
|
income_account="Sales - _TC2",
|
||||||
|
expense_account="Cost of Goods Sold - _TC2",
|
||||||
|
cost_center="Main - _TC2",
|
||||||
|
)
|
||||||
|
|
||||||
|
pe = get_payment_entry(so.doctype, so.name)
|
||||||
|
pe = pe.save().submit()
|
||||||
|
|
||||||
|
filters = {
|
||||||
|
"company": "_Test Company 2",
|
||||||
|
"based_on_payment_terms": 0,
|
||||||
|
"report_date": today(),
|
||||||
|
"range1": 30,
|
||||||
|
"range2": 60,
|
||||||
|
"range3": 90,
|
||||||
|
"range4": 120,
|
||||||
|
}
|
||||||
|
|
||||||
|
report = execute(filters)
|
||||||
|
|
||||||
|
expected_data_after_payment = [0, 1000, 0, -1000]
|
||||||
|
|
||||||
|
row = report[1][0]
|
||||||
|
self.assertEqual(
|
||||||
|
expected_data_after_payment,
|
||||||
|
[
|
||||||
|
row.invoiced,
|
||||||
|
row.paid,
|
||||||
|
row.credit_note,
|
||||||
|
row.outstanding,
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def make_sales_invoice():
|
def make_sales_invoice():
|
||||||
frappe.set_user("Administrator")
|
frappe.set_user("Administrator")
|
||||||
|
|||||||
Reference in New Issue
Block a user