Example #1
0
    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)
Example #2
0
	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)
Example #3
0
    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)
Example #4
0
    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