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))
示例#2
0
	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)
		)