import unittest import webnotes import webnotes.profile webnotes.user = webnotes.profile.Profile() from webnotes.model.doc import Document from webnotes.model.code import get_obj from webnotes.utils import cstr, flt sql = webnotes.conn.sql from sandbox.testdata.masters import * from sandbox.testdata import stock_entry #---------------------------------------------------------- class TestStockEntry(unittest.TestCase): def setUp(self): print "=====================================" webnotes.conn.begin() create_master_records() print 'Master Data Created' for each in stock_entry.mr: each.save(1) for t in stock_entry.mr[1:]: sql("update `tabStock Entry Detail` set parent = '%s' where name = '%s'" % (stock_entry.mr[0].name, t.name)) print "Stock Entry Created" #=========================================================================== def test_stock_entry_onsubmit(self): print "Test Case: Stock Entry submission" self.submit_stock_entry() expected_sle = (('Stock Entry', stock_entry.mr[0].name, 10, 10, 100, 'No'),) self.check_sle(expected_sle) self.check_bin_qty(10) self.check_serial_no('submit', 10) #=========================================================================== def test_stock_entry_oncancel(self): print "Test Case: Stock Entry Cancellation" self.cancel_stock_entry() expected_sle = ( ('Stock Entry', stock_entry.mr[0].name, 10, 10, 100, 'Yes'), ('Stock Entry', stock_entry.mr[0].name, -10, None, None, 'Yes'), ) self.check_sle(expected_sle) self.check_bin_qty(0) self.check_serial_no('cancel', 10) #=========================================================================== def submit_stock_entry(self): ste1 = get_obj('Stock Entry', stock_entry.mr[0].name, with_children=1) ste1.validate() ste1.on_submit() ste1.doc.docstatus = 1 ste1.doc.save() print "Stock Entry Submitted" #=========================================================================== def cancel_stock_entry(self): self.submit_stock_entry() ste1 = get_obj('Stock Entry', stock_entry.mr[0].name, with_children=1) ste1.on_cancel() ste1.doc.cancel_reason = "testing" ste1.doc.docstatus = 2 ste1.doc.save() print "Stock Entry Cancelled" #=========================================================================== def check_sle(self, expected): print "Checking stock ledger entry........." sle = sql("select voucher_type, voucher_no, actual_qty, bin_aqat, valuation_rate, is_cancelled from `tabStock Ledger Entry` where item_code = 'it' and warehouse = 'wh1'") self.assertTrue(sle == expected) #=========================================================================== def check_bin_qty(self, expected_qty): print "Checking Bin qty........." bin_qty = sql("select actual_qty from tabBin where item_code = 'it' and warehouse = 'wh1'") self.assertTrue(bin_qty[0][0] == expected_qty) #=========================================================================== def check_serial_no(self, action, cnt): print "Checking serial nos........" if action == 'submit': status, wh, docstatus = 'In Store', 'wh1', 0 else: status, wh, docstatus = 'Not in Use', '', 2 ser = sql("select count(name) from `tabSerial No` where item_code = 'it' and warehouse = '%s' and status = '%s' and docstatus = %s" % (wh, status, docstatus)) self.assertTrue(ser[0][0] == cnt) #=========================================================================== def tearDown(self): webnotes.conn.rollback()