Merge pull request #1604 from anandpdoshi/bugfix-v4
Newsletter status display. Fixes #1593
diff --git a/erpnext/config/accounts.py b/erpnext/config/accounts.py
index c435efb..2d757f1 100644
--- a/erpnext/config/accounts.py
+++ b/erpnext/config/accounts.py
@@ -1,307 +1,308 @@
from frappe import _
-data = [
- {
- "label": _("Documents"),
- "icon": "icon-star",
- "items": [
- {
- "type": "doctype",
- "name": "Journal Voucher",
- "description": _("Accounting journal entries.")
- },
- {
- "type": "doctype",
- "name": "Sales Invoice",
- "description": _("Bills raised to Customers.")
- },
- {
- "type": "doctype",
- "name": "Purchase Invoice",
- "description": _("Bills raised by Suppliers.")
- },
- {
- "type": "doctype",
- "name": "Customer",
- "description": _("Customer database.")
- },
- {
- "type": "doctype",
- "name": "Supplier",
- "description": _("Supplier database.")
- },
- {
- "type": "page",
- "name": "Accounts Browser",
- "icon": "icon-sitemap",
- "label": _("Chart of Accounts"),
- "route": "Accounts Browser/Account",
- "description": _("Tree of finanial accounts."),
- "doctype": "Account",
- },
- ]
- },
- {
- "label": _("Tools"),
- "icon": "icon-wrench",
- "items": [
- {
- "type": "doctype",
- "name": "Bank Reconciliation",
- "description": _("Update bank payment dates with journals.")
- },
- # {
- # "type": "doctype",
- # "name": "Payment to Invoice Matching Tool",
- # "description": _("Match non-linked Invoices and Payments.")
- # },
- {
- "type": "doctype",
- "name": "Period Closing Voucher",
- "description": _("Close Balance Sheet and book Profit or Loss.")
- },
- ]
- },
- {
- "label": _("Setup"),
- "icon": "icon-cog",
- "items": [
- {
- "type": "doctype",
- "name": "Fiscal Year",
- "description": _("Financial / accounting year.")
- },
- {
- "type": "page",
- "name": "Accounts Browser",
- "icon": "icon-sitemap",
- "label": _("Chart of Accounts"),
- "route": "Accounts Browser/Account",
- "description": _("Tree of finanial accounts."),
- "doctype": "Account",
- },
- {
- "type": "page",
- "name": "Accounts Browser",
- "icon": "icon-sitemap",
- "label": _("Chart of Cost Centers"),
- "route": "Accounts Browser/Cost Center",
- "description": _("Tree of finanial Cost Centers."),
- "doctype": "Cost Center",
- },
- {
- "type": "doctype",
- "name": "Accounts Settings",
- "description": _("Default settings for accounting transactions.")
- },
- {
- "type": "doctype",
- "name": "Sales Taxes and Charges Master",
- "description": _("Tax template for selling transactions.")
- },
- {
- "type": "doctype",
- "name": "Purchase Taxes and Charges Master",
- "description": _("Tax template for buying transactions.")
- },
- {
- "type": "doctype",
- "name": "POS Setting",
- "label": _("Point-of-Sale Setting"),
- "description": _("Rules to calculate shipping amount for a sale")
- },
- {
- "type": "doctype",
- "name": "Shipping Rule",
- "description": _("Rules for adding shipping costs.")
- },
- {
- "type": "doctype",
- "name": "Pricing Rule",
- "description": _("Rules for applying pricing and discount.")
- },
- {
- "type": "doctype",
- "name": "Currency",
- "description": _("Enable / disable currencies.")
- },
- {
- "type": "doctype",
- "name": "Currency Exchange",
- "description": _("Currency exchange rate master.")
- },
- {
- "type":"doctype",
- "name": "Budget Distribution",
- "description": _("Seasonality for setting budgets.")
- },
- {
- "type": "doctype",
- "name":"Terms and Conditions",
- "label": _("Terms and Conditions Template"),
- "description": _("Template of terms or contract.")
- },
- {
- "type": "doctype",
- "name":"Mode of Payment",
- "description": _("e.g. Bank, Cash, Credit Card")
- },
- {
- "type": "doctype",
- "name":"C-Form",
- "description": _("C-Form records"),
- "country": "India"
- }
- ]
- },
- {
- "label": _("Main Reports"),
- "icon": "icon-table",
- "items": [
- {
- "type": "report",
- "name":"General Ledger",
- "doctype": "GL Entry",
- "is_query_report": True,
- },
- {
- "type": "page",
- "name": "trial-balance",
- "label": _("Trial Balance"),
- "icon": "icon-table"
- },
- {
- "type": "report",
- "name": "Accounts Receivable",
- "doctype": "Sales Invoice",
- "is_query_report": True
- },
- {
- "type": "report",
- "name": "Accounts Payable",
- "doctype": "Purchase Invoice",
- "is_query_report": True
- },
- {
- "type": "report",
- "name": "Sales Register",
- "doctype": "Sales Invoice",
- "is_query_report": True
- },
- {
- "type": "report",
- "name": "Purchase Register",
- "doctype": "Purchase Invoice",
- "is_query_report": True
- },
- {
- "type": "page",
- "name": "financial-analytics",
- "label": _("Financial Analytics"),
- "icon": "icon-bar-chart",
- },
- {
- "type": "report",
- "name": "Gross Profit",
- "doctype": "Sales Invoice",
- "is_query_report": True
- },
- ]
- },
- {
- "label": _("Standard Reports"),
- "icon": "icon-list",
- "items": [
- {
- "type": "report",
- "name": "Bank Reconciliation Statement",
- "is_query_report": True,
- "doctype": "Journal Voucher"
- },
- {
- "type": "report",
- "name": "Ordered Items To Be Billed",
- "is_query_report": True,
- "doctype": "Sales Invoice"
- },
- {
- "type": "report",
- "name": "Delivered Items To Be Billed",
- "is_query_report": True,
- "doctype": "Sales Invoice"
- },
- {
- "type": "report",
- "name": "Purchase Order Items To Be Billed",
- "is_query_report": True,
- "doctype": "Purchase Invoice"
- },
- {
- "type": "report",
- "name": "Received Items To Be Billed",
- "is_query_report": True,
- "doctype": "Purchase Invoice"
- },
- {
- "type": "report",
- "name": "Bank Clearance Summary",
- "is_query_report": True,
- "doctype": "Journal Voucher"
- },
- {
- "type": "report",
- "name": "Payment Period Based On Invoice Date",
- "is_query_report": True,
- "doctype": "Journal Voucher"
- },
- {
- "type": "report",
- "name": "Sales Partners Commission",
- "is_query_report": True,
- "doctype": "Sales Invoice"
- },
- {
- "type": "report",
- "name": "Customer Account Head",
- "is_query_report": True,
- "doctype": "Account"
- },
- {
- "type": "report",
- "name": "Supplier Account Head",
- "is_query_report": True,
- "doctype": "Account"
- },
- {
- "type": "report",
- "name": "Item-wise Sales Register",
- "is_query_report": True,
- "doctype": "Sales Invoice"
- },
- {
- "type": "report",
- "name": "Item-wise Purchase Register",
- "is_query_report": True,
- "doctype": "Purchase Invoice"
- },
- {
- "type": "report",
- "name": "Budget Variance Report",
- "is_query_report": True,
- "doctype": "Cost Center"
- },
- {
- "type": "report",
- "name": "Purchase Invoice Trends",
- "is_query_report": True,
- "doctype": "Purchase Invoice"
- },
- {
- "type": "report",
- "name": "Sales Invoice Trends",
- "is_query_report": True,
- "doctype": "Sales Invoice"
- },
- ]
- },
-]
+def get_data():
+ return [
+ {
+ "label": _("Documents"),
+ "icon": "icon-star",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Journal Voucher",
+ "description": _("Accounting journal entries.")
+ },
+ {
+ "type": "doctype",
+ "name": "Sales Invoice",
+ "description": _("Bills raised to Customers.")
+ },
+ {
+ "type": "doctype",
+ "name": "Purchase Invoice",
+ "description": _("Bills raised by Suppliers.")
+ },
+ {
+ "type": "doctype",
+ "name": "Customer",
+ "description": _("Customer database.")
+ },
+ {
+ "type": "doctype",
+ "name": "Supplier",
+ "description": _("Supplier database.")
+ },
+ {
+ "type": "page",
+ "name": "Accounts Browser",
+ "icon": "icon-sitemap",
+ "label": _("Chart of Accounts"),
+ "route": "Accounts Browser/Account",
+ "description": _("Tree of finanial accounts."),
+ "doctype": "Account",
+ },
+ ]
+ },
+ {
+ "label": _("Tools"),
+ "icon": "icon-wrench",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Bank Reconciliation",
+ "description": _("Update bank payment dates with journals.")
+ },
+ # {
+ # "type": "doctype",
+ # "name": "Payment to Invoice Matching Tool",
+ # "description": _("Match non-linked Invoices and Payments.")
+ # },
+ {
+ "type": "doctype",
+ "name": "Period Closing Voucher",
+ "description": _("Close Balance Sheet and book Profit or Loss.")
+ },
+ ]
+ },
+ {
+ "label": _("Setup"),
+ "icon": "icon-cog",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Fiscal Year",
+ "description": _("Financial / accounting year.")
+ },
+ {
+ "type": "page",
+ "name": "Accounts Browser",
+ "icon": "icon-sitemap",
+ "label": _("Chart of Accounts"),
+ "route": "Accounts Browser/Account",
+ "description": _("Tree of finanial accounts."),
+ "doctype": "Account",
+ },
+ {
+ "type": "page",
+ "name": "Accounts Browser",
+ "icon": "icon-sitemap",
+ "label": _("Chart of Cost Centers"),
+ "route": "Accounts Browser/Cost Center",
+ "description": _("Tree of finanial Cost Centers."),
+ "doctype": "Cost Center",
+ },
+ {
+ "type": "doctype",
+ "name": "Accounts Settings",
+ "description": _("Default settings for accounting transactions.")
+ },
+ {
+ "type": "doctype",
+ "name": "Sales Taxes and Charges Master",
+ "description": _("Tax template for selling transactions.")
+ },
+ {
+ "type": "doctype",
+ "name": "Purchase Taxes and Charges Master",
+ "description": _("Tax template for buying transactions.")
+ },
+ {
+ "type": "doctype",
+ "name": "POS Setting",
+ "label": _("Point-of-Sale Setting"),
+ "description": _("Rules to calculate shipping amount for a sale")
+ },
+ {
+ "type": "doctype",
+ "name": "Shipping Rule",
+ "description": _("Rules for adding shipping costs.")
+ },
+ {
+ "type": "doctype",
+ "name": "Pricing Rule",
+ "description": _("Rules for applying pricing and discount.")
+ },
+ {
+ "type": "doctype",
+ "name": "Currency",
+ "description": _("Enable / disable currencies.")
+ },
+ {
+ "type": "doctype",
+ "name": "Currency Exchange",
+ "description": _("Currency exchange rate master.")
+ },
+ {
+ "type":"doctype",
+ "name": "Budget Distribution",
+ "description": _("Seasonality for setting budgets.")
+ },
+ {
+ "type": "doctype",
+ "name":"Terms and Conditions",
+ "label": _("Terms and Conditions Template"),
+ "description": _("Template of terms or contract.")
+ },
+ {
+ "type": "doctype",
+ "name":"Mode of Payment",
+ "description": _("e.g. Bank, Cash, Credit Card")
+ },
+ {
+ "type": "doctype",
+ "name":"C-Form",
+ "description": _("C-Form records"),
+ "country": "India"
+ }
+ ]
+ },
+ {
+ "label": _("Main Reports"),
+ "icon": "icon-table",
+ "items": [
+ {
+ "type": "report",
+ "name":"General Ledger",
+ "doctype": "GL Entry",
+ "is_query_report": True,
+ },
+ {
+ "type": "page",
+ "name": "trial-balance",
+ "label": _("Trial Balance"),
+ "icon": "icon-table"
+ },
+ {
+ "type": "report",
+ "name": "Accounts Receivable",
+ "doctype": "Sales Invoice",
+ "is_query_report": True
+ },
+ {
+ "type": "report",
+ "name": "Accounts Payable",
+ "doctype": "Purchase Invoice",
+ "is_query_report": True
+ },
+ {
+ "type": "report",
+ "name": "Sales Register",
+ "doctype": "Sales Invoice",
+ "is_query_report": True
+ },
+ {
+ "type": "report",
+ "name": "Purchase Register",
+ "doctype": "Purchase Invoice",
+ "is_query_report": True
+ },
+ {
+ "type": "page",
+ "name": "financial-analytics",
+ "label": _("Financial Analytics"),
+ "icon": "icon-bar-chart",
+ },
+ {
+ "type": "report",
+ "name": "Gross Profit",
+ "doctype": "Sales Invoice",
+ "is_query_report": True
+ },
+ ]
+ },
+ {
+ "label": _("Standard Reports"),
+ "icon": "icon-list",
+ "items": [
+ {
+ "type": "report",
+ "name": "Bank Reconciliation Statement",
+ "is_query_report": True,
+ "doctype": "Journal Voucher"
+ },
+ {
+ "type": "report",
+ "name": "Ordered Items To Be Billed",
+ "is_query_report": True,
+ "doctype": "Sales Invoice"
+ },
+ {
+ "type": "report",
+ "name": "Delivered Items To Be Billed",
+ "is_query_report": True,
+ "doctype": "Sales Invoice"
+ },
+ {
+ "type": "report",
+ "name": "Purchase Order Items To Be Billed",
+ "is_query_report": True,
+ "doctype": "Purchase Invoice"
+ },
+ {
+ "type": "report",
+ "name": "Received Items To Be Billed",
+ "is_query_report": True,
+ "doctype": "Purchase Invoice"
+ },
+ {
+ "type": "report",
+ "name": "Bank Clearance Summary",
+ "is_query_report": True,
+ "doctype": "Journal Voucher"
+ },
+ {
+ "type": "report",
+ "name": "Payment Period Based On Invoice Date",
+ "is_query_report": True,
+ "doctype": "Journal Voucher"
+ },
+ {
+ "type": "report",
+ "name": "Sales Partners Commission",
+ "is_query_report": True,
+ "doctype": "Sales Invoice"
+ },
+ {
+ "type": "report",
+ "name": "Customer Account Head",
+ "is_query_report": True,
+ "doctype": "Account"
+ },
+ {
+ "type": "report",
+ "name": "Supplier Account Head",
+ "is_query_report": True,
+ "doctype": "Account"
+ },
+ {
+ "type": "report",
+ "name": "Item-wise Sales Register",
+ "is_query_report": True,
+ "doctype": "Sales Invoice"
+ },
+ {
+ "type": "report",
+ "name": "Item-wise Purchase Register",
+ "is_query_report": True,
+ "doctype": "Purchase Invoice"
+ },
+ {
+ "type": "report",
+ "name": "Budget Variance Report",
+ "is_query_report": True,
+ "doctype": "Cost Center"
+ },
+ {
+ "type": "report",
+ "name": "Purchase Invoice Trends",
+ "is_query_report": True,
+ "doctype": "Purchase Invoice"
+ },
+ {
+ "type": "report",
+ "name": "Sales Invoice Trends",
+ "is_query_report": True,
+ "doctype": "Sales Invoice"
+ },
+ ]
+ },
+ ]
diff --git a/erpnext/config/buying.py b/erpnext/config/buying.py
index 0c8c2f6..c8a74be 100644
--- a/erpnext/config/buying.py
+++ b/erpnext/config/buying.py
@@ -1,169 +1,170 @@
from frappe import _
-data = [
- {
- "label": _("Documents"),
- "icon": "icon-star",
- "items": [
- {
- "type": "doctype",
- "name": "Supplier",
- "description": _("Supplier database."),
- },
- {
- "type": "doctype",
- "name": "Material Request",
- "description": _("Request for purchase."),
- },
- {
- "type": "doctype",
- "name": "Supplier Quotation",
- "description": _("Quotations received from Suppliers."),
- },
- {
- "type": "doctype",
- "name": "Purchase Order",
- "description": _("Purchase Orders given to Suppliers."),
- },
- {
- "type": "doctype",
- "name": "Contact",
- "description": _("All Contacts."),
- },
- {
- "type": "doctype",
- "name": "Address",
- "description": _("All Addresses."),
- },
- {
- "type": "doctype",
- "name": "Item",
- "description": _("All Products or Services."),
- },
- ]
- },
- {
- "label": _("Setup"),
- "icon": "icon-cog",
- "items": [
- {
- "type": "doctype",
- "name": "Buying Settings",
- "description": _("Default settings for buying transactions.")
- },
- {
- "type": "doctype",
- "name": "Supplier Type",
- "description": _("Supplier Type master.")
- },
- {
- "type": "page",
- "name": "Sales Browser",
- "icon": "icon-sitemap",
- "label": _("Item Group Tree"),
- "link": "Sales Browser/Item Group",
- "description": _("Tree of Item Groups."),
- "doctype": "Item Group",
- },
- {
- "type": "doctype",
- "name":"Terms and Conditions",
- "label": _("Terms and Conditions Template"),
- "description": _("Template of terms or contract.")
- },
- {
- "type": "doctype",
- "name": "Purchase Taxes and Charges Master",
- "description": _("Tax template for buying transactions.")
- },
- {
- "type": "doctype",
- "name": "Price List",
- "description": _("Price List master.")
- },
- {
- "type": "doctype",
- "name": "Item Price",
- "description": _("Multiple Item prices."),
- "route": "Report/Item Price"
- },
- {
- "type": "doctype",
- "name": "Pricing Rule",
- "description": _("Rules for applying pricing and discount.")
- },
- ]
- },
- {
- "label": _("Main Reports"),
- "icon": "icon-table",
- "items": [
- {
- "type": "page",
- "name": "purchase-analytics",
- "label": _("Purchase Analytics"),
- "icon": "icon-bar-chart",
- },
- ]
- },
- {
- "label": _("Standard Reports"),
- "icon": "icon-list",
- "items": [
- {
- "type": "report",
- "is_query_report": True,
- "name": "Items To Be Requested",
- "doctype": "Item"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Requested Items To Be Ordered",
- "doctype": "Material Request"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Material Requests for which Supplier Quotations are not created",
- "doctype": "Material Request"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Purchase In Transit",
- "doctype": "Purchase Order"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Item-wise Purchase History",
- "doctype": "Item"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Item-wise Last Purchase Rate",
- "doctype": "Item"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Purchase Order Trends",
- "doctype": "Purchase Order"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Supplier Addresses And Contacts",
- "doctype": "Supplier"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Supplier-Wise Sales Analytics",
- "doctype": "Stock Ledger Entry"
- }
- ]
- },
-]
\ No newline at end of file
+def get_data():
+ return [
+ {
+ "label": _("Documents"),
+ "icon": "icon-star",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Supplier",
+ "description": _("Supplier database."),
+ },
+ {
+ "type": "doctype",
+ "name": "Material Request",
+ "description": _("Request for purchase."),
+ },
+ {
+ "type": "doctype",
+ "name": "Supplier Quotation",
+ "description": _("Quotations received from Suppliers."),
+ },
+ {
+ "type": "doctype",
+ "name": "Purchase Order",
+ "description": _("Purchase Orders given to Suppliers."),
+ },
+ {
+ "type": "doctype",
+ "name": "Contact",
+ "description": _("All Contacts."),
+ },
+ {
+ "type": "doctype",
+ "name": "Address",
+ "description": _("All Addresses."),
+ },
+ {
+ "type": "doctype",
+ "name": "Item",
+ "description": _("All Products or Services."),
+ },
+ ]
+ },
+ {
+ "label": _("Setup"),
+ "icon": "icon-cog",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Buying Settings",
+ "description": _("Default settings for buying transactions.")
+ },
+ {
+ "type": "doctype",
+ "name": "Supplier Type",
+ "description": _("Supplier Type master.")
+ },
+ {
+ "type": "page",
+ "name": "Sales Browser",
+ "icon": "icon-sitemap",
+ "label": _("Item Group Tree"),
+ "link": "Sales Browser/Item Group",
+ "description": _("Tree of Item Groups."),
+ "doctype": "Item Group",
+ },
+ {
+ "type": "doctype",
+ "name":"Terms and Conditions",
+ "label": _("Terms and Conditions Template"),
+ "description": _("Template of terms or contract.")
+ },
+ {
+ "type": "doctype",
+ "name": "Purchase Taxes and Charges Master",
+ "description": _("Tax template for buying transactions.")
+ },
+ {
+ "type": "doctype",
+ "name": "Price List",
+ "description": _("Price List master.")
+ },
+ {
+ "type": "doctype",
+ "name": "Item Price",
+ "description": _("Multiple Item prices."),
+ "route": "Report/Item Price"
+ },
+ {
+ "type": "doctype",
+ "name": "Pricing Rule",
+ "description": _("Rules for applying pricing and discount.")
+ },
+ ]
+ },
+ {
+ "label": _("Main Reports"),
+ "icon": "icon-table",
+ "items": [
+ {
+ "type": "page",
+ "name": "purchase-analytics",
+ "label": _("Purchase Analytics"),
+ "icon": "icon-bar-chart",
+ },
+ ]
+ },
+ {
+ "label": _("Standard Reports"),
+ "icon": "icon-list",
+ "items": [
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Items To Be Requested",
+ "doctype": "Item"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Requested Items To Be Ordered",
+ "doctype": "Material Request"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Material Requests for which Supplier Quotations are not created",
+ "doctype": "Material Request"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Purchase In Transit",
+ "doctype": "Purchase Order"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Item-wise Purchase History",
+ "doctype": "Item"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Item-wise Last Purchase Rate",
+ "doctype": "Item"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Purchase Order Trends",
+ "doctype": "Purchase Order"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Supplier Addresses And Contacts",
+ "doctype": "Supplier"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Supplier-Wise Sales Analytics",
+ "doctype": "Stock Ledger Entry"
+ }
+ ]
+ },
+ ]
diff --git a/erpnext/config/hr.py b/erpnext/config/hr.py
index d944b94..1fac469 100644
--- a/erpnext/config/hr.py
+++ b/erpnext/config/hr.py
@@ -1,197 +1,198 @@
from frappe import _
-data = [
- {
- "label": _("Documents"),
- "icon": "icon-star",
- "items": [
- {
- "type": "doctype",
- "name": "Employee",
- "description": _("Employee records."),
- },
- {
- "type": "doctype",
- "name": "Salary Slip",
- "description": _("Monthly salary statement."),
- },
- {
- "type": "doctype",
- "name": "Leave Application",
- "description": _("Applications for leave."),
- },
- {
- "type": "doctype",
- "name": "Attendance",
- "description": _("Attendance record."),
- },
- {
- "type": "doctype",
- "name": "Expense Claim",
- "description": _("Claims for company expense."),
- },
- {
- "type": "doctype",
- "name": "Appraisal",
- "description": _("Performance appraisal."),
- },
- {
- "type": "doctype",
- "name": "Job Applicant",
- "description": _("Applicant for a Job."),
- },
- {
- "type": "doctype",
- "name": "Job Opening",
- "description": _("Opening for a Job."),
- },
- ]
- },
- {
- "label": _("Tools"),
- "icon": "icon-wrench",
- "items": [
- {
- "type": "doctype",
- "name": "Salary Manager",
- "label": _("Process Payroll"),
- "description":_("Generate Salary Slips"),
- "hide_count": True
- },
- {
- "type": "doctype",
- "name": "Upload Attendance",
- "description":_("Upload attendance from a .csv file"),
- "hide_count": True
- },
- {
- "type": "doctype",
- "name": "Leave Control Panel",
- "label": _("Leave Allocation Tool"),
- "description":_("Allocate leaves for the year."),
- "hide_count": True
- },
- ]
- },
- {
- "label": _("Setup"),
- "icon": "icon-cog",
- "items": [
- {
- "type": "doctype",
- "name": "HR Settings",
- "description": _("Settings for HR Module")
- },
- {
- "type": "doctype",
- "name": "Employee",
- "description": _("Employee master.")
- },
- {
- "type": "doctype",
- "name": "Employment Type",
- "description": _("Types of employment (permanent, contract, intern etc.).")
- },
- {
- "type": "doctype",
- "name": "Branch",
- "description": _("Organization branch master.")
- },
- {
- "type": "doctype",
- "name": "Department",
- "description": _("Organization unit (department) master.")
- },
- {
- "type": "doctype",
- "name": "Designation",
- "description": _("Employee designation (e.g. CEO, Director etc.).")
- },
- {
- "type": "doctype",
- "name": "Salary Structure",
- "description": _("Salary template master.")
- },
- {
- "type": "doctype",
- "name": "Earning Type",
- "description": _("Salary components.")
- },
- {
- "type": "doctype",
- "name": "Deduction Type",
- "description": _("Tax and other salary deductions.")
- },
- {
- "type": "doctype",
- "name": "Leave Allocation",
- "description": _("Allocate leaves for a period.")
- },
- {
- "type": "doctype",
- "name":"Leave Type",
- "description": _("Type of leaves like casual, sick etc."),
- },
- {
- "type": "doctype",
- "name": "Holiday List",
- "description": _("Holiday master.")
- },
- {
- "type": "doctype",
- "name": "Leave Block List",
- "description": _("Block leave applications by department.")
- },
- {
- "type": "doctype",
- "name": "Appraisal Template",
- "description": _("Template for performance appraisals.")
- },
- {
- "type": "doctype",
- "name": "Expense Claim Type",
- "description": _("Types of Expense Claim.")
- },
- {
- "type": "doctype",
- "name": "Jobs Email Settings",
- "description": _("Setup incoming server for jobs email id. (e.g. jobs@example.com)")
- },
- ]
- },
- {
- "label": _("Standard Reports"),
- "icon": "icon-list",
- "items": [
- {
- "type": "report",
- "is_query_report": True,
- "name": "Employee Leave Balance",
- "doctype": "Leave Application"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Employee Birthday",
- "doctype": "Employee"
- },
- {
- "type": "report",
- "name": "Employee Information",
- "doctype": "Employee"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Monthly Salary Register",
- "doctype": "Salary Slip"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Monthly Attendance Sheet",
- "doctype": "Attendance"
- },
- ]
- },
-]
+def get_data():
+ return [
+ {
+ "label": _("Documents"),
+ "icon": "icon-star",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Employee",
+ "description": _("Employee records."),
+ },
+ {
+ "type": "doctype",
+ "name": "Salary Slip",
+ "description": _("Monthly salary statement."),
+ },
+ {
+ "type": "doctype",
+ "name": "Leave Application",
+ "description": _("Applications for leave."),
+ },
+ {
+ "type": "doctype",
+ "name": "Attendance",
+ "description": _("Attendance record."),
+ },
+ {
+ "type": "doctype",
+ "name": "Expense Claim",
+ "description": _("Claims for company expense."),
+ },
+ {
+ "type": "doctype",
+ "name": "Appraisal",
+ "description": _("Performance appraisal."),
+ },
+ {
+ "type": "doctype",
+ "name": "Job Applicant",
+ "description": _("Applicant for a Job."),
+ },
+ {
+ "type": "doctype",
+ "name": "Job Opening",
+ "description": _("Opening for a Job."),
+ },
+ ]
+ },
+ {
+ "label": _("Tools"),
+ "icon": "icon-wrench",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Salary Manager",
+ "label": _("Process Payroll"),
+ "description":_("Generate Salary Slips"),
+ "hide_count": True
+ },
+ {
+ "type": "doctype",
+ "name": "Upload Attendance",
+ "description":_("Upload attendance from a .csv file"),
+ "hide_count": True
+ },
+ {
+ "type": "doctype",
+ "name": "Leave Control Panel",
+ "label": _("Leave Allocation Tool"),
+ "description":_("Allocate leaves for the year."),
+ "hide_count": True
+ },
+ ]
+ },
+ {
+ "label": _("Setup"),
+ "icon": "icon-cog",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "HR Settings",
+ "description": _("Settings for HR Module")
+ },
+ {
+ "type": "doctype",
+ "name": "Employee",
+ "description": _("Employee master.")
+ },
+ {
+ "type": "doctype",
+ "name": "Employment Type",
+ "description": _("Types of employment (permanent, contract, intern etc.).")
+ },
+ {
+ "type": "doctype",
+ "name": "Branch",
+ "description": _("Organization branch master.")
+ },
+ {
+ "type": "doctype",
+ "name": "Department",
+ "description": _("Organization unit (department) master.")
+ },
+ {
+ "type": "doctype",
+ "name": "Designation",
+ "description": _("Employee designation (e.g. CEO, Director etc.).")
+ },
+ {
+ "type": "doctype",
+ "name": "Salary Structure",
+ "description": _("Salary template master.")
+ },
+ {
+ "type": "doctype",
+ "name": "Earning Type",
+ "description": _("Salary components.")
+ },
+ {
+ "type": "doctype",
+ "name": "Deduction Type",
+ "description": _("Tax and other salary deductions.")
+ },
+ {
+ "type": "doctype",
+ "name": "Leave Allocation",
+ "description": _("Allocate leaves for a period.")
+ },
+ {
+ "type": "doctype",
+ "name":"Leave Type",
+ "description": _("Type of leaves like casual, sick etc."),
+ },
+ {
+ "type": "doctype",
+ "name": "Holiday List",
+ "description": _("Holiday master.")
+ },
+ {
+ "type": "doctype",
+ "name": "Leave Block List",
+ "description": _("Block leave applications by department.")
+ },
+ {
+ "type": "doctype",
+ "name": "Appraisal Template",
+ "description": _("Template for performance appraisals.")
+ },
+ {
+ "type": "doctype",
+ "name": "Expense Claim Type",
+ "description": _("Types of Expense Claim.")
+ },
+ {
+ "type": "doctype",
+ "name": "Jobs Email Settings",
+ "description": _("Setup incoming server for jobs email id. (e.g. jobs@example.com)")
+ },
+ ]
+ },
+ {
+ "label": _("Standard Reports"),
+ "icon": "icon-list",
+ "items": [
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Employee Leave Balance",
+ "doctype": "Leave Application"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Employee Birthday",
+ "doctype": "Employee"
+ },
+ {
+ "type": "report",
+ "name": "Employee Information",
+ "doctype": "Employee"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Monthly Salary Register",
+ "doctype": "Salary Slip"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Monthly Attendance Sheet",
+ "doctype": "Attendance"
+ },
+ ]
+ },
+ ]
diff --git a/erpnext/config/manufacturing.py b/erpnext/config/manufacturing.py
index b213f5d..a1644a2 100644
--- a/erpnext/config/manufacturing.py
+++ b/erpnext/config/manufacturing.py
@@ -1,78 +1,79 @@
from frappe import _
-data = [
- {
- "label": _("Documents"),
- "icon": "icon-star",
- "items": [
- {
- "type": "doctype",
- "name": "BOM",
- "description": _("Bill of Materials (BOM)"),
- "label": _("Bill of Material")
- },
- {
- "type": "doctype",
- "name": "Production Order",
- "description": _("Orders released for production."),
- },
- {
- "type": "doctype",
- "name": "Item",
- "description": _("All Products or Services."),
- },
- {
- "type": "doctype",
- "name": "Workstation",
- "description": _("Where manufacturing operations are carried out."),
- },
+def get_data():
+ return [
+ {
+ "label": _("Documents"),
+ "icon": "icon-star",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "BOM",
+ "description": _("Bill of Materials (BOM)"),
+ "label": _("Bill of Material")
+ },
+ {
+ "type": "doctype",
+ "name": "Production Order",
+ "description": _("Orders released for production."),
+ },
+ {
+ "type": "doctype",
+ "name": "Item",
+ "description": _("All Products or Services."),
+ },
+ {
+ "type": "doctype",
+ "name": "Workstation",
+ "description": _("Where manufacturing operations are carried out."),
+ },
- ]
- },
- {
- "label": _("Tools"),
- "icon": "icon-wrench",
- "items": [
- {
- "type": "doctype",
- "name": "Production Planning Tool",
- "description": _("Generate Material Requests (MRP) and Production Orders."),
- },
- {
- "type": "doctype",
- "name": "BOM Replace Tool",
- "description": _("Replace Item / BOM in all BOMs"),
- },
- ]
- },
- {
- "label": _("Standard Reports"),
- "icon": "icon-list",
- "items": [
- {
- "type": "report",
- "is_query_report": True,
- "name": "Open Production Orders",
- "doctype": "Production Order"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Production Orders in Progress",
- "doctype": "Production Order"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Issued Items Against Production Order",
- "doctype": "Production Order"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Completed Production Orders",
- "doctype": "Production Order"
- },
- ]
- },
-]
+ ]
+ },
+ {
+ "label": _("Tools"),
+ "icon": "icon-wrench",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Production Planning Tool",
+ "description": _("Generate Material Requests (MRP) and Production Orders."),
+ },
+ {
+ "type": "doctype",
+ "name": "BOM Replace Tool",
+ "description": _("Replace Item / BOM in all BOMs"),
+ },
+ ]
+ },
+ {
+ "label": _("Standard Reports"),
+ "icon": "icon-list",
+ "items": [
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Open Production Orders",
+ "doctype": "Production Order"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Production Orders in Progress",
+ "doctype": "Production Order"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Issued Items Against Production Order",
+ "doctype": "Production Order"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Completed Production Orders",
+ "doctype": "Production Order"
+ },
+ ]
+ },
+ ]
diff --git a/erpnext/config/projects.py b/erpnext/config/projects.py
index 8cc30a5..a00b462 100644
--- a/erpnext/config/projects.py
+++ b/erpnext/config/projects.py
@@ -1,66 +1,67 @@
from frappe import _
-data = [
- {
- "label": _("Documents"),
- "icon": "icon-star",
- "items": [
- {
- "type": "doctype",
- "name": "Task",
- "description": _("Project activity / task."),
- },
- {
- "type": "doctype",
- "name": "Project",
- "description": _("Project master."),
- },
- {
- "type": "doctype",
- "name": "Time Log",
- "description": _("Time Log for tasks."),
- },
- {
- "type": "doctype",
- "name": "Time Log Batch",
- "description": _("Batch Time Logs for billing."),
- },
- {
- "type": "doctype",
- "name": "Activity Type",
- "description": _("Types of activities for Time Sheets"),
- },
- ]
- },
- {
- "label": _("Tools"),
- "icon": "icon-wrench",
- "items": [
- {
- "type": "report",
- "route": "Gantt/Task",
- "doctype": "Task",
- "name": "Gantt Chart",
- "description": _("Gantt chart of all tasks.")
- },
- ]
- },
- {
- "label": _("Standard Reports"),
- "icon": "icon-list",
- "items": [
- {
- "type": "report",
- "is_query_report": True,
- "name": "Daily Time Log Summary",
- "doctype": "Time Log"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Project wise Stock Tracking",
- "doctype": "Project"
- },
- ]
- },
-]
\ No newline at end of file
+def get_data():
+ return [
+ {
+ "label": _("Documents"),
+ "icon": "icon-star",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Task",
+ "description": _("Project activity / task."),
+ },
+ {
+ "type": "doctype",
+ "name": "Project",
+ "description": _("Project master."),
+ },
+ {
+ "type": "doctype",
+ "name": "Time Log",
+ "description": _("Time Log for tasks."),
+ },
+ {
+ "type": "doctype",
+ "name": "Time Log Batch",
+ "description": _("Batch Time Logs for billing."),
+ },
+ {
+ "type": "doctype",
+ "name": "Activity Type",
+ "description": _("Types of activities for Time Sheets"),
+ },
+ ]
+ },
+ {
+ "label": _("Tools"),
+ "icon": "icon-wrench",
+ "items": [
+ {
+ "type": "report",
+ "route": "Gantt/Task",
+ "doctype": "Task",
+ "name": "Gantt Chart",
+ "description": _("Gantt chart of all tasks.")
+ },
+ ]
+ },
+ {
+ "label": _("Standard Reports"),
+ "icon": "icon-list",
+ "items": [
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Daily Time Log Summary",
+ "doctype": "Time Log"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Project wise Stock Tracking",
+ "doctype": "Project"
+ },
+ ]
+ },
+ ]
diff --git a/erpnext/config/selling.py b/erpnext/config/selling.py
index 04e6244..4d3e059 100644
--- a/erpnext/config/selling.py
+++ b/erpnext/config/selling.py
@@ -1,265 +1,266 @@
from frappe import _
-data = [
- {
- "label": _("Documents"),
- "icon": "icon-star",
- "items": [
- {
- "type": "doctype",
- "name": "Lead",
- "description": _("Database of potential customers."),
- },
- {
- "type": "doctype",
- "name": "Customer",
- "description": _("Customer database."),
- },
- {
- "type": "doctype",
- "name": "Opportunity",
- "description": _("Potential opportunities for selling."),
- },
- {
- "type": "doctype",
- "name": "Quotation",
- "description": _("Quotes to Leads or Customers."),
- },
- {
- "type": "doctype",
- "name": "Sales Order",
- "description": _("Confirmed orders from Customers."),
- },
- {
- "type": "doctype",
- "name": "Contact",
- "description": _("All Contacts."),
- },
- {
- "type": "doctype",
- "name": "Address",
- "description": _("All Addresses."),
- },
- {
- "type": "doctype",
- "name": "Item",
- "description": _("All Products or Services."),
- },
- ]
- },
- {
- "label": _("Tools"),
- "icon": "icon-wrench",
- "items": [
- {
- "type": "doctype",
- "name": "SMS Center",
- "description":_("Send mass SMS to your contacts"),
- },
- ]
- },
- {
- "label": _("Setup"),
- "icon": "icon-cog",
- "items": [
- {
- "type": "doctype",
- "name": "Selling Settings",
- "description": _("Default settings for selling transactions.")
- },
- {
- "type": "doctype",
- "name": "Campaign",
- "description": _("Sales campaigns."),
- },
- {
- "type": "page",
- "label": _("Customer Group"),
- "name": "Sales Browser",
- "icon": "icon-sitemap",
- "link": "Sales Browser/Customer Group",
- "description": _("Manage Customer Group Tree."),
- "doctype": "Customer Group",
- },
- {
- "type": "page",
- "label": _("Territory"),
- "name": "Sales Browser",
- "icon": "icon-sitemap",
- "link": "Sales Browser/Territory",
- "description": _("Manage Territory Tree."),
- "doctype": "Territory",
- },
- {
- "type": "page",
- "label": _("Sales Person"),
- "name": "Sales Browser",
- "icon": "icon-sitemap",
- "link": "Sales Browser/Sales Person",
- "description": _("Manage Sales Person Tree."),
- "doctype": "Sales Person",
- },
- {
- "type": "page",
- "name": "Sales Browser",
- "icon": "icon-sitemap",
- "label": _("Item Group Tree"),
- "link": "Sales Browser/Item Group",
- "description": _("Tree of Item Groups."),
- "doctype": "Item Group",
- },
- {
- "type": "doctype",
- "name":"Terms and Conditions",
- "label": _("Terms and Conditions Template"),
- "description": _("Template of terms or contract.")
- },
- {
- "type": "doctype",
- "name": "Sales Taxes and Charges Master",
- "description": _("Tax template for selling transactions.")
- },
- {
- "type": "doctype",
- "name": "Shipping Rule",
- "description": _("Rules for adding shipping costs.")
- },
- {
- "type": "doctype",
- "name": "Price List",
- "description": _("Price List master.")
- },
- {
- "type": "doctype",
- "name": "Item Price",
- "description": _("Multiple Item prices."),
- "route": "Report/Item Price"
- },
- {
- "type": "doctype",
- "name": "Pricing Rule",
- "description": _("Rules for applying pricing and discount.")
- },
- {
- "type": "doctype",
- "name": "Sales BOM",
- "description": _("Bundle items at time of sale."),
- },
- {
- "type": "doctype",
- "name": "Sales Email Settings",
- "description": _("Setup incoming server for sales email id. (e.g. sales@example.com)")
- },
- {
- "type": "doctype",
- "name": "Industry Type",
- "description": _("Track Leads by Industry Type.")
- },
- ]
- },
- {
- "label": _("Main Reports"),
- "icon": "icon-table",
- "items": [
- {
- "type": "page",
- "name": "sales-analytics",
- "label": _("Sales Analytics"),
- "icon": "icon-bar-chart",
- },
- {
- "type": "page",
- "name": "sales-funnel",
- "label": _("Sales Funnel"),
- "icon": "icon-bar-chart",
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Customer Acquisition and Loyalty",
- "doctype": "Customer",
- "icon": "icon-bar-chart",
- },
- ]
- },
- {
- "label": _("Standard Reports"),
- "icon": "icon-list",
- "items": [
- {
- "type": "report",
- "is_query_report": True,
- "name": "Lead Details",
- "doctype": "Lead"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Customer Addresses And Contacts",
- "doctype": "Contact"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Ordered Items To Be Delivered",
- "doctype": "Sales Order"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Sales Person-wise Transaction Summary",
- "doctype": "Sales Order"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Item-wise Sales History",
- "doctype": "Item"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Territory Target Variance (Item Group-Wise)",
- "route": "query-report/Territory Target Variance Item Group-Wise",
- "doctype": "Territory"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Sales Person Target Variance (Item Group-Wise)",
- "route": "query-report/Sales Person Target Variance Item Group-Wise",
- "doctype": "Sales Person",
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Customers Not Buying Since Long Time",
- "doctype": "Sales Order"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Quotation Trend",
- "doctype": "Quotation"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Sales Order Trends",
- "doctype": "Sales Order"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Available Stock for Packing Items",
- "doctype": "Item",
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Pending SO Items For Purchase Request",
- "doctype": "Sales Order"
- },
- ]
- },
-]
+def get_data():
+ return [
+ {
+ "label": _("Documents"),
+ "icon": "icon-star",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Lead",
+ "description": _("Database of potential customers."),
+ },
+ {
+ "type": "doctype",
+ "name": "Customer",
+ "description": _("Customer database."),
+ },
+ {
+ "type": "doctype",
+ "name": "Opportunity",
+ "description": _("Potential opportunities for selling."),
+ },
+ {
+ "type": "doctype",
+ "name": "Quotation",
+ "description": _("Quotes to Leads or Customers."),
+ },
+ {
+ "type": "doctype",
+ "name": "Sales Order",
+ "description": _("Confirmed orders from Customers."),
+ },
+ {
+ "type": "doctype",
+ "name": "Contact",
+ "description": _("All Contacts."),
+ },
+ {
+ "type": "doctype",
+ "name": "Address",
+ "description": _("All Addresses."),
+ },
+ {
+ "type": "doctype",
+ "name": "Item",
+ "description": _("All Products or Services."),
+ },
+ ]
+ },
+ {
+ "label": _("Tools"),
+ "icon": "icon-wrench",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "SMS Center",
+ "description":_("Send mass SMS to your contacts"),
+ },
+ ]
+ },
+ {
+ "label": _("Setup"),
+ "icon": "icon-cog",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Selling Settings",
+ "description": _("Default settings for selling transactions.")
+ },
+ {
+ "type": "doctype",
+ "name": "Campaign",
+ "description": _("Sales campaigns."),
+ },
+ {
+ "type": "page",
+ "label": _("Customer Group"),
+ "name": "Sales Browser",
+ "icon": "icon-sitemap",
+ "link": "Sales Browser/Customer Group",
+ "description": _("Manage Customer Group Tree."),
+ "doctype": "Customer Group",
+ },
+ {
+ "type": "page",
+ "label": _("Territory"),
+ "name": "Sales Browser",
+ "icon": "icon-sitemap",
+ "link": "Sales Browser/Territory",
+ "description": _("Manage Territory Tree."),
+ "doctype": "Territory",
+ },
+ {
+ "type": "page",
+ "label": _("Sales Person"),
+ "name": "Sales Browser",
+ "icon": "icon-sitemap",
+ "link": "Sales Browser/Sales Person",
+ "description": _("Manage Sales Person Tree."),
+ "doctype": "Sales Person",
+ },
+ {
+ "type": "page",
+ "name": "Sales Browser",
+ "icon": "icon-sitemap",
+ "label": _("Item Group Tree"),
+ "link": "Sales Browser/Item Group",
+ "description": _("Tree of Item Groups."),
+ "doctype": "Item Group",
+ },
+ {
+ "type": "doctype",
+ "name":"Terms and Conditions",
+ "label": _("Terms and Conditions Template"),
+ "description": _("Template of terms or contract.")
+ },
+ {
+ "type": "doctype",
+ "name": "Sales Taxes and Charges Master",
+ "description": _("Tax template for selling transactions.")
+ },
+ {
+ "type": "doctype",
+ "name": "Shipping Rule",
+ "description": _("Rules for adding shipping costs.")
+ },
+ {
+ "type": "doctype",
+ "name": "Price List",
+ "description": _("Price List master.")
+ },
+ {
+ "type": "doctype",
+ "name": "Item Price",
+ "description": _("Multiple Item prices."),
+ "route": "Report/Item Price"
+ },
+ {
+ "type": "doctype",
+ "name": "Pricing Rule",
+ "description": _("Rules for applying pricing and discount.")
+ },
+ {
+ "type": "doctype",
+ "name": "Sales BOM",
+ "description": _("Bundle items at time of sale."),
+ },
+ {
+ "type": "doctype",
+ "name": "Sales Email Settings",
+ "description": _("Setup incoming server for sales email id. (e.g. sales@example.com)")
+ },
+ {
+ "type": "doctype",
+ "name": "Industry Type",
+ "description": _("Track Leads by Industry Type.")
+ },
+ ]
+ },
+ {
+ "label": _("Main Reports"),
+ "icon": "icon-table",
+ "items": [
+ {
+ "type": "page",
+ "name": "sales-analytics",
+ "label": _("Sales Analytics"),
+ "icon": "icon-bar-chart",
+ },
+ {
+ "type": "page",
+ "name": "sales-funnel",
+ "label": _("Sales Funnel"),
+ "icon": "icon-bar-chart",
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Customer Acquisition and Loyalty",
+ "doctype": "Customer",
+ "icon": "icon-bar-chart",
+ },
+ ]
+ },
+ {
+ "label": _("Standard Reports"),
+ "icon": "icon-list",
+ "items": [
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Lead Details",
+ "doctype": "Lead"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Customer Addresses And Contacts",
+ "doctype": "Contact"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Ordered Items To Be Delivered",
+ "doctype": "Sales Order"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Sales Person-wise Transaction Summary",
+ "doctype": "Sales Order"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Item-wise Sales History",
+ "doctype": "Item"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Territory Target Variance (Item Group-Wise)",
+ "route": "query-report/Territory Target Variance Item Group-Wise",
+ "doctype": "Territory"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Sales Person Target Variance (Item Group-Wise)",
+ "route": "query-report/Sales Person Target Variance Item Group-Wise",
+ "doctype": "Sales Person",
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Customers Not Buying Since Long Time",
+ "doctype": "Sales Order"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Quotation Trend",
+ "doctype": "Quotation"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Sales Order Trends",
+ "doctype": "Sales Order"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Available Stock for Packing Items",
+ "doctype": "Item",
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Pending SO Items For Purchase Request",
+ "doctype": "Sales Order"
+ },
+ ]
+ },
+ ]
diff --git a/erpnext/config/setup.py b/erpnext/config/setup.py
index 6689dd7..e538de5 100644
--- a/erpnext/config/setup.py
+++ b/erpnext/config/setup.py
@@ -1,129 +1,127 @@
from frappe import _
from frappe.widgets.moduleview import add_setup_section
-data = [
- {
- "label": _("Settings"),
- "icon": "icon-wrench",
- "items": [
- {
- "type": "doctype",
- "name": "Global Defaults",
- "label": _("Global Settings"),
- "description": _("Set Default Values like Company, Currency, Current Fiscal Year, etc."),
- "hide_count": True
- }
- ]
- },
- {
- "label": _("Printing and Branding"),
- "icon": "icon-print",
- "items": [
- {
- "type": "doctype",
- "name": "Letter Head",
- "description": _("Letter Heads for print templates.")
- },
- {
- "type": "doctype",
- "name": "Print Heading",
- "description": _("Titles for print templates e.g. Proforma Invoice.")
- },
- {
- "type": "doctype",
- "name": "Terms and Conditions",
- "description": _("Standard contract terms for Sales or Purchase.")
- },
- ]
- },
- {
- "label": _("Customize"),
- "icon": "icon-glass",
- "items": [
- {
- "type": "doctype",
- "name": "Features Setup",
- "description": _("Show / Hide features like Serial Nos, POS etc.")
- },
- {
- "type": "doctype",
- "name": "Authorization Rule",
- "description": _("Create rules to restrict transactions based on values.")
- },
- {
- "type": "doctype",
- "name": "Notification Control",
- "label": _("Email Notifications"),
- "description": _("Automatically compose message on submission of transactions.")
- }
- ]
- },
- {
- "label": _("Email"),
- "icon": "icon-envelope",
- "items": [
- {
- "type": "doctype",
- "name": "Email Digest",
- "description": _("Create and manage daily, weekly and monthly email digests.")
- },
- {
- "type": "doctype",
- "name": "Support Email Settings",
- "description": _("Setup incoming server for support email id. (e.g. support@example.com)")
- },
- {
- "type": "doctype",
- "name": "Sales Email Settings",
- "description": _("Setup incoming server for sales email id. (e.g. sales@example.com)")
- },
- {
- "type": "doctype",
- "name": "Jobs Email Settings",
- "description": _("Setup incoming server for jobs email id. (e.g. jobs@example.com)")
- },
- ]
- },
- {
- "label": _("Masters"),
- "icon": "icon-star",
- "items": [
- {
- "type": "doctype",
- "name": "Company",
- "description": _("Company (not Customer or Supplier) master.")
- },
- {
- "type": "doctype",
- "name": "Item",
- "description": _("Item master.")
- },
- {
- "type": "doctype",
- "name": "Customer",
- "description": _("Customer master.")
- },
- {
- "type": "doctype",
- "name": "Supplier",
- "description": _("Supplier master.")
- },
- {
- "type": "doctype",
- "name": "Contact",
- "description": _("Contact master.")
- },
- {
- "type": "doctype",
- "name": "Address",
- "description": _("Address master.")
- },
- ]
- },
-]
-
def get_data():
- out = list(data)
+ data = [
+ {
+ "label": _("Settings"),
+ "icon": "icon-wrench",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Global Defaults",
+ "label": _("Global Settings"),
+ "description": _("Set Default Values like Company, Currency, Current Fiscal Year, etc."),
+ "hide_count": True
+ }
+ ]
+ },
+ {
+ "label": _("Printing and Branding"),
+ "icon": "icon-print",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Letter Head",
+ "description": _("Letter Heads for print templates.")
+ },
+ {
+ "type": "doctype",
+ "name": "Print Heading",
+ "description": _("Titles for print templates e.g. Proforma Invoice.")
+ },
+ {
+ "type": "doctype",
+ "name": "Terms and Conditions",
+ "description": _("Standard contract terms for Sales or Purchase.")
+ },
+ ]
+ },
+ {
+ "label": _("Customize"),
+ "icon": "icon-glass",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Features Setup",
+ "description": _("Show / Hide features like Serial Nos, POS etc.")
+ },
+ {
+ "type": "doctype",
+ "name": "Authorization Rule",
+ "description": _("Create rules to restrict transactions based on values.")
+ },
+ {
+ "type": "doctype",
+ "name": "Notification Control",
+ "label": _("Email Notifications"),
+ "description": _("Automatically compose message on submission of transactions.")
+ }
+ ]
+ },
+ {
+ "label": _("Email"),
+ "icon": "icon-envelope",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Email Digest",
+ "description": _("Create and manage daily, weekly and monthly email digests.")
+ },
+ {
+ "type": "doctype",
+ "name": "Support Email Settings",
+ "description": _("Setup incoming server for support email id. (e.g. support@example.com)")
+ },
+ {
+ "type": "doctype",
+ "name": "Sales Email Settings",
+ "description": _("Setup incoming server for sales email id. (e.g. sales@example.com)")
+ },
+ {
+ "type": "doctype",
+ "name": "Jobs Email Settings",
+ "description": _("Setup incoming server for jobs email id. (e.g. jobs@example.com)")
+ },
+ ]
+ },
+ {
+ "label": _("Masters"),
+ "icon": "icon-star",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Company",
+ "description": _("Company (not Customer or Supplier) master.")
+ },
+ {
+ "type": "doctype",
+ "name": "Item",
+ "description": _("Item master.")
+ },
+ {
+ "type": "doctype",
+ "name": "Customer",
+ "description": _("Customer master.")
+ },
+ {
+ "type": "doctype",
+ "name": "Supplier",
+ "description": _("Supplier master.")
+ },
+ {
+ "type": "doctype",
+ "name": "Contact",
+ "description": _("Contact master.")
+ },
+ {
+ "type": "doctype",
+ "name": "Address",
+ "description": _("Address master.")
+ },
+ ]
+ },
+ ]
for module, label, icon in (
("accounts", _("Accounts"), "icon-money"),
@@ -133,6 +131,6 @@
("hr", _("Human Resources"), "icon-group"),
("support", _("Support"), "icon-phone")):
- add_setup_section(out, "erpnext", module, label, icon)
+ add_setup_section(data, "erpnext", module, label, icon)
- return out
+ return data
diff --git a/erpnext/config/stock.py b/erpnext/config/stock.py
index afc4ea8..0f53288 100644
--- a/erpnext/config/stock.py
+++ b/erpnext/config/stock.py
@@ -1,263 +1,264 @@
from frappe import _
-data = [
- {
- "label": _("Documents"),
- "icon": "icon-star",
- "items": [
- {
- "type": "doctype",
- "name": "Material Request",
- "description": _("Requests for items."),
- },
- {
- "type": "doctype",
- "name": "Stock Entry",
- "description": _("Record item movement."),
- },
- {
- "type": "doctype",
- "name": "Delivery Note",
- "description": _("Shipments to customers."),
- },
- {
- "type": "doctype",
- "name": "Purchase Receipt",
- "description": _("Goods received from Suppliers."),
- },
- {
- "type": "doctype",
- "name": "Item",
- "description": _("All Products or Services."),
- },
- {
- "type": "doctype",
- "name": "Warehouse",
- "description": _("Where items are stored."),
- },
- {
- "type": "doctype",
- "name": "Serial No",
- "description": _("Single unit of an Item."),
- },
- {
- "type": "doctype",
- "name": "Batch",
- "description": _("Batch (lot) of an Item."),
- },
- ]
- },
- {
- "label": _("Tools"),
- "icon": "icon-wrench",
- "items": [
- {
- "type": "doctype",
- "name": "Stock Reconciliation",
- "description": _("Upload stock balance via csv.")
- },
- {
- "type": "doctype",
- "name": "Installation Note",
- "description": _("Installation record for a Serial No.")
- },
- {
- "type": "doctype",
- "name": "Packing Slip",
- "description": _("Split Delivery Note into packages.")
- },
- {
- "type": "doctype",
- "name": "Quality Inspection",
- "description": _("Incoming quality inspection.")
- },
- {
- "type": "doctype",
- "name": "Landed Cost Wizard",
- "description": _("Distribute transport overhead across items."),
- },
- {
- "type": "doctype",
- "name": "Stock UOM Replace Utility",
- "description": _("Change UOM for an Item."),
- },
- ]
- },
- {
- "label": _("Setup"),
- "icon": "icon-cog",
- "items": [
- {
- "type": "doctype",
- "name": "Stock Settings",
- "description": _("Default settings for stock transactions.")
- },
- {
- "type": "page",
- "name": "Sales Browser",
- "icon": "icon-sitemap",
- "label": _("Item Group Tree"),
- "link": "Sales Browser/Item Group",
- "description": _("Tree of Item Groups."),
- "doctype": "Item Group",
- },
- {
- "type": "doctype",
- "name": "UOM",
- "label": _("Unit of Measure") + " (UOM)",
- "description": _("e.g. Kg, Unit, Nos, m")
- },
- {
- "type": "doctype",
- "name": "Warehouse",
- "description": _("Warehouses.")
- },
- {
- "type": "doctype",
- "name": "Brand",
- "description": _("Brand master.")
- },
- {
- "type": "doctype",
- "name": "Price List",
- "description": _("Price List master.")
- },
- {
- "type": "doctype",
- "name": "Item Price",
- "description": _("Multiple Item prices."),
- "route": "Report/Item Price"
- },
- ]
- },
- {
- "label": _("Main Reports"),
- "icon": "icon-table",
- "items": [
- {
- "type": "report",
- "is_query_report": True,
- "name": "Stock Ledger",
- "doctype": "Item",
- },
- {
- "type": "page",
- "name": "stock-balance",
- "label": _("Stock Balance"),
- "icon": "icon-table",
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Stock Projected Qty",
- "doctype": "Item",
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Stock Ageing",
- "doctype": "Item",
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Item-wise Price List Rate",
- "doctype": "Item Price",
- },
- {
- "type": "page",
- "name": "stock-analytics",
- "label": _("Stock Analytics"),
- "icon": "icon-bar-chart"
- },
- ]
- },
- {
- "label": _("Standard Reports"),
- "icon": "icon-list",
- "items": [
- {
- "type": "report",
- "is_query_report": True,
- "name": "Ordered Items To Be Delivered",
- "doctype": "Delivery Note"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Purchase Order Items To Be Received",
- "doctype": "Purchase Receipt"
- },
- {
- "type": "report",
- "name": "Item Shortage Report",
- "route": "Report/Bin/Item Shortage Report",
- "doctype": "Purchase Receipt"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Serial No Service Contract Expiry",
- "doctype": "Serial No"
- },
- {
- "type": "report",
- "name": "Serial No Status",
- "doctype": "Serial No"
- },
- {
- "type": "report",
- "name": "Serial No Warranty Expiry",
- "doctype": "Serial No"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Purchase In Transit",
- "doctype": "Purchase Order"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Requested Items To Be Transferred",
- "doctype": "Material Request"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Batch-Wise Balance History",
- "doctype": "Batch"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Warehouse-Wise Stock Balance",
- "doctype": "Warehouse"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Item Prices",
- "doctype": "Price List"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Itemwise Recommended Reorder Level",
- "doctype": "Item"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Delivery Note Trends",
- "doctype": "Delivery Note"
- },
- {
- "type": "report",
- "is_query_report": True,
- "name": "Purchase Receipt Trends",
- "doctype": "Purchase Receipt"
- },
- ]
- },
-]
\ No newline at end of file
+def get_data():
+ return [
+ {
+ "label": _("Documents"),
+ "icon": "icon-star",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Material Request",
+ "description": _("Requests for items."),
+ },
+ {
+ "type": "doctype",
+ "name": "Stock Entry",
+ "description": _("Record item movement."),
+ },
+ {
+ "type": "doctype",
+ "name": "Delivery Note",
+ "description": _("Shipments to customers."),
+ },
+ {
+ "type": "doctype",
+ "name": "Purchase Receipt",
+ "description": _("Goods received from Suppliers."),
+ },
+ {
+ "type": "doctype",
+ "name": "Item",
+ "description": _("All Products or Services."),
+ },
+ {
+ "type": "doctype",
+ "name": "Warehouse",
+ "description": _("Where items are stored."),
+ },
+ {
+ "type": "doctype",
+ "name": "Serial No",
+ "description": _("Single unit of an Item."),
+ },
+ {
+ "type": "doctype",
+ "name": "Batch",
+ "description": _("Batch (lot) of an Item."),
+ },
+ ]
+ },
+ {
+ "label": _("Tools"),
+ "icon": "icon-wrench",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Stock Reconciliation",
+ "description": _("Upload stock balance via csv.")
+ },
+ {
+ "type": "doctype",
+ "name": "Installation Note",
+ "description": _("Installation record for a Serial No.")
+ },
+ {
+ "type": "doctype",
+ "name": "Packing Slip",
+ "description": _("Split Delivery Note into packages.")
+ },
+ {
+ "type": "doctype",
+ "name": "Quality Inspection",
+ "description": _("Incoming quality inspection.")
+ },
+ {
+ "type": "doctype",
+ "name": "Landed Cost Wizard",
+ "description": _("Distribute transport overhead across items."),
+ },
+ {
+ "type": "doctype",
+ "name": "Stock UOM Replace Utility",
+ "description": _("Change UOM for an Item."),
+ },
+ ]
+ },
+ {
+ "label": _("Setup"),
+ "icon": "icon-cog",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Stock Settings",
+ "description": _("Default settings for stock transactions.")
+ },
+ {
+ "type": "page",
+ "name": "Sales Browser",
+ "icon": "icon-sitemap",
+ "label": _("Item Group Tree"),
+ "link": "Sales Browser/Item Group",
+ "description": _("Tree of Item Groups."),
+ "doctype": "Item Group",
+ },
+ {
+ "type": "doctype",
+ "name": "UOM",
+ "label": _("Unit of Measure") + " (UOM)",
+ "description": _("e.g. Kg, Unit, Nos, m")
+ },
+ {
+ "type": "doctype",
+ "name": "Warehouse",
+ "description": _("Warehouses.")
+ },
+ {
+ "type": "doctype",
+ "name": "Brand",
+ "description": _("Brand master.")
+ },
+ {
+ "type": "doctype",
+ "name": "Price List",
+ "description": _("Price List master.")
+ },
+ {
+ "type": "doctype",
+ "name": "Item Price",
+ "description": _("Multiple Item prices."),
+ "route": "Report/Item Price"
+ },
+ ]
+ },
+ {
+ "label": _("Main Reports"),
+ "icon": "icon-table",
+ "items": [
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Stock Ledger",
+ "doctype": "Item",
+ },
+ {
+ "type": "page",
+ "name": "stock-balance",
+ "label": _("Stock Balance"),
+ "icon": "icon-table",
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Stock Projected Qty",
+ "doctype": "Item",
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Stock Ageing",
+ "doctype": "Item",
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Item-wise Price List Rate",
+ "doctype": "Item Price",
+ },
+ {
+ "type": "page",
+ "name": "stock-analytics",
+ "label": _("Stock Analytics"),
+ "icon": "icon-bar-chart"
+ },
+ ]
+ },
+ {
+ "label": _("Standard Reports"),
+ "icon": "icon-list",
+ "items": [
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Ordered Items To Be Delivered",
+ "doctype": "Delivery Note"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Purchase Order Items To Be Received",
+ "doctype": "Purchase Receipt"
+ },
+ {
+ "type": "report",
+ "name": "Item Shortage Report",
+ "route": "Report/Bin/Item Shortage Report",
+ "doctype": "Purchase Receipt"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Serial No Service Contract Expiry",
+ "doctype": "Serial No"
+ },
+ {
+ "type": "report",
+ "name": "Serial No Status",
+ "doctype": "Serial No"
+ },
+ {
+ "type": "report",
+ "name": "Serial No Warranty Expiry",
+ "doctype": "Serial No"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Purchase In Transit",
+ "doctype": "Purchase Order"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Requested Items To Be Transferred",
+ "doctype": "Material Request"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Batch-Wise Balance History",
+ "doctype": "Batch"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Warehouse-Wise Stock Balance",
+ "doctype": "Warehouse"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Item Prices",
+ "doctype": "Price List"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Itemwise Recommended Reorder Level",
+ "doctype": "Item"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Delivery Note Trends",
+ "doctype": "Delivery Note"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
+ "name": "Purchase Receipt Trends",
+ "doctype": "Purchase Receipt"
+ },
+ ]
+ },
+ ]
diff --git a/erpnext/config/support.py b/erpnext/config/support.py
index 0914320..97807a3 100644
--- a/erpnext/config/support.py
+++ b/erpnext/config/support.py
@@ -1,74 +1,75 @@
from frappe import _
-data = [
- {
- "label": _("Documents"),
- "icon": "icon-star",
- "items": [
- {
- "type": "doctype",
- "name": "Support Ticket",
- "description": _("Support queries from customers."),
- },
- {
- "type": "doctype",
- "name": "Customer Issue",
- "description": _("Customer Issue against Serial No."),
- },
- {
- "type": "doctype",
- "name": "Maintenance Schedule",
- "description": _("Plan for maintenance visits."),
- },
- {
- "type": "doctype",
- "name": "Maintenance Visit",
- "description": _("Visit report for maintenance call."),
- },
- {
- "type": "doctype",
- "name": "Newsletter",
- "description": _("Newsletters to contacts, leads."),
- },
- {
- "type": "doctype",
- "name": "Communication",
- "description": _("Communication log."),
- },
- {
- "type": "doctype",
- "name": "Serial No",
- "description": _("Single unit of an Item."),
- },
- ]
- },
- {
- "label": _("Setup"),
- "icon": "icon-cog",
- "items": [
- {
- "type": "doctype",
- "name": "Support Email Settings",
- "description": _("Setup incoming server for support email id. (e.g. support@example.com)")
- },
- ]
- },
- {
- "label": _("Standard Reports"),
- "icon": "icon-list",
- "items": [
- {
- "type": "page",
- "name": "support-analytics",
- "label": _("Support Analytics"),
- "icon": "icon-bar-chart"
- },
- {
- "type": "report",
- "name": "Maintenance Schedules",
- "is_query_report": True,
- "doctype": "Maintenance Schedule"
- },
- ]
- },
-]
\ No newline at end of file
+def get_data():
+ return [
+ {
+ "label": _("Documents"),
+ "icon": "icon-star",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Support Ticket",
+ "description": _("Support queries from customers."),
+ },
+ {
+ "type": "doctype",
+ "name": "Customer Issue",
+ "description": _("Customer Issue against Serial No."),
+ },
+ {
+ "type": "doctype",
+ "name": "Maintenance Schedule",
+ "description": _("Plan for maintenance visits."),
+ },
+ {
+ "type": "doctype",
+ "name": "Maintenance Visit",
+ "description": _("Visit report for maintenance call."),
+ },
+ {
+ "type": "doctype",
+ "name": "Newsletter",
+ "description": _("Newsletters to contacts, leads."),
+ },
+ {
+ "type": "doctype",
+ "name": "Communication",
+ "description": _("Communication log."),
+ },
+ {
+ "type": "doctype",
+ "name": "Serial No",
+ "description": _("Single unit of an Item."),
+ },
+ ]
+ },
+ {
+ "label": _("Setup"),
+ "icon": "icon-cog",
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Support Email Settings",
+ "description": _("Setup incoming server for support email id. (e.g. support@example.com)")
+ },
+ ]
+ },
+ {
+ "label": _("Standard Reports"),
+ "icon": "icon-list",
+ "items": [
+ {
+ "type": "page",
+ "name": "support-analytics",
+ "label": _("Support Analytics"),
+ "icon": "icon-bar-chart"
+ },
+ {
+ "type": "report",
+ "name": "Maintenance Schedules",
+ "is_query_report": True,
+ "doctype": "Maintenance Schedule"
+ },
+ ]
+ },
+ ]
diff --git a/erpnext/support/doctype/newsletter/newsletter.py b/erpnext/support/doctype/newsletter/newsletter.py
index 42f9f09..4ac9f8a 100644
--- a/erpnext/support/doctype/newsletter/newsletter.py
+++ b/erpnext/support/doctype/newsletter/newsletter.py
@@ -16,6 +16,13 @@
from `tabBulk Email` where ref_doctype=%s and ref_docname=%s
group by status""", (self.doctype, self.name))) or None)
+ def as_dict(self, no_nulls=False):
+ doc = super(Newsletter, self).as_dict(no_nulls)
+ if self.get("__status_count"):
+ doc["__status_count"] = self.get("__status_count")
+
+ return doc
+
def test_send(self, doctype="Lead"):
self.recipients = self.test_email_id.split(",")
self.send_to_doctype = "Lead"