diff --git a/erpnext/stock/doctype/pick_list/test_pick_list.py b/erpnext/stock/doctype/pick_list/test_pick_list.py index 940d40e6c07..d32e3450473 100644 --- a/erpnext/stock/doctype/pick_list/test_pick_list.py +++ b/erpnext/stock/doctype/pick_list/test_pick_list.py @@ -3,108 +3,158 @@ # See license.txt from __future__ import unicode_literals -# import frappe +import frappe import unittest -# test_dependencies = ['Item', 'Sales Invoice', 'Stock Entry', 'Batch'] +test_dependencies = ['Item', 'Sales Invoice', 'Stock Entry', 'Batch'] + +from erpnext.stock.doctype.stock_reconciliation.stock_reconciliation \ + import EmptyStockReconciliationItemsError class TestPickList(unittest.TestCase): + def test_pick_list_picks_warehouse_for_each_item(self): - pass -# pick_list = frappe.get_doc({ -# 'doctype': 'Pick List', -# 'company': '_Test Company', -# 'customer': '_Test Customer', -# 'items_based_on': 'Sales Order', -# 'items': [{ -# 'item_code': '_Test Item Home Desktop 100', -# 'qty': 5, -# 'stock_qty': 5, -# 'conversion_factor': 1, -# 'sales_order': '_T-Sales Order-1', -# 'sales_item': '_T-Sales Order-1_item', -# }] -# }) -# pick_list.set_item_locations() + try: + frappe.get_doc({ + 'doctype': 'Stock Reconciliation', + 'company': '_Test Company', + 'purpose': 'Opening Stock', + 'expense_account': 'Temporary Opening - _TC', + 'items': [{ + 'item_code': '_Test Item Home Desktop 100', + 'warehouse': '_Test Warehouse - _TC', + 'valuation_rate': 100, + 'qty': 5 + }] + }).submit() + except EmptyStockReconciliationItemsError: + pass -# self.assertEqual(pick_list.locations[0].item_code, '_Test Item Home Desktop 100') -# self.assertEqual(pick_list.locations[0].warehouse, '_Test Warehouse - _TC') -# self.assertEqual(pick_list.locations[0].qty, 5) + pick_list = frappe.get_doc({ + 'doctype': 'Pick List', + 'company': '_Test Company', + 'customer': '_Test Customer', + 'items_based_on': 'Sales Order', + 'locations': [{ + 'item_code': '_Test Item Home Desktop 100', + 'qty': 5, + 'stock_qty': 5, + 'conversion_factor': 1, + 'sales_order': '_T-Sales Order-1', + 'sales_item': '_T-Sales Order-1_item', + }] + }) + pick_list.set_item_locations() - # def test_pick_list_skips_out_of_stock_item(self): - # pick_list = frappe.get_doc({ - # 'doctype': 'Pick List', - # 'company': '_Test Company', - # 'customer': '_Test Customer', - # 'items_based_on': 'Sales Order', - # 'items': [{ - # 'item_code': '_Test Item Warehouse Group Wise Reorder', - # 'qty': 1000, - # 'stock_qty': 1000, - # 'conversion_factor': 1, - # 'sales_order': '_T-Sales Order-1', - # 'sales_item': '_T-Sales Order-1_item', - # }] - # }) + self.assertEqual(pick_list.locations[0].item_code, '_Test Item Home Desktop 100') + self.assertEqual(pick_list.locations[0].warehouse, '_Test Warehouse - _TC') + self.assertEqual(pick_list.locations[0].qty, 5) - # pick_list.set_item_locations() + def test_pick_list_splits_row_according_to_warhouse_availability(self): + try: + frappe.get_doc({ + 'doctype': 'Stock Reconciliation', + 'company': '_Test Company', + 'purpose': 'Opening Stock', + 'expense_account': 'Temporary Opening - _TC', + 'items': [{ + 'item_code': '_Test Item Warehouse Group Wise Reorder', + 'warehouse': '_Test Warehouse Group-C1 - _TC', + 'valuation_rate': 100, + 'qty': 5 + }] + }).submit() + except EmptyStockReconciliationItemsError: + pass - # self.assertEqual(pick_list.locations[0].item_code, '_Test Item Warehouse Group Wise Reorder') - # self.assertEqual(pick_list.locations[0].warehouse, '_Test Warehouse Group-C1 - _TC') - # self.assertEqual(pick_list.locations[0].qty, 30) + try: + frappe.get_doc({ + 'doctype': 'Stock Reconciliation', + 'company': '_Test Company', + 'purpose': 'Opening Stock', + 'expense_account': 'Temporary Opening - _TC', + 'items': [{ + 'item_code': '_Test Item Warehouse Group Wise Reorder', + 'warehouse': '_Test Warehouse 2 - _TC', + 'valuation_rate': 400, + 'qty': 10 + }] + }).submit() + except EmptyStockReconciliationItemsError: + pass + pick_list = frappe.get_doc({ + 'doctype': 'Pick List', + 'company': '_Test Company', + 'customer': '_Test Customer', + 'items_based_on': 'Sales Order', + 'locations': [{ + 'item_code': '_Test Item Warehouse Group Wise Reorder', + 'qty': 1000, + 'stock_qty': 1000, + 'conversion_factor': 1, + 'sales_order': '_T-Sales Order-1', + 'sales_item': '_T-Sales Order-1_item', + }] + }) - # def test_pick_list_skips_items_in_expired_batch(self): - # pass + pick_list.set_item_locations() - # def test_pick_list_shows_serial_no_for_serialized_item(self): + self.assertEqual(pick_list.locations[0].item_code, '_Test Item Warehouse Group Wise Reorder') + self.assertEqual(pick_list.locations[0].warehouse, '_Test Warehouse Group-C1 - _TC') + self.assertEqual(pick_list.locations[0].qty, 5) - # stock_reconciliation = frappe.get_doc({ - # 'doctype': 'Stock Reconciliation', - # 'company': '_Test Company', - # 'items': [{ - # 'item_code': '_Test Serialized Item', - # 'warehouse': '_Test Warehouse - _TC', - # 'qty': 5, - # 'serial_no': '123450\n123451\n123452\n123453\n123454' - # }] - # }) + self.assertEqual(pick_list.locations[1].item_code, '_Test Item Warehouse Group Wise Reorder') + self.assertEqual(pick_list.locations[1].warehouse, '_Test Warehouse 2 - _TC') + self.assertEqual(pick_list.locations[1].qty, 10) - # stock_reconciliation.submit() + def test_pick_list_shows_serial_no_for_serialized_item(self): - # pick_list = frappe.get_doc({ - # 'doctype': 'Pick List', - # 'company': '_Test Company', - # 'customer': '_Test Customer', - # 'items_based_on': 'Sales Order', - # 'items': [{ - # 'item_code': '_Test Serialized Item', - # 'qty': 1000, - # 'stock_qty': 1000, - # 'conversion_factor': 1, - # 'sales_order': '_T-Sales Order-1', - # 'sales_item': '_T-Sales Order-1_item', - # }] - # }) + stock_reconciliation = frappe.get_doc({ + 'doctype': 'Stock Reconciliation', + 'company': '_Test Company', + 'items': [{ + 'item_code': '_Test Serialized Item', + 'warehouse': '_Test Warehouse - _TC', + 'valuation_rate': 100, + 'qty': 5, + 'serial_no': '123450\n123451\n123452\n123453\n123454' + }] + }) - # pick_list.set_item_locations() - # self.assertEqual(pick_list.locations[0].item_code, '_Test Serialized Item') - # self.assertEqual(pick_list.locations[0].warehouse, '_Test Warehouse - _TC') - # self.assertEqual(pick_list.locations[0].qty, 5) - # self.assertEqual(pick_list.locations[0].serial_no, '123450\n123451\n123452\n123453\n123454') + stock_reconciliation.submit() + pick_list = frappe.get_doc({ + 'doctype': 'Pick List', + 'company': '_Test Company', + 'customer': '_Test Customer', + 'items_based_on': 'Sales Order', + 'locations': [{ + 'item_code': '_Test Serialized Item', + 'qty': 1000, + 'stock_qty': 1000, + 'conversion_factor': 1, + 'sales_order': '_T-Sales Order-1', + 'sales_item': '_T-Sales Order-1_item', + }] + }) + + pick_list.set_item_locations() + self.assertEqual(pick_list.locations[0].item_code, '_Test Serialized Item') + self.assertEqual(pick_list.locations[0].warehouse, '_Test Warehouse - _TC') + self.assertEqual(pick_list.locations[0].qty, 5) + self.assertEqual(pick_list.locations[0].serial_no, '123450\n123451\n123452\n123453\n123454') # def test_pick_list_for_multiple_reference_doctypes(self): # pass + # def test_pick_list_skips_items_in_expired_batch(self): + # pass -## records required + # def test_pick_list_from_sales_order(self): + # pass -''' -batch no -items -sales invoice -stock entries - bin - stock ledger entry -warehouses -''' \ No newline at end of file + # def test_pick_list_from_work_order(self): + # pass + + # def test_pick_list_from_material_request(self): + # pass \ No newline at end of file