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][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 accounts.doctype.sales_invoice.test_sales_invoice \
@ -174,39 +188,36 @@ class TestStockEntry(unittest.TestCase):
se = webnotes.bean(copy=test_records[0])
se.doc.purpose = "Sales Return"
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)
webnotes.conn.sql("delete from `tabStock Ledger Entry`")
webnotes.conn.sql("""delete from `tabBin`""")
material_receipt = webnotes.bean(copy=test_records[0])
material_receipt.insert()
material_receipt.submit()
self._insert_material_receipt()
# check currency available qty in bin
actual_qty_0 = flt(webnotes.conn.get_value("Bin", {"item_code": "_Test Item",
"warehouse": "_Test Warehouse"}, "actual_qty"))
actual_qty_0 = self._get_actual_qty()
# 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].warehouse = "_Test Warehouse"
si.doclist[1].item_code = item_code
si.insert()
si.submit()
# check available bin qty after invoice submission
actual_qty_1 = flt(webnotes.conn.get_value("Bin", {"item_code": "_Test Item",
"warehouse": "_Test Warehouse"}, "actual_qty"))
self.assertEquals(actual_qty_0 - 5, actual_qty_1)
actual_qty_1 = self._get_actual_qty()
self.assertEquals(actual_qty_0 - delivered_qty, actual_qty_1)
# check if item is validated
se = webnotes.bean(copy=test_records[0])
se.doc.purpose = "Sales Return"
se.doc.sales_invoice_no = si.doc.name
se.doc.posting_date = "2013-03-10"
se.doclist[1].item_code = "_Test Item Home Desktop 100"
se.doclist[1].qty = 2.0
se.doclist[1].transfer_qty = 2.0
se.doclist[1].item_code = "_Test Item Home Desktop 200"
se.doclist[1].qty = returned_qty
se.doclist[1].transfer_qty = returned_qty
# check if stock entry gets submitted
self.assertRaises(webnotes.DoesNotExistError, se.insert)
@ -216,68 +227,91 @@ class TestStockEntry(unittest.TestCase):
se.doc.purpose = "Sales Return"
se.doc.posting_date = "2013-03-10"
se.doc.sales_invoice_no = si.doc.name
se.doclist[1].qty = 2.0
se.doclist[1].transfer_qty = 2.0
se.doclist[1].qty = returned_qty
se.doclist[1].transfer_qty = returned_qty
# in both cases item code remains _Test Item when returning
se.insert()
se.submit()
# check if available qty is increased
actual_qty_2 = flt(webnotes.conn.get_value("Bin", {"item_code": "_Test Item",
"warehouse": "_Test Warehouse"}, "actual_qty"))
self.assertEquals(actual_qty_1 + 2, actual_qty_2)
actual_qty_2 = self._get_actual_qty()
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):
webnotes.conn.sql("delete from `tabStock Ledger Entry`")
webnotes.conn.sql("""delete from `tabBin`""")
material_receipt = webnotes.bean(copy=test_records[0])
material_receipt.insert()
material_receipt.submit()
self._test_sales_invoice_return("_Test Sales BOM Item", 25, 20)
# check currency available qty in bin
actual_qty_0 = flt(webnotes.conn.get_value("Bin", {"item_code": "_Test Item",
"warehouse": "_Test Warehouse"}, "actual_qty"))
def _test_delivery_note_return(self, item_code, delivered_qty, returned_qty):
self._insert_material_receipt()
from accounts.doctype.sales_invoice.test_sales_invoice \
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()
actual_qty_0 = self._get_actual_qty()
# check available bin qty after invoice submission
actual_qty_1 = flt(webnotes.conn.get_value("Bin", {"item_code": "_Test Item",
"warehouse": "_Test Warehouse"}, "actual_qty"))
self.assertEquals(actual_qty_0 - 25, actual_qty_1)
# insert and submit delivery note
from stock.doctype.delivery_note.test_delivery_note \
import test_records as delivery_note_test_records
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.doc.purpose = "Sales Return"
se.doc.posting_date = "2013-03-10"
se.doc.sales_invoice_no = si.doc.name
se.doclist[1].qty = 20.0
se.doclist[1].transfer_qty = 20.0
se.insert()
se.doc.delivery_note_no = dn.doc.name
se.doc.posting_date = "2013-03-01"
se.doclist[1].qty = se.doclist[1].transfer_qty = returned_qty
se.insert()
se.submit()
# check if available qty is increased
actual_qty_2 = flt(webnotes.conn.get_value("Bin", {"item_code": "_Test Item",
"warehouse": "_Test Warehouse"}, "actual_qty"))
self.assertEquals(actual_qty_1 + 20, actual_qty_2)
actual_qty_2 = self._get_actual_qty()
self.assertEquals(actual_qty_1 + returned_qty, 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 = [
[