Merge branch 'develop' of https://github.com/frappe/erpnext into develop
This commit is contained in:
		
						commit
						738bfdce05
					
				| @ -41,7 +41,8 @@ class EmailCampaign(Document): | ||||
| 		email_campaign_exists = frappe.db.exists("Email Campaign", { | ||||
| 			"campaign_name": self.campaign_name, | ||||
| 			"recipient": self.recipient, | ||||
| 			"status": ("in", ["In Progress", "Scheduled"]) | ||||
| 			"status": ("in", ["In Progress", "Scheduled"]), | ||||
| 			"name": ("!=", self.name) | ||||
| 		}) | ||||
| 		if email_campaign_exists: | ||||
| 			frappe.throw(_("The Campaign '{0}' already exists for the {1} '{2}'").format(self.campaign_name, self.email_campaign_for, self.recipient)) | ||||
| @ -78,7 +79,7 @@ def send_mail(entry, email_campaign): | ||||
| 	comm = make( | ||||
| 		doctype = "Email Campaign", | ||||
| 		name = email_campaign.name, | ||||
| 		subject = email_template.get("subject"), | ||||
| 		subject = frappe.render_template(email_template.get("subject"), context), | ||||
| 		content = frappe.render_template(email_template.get("response"), context), | ||||
| 		sender = sender, | ||||
| 		recipients = recipient, | ||||
|  | ||||
| @ -4,6 +4,7 @@ | ||||
| from __future__ import unicode_literals | ||||
| import frappe | ||||
| from frappe import _ | ||||
| from frappe.utils.data import comma_and | ||||
| 
 | ||||
| def execute(filters=None): | ||||
| #	if not filters: filters = {} | ||||
| @ -13,35 +14,36 @@ def execute(filters=None): | ||||
| 	data = get_bom_stock(filters) | ||||
| 	qty_to_make = filters.get("qty_to_make") | ||||
| 
 | ||||
| 	manufacture_details = get_manufacturer_records() | ||||
| 	for row in data: | ||||
| 		item_map = get_item_details(row.item_code) | ||||
| 		reqd_qty = qty_to_make * row.actual_qty | ||||
| 		last_pur_price = frappe.db.get_value("Item", row.item_code, "last_purchase_rate") | ||||
| 		if row.to_build > 0: | ||||
| 			diff_qty = row.to_build - reqd_qty | ||||
| 			summ_data.append([row.item_code, row.description, item_map[row.item_code]["manufacturer"], item_map[row.item_code]["manufacturer_part_no"], row.actual_qty, row.to_build, reqd_qty, diff_qty, last_pur_price]) | ||||
| 		else: | ||||
| 			diff_qty = 0 - reqd_qty | ||||
| 			summ_data.append([row.item_code, row.description, item_map[row.item_code]["manufacturer"], item_map[row.item_code]["manufacturer_part_no"], row.actual_qty, "0.000", reqd_qty, diff_qty, last_pur_price]) | ||||
| 
 | ||||
| 		summ_data.append(get_report_data(last_pur_price, reqd_qty, row, manufacture_details)) | ||||
| 	return columns, summ_data | ||||
| 
 | ||||
| def get_report_data(last_pur_price, reqd_qty, row, manufacture_details): | ||||
| 	to_build = row.to_build if row.to_build > 0 else 0 | ||||
| 	diff_qty = to_build - reqd_qty | ||||
| 	return [row.item_code, row.description, | ||||
| 		comma_and(manufacture_details.get(row.item_code, {}).get('manufacturer', []), add_quotes=False), | ||||
| 		comma_and(manufacture_details.get(row.item_code, {}).get('manufacturer_part', []), add_quotes=False), | ||||
| 		row.actual_qty, str(to_build), | ||||
| 		reqd_qty, diff_qty, last_pur_price] | ||||
| 
 | ||||
| def get_columns(): | ||||
| 	"""return columns""" | ||||
| 	columns = [ | ||||
| 		_("Item") + ":Link/Item:100", | ||||
| 		_("Description") + "::150", | ||||
| 		_("Manufacturer") + "::100", | ||||
| 		_("Manufacturer Part Number") + "::100", | ||||
| 		_("Manufacturer") + "::250", | ||||
| 		_("Manufacturer Part Number") + "::250", | ||||
| 		_("Qty") + ":Float:50", | ||||
| 		_("Stock Qty") + ":Float:100", | ||||
| 		_("Reqd Qty")+ ":Float:100", | ||||
| 		_("Diff Qty")+ ":Float:100", | ||||
| 		_("Last Purchase Price")+ ":Float:100", | ||||
| 
 | ||||
| 
 | ||||
| 	] | ||||
| 
 | ||||
| 	return columns | ||||
| 
 | ||||
| def get_bom_stock(filters): | ||||
| @ -85,7 +87,12 @@ def get_bom_stock(filters): | ||||
| 
 | ||||
| 			GROUP BY bom_item.item_code""".format(qty_field=qty_field, table=table, conditions=conditions, bom=bom), as_dict=1) | ||||
| 
 | ||||
| def get_item_details(item_code): | ||||
| 		items = frappe.db.sql("""select it.item_group, it.item_name, it.stock_uom, it.name, it.brand, it.description, it.manufacturer_part_no, it.manufacturer from tabItem it where it.item_code = %s""", item_code, as_dict=1) | ||||
| def get_manufacturer_records(): | ||||
| 	details = frappe.get_list('Item Manufacturer', fields = ["manufacturer", "manufacturer_part_no, parent"]) | ||||
| 	manufacture_details = frappe._dict() | ||||
| 	for detail in details: | ||||
| 		dic = manufacture_details.setdefault(detail.get('parent'), {}) | ||||
| 		dic.setdefault('manufacturer', []).append(detail.get('manufacturer')) | ||||
| 		dic.setdefault('manufacturer_part', []).append(detail.get('manufacturer_part_no')) | ||||
| 
 | ||||
| 		return dict((d.name, d) for d in items) | ||||
| 	return manufacture_details | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user