Merge branch 'develop' of github.com:webnotes/erpnext into reports
This commit is contained in:
		
						commit
						ce2dfadfbd
					
				
							
								
								
									
										152
									
								
								config.json
									
									
									
									
									
								
							
							
						
						
									
										152
									
								
								config.json
									
									
									
									
									
								
							| @ -1,78 +1,78 @@ | ||||
| { | ||||
| 	"app_name": "ERPNext", | ||||
| 	"app_version": "3.0.0", | ||||
| 	"requires_framework_version": "==3.0.0", | ||||
| 	"base_template": "app/portal/templates/base.html", | ||||
| 	"modules": { | ||||
| 		"Selling": { | ||||
| 			"link": "selling-home", | ||||
| 			"color": "#1abc9c", | ||||
| 			"icon": "icon-tag", | ||||
| 			"type": "module" | ||||
| 		}, | ||||
| 		"Accounts": { | ||||
| 			"link": "accounts-home", | ||||
| 			"color": "#3498db", | ||||
| 			"icon": "icon-money", | ||||
| 			"type": "module" | ||||
| 		}, | ||||
| 		"Stock": { | ||||
| 			"type": "module", | ||||
| 			"link": "stock-home", | ||||
| 			"color": "#f39c12", | ||||
| 			"icon": "icon-truck" | ||||
| 		}, | ||||
| 		"Buying": { | ||||
| 			"type": "module", | ||||
| 			"link": "buying-home", | ||||
| 			"color": "#c0392b", | ||||
| 			"icon": "icon-shopping-cart" | ||||
| 		}, | ||||
| 		"Support": { | ||||
| 			"type": "module", | ||||
| 			"link": "support-home", | ||||
| 			"color": "#2c3e50", | ||||
| 			"icon": "icon-phone" | ||||
| 		}, | ||||
| 		"Projects": { | ||||
| 			"type": "module", | ||||
| 			"link": "projects-home", | ||||
| 			"color": "#8e44ad", | ||||
| 			"icon": "icon-puzzle-piece" | ||||
| 		}, | ||||
| 		"Manufacturing": { | ||||
| 			"type": "module", | ||||
| 			"link": "manufacturing-home", | ||||
| 			"color": "#7f8c8d", | ||||
| 			"icon": "icon-cogs" | ||||
| 		}, | ||||
| 		"HR": { | ||||
| 			"type": "module", | ||||
| 			"link": "hr-home", | ||||
| 			"color": "#2ecc71", | ||||
| 			"label": "Human Resources", | ||||
| 			"icon": "icon-group" | ||||
| 		}, | ||||
| 		"Setup": { | ||||
| 			"type": "setup", | ||||
| 			"link": "Setup", | ||||
| 			"color": "#bdc3c7", | ||||
| 			"icon": "icon-wrench" | ||||
| 		}, | ||||
| 		"Activity": { | ||||
| 			"type": "page", | ||||
| 			"link": "activity", | ||||
| 			"color": "#e67e22", | ||||
| 			"icon": "icon-play", | ||||
| 			"label": "Activity" | ||||
| 		}, | ||||
| 		"Notes": { | ||||
| 			"type": "list", | ||||
| 			"doctype": "Note", | ||||
| 			"link": "List/Note", | ||||
| 			"color": "#95a5a6", | ||||
| 			"label": "Notes", | ||||
| 			"icon": "icon-file-alt" | ||||
| 		} | ||||
| 	} | ||||
|  "app_name": "ERPNext",  | ||||
|  "app_version": "3.1.0",  | ||||
|  "base_template": "app/portal/templates/base.html",  | ||||
|  "modules": { | ||||
|   "Accounts": { | ||||
|    "color": "#3498db",  | ||||
|    "icon": "icon-money",  | ||||
|    "link": "accounts-home",  | ||||
|    "type": "module" | ||||
|   },  | ||||
|   "Activity": { | ||||
|    "color": "#e67e22",  | ||||
|    "icon": "icon-play",  | ||||
|    "label": "Activity",  | ||||
|    "link": "activity",  | ||||
|    "type": "page" | ||||
|   },  | ||||
|   "Buying": { | ||||
|    "color": "#c0392b",  | ||||
|    "icon": "icon-shopping-cart",  | ||||
|    "link": "buying-home",  | ||||
|    "type": "module" | ||||
|   },  | ||||
|   "HR": { | ||||
|    "color": "#2ecc71",  | ||||
|    "icon": "icon-group",  | ||||
|    "label": "Human Resources",  | ||||
|    "link": "hr-home",  | ||||
|    "type": "module" | ||||
|   },  | ||||
|   "Manufacturing": { | ||||
|    "color": "#7f8c8d",  | ||||
|    "icon": "icon-cogs",  | ||||
|    "link": "manufacturing-home",  | ||||
|    "type": "module" | ||||
|   },  | ||||
|   "Notes": { | ||||
|    "color": "#95a5a6",  | ||||
|    "doctype": "Note",  | ||||
|    "icon": "icon-file-alt",  | ||||
|    "label": "Notes",  | ||||
|    "link": "List/Note",  | ||||
|    "type": "list" | ||||
|   },  | ||||
|   "Projects": { | ||||
|    "color": "#8e44ad",  | ||||
|    "icon": "icon-puzzle-piece",  | ||||
|    "link": "projects-home",  | ||||
|    "type": "module" | ||||
|   },  | ||||
|   "Selling": { | ||||
|    "color": "#1abc9c",  | ||||
|    "icon": "icon-tag",  | ||||
|    "link": "selling-home",  | ||||
|    "type": "module" | ||||
|   },  | ||||
|   "Setup": { | ||||
|    "color": "#bdc3c7",  | ||||
|    "icon": "icon-wrench",  | ||||
|    "link": "Setup",  | ||||
|    "type": "setup" | ||||
|   },  | ||||
|   "Stock": { | ||||
|    "color": "#f39c12",  | ||||
|    "icon": "icon-truck",  | ||||
|    "link": "stock-home",  | ||||
|    "type": "module" | ||||
|   },  | ||||
|   "Support": { | ||||
|    "color": "#2c3e50",  | ||||
|    "icon": "icon-phone",  | ||||
|    "link": "support-home",  | ||||
|    "type": "module" | ||||
|   } | ||||
|  },  | ||||
|  "requires_framework_version": "==3.1.0" | ||||
| } | ||||
| @ -65,8 +65,13 @@ def send_message(subject="Website Query", message="", sender="", status="Open"): | ||||
| 	if not website_send_message(subject, message, sender): | ||||
| 		return | ||||
| 		 | ||||
| 	# make lead / communication | ||||
| 	from selling.doctype.lead.get_leads import add_sales_communication | ||||
| 	add_sales_communication(subject or "Website Query", message, sender, sender,  | ||||
| 		mail=None, status=status) | ||||
| 	if subject=="Support": | ||||
| 		# create support ticket | ||||
| 		from support.doctype.support_ticket.get_support_mails import add_support_communication | ||||
| 		add_support_communication(subject, message, sender, mail=None) | ||||
| 	else: | ||||
| 		# make lead / communication | ||||
| 		from selling.doctype.lead.get_leads import add_sales_communication | ||||
| 		add_sales_communication(subject or "Website Query", message, sender, sender,  | ||||
| 			mail=None, status=status) | ||||
| 	 | ||||
| @ -15,14 +15,14 @@ wn.query_reports["Stock Ledger"] = { | ||||
| 			"fieldname":"from_date", | ||||
| 			"label": wn._("From Date"), | ||||
| 			"fieldtype": "Date", | ||||
| 			"default": wn.defaults.get_user_default("year_start_date"), | ||||
| 			"default": wn.datetime.add_months(wn.datetime.get_today(), -1), | ||||
| 			"reqd": 1 | ||||
| 		}, | ||||
| 		{ | ||||
| 			"fieldname":"to_date", | ||||
| 			"label": wn._("To Date"), | ||||
| 			"fieldtype": "Date", | ||||
| 			"default": wn.defaults.get_user_default("year_end_date"), | ||||
| 			"default": wn.datetime.get_today(), | ||||
| 			"reqd": 1 | ||||
| 		}, | ||||
| 		{ | ||||
|  | ||||
| @ -3,37 +3,62 @@ | ||||
| 
 | ||||
| from __future__ import unicode_literals | ||||
| import webnotes | ||||
| from webnotes import _ | ||||
| 
 | ||||
| def execute(filters=None): | ||||
| 	columns = ["Date:Datetime:95", "Item:Link/Item:100", "Item Name::100",  | ||||
| 	columns = get_columns() | ||||
| 	sl_entries = get_stock_ledger_entries(filters) | ||||
| 	item_details = get_item_details(filters) | ||||
| 	 | ||||
| 	data = [] | ||||
| 	for sle in sl_entries: | ||||
| 		item_detail = item_details[sle.item_code] | ||||
| 		data.append([sle.date, sle.item_code, item_detail.item_name, item_detail.item_group,  | ||||
| 			item_detail.brand, item_detail.description, sle.warehouse, item_detail.stock_uom,  | ||||
| 			sle.actual_qty, sle.qty_after_transaction, sle.stock_value, sle.voucher_type,  | ||||
| 			sle.voucher_no, sle.batch_no, sle.serial_no, sle.company]) | ||||
| 	 | ||||
| 	return columns, data | ||||
| 	 | ||||
| def get_columns(): | ||||
| 	return ["Date:Datetime:95", "Item:Link/Item:100", "Item Name::100",  | ||||
| 		"Item Group:Link/Item Group:100", "Brand:Link/Brand:100", | ||||
| 		"Description::200", "Warehouse:Link/Warehouse:100", | ||||
| 		"Stock UOM:Link/UOM:100", "Qty:Float:50", "Balance Qty:Float:80",  | ||||
| 		"Balance Value:Currency:100", "Voucher Type::100", "Voucher #::100", | ||||
| 		"Batch:Link/Batch:100", "Serial #:Link/Serial No:100", "Company:Link/Company:100"] | ||||
| 	 | ||||
| 	data = webnotes.conn.sql("""select concat_ws(" ", posting_date, posting_time), | ||||
| 			item.name, item.item_name, item.item_group, brand, description, warehouse, sle.stock_uom, | ||||
| 			actual_qty, qty_after_transaction, stock_value, voucher_type, voucher_no,  | ||||
| 			batch_no, serial_no, company | ||||
| 		from `tabStock Ledger Entry` sle, | ||||
| 			(select name, item_name, description, stock_uom, brand, item_group | ||||
| 				from `tabItem` {item_conditions}) item | ||||
| 		where item_code = item.name and | ||||
| 			company = %(company)s and | ||||
| def get_stock_ledger_entries(filters): | ||||
| 	if not filters.get("company"): | ||||
| 		webnotes.throw(_("Company is mandatory")) | ||||
| 	if not filters.get("from_date"): | ||||
| 		webnotes.throw(_("From Date is mandatory")) | ||||
| 	if not filters.get("to_date"): | ||||
| 		webnotes.throw(_("To Date is mandatory")) | ||||
| 		 | ||||
| 	return webnotes.conn.sql("""select concat_ws(" ", posting_date, posting_time) as date, | ||||
| 			item_code, warehouse, actual_qty, qty_after_transaction,  | ||||
| 			stock_value, voucher_type, voucher_no, batch_no, serial_no, company | ||||
| 		from `tabStock Ledger Entry` | ||||
| 		where company = %(company)s and | ||||
| 			posting_date between %(from_date)s and %(to_date)s | ||||
| 			{sle_conditions} | ||||
| 			order by posting_date desc, posting_time desc, sle.name desc"""\ | ||||
| 		.format(item_conditions=get_item_conditions(filters), | ||||
| 			sle_conditions=get_sle_conditions(filters)), | ||||
| 		filters) | ||||
| 			order by posting_date desc, posting_time desc, name desc"""\ | ||||
| 		.format(sle_conditions=get_sle_conditions(filters)), filters, as_dict=1) | ||||
| 
 | ||||
| 	return columns, data | ||||
| def get_item_details(filters): | ||||
| 	item_details = {} | ||||
| 	for item in webnotes.conn.sql("""select name, item_name, description, item_group,  | ||||
| 			brand, stock_uom from `tabItem` {item_conditions}"""\ | ||||
| 			.format(item_conditions=get_item_conditions(filters)), filters, as_dict=1): | ||||
| 		item_details.setdefault(item.name, item) | ||||
| 		 | ||||
| 	return item_details | ||||
| 	 | ||||
| def get_item_conditions(filters): | ||||
| 	conditions = [] | ||||
| 	if filters.get("item_code"): | ||||
| 		conditions.append("item_code=%(item_code)s") | ||||
| 		conditions.append("name=%(item_code)s") | ||||
| 	if filters.get("brand"): | ||||
| 		conditions.append("brand=%(brand)s") | ||||
| 	 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user