def test_update_child_qty_rate(self): mr = make_material_request(qty=10) po = make_purchase_order(mr.name) po.supplier = "_Test Supplier" po.items[0].qty = 4 po.save() po.submit() create_pr_against_po(po.name) make_purchase_invoice(po.name) existing_ordered_qty = get_ordered_qty() existing_requested_qty = get_requested_qty() trans_item = json.dumps([{ 'item_code': '_Test Item', 'rate': 200, 'qty': 7, 'docname': po.items[0].name }]) update_child_qty_rate('Purchase Order', trans_item, po.name) mr.reload() self.assertEqual(mr.items[0].ordered_qty, 7) self.assertEqual(mr.per_ordered, 70) self.assertEqual(get_requested_qty(), existing_requested_qty - 3) po.reload() self.assertEqual(po.get("items")[0].rate, 200) self.assertEqual(po.get("items")[0].qty, 7) self.assertEqual(po.get("items")[0].amount, 1400) self.assertEqual(get_ordered_qty(), existing_ordered_qty + 3)
def test_update_child_qty_rate(self): mr = make_material_request(qty=10) po = make_purchase_order(mr.name) po.supplier = "_Test Supplier" po.items[0].qty = 4 po.save() po.submit() create_pr_against_po(po.name) make_purchase_invoice(po.name) existing_ordered_qty = get_ordered_qty() existing_requested_qty = get_requested_qty() trans_item = json.dumps([{'item_code' : '_Test Item', 'rate' : 200, 'qty' : 7, 'docname': po.items[0].name}]) update_child_qty_rate('Purchase Order', trans_item, po.name) mr.reload() self.assertEqual(mr.items[0].ordered_qty, 7) self.assertEqual(mr.per_ordered, 70) self.assertEqual(get_requested_qty(), existing_requested_qty - 3) po.reload() self.assertEqual(po.get("items")[0].rate, 200) self.assertEqual(po.get("items")[0].qty, 7) self.assertEqual(po.get("items")[0].amount, 1400) self.assertEqual(get_ordered_qty(), existing_ordered_qty + 3)
def test_update_child(self): mr = make_material_request(qty=10) po = make_purchase_order(mr.name) po.supplier = "_Test Supplier" po.items[0].qty = 4 po.save() po.submit() create_pr_against_po(po.name) make_pi_from_po(po.name) existing_ordered_qty = get_ordered_qty() existing_requested_qty = get_requested_qty() trans_item = json.dumps([{ "item_code": "_Test Item", "rate": 200, "qty": 7, "docname": po.items[0].name }]) update_child_qty_rate("Purchase Order", trans_item, po.name) mr.reload() self.assertEqual(mr.items[0].ordered_qty, 7) self.assertEqual(mr.per_ordered, 70) self.assertEqual(get_requested_qty(), existing_requested_qty - 3) po.reload() self.assertEqual(po.get("items")[0].rate, 200) self.assertEqual(po.get("items")[0].qty, 7) self.assertEqual(po.get("items")[0].amount, 1400) self.assertEqual(get_ordered_qty(), existing_ordered_qty + 3)
def test_update_remove_child_linked_to_mr(self): """Test impact on linked PO and MR on deleting/updating row.""" mr = make_material_request(qty=10) po = make_purchase_order(mr.name) po.supplier = "_Test Supplier" po.save() po.submit() first_item_of_po = po.get("items")[0] existing_ordered_qty = get_ordered_qty() # 10 existing_requested_qty = get_requested_qty() # 0 # decrease ordered qty by 3 (10 -> 7) and add item trans_item = json.dumps([ { "item_code": first_item_of_po.item_code, "rate": first_item_of_po.rate, "qty": 7, "docname": first_item_of_po.name, }, { "item_code": "_Test Item 2", "rate": 200, "qty": 2 }, ]) update_child_qty_rate("Purchase Order", trans_item, po.name) mr.reload() # requested qty increases as ordered qty decreases self.assertEqual(get_requested_qty(), existing_requested_qty + 3) # 3 self.assertEqual(mr.items[0].ordered_qty, 7) self.assertEqual(get_ordered_qty(), existing_ordered_qty - 3) # 7 # delete first item linked to Material Request trans_item = json.dumps([{ "item_code": "_Test Item 2", "rate": 200, "qty": 2 }]) update_child_qty_rate("Purchase Order", trans_item, po.name) mr.reload() # requested qty increases as ordered qty is 0 (deleted row) self.assertEqual(get_requested_qty(), existing_requested_qty + 10) # 10 self.assertEqual(mr.items[0].ordered_qty, 0) # ordered qty decreases as ordered qty is 0 (deleted row) self.assertEqual(get_ordered_qty(), existing_ordered_qty - 10) # 0
def generate_expected_data(self): if not frappe.db.exists("Company", "_Test Procurement Company"): frappe.get_doc( dict( doctype="Company", company_name="_Test Procurement Company", abbr="_TPC", default_currency="INR", country="Pakistan", )).insert() warehouse = create_warehouse("_Test Procurement Warehouse", company="_Test Procurement Company") mr = make_material_request(company="_Test Procurement Company", warehouse=warehouse, cost_center="Main - _TPC") po = make_purchase_order(mr.name) po.supplier = "_Test Supplier" po.get("items")[0].cost_center = "Main - _TPC" po.submit() pr = make_purchase_receipt(po.name) pr.get("items")[0].cost_center = "Main - _TPC" pr.submit() date_obj = datetime.date(datetime.now()) po.load_from_db() expected_data = { "material_request_date": date_obj, "cost_center": "Main - _TPC", "project": None, "requesting_site": "_Test Procurement Warehouse - _TPC", "requestor": "Administrator", "material_request_no": mr.name, "item_code": "_Test Item", "quantity": 10.0, "unit_of_measurement": "_Test UOM", "status": "To Bill", "purchase_order_date": date_obj, "purchase_order": po.name, "supplier": "_Test Supplier", "estimated_cost": 0.0, "actual_cost": 0.0, "purchase_order_amt": po.net_total, "purchase_order_amt_in_company_currency": po.base_net_total, "expected_delivery_date": date_obj, "actual_delivery_date": date_obj, } return expected_data