mirror of
https://github.com/frappe/erpnext.git
synced 2026-08-15 07:28:39 +00:00
test(selling): cover invoicing after returns and re-deliveries
This commit is contained in:
@@ -226,6 +226,95 @@ class TestSalesOrder(AccountsTestMixin, FrappeTestCase):
|
||||
si1 = make_sales_invoice(so.name)
|
||||
self.assertEqual(len(si1.get("items")), 0)
|
||||
|
||||
def test_make_sales_invoice_after_return_and_redelivery(self):
|
||||
from erpnext.stock.doctype.delivery_note.delivery_note import make_sales_return
|
||||
|
||||
so = make_sales_order(qty=10, rate=100)
|
||||
dn = create_dn_against_so(so.name, 10)
|
||||
|
||||
dn_return = frappe.get_doc(make_sales_return(dn.name).as_dict())
|
||||
dn_return.insert()
|
||||
dn_return.submit()
|
||||
|
||||
self.assertEqual(len(make_sales_invoice(so.name).get("items")), 0)
|
||||
|
||||
create_dn_against_so(so.name, 10)
|
||||
|
||||
so.load_from_db()
|
||||
item = so.get("items")[0]
|
||||
self.assertEqual(item.delivered_qty, 10)
|
||||
self.assertEqual(item.returned_qty, 10)
|
||||
|
||||
si = make_sales_invoice(so.name)
|
||||
self.assertEqual(si.get("items")[0].qty, 10)
|
||||
|
||||
def test_make_sales_invoice_bills_ordered_qty_for_partial_delivery(self):
|
||||
so = make_sales_order(qty=10, rate=100)
|
||||
create_dn_against_so(so.name, 4)
|
||||
|
||||
si = make_sales_invoice(so.name)
|
||||
self.assertEqual(si.get("items")[0].qty, 10)
|
||||
|
||||
def test_make_sales_invoice_after_partial_billing_return_and_redelivery(self):
|
||||
from erpnext.stock.doctype.delivery_note.delivery_note import make_sales_return
|
||||
|
||||
so = make_sales_order(qty=10, rate=100)
|
||||
dn = create_dn_against_so(so.name, 10)
|
||||
|
||||
si = make_sales_invoice(so.name)
|
||||
si.get("items")[0].qty = 4
|
||||
si.insert()
|
||||
si.submit()
|
||||
|
||||
dn_return = frappe.get_doc(make_sales_return(dn.name).as_dict())
|
||||
dn_return.insert()
|
||||
dn_return.submit()
|
||||
create_dn_against_so(so.name, 5)
|
||||
|
||||
so.load_from_db()
|
||||
item = so.get("items")[0]
|
||||
self.assertEqual(item.delivered_qty, 5)
|
||||
self.assertEqual(item.returned_qty, 10)
|
||||
self.assertEqual(item.billed_amt, 400)
|
||||
|
||||
pending_invoice = make_sales_invoice(so.name)
|
||||
self.assertEqual(pending_invoice.get("items")[0].qty, 1)
|
||||
pending_invoice.insert()
|
||||
pending_invoice.submit()
|
||||
|
||||
so.load_from_db()
|
||||
self.assertEqual(so.get("items")[0].billed_amt, 500)
|
||||
|
||||
def test_make_sales_invoice_after_partial_billing_multiple_items(self):
|
||||
so = make_sales_order(
|
||||
item_list=[
|
||||
{
|
||||
"item_code": "_Test Item",
|
||||
"warehouse": "_Test Warehouse - _TC",
|
||||
"qty": 10,
|
||||
"rate": 100,
|
||||
},
|
||||
{
|
||||
"item_code": "_Test FG Item",
|
||||
"warehouse": "_Test Warehouse - _TC",
|
||||
"qty": 10,
|
||||
"rate": 100,
|
||||
},
|
||||
]
|
||||
)
|
||||
|
||||
si = make_sales_invoice(so.name)
|
||||
si.get("items")[0].qty = 4
|
||||
si.get("items")[1].qty = 6
|
||||
si.insert()
|
||||
si.submit()
|
||||
|
||||
pending_invoice = make_sales_invoice(so.name)
|
||||
self.assertEqual(
|
||||
{item.so_detail: item.qty for item in pending_invoice.get("items")},
|
||||
{so.get("items")[0].name: 6, so.get("items")[1].name: 4},
|
||||
)
|
||||
|
||||
def test_so_billed_amount_against_return_entry(self):
|
||||
from erpnext.accounts.doctype.sales_invoice.sales_invoice import make_sales_return
|
||||
|
||||
|
||||
Reference in New Issue
Block a user