test: fix POS Closing Entry Test
- Separated into two tests, one checks if SI cancelling is blocked, the other checks PCE cancel impact - This is done because after cancel via assertRaises, damage done by cancel still exists or is partially comitted - Dont use this partially cancelled doc for any assertions further, end test at exception assertion - Use `get_value` to check SI docstatus, as its primary key changes after cancel
This commit is contained in:
parent
bca30d6101
commit
8f1a3aef2e
@ -19,6 +19,7 @@ class TestPOSClosingEntry(unittest.TestCase):
|
|||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
frappe.set_user("Administrator")
|
frappe.set_user("Administrator")
|
||||||
frappe.db.sql("delete from `tabPOS Profile`")
|
frappe.db.sql("delete from `tabPOS Profile`")
|
||||||
|
frappe.db.rollback()
|
||||||
|
|
||||||
def test_pos_closing_entry(self):
|
def test_pos_closing_entry(self):
|
||||||
test_user, pos_profile = init_user_and_profile()
|
test_user, pos_profile = init_user_and_profile()
|
||||||
@ -50,7 +51,8 @@ class TestPOSClosingEntry(unittest.TestCase):
|
|||||||
self.assertEqual(pcv_doc.total_quantity, 2)
|
self.assertEqual(pcv_doc.total_quantity, 2)
|
||||||
self.assertEqual(pcv_doc.net_total, 6700)
|
self.assertEqual(pcv_doc.net_total, 6700)
|
||||||
|
|
||||||
def test_cancelling_of_pos_closing_entry(self):
|
def test_cancelling_of_consolidated_sales_invoice(self):
|
||||||
|
"Check if cancelling consolidated Sales Invoice with submitted POS Closing Entry is blocked."
|
||||||
test_user, pos_profile = init_user_and_profile()
|
test_user, pos_profile = init_user_and_profile()
|
||||||
opening_entry = create_opening_entry(pos_profile, test_user.name)
|
opening_entry = create_opening_entry(pos_profile, test_user.name)
|
||||||
|
|
||||||
@ -83,13 +85,46 @@ class TestPOSClosingEntry(unittest.TestCase):
|
|||||||
si_doc = frappe.get_doc("Sales Invoice", pos_inv1.consolidated_invoice)
|
si_doc = frappe.get_doc("Sales Invoice", pos_inv1.consolidated_invoice)
|
||||||
self.assertRaises(frappe.ValidationError, si_doc.cancel)
|
self.assertRaises(frappe.ValidationError, si_doc.cancel)
|
||||||
|
|
||||||
|
def test_cancelling_of_pos_closing_entry(self):
|
||||||
|
"Check impact of cancelling POS Closing Entry."
|
||||||
|
test_user, pos_profile = init_user_and_profile()
|
||||||
|
opening_entry = create_opening_entry(pos_profile, test_user.name)
|
||||||
|
|
||||||
|
pos_inv1 = create_pos_invoice(rate=3500, do_not_submit=1)
|
||||||
|
pos_inv1.append('payments', {
|
||||||
|
'mode_of_payment': 'Cash', 'account': 'Cash - _TC', 'amount': 3500
|
||||||
|
})
|
||||||
|
pos_inv1.submit()
|
||||||
|
|
||||||
|
pos_inv2 = create_pos_invoice(rate=3200, do_not_submit=1)
|
||||||
|
pos_inv2.append('payments', {
|
||||||
|
'mode_of_payment': 'Cash', 'account': 'Cash - _TC', 'amount': 3200
|
||||||
|
})
|
||||||
|
pos_inv2.submit()
|
||||||
|
|
||||||
|
pcv_doc = make_closing_entry_from_opening(opening_entry)
|
||||||
|
payment = pcv_doc.payment_reconciliation[0]
|
||||||
|
|
||||||
|
for d in pcv_doc.payment_reconciliation:
|
||||||
|
if d.mode_of_payment == 'Cash':
|
||||||
|
d.closing_amount = 6700
|
||||||
|
|
||||||
|
pcv_doc.submit()
|
||||||
|
|
||||||
|
pos_inv1.load_from_db()
|
||||||
|
si_name = pos_inv1.consolidated_invoice
|
||||||
|
|
||||||
pcv_doc.load_from_db()
|
pcv_doc.load_from_db()
|
||||||
pcv_doc.cancel()
|
pcv_doc.cancel()
|
||||||
si_doc.load_from_db()
|
|
||||||
pos_inv1.load_from_db()
|
pos_inv1.load_from_db()
|
||||||
self.assertEqual(si_doc.docstatus, 2)
|
|
||||||
self.assertEqual(pos_inv1.status, 'Paid')
|
|
||||||
|
|
||||||
|
# After POS Closing Entry cancel, SI doc gets cancelled, unlinked and renamed
|
||||||
|
# There's no reference doc to fetch SI with new cancelled name
|
||||||
|
# which is why we are hardcoding suffix
|
||||||
|
si_docstatus = frappe.db.get_value("Sales Invoice", si_name+"-CANC-0", "docstatus")
|
||||||
|
self.assertEqual(si_docstatus, 2)
|
||||||
|
self.assertEqual(pos_inv1.status, 'Paid')
|
||||||
|
self.assertIsNone(pos_inv1.consolidated_invoice)
|
||||||
|
|
||||||
def init_user_and_profile(**args):
|
def init_user_and_profile(**args):
|
||||||
user = 'test@example.com'
|
user = 'test@example.com'
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user