From d1e1c52171c2f7ae0f8a0db37a5df65cb9279d3e Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 8 Mar 2016 18:06:21 +0530 Subject: [PATCH] [redesign] modules --- erpnext/config/accounts.py | 407 +++++++++--------- erpnext/config/buying.py | 95 ++-- erpnext/config/crm.py | 116 ++--- erpnext/config/desktop.py | 14 +- erpnext/config/hr.py | 182 ++++---- erpnext/config/manufacturing.py | 52 ++- erpnext/config/projects.py | 35 +- erpnext/config/selling.py | 233 +++++----- erpnext/config/stock.py | 217 ++++++---- erpnext/config/support.py | 47 +- .../__init__.py | 0 .../inactive_customers.js} | 8 +- .../inactive_customers.json} | 12 +- .../inactive_customers.py} | 8 +- 14 files changed, 762 insertions(+), 664 deletions(-) rename erpnext/selling/report/{customers_not_buying_since_long_time => inactive_customers}/__init__.py (100%) rename erpnext/selling/report/{customers_not_buying_since_long_time/customers_not_buying_since_long_time.js => inactive_customers/inactive_customers.js} (62%) rename erpnext/selling/report/{customers_not_buying_since_long_time/customers_not_buying_since_long_time.json => inactive_customers/inactive_customers.json} (54%) rename erpnext/selling/report/{customers_not_buying_since_long_time/customers_not_buying_since_long_time.py => inactive_customers/inactive_customers.py} (94%) diff --git a/erpnext/config/accounts.py b/erpnext/config/accounts.py index e243cf129d..bbc86719fc 100644 --- a/erpnext/config/accounts.py +++ b/erpnext/config/accounts.py @@ -4,14 +4,8 @@ from frappe import _ def get_data(): return [ { - "label": _("Documents"), - "icon": "icon-star", + "label": _("Billing"), "items": [ - { - "type": "doctype", - "name": "Journal Entry", - "description": _("Accounting journal entries.") - }, { "type": "doctype", "name": "Sales Invoice", @@ -22,6 +16,59 @@ def get_data(): "name": "Purchase Invoice", "description": _("Bills raised by Suppliers.") }, + { + "type": "doctype", + "name": "Payment Request", + "description": _("Payment Request") + }, + { + "type": "report", + "name": "Accounts Receivable", + "doctype": "Sales Invoice", + "is_query_report": True + }, + { + "type": "report", + "name": "Accounts Payable", + "doctype": "Purchase Invoice", + "is_query_report": True + }, + ] + + }, + { + "label": _("Company and Accounts"), + "items": [ + { + "type": "doctype", + "name": "Company", + "description": _("Company (not Customer or Supplier) master.") + }, + { + "type": "doctype", + "name": "Journal Entry", + "description": _("Accounting journal entries.") + }, + { + "type": "page", + "name": "Accounts Browser", + "icon": "icon-sitemap", + "label": _("Chart of Accounts"), + "route": "Accounts Browser/Account", + "description": _("Tree of financial accounts."), + "doctype": "Account", + }, + { + "type": "report", + "name":"General Ledger", + "doctype": "GL Entry", + "is_query_report": True, + }, + ] + }, + { + "label": _("Masters"), + "items": [ { "type": "doctype", "name": "Customer", @@ -34,93 +81,76 @@ def get_data(): }, { "type": "doctype", - "name": "Payment Request", - "description": _("Payment Request") - }, - { - "type": "page", - "name": "Accounts Browser", - "icon": "icon-sitemap", - "label": _("Chart of Accounts"), - "route": "Accounts Browser/Account", - "description": _("Tree of financial accounts."), - "doctype": "Account", + "name": "Item", }, ] }, { - "label": _("Tools"), - "icon": "icon-wrench", + "label": _("Accounting Statements"), "items": [ { - "type": "doctype", - "name": "Bank Reconciliation", - "description": _("Update bank payment dates with journals.") + "type": "report", + "name": "Trial Balance", + "doctype": "GL Entry", + "is_query_report": True, }, { - "type": "doctype", - "name": "Payment Reconciliation", - "description": _("Match non-linked Invoices and Payments.") + "type": "report", + "name": "Balance Sheet", + "doctype": "GL Entry", + "is_query_report": True }, { - "type": "doctype", - "name": "Period Closing Voucher", - "description": _("Close Balance Sheet and book Profit or Loss.") + "type": "report", + "name": "Cash Flow", + "doctype": "GL Entry", + "is_query_report": True }, + { + "type": "report", + "name": "Profit and Loss Statement", + "doctype": "GL Entry", + "is_query_report": True + }, + ] + }, + { + "label": _("Banking and Payments"), + "items": [ { "type": "doctype", "name": "Payment Tool", "description": _("Create Payment Entries against Orders or Invoices.") }, + { + "type": "doctype", + "label": _("Update Bank Transaction Dates"), + "name": "Bank Reconciliation", + "description": _("Update bank payment dates with journals.") + }, + { + "type": "doctype", + "label": _("Match Payments with Invoices"), + "name": "Payment Reconciliation", + "description": _("Match non-linked Invoices and Payments.") + }, + { + "type": "report", + "name": "Bank Reconciliation Statement", + "is_query_report": True, + "doctype": "Journal Entry" + }, + { + "type": "report", + "name": "Bank Clearance Summary", + "is_query_report": True, + "doctype": "Journal Entry" + }, ] }, { - "label": _("Setup"), - "icon": "icon-cog", + "label": _("Taxes"), "items": [ - { - "type": "doctype", - "name": "Company", - "description": _("Company (not Customer or Supplier) master.") - }, - { - "type": "doctype", - "name": "Fiscal Year", - "description": _("Financial / accounting year.") - }, - { - "type": "doctype", - "name": "Payment Gateway Account", - "description": _("Setup Gateway accounts.") - }, - { - "type": "page", - "name": "Accounts Browser", - "icon": "icon-sitemap", - "label": _("Chart of Accounts"), - "route": "Accounts Browser/Account", - "description": _("Tree of financial accounts."), - "doctype": "Account", - }, - { - "type": "page", - "name": "Accounts Browser", - "icon": "icon-sitemap", - "label": _("Chart of Cost Centers"), - "route": "Accounts Browser/Cost Center", - "description": _("Tree of financial Cost Centers."), - "doctype": "Cost Center", - }, - { - "type": "doctype", - "name": "Accounts Settings", - "description": _("Default settings for accounting transactions.") - }, - { - "type": "doctype", - "name": "Tax Rule", - "description": _("Tax Rule for transactions.") - }, { "type": "doctype", "name": "Sales Taxes and Charges Template", @@ -133,19 +163,71 @@ def get_data(): }, { "type": "doctype", - "name": "POS Profile", - "label": _("Point-of-Sale Profile"), - "description": _("Rules to calculate shipping amount for a sale") + "name": "Tax Rule", + "description": _("Tax Rule for transactions.") + }, + { + "type": "report", + "name": "Sales Register", + "doctype": "Sales Invoice", + "is_query_report": True + }, + { + "type": "report", + "name": "Purchase Register", + "doctype": "Purchase Invoice", + "is_query_report": True + }, + ] + }, + { + "label": _("Budget and Cost Center"), + "items": [ + { + "type": "page", + "name": "Accounts Browser", + "icon": "icon-sitemap", + "label": _("Chart of Cost Centers"), + "route": "Accounts Browser/Cost Center", + "description": _("Tree of financial Cost Centers."), + "doctype": "Cost Center", + }, + { + "type": "report", + "name": "Budget Variance Report", + "is_query_report": True, + "doctype": "Cost Center" + }, + { + "type":"doctype", + "name": "Monthly Distribution", + "description": _("Seasonality for setting budgets, targets etc.") + }, + ] + }, + { + "label": _("Tools"), + "items": [ + { + "type": "doctype", + "name": "Period Closing Voucher", + "description": _("Close Balance Sheet and book Profit or Loss.") + }, + ] + }, + { + "label": _("Setup"), + "icon": "icon-cog", + "items": [ + { + "type": "doctype", + "name": "Accounts Settings", + "description": _("Default settings for accounting transactions.") }, { "type": "doctype", - "name": "Shipping Rule", - "description": _("Rules for adding shipping costs.") - }, - { - "type": "doctype", - "name": "Pricing Rule", - "description": _("Rules for applying pricing and discount.") + "name": "Fiscal Year", + "description": _("Financial / accounting year.") }, { "type": "doctype", @@ -158,9 +240,15 @@ def get_data(): "description": _("Currency exchange rate master.") }, { - "type":"doctype", - "name": "Monthly Distribution", - "description": _("Seasonality for setting budgets, targets etc.") + "type": "doctype", + "name": "Payment Gateway Account", + "description": _("Setup Gateway accounts.") + }, + { + "type": "doctype", + "name": "POS Profile", + "label": _("Point-of-Sale Profile"), + "description": _("Rules to calculate shipping amount for a sale") }, { "type": "doctype", @@ -182,93 +270,8 @@ def get_data(): ] }, { - "label": _("Main Reports"), - "icon": "icon-table", + "label": _("To Bill"), "items": [ - { - "type": "report", - "name":"General Ledger", - "doctype": "GL Entry", - "is_query_report": True, - }, - { - "type": "report", - "name": "Trial Balance", - "doctype": "GL Entry", - "is_query_report": True, - }, - { - "type": "report", - "name": "Trial Balance for Party", - "doctype": "GL Entry", - "is_query_report": True, - }, - { - "type": "report", - "name": "Gross Profit", - "doctype": "Sales Invoice", - "is_query_report": True - }, - { - "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": "report", - "name": "Balance Sheet", - "doctype": "GL Entry", - "is_query_report": True - }, - { - "type": "report", - "name": "Cash Flow", - "doctype": "GL Entry", - "is_query_report": True - }, - { - "type": "report", - "name": "Profit and Loss Statement", - "doctype": "GL Entry", - "is_query_report": True - }, - { - "type": "page", - "name": "financial-analytics", - "label": _("Financial Analytics"), - "icon": "icon-bar-chart", - } - ] - }, - { - "label": _("Standard Reports"), - "icon": "icon-list", - "items": [ - { - "type": "report", - "name": "Bank Reconciliation Statement", - "is_query_report": True, - "doctype": "Journal Entry" - }, { "type": "report", "name": "Ordered Items To Be Billed", @@ -293,11 +296,47 @@ def get_data(): "is_query_report": True, "doctype": "Purchase Invoice" }, + ] + + }, + { + "label": _("Analytics"), + "items": [ + { + "type": "page", + "name": "financial-analytics", + "label": _("Financial Analytics"), + "icon": "icon-bar-chart", + }, { "type": "report", - "name": "Bank Clearance Summary", + "name": "Gross Profit", + "doctype": "Sales Invoice", + "is_query_report": True + }, + { + "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" + }, + ] + }, + { + "label": _("Other Reports"), + "icon": "icon-table", + "items": [ + { + "type": "report", + "name": "Trial Balance for Party", + "doctype": "GL Entry", "is_query_report": True, - "doctype": "Journal Entry" }, { "type": "report", @@ -323,24 +362,6 @@ def get_data(): "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" - }, { "type": "report", "name": "Accounts Receivable Summary", diff --git a/erpnext/config/buying.py b/erpnext/config/buying.py index 79de83506b..c259f06428 100644 --- a/erpnext/config/buying.py +++ b/erpnext/config/buying.py @@ -4,14 +4,9 @@ from frappe import _ def get_data(): return [ { - "label": _("Documents"), + "label": _("Purchasing"), "icon": "icon-star", "items": [ - { - "type": "doctype", - "name": "Supplier", - "description": _("Supplier database."), - }, { "type": "doctype", "name": "Material Request", @@ -27,6 +22,21 @@ def get_data(): "name": "Purchase Order", "description": _("Purchase Orders given to Suppliers."), }, + ] + }, + { + "label": _("Supplier"), + "items": [ + { + "type": "doctype", + "name": "Supplier", + "description": _("Supplier database."), + }, + { + "type": "doctype", + "name": "Supplier Type", + "description": _("Supplier Type master.") + }, { "type": "doctype", "name": "Contact", @@ -37,11 +47,7 @@ def get_data(): "name": "Address", "description": _("All Addresses."), }, - { - "type": "doctype", - "name": "Item", - "description": _("All Products or Services."), - }, + ] }, { @@ -53,20 +59,6 @@ def get_data(): "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", @@ -78,11 +70,35 @@ def get_data(): "name": "Purchase Taxes and Charges Template", "description": _("Tax template for buying transactions.") }, + ] + }, + { + "label": _("Items and Pricing"), + "items": [ + { + "type": "doctype", + "name": "Item", + "description": _("All Products or Services."), + }, + { + "type": "doctype", + "name": "Product Bundle", + "description": _("Bundle items at time of sale."), + }, { "type": "doctype", "name": "Price List", "description": _("Price List master.") }, + { + "type": "page", + "name": "Sales Browser", + "icon": "icon-sitemap", + "label": _("Item Group"), + "link": "Sales Browser/Item Group", + "description": _("Tree of Item Groups."), + "doctype": "Item Group", + }, { "type": "doctype", "name": "Item Price", @@ -94,10 +110,11 @@ def get_data(): "name": "Pricing Rule", "description": _("Rules for applying pricing and discount.") }, + ] }, { - "label": _("Main Reports"), + "label": _("Analytics"), "icon": "icon-table", "items": [ { @@ -106,10 +123,22 @@ def get_data(): "label": _("Purchase Analytics"), "icon": "icon-bar-chart", }, + { + "type": "report", + "is_query_report": True, + "name": "Supplier-Wise Sales Analytics", + "doctype": "Stock Ledger Entry" + }, + { + "type": "report", + "is_query_report": True, + "name": "Purchase Order Trends", + "doctype": "Purchase Order" + }, ] }, { - "label": _("Standard Reports"), + "label": _("Other Reports"), "icon": "icon-list", "items": [ { @@ -136,24 +165,12 @@ def get_data(): "name": "Item-wise Purchase History", "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/crm.py b/erpnext/config/crm.py index b92bf225ed..26e9e03832 100644 --- a/erpnext/config/crm.py +++ b/erpnext/config/crm.py @@ -3,7 +3,7 @@ from frappe import _ def get_data(): return [ { - "label": _("Documents"), + "label": _("Sales Pipeline"), "icon": "icon-star", "items": [ { @@ -13,19 +13,55 @@ def get_data(): }, { "type": "doctype", - "name": "Customer", - "description": _("Customer database."), + "name": "Opportunity", + "description": _("Potential opportunities for selling."), }, { "type": "doctype", - "name": "Opportunity", - "description": _("Potential opportunities for selling."), + "name": "Customer", + "description": _("Customer database."), }, { "type": "doctype", "name": "Contact", "description": _("All Contacts."), }, + ] + }, + { + "label": _("Reports"), + "icon": "icon-list", + "items": [ + { + "type": "page", + "name": "sales-funnel", + "label": _("Sales Funnel"), + "icon": "icon-bar-chart", + }, + { + "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": "Inactive Customers", + "doctype": "Sales Order" + }, + ] + }, + { + "label": _("Communication"), + "icon": "icon-star", + "items": [ { "type": "doctype", "name": "Newsletter", @@ -38,22 +74,6 @@ def get_data(): }, ] }, - { - "label": _("Tools"), - "icon": "icon-wrench", - "items": [ - { - "type": "doctype", - "name": "SMS Center", - "description":_("Send mass SMS to your contacts"), - }, - { - "type": "doctype", - "name": "SMS Log", - "description":_("Logs for maintaining sms delivery status"), - } - ] - }, { "label": _("Setup"), "icon": "icon-cog", @@ -95,47 +115,27 @@ def get_data(): "name": "Newsletter List", "description": _("Newsletter Mailing List"), }, + ] + }, + { + "label": _("SMS"), + "icon": "icon-wrench", + "items": [ + { + "type": "doctype", + "name": "SMS Center", + "description":_("Send mass SMS to your contacts"), + }, + { + "type": "doctype", + "name": "SMS Log", + "description":_("Logs for maintaining sms delivery status"), + }, { "type": "doctype", "name": "SMS Settings", "description": _("Setup SMS gateway settings") - }, - ] - }, - { - "label": _("Main Reports"), - "icon": "icon-table", - "items": [ - { - "type": "page", - "name": "sales-funnel", - "label": _("Sales Funnel"), - "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": "Customers Not Buying Since Long Time", - "doctype": "Sales Order" - }, + } ] }, { diff --git a/erpnext/config/desktop.py b/erpnext/config/desktop.py index 863ad6dd0d..e15f2b6a5f 100644 --- a/erpnext/config/desktop.py +++ b/erpnext/config/desktop.py @@ -9,6 +9,13 @@ def get_data(): "icon": "octicon octicon-repo", "type": "module" }, + { + "module_name": "Stock", + "color": "#f39c12", + "icon": "icon-truck", + "icon": "octicon octicon-package", + "type": "module" + }, { "module_name": "CRM", "color": "#EF4DB6", @@ -60,13 +67,6 @@ def get_data(): "icon": "octicon octicon-rocket", "type": "module" }, - { - "module_name": "Stock", - "color": "#f39c12", - "icon": "icon-truck", - "icon": "octicon octicon-package", - "type": "module" - }, { "module_name": "Support", "color": "#2c3e50", diff --git a/erpnext/config/hr.py b/erpnext/config/hr.py index e1471124c9..eea65b8cec 100644 --- a/erpnext/config/hr.py +++ b/erpnext/config/hr.py @@ -4,8 +4,7 @@ from frappe import _ def get_data(): return [ { - "label": _("Documents"), - "icon": "icon-star", + "label": _("Employee and Attendance"), "items": [ { "type": "doctype", @@ -14,13 +13,10 @@ def get_data(): }, { "type": "doctype", - "name": "Leave Application", - "description": _("Applications for leave."), - }, - { - "type": "doctype", - "name": "Expense Claim", - "description": _("Claims for company expense."), + "name": "Employee Attendance Tool", + "label": _("Employee Attendance Tool"), + "description":_("Mark Employee Attendance in Bulk"), + "hide_count": True }, { "type": "doctype", @@ -29,14 +25,15 @@ def get_data(): }, { "type": "doctype", - "name": "Salary Slip", - "description": _("Monthly salary statement."), - }, - { - "type": "doctype", - "name": "Appraisal", - "description": _("Performance appraisal."), + "name": "Upload Attendance", + "description":_("Upload attendance from a .csv file"), + "hide_count": True }, + ] + }, + { + "label": _("Recruitment"), + "items": [ { "type": "doctype", "name": "Job Applicant", @@ -55,21 +52,50 @@ def get_data(): ] }, { - "label": _("Tools"), - "icon": "icon-wrench", + "label": _("Leaves and Holiday"), "items": [ { "type": "doctype", - "name": "Employee Attendance Tool", - "label": _("Employee Attendance Tool"), - "description":_("Mark Employee Attendance in Bulk"), + "name": "Leave Application", + "description": _("Applications for leave."), + }, + { + "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 Allocation", + "description": _("Allocate leaves for a period.") + }, + { + "type": "doctype", + "name": "Leave Control Panel", + "label": _("Leave Allocation Tool"), + "description":_("Allocate leaves for the year."), "hide_count": True }, { "type": "doctype", - "name": "Upload Attendance", - "description":_("Upload attendance from a .csv file"), - "hide_count": True + "name": "Leave Block List", + "description": _("Block leave applications by department.") + }, + + ] + }, + { + "label": _("Payroll"), + "items": [ + { + "type": "doctype", + "name": "Salary Slip", + "description": _("Monthly salary statement."), }, { "type": "doctype", @@ -78,14 +104,60 @@ def get_data(): "description":_("Generate Salary Slips"), "hide_count": True }, - { "type": "doctype", - "name": "Leave Control Panel", - "label": _("Leave Allocation Tool"), - "description":_("Allocate leaves for the year."), - "hide_count": True + "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.") + }, + + ] + }, + { + "label": _("Expense Claims"), + "items": [ + { + "type": "doctype", + "name": "Expense Claim", + "description": _("Claims for company expense."), + }, + { + "type": "doctype", + "name": "Expense Claim Type", + "description": _("Types of Expense Claim.") + }, + ] + }, + { + "label": _("Appraisals"), + "items": [ + { + "type": "doctype", + "name": "Appraisal", + "description": _("Performance appraisal."), + }, + { + "type": "doctype", + "name": "Appraisal Template", + "description": _("Template for performance appraisals.") + }, + ] + }, + + { + "label": _("Tools"), + "icon": "icon-wrench", + "items": [ + ] }, { @@ -117,60 +189,10 @@ def get_data(): "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": "Email Account", - "description": _("Setup incoming server for jobs email id. (e.g. jobs@example.com)") - }, ] }, { - "label": _("Standard Reports"), + "label": _("Reports"), "icon": "icon-list", "items": [ { diff --git a/erpnext/config/manufacturing.py b/erpnext/config/manufacturing.py index 1db7945c6d..2ae49fe725 100644 --- a/erpnext/config/manufacturing.py +++ b/erpnext/config/manufacturing.py @@ -4,25 +4,48 @@ from frappe import _ def get_data(): return [ { - "label": _("Documents"), + "label": _("Production"), "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": "Production Planning Tool", + "description": _("Generate Material Requests (MRP) and Production Orders."), + }, + { + "type": "doctype", + "name": "Stock Entry", + }, { "type": "doctype", "name": "Time Log", "description": _("Time Logs for manufacturing."), }, + + ] + }, + { + "label": _("Bill of Materials"), + "items": [ + { + "type": "doctype", + "name": "BOM", + "description": _("Bill of Materials (BOM)"), + "label": _("Bill of Materials") + }, + { + "type": "page", + "name": "bom-browser", + "icon": "icon-sitemap", + "label": _("BOM Browser"), + "description": _("Tree of Bill of Materials"), + "doctype": "BOM" + }, { "type": "doctype", "name": "Item", @@ -45,24 +68,11 @@ def get_data(): "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"), }, - { - "type": "page", - "name": "bom-browser", - "icon": "icon-sitemap", - "label": _("BOM Browser"), - "description": _("Tree of Bill of Materials"), - "doctype": "BOM" - } ] }, { @@ -76,7 +86,7 @@ def get_data(): ] }, { - "label": _("Standard Reports"), + "label": _("Reports"), "icon": "icon-list", "items": [ { diff --git a/erpnext/config/projects.py b/erpnext/config/projects.py index 78a78ac051..3deaeba91e 100644 --- a/erpnext/config/projects.py +++ b/erpnext/config/projects.py @@ -4,19 +4,31 @@ from frappe import _ def get_data(): return [ { - "label": _("Documents"), + "label": _("Projects"), "icon": "icon-star", "items": [ + { + "type": "doctype", + "name": "Project", + "description": _("Project master."), + }, { "type": "doctype", "name": "Task", "description": _("Project activity / task."), }, { - "type": "doctype", - "name": "Project", - "description": _("Project master."), + "type": "report", + "route": "Gantt/Task", + "doctype": "Task", + "name": "Gantt Chart", + "description": _("Gantt chart of all tasks.") }, + ] + }, + { + "label": _("Time Tracking"), + "items": [ { "type": "doctype", "name": "Time Log", @@ -40,20 +52,7 @@ def get_data(): ] }, { - "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"), + "label": _("Reports"), "icon": "icon-list", "items": [ { diff --git a/erpnext/config/selling.py b/erpnext/config/selling.py index ba1210e5ca..771a0d7904 100644 --- a/erpnext/config/selling.py +++ b/erpnext/config/selling.py @@ -4,14 +4,9 @@ from frappe import _ def get_data(): return [ { - "label": _("Documents"), + "label": _("Sales"), "icon": "icon-star", "items": [ - { - "type": "doctype", - "name": "Customer", - "description": _("Customer database."), - }, { "type": "doctype", "name": "Quotation", @@ -22,6 +17,25 @@ def get_data(): "name": "Sales Order", "description": _("Confirmed orders from Customers."), }, + ] + }, + { + "label": _("Customers"), + "items": [ + { + "type": "doctype", + "name": "Customer", + "description": _("Customer database."), + }, + { + "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": "doctype", "name": "Contact", @@ -32,57 +46,58 @@ def get_data(): "name": "Address", "description": _("All Addresses."), }, + + ] + }, + { + "label": _("Items and Pricing"), + "items": [ { "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"), + "name": "Product Bundle", + "description": _("Bundle items at time of sale."), }, { "type": "doctype", - "name": "SMS Log", - "description":_("Logs for maintaining sms delivery status"), - }, - { - "type": "doctype", - "name": "Newsletter", - "description": _("Newsletters to contacts, leads."), - }, - ] - }, - { - "label": _("Setup"), - "icon": "icon-cog", - "items": [ - { - "type": "doctype", - "name": "Selling Settings", - "description": _("Default settings for selling transactions.") - }, - { - "type": "doctype", - "name": "Campaign", - "description": _("Sales campaigns."), + "name": "Price List", + "description": _("Price List master.") }, { "type": "page", - "label": _("Customer Group"), "name": "Sales Browser", "icon": "icon-sitemap", - "link": "Sales Browser/Customer Group", - "description": _("Manage Customer Group Tree."), - "doctype": "Customer Group", + "label": _("Item Group"), + "link": "Sales Browser/Item Group", + "description": _("Tree of Item Groups."), + "doctype": "Item Group", }, + { + "type": "doctype", + "name": "Item Price", + "description": _("Multiple Item prices."), + "route": "Report/Item Price" + }, + { + "type": "doctype", + "name": "Shipping Rule", + "description": _("Rules for adding shipping costs.") + }, + { + "type": "doctype", + "name": "Pricing Rule", + "description": _("Rules for applying pricing and discount.") + }, + + ] + }, + { + "label": _("Sales Partners and Territory"), + "items": [ { "type": "page", "label": _("Territory"), @@ -107,13 +122,34 @@ def get_data(): "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": "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", + }, + ] + }, + { + "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": "doctype", @@ -126,51 +162,15 @@ def get_data(): "name": "Sales Taxes and Charges Template", "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": "Product Bundle", - "description": _("Bundle items at time of sale."), - }, - { - "type": "doctype", - "name": "Email Account", - "description": _("Setup incoming server for sales email id. (e.g. sales@example.com)") - }, { "type": "doctype", "name": "Industry Type", "description": _("Track Leads by Industry Type.") }, - { - "type": "doctype", - "name": "SMS Settings", - "description": _("Setup SMS gateway settings") - }, ] }, { - "label": _("Main Reports"), + "label": _("Analytics"), "icon": "icon-table", "items": [ { @@ -192,10 +192,22 @@ def get_data(): "doctype": "Customer", "icon": "icon-bar-chart", }, + { + "type": "report", + "is_query_report": True, + "name": "Quotation Trends", + "doctype": "Quotation" + }, + { + "type": "report", + "is_query_report": True, + "name": "Sales Order Trends", + "doctype": "Sales Order" + }, ] }, { - "label": _("Standard Reports"), + "label": _("Other Reports"), "icon": "icon-list", "items": [ { @@ -228,20 +240,6 @@ def get_data(): "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, @@ -251,19 +249,7 @@ def get_data(): { "type": "report", "is_query_report": True, - "name": "Customers Not Buying Since Long Time", - "doctype": "Sales Order" - }, - { - "type": "report", - "is_query_report": True, - "name": "Quotation Trends", - "doctype": "Quotation" - }, - { - "type": "report", - "is_query_report": True, - "name": "Sales Order Trends", + "name": "Inactive Customers", "doctype": "Sales Order" }, { @@ -286,6 +272,27 @@ def get_data(): }, ] }, + { + "label": _("SMS"), + "icon": "icon-wrench", + "items": [ + { + "type": "doctype", + "name": "SMS Center", + "description":_("Send mass SMS to your contacts"), + }, + { + "type": "doctype", + "name": "SMS Log", + "description":_("Logs for maintaining sms delivery status"), + }, + { + "type": "doctype", + "name": "SMS Settings", + "description": _("Setup SMS gateway settings") + }, + ] + }, { "label": _("Help"), "items": [ diff --git a/erpnext/config/stock.py b/erpnext/config/stock.py index 9b47e580d7..cf3a7baeb6 100644 --- a/erpnext/config/stock.py +++ b/erpnext/config/stock.py @@ -4,19 +4,8 @@ from frappe import _ def get_data(): return [ { - "label": _("Documents"), - "icon": "icon-star", + "label": _("Stock Transactions"), "items": [ - { - "type": "doctype", - "name": "Item", - "description": _("All Products or Services."), - }, - { - "type": "doctype", - "name": "Material Request", - "description": _("Requests for items."), - }, { "type": "doctype", "name": "Stock Entry", @@ -34,14 +23,90 @@ def get_data(): }, { "type": "doctype", - "name": "Installation Note", - "description": _("Installation record for a Serial No.") + "name": "Material Request", + "description": _("Requests for items."), + }, + ] + }, + { + "label": _("Stock Reports"), + "items": [ + { + "type": "report", + "is_query_report": True, + "name": "Stock Ledger", + "doctype": "Stock Ledger Entry", + }, + { + "type": "report", + "is_query_report": True, + "name": "Stock Balance", + "doctype": "Stock Ledger Entry" + }, + { + "type": "report", + "is_query_report": True, + "name": "Stock Projected Qty", + "doctype": "Item", + }, + { + "type": "report", + "is_query_report": True, + "name": "Stock Ageing", + "doctype": "Item", + }, + + ] + }, + { + "label": _("Items and Pricing"), + "items": [ + { + "type": "doctype", + "name": "Item", + "description": _("All Products or Services."), }, { "type": "doctype", - "name": "Warehouse", - "description": _("Where items are stored."), + "name": "Product Bundle", + "description": _("Bundle items at time of sale."), }, + { + "type": "doctype", + "name": "Price List", + "description": _("Price List master.") + }, + { + "type": "page", + "name": "Sales Browser", + "icon": "icon-sitemap", + "label": _("Item Group"), + "link": "Sales Browser/Item Group", + "description": _("Tree of Item Groups."), + "doctype": "Item Group", + }, + { + "type": "doctype", + "name": "Item Price", + "description": _("Multiple Item prices."), + "route": "Report/Item Price" + }, + { + "type": "doctype", + "name": "Shipping Rule", + "description": _("Rules for adding shipping costs.") + }, + { + "type": "doctype", + "name": "Pricing Rule", + "description": _("Rules for applying pricing and discount.") + }, + + ] + }, + { + "label": _("Serial No and Batch"), + "items": [ { "type": "doctype", "name": "Serial No", @@ -52,6 +117,26 @@ def get_data(): "name": "Batch", "description": _("Batch (lot) of an Item."), }, + { + "type": "doctype", + "name": "Installation Note", + "description": _("Installation record for a Serial No.") + }, + { + "type": "report", + "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" + }, ] }, { @@ -90,13 +175,9 @@ def get_data(): "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": "Warehouse", + "description": _("Where items are stored."), }, { "type": "doctype", @@ -106,60 +187,20 @@ def get_data(): }, { "type": "doctype", - "name": "Warehouse", - "description": _("Warehouses.") + "name": "Item Attribute", + "description": _("Attributes for Item Variants. e.g Size, Color etc."), }, { "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" - }, - { - "type": "doctype", - "name": "Item Attribute", - "description": _("Attributes for Item Variants. e.g Size, Color etc."), - }, ] }, { - "label": _("Main Reports"), + "label": _("Analytics"), "icon": "icon-table", "items": [ - { - "type": "report", - "is_query_report": True, - "name": "Stock Ledger", - "doctype": "Stock Ledger Entry", - }, - { - "type": "report", - "is_query_report": True, - "name": "Stock Balance", - "doctype": "Stock Ledger Entry" - }, - { - "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": False, @@ -171,11 +212,24 @@ def get_data(): "name": "stock-analytics", "label": _("Stock Analytics"), "icon": "icon-bar-chart" - } + }, + { + "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" + }, + ] }, { - "label": _("Standard Reports"), + "label": _("Reports"), "icon": "icon-list", "items": [ { @@ -196,21 +250,6 @@ def get_data(): "route": "Report/Bin/Item Shortage Report", "doctype": "Purchase Receipt" }, - { - "type": "report", - "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, @@ -235,18 +274,6 @@ def get_data(): "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 a3b6917433..ca9716481e 100644 --- a/erpnext/config/support.py +++ b/erpnext/config/support.py @@ -4,8 +4,7 @@ from frappe import _ def get_data(): return [ { - "label": _("Documents"), - "icon": "icon-star", + "label": _("Issues"), "items": [ { "type": "doctype", @@ -14,9 +13,14 @@ def get_data(): }, { "type": "doctype", - "name": "Warranty Claim", - "description": _("Warranty Claim against Serial No."), + "name": "Communication", + "description": _("Communication log."), }, + ] + }, + { + "label": _("Maintenance"), + "items": [ { "type": "doctype", "name": "Maintenance Schedule", @@ -28,14 +32,20 @@ def get_data(): "description": _("Visit report for maintenance call."), }, { - "type": "doctype", - "name": "Newsletter", - "description": _("Newsletters to contacts, leads."), + "type": "report", + "name": "Maintenance Schedules", + "is_query_report": True, + "doctype": "Maintenance Schedule" }, + ] + }, + { + "label": _("Warranty"), + "items": [ { "type": "doctype", - "name": "Communication", - "description": _("Communication log."), + "name": "Warranty Claim", + "description": _("Warranty Claim against Serial No."), }, { "type": "doctype", @@ -45,18 +55,7 @@ def get_data(): ] }, { - "label": _("Setup"), - "icon": "icon-cog", - "items": [ - { - "type": "doctype", - "name": "Email Account", - "description": _("Setup incoming server for support email id. (e.g. support@example.com)") - }, - ] - }, - { - "label": _("Standard Reports"), + "label": _("Reports"), "icon": "icon-list", "items": [ { @@ -65,12 +64,6 @@ def get_data(): "label": _("Support Analytics"), "icon": "icon-bar-chart" }, - { - "type": "report", - "name": "Maintenance Schedules", - "is_query_report": True, - "doctype": "Maintenance Schedule" - }, ] }, ] diff --git a/erpnext/selling/report/customers_not_buying_since_long_time/__init__.py b/erpnext/selling/report/inactive_customers/__init__.py similarity index 100% rename from erpnext/selling/report/customers_not_buying_since_long_time/__init__.py rename to erpnext/selling/report/inactive_customers/__init__.py diff --git a/erpnext/selling/report/customers_not_buying_since_long_time/customers_not_buying_since_long_time.js b/erpnext/selling/report/inactive_customers/inactive_customers.js similarity index 62% rename from erpnext/selling/report/customers_not_buying_since_long_time/customers_not_buying_since_long_time.js rename to erpnext/selling/report/inactive_customers/inactive_customers.js index 6d00b829ee..804d17e2b0 100644 --- a/erpnext/selling/report/customers_not_buying_since_long_time/customers_not_buying_since_long_time.js +++ b/erpnext/selling/report/inactive_customers/inactive_customers.js @@ -1,7 +1,7 @@ -// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -// License: GNU General Public License v3. See license.txt +// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt -frappe.query_reports["Customers Not Buying Since Long Time"] = { +frappe.query_reports["Inactive Customers"] = { "filters": [ { "fieldname":"days_since_last_order", @@ -17,4 +17,4 @@ frappe.query_reports["Customers Not Buying Since Long Time"] = { "options": "Sales Order\nSales Invoice" } ] -} \ No newline at end of file +} diff --git a/erpnext/selling/report/customers_not_buying_since_long_time/customers_not_buying_since_long_time.json b/erpnext/selling/report/inactive_customers/inactive_customers.json similarity index 54% rename from erpnext/selling/report/customers_not_buying_since_long_time/customers_not_buying_since_long_time.json rename to erpnext/selling/report/inactive_customers/inactive_customers.json index fe53574e23..cfbeb9009c 100644 --- a/erpnext/selling/report/customers_not_buying_since_long_time/customers_not_buying_since_long_time.json +++ b/erpnext/selling/report/inactive_customers/inactive_customers.json @@ -1,16 +1,18 @@ { + "add_total_row": 0, "apply_user_permissions": 1, - "creation": "2013-06-07 12:27:07", + "creation": "2016-03-08 04:05:02.846556", + "disabled": 0, "docstatus": 0, "doctype": "Report", - "idx": 1, + "idx": 0, "is_standard": "Yes", - "modified": "2014-06-03 07:18:17.013590", + "modified": "2016-03-08 04:05:02.846556", "modified_by": "Administrator", "module": "Selling", - "name": "Customers Not Buying Since Long Time", + "name": "Inactive Customers", "owner": "Administrator", "ref_doctype": "Sales Order", - "report_name": "Customers Not Buying Since Long Time ", + "report_name": "Inactive Customers", "report_type": "Script Report" } \ No newline at end of file diff --git a/erpnext/selling/report/customers_not_buying_since_long_time/customers_not_buying_since_long_time.py b/erpnext/selling/report/inactive_customers/inactive_customers.py similarity index 94% rename from erpnext/selling/report/customers_not_buying_since_long_time/customers_not_buying_since_long_time.py rename to erpnext/selling/report/inactive_customers/inactive_customers.py index 86186aa8fd..e7aff36e82 100644 --- a/erpnext/selling/report/customers_not_buying_since_long_time/customers_not_buying_since_long_time.py +++ b/erpnext/selling/report/inactive_customers/inactive_customers.py @@ -1,5 +1,5 @@ -# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -# License: GNU General Public License v3. See license.txt +# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt from __future__ import unicode_literals import frappe @@ -11,7 +11,7 @@ def execute(filters=None): days_since_last_order = filters.get("days_since_last_order") doctype = filters.get("doctype") - + if cint(days_since_last_order) <= 0: frappe.throw(_("'Days Since Last Order' must be greater than or equal to zero")) @@ -35,7 +35,7 @@ def get_sales_details(doctype): so.base_net_total)) as 'total_order_considered', max(so.transaction_date) as 'last_order_date', DATEDIFF(CURDATE(), max(so.transaction_date)) as 'days_since_last_order'""" - + return frappe.db.sql("""select cust.name, cust.customer_name,