Exemple #1
0
    def test_mixed_conditions_for_item_group(self):
        for item in ["Mixed Cond Item 1", "Mixed Cond Item 2"]:
            make_item(item, {"item_group": "Products"})
            make_item_price(item, "_Test Price List", 100)

        test_record = {
            "doctype":
            "Pricing Rule",
            "title":
            "_Test Pricing Rule for Item Group",
            "apply_on":
            "Item Group",
            "item_groups": [
                {
                    "item_group": "Products",
                },
                {
                    "item_group": "Seed",
                },
            ],
            "selling":
            1,
            "mixed_conditions":
            1,
            "currency":
            "USD",
            "rate_or_discount":
            "Discount Percentage",
            "discount_percentage":
            10,
            "applicable_for":
            "Customer Group",
            "customer_group":
            "All Customer Groups",
            "company":
            "_Test Company"
        }
        frappe.get_doc(test_record.copy()).insert()

        args = frappe._dict({
            "item_code": "Mixed Cond Item 1",
            "item_group": "Products",
            "company": "_Test Company",
            "price_list": "_Test Price List",
            "currency": "_Test Currency",
            "doctype": "Sales Order",
            "conversion_rate": 1,
            "price_list_currency": "_Test Currency",
            "plc_conversion_rate": 1,
            "order_type": "Sales",
            "customer": "_Test Customer",
            "customer_group": "_Test Customer Group",
            "name": None
        })
        details = get_item_details(args)
        self.assertEquals(details.get("discount_percentage"), 10)
Exemple #2
0
    def test_remove_pricing_rule(self):
        item = make_item("Water Flask")
        make_item_price("Water Flask", "_Test Price List", 100)

        pricing_rule_record = {
            "doctype": "Pricing Rule",
            "title": "_Test Water Flask Rule",
            "apply_on": "Item Code",
            "price_or_product_discount": "Price",
            "items": [{
                "item_code": "Water Flask",
            }],
            "selling": 1,
            "currency": "INR",
            "rate_or_discount": "Discount Percentage",
            "discount_percentage": 20,
            "company": "_Test Company",
        }
        rule = frappe.get_doc(pricing_rule_record)
        rule.insert()

        si = create_sales_invoice(do_not_save=True, item_code="Water Flask")
        si.selling_price_list = "_Test Price List"
        si.save()

        self.assertEqual(si.items[0].price_list_rate, 100)
        self.assertEqual(si.items[0].discount_percentage, 20)
        self.assertEqual(si.items[0].rate, 80)

        si.ignore_pricing_rule = 1
        si.save()

        self.assertEqual(si.items[0].discount_percentage, 0)
        self.assertEqual(si.items[0].rate, 100)

        si.delete()
        rule.delete()
        frappe.get_doc("Item Price", {"item_code": "Water Flask"}).delete()
        item.delete()
Exemple #3
0
	def test_item_price_with_pricing_rule(self):
		item = make_item("Water Flask")
		make_item_price("Water Flask", "_Test Price List", 100)

		pricing_rule_record = {
			"doctype": "Pricing Rule",
			"title": "_Test Water Flask Rule",
			"apply_on": "Item Code",
			"items": [{
				"item_code": "Water Flask",
			}],
			"selling": 1,
			"currency": "INR",
			"rate_or_discount": "Rate",
			"rate": 0,
			"margin_type": "Percentage",
			"margin_rate_or_amount": 2,
			"company": "_Test Company"
		}
		rule = frappe.get_doc(pricing_rule_record)
		rule.insert()

		si = create_sales_invoice(do_not_save=True, item_code="Water Flask")
		si.selling_price_list = "_Test Price List"
		si.save()

		# If rate in Rule is 0, give preference to Item Price if it exists
		self.assertEqual(si.items[0].price_list_rate, 100)
		self.assertEqual(si.items[0].margin_rate_or_amount, 2)
		self.assertEqual(si.items[0].rate_with_margin, 102)
		self.assertEqual(si.items[0].rate, 102)

		si.delete()
		rule.delete()
		frappe.get_doc("Item Price", {"item_code": "Water Flask"}).delete()
		item.delete()