Browse Source

Pricing Rule improvements #565

develop
Nabin Hait 11 years ago
parent
commit
0c7e28ec9f
  1. 166
      erpnext/accounts/doctype/pricing_rule/pricing_rule.json
  2. 8
      erpnext/accounts/doctype/pricing_rule/pricing_rule.py

166
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",

8
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 "")

Loading…
Cancel
Save