more test cases for stock entry

This commit is contained in:
Anand Doshi
2013-03-13 15:30:05 +05:30
parent 23d742693a
commit 47428c2d92

View File

@@ -160,7 +160,21 @@ class TestStockEntry(unittest.TestCase):
self.assertEquals(expected_gl_entries[i][1], gle.debit) self.assertEquals(expected_gl_entries[i][1], gle.debit)
self.assertEquals(expected_gl_entries[i][2], gle.credit) self.assertEquals(expected_gl_entries[i][2], gle.credit)
def test_sales_invoice_return_of_non_packing_item(self): def _clear_stock(self):
webnotes.conn.sql("delete from `tabStock Ledger Entry`")
webnotes.conn.sql("""delete from `tabBin`""")
def _insert_material_receipt(self):
self._clear_stock()
material_receipt = webnotes.bean(copy=test_records[0])
material_receipt.insert()
material_receipt.submit()
def _get_actual_qty(self):
return flt(webnotes.conn.get_value("Bin", {"item_code": "_Test Item",
"warehouse": "_Test Warehouse"}, "actual_qty"))
def _test_sales_invoice_return(self, item_code, delivered_qty, returned_qty):
from stock.doctype.stock_entry.stock_entry import NotUpdateStockError from stock.doctype.stock_entry.stock_entry import NotUpdateStockError
from accounts.doctype.sales_invoice.test_sales_invoice \ from accounts.doctype.sales_invoice.test_sales_invoice \
@@ -174,39 +188,36 @@ class TestStockEntry(unittest.TestCase):
se = webnotes.bean(copy=test_records[0]) se = webnotes.bean(copy=test_records[0])
se.doc.purpose = "Sales Return" se.doc.purpose = "Sales Return"
se.doc.sales_invoice_no = si.doc.name se.doc.sales_invoice_no = si.doc.name
se.doclist[1].qty = 2.0 se.doclist[1].qty = returned_qty
se.doclist[1].transfer_qty = returned_qty
self.assertRaises(NotUpdateStockError, se.insert) self.assertRaises(NotUpdateStockError, se.insert)
webnotes.conn.sql("delete from `tabStock Ledger Entry`") self._insert_material_receipt()
webnotes.conn.sql("""delete from `tabBin`""")
material_receipt = webnotes.bean(copy=test_records[0])
material_receipt.insert()
material_receipt.submit()
# check currency available qty in bin # check currency available qty in bin
actual_qty_0 = flt(webnotes.conn.get_value("Bin", {"item_code": "_Test Item", actual_qty_0 = self._get_actual_qty()
"warehouse": "_Test Warehouse"}, "actual_qty"))
# insert a pos invoice with update stock # insert a pos invoice with update stock
si = webnotes.bean(copy=sales_invoice_test_records[1]) si = webnotes.bean(copy=sales_invoice_test_records[1])
si.doc.is_pos = si.doc.update_stock = 1 si.doc.is_pos = si.doc.update_stock = 1
si.doclist[1].warehouse = "_Test Warehouse" si.doclist[1].warehouse = "_Test Warehouse"
si.doclist[1].item_code = item_code
si.insert() si.insert()
si.submit() si.submit()
# check available bin qty after invoice submission # check available bin qty after invoice submission
actual_qty_1 = flt(webnotes.conn.get_value("Bin", {"item_code": "_Test Item", actual_qty_1 = self._get_actual_qty()
"warehouse": "_Test Warehouse"}, "actual_qty"))
self.assertEquals(actual_qty_0 - 5, actual_qty_1) self.assertEquals(actual_qty_0 - delivered_qty, actual_qty_1)
# check if item is validated # check if item is validated
se = webnotes.bean(copy=test_records[0]) se = webnotes.bean(copy=test_records[0])
se.doc.purpose = "Sales Return" se.doc.purpose = "Sales Return"
se.doc.sales_invoice_no = si.doc.name se.doc.sales_invoice_no = si.doc.name
se.doc.posting_date = "2013-03-10" se.doc.posting_date = "2013-03-10"
se.doclist[1].item_code = "_Test Item Home Desktop 100" se.doclist[1].item_code = "_Test Item Home Desktop 200"
se.doclist[1].qty = 2.0 se.doclist[1].qty = returned_qty
se.doclist[1].transfer_qty = 2.0 se.doclist[1].transfer_qty = returned_qty
# check if stock entry gets submitted # check if stock entry gets submitted
self.assertRaises(webnotes.DoesNotExistError, se.insert) self.assertRaises(webnotes.DoesNotExistError, se.insert)
@@ -216,68 +227,91 @@ class TestStockEntry(unittest.TestCase):
se.doc.purpose = "Sales Return" se.doc.purpose = "Sales Return"
se.doc.posting_date = "2013-03-10" se.doc.posting_date = "2013-03-10"
se.doc.sales_invoice_no = si.doc.name se.doc.sales_invoice_no = si.doc.name
se.doclist[1].qty = 2.0 se.doclist[1].qty = returned_qty
se.doclist[1].transfer_qty = 2.0 se.doclist[1].transfer_qty = returned_qty
# in both cases item code remains _Test Item when returning
se.insert() se.insert()
se.submit() se.submit()
# check if available qty is increased # check if available qty is increased
actual_qty_2 = flt(webnotes.conn.get_value("Bin", {"item_code": "_Test Item", actual_qty_2 = self._get_actual_qty()
"warehouse": "_Test Warehouse"}, "actual_qty"))
self.assertEquals(actual_qty_1 + 2, actual_qty_2) self.assertEquals(actual_qty_1 + returned_qty, actual_qty_2)
def test_sales_invoice_return_of_non_packing_item(self):
self._test_sales_invoice_return("_Test Item", 5, 2)
def test_sales_invoice_return_of_packing_item(self): def test_sales_invoice_return_of_packing_item(self):
webnotes.conn.sql("delete from `tabStock Ledger Entry`") self._test_sales_invoice_return("_Test Sales BOM Item", 25, 20)
webnotes.conn.sql("""delete from `tabBin`""")
material_receipt = webnotes.bean(copy=test_records[0])
material_receipt.insert()
material_receipt.submit()
# check currency available qty in bin def _test_delivery_note_return(self, item_code, delivered_qty, returned_qty):
actual_qty_0 = flt(webnotes.conn.get_value("Bin", {"item_code": "_Test Item", self._insert_material_receipt()
"warehouse": "_Test Warehouse"}, "actual_qty"))
from accounts.doctype.sales_invoice.test_sales_invoice \ actual_qty_0 = self._get_actual_qty()
import test_records as sales_invoice_test_records
# insert a pos invoice with update stock
si = webnotes.bean(copy=sales_invoice_test_records[1])
si.doc.is_pos = si.doc.update_stock = 1
si.doclist[1].item_code = "_Test Sales BOM Item"
si.doclist[1].warehouse = "_Test Warehouse"
si.insert()
si.submit()
# check available bin qty after invoice submission # insert and submit delivery note
actual_qty_1 = flt(webnotes.conn.get_value("Bin", {"item_code": "_Test Item", from stock.doctype.delivery_note.test_delivery_note \
"warehouse": "_Test Warehouse"}, "actual_qty")) import test_records as delivery_note_test_records
self.assertEquals(actual_qty_0 - 25, actual_qty_1) dn = webnotes.bean(copy=delivery_note_test_records[0])
dn.doclist[1].item_code = item_code
dn.insert()
dn.submit()
actual_qty_1 = self._get_actual_qty()
self.assertEquals(actual_qty_0 - delivered_qty, actual_qty_1)
# insert and submit stock entry for sales return
se = webnotes.bean(copy=test_records[0]) se = webnotes.bean(copy=test_records[0])
se.doc.purpose = "Sales Return" se.doc.purpose = "Sales Return"
se.doc.posting_date = "2013-03-10" se.doc.delivery_note_no = dn.doc.name
se.doc.sales_invoice_no = si.doc.name se.doc.posting_date = "2013-03-01"
se.doclist[1].qty = 20.0 se.doclist[1].qty = se.doclist[1].transfer_qty = returned_qty
se.doclist[1].transfer_qty = 20.0
se.insert()
se.insert()
se.submit() se.submit()
# check if available qty is increased actual_qty_2 = self._get_actual_qty()
actual_qty_2 = flt(webnotes.conn.get_value("Bin", {"item_code": "_Test Item", self.assertEquals(actual_qty_1 + returned_qty, actual_qty_2)
"warehouse": "_Test Warehouse"}, "actual_qty"))
self.assertEquals(actual_qty_1 + 20, actual_qty_2)
def test_delivery_note_return_of_non_packing_item(self):
self._test_delivery_note_return("_Test Item", 5, 2)
def test_delivery_note_return_of_packing_item(self):
self._test_delivery_note_return("_Test Sales BOM Item", 25, 20)
def test_purchase_receipt_return(self):
self._clear_stock()
actual_qty_0 = self._get_actual_qty()
from stock.doctype.purchase_receipt.test_purchase_receipt \
import test_records as purchase_receipt_test_records
# submit purchase receipt
pr = webnotes.bean(copy=purchase_receipt_test_records[0])
pr.insert()
pr.submit()
actual_qty_1 = self._get_actual_qty()
self.assertEquals(actual_qty_0 + 10, actual_qty_1)
# submit purchase return
se = webnotes.bean(copy=test_records[0])
se.doc.purpose = "Purchase Return"
se.doc.purchase_receipt_no = pr.doc.name
se.doc.posting_date = "2013-03-01"
se.doclist[1].qty = se.doclist[1].transfer_qty = 5
se.doclist[1].s_warehouse = "_Test Warehouse"
se.insert()
se.submit()
actual_qty_2 = self._get_actual_qty()
self.assertEquals(actual_qty_1 - 5, actual_qty_2)
# def test_delivery_note_return_of_non_packing_item(self):
# pass
#
# def test_delivery_note_return_of_packing_item(self):
# pass
#
# def test_purchase_receipt_return(self):
# pass
test_records = [ test_records = [
[ [