66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
import unittest
|
|
|
|
import frappe
|
|
from frappe import qb
|
|
from frappe.tests.utils import FrappeTestCase
|
|
|
|
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.report.payment_ledger.payment_ledger import execute
|
|
|
|
|
|
class TestPaymentLedger(FrappeTestCase):
|
|
def setUp(self):
|
|
self.create_company()
|
|
self.cleanup()
|
|
|
|
def cleanup(self):
|
|
doctypes = []
|
|
doctypes.append(qb.DocType("GL Entry"))
|
|
doctypes.append(qb.DocType("Payment Ledger Entry"))
|
|
doctypes.append(qb.DocType("Sales Invoice"))
|
|
doctypes.append(qb.DocType("Payment Entry"))
|
|
|
|
for doctype in doctypes:
|
|
qb.from_(doctype).delete().where(doctype.company == self.company).run()
|
|
|
|
def create_company(self):
|
|
name = "Test Payment Ledger"
|
|
company = None
|
|
if frappe.db.exists("Company", name):
|
|
company = frappe.get_doc("Company", name)
|
|
else:
|
|
company = frappe.get_doc(
|
|
{
|
|
"doctype": "Company",
|
|
"company_name": name,
|
|
"country": "India",
|
|
"default_currency": "INR",
|
|
"create_chart_of_accounts_based_on": "Standard Template",
|
|
"chart_of_accounts": "Standard",
|
|
}
|
|
)
|
|
company = company.save()
|
|
self.company = company.name
|
|
self.cost_center = company.cost_center
|
|
self.warehouse = "All Warehouses" + " - " + company.abbr
|
|
self.income_account = company.default_income_account
|
|
self.expense_account = company.default_expense_account
|
|
self.debit_to = company.default_receivable_account
|
|
|
|
def test_unpaid_invoice_outstanding(self):
|
|
sinv = create_sales_invoice(
|
|
company=self.company,
|
|
debit_to=self.debit_to,
|
|
expense_account=self.expense_account,
|
|
cost_center=self.cost_center,
|
|
income_account=self.income_account,
|
|
warehouse=self.warehouse,
|
|
)
|
|
pe = get_payment_entry(sinv.doctype, sinv.name).save().submit()
|
|
|
|
filters = frappe._dict({"company": self.company})
|
|
columns, data = execute(filters=filters)
|
|
outstanding = [x for x in data if x.get("against_voucher_no") == "Outstanding:"]
|
|
self.assertEqual(outstanding[0].get("amount"), 0)
|