def test_dn_billing_status_case3(self):
        # SO -> DN1 -> SI and SO -> SI and SO -> DN2
        from erpnext.selling.doctype.sales_order.sales_order import (
            make_delivery_note,
            make_sales_invoice as make_sales_invoice_from_so,
        )

        frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)

        so = make_sales_order()

        dn1 = make_delivery_note(so.name)
        dn1.posting_time = "10:00"
        dn1.get("items")[0].qty = 2
        dn1.submit()

        si1 = make_sales_invoice(dn1.name)
        si1.submit()

        dn1.load_from_db()
        self.assertEqual(dn1.per_billed, 100)

        si2 = make_sales_invoice_from_so(so.name)
        si2.get("items")[0].qty = 4
        si2.submit()

        dn2 = make_delivery_note(so.name)
        dn2.posting_time = "08:00"
        dn2.get("items")[0].qty = 5
        dn2.submit()

        dn1.load_from_db()
        self.assertEqual(dn1.get("items")[0].billed_amt, 200)
        self.assertEqual(dn1.per_billed, 100)
        self.assertEqual(dn1.status, "Completed")

        self.assertEqual(dn2.get("items")[0].billed_amt, 400)
        self.assertEqual(dn2.per_billed, 80)
        self.assertEqual(dn2.status, "To Bill")
Beispiel #2
0
    def test_dn_billing_status_case3(self):
        # SO -> DN1 -> SI and SO -> SI and SO -> DN2
        from erpnext.selling.doctype.sales_order.sales_order \
         import make_delivery_note, make_sales_invoice as make_sales_invoice_from_so
        frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)

        so = make_sales_order()

        dn1 = make_delivery_note(so.name)
        dn1.set_posting_time = 1
        dn1.posting_time = "10:00"
        dn1.get("items")[0].qty = 2
        dn1.submit()

        si1 = make_sales_invoice(dn1.name)
        si1.submit()

        dn1.load_from_db()
        self.assertEqual(dn1.per_billed, 100)

        si2 = make_sales_invoice_from_so(so.name)
        si2.get("items")[0].qty = 4
        si2.submit()

        dn2 = make_delivery_note(so.name)
        dn2.posting_time = "08:00"
        dn2.get("items")[0].qty = 5
        dn2.submit()

        dn1.load_from_db()
        self.assertEqual(dn1.get("items")[0].billed_amt, 200)
        self.assertEqual(dn1.per_billed, 100)
        self.assertEqual(dn1.status, "Completed")

        self.assertEqual(dn2.get("items")[0].billed_amt, 400)
        self.assertEqual(dn2.per_billed, 80)
        self.assertEqual(dn2.status, "To Deliver")