def test_invoice_with_advance_and_multi_payment_terms(self): from erpnext.accounts.doctype.journal_entry.test_journal_entry \ import test_records as jv_test_records jv = frappe.copy_doc(jv_test_records[1]) jv.insert() jv.submit() pi = frappe.copy_doc(test_records[0]) pi.disable_rounded_total = 1 pi.allocate_advances_automatically = 0 pi.append( "advances", { "reference_type": "Journal Entry", "reference_name": jv.name, "reference_row": jv.get("accounts")[0].name, "advance_amount": 400, "allocated_amount": 300, "remarks": jv.remark }) pi.insert() pi.update({ "payment_schedule": get_payment_terms("_Test Payment Term Template", pi.posting_date, pi.grand_total) }) pi.save() pi.submit() self.assertEqual(pi.payment_schedule[0].payment_amount, 606.15) self.assertEqual(pi.payment_schedule[0].due_date, pi.posting_date) self.assertEqual(pi.payment_schedule[1].payment_amount, 606.15) self.assertEqual(pi.payment_schedule[1].due_date, add_days(pi.posting_date, 30)) pi.load_from_db() self.assertTrue( frappe.db.sql( "select name from `tabJournal Entry Account` where reference_type='Purchase Invoice' and " "reference_name=%s and debit_in_account_currency=300", pi.name)) self.assertEqual(pi.outstanding_amount, 1212.30) pi.cancel() self.assertFalse( frappe.db.sql( "select name from `tabJournal Entry Account` where reference_type='Purchase Invoice' and " "reference_name=%s", pi.name))
def test_invoice_with_advance_and_multi_payment_terms(self): from erpnext.accounts.doctype.journal_entry.test_journal_entry \ import test_records as jv_test_records jv = frappe.copy_doc(jv_test_records[1]) jv.insert() jv.submit() pi = frappe.copy_doc(test_records[0]) pi.disable_rounded_total = 1 pi.allocate_advances_automatically = 0 pi.append("advances", { "reference_type": "Journal Entry", "reference_name": jv.name, "reference_row": jv.get("accounts")[0].name, "advance_amount": 400, "allocated_amount": 300, "remarks": jv.remark }) pi.insert() pi.update({ "payment_schedule": get_payment_terms("_Test Payment Term Template", pi.posting_date, pi.grand_total) }) pi.save() pi.submit() self.assertEqual(pi.payment_schedule[0].payment_amount, 756.15) self.assertEqual(pi.payment_schedule[0].due_date, pi.posting_date) self.assertEqual(pi.payment_schedule[1].payment_amount, 756.15) self.assertEqual(pi.payment_schedule[1].due_date, add_days(pi.posting_date, 30)) pi.load_from_db() self.assertTrue( frappe.db.sql( "select name from `tabJournal Entry Account` where reference_type='Purchase Invoice' and " "reference_name=%s and debit_in_account_currency=300", pi.name) ) self.assertEqual(pi.outstanding_amount, 1212.30) pi.cancel() self.assertFalse( frappe.db.sql( "select name from `tabJournal Entry Account` where reference_type='Purchase Invoice' and " "reference_name=%s", pi.name) )