fix: merge conflict
This commit is contained in:
		
						commit
						b03072f83f
					
				
							
								
								
									
										0
									
								
								erpnext/accounts/accounts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								erpnext/accounts/accounts
									
									
									
									
									
										Normal file
									
								
							| @ -1,127 +1,264 @@ | |||||||
| # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors | # Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors | ||||||
| # License: GNU General Public License v3. See license.txt | # License: GNU General Public License v3. See license.txt | ||||||
| from erpnext import get_default_company |  | ||||||
| 
 | 
 | ||||||
| import frappe | import frappe | ||||||
| import json | import json | ||||||
|  | from frappe.utils import nowdate, add_months, get_date_str | ||||||
|  | from frappe import _ | ||||||
|  | from erpnext.accounts.utils import get_fiscal_year, get_account_name | ||||||
| 
 | 
 | ||||||
|  | def get_company_for_dashboards(): | ||||||
|  | 	company = frappe.defaults.get_defaults().company | ||||||
|  | 	if company: | ||||||
|  | 		return company | ||||||
|  | 	else: | ||||||
|  | 		company_list = frappe.get_list("Company") | ||||||
|  | 		if company_list: | ||||||
|  | 			return company_list[0].name | ||||||
|  | 	return None | ||||||
| 
 | 
 | ||||||
| def get_data(): | def get_data(): | ||||||
| 	data = frappe._dict({ | 	return frappe._dict({ | ||||||
| 		"dashboards": [], | 		"dashboards": get_dashboards(), | ||||||
| 		"charts": [] | 		"charts": get_charts(), | ||||||
|  | 		"number_cards": get_number_cards() | ||||||
| 	}) | 	}) | ||||||
| 	company = get_company_for_dashboards() |  | ||||||
| 	if company: |  | ||||||
| 		company_doc = frappe.get_doc("Company", company) |  | ||||||
| 		data.dashboards = get_dashboards() |  | ||||||
| 		data.charts = get_charts(company_doc) |  | ||||||
| 	return data |  | ||||||
| 
 | 
 | ||||||
| def get_dashboards(): | def get_dashboards(): | ||||||
| 	return [{ | 	return [{ | ||||||
| 		"name": "Accounts", | 		"name": "Accounts Dashboard", | ||||||
| 		"dashboard_name": "Accounts", | 		"dashboard_name": "Accounts Dashboard", | ||||||
|  | 		"doctype": "Dashboard", | ||||||
| 		"charts": [ | 		"charts": [ | ||||||
| 			{ "chart": "Outgoing Bills (Sales Invoice)" }, | 			{ "chart": "Profit and Loss" , "width": "Full"}, | ||||||
| 			{ "chart": "Incoming Bills (Purchase Invoice)" }, | 			{ "chart": "Incoming Bills (Purchase Invoice)", "width": "Half"}, | ||||||
| 			{ "chart": "Bank Balance" }, | 			{ "chart": "Outgoing Bills (Sales Invoice)", "width": "Half"}, | ||||||
| 			{ "chart": "Income" }, | 			{ "chart": "Accounts Receivable Ageing", "width": "Half"}, | ||||||
| 			{ "chart": "Expenses" } | 			{ "chart": "Accounts Payable Ageing", "width": "Half"}, | ||||||
|  | 			{ "chart": "Budget Variance", "width": "Full"}, | ||||||
|  | 			{ "chart": "Bank Balance", "width": "Full"} | ||||||
|  | 		], | ||||||
|  | 		"cards": [ | ||||||
|  | 			{"card": "Total Outgoing Bills"}, | ||||||
|  | 			{"card": "Total Incoming Bills"}, | ||||||
|  | 			{"card": "Total Incoming Payment"}, | ||||||
|  | 			{"card": "Total Outgoing Payment"} | ||||||
| 		] | 		] | ||||||
| 	}] | 	}] | ||||||
| 
 | 
 | ||||||
| def get_charts(company): | def get_charts(): | ||||||
| 	income_account = company.default_income_account or get_account("Income Account", company.name) | 	company = frappe.get_doc("Company", get_company_for_dashboards()) | ||||||
| 	expense_account = company.default_expense_account or get_account("Expense Account", company.name) | 	bank_account = company.default_bank_account or get_account_name("Bank", company=company.name) | ||||||
| 	bank_account = company.default_bank_account or get_account("Bank", company.name) | 	fiscal_year = get_fiscal_year(date=nowdate()) | ||||||
|  | 	default_cost_center = company.cost_center | ||||||
| 
 | 
 | ||||||
| 	return [ | 	return [ | ||||||
| 		{ | 		{ | ||||||
| 			"doctype": "Dashboard Chart", | 			"doctype": "Dashboard Charts", | ||||||
| 			"time_interval": "Quarterly", | 			"name": "Profit and Loss", | ||||||
| 			"name": "Income", |  | ||||||
| 			"chart_name": "Income", |  | ||||||
| 			"timespan": "Last Year", |  | ||||||
| 			"color": None, |  | ||||||
| 			"filters_json": json.dumps({"company": company.name, "account": income_account}), |  | ||||||
| 			"source": "Account Balance Timeline", |  | ||||||
| 			"chart_type": "Custom", |  | ||||||
| 			"timeseries": 1, |  | ||||||
| 			"owner": "Administrator", | 			"owner": "Administrator", | ||||||
| 			"type": "Line" | 			"report_name": "Profit and Loss Statement", | ||||||
| 		}, | 			"filters_json": json.dumps({ | ||||||
| 		{ | 				"company": company.name, | ||||||
| 			"doctype": "Dashboard Chart", | 				"filter_based_on": "Date Range", | ||||||
| 			"time_interval": "Quarterly", | 				"period_start_date": get_date_str(fiscal_year[1]), | ||||||
| 			"name": "Expenses", | 				"period_end_date": get_date_str(fiscal_year[2]), | ||||||
| 			"chart_name": "Expenses", | 				"periodicity": "Monthly", | ||||||
| 			"timespan": "Last Year", | 				"include_default_book_entries": 1 | ||||||
| 			"color": None, | 			}), | ||||||
| 			"filters_json": json.dumps({"company": company.name, "account": expense_account}), | 			"type": "Bar", | ||||||
| 			"source": "Account Balance Timeline", | 			'timeseries': 0, | ||||||
| 			"chart_type": "Custom", | 			"chart_type": "Report", | ||||||
| 			"timeseries": 1, | 			"chart_name": _("Profit and Loss"), | ||||||
| 			"owner": "Administrator", | 			"is_custom": 1, | ||||||
| 			"type": "Line" | 			"is_public": 1 | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			"doctype": "Dashboard Chart", |  | ||||||
| 			"time_interval": "Quarterly", |  | ||||||
| 			"name": "Bank Balance", |  | ||||||
| 			"chart_name": "Bank Balance", |  | ||||||
| 			"timespan": "Last Year", |  | ||||||
| 			"color": "#ffb868", |  | ||||||
| 			"filters_json": json.dumps({"company": company.name, "account": bank_account}), |  | ||||||
| 			"source": "Account Balance Timeline", |  | ||||||
| 			"chart_type": "Custom", |  | ||||||
| 			"timeseries": 1, |  | ||||||
| 			"owner": "Administrator", |  | ||||||
| 			"type": "Line" |  | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"doctype": "Dashboard Chart", | 			"doctype": "Dashboard Chart", | ||||||
| 			"time_interval": "Monthly", | 			"time_interval": "Monthly", | ||||||
| 			"name": "Incoming Bills (Purchase Invoice)", | 			"name": "Incoming Bills (Purchase Invoice)", | ||||||
| 			"chart_name": "Incoming Bills (Purchase Invoice)", | 			"chart_name": _("Incoming Bills (Purchase Invoice)"), | ||||||
| 			"timespan": "Last Year", | 			"timespan": "Last Year", | ||||||
| 			"color": "#a83333", | 			"color": "#a83333", | ||||||
| 			"value_based_on": "base_grand_total", | 			"value_based_on": "base_net_total", | ||||||
| 			"filters_json": json.dumps({}), | 			"filters_json": json.dumps({"docstatus": 1}), | ||||||
| 			"chart_type": "Sum", | 			"chart_type": "Sum", | ||||||
| 			"timeseries": 1, | 			"timeseries": 1, | ||||||
| 			"based_on": "posting_date", | 			"based_on": "posting_date", | ||||||
| 			"owner": "Administrator", | 			"owner": "Administrator", | ||||||
| 			"document_type": "Purchase Invoice", | 			"document_type": "Purchase Invoice", | ||||||
| 			"type": "Bar" | 			"type": "Bar", | ||||||
|  | 			"width": "Half", | ||||||
|  | 			"is_public": 1 | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"doctype": "Dashboard Chart", | 			"doctype": "Dashboard Chart", | ||||||
| 			"time_interval": "Monthly", |  | ||||||
| 			"name": "Outgoing Bills (Sales Invoice)", | 			"name": "Outgoing Bills (Sales Invoice)", | ||||||
| 			"chart_name": "Outgoing Bills (Sales Invoice)", | 			"time_interval": "Monthly", | ||||||
|  | 			"chart_name": _("Outgoing Bills (Sales Invoice)"), | ||||||
| 			"timespan": "Last Year", | 			"timespan": "Last Year", | ||||||
| 			"color": "#7b933d", | 			"color": "#7b933d", | ||||||
| 			"value_based_on": "base_grand_total", | 			"value_based_on": "base_net_total", | ||||||
| 			"filters_json": json.dumps({}), | 			"filters_json": json.dumps({"docstatus": 1}), | ||||||
| 			"chart_type": "Sum", | 			"chart_type": "Sum", | ||||||
| 			"timeseries": 1, | 			"timeseries": 1, | ||||||
| 			"based_on": "posting_date", | 			"based_on": "posting_date", | ||||||
| 			"owner": "Administrator", | 			"owner": "Administrator", | ||||||
| 			"document_type": "Sales Invoice", | 			"document_type": "Sales Invoice", | ||||||
| 			"type": "Bar" | 			"type": "Bar", | ||||||
| 		} | 			"width": "Half", | ||||||
|  | 			"is_public": 1 | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			"doctype": "Dashboard Charts", | ||||||
|  | 			"name": "Accounts Receivable Ageing", | ||||||
|  | 			"owner": "Administrator", | ||||||
|  | 			"report_name": "Accounts Receivable", | ||||||
|  | 			"filters_json": json.dumps({ | ||||||
|  | 				"company": company.name, | ||||||
|  | 				"report_date": nowdate(), | ||||||
|  | 				"ageing_based_on": "Due Date", | ||||||
|  | 				"range1": 30, | ||||||
|  | 				"range2": 60, | ||||||
|  | 				"range3": 90, | ||||||
|  | 				"range4": 120 | ||||||
|  | 				}), | ||||||
|  | 			"type": "Donut", | ||||||
|  | 			'timeseries': 0, | ||||||
|  | 			"chart_type": "Report", | ||||||
|  | 			"chart_name": _("Accounts Receivable Ageing"), | ||||||
|  | 			"is_custom": 1, | ||||||
|  | 			"is_public": 1 | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			"doctype": "Dashboard Charts", | ||||||
|  | 			"name": "Accounts Payable Ageing", | ||||||
|  | 			"owner": "Administrator", | ||||||
|  | 			"report_name": "Accounts Payable", | ||||||
|  | 			"filters_json": json.dumps({ | ||||||
|  | 				"company": company.name, | ||||||
|  | 				"report_date": nowdate(), | ||||||
|  | 				"ageing_based_on": "Due Date", | ||||||
|  | 				"range1": 30, | ||||||
|  | 				"range2": 60, | ||||||
|  | 				"range3": 90, | ||||||
|  | 				"range4": 120 | ||||||
|  | 			}), | ||||||
|  | 			"type": "Donut", | ||||||
|  | 			'timeseries': 0, | ||||||
|  | 			"chart_type": "Report", | ||||||
|  | 			"chart_name": _("Accounts Payable Ageing"), | ||||||
|  | 			"is_custom": 1, | ||||||
|  | 			"is_public": 1 | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			"doctype": "Dashboard Charts", | ||||||
|  | 			"name": "Budget Variance", | ||||||
|  | 			"owner": "Administrator", | ||||||
|  | 			"report_name": "Budget Variance Report", | ||||||
|  | 			"filters_json": json.dumps({ | ||||||
|  | 				"company": company.name, | ||||||
|  | 				"from_fiscal_year": fiscal_year[0], | ||||||
|  | 				"to_fiscal_year": fiscal_year[0], | ||||||
|  | 				"period": "Monthly", | ||||||
|  | 				"budget_against": "Cost Center" | ||||||
|  | 			}), | ||||||
|  | 			"type": "Bar", | ||||||
|  | 			"timeseries": 0, | ||||||
|  | 			"chart_type": "Report", | ||||||
|  | 			"chart_name": _("Budget Variance"), | ||||||
|  | 			"is_custom": 1, | ||||||
|  | 			"is_public": 1 | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			"doctype": "Dashboard Charts", | ||||||
|  | 			"name": "Bank Balance", | ||||||
|  | 			"time_interval": "Quarterly", | ||||||
|  | 			"chart_name": "Bank Balance", | ||||||
|  | 			"timespan": "Last Year", | ||||||
|  | 			"filters_json": json.dumps({ | ||||||
|  | 				"company": company.name, | ||||||
|  | 				"account": bank_account | ||||||
|  | 			}), | ||||||
|  | 			"source": "Account Balance Timeline", | ||||||
|  | 			"chart_type": "Custom", | ||||||
|  | 			"timeseries": 1, | ||||||
|  | 			"owner": "Administrator", | ||||||
|  | 			"type": "Line", | ||||||
|  | 			"width": "Half", | ||||||
|  | 			"is_public": 1 | ||||||
|  | 		}, | ||||||
| 	] | 	] | ||||||
| 
 | 
 | ||||||
| def get_account(account_type, company): | def get_number_cards(): | ||||||
| 	accounts = frappe.get_list("Account", filters={"account_type": account_type, "company": company}) | 	fiscal_year = get_fiscal_year(date=nowdate()) | ||||||
| 	if accounts: | 	year_start_date = get_date_str(fiscal_year[1]) | ||||||
| 		return accounts[0].name | 	year_end_date = get_date_str(fiscal_year[2]) | ||||||
| 
 | 	return [ | ||||||
| def get_company_for_dashboards(): | 		{ | ||||||
| 	company = get_default_company() | 			"doctype": "Number Card", | ||||||
| 	if not company: | 			"document_type": "Payment Entry", | ||||||
| 		company_list = frappe.get_list("Company") | 			"name": "Total Incoming Payment", | ||||||
| 		if company_list: | 			"filters_json": json.dumps([ | ||||||
| 			company = company_list[0].name | 				['Payment Entry', 'docstatus', '=', 1], | ||||||
| 	return company | 				['Payment Entry', 'posting_date', 'between', [year_start_date, year_end_date]], | ||||||
|  | 				['Payment Entry', 'payment_type', '=', 'Receive'] | ||||||
|  | 			]), | ||||||
|  | 			"label": _("Total Incoming Payment"), | ||||||
|  | 			"function": "Sum", | ||||||
|  | 			"aggregate_function_based_on": "base_received_amount", | ||||||
|  | 			"is_public": 1, | ||||||
|  | 			"is_custom": 1, | ||||||
|  | 			"show_percentage_stats": 1, | ||||||
|  | 			"stats_time_interval": "Monthly" | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			"doctype": "Number Card", | ||||||
|  | 			"document_type": "Payment Entry", | ||||||
|  | 			"name": "Total Outgoing Payment", | ||||||
|  | 			"filters_json": json.dumps([ | ||||||
|  | 				['Payment Entry', 'docstatus', '=', 1], | ||||||
|  | 				['Payment Entry', 'posting_date', 'between', [year_start_date, year_end_date]], | ||||||
|  | 				['Payment Entry', 'payment_type', '=', 'Pay'] | ||||||
|  | 			]), | ||||||
|  | 			"label": _("Total Outgoing Payment"), | ||||||
|  | 			"function": "Sum", | ||||||
|  | 			"aggregate_function_based_on": "base_paid_amount", | ||||||
|  | 			"is_public": 1, | ||||||
|  | 			"is_custom": 1, | ||||||
|  | 			"show_percentage_stats": 1, | ||||||
|  | 			"stats_time_interval": "Monthly" | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			"doctype": "Number Card", | ||||||
|  | 			"document_type": "Sales Invoice", | ||||||
|  | 			"name": "Total Outgoing Bills", | ||||||
|  | 			"filters_json": json.dumps([ | ||||||
|  | 				['Sales Invoice', 'docstatus', '=', 1], | ||||||
|  | 				['Sales Invoice', 'posting_date', 'between', [year_start_date, year_end_date]] | ||||||
|  | 			]), | ||||||
|  | 			"label": _("Total Outgoing Bills"), | ||||||
|  | 			"function": "Sum", | ||||||
|  | 			"aggregate_function_based_on": "base_net_total", | ||||||
|  | 			"is_public": 1, | ||||||
|  | 			"is_custom": 1, | ||||||
|  | 			"show_percentage_stats": 1, | ||||||
|  | 			"stats_time_interval": "Monthly" | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			"doctype": "Number Card", | ||||||
|  | 			"document_type": "Purchase Invoice", | ||||||
|  | 			"name": "Total Incoming Bills", | ||||||
|  | 			"filters_json": json.dumps([ | ||||||
|  | 				['Purchase Invoice', 'docstatus', '=', 1], | ||||||
|  | 				['Purchase Invoice', 'posting_date', 'between', [year_start_date, year_end_date]] | ||||||
|  | 			]), | ||||||
|  | 			"label": _("Total Incoming Bills"), | ||||||
|  | 			"function": "Sum", | ||||||
|  | 			"aggregate_function_based_on": "base_net_total", | ||||||
|  | 			"is_public": 1, | ||||||
|  | 			"is_custom": 1, | ||||||
|  | 			"show_percentage_stats": 1, | ||||||
|  | 			"stats_time_interval": "Monthly" | ||||||
|  | 		} | ||||||
|  | 	] | ||||||
|  | |||||||
| @ -45,11 +45,6 @@ | |||||||
|    "label": "Bank Statement", |    "label": "Bank Statement", | ||||||
|    "links": "[\n    {\n        \"label\": \"Bank\",\n        \"name\": \"Bank\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Bank Account\",\n        \"name\": \"Bank Account\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Bank Statement Transaction Entry\",\n        \"name\": \"Bank Statement Transaction Entry\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Bank Statement Settings\",\n        \"name\": \"Bank Statement Settings\",\n        \"type\": \"doctype\"\n    }\n]" |    "links": "[\n    {\n        \"label\": \"Bank\",\n        \"name\": \"Bank\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Bank Account\",\n        \"name\": \"Bank Account\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Bank Statement Transaction Entry\",\n        \"name\": \"Bank Statement Transaction Entry\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Bank Statement Settings\",\n        \"name\": \"Bank Statement Settings\",\n        \"type\": \"doctype\"\n    }\n]" | ||||||
|   }, |   }, | ||||||
|   { |  | ||||||
|    "hidden": 0, |  | ||||||
|    "links": "[\n    {\n        \"description\": \"Match non-linked Invoices and Payments.\",\n        \"label\": \"Match Payments with Invoices\",\n        \"name\": \"Payment Reconciliation\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Update bank payment dates with journals.\",\n        \"label\": \"Update Bank Clearance Dates\",\n        \"name\": \"Bank Clearance\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Invoice Discounting\",\n        \"name\": \"Invoice Discounting\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Journal Entry\"\n        ],\n        \"doctype\": \"Journal Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Bank Reconciliation Statement\",\n        \"name\": \"Bank Reconciliation Statement\",\n        \"type\": \"report\"\n    },\n    {\n        \"icon\": \"fa fa-bar-chart\",\n        \"label\": \"Bank Reconciliation\",\n        \"name\": \"bank-reconciliation\",\n        \"type\": \"page\"\n    },\n    {\n        \"dependencies\": [\n            \"Journal Entry\"\n        ],\n        \"doctype\": \"Journal Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Bank Clearance Summary\",\n        \"name\": \"Bank Clearance Summary\",\n        \"type\": \"report\"\n    },\n    {\n        \"label\": \"Bank Guarantee\",\n        \"name\": \"Bank Guarantee\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Setup cheque dimensions for printing\",\n        \"label\": \"Cheque Print Template\",\n        \"name\": \"Cheque Print Template\",\n        \"type\": \"doctype\"\n    }\n]", |  | ||||||
|    "title": "Banking and Payments" |  | ||||||
|   }, |  | ||||||
|   { |   { | ||||||
|    "hidden": 0, |    "hidden": 0, | ||||||
|    "label": "Subscription Management", |    "label": "Subscription Management", | ||||||
| @ -89,8 +84,8 @@ | |||||||
|  "category": "Modules", |  "category": "Modules", | ||||||
|  "charts": [ |  "charts": [ | ||||||
|   { |   { | ||||||
|    "chart_name": "Bank Balance", |    "chart_name": "Profit and Loss", | ||||||
|    "label": "Bank Balance" |    "label": "Profit and Loss" | ||||||
|   } |   } | ||||||
|  ], |  ], | ||||||
|  "creation": "2020-03-02 15:41:59.515192", |  "creation": "2020-03-02 15:41:59.515192", | ||||||
| @ -99,23 +94,38 @@ | |||||||
|  "docstatus": 0, |  "docstatus": 0, | ||||||
|  "doctype": "Desk Page", |  "doctype": "Desk Page", | ||||||
|  "extends_another_page": 0, |  "extends_another_page": 0, | ||||||
|  "icon": "", |  | ||||||
|  "idx": 0, |  "idx": 0, | ||||||
|  "is_standard": 1, |  "is_standard": 1, | ||||||
|  "label": "Accounting", |  "label": "Accounting", | ||||||
|  "modified": "2020-04-29 12:17:34.844397", |  "modified": "2020-05-18 17:27:26.882340", | ||||||
|  "modified_by": "Administrator", |  "modified_by": "Administrator", | ||||||
|  "module": "Accounts", |  "module": "Accounts", | ||||||
|  "name": "Accounting", |  "name": "Accounting", | ||||||
|  |  "onboarding": "Accounts", | ||||||
|  "owner": "Administrator", |  "owner": "Administrator", | ||||||
|  "pin_to_bottom": 0, |  "pin_to_bottom": 0, | ||||||
|  "pin_to_top": 0, |  "pin_to_top": 0, | ||||||
|  "shortcuts": [ |  "shortcuts": [ | ||||||
|   { |   { | ||||||
|    "label": "Account", |    "label": "Chart Of Accounts", | ||||||
|    "link_to": "Account", |    "link_to": "Account", | ||||||
|    "type": "DocType" |    "type": "DocType" | ||||||
|   }, |   }, | ||||||
|  |   { | ||||||
|  |    "label": "Sales Invoice", | ||||||
|  |    "link_to": "Sales Invoice", | ||||||
|  |    "type": "DocType" | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |    "label": "Purchase Invoice", | ||||||
|  |    "link_to": "Purchase Invoice", | ||||||
|  |    "type": "DocType" | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |    "label": "Accounts Dashboard", | ||||||
|  |    "link_to": "Accounts Dashboard", | ||||||
|  |    "type": "Dashboard" | ||||||
|  |   }, | ||||||
|   { |   { | ||||||
|    "label": "Journal Entry", |    "label": "Journal Entry", | ||||||
|    "link_to": "Journal Entry", |    "link_to": "Journal Entry", | ||||||
| @ -136,11 +146,6 @@ | |||||||
|    "link_to": "General Ledger", |    "link_to": "General Ledger", | ||||||
|    "type": "Report" |    "type": "Report" | ||||||
|   }, |   }, | ||||||
|   { |  | ||||||
|    "label": "Profit and Loss Statement", |  | ||||||
|    "link_to": "Profit and Loss Statement", |  | ||||||
|    "type": "Report" |  | ||||||
|   }, |  | ||||||
|   { |   { | ||||||
|    "label": "Trial Balance", |    "label": "Trial Balance", | ||||||
|    "link_to": "Trial Balance", |    "link_to": "Trial Balance", | ||||||
|  | |||||||
							
								
								
									
										51
									
								
								erpnext/accounts/module_onboarding/accounts/accounts.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								erpnext/accounts/module_onboarding/accounts/accounts.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,51 @@ | |||||||
|  | { | ||||||
|  |  "allow_roles": [ | ||||||
|  |   { | ||||||
|  |    "role": "Accounts Manager" | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |    "role": "Accounts User" | ||||||
|  |   } | ||||||
|  |  ], | ||||||
|  |  "creation": "2020-05-13 19:03:32.564049", | ||||||
|  |  "docstatus": 0, | ||||||
|  |  "doctype": "Module Onboarding", | ||||||
|  |  "documentation_url": "https://docs.erpnext.com/docs/user/manual/en/accounts", | ||||||
|  |  "idx": 0, | ||||||
|  |  "is_complete": 0, | ||||||
|  |  "modified": "2020-05-14 22:11:06.475938", | ||||||
|  |  "modified_by": "Administrator", | ||||||
|  |  "module": "Accounts", | ||||||
|  |  "name": "Accounts", | ||||||
|  |  "owner": "Administrator", | ||||||
|  |  "steps": [ | ||||||
|  |   { | ||||||
|  |    "step": "Chart Of Accounts" | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |    "step": "Setup Taxes" | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |    "step": "Create a Product" | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |    "step": "Create a Supplier" | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |    "step": "Create Your First Purchase Invoice" | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |    "step": "Create a Customer" | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |    "step": "Create Your First Sales Invoice" | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |    "step": "Configure Account Settings" | ||||||
|  |   } | ||||||
|  |  ], | ||||||
|  |  "subtitle": "Accounts, invoices and taxation.", | ||||||
|  |  "success_message": "The Accounts module is now set up!", | ||||||
|  |  "title": "Let's Setup Your Accounts and Taxes.", | ||||||
|  |  "user_can_dismiss": 1 | ||||||
|  | } | ||||||
| @ -0,0 +1,20 @@ | |||||||
|  | { | ||||||
|  |  "action": "Go to Page", | ||||||
|  |  "creation": "2020-05-13 19:58:20.928127", | ||||||
|  |  "docstatus": 0, | ||||||
|  |  "doctype": "Onboarding Step", | ||||||
|  |  "idx": 0, | ||||||
|  |  "is_complete": 0, | ||||||
|  |  "is_mandatory": 0, | ||||||
|  |  "is_single": 0, | ||||||
|  |  "is_skipped": 0, | ||||||
|  |  "modified": "2020-05-14 17:40:28.410447", | ||||||
|  |  "modified_by": "Administrator", | ||||||
|  |  "name": "Chart Of Accounts", | ||||||
|  |  "owner": "Administrator", | ||||||
|  |  "path": "Tree/Account", | ||||||
|  |  "reference_document": "Account", | ||||||
|  |  "show_full_form": 0, | ||||||
|  |  "title": "Review Chart Of Accounts", | ||||||
|  |  "validate_action": 0 | ||||||
|  | } | ||||||
| @ -0,0 +1,19 @@ | |||||||
|  | { | ||||||
|  |  "action": "Create Entry", | ||||||
|  |  "creation": "2020-05-14 17:53:00.876946", | ||||||
|  |  "docstatus": 0, | ||||||
|  |  "doctype": "Onboarding Step", | ||||||
|  |  "idx": 0, | ||||||
|  |  "is_complete": 0, | ||||||
|  |  "is_mandatory": 0, | ||||||
|  |  "is_single": 1, | ||||||
|  |  "is_skipped": 0, | ||||||
|  |  "modified": "2020-05-14 18:06:25.212923", | ||||||
|  |  "modified_by": "Administrator", | ||||||
|  |  "name": "Configure Account Settings", | ||||||
|  |  "owner": "Administrator", | ||||||
|  |  "reference_document": "Accounts Settings", | ||||||
|  |  "show_full_form": 1, | ||||||
|  |  "title": "Configure Account Settings", | ||||||
|  |  "validate_action": 1 | ||||||
|  | } | ||||||
| @ -0,0 +1,19 @@ | |||||||
|  | { | ||||||
|  |  "action": "Create Entry", | ||||||
|  |  "creation": "2020-05-14 17:46:41.831517", | ||||||
|  |  "docstatus": 0, | ||||||
|  |  "doctype": "Onboarding Step", | ||||||
|  |  "idx": 0, | ||||||
|  |  "is_complete": 0, | ||||||
|  |  "is_mandatory": 0, | ||||||
|  |  "is_single": 0, | ||||||
|  |  "is_skipped": 0, | ||||||
|  |  "modified": "2020-05-14 17:46:41.831517", | ||||||
|  |  "modified_by": "Administrator", | ||||||
|  |  "name": "Create a Customer", | ||||||
|  |  "owner": "Administrator", | ||||||
|  |  "reference_document": "Customer", | ||||||
|  |  "show_full_form": 0, | ||||||
|  |  "title": "Create a Customer", | ||||||
|  |  "validate_action": 1 | ||||||
|  | } | ||||||
| @ -0,0 +1,19 @@ | |||||||
|  | { | ||||||
|  |  "action": "Create Entry", | ||||||
|  |  "creation": "2020-05-14 17:45:28.554605", | ||||||
|  |  "docstatus": 0, | ||||||
|  |  "doctype": "Onboarding Step", | ||||||
|  |  "idx": 0, | ||||||
|  |  "is_complete": 0, | ||||||
|  |  "is_mandatory": 0, | ||||||
|  |  "is_single": 0, | ||||||
|  |  "is_skipped": 0, | ||||||
|  |  "modified": "2020-05-14 17:45:28.554605", | ||||||
|  |  "modified_by": "Administrator", | ||||||
|  |  "name": "Create a Product", | ||||||
|  |  "owner": "Administrator", | ||||||
|  |  "reference_document": "Item", | ||||||
|  |  "show_full_form": 0, | ||||||
|  |  "title": "Create a Product", | ||||||
|  |  "validate_action": 1 | ||||||
|  | } | ||||||
| @ -0,0 +1,19 @@ | |||||||
|  | { | ||||||
|  |  "action": "Create Entry", | ||||||
|  |  "creation": "2020-05-14 22:09:10.043554", | ||||||
|  |  "docstatus": 0, | ||||||
|  |  "doctype": "Onboarding Step", | ||||||
|  |  "idx": 0, | ||||||
|  |  "is_complete": 0, | ||||||
|  |  "is_mandatory": 0, | ||||||
|  |  "is_single": 0, | ||||||
|  |  "is_skipped": 0, | ||||||
|  |  "modified": "2020-05-14 22:09:10.043554", | ||||||
|  |  "modified_by": "Administrator", | ||||||
|  |  "name": "Create a Supplier", | ||||||
|  |  "owner": "Administrator", | ||||||
|  |  "reference_document": "Supplier", | ||||||
|  |  "show_full_form": 0, | ||||||
|  |  "title": "Create a Supplier", | ||||||
|  |  "validate_action": 1 | ||||||
|  | } | ||||||
| @ -0,0 +1,19 @@ | |||||||
|  | { | ||||||
|  |  "action": "Create Entry", | ||||||
|  |  "creation": "2020-05-14 22:10:07.049704", | ||||||
|  |  "docstatus": 0, | ||||||
|  |  "doctype": "Onboarding Step", | ||||||
|  |  "idx": 0, | ||||||
|  |  "is_complete": 0, | ||||||
|  |  "is_mandatory": 0, | ||||||
|  |  "is_single": 0, | ||||||
|  |  "is_skipped": 0, | ||||||
|  |  "modified": "2020-05-14 22:10:07.049704", | ||||||
|  |  "modified_by": "Administrator", | ||||||
|  |  "name": "Create Your First Purchase Invoice", | ||||||
|  |  "owner": "Administrator", | ||||||
|  |  "reference_document": "Purchase Invoice", | ||||||
|  |  "show_full_form": 1, | ||||||
|  |  "title": "Create Your First Purchase Invoice ", | ||||||
|  |  "validate_action": 1 | ||||||
|  | } | ||||||
| @ -0,0 +1,19 @@ | |||||||
|  | { | ||||||
|  |  "action": "Create Entry", | ||||||
|  |  "creation": "2020-05-14 17:48:21.019019", | ||||||
|  |  "docstatus": 0, | ||||||
|  |  "doctype": "Onboarding Step", | ||||||
|  |  "idx": 0, | ||||||
|  |  "is_complete": 0, | ||||||
|  |  "is_mandatory": 0, | ||||||
|  |  "is_single": 0, | ||||||
|  |  "is_skipped": 0, | ||||||
|  |  "modified": "2020-05-14 17:48:21.019019", | ||||||
|  |  "modified_by": "Administrator", | ||||||
|  |  "name": "Create Your First Sales Invoice", | ||||||
|  |  "owner": "Administrator", | ||||||
|  |  "reference_document": "Sales Invoice", | ||||||
|  |  "show_full_form": 1, | ||||||
|  |  "title": "Create Your First Sales Invoice ", | ||||||
|  |  "validate_action": 1 | ||||||
|  | } | ||||||
| @ -0,0 +1,19 @@ | |||||||
|  | { | ||||||
|  |  "action": "Create Entry", | ||||||
|  |  "creation": "2020-05-13 19:29:43.844463", | ||||||
|  |  "docstatus": 0, | ||||||
|  |  "doctype": "Onboarding Step", | ||||||
|  |  "idx": 0, | ||||||
|  |  "is_complete": 0, | ||||||
|  |  "is_mandatory": 0, | ||||||
|  |  "is_single": 0, | ||||||
|  |  "is_skipped": 0, | ||||||
|  |  "modified": "2020-05-14 17:40:16.014413", | ||||||
|  |  "modified_by": "Administrator", | ||||||
|  |  "name": "Setup Taxes", | ||||||
|  |  "owner": "Administrator", | ||||||
|  |  "reference_document": "Sales Taxes and Charges Template", | ||||||
|  |  "show_full_form": 1, | ||||||
|  |  "title": "Lets create a Tax Template for Sales ", | ||||||
|  |  "validate_action": 0 | ||||||
|  | } | ||||||
| @ -546,7 +546,7 @@ class ReceivablePayableReport(object): | |||||||
| 			self.filters.range1, self.filters.range2, self.filters.range3, self.filters.range4 = 30, 60, 90, 120 | 			self.filters.range1, self.filters.range2, self.filters.range3, self.filters.range4 = 30, 60, 90, 120 | ||||||
| 
 | 
 | ||||||
| 		for i, days in enumerate([self.filters.range1, self.filters.range2, self.filters.range3, self.filters.range4]): | 		for i, days in enumerate([self.filters.range1, self.filters.range2, self.filters.range3, self.filters.range4]): | ||||||
| 			if row.age <= days: | 			if cint(row.age) <= cint(days): | ||||||
| 				index = i | 				index = i | ||||||
| 				break | 				break | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -56,14 +56,26 @@ def execute(filters=None): | |||||||
| 					row += totals | 					row += totals | ||||||
| 				data.append(row) | 				data.append(row) | ||||||
| 
 | 
 | ||||||
| 	return columns, data | 	chart = get_chart_data(filters, columns, data) | ||||||
| 
 | 
 | ||||||
|  | 	return columns, data, None, chart | ||||||
| 
 | 
 | ||||||
| def get_columns(filters): | def get_columns(filters): | ||||||
| 	columns = [ | 	columns = [ | ||||||
| 		_(filters.get("budget_against")) | 		{ | ||||||
| 		+ ":Link/%s:150" % (filters.get("budget_against")), | 			'label': _(filters.get("budget_against")), | ||||||
| 		_("Account") + ":Link/Account:150" | 			'fieldtype': 'Link', | ||||||
|  | 			'fieldname': 'budget_against', | ||||||
|  | 			'options': filters.get('budget_against'), | ||||||
|  | 			'width': 150 | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			'label': _('Account'), | ||||||
|  | 			'fieldname': 'Account', | ||||||
|  | 			'fieldtype': 'Link', | ||||||
|  | 			'options': 'Account', | ||||||
|  | 			'width': 150 | ||||||
|  | 		} | ||||||
| 	] | 	] | ||||||
| 
 | 
 | ||||||
| 	group_months = False if filters["period"] == "Monthly" else True | 	group_months = False if filters["period"] == "Monthly" else True | ||||||
| @ -79,7 +91,12 @@ def get_columns(filters): | |||||||
| 					_("Variance ") + " " + str(year[0]) | 					_("Variance ") + " " + str(year[0]) | ||||||
| 				] | 				] | ||||||
| 				for label in labels: | 				for label in labels: | ||||||
| 					columns.append(label + ":Float:150") | 					columns.append({ | ||||||
|  | 						'label': label, | ||||||
|  | 						'fieldtype': 'Float', | ||||||
|  | 						'fieldname': frappe.scrub(label), | ||||||
|  | 						'width': 150 | ||||||
|  | 					}) | ||||||
| 			else: | 			else: | ||||||
| 				for label in [ | 				for label in [ | ||||||
| 					_("Budget") + " (%s)" + " " + str(year[0]), | 					_("Budget") + " (%s)" + " " + str(year[0]), | ||||||
| @ -95,14 +112,23 @@ def get_columns(filters): | |||||||
| 					else: | 					else: | ||||||
| 						label = label % formatdate(from_date, format_string="MMM") | 						label = label % formatdate(from_date, format_string="MMM") | ||||||
| 
 | 
 | ||||||
| 					columns.append(label + ":Float:150") | 					columns.append({ | ||||||
|  | 						'label': label, | ||||||
|  | 						'fieldtype': 'Float', | ||||||
|  | 						'fieldname': frappe.scrub(label), | ||||||
|  | 						'width': 150 | ||||||
|  | 					}) | ||||||
| 
 | 
 | ||||||
| 	if filters["period"] != "Yearly": | 	if filters["period"] != "Yearly": | ||||||
| 		return columns + [ | 		for label in [_("Total Budget"), _("Total Actual"), _("Total Variance")]: | ||||||
| 			_("Total Budget") + ":Float:150", | 			columns.append({ | ||||||
| 			_("Total Actual") + ":Float:150", | 				'label': label, | ||||||
| 			_("Total Variance") + ":Float:150" | 				'fieldtype': 'Float', | ||||||
| 		] | 				'fieldname': frappe.scrub(label), | ||||||
|  | 				'width': 150 | ||||||
|  | 			}) | ||||||
|  | 
 | ||||||
|  | 		return columns | ||||||
| 	else: | 	else: | ||||||
| 		return columns | 		return columns | ||||||
| 
 | 
 | ||||||
| @ -173,7 +199,7 @@ def get_dimension_target_details(filters): | |||||||
| 				filters.budget_against, | 				filters.budget_against, | ||||||
| 				filters.company, | 				filters.company, | ||||||
| 			] | 			] | ||||||
| 			+ filters.get("budget_against_filter") | 			+ (filters.get("budget_against_filter") or []) | ||||||
| 		), as_dict=True) | 		), as_dict=True) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -305,3 +331,49 @@ def get_fiscal_years(filters): | |||||||
| 		}) | 		}) | ||||||
| 
 | 
 | ||||||
| 	return fiscal_year | 	return fiscal_year | ||||||
|  | 
 | ||||||
|  | def get_chart_data(filters, columns, data): | ||||||
|  | 
 | ||||||
|  | 	if not data: | ||||||
|  | 		return None | ||||||
|  | 
 | ||||||
|  | 	labels = [] | ||||||
|  | 
 | ||||||
|  | 	fiscal_year = get_fiscal_years(filters) | ||||||
|  | 	group_months = False if filters["period"] == "Monthly" else True | ||||||
|  | 
 | ||||||
|  | 	for year in fiscal_year: | ||||||
|  | 		for from_date, to_date in get_period_date_ranges(filters["period"], year[0]): | ||||||
|  | 			if filters['period'] == 'Yearly': | ||||||
|  | 				labels.append(year[0]) | ||||||
|  | 			else: | ||||||
|  | 				if group_months: | ||||||
|  | 					label = formatdate(from_date, format_string="MMM") + "-" \ | ||||||
|  | 						+ formatdate(to_date, format_string="MMM") | ||||||
|  | 					labels.append(label) | ||||||
|  | 				else: | ||||||
|  | 					label = formatdate(from_date, format_string="MMM") | ||||||
|  | 					labels.append(label) | ||||||
|  | 
 | ||||||
|  | 	no_of_columns = len(labels) | ||||||
|  | 
 | ||||||
|  | 	budget_values, actual_values = [0] * no_of_columns, [0] * no_of_columns | ||||||
|  | 	for d in data: | ||||||
|  | 		values = d[2:] | ||||||
|  | 		index = 0 | ||||||
|  | 
 | ||||||
|  | 		for i in range(no_of_columns): | ||||||
|  | 			budget_values[i] += values[index] | ||||||
|  | 			actual_values[i] += values[index+1] | ||||||
|  | 			index += 3 | ||||||
|  | 
 | ||||||
|  | 	return { | ||||||
|  | 		'data': { | ||||||
|  | 			'labels': labels, | ||||||
|  | 			'datasets': [ | ||||||
|  | 				{'name': 'Budget', 'chartType': 'bar', 'values': budget_values}, | ||||||
|  | 				{'name': 'Actual Expense', 'chartType': 'bar', 'values': actual_values} | ||||||
|  | 			] | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | |||||||
| @ -686,3 +686,4 @@ erpnext.patches.v12_0.unset_customer_supplier_based_on_type_of_item_price | |||||||
| erpnext.patches.v12_0.set_valid_till_date_in_supplier_quotation | erpnext.patches.v12_0.set_valid_till_date_in_supplier_quotation | ||||||
| erpnext.patches.v12_0.set_serial_no_status | erpnext.patches.v12_0.set_serial_no_status | ||||||
| erpnext.patches.v12_0.update_price_list_currency_in_bom | erpnext.patches.v12_0.update_price_list_currency_in_bom | ||||||
|  | execute:frappe.delete_doc_if_exists('Dashboard', 'Accounts') | ||||||
|  | |||||||
| @ -1,85 +0,0 @@ | |||||||
| { |  | ||||||
|  "cards": [ |  | ||||||
|   { |  | ||||||
|    "hidden": 0, |  | ||||||
|    "label": "Items and Pricing", |  | ||||||
|    "links": "[\n    {\n        \"description\": \"All Products or Services.\",\n        \"label\": \"Item\",\n        \"name\": \"Item\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"Price List\"\n        ],\n        \"description\": \"Multiple Item prices.\",\n        \"label\": \"Item Price\",\n        \"name\": \"Item Price\",\n        \"onboard\": 1,\n        \"route\": \"#Report/Item Price\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Price List master.\",\n        \"label\": \"Price List\",\n        \"name\": \"Price List\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Tree of Item Groups.\",\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Item Group\",\n        \"link\": \"Tree/Item Group\",\n        \"name\": \"Item Group\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"description\": \"Bundle items at time of sale.\",\n        \"label\": \"Product Bundle\",\n        \"name\": \"Product Bundle\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Rules for applying different promotional schemes.\",\n        \"label\": \"Promotional Scheme\",\n        \"name\": \"Promotional Scheme\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"description\": \"Rules for applying pricing and discount.\",\n        \"label\": \"Pricing Rule\",\n        \"name\": \"Pricing Rule\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Rules for adding shipping costs.\",\n        \"label\": \"Shipping Rule\",\n        \"name\": \"Shipping Rule\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Define coupon codes.\",\n        \"label\": \"Coupon Code\",\n        \"name\": \"Coupon Code\",\n        \"type\": \"doctype\"\n    }\n]" |  | ||||||
|   }, |  | ||||||
|   { |  | ||||||
|    "hidden": 0, |  | ||||||
|    "label": "Settings", |  | ||||||
|    "links": "[\n    {\n        \"description\": \"Default settings for selling transactions.\",\n        \"label\": \"Selling Settings\",\n        \"name\": \"Selling Settings\",\n        \"settings\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Template of terms or contract.\",\n        \"label\": \"Terms and Conditions Template\",\n        \"name\": \"Terms and Conditions\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Tax template for selling transactions.\",\n        \"label\": \"Sales Taxes and Charges Template\",\n        \"name\": \"Sales Taxes and Charges Template\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Track Leads by Lead Source.\",\n        \"label\": \"Lead Source\",\n        \"name\": \"Lead Source\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Manage Customer Group Tree.\",\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Customer Group\",\n        \"link\": \"Tree/Customer Group\",\n        \"name\": \"Customer Group\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"All Contacts.\",\n        \"label\": \"Contact\",\n        \"name\": \"Contact\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"All Addresses.\",\n        \"label\": \"Address\",\n        \"name\": \"Address\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Manage Territory Tree.\",\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Territory\",\n        \"link\": \"Tree/Territory\",\n        \"name\": \"Territory\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Sales campaigns.\",\n        \"label\": \"Campaign\",\n        \"name\": \"Campaign\",\n        \"type\": \"doctype\"\n    }\n]" |  | ||||||
|   }, |  | ||||||
|   { |  | ||||||
|    "hidden": 0, |  | ||||||
|    "label": "Other Reports", |  | ||||||
|    "links": "[\n    {\n        \"dependencies\": [\n            \"Lead\"\n        ],\n        \"doctype\": \"Lead\",\n        \"is_query_report\": true,\n        \"label\": \"Lead Details\",\n        \"name\": \"Lead Details\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Address\"\n        ],\n        \"doctype\": \"Address\",\n        \"is_query_report\": true,\n        \"label\": \"Customer Addresses And Contacts\",\n        \"name\": \"Address And Contacts\",\n        \"route_options\": {\n            \"party_type\": \"Customer\"\n        },\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"BOM\"\n        ],\n        \"doctype\": \"BOM\",\n        \"is_query_report\": true,\n        \"label\": \"BOM Search\",\n        \"name\": \"BOM Search\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"doctype\": \"Item\",\n        \"is_query_report\": true,\n        \"label\": \"Available Stock for Packing Items\",\n        \"name\": \"Available Stock for Packing Items\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Order\"\n        ],\n        \"doctype\": \"Sales Order\",\n        \"is_query_report\": true,\n        \"label\": \"Pending SO Items For Purchase Request\",\n        \"name\": \"Pending SO Items For Purchase Request\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Customer\"\n        ],\n        \"doctype\": \"Customer\",\n        \"is_query_report\": true,\n        \"label\": \"Customer Credit Balance\",\n        \"name\": \"Customer Credit Balance\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Customer\"\n        ],\n        \"doctype\": \"Customer\",\n        \"is_query_report\": true,\n        \"label\": \"Customers Without Any Sales Transactions\",\n        \"name\": \"Customers Without Any Sales Transactions\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Customer\"\n        ],\n        \"doctype\": \"Customer\",\n        \"is_query_report\": true,\n        \"label\": \"Sales Partners Commission\",\n        \"name\": \"Sales Partners Commission\",\n        \"type\": \"report\"\n    }\n]" |  | ||||||
|   }, |  | ||||||
|   { |  | ||||||
|    "hidden": 0, |  | ||||||
|    "label": "Sales", |  | ||||||
|    "links": "[\n    {\n        \"description\": \"Customer Database.\",\n        \"label\": \"Customer\",\n        \"name\": \"Customer\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"Customer\"\n        ],\n        \"description\": \"Quotes to Leads or Customers.\",\n        \"label\": \"Quotation\",\n        \"name\": \"Quotation\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"Customer\"\n        ],\n        \"description\": \"Confirmed orders from Customers.\",\n        \"label\": \"Sales Order\",\n        \"name\": \"Sales Order\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"Customer\"\n        ],\n        \"description\": \"Invoices for Costumers.\",\n        \"label\": \"Sales Invoice\",\n        \"name\": \"Sales Invoice\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"Customer\"\n        ],\n        \"description\": \"Blanket Orders from Costumers.\",\n        \"label\": \"Blanket Order\",\n        \"name\": \"Blanket Order\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"description\": \"Manage Sales Partners.\",\n        \"label\": \"Sales Partner\",\n        \"name\": \"Sales Partner\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"Customer\"\n        ],\n        \"description\": \"Manage Sales Person Tree.\",\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Sales Person\",\n        \"link\": \"Tree/Sales Person\",\n        \"name\": \"Sales Person\",\n        \"type\": \"doctype\"\n    }\n]" |  | ||||||
|   }, |  | ||||||
|   { |  | ||||||
|    "hidden": 0, |  | ||||||
|    "label": "Key Reports", |  | ||||||
|    "links": "[\n    {\n        \"dependencies\": [\n            \"Sales Order\"\n        ],\n        \"doctype\": \"Sales Order\",\n        \"is_query_report\": true,\n        \"label\": \"Sales Analytics\",\n        \"name\": \"Sales Analytics\",\n        \"onboard\": 1,\n        \"type\": \"report\"\n    },\n    {\n        \"icon\": \"fa fa-bar-chart\",\n        \"label\": \"Sales Funnel\",\n        \"name\": \"sales-funnel\",\n        \"onboard\": 1,\n        \"type\": \"page\"\n    },\n    {\n        \"dependencies\": [\n            \"Customer\"\n        ],\n        \"doctype\": \"Customer\",\n        \"icon\": \"fa fa-bar-chart\",\n        \"is_query_report\": true,\n        \"label\": \"Customer Acquisition and Loyalty\",\n        \"name\": \"Customer Acquisition and Loyalty\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Order\"\n        ],\n        \"doctype\": \"Sales Order\",\n        \"is_query_report\": true,\n        \"label\": \"Inactive Customers\",\n        \"name\": \"Inactive Customers\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Order\"\n        ],\n        \"doctype\": \"Sales Order\",\n        \"is_query_report\": true,\n        \"label\": \"Ordered Items To Be Delivered\",\n        \"name\": \"Ordered Items To Be Delivered\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Order\"\n        ],\n        \"doctype\": \"Sales Order\",\n        \"is_query_report\": true,\n        \"label\": \"Sales Person-wise Transaction Summary\",\n        \"name\": \"Sales Person-wise Transaction Summary\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"doctype\": \"Item\",\n        \"is_query_report\": true,\n        \"label\": \"Item-wise Sales History\",\n        \"name\": \"Item-wise Sales History\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Quotation\"\n        ],\n        \"doctype\": \"Quotation\",\n        \"is_query_report\": true,\n        \"label\": \"Quotation Trends\",\n        \"name\": \"Quotation Trends\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Order\"\n        ],\n        \"doctype\": \"Sales Order\",\n        \"is_query_report\": true,\n        \"label\": \"Sales Order Trends\",\n        \"name\": \"Sales Order Trends\",\n        \"type\": \"report\"\n    }\n]" |  | ||||||
|   } |  | ||||||
|  ], |  | ||||||
|  "category": "Modules", |  | ||||||
|  "charts": [ |  | ||||||
|   { |  | ||||||
|    "chart_name": "Income", |  | ||||||
|    "label": "Income" |  | ||||||
|   } |  | ||||||
|  ], |  | ||||||
|  "creation": "2020-01-28 11:49:12.092882", |  | ||||||
|  "developer_mode_only": 0, |  | ||||||
|  "disable_user_customization": 0, |  | ||||||
|  "docstatus": 0, |  | ||||||
|  "doctype": "Desk Page", |  | ||||||
|  "extends_another_page": 0, |  | ||||||
|  "icon": "", |  | ||||||
|  "idx": 0, |  | ||||||
|  "is_standard": 1, |  | ||||||
|  "label": "Selling", |  | ||||||
|  "modified": "2020-04-01 11:28:51.047373", |  | ||||||
|  "modified_by": "Administrator", |  | ||||||
|  "module": "Selling", |  | ||||||
|  "name": "Selling", |  | ||||||
|  "owner": "Administrator", |  | ||||||
|  "pin_to_bottom": 0, |  | ||||||
|  "pin_to_top": 0, |  | ||||||
|  "shortcuts": [ |  | ||||||
|   { |  | ||||||
|    "label": "Sales Invoice", |  | ||||||
|    "link_to": "Sales Invoice", |  | ||||||
|    "type": "DocType" |  | ||||||
|   }, |  | ||||||
|   { |  | ||||||
|    "label": "Sales Order", |  | ||||||
|    "link_to": "Sales Order", |  | ||||||
|    "type": "DocType" |  | ||||||
|   }, |  | ||||||
|   { |  | ||||||
|    "label": "Quotation", |  | ||||||
|    "link_to": "Quotation", |  | ||||||
|    "type": "DocType" |  | ||||||
|   }, |  | ||||||
|   { |  | ||||||
|    "label": "Delivery Note", |  | ||||||
|    "link_to": "Delivery Note", |  | ||||||
|    "type": "DocType" |  | ||||||
|   }, |  | ||||||
|   { |  | ||||||
|    "label": "Accounts Receivable", |  | ||||||
|    "link_to": "Accounts Receivable", |  | ||||||
|    "type": "Report" |  | ||||||
|   }, |  | ||||||
|   { |  | ||||||
|    "label": "Sales Register", |  | ||||||
|    "link_to": "Sales Register", |  | ||||||
|    "type": "Report" |  | ||||||
|   } |  | ||||||
|  ] |  | ||||||
| } |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user