Skip to content

Commit

Permalink
test: PE from SI with early payment discount amount & PE assertions i…
Browse files Browse the repository at this point in the history
…n discount % test
  • Loading branch information
marination committed Mar 6, 2023
1 parent 2ae5834 commit c217bb2
Showing 1 changed file with 59 additions and 8 deletions.
67 changes: 59 additions & 8 deletions erpnext/accounts/doctype/payment_entry/test_payment_entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,14 @@ def test_payment_entry_against_payment_terms_with_discount(self):
si.submit()

pe = get_payment_entry("Sales Invoice", si.name, bank_account="_Test Cash - _TC")

self.assertEqual(pe.references[0].payment_term, "30 Credit Days with 10% Discount")
self.assertEqual(pe.references[0].allocated_amount, 236.0)
self.assertEqual(pe.paid_amount, 212.4)
self.assertEqual(pe.deductions[0].amount, 20.0) # Loss on Income
self.assertEqual(pe.deductions[1].amount, 3.6) # Loss on Tax
self.assertEqual(pe.deductions[1].account, "_Test Account Service Tax - _TC")

pe.submit()
si.load_from_db()

Expand All @@ -269,6 +277,46 @@ def test_payment_entry_against_payment_terms_with_discount(self):
self.assertEqual(si.payment_schedule[0].outstanding, 0)
self.assertEqual(si.payment_schedule[0].discounted_amount, 23.6)

def test_payment_entry_against_payment_terms_with_discount_amount(self):
si = create_sales_invoice(do_not_save=1, qty=1, rate=200)

si.payment_terms_template = "Test Discount Amount Template"
create_payment_terms_template_with_discount(
name="30 Credit Days with Rs.50 Discount",
discount_type="Amount",
discount=50,
template_name="Test Discount Amount Template",
)
frappe.db.set_value("Company", si.company, "default_discount_account", "Write Off - _TC")

si.append(
"taxes",
{
"charge_type": "On Net Total",
"account_head": "_Test Account Service Tax - _TC",
"cost_center": "_Test Cost Center - _TC",
"description": "Service Tax",
"rate": 18,
},
)
si.save()
si.submit()

pe = get_payment_entry("Sales Invoice", si.name, bank_account="_Test Cash - _TC")
self.assertEqual(pe.references[0].allocated_amount, 236.0)
self.assertEqual(pe.paid_amount, 186)
self.assertEqual(pe.deductions[0].amount, 42.37) # Loss on Income
self.assertEqual(pe.deductions[1].amount, 7.63) # Loss on Tax
self.assertEqual(pe.deductions[1].account, "_Test Account Service Tax - _TC")

pe.submit()
si.load_from_db()

self.assertEqual(si.payment_schedule[0].payment_amount, 236.0)
self.assertEqual(si.payment_schedule[0].paid_amount, 186)
self.assertEqual(si.payment_schedule[0].outstanding, 0)
self.assertEqual(si.payment_schedule[0].discounted_amount, 50)

def test_payment_against_purchase_invoice_to_check_status(self):
pi = make_purchase_invoice(
supplier="_Test Supplier USD",
Expand Down Expand Up @@ -839,24 +887,27 @@ def create_payment_terms_template():
).insert()


def create_payment_terms_template_with_discount():

create_payment_term("30 Credit Days with 10% Discount")
def create_payment_terms_template_with_discount(
name=None, discount_type=None, discount=None, template_name=None
):
create_payment_term(name or "30 Credit Days with 10% Discount")
template_name = template_name or "Test Discount Template"

if not frappe.db.exists("Payment Terms Template", "Test Discount Template"):
payment_term_template = frappe.get_doc(
if not frappe.db.exists("Payment Terms Template", template_name):
frappe.get_doc(
{
"doctype": "Payment Terms Template",
"template_name": "Test Discount Template",
"template_name": template_name,
"allocate_payment_based_on_payment_terms": 1,
"terms": [
{
"doctype": "Payment Terms Template Detail",
"payment_term": "30 Credit Days with 10% Discount",
"payment_term": name or "30 Credit Days with 10% Discount",
"invoice_portion": 100,
"credit_days_based_on": "Day(s) after invoice date",
"credit_days": 2,
"discount": 10,
"discount_type": discount_type or "Percentage",
"discount": discount or 10,
"discount_validity_based_on": "Day(s) after invoice date",
"discount_validity": 1,
}
Expand Down

0 comments on commit c217bb2

Please sign in to comment.