mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-22 14:39:19 +00:00
test: add test cases for Packing Slip
(cherry picked from commit 7742c592c5)
This commit is contained in:
@@ -3,9 +3,109 @@
|
|||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
# test_records = frappe.get_test_records('Packing Slip')
|
import frappe
|
||||||
from frappe.tests.utils import FrappeTestCase
|
from frappe.tests.utils import FrappeTestCase
|
||||||
|
|
||||||
|
from erpnext.selling.doctype.product_bundle.test_product_bundle import make_product_bundle
|
||||||
|
from erpnext.stock.doctype.delivery_note.delivery_note import make_packing_slip
|
||||||
|
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
|
||||||
|
from erpnext.stock.doctype.item.test_item import make_item
|
||||||
|
|
||||||
class TestPackingSlip(unittest.TestCase):
|
|
||||||
pass
|
class TestPackingSlip(FrappeTestCase):
|
||||||
|
def test_packing_slip(self):
|
||||||
|
# Step - 1: Create a Product Bundle
|
||||||
|
items = create_items()
|
||||||
|
make_product_bundle(items[0], items[1:], 5)
|
||||||
|
|
||||||
|
# Step - 2: Create a Delivery Note (Draft) with Product Bundle
|
||||||
|
dn = create_delivery_note(
|
||||||
|
item_code=items[0],
|
||||||
|
qty=2,
|
||||||
|
do_not_save=True,
|
||||||
|
)
|
||||||
|
dn.append(
|
||||||
|
"items",
|
||||||
|
{
|
||||||
|
"item_code": items[1],
|
||||||
|
"warehouse": "_Test Warehouse - _TC",
|
||||||
|
"qty": 10,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
dn.save()
|
||||||
|
|
||||||
|
# Step - 3: Make a Packing Slip from Delivery Note for 4 Qty
|
||||||
|
ps1 = make_packing_slip(dn.name)
|
||||||
|
for item in ps1.items:
|
||||||
|
item.qty = 4
|
||||||
|
ps1.save()
|
||||||
|
ps1.submit()
|
||||||
|
|
||||||
|
# Test - 1: `Packed Qty` should be updated to 4 in Delivery Note Items and Packed Items.
|
||||||
|
dn.load_from_db()
|
||||||
|
for item in dn.items:
|
||||||
|
if not frappe.db.exists("Product Bundle", {"new_item_code": item.item_code}):
|
||||||
|
self.assertEqual(item.packed_qty, 4)
|
||||||
|
|
||||||
|
for item in dn.packed_items:
|
||||||
|
self.assertEqual(item.packed_qty, 4)
|
||||||
|
|
||||||
|
# Step - 4: Make another Packing Slip from Delivery Note for 6 Qty
|
||||||
|
ps2 = make_packing_slip(dn.name)
|
||||||
|
ps2.save()
|
||||||
|
ps2.submit()
|
||||||
|
|
||||||
|
# Test - 2: `Packed Qty` should be updated to 10 in Delivery Note Items and Packed Items.
|
||||||
|
dn.load_from_db()
|
||||||
|
for item in dn.items:
|
||||||
|
if not frappe.db.exists("Product Bundle", {"new_item_code": item.item_code}):
|
||||||
|
self.assertEqual(item.packed_qty, 10)
|
||||||
|
|
||||||
|
for item in dn.packed_items:
|
||||||
|
self.assertEqual(item.packed_qty, 10)
|
||||||
|
|
||||||
|
# Step - 5: Cancel Packing Slip [1]
|
||||||
|
ps1.cancel()
|
||||||
|
|
||||||
|
# Test - 3: `Packed Qty` should be updated to 4 in Delivery Note Items and Packed Items.
|
||||||
|
dn.load_from_db()
|
||||||
|
for item in dn.items:
|
||||||
|
if not frappe.db.exists("Product Bundle", {"new_item_code": item.item_code}):
|
||||||
|
self.assertEqual(item.packed_qty, 6)
|
||||||
|
|
||||||
|
for item in dn.packed_items:
|
||||||
|
self.assertEqual(item.packed_qty, 6)
|
||||||
|
|
||||||
|
# Step - 6: Cancel Packing Slip [2]
|
||||||
|
ps2.cancel()
|
||||||
|
|
||||||
|
# Test - 4: `Packed Qty` should be updated to 0 in Delivery Note Items and Packed Items.
|
||||||
|
dn.load_from_db()
|
||||||
|
for item in dn.items:
|
||||||
|
if not frappe.db.exists("Product Bundle", {"new_item_code": item.item_code}):
|
||||||
|
self.assertEqual(item.packed_qty, 0)
|
||||||
|
|
||||||
|
for item in dn.packed_items:
|
||||||
|
self.assertEqual(item.packed_qty, 0)
|
||||||
|
|
||||||
|
# Step - 7: Make Packing Slip for more Qty than Delivery Note
|
||||||
|
ps3 = make_packing_slip(dn.name)
|
||||||
|
ps3.items[0].qty = 20
|
||||||
|
|
||||||
|
# Test - 5: Should throw an ValidationError, as Packing Slip Qty is more than Delivery Note Qty
|
||||||
|
self.assertRaises(frappe.exceptions.ValidationError, ps3.save)
|
||||||
|
|
||||||
|
|
||||||
|
def create_items():
|
||||||
|
items_properties = [
|
||||||
|
{"is_stock_item": 0},
|
||||||
|
{"is_stock_item": 1},
|
||||||
|
{"is_stock_item": 1},
|
||||||
|
{"is_stock_item": 1},
|
||||||
|
]
|
||||||
|
|
||||||
|
items = []
|
||||||
|
for properties in items_properties:
|
||||||
|
items.append(make_item(properties=properties).name)
|
||||||
|
|
||||||
|
return items
|
||||||
|
|||||||
Reference in New Issue
Block a user