Test case added for Material Issue
diff --git a/erpnext/sandbox/test_stock_entry.py b/erpnext/sandbox/test_stock_entry.py
index 0f986a8..f1035bc 100644
--- a/erpnext/sandbox/test_stock_entry.py
+++ b/erpnext/sandbox/test_stock_entry.py
@@ -52,7 +52,7 @@
# Purpose: Material Receipt
#===========================================================================
def test_mr_onsubmit(self):
- print "Test Case: Stock Entry submission"
+ print "Test Case: Material Receipt submission"
self.save_stock_entry('Material Receipt')
mr = get_obj('Stock Entry', stock_entry.mr[0].name, with_children=1)
@@ -72,7 +72,7 @@
#===========================================================================
def test_mr_oncancel(self):
- print "Test Case: Stock Entry Cancellation"
+ print "Test Case: Material Receipt Cancellation"
self.save_stock_entry('Material Receipt')
mr = get_obj('Stock Entry', stock_entry.mr[0].name, with_children=1)
@@ -93,7 +93,7 @@
# Purpose: Material Transafer
#===========================================================================
def test_mtn_onsubmit(self):
- print "Test Case: Stock Entry submission"
+ print "Test Case: Material Transfer Note submission"
self.save_stock_entry('Material Receipt')
mr = get_obj('Stock Entry', stock_entry.mr[0].name, with_children=1)
@@ -122,7 +122,7 @@
#===========================================================================
def test_mtn_oncancel(self):
- print "Test Case: Stock Entry Cancellation"
+ print "Test Case: Material Transfer Note Cancellation"
self.save_stock_entry('Material Receipt')
mr = get_obj('Stock Entry', stock_entry.mr[0].name, with_children=1)
@@ -145,6 +145,64 @@
# serial no
self.assertCount([[{'doctype': 'Serial No', 'item_code': 'it', 'warehouse': 'wh1', 'status': 'In Store', 'docstatus': 0}, 10]])
+
+#===========================================================================
+ # Purpose: Material Issue
+ #===========================================================================
+ def test_mi_onsubmit(self):
+ print "Test Case: Material Issue submission"
+
+ self.save_stock_entry('Material Receipt')
+ mr = get_obj('Stock Entry', stock_entry.mr[0].name, with_children=1)
+ mr = self.submit_stock_entry(mr)
+
+ self.save_stock_entry('Material Issue')
+ mi = get_obj('Stock Entry', stock_entry.mi[0].name, with_children=1)
+ mi = self.submit_stock_entry(mi)
+
+ # stock ledger entry
+ print "Checking stock ledger entry........."
+ self.assertDoc(self.get_expected_sle('mi_submit'))
+
+ # bin qty
+ print "Checking Bin qty........."
+ self.assertDoc([
+ {'doctype':'Bin', 'actual_qty':6, 'item_code':'it', 'warehouse':'wh1'}
+ ])
+
+ # serial no
+ self.assertCount([
+ [{'doctype': 'Serial No', 'item_code': 'it', 'warehouse': 'wh1', 'status': 'In Store', 'docstatus': 0}, 6]
+ ])
+
+ #===========================================================================
+ def test_mi_oncancel(self):
+ print "Test Case: Material Issue Cancellation"
+
+ self.save_stock_entry('Material Receipt')
+ mr = get_obj('Stock Entry', stock_entry.mr[0].name, with_children=1)
+ mr = self.submit_stock_entry(mr)
+
+ self.save_stock_entry('Material Issue')
+ mi = get_obj('Stock Entry', stock_entry.mi[0].name, with_children=1)
+ self.cancel_stock_entry(mi)
+
+ # stock ledger entry
+ print "Checking stock ledger entry........."
+ self.assertDoc(self.get_expected_sle('mi_cancel'))
+
+ # bin qty
+ print "Checking Bin qty........."
+ self.assertDoc([
+ {'doctype':'Bin', 'actual_qty':10, 'item_code':'it', 'warehouse':'wh1'}
+ ])
+
+ # serial no
+ self.assertCount([
+ [{'doctype': 'Serial No', 'item_code': 'it', 'warehouse': 'wh1', 'status': 'In Store', 'docstatus': 0}, 10]
+ ])
+
+
#===========================================================================
def save_stock_entry(self, t):
@@ -152,6 +210,8 @@
data = stock_entry.mr
elif t == 'Material Transfer':
data = stock_entry.mtn
+ elif t == 'Material Issue':
+ data = stock_entry.mi
for each in data:
each.save(1)
@@ -282,7 +342,39 @@
'voucher_no': stock_entry.mtn[0].name,
'actual_qty': -5,
'is_cancelled': 'Yes'
+ }],
+ 'mi_submit': [{'doctype': 'Stock Ledger Entry',
+ 'item_code':'it',
+ 'warehouse':'wh1',
+ 'voucher_type': 'Stock Entry',
+ 'voucher_no': stock_entry.mi[0].name,
+ 'actual_qty': -4,
+ 'bin_aqat': 6,
+ 'valuation_rate': 100,
+ 'is_cancelled': 'No'
+ }],
+ 'mi_cancel': [{
+ 'doctype': 'Stock Ledger Entry',
+ 'item_code':'it',
+ 'warehouse':'wh1',
+ 'voucher_type': 'Stock Entry',
+ 'voucher_no': stock_entry.mi[0].name,
+ 'actual_qty': -4,
+ 'bin_aqat': 6,
+ 'valuation_rate': 100,
+ 'is_cancelled': 'Yes'
+ },{
+ 'doctype': 'Stock Ledger Entry',
+ 'item_code':'it',
+ 'warehouse':'wh1',
+ 'voucher_type': 'Stock Entry',
+ 'voucher_no': stock_entry.mi[0].name,
+ 'actual_qty': 4,
+ 'ifnull(bin_aqat, 0)': 0,
+ 'ifnull(valuation_rate, 0)': 0,
+ "ifnull(is_cancelled, 'No')": 'Yes'
}]
+
}
return expected_sle[action]
diff --git a/erpnext/sandbox/testdata/stock_entry.py b/erpnext/sandbox/testdata/stock_entry.py
index b224774..8f2a30c 100644
--- a/erpnext/sandbox/testdata/stock_entry.py
+++ b/erpnext/sandbox/testdata/stock_entry.py
@@ -1,5 +1,8 @@
from webnotes.model.doc import Document
+# Material Receipt
+#-----------------------
+
mr = [
Document(
fielddata = {
@@ -31,6 +34,8 @@
)
]
+# Material Transfer
+#--------------------
mtn = [
Document(
@@ -63,3 +68,37 @@
}
)
]
+
+# Material Issue
+#--------------------
+
+mi = [
+ Document(
+ fielddata = {
+ 'doctype': 'Stock Entry',
+ 'posting_date': '2011-09-01',
+ 'transfer_date': '2011-09-01',
+ 'posting_time': '14:00',
+ 'company': 'comp',
+ 'fiscal_year' : '2011-2012',
+ 'purpose': 'Material Issue',
+ 'name': 'mi'
+ }
+ ),
+ Document(
+ fielddata ={
+ 'doctype': 'Stock Entry Detail',
+ 'parenttype': 'Stock Entry',
+ 'parentfield' : 'mtn_details',
+ 'parent' : 'mi',
+ 'item_code' : 'it',
+ 's_warehouse' : 'wh1',
+ 'qty' : 4,
+ 'transfer_qty' : 4,
+ 'incoming_rate': 100,
+ 'stock_uom': 'Nos',
+ 'conversion_factor': 1,
+ 'serial_no': 'srno1, srno2, srno3, srno4'
+ }
+ )
+]