feat: added multi-select fields to create multiple pricing rules.
This commit is contained in:
		
							parent
							
								
									c5e7673277
								
							
						
					
					
						commit
						415519af15
					
				
							
								
								
									
										0
									
								
								erpnext/accounts/doctype/campaign_item/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								erpnext/accounts/doctype/campaign_item/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										31
									
								
								erpnext/accounts/doctype/campaign_item/campaign_item.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								erpnext/accounts/doctype/campaign_item/campaign_item.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | ||||
| { | ||||
|  "actions": [], | ||||
|  "creation": "2021-05-06 16:18:25.410476", | ||||
|  "doctype": "DocType", | ||||
|  "editable_grid": 1, | ||||
|  "engine": "InnoDB", | ||||
|  "field_order": [ | ||||
|   "campaign" | ||||
|  ], | ||||
|  "fields": [ | ||||
|   { | ||||
|    "fieldname": "campaign", | ||||
|    "fieldtype": "Link", | ||||
|    "in_list_view": 1, | ||||
|    "label": "Campaign", | ||||
|    "options": "Campaign" | ||||
|   } | ||||
|  ], | ||||
|  "index_web_pages_for_search": 1, | ||||
|  "istable": 1, | ||||
|  "links": [], | ||||
|  "modified": "2021-05-07 10:43:49.717633", | ||||
|  "modified_by": "Administrator", | ||||
|  "module": "Accounts", | ||||
|  "name": "Campaign Item", | ||||
|  "owner": "Administrator", | ||||
|  "permissions": [], | ||||
|  "sort_field": "modified", | ||||
|  "sort_order": "DESC", | ||||
|  "track_changes": 1 | ||||
| } | ||||
							
								
								
									
										10
									
								
								erpnext/accounts/doctype/campaign_item/campaign_item.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								erpnext/accounts/doctype/campaign_item/campaign_item.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors | ||||
| # For license information, please see license.txt | ||||
| 
 | ||||
| from __future__ import unicode_literals | ||||
| # import frappe | ||||
| from frappe.model.document import Document | ||||
| 
 | ||||
| class CampaignItem(Document): | ||||
| 	pass | ||||
| @ -0,0 +1,31 @@ | ||||
| { | ||||
|  "actions": [], | ||||
|  "creation": "2021-05-06 16:12:42.558878", | ||||
|  "doctype": "DocType", | ||||
|  "editable_grid": 1, | ||||
|  "engine": "InnoDB", | ||||
|  "field_order": [ | ||||
|   "customer_group" | ||||
|  ], | ||||
|  "fields": [ | ||||
|   { | ||||
|    "fieldname": "customer_group", | ||||
|    "fieldtype": "Link", | ||||
|    "in_list_view": 1, | ||||
|    "label": "Customer Group", | ||||
|    "options": "Customer Group" | ||||
|   } | ||||
|  ], | ||||
|  "index_web_pages_for_search": 1, | ||||
|  "istable": 1, | ||||
|  "links": [], | ||||
|  "modified": "2021-05-07 10:39:21.563506", | ||||
|  "modified_by": "Administrator", | ||||
|  "module": "Accounts", | ||||
|  "name": "Customer Group Item", | ||||
|  "owner": "Administrator", | ||||
|  "permissions": [], | ||||
|  "sort_field": "modified", | ||||
|  "sort_order": "DESC", | ||||
|  "track_changes": 1 | ||||
| } | ||||
| @ -0,0 +1,10 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors | ||||
| # For license information, please see license.txt | ||||
| 
 | ||||
| from __future__ import unicode_literals | ||||
| # import frappe | ||||
| from frappe.model.document import Document | ||||
| 
 | ||||
| class CustomerGroupItem(Document): | ||||
| 	pass | ||||
							
								
								
									
										0
									
								
								erpnext/accounts/doctype/customer_item/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								erpnext/accounts/doctype/customer_item/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										31
									
								
								erpnext/accounts/doctype/customer_item/customer_item.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								erpnext/accounts/doctype/customer_item/customer_item.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | ||||
| { | ||||
|  "actions": [], | ||||
|  "creation": "2021-05-05 14:04:54.266353", | ||||
|  "doctype": "DocType", | ||||
|  "editable_grid": 1, | ||||
|  "engine": "InnoDB", | ||||
|  "field_order": [ | ||||
|   "customer" | ||||
|  ], | ||||
|  "fields": [ | ||||
|   { | ||||
|    "fieldname": "customer", | ||||
|    "fieldtype": "Link", | ||||
|    "in_list_view": 1, | ||||
|    "label": "Customer ", | ||||
|    "options": "Customer" | ||||
|   } | ||||
|  ], | ||||
|  "index_web_pages_for_search": 1, | ||||
|  "istable": 1, | ||||
|  "links": [], | ||||
|  "modified": "2021-05-06 10:02:32.967841", | ||||
|  "modified_by": "Administrator", | ||||
|  "module": "Accounts", | ||||
|  "name": "Customer Item", | ||||
|  "owner": "Administrator", | ||||
|  "permissions": [], | ||||
|  "sort_field": "modified", | ||||
|  "sort_order": "DESC", | ||||
|  "track_changes": 1 | ||||
| } | ||||
							
								
								
									
										10
									
								
								erpnext/accounts/doctype/customer_item/customer_item.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								erpnext/accounts/doctype/customer_item/customer_item.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors | ||||
| # For license information, please see license.txt | ||||
| 
 | ||||
| from __future__ import unicode_literals | ||||
| # import frappe | ||||
| from frappe.model.document import Document | ||||
| 
 | ||||
| class CustomerItem(Document): | ||||
| 	pass | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -30,17 +30,17 @@ class PromotionalScheme(Document): | ||||
| 			frappe.throw(_("Price or product discount slabs are required")) | ||||
| 
 | ||||
| 	def on_update(self): | ||||
| 		data = frappe.get_all('Pricing Rule', fields = ["promotional_scheme_id", "name"], | ||||
| 			filters = {'promotional_scheme': self.name}) or {} | ||||
| 
 | ||||
| 		data = frappe.get_all('Pricing Rule', fields = ["promotional_scheme_id", "name", "creation"], order_by = 'creation asc', | ||||
| 			filters = {'promotional_scheme': self.name, 'applicable_for': self.applicable_for}) or {} | ||||
| 		self.update_pricing_rules(data) | ||||
| 
 | ||||
| 	def update_pricing_rules(self, data): | ||||
| 		rules = {} | ||||
| 		count = 0 | ||||
| 
 | ||||
| 		names = [] | ||||
| 		for d in data: | ||||
| 			rules[d.get('promotional_scheme_id')] = d.get('name') | ||||
| 			names.append(d.name) | ||||
| 			rules[d.get('promotional_scheme_id')] = names | ||||
| 
 | ||||
| 		docs = get_pricing_rules(self, rules) | ||||
| 
 | ||||
| @ -73,42 +73,73 @@ def get_pricing_rules(doc, rules = {}): | ||||
| def _get_pricing_rules(doc, child_doc, discount_fields, rules = {}): | ||||
| 	new_doc = [] | ||||
| 	args = get_args_for_pricing_rule(doc) | ||||
| 	applicable_for = frappe.scrub(doc.get('applicable_for')) | ||||
| 	for d in doc.get(child_doc): | ||||
| 		if d.name in rules: | ||||
| 			pr = frappe.get_doc('Pricing Rule', rules.get(d.name)) | ||||
| 			for a in args.get(applicable_for): | ||||
| 				 | ||||
| 				temp_args = args.copy() | ||||
| 				docname = frappe.get_all('Pricing Rule', fields = ["promotional_scheme_id", "name", applicable_for], | ||||
| 					filters = {'promotional_scheme_id': d.name, applicable_for: a}) | ||||
| 					 | ||||
| 				if docname: | ||||
| 					pr = frappe.get_doc('Pricing Rule', docname[0].get('name')) | ||||
| 					temp_args[applicable_for] = a | ||||
| 					pr = set_args(temp_args,pr,doc,child_doc,discount_fields,d) | ||||
| 				else: | ||||
| 					pr = frappe.new_doc("Pricing Rule") | ||||
| 					pr.title = make_autoname("{0}/.####".format(doc.name)) | ||||
| 					temp_args[applicable_for] = a | ||||
| 					pr = set_args(temp_args,pr,doc,child_doc,discount_fields,d) | ||||
| 				 | ||||
| 				new_doc.append(pr) | ||||
| 				 | ||||
| 		else: | ||||
| 			pr = frappe.new_doc("Pricing Rule") | ||||
| 			pr.title = make_autoname("{0}/.####".format(doc.name)) | ||||
| 			for i in range(len(args.get(applicable_for))) : | ||||
| 
 | ||||
| 		pr.update(args) | ||||
| 		for field in (other_fields + discount_fields): | ||||
| 			pr.set(field, d.get(field)) | ||||
| 
 | ||||
| 		pr.promotional_scheme_id = d.name | ||||
| 		pr.promotional_scheme = doc.name | ||||
| 		pr.disable = d.disable if d.disable else doc.disable | ||||
| 		pr.price_or_product_discount = ('Price' | ||||
| 			if child_doc == 'price_discount_slabs' else 'Product') | ||||
| 
 | ||||
| 		for field in ['items', 'item_groups', 'brands']: | ||||
| 			if doc.get(field): | ||||
| 				pr.set(field, []) | ||||
| 
 | ||||
| 			apply_on = frappe.scrub(doc.get('apply_on')) | ||||
| 			for d in doc.get(field): | ||||
| 				pr.append(field, { | ||||
| 					apply_on: d.get(apply_on), | ||||
| 					'uom': d.uom | ||||
| 				}) | ||||
| 
 | ||||
| 		new_doc.append(pr) | ||||
| 				pr = frappe.new_doc("Pricing Rule") | ||||
| 				pr.title = make_autoname("{0}/.####".format(doc.name)) | ||||
| 				temp_args = args.copy() | ||||
| 				temp_args[applicable_for] = args[applicable_for][i] | ||||
| 				pr = set_args(temp_args,pr,doc,child_doc,discount_fields,d) | ||||
| 				new_doc.append(pr) | ||||
| 
 | ||||
| 	return new_doc | ||||
| 
 | ||||
| def set_args(args,pr,doc,child_doc,discount_fields,d): | ||||
| 	pr.update(args) | ||||
| 	for field in (other_fields + discount_fields): | ||||
| 		pr.set(field, d.get(field)) | ||||
| 
 | ||||
| 	pr.promotional_scheme_id = d.name | ||||
| 	pr.promotional_scheme = doc.name | ||||
| 	pr.disable = d.disable if d.disable else doc.disable | ||||
| 	pr.price_or_product_discount = ('Price' | ||||
| 		if child_doc == 'price_discount_slabs' else 'Product') | ||||
| 
 | ||||
| 	for field in ['items', 'item_groups', 'brands']: | ||||
| 		if doc.get(field): | ||||
| 			pr.set(field, []) | ||||
| 
 | ||||
| 		apply_on = frappe.scrub(doc.get('apply_on')) | ||||
| 		for d in doc.get(field): | ||||
| 			pr.append(field, { | ||||
| 				apply_on: d.get(apply_on), | ||||
| 				'uom': d.uom | ||||
| 			}) | ||||
| 	return pr | ||||
| 
 | ||||
| def get_args_for_pricing_rule(doc): | ||||
| 	args = { 'promotional_scheme': doc.name } | ||||
| 
 | ||||
| 	applicable_for = frappe.scrub(doc.get('applicable_for')) | ||||
| 	 | ||||
| 	for d in pricing_rule_fields: | ||||
| 		args[d] = doc.get(d) | ||||
| 
 | ||||
| 		if d == applicable_for: | ||||
| 			items = [] | ||||
| 			for i in doc.get(applicable_for): | ||||
| 				items.append(i.get(applicable_for))	 | ||||
| 			args[d] = items	 | ||||
| 		 | ||||
| 		else: | ||||
| 			args[d] = doc.get(d) | ||||
| 	return args | ||||
|  | ||||
| @ -0,0 +1,31 @@ | ||||
| { | ||||
|  "actions": [], | ||||
|  "creation": "2021-05-06 16:17:44.329943", | ||||
|  "doctype": "DocType", | ||||
|  "editable_grid": 1, | ||||
|  "engine": "InnoDB", | ||||
|  "field_order": [ | ||||
|   "sales_partner" | ||||
|  ], | ||||
|  "fields": [ | ||||
|   { | ||||
|    "fieldname": "sales_partner", | ||||
|    "fieldtype": "Link", | ||||
|    "in_list_view": 1, | ||||
|    "label": "Sales Partner ", | ||||
|    "options": "Sales Partner" | ||||
|   } | ||||
|  ], | ||||
|  "index_web_pages_for_search": 1, | ||||
|  "istable": 1, | ||||
|  "links": [], | ||||
|  "modified": "2021-05-07 10:43:37.532095", | ||||
|  "modified_by": "Administrator", | ||||
|  "module": "Accounts", | ||||
|  "name": "Sales Partner Item", | ||||
|  "owner": "Administrator", | ||||
|  "permissions": [], | ||||
|  "sort_field": "modified", | ||||
|  "sort_order": "DESC", | ||||
|  "track_changes": 1 | ||||
| } | ||||
| @ -0,0 +1,10 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors | ||||
| # For license information, please see license.txt | ||||
| 
 | ||||
| from __future__ import unicode_literals | ||||
| # import frappe | ||||
| from frappe.model.document import Document | ||||
| 
 | ||||
| class SalesPartnerItem(Document): | ||||
| 	pass | ||||
| @ -0,0 +1,31 @@ | ||||
| { | ||||
|  "actions": [], | ||||
|  "creation": "2021-05-06 16:19:22.040795", | ||||
|  "doctype": "DocType", | ||||
|  "editable_grid": 1, | ||||
|  "engine": "InnoDB", | ||||
|  "field_order": [ | ||||
|   "supplier_group" | ||||
|  ], | ||||
|  "fields": [ | ||||
|   { | ||||
|    "fieldname": "supplier_group", | ||||
|    "fieldtype": "Link", | ||||
|    "in_list_view": 1, | ||||
|    "label": "Supplier Group", | ||||
|    "options": "Supplier Group" | ||||
|   } | ||||
|  ], | ||||
|  "index_web_pages_for_search": 1, | ||||
|  "istable": 1, | ||||
|  "links": [], | ||||
|  "modified": "2021-05-07 10:43:59.877938", | ||||
|  "modified_by": "Administrator", | ||||
|  "module": "Accounts", | ||||
|  "name": "Supplier Group Item", | ||||
|  "owner": "Administrator", | ||||
|  "permissions": [], | ||||
|  "sort_field": "modified", | ||||
|  "sort_order": "DESC", | ||||
|  "track_changes": 1 | ||||
| } | ||||
| @ -0,0 +1,10 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors | ||||
| # For license information, please see license.txt | ||||
| 
 | ||||
| from __future__ import unicode_literals | ||||
| # import frappe | ||||
| from frappe.model.document import Document | ||||
| 
 | ||||
| class SupplierGroupItem(Document): | ||||
| 	pass | ||||
							
								
								
									
										0
									
								
								erpnext/accounts/doctype/supplier_item/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								erpnext/accounts/doctype/supplier_item/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										31
									
								
								erpnext/accounts/doctype/supplier_item/supplier_item.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								erpnext/accounts/doctype/supplier_item/supplier_item.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | ||||
| { | ||||
|  "actions": [], | ||||
|  "creation": "2021-05-06 16:18:54.758468", | ||||
|  "doctype": "DocType", | ||||
|  "editable_grid": 1, | ||||
|  "engine": "InnoDB", | ||||
|  "field_order": [ | ||||
|   "supplier" | ||||
|  ], | ||||
|  "fields": [ | ||||
|   { | ||||
|    "fieldname": "supplier", | ||||
|    "fieldtype": "Link", | ||||
|    "in_list_view": 1, | ||||
|    "label": "Supplier", | ||||
|    "options": "Supplier" | ||||
|   } | ||||
|  ], | ||||
|  "index_web_pages_for_search": 1, | ||||
|  "istable": 1, | ||||
|  "links": [], | ||||
|  "modified": "2021-05-07 10:44:09.707778", | ||||
|  "modified_by": "Administrator", | ||||
|  "module": "Accounts", | ||||
|  "name": "Supplier Item", | ||||
|  "owner": "Administrator", | ||||
|  "permissions": [], | ||||
|  "sort_field": "modified", | ||||
|  "sort_order": "DESC", | ||||
|  "track_changes": 1 | ||||
| } | ||||
							
								
								
									
										10
									
								
								erpnext/accounts/doctype/supplier_item/supplier_item.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								erpnext/accounts/doctype/supplier_item/supplier_item.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors | ||||
| # For license information, please see license.txt | ||||
| 
 | ||||
| from __future__ import unicode_literals | ||||
| # import frappe | ||||
| from frappe.model.document import Document | ||||
| 
 | ||||
| class SupplierItem(Document): | ||||
| 	pass | ||||
							
								
								
									
										0
									
								
								erpnext/accounts/doctype/territory_item/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								erpnext/accounts/doctype/territory_item/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										31
									
								
								erpnext/accounts/doctype/territory_item/territory_item.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								erpnext/accounts/doctype/territory_item/territory_item.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | ||||
| { | ||||
|  "actions": [], | ||||
|  "creation": "2021-05-06 16:16:51.885441", | ||||
|  "doctype": "DocType", | ||||
|  "editable_grid": 1, | ||||
|  "engine": "InnoDB", | ||||
|  "field_order": [ | ||||
|   "territory" | ||||
|  ], | ||||
|  "fields": [ | ||||
|   { | ||||
|    "fieldname": "territory", | ||||
|    "fieldtype": "Link", | ||||
|    "in_list_view": 1, | ||||
|    "label": "Territory", | ||||
|    "options": "Territory" | ||||
|   } | ||||
|  ], | ||||
|  "index_web_pages_for_search": 1, | ||||
|  "istable": 1, | ||||
|  "links": [], | ||||
|  "modified": "2021-05-07 10:43:26.641030", | ||||
|  "modified_by": "Administrator", | ||||
|  "module": "Accounts", | ||||
|  "name": "Territory Item", | ||||
|  "owner": "Administrator", | ||||
|  "permissions": [], | ||||
|  "sort_field": "modified", | ||||
|  "sort_order": "DESC", | ||||
|  "track_changes": 1 | ||||
| } | ||||
							
								
								
									
										10
									
								
								erpnext/accounts/doctype/territory_item/territory_item.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								erpnext/accounts/doctype/territory_item/territory_item.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors | ||||
| # For license information, please see license.txt | ||||
| 
 | ||||
| from __future__ import unicode_literals | ||||
| # import frappe | ||||
| from frappe.model.document import Document | ||||
| 
 | ||||
| class TerritoryItem(Document): | ||||
| 	pass | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user