def test_reserved_qty_for_over_delivery(self): make_stock_entry(target="_Test Warehouse - _TC", qty=10, rate=100) # set over-delivery tolerance frappe.db.set_value('Item', "_Test Item", 'tolerance', 50) existing_reserved_qty = get_reserved_qty() so = make_sales_order() self.assertEqual(get_reserved_qty(), existing_reserved_qty + 10) dn = create_dn_against_so(so.name, 15) self.assertEqual(get_reserved_qty(), existing_reserved_qty) total_projected_qty = get_total_projected_qty('_Test Item') item_doc_before_cancel = frappe.get_doc('Item', '_Test Item') self.assertEqual(total_projected_qty, item_doc_before_cancel.total_projected_qty) dn.cancel() self.assertEqual(get_reserved_qty(), existing_reserved_qty + 10) total_projected_qty = get_total_projected_qty('_Test Item') item_doc_after_cancel = frappe.get_doc('Item', '_Test Item') self.assertEqual(total_projected_qty, item_doc_after_cancel.total_projected_qty)
def test_reserved_qty_for_over_delivery_via_sales_invoice(self): # set over-delivery tolerance frappe.db.set_value('Item', "_Test Item", 'tolerance', 50) existing_reserved_qty = get_reserved_qty() so = make_sales_order() self.assertEqual(get_reserved_qty(), existing_reserved_qty + 10) si = make_sales_invoice(so.name) si.update_stock = 1 si.get("items")[0].qty = 12 si.insert() si.submit() total_projected_qty = get_total_projected_qty('_Test Item') item_doc = frappe.get_doc('Item', '_Test Item') self.assertEqual(total_projected_qty, item_doc.total_projected_qty) self.assertEqual(get_reserved_qty(), existing_reserved_qty) so.load_from_db() self.assertEqual(so.get("items")[0].delivered_qty, 12) self.assertEqual(so.per_delivered, 100) si.cancel() self.assertEqual(get_reserved_qty(), existing_reserved_qty + 10) total_projected_qty = get_total_projected_qty('_Test Item') item_doc = frappe.get_doc('Item', '_Test Item') self.assertEqual(total_projected_qty, item_doc.total_projected_qty) so.load_from_db() self.assertEqual(so.get("items")[0].delivered_qty, 0) self.assertEqual(so.per_delivered, 0)
def test_reserved_qty_for_over_delivery_with_packing_list(self): make_stock_entry(target="_Test Warehouse - _TC", qty=10, rate=100) make_stock_entry(item="_Test Item Home Desktop 100", target="_Test Warehouse - _TC", qty=10, rate=100) # set over-delivery tolerance frappe.db.set_value('Item', "_Test Product Bundle Item", 'tolerance', 50) existing_reserved_qty_item1 = get_reserved_qty("_Test Item") existing_reserved_qty_item2 = get_reserved_qty("_Test Item Home Desktop 100") so = make_sales_order(item_code="_Test Product Bundle Item") self.assertEqual(get_reserved_qty("_Test Item"), existing_reserved_qty_item1 + 50) self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"), existing_reserved_qty_item2 + 20) dn = create_dn_against_so(so.name, 15) total_projected_qty = get_total_projected_qty('_Test Item') item_doc = frappe.get_doc('Item', '_Test Item') self.assertEqual(total_projected_qty, item_doc.total_projected_qty) self.assertEqual(get_reserved_qty("_Test Item"), existing_reserved_qty_item1) self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"), existing_reserved_qty_item2) dn.cancel() self.assertEqual(get_reserved_qty("_Test Item"), existing_reserved_qty_item1 + 50) self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"), existing_reserved_qty_item2 + 20)
def test_reserved_qty_for_partial_delivery_with_packing_list(self): make_stock_entry(target="_Test Warehouse - _TC", qty=10, rate=100) make_stock_entry(item="_Test Item Home Desktop 100", target="_Test Warehouse - _TC", qty=10, rate=100) existing_reserved_qty_item1 = get_reserved_qty("_Test Item") existing_reserved_qty_item2 = get_reserved_qty( "_Test Item Home Desktop 100") so = make_sales_order(item_code="_Test Product Bundle Item") self.assertEqual(get_reserved_qty("_Test Item"), existing_reserved_qty_item1 + 50) self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"), existing_reserved_qty_item2 + 20) dn = create_dn_against_so(so.name) self.assertEqual(get_reserved_qty("_Test Item"), existing_reserved_qty_item1 + 25) self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"), existing_reserved_qty_item2 + 10) # close so so.load_from_db() so.update_status("Closed") self.assertEqual(get_reserved_qty("_Test Item"), existing_reserved_qty_item1) self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"), existing_reserved_qty_item2) total_projected_qty = get_total_projected_qty('_Test Item') item_doc = frappe.get_doc('Item', '_Test Item') self.assertEqual(total_projected_qty, item_doc.total_projected_qty) # unclose so so.load_from_db() so.update_status('Draft') self.assertEqual(get_reserved_qty("_Test Item"), existing_reserved_qty_item1 + 25) self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"), existing_reserved_qty_item2 + 10) dn.cancel() self.assertEqual(get_reserved_qty("_Test Item"), existing_reserved_qty_item1 + 50) self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"), existing_reserved_qty_item2 + 20) so.load_from_db() so.cancel() self.assertEqual(get_reserved_qty("_Test Item"), existing_reserved_qty_item1) self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"), existing_reserved_qty_item2)
def test_reserved_qty_for_partial_delivery_with_packing_list(self): make_stock_entry(target="_Test Warehouse - _TC", qty=10, rate=100) make_stock_entry(item="_Test Item Home Desktop 100", target="_Test Warehouse - _TC", qty=10, rate=100) existing_reserved_qty_item1 = get_reserved_qty("_Test Item") existing_reserved_qty_item2 = get_reserved_qty("_Test Item Home Desktop 100") so = make_sales_order(item_code="_Test Product Bundle Item") self.assertEqual(get_reserved_qty("_Test Item"), existing_reserved_qty_item1 + 50) self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"), existing_reserved_qty_item2 + 20) dn = create_dn_against_so(so.name) self.assertEqual(get_reserved_qty("_Test Item"), existing_reserved_qty_item1 + 25) self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"), existing_reserved_qty_item2 + 10) # close so so.load_from_db() so.update_status("Closed") self.assertEqual(get_reserved_qty("_Test Item"), existing_reserved_qty_item1) self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"), existing_reserved_qty_item2) total_projected_qty = get_total_projected_qty('_Test Item') item_doc = frappe.get_doc('Item', '_Test Item') self.assertEqual(total_projected_qty, item_doc.total_projected_qty) # unclose so so.load_from_db() so.update_status('Draft') self.assertEqual(get_reserved_qty("_Test Item"), existing_reserved_qty_item1 + 25) self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"), existing_reserved_qty_item2 + 10) dn.cancel() self.assertEqual(get_reserved_qty("_Test Item"), existing_reserved_qty_item1 + 50) self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"), existing_reserved_qty_item2 + 20) so.load_from_db() so.cancel() self.assertEqual(get_reserved_qty("_Test Item"), existing_reserved_qty_item1) self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"), existing_reserved_qty_item2)
def test_projected_qty_for_production_and_sales_order(self): before_production_order = get_bin(self.item, self.warehouse) before_production_order.update_reserved_qty_for_production() self.pro_order = make_prod_order_test_record(item="_Test FG Item", qty=2, source_warehouse=self.warehouse) after_production_order = get_bin(self.item, self.warehouse) sales_order = make_sales_order(item=self.item, qty=2) after_sales_order = get_bin(self.item, self.warehouse) self.assertEqual( cint(before_production_order.reserved_qty_for_production) + 2, cint(after_sales_order.reserved_qty_for_production), ) self.assertEqual(cint(before_production_order.projected_qty), cint(after_sales_order.projected_qty) + 2) total_projected_qty = get_total_projected_qty(self.item) item_doc = frappe.get_doc("Item", self.item) self.assertEqual(total_projected_qty, item_doc.total_projected_qty)
def test_projected_qty_for_production_and_sales_order(self): before_production_order = get_bin(self.item, self.warehouse) before_production_order.update_reserved_qty_for_production() self.pro_order = make_prod_order_test_record(item="_Test FG Item", qty=2, source_warehouse=self.warehouse) after_production_order = get_bin(self.item, self.warehouse) sales_order = make_sales_order(item = self.item, qty = 2) after_sales_order = get_bin(self.item, self.warehouse) self.assertEqual(cint(before_production_order.reserved_qty_for_production) + 2, cint(after_sales_order.reserved_qty_for_production)) self.assertEqual(cint(before_production_order.projected_qty), cint(after_sales_order.projected_qty) + 2) total_projected_qty = get_total_projected_qty(self.item) item_doc = frappe.get_doc('Item', self.item) self.assertEqual(total_projected_qty, item_doc.total_projected_qty)
def test_total_projected_qty_against_sales_order(self): so = make_sales_order(item='_Test Item') total_projected_qty = get_total_projected_qty('_Test Item') item_doc = frappe.get_doc('Item', '_Test Item') self.assertEqual(total_projected_qty, item_doc.total_projected_qty)
def test_total_projected_qty_against_sales_order(self): so = make_sales_order(item = '_Test Item') total_projected_qty = get_total_projected_qty('_Test Item') item_doc = frappe.get_doc('Item', '_Test Item') self.assertEqual(total_projected_qty, item_doc.total_projected_qty)