more test cases for stock entry
This commit is contained in:
parent
23d742693a
commit
47428c2d92
@ -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 = [
|
||||
[
|
||||
|
Loading…
x
Reference in New Issue
Block a user