From 0c7e28ec9f90e12fcaca9fbcf532342875402282 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 5 May 2014 11:13:36 +0530 Subject: [PATCH] Pricing Rule improvements #565 --- .../doctype/pricing_rule/pricing_rule.json | 166 +++++++++--------- .../doctype/pricing_rule/pricing_rule.py | 8 + 2 files changed, 88 insertions(+), 86 deletions(-) diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.json b/erpnext/accounts/doctype/pricing_rule/pricing_rule.json index 32df323915..2933ffaa6b 100644 --- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.json +++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.json @@ -1,92 +1,14 @@ { "autoname": "PRULE.#####", - "creation": "2014-02-21 15:02:51.000000", + "creation": "2014-02-21 15:02:51", "docstatus": 0, "doctype": "DocType", "document_type": "Master", "fields": [ - { - "fieldname": "basic_section", - "fieldtype": "Section Break", - "label": "Basic Section", - "permlevel": 0 - }, - { - "default": "Today", - "fieldname": "valid_from", - "fieldtype": "Date", - "label": "Valid From", - "permlevel": 0 - }, - { - "fieldname": "valid_upto", - "fieldtype": "Date", - "label": "Valid Upto", - "permlevel": 0 - }, - { - "fieldname": "col_break1", - "fieldtype": "Column Break", - "permlevel": 0 - }, - { - "fieldname": "priority", - "fieldtype": "Select", - "label": "Priority", - "options": "\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20", - "permlevel": 0 - }, - { - "fieldname": "disable", - "fieldtype": "Check", - "label": "Disable", - "permlevel": 0 - }, - { - "fieldname": "price_discount_section", - "fieldtype": "Section Break", - "label": "Price / Discount", - "permlevel": 0 - }, - { - "default": "Discount Percentage", - "fieldname": "price_or_discount", - "fieldtype": "Select", - "label": "Price or Discount", - "options": "\nPrice\nDiscount Percentage", - "permlevel": 0, - "reqd": 1 - }, - { - "fieldname": "col_break2", - "fieldtype": "Column Break", - "permlevel": 0 - }, - { - "depends_on": "eval:doc.price_or_discount==\"Price\"", - "fieldname": "price", - "fieldtype": "Float", - "label": "Price", - "permlevel": 0 - }, - { - "depends_on": "eval:doc.price_or_discount==\"Discount Percentage\"", - "fieldname": "discount_percentage", - "fieldtype": "Float", - "label": "Discount Percentage", - "permlevel": 0 - }, - { - "depends_on": "eval:doc.price_or_discount==\"Discount Percentage\"", - "fieldname": "for_price_list", - "fieldtype": "Link", - "label": "For Price List", - "options": "Price List", - "permlevel": 0 - }, { "fieldname": "applicability_section", "fieldtype": "Section Break", + "in_list_view": 0, "label": "Applicability", "permlevel": 0 }, @@ -94,6 +16,7 @@ "default": "Item Code", "fieldname": "apply_on", "fieldtype": "Select", + "in_list_view": 1, "label": "Apply On", "options": "\nItem Code\nItem Group\nBrand", "permlevel": 0, @@ -103,6 +26,7 @@ "depends_on": "eval:doc.apply_on==\"Item Code\"", "fieldname": "item_code", "fieldtype": "Link", + "in_list_view": 1, "label": "Item Code", "options": "Item", "permlevel": 0, @@ -112,6 +36,7 @@ "depends_on": "eval:doc.apply_on==\"Item Group\"", "fieldname": "item_group", "fieldtype": "Link", + "in_list_view": 1, "label": "Item Group", "options": "Item Group", "permlevel": 0 @@ -120,15 +45,11 @@ "depends_on": "eval:doc.apply_on==\"Brand\"", "fieldname": "brand", "fieldtype": "Link", + "in_list_view": 1, "label": "Brand", "options": "Brand", "permlevel": 0 }, - { - "fieldname": "col_break3", - "fieldtype": "Column Break", - "permlevel": 0 - }, { "fieldname": "applicable_for", "fieldtype": "Select", @@ -203,12 +124,85 @@ "fieldtype": "Float", "label": "Max Qty", "permlevel": 0 + }, + { + "fieldname": "col_break1", + "fieldtype": "Column Break", + "permlevel": 0 + }, + { + "default": "Today", + "fieldname": "valid_from", + "fieldtype": "Date", + "label": "Valid From", + "permlevel": 0 + }, + { + "fieldname": "valid_upto", + "fieldtype": "Date", + "label": "Valid Upto", + "permlevel": 0 + }, + { + "fieldname": "priority", + "fieldtype": "Select", + "label": "Priority", + "options": "\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20", + "permlevel": 0 + }, + { + "fieldname": "disable", + "fieldtype": "Check", + "label": "Disable", + "permlevel": 0 + }, + { + "fieldname": "price_discount_section", + "fieldtype": "Section Break", + "label": "Price / Discount", + "permlevel": 0 + }, + { + "default": "Discount Percentage", + "fieldname": "price_or_discount", + "fieldtype": "Select", + "label": "Price or Discount", + "options": "\nPrice\nDiscount Percentage", + "permlevel": 0, + "reqd": 1 + }, + { + "fieldname": "col_break2", + "fieldtype": "Column Break", + "permlevel": 0 + }, + { + "depends_on": "eval:doc.price_or_discount==\"Price\"", + "fieldname": "price", + "fieldtype": "Float", + "label": "Price", + "permlevel": 0 + }, + { + "depends_on": "eval:doc.price_or_discount==\"Discount Percentage\"", + "fieldname": "discount_percentage", + "fieldtype": "Float", + "label": "Discount Percentage", + "permlevel": 0 + }, + { + "depends_on": "eval:doc.price_or_discount==\"Discount Percentage\"", + "fieldname": "for_price_list", + "fieldtype": "Link", + "label": "For Price List", + "options": "Price List", + "permlevel": 0 } ], "icon": "icon-gift", "idx": 1, "istable": 0, - "modified": "2014-03-05 18:23:34.000000", + "modified": "2014-05-05 11:09:38.244111", "modified_by": "Administrator", "module": "Accounts", "name": "Pricing Rule", diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py index a96614292c..39260a2e9e 100644 --- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py @@ -6,19 +6,27 @@ from __future__ import unicode_literals import frappe from frappe import throw, _ +from frappe.utils import flt from frappe.model.document import Document class PricingRule(Document): def validate(self): self.validate_mandatory() + self.validate_min_max_qty() self.cleanup_fields_value() + def validate_mandatory(self): for field in ["apply_on", "applicable_for", "price_or_discount"]: tocheck = frappe.scrub(self.get(field) or "") if tocheck and not self.get(tocheck): throw(_("{0} is required").format(self.meta.get_label(tocheck)), frappe.MandatoryError) + def validate_min_max_qty(self): + if self.min_qty and self.max_qty and flt(self.min_qty) > flt(self.max_qty): + throw(_("Min Qty can not be greater than Max Qty")) + + def cleanup_fields_value(self): for logic_field in ["apply_on", "applicable_for", "price_or_discount"]: fieldname = frappe.scrub(self.get(logic_field) or "")