Merge branch 'develop' of github.com:frappe/erpnext into develop

This commit is contained in:
Nabin Hait 2014-03-05 10:51:04 +05:30
commit 2d57b0aa52
53 changed files with 1665 additions and 2123 deletions

View File

@ -1 +0,0 @@
from __future__ import unicode_literals

View File

@ -1,295 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt"
frappe.module_page["Accounts"] = [
{
top: true,
title: frappe._("Documents"),
icon: "icon-copy",
items: [
{
label: frappe._("Journal Voucher"),
description: frappe._("Accounting journal entries."),
doctype:"Journal Voucher"
},
{
label: frappe._("Sales Invoice"),
description: frappe._("Bills raised to Customers."),
doctype:"Sales Invoice"
},
{
label: frappe._("Purchase Invoice"),
description: frappe._("Bills raised by Suppliers."),
doctype:"Purchase Invoice"
},
]
},
{
title: frappe._("Masters"),
icon: "icon-book",
items: [
{
label: frappe._("Chart of Accounts"),
route: "Accounts Browser/Account",
description: frappe._("Structure of books of accounts."),
doctype:"Account"
},
{
label: frappe._("Chart of Cost Centers"),
route: "Accounts Browser/Cost Center",
description: frappe._("Structure cost centers for budgeting."),
doctype:"Cost Center"
},
{
label: frappe._("Customer"),
description: frappe._("Customer database."),
doctype:"Customer"
},
{
label: frappe._("Supplier"),
description: frappe._("Supplier database."),
doctype:"Supplier"
},
]
},
{
title: frappe._("Setup"),
icon: "icon-wrench",
items: [
{
label: frappe._("Company"),
description: frappe._("Company Master."),
doctype:"Company"
},
{
label: frappe._("Fiscal Year"),
description: frappe._("Accounting Year."),
doctype:"Fiscal Year"
},
]
},
{
title: frappe._("Tools"),
icon: "icon-wrench",
items: [
{
"route":"Form/Bank Reconciliation/Bank Reconciliation",
"label": frappe._("Bank Reconciliation"),
"description": frappe._("Update bank payment dates with journals."),
doctype: "Bank Reconciliation"
},
{
"route":"Form/Payment to Invoice Matching Tool/Payment to Invoice Matching Tool",
"label": frappe._("Payment Reconciliation"),
"description": frappe._("Match non-linked Invoices and Payments."),
doctype: "Payment to Invoice Matching Tool"
},
{
"label": frappe._("Period Closing Voucher"),
"doctype": "Period Closing Voucher",
description: frappe._("Close Balance Sheet and book Profit or Loss.")
},
]
},
{
title: frappe._("Setup"),
icon: "icon-cog",
items: [
{
"label": frappe._("Accounts Settings"),
"route": "Form/Accounts Settings",
"doctype":"Accounts Settings",
"description": frappe._("Settings for Accounts")
},
{
"label": frappe._("Sales Taxes and Charges Master"),
"doctype":"Sales Taxes and Charges Master",
"description": frappe._("Tax Template for Sales")
},
{
"label": frappe._("Purchase Taxes and Charges Master"),
"doctype":"Purchase Taxes and Charges Master",
"description": frappe._("Tax Template for Purchase")
},
{
"label": frappe._("Shipping Rules"),
"doctype":"Shipping Rule",
"description": frappe._("Rules to calculate shipping amount for a sale")
},
{
"label": frappe._("Currency Exchange"),
"doctype":"Currency Exchange",
"description": frappe._("Manage exchange rates for currency conversion")
},
{
"label": frappe._("Point-of-Sale Setting"),
"doctype":"POS Setting",
"description": frappe._("User settings for Point-of-sale (POS)")
},
{
"doctype":"Budget Distribution",
"label": frappe._("Budget Distribution"),
"description": frappe._("Seasonality for setting budgets.")
},
{
"doctype":"Terms and Conditions",
"label": frappe._("Terms and Conditions Template"),
description: frappe._("Template of terms or contract.")
},
{
"doctype":"Mode of Payment",
"label": frappe._("Mode of Payment"),
description: frappe._("e.g. Bank, Cash, Credit Card")
},
{
"doctype":"C-Form",
"label": frappe._("C-Form"),
description: frappe._("C-Form records"),
country: "India"
}
]
},
{
title: frappe._("Main Reports"),
right: true,
icon: "icon-table",
items: [
{
"label":frappe._("General Ledger"),
doctype: "GL Entry",
route: "query-report/General Ledger"
},
{
"label":frappe._("Trial Balance"),
page: "trial-balance"
},
{
"page":"Financial Statements",
"label": frappe._("Financial Statements")
},
{
"label":frappe._("Accounts Receivable"),
route: "query-report/Accounts Receivable",
doctype: "Sales Invoice"
},
{
"label":frappe._("Accounts Payable"),
route: "query-report/Accounts Payable",
doctype: "Purchase Invoice"
},
{
"label":frappe._("Sales Register"),
route: "query-report/Sales Register",
doctype: "Sales Invoice"
},
{
"label":frappe._("Purchase Register"),
route: "query-report/Purchase Register",
doctype: "Purchase Invoice"
},
]
},
{
title: frappe._("Analytics"),
right: true,
icon: "icon-bar-chart",
items: [
{
"label":frappe._("Financial Analytics"),
page: "financial-analytics"
},
{
"label":frappe._("Gross Profit"),
route: "query-report/Gross Profit",
doctype: "Sales Invoice"
},
]
},
{
title: frappe._("Reports"),
right: true,
icon: "icon-list",
items: [
{
"label":frappe._("Bank Reconciliation Statement"),
route: "query-report/Bank Reconciliation Statement",
doctype: "Journal Voucher"
},
{
"label":frappe._("Ordered Items To Be Billed"),
route: "query-report/Ordered Items To Be Billed",
doctype: "Sales Invoice"
},
{
"label":frappe._("Delivered Items To Be Billed"),
route: "query-report/Delivered Items To Be Billed",
doctype: "Sales Invoice"
},
{
"label":frappe._("Purchase Order Items To Be Billed"),
route: "query-report/Purchase Order Items To Be Billed",
doctype: "Purchase Invoice"
},
{
"label":frappe._("Received Items To Be Billed"),
route: "query-report/Received Items To Be Billed",
doctype: "Purchase Invoice"
},
{
"label":frappe._("Bank Clearance Summary"),
route: "query-report/Bank Clearance Summary",
doctype: "Journal Voucher"
},
{
"label":frappe._("Payment Period Based On Invoice Date"),
route: "query-report/Payment Period Based On Invoice Date",
doctype: "Journal Voucher"
},
{
"label":frappe._("Sales Partners Commission"),
route: "query-report/Sales Partners Commission",
doctype: "Sales Invoice"
},
{
"label":frappe._("Customer Account Head"),
route: "query-report/Customer Account Head",
doctype: "Account"
},
{
"label":frappe._("Supplier Account Head"),
route: "query-report/Supplier Account Head",
doctype: "Account"
},
{
"label":frappe._("Item-wise Sales Register"),
route: "query-report/Item-wise Sales Register",
doctype: "Sales Invoice"
},
{
"label":frappe._("Item-wise Purchase Register"),
route: "query-report/Item-wise Purchase Register",
doctype: "Purchase Invoice"
},
{
"label":frappe._("Budget Variance Report"),
route: "query-report/Budget Variance Report",
doctype: "Cost Center"
},
{
"label":frappe._("Purchase Invoice Trends"),
route: "query-report/Purchase Invoice Trends",
doctype: "Purchase Invoice"
},
{
"label":frappe._("Sales Invoice Trends"),
route: "query-report/Sales Invoice Trends",
doctype: "Sales Invoice"
},
]
}
]
pscript['onload_accounts-home'] = function(wrapper) {
frappe.views.moduleview.make(wrapper, "Accounts");
}

View File

@ -1,22 +0,0 @@
[
{
"creation": "2012-06-14 15:07:28",
"docstatus": 0,
"modified": "2013-07-11 14:40:16",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"doctype": "Page",
"icon": "icon-th",
"module": "Accounts",
"name": "__common__",
"page_name": "accounts-home",
"standard": "Yes",
"title": "Accounts Home"
},
{
"doctype": "Page",
"name": "accounts-home"
}
]

View File

@ -1 +0,0 @@
from __future__ import unicode_literals

View File

@ -1,169 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt"
frappe.module_page["Buying"] = [
{
title: frappe._("Documents"),
top: true,
icon: "icon-copy",
items: [
{
label: frappe._("Supplier"),
description: frappe._("Supplier database."),
doctype:"Supplier"
},
{
label: frappe._("Material Request"),
description: frappe._("Request for purchase."),
doctype:"Material Request"
},
{
label: frappe._("Supplier Quotation"),
description: frappe._("Quotations received from Suppliers."),
doctype:"Supplier Quotation"
},
{
label: frappe._("Purchase Order"),
description: frappe._("Purchase Orders given to Suppliers."),
doctype:"Purchase Order"
},
]
},
{
title: frappe._("Masters"),
icon: "icon-book",
items: [
{
label: frappe._("Contact"),
description: frappe._("All Contacts."),
doctype:"Contact"
},
{
label: frappe._("Address"),
description: frappe._("All Addresses."),
doctype:"Address"
},
{
label: frappe._("Item"),
description: frappe._("All Products or Services."),
doctype:"Item"
},
]
},
{
title: frappe._("Setup"),
icon: "icon-cog",
items: [
{
"label": frappe._("Buying Settings"),
"route": "Form/Buying Settings",
"doctype":"Buying Settings",
"description": frappe._("Settings for Buying Module")
},
{
"label": frappe._("Purchase Taxes and Charges Master"),
"doctype":"Purchase Taxes and Charges Master",
"description": frappe._("Tax Template for Purchase")
},
{
label: frappe._("Price List"),
description: frappe._("Multiple Price list."),
doctype:"Price List"
},
{
label: frappe._("Item Price"),
description: frappe._("Multiple Item prices."),
doctype:"Item Price"
},
{
"doctype":"Supplier Type",
"label": frappe._("Supplier Type"),
"description": frappe._("Supplier classification.")
},
{
"route":"Sales Browser/Item Group",
"label":frappe._("Item Group"),
"description": frappe._("Tree of item classification"),
doctype:"Item Group"
},
{
label: frappe._("Terms and Conditions"),
description: frappe._("Template of terms or contract."),
doctype:"Terms and Conditions"
},
]
},
{
title: frappe._("Tools"),
icon: "icon-wrench",
items: [
]
},
{
title: frappe._("Analytics"),
right: true,
icon: "icon-bar-chart",
items: [
{
"label":frappe._("Purchase Analytics"),
page: "purchase-analytics"
},
]
},
{
title: frappe._("Reports"),
right: true,
icon: "icon-list",
items: [
{
"label":frappe._("Items To Be Requested"),
route: "query-report/Items To Be Requested",
doctype: "Item"
},
{
"label":frappe._("Requested Items To Be Ordered"),
route: "query-report/Requested Items To Be Ordered",
doctype: "Material Request"
},
{
"label":frappe._("Material Requests for which Supplier Quotations are not created"),
route: "query-report/Material Requests for which Supplier Quotations are not created",
doctype: "Material Request"
},
{
"label":frappe._("Purchase In Transit"),
route: "query-report/Purchase In Transit",
doctype: "Purchase Order"
},
{
"label":frappe._("Item-wise Purchase History"),
route: "query-report/Item-wise Purchase History",
doctype: "Item"
},
{
"label":frappe._("Item-wise Last Purchase Rate"),
route: "query-report/Item-wise Last Purchase Rate",
doctype: "Item"
},
{
"label":frappe._("Purchase Order Trends"),
route: "query-report/Purchase Order Trends",
doctype: "Purchase Order"
},
{
"label":frappe._("Supplier Addresses And Contacts"),
route: "query-report/Supplier Addresses and Contacts",
doctype: "Supplier"
},
{
"label":frappe._("Supplier-Wise Sales Analytics"),
route: "query-report/Supplier-Wise Sales Analytics",
doctype: "Stock Ledger Entry"
}
]
}
]
pscript['onload_buying-home'] = function(wrapper) {
frappe.views.moduleview.make(wrapper, "Buying");
}

View File

@ -1,22 +0,0 @@
[
{
"creation": "2012-02-21 13:22:54",
"docstatus": 0,
"modified": "2013-07-11 14:41:50",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"doctype": "Page",
"icon": "icon-th",
"module": "Buying",
"name": "__common__",
"page_name": "buying-home",
"standard": "Yes",
"title": "Buying Home"
},
{
"doctype": "Page",
"name": "buying-home"
}
]

298
erpnext/config/accounts.py Normal file
View File

@ -0,0 +1,298 @@
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.")
},
]
},
{
"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 Rules",
"description": _("Rules for adding shipping costs.")
},
{
"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": "page",
"name":"Financial Statements",
"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"
},
]
},
]

164
erpnext/config/buying.py Normal file
View File

@ -0,0 +1,164 @@
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"
},
]
},
{
"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"
}
]
},
]

View File

@ -4,7 +4,6 @@ data = {
"Accounts": {
"color": "#3498db",
"icon": "icon-money",
"link": "accounts-home",
"type": "module"
},
"Activity": {
@ -17,20 +16,17 @@ data = {
"Buying": {
"color": "#c0392b",
"icon": "icon-shopping-cart",
"link": "buying-home",
"type": "module"
},
"HR": {
"color": "#2ecc71",
"icon": "icon-group",
"label": _("Human Resources"),
"link": "hr-home",
"type": "module"
},
"Manufacturing": {
"color": "#7f8c8d",
"icon": "icon-cogs",
"link": "manufacturing-home",
"type": "module"
},
"Notes": {
@ -44,25 +40,21 @@ data = {
"Projects": {
"color": "#8e44ad",
"icon": "icon-puzzle-piece",
"link": "projects-home",
"type": "module"
},
"Selling": {
"color": "#1abc9c",
"icon": "icon-tag",
"link": "selling-home",
"type": "module"
},
"Stock": {
"color": "#f39c12",
"icon": "icon-truck",
"link": "stock-home",
"type": "module"
},
"Support": {
"color": "#2c3e50",
"icon": "icon-phone",
"link": "support-home",
"type": "module"
}
}

202
erpnext/config/hr.py Normal file
View File

@ -0,0 +1,202 @@
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": "Grade",
"description": _("Employee grade.")
},
{
"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"
},
]
},
]

View File

@ -0,0 +1,77 @@
from frappe import _
data = [
{
"label": _("Documents"),
"icon": "icon-star",
"items": [
{
"type": "doctype",
"name": "Bill of Materials",
"description": _("Bill of Materials (BOM)"),
},
{
"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"
},
]
},
]

View File

@ -0,0 +1,66 @@
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"
},
]
},
]

255
erpnext/config/selling.py Normal file
View File

@ -0,0 +1,255 @@
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 Rules",
"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": "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)")
},
]
},
{
"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"
},
]
},
]

View File

@ -1,6 +1,20 @@
from frappe import _
from frappe.widgets.moduleview import add_setup_section
data = [
{
"label": _("Tools"),
"icon": "icon-wrench",
"items": [
{
"type": "doctype",
"name": "Global Defaults",
"label": _("Global Settings"),
"description": _("Set the Date & Number Formats, Default Currency, Current Fiscal Year, etc."),
"hide_count": True
}
]
},
{
"label": _("Customize"),
"icon": "icon-glass",
@ -85,207 +99,19 @@ data = [
},
]
},
{
"label": _("Accounts"),
"icon": "icon-money",
"items": [
{
"type": "page",
"name": "Accounts Browser",
"icon": "icon-sitemap",
"label": _("Chart of Accounts"),
"link": "Accounts Browser/Account",
"description": _("Tree of finanial accounts.")
},
{
"type": "page",
"name": "Accounts Browser",
"icon": "icon-sitemap",
"label": _("Chart of Cost Centers"),
"link": "Accounts Browser/Cost Center",
"description": _("Tree of finanial Cost Centers.")
},
{
"type": "doctype",
"name": "Accounts Settings",
"description": _("Default settings for accounting transactions.")
},
{
"type": "doctype",
"name": "Fiscal Year",
"description": _("Financial / accounting year.")
},
{
"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": "Currency",
"description": _("Enable / disable currencies.")
},
{
"type": "doctype",
"name": "Shipping Rules",
"description": _("Rules for adding shipping costs.")
},
{
"type": "doctype",
"name": "Currency Exchange",
"description": _("Currency exchange rate master.")
},
]
},
{
"label": _("Stock"),
"icon": "icon-truck",
"items": [
{
"type": "page",
"name": "Sales Browser",
"icon": "icon-sitemap",
"label": _("Item Group Tree"),
"link": "Sales Browser/Item Group",
"description": _("Tree of Item Groups.")
},
{
"type": "doctype",
"name": "Stock Settings",
"description": _("Default settings for stock transactions.")
},
{
"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": "Stock Reconciliation",
"description": _("Upload actual stock for a warehouse.")
},
]
},
{
"label": _("Selling"),
"icon": "icon-tag",
"items": [
{
"type": "doctype",
"name": "Selling Settings",
"description": _("Default settings for selling transactions.")
},
{
"type": "page",
"label": _("Customer Group"),
"name": "Sales Browser",
"icon": "icon-sitemap",
"link": "Sales Browser/Customer Group",
"description": _("Manage Customer Group Tree.")
},
{
"type": "page",
"label": _("Territory"),
"name": "Sales Browser",
"icon": "icon-sitemap",
"link": "Sales Browser/Territory",
"description": _("Manage Territory Tree.")
},
{
"type": "page",
"label": _("Sales Person"),
"name": "Sales Browser",
"icon": "icon-sitemap",
"link": "Sales Browser/Sales Person",
"description": _("Manage Sales Person Tree.")
},
]
},
{
"label": _("Buying"),
"icon": "icon-shopping-cart",
"items": [
{
"type": "doctype",
"name": "Buying Settings",
"description": _("Default settings for buying transactions.")
},
{
"type": "doctype",
"name": "Supplier Type",
"description": _("Supplier Type master.")
},
]
},
{
"label": _("Human Resources"),
"icon": "icon-group",
"items": [
{
"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": "Grade",
"description": _("Employee grade.")
},
{
"type": "doctype",
"name": "Designation",
"description": _("Employee designation (e.g. CEO, Director etc.).")
},
{
"type": "doctype",
"name": "Holiday List",
"description": _("Holiday master.")
},
{
"type": "doctype",
"name": "Salary Structure",
"description": _("Salary template master.")
},
{
"type": "doctype",
"name": "Appraisal Template",
"description": _("Template for performance appraisals.")
},
{
"type": "doctype",
"name": "Leave Allocation",
"description": _("Allocate leaves for a period.")
},
]
},
]
def get_data():
out = list(data)
for module, label, icon in (
("accounts", _("Accounts"), "icon-money"),
("stock", _("Stock"), "icon-truck"),
("selling", _("Selling"), "icon-tag"),
("buying", _("Buying"), "icon-shopping-cart"),
("hr", _("Human Resources"), "icon-group"),
("support", _("Support"), "icon-phone")):
add_setup_section(out, "erpnext", module, label, icon)
return out

263
erpnext/config/stock.py Normal file
View File

@ -0,0 +1,263 @@
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"
},
]
},
]

74
erpnext/config/support.py Normal file
View File

@ -0,0 +1,74 @@
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"
},
]
},
]

View File

@ -1 +0,0 @@
from __future__ import unicode_literals

View File

@ -1,212 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt"
frappe.module_page["HR"] = [
{
title: frappe._("Top"),
top: true,
icon: "icon-copy",
items: [
{
label: frappe._("Employee"),
description: frappe._("Employee records."),
doctype:"Employee"
},
{
label: frappe._("Leave Application"),
description: frappe._("Applications for leave."),
doctype:"Leave Application"
},
{
label: frappe._("Expense Claim"),
description: frappe._("Claims for company expense."),
doctype:"Expense Claim"
},
{
label: frappe._("Salary Slip"),
description: frappe._("Monthly salary statement."),
doctype:"Salary Slip"
},
{
label: frappe._("Attendance"),
description: frappe._("Attendance record."),
doctype:"Attendance"
},
]
},
{
title: frappe._("Documents"),
icon: "icon-copy",
items: [
{
label: frappe._("Job Applicant"),
description: frappe._("Applicant for a Job."),
doctype:"Job Applicant"
},
{
label: frappe._("Appraisal"),
description: frappe._("Performance appraisal."),
doctype:"Appraisal"
},
]
},
{
title: frappe._("Leave Setup"),
icon: "icon-cog",
items: [
{
"route":"Form/Upload Attendance/Upload Attendance",
"label":frappe._("Upload Attendance"),
"description":frappe._("Upload attendance from a .csv file"),
doctype: "Upload Attendance"
},
{
"route":"Form/Leave Control Panel/Leave Control Panel",
"label": frappe._("Leave Allocation Tool"),
"description": frappe._("Allocate leaves for the year."),
doctype: "Leave Control Panel"
},
{
"label":frappe._("Leave Allocation"),
"description":frappe._("Leave allocations."),
doctype: "Leave Allocation"
},
{
"label":frappe._("Leave Type"),
"description":frappe._("Type of leaves like casual, sick etc."),
doctype: "Leave Type"
},
{
"label":frappe._("Holiday List"),
"description":frappe._("List of holidays."),
doctype: "Holiday List"
},
{
"label":frappe._("Leave Block List"),
"description":frappe._("Block leave applications by department."),
doctype: "Leave Block List"
},
]
},
{
title: frappe._("Payroll Setup"),
icon: "icon-cog",
items: [
{
"label": frappe._("Salary Structure"),
"description": frappe._("Monthly salary template."),
doctype: "Salary Structure"
},
{
"route":"Form/Salary Manager/Salary Manager",
"label":frappe._("Process Payroll"),
"description":frappe._("Generate Salary Slips"),
doctype: "Salary Manager"
},
{
"label": frappe._("Earning Type"),
"description": frappe._("Salary components."),
doctype: "Earning Type"
},
{
"label": frappe._("Deduction Type"),
"description": frappe._("Tax and other salary deductions."),
doctype: "Deduction Type"
},
]
},
{
title: frappe._("Employee Setup"),
icon: "icon-cog",
items: [
{
label: frappe._("Job Opening"),
description: frappe._("Opening for a Job."),
doctype:"Job Opening"
},
{
"label": frappe._("Employment Type"),
"description": frappe._("Type of employment master."),
doctype: "Employment Type"
},
{
"label": frappe._("Designation"),
"description": frappe._("Employee Designation."),
doctype: "Designation"
},
{
"label": frappe._("Appraisal Template"),
"description": frappe._("Template for employee performance appraisals."),
doctype: "Appraisal Template"
},
{
"label": frappe._("Expense Claim Type"),
"description": frappe._("Types of Expense Claim."),
doctype: "Expense Claim Type"
},
{
"label": frappe._("Branch"),
"description": frappe._("Company branches."),
doctype: "Branch"
},
{
"label": frappe._("Department"),
"description": frappe._("Company departments."),
doctype: "Department"
},
{
"label": frappe._("Grade"),
"description": frappe._("Employee grades"),
doctype: "Grade"
},
]
},
{
title: frappe._("Setup"),
icon: "icon-cog",
items: [
{
"label": frappe._("HR Settings"),
"route": "Form/HR Settings",
"doctype":"HR Settings",
"description": "Settings for HR Module"
}
]
},
{
title: frappe._("Reports"),
right: true,
icon: "icon-list",
items: [
{
"label":frappe._("Employee Leave Balance"),
route: "query-report/Employee Leave Balance",
doctype: "Leave Application"
},
{
"label":frappe._("Employee Birthday"),
route: "query-report/Employee Birthday",
doctype: "Employee"
},
{
"label":frappe._("Employee Information"),
route: "Report/Employee/Employee Information",
doctype: "Employee"
},
{
"label":frappe._("Monthly Salary Register"),
route: "query-report/Monthly Salary Register",
doctype: "Salary Slip"
},
{
"label":frappe._("Monthly Attendance Sheet"),
route: "query-report/Monthly Attendance Sheet",
doctype: "Attendance"
},
]
}
];
pscript['onload_hr-home'] = function(wrapper) {
frappe.views.moduleview.make(wrapper, "HR");
}

View File

@ -1,22 +0,0 @@
[
{
"creation": "2012-02-21 13:24:05",
"docstatus": 0,
"modified": "2013-07-11 14:42:23",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"doctype": "Page",
"icon": "icon-th",
"module": "HR",
"name": "__common__",
"page_name": "hr-home",
"standard": "Yes",
"title": "Human Resources Home"
},
{
"doctype": "Page",
"name": "hr-home"
}
]

View File

@ -1 +0,0 @@
from __future__ import unicode_literals

View File

@ -1 +0,0 @@
from __future__ import unicode_literals

View File

@ -1,93 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt"
frappe.module_page["Manufacturing"] = [
{
title: frappe._("Documents"),
top: true,
icon: "icon-copy",
items: [
{
label: frappe._("Bill of Materials"),
description: frappe._("Bill of Materials (BOM)"),
doctype:"BOM"
},
{
label: frappe._("Production Order"),
description: frappe._("Orders released for production."),
doctype:"Production Order"
},
]
},
{
title: frappe._("Production Planning (MRP)"),
icon: "icon-wrench",
items: [
{
"route":"Form/Production Planning Tool/Production Planning Tool",
"label":frappe._("Production Planning Tool"),
"description":frappe._("Generate Material Requests (MRP) and Production Orders."),
doctype: "Production Planning Tool"
},
]
},
{
title: frappe._("Masters"),
icon: "icon-book",
items: [
{
label: frappe._("Item"),
description: frappe._("All Products or Services."),
doctype:"Item"
},
{
label: frappe._("Workstation"),
description: frappe._("Where manufacturing operations are carried out."),
doctype:"Workstation"
},
]
},
{
title: frappe._("Utility"),
icon: "icon-wrench",
items: [
{
"route":"Form/BOM Replace Tool/BOM Replace Tool",
"label":frappe._("BOM Replace Tool"),
"description":frappe._("Replace Item / BOM in all BOMs"),
doctype: "BOM Replace Tool"
},
]
},
{
title: frappe._("Reports"),
right: true,
icon: "icon-list",
items: [
{
"label":frappe._("Open Production Orders"),
route: "query-report/Open Production Orders",
doctype:"Production Order"
},
{
"label":frappe._("Production Orders in Progress"),
route: "query-report/Production Orders in Progress",
doctype:"Production Order"
},
{
"label":frappe._("Issued Items Against Production Order"),
route: "query-report/Issued Items Against Production Order",
doctype:"Production Order"
},
{
"label":frappe._("Completed Production Orders"),
route: "query-report/Completed Production Orders",
doctype:"Production Order"
},
]
}
]
pscript['onload_manufacturing-home'] = function(wrapper) {
frappe.views.moduleview.make(wrapper, "Manufacturing");
}

View File

@ -1,22 +0,0 @@
[
{
"creation": "2012-02-21 13:24:34",
"docstatus": 0,
"modified": "2013-07-11 14:43:23",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"doctype": "Page",
"icon": "icon-th",
"module": "Manufacturing",
"name": "__common__",
"page_name": "manufacturing-home",
"standard": "Yes",
"title": "Manufacturing Home"
},
{
"doctype": "Page",
"name": "manufacturing-home"
}
]

View File

@ -23,3 +23,6 @@ erpnext.patches.4_0.fields_to_be_renamed
erpnext.patches.4_0.rename_sitemap_to_route
erpnext.patches.4_0.fix_contact_address
erpnext.patches.4_0.customer_discount_to_pricing_rule
execute:frappe.db.sql("""delete from `tabWebsite Item Group` where ifnull(item_group, '')=''""")
erpnext.patches.4_0.remove_module_home_pages
erpnext.patches.4_0.split_email_settings

View File

@ -0,0 +1,10 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import frappe
def execute():
for page in ("accounts-home", "website-home", "support-home", "stock-home", "selling-home", "projects-home",
"manufacturing-home", "hr-home", "buying-home"):
frappe.delete_doc("Page", page)

View File

@ -0,0 +1,50 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import frappe
def execute():
frappe.reload_doc("core", "doctype", "outgoing_email_settings")
frappe.reload_doc("support", "doctype", "support_email_settings")
email_settings = frappe.bean("Email Settings")
map_outgoing_email_settings(email_settings)
map_support_email_settings(email_settings)
frappe.delete_doc("Doctype", "Email Settings")
def map_outgoing_email_settings(email_settings):
outgoing_email_settings = frappe.bean("Outgoing Email Settings")
for fieldname in (("outgoing_mail_server", "mail_server"),
"use_ssl", "mail_port", "mail_login", "mail_password",
"always_use_login_id_as_sender",
"auto_email_id", "send_print_in_body_and_attachment"):
if isinstance(fieldname, tuple):
from_fieldname, to_fieldname = fieldname
else:
from_fieldname = to_fieldname = fieldname
outgoing_email_settings.doc.fields[to_fieldname] = email_settings.doc.fields.get(from_fieldname)
outgoing_email_settings.save()
def map_support_email_settings(email_settings):
support_email_settings = frappe.bean("Support Email Settings")
for fieldname in ("sync_support_mails", "support_email",
("support_host", "mail_server"),
("support_use_ssl", "use_ssl"),
("support_username", "mail_login"),
("support_password", "mail_password"),
"support_signature", "send_autoreply", "support_autoreply"):
if isinstance(fieldname, tuple):
from_fieldname, to_fieldname = fieldname
else:
from_fieldname = to_fieldname = fieldname
support_email_settings.doc.fields[to_fieldname] = email_settings.doc.fields.get(from_fieldname)
support_email_settings.save()

View File

@ -1 +0,0 @@
from __future__ import unicode_literals

View File

@ -1 +0,0 @@
from __future__ import unicode_literals

View File

@ -1,80 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt"
frappe.module_page["Projects"] = [
{
title: frappe._("Top"),
icon: "icon-copy",
top: true,
items: [
{
label: frappe._("Task"),
description: frappe._("Project activity / task."),
doctype:"Task"
},
{
label: frappe._("Project"),
description: frappe._("Project master."),
doctype:"Project"
},
{
label: frappe._("Time Log"),
description: frappe._("Time Log for tasks."),
doctype:"Time Log"
},
]
},
{
title: frappe._("Documents"),
icon: "icon-copy",
items: [
{
label: frappe._("Time Log Batch"),
description: frappe._("Batch Time Logs for billing."),
doctype:"Time Log Batch"
},
]
},
{
title: frappe._("Tools"),
icon: "icon-wrench",
items: [
{
route: "Gantt/Task",
label: frappe._("Gantt Chart"),
"description":frappe._("Gantt chart of all tasks.")
},
]
},
{
title: frappe._("Masters"),
icon: "icon-book",
items: [
{
label: frappe._("Activity Type"),
description: frappe._("Types of activities for Time Sheets"),
doctype:"Activity Type"
},
]
},
{
title: frappe._("Reports"),
right: true,
icon: "icon-list",
items: [
{
"label":frappe._("Daily Time Log Summary"),
route: "query-report/Daily Time Log Summary",
doctype: "Time Log"
},
{
"label":frappe._("Project wise Stock Tracking"),
route: "query-report/Project wise Stock Tracking",
doctype: "Project"
},
]
}]
pscript['onload_projects-home'] = function(wrapper) {
frappe.views.moduleview.make(wrapper, "Projects");
}

View File

@ -1,22 +0,0 @@
[
{
"creation": "2012-02-21 13:24:22",
"docstatus": 0,
"modified": "2013-07-11 14:43:49",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"doctype": "Page",
"icon": "icon-th",
"module": "Projects",
"name": "__common__",
"page_name": "projects-home",
"standard": "Yes",
"title": "Projects Home"
},
{
"doctype": "Page",
"name": "projects-home"
}
]

View File

@ -2,7 +2,7 @@
{
"creation": "2013-06-11 14:26:44",
"docstatus": 0,
"modified": "2014-02-28 11:39:53",
"modified": "2014-03-03 19:05:58",
"modified_by": "Administrator",
"owner": "Administrator"
},
@ -363,6 +363,7 @@
"permlevel": 0,
"print": 1,
"report": 1,
"restrict": 1,
"role": "Sales Master Manager",
"submit": 0,
"write": 1

View File

@ -1 +0,0 @@
from __future__ import unicode_literals

View File

@ -1,239 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt"
frappe.module_page["Selling"] = [
{
top: true,
title: frappe._("Documents"),
icon: "icon-copy",
items: [
{
label: frappe._("Customer"),
description: frappe._("Customer database."),
doctype:"Customer"
},
{
label: frappe._("Lead"),
description: frappe._("Database of potential customers."),
doctype:"Lead"
},
{
label: frappe._("Opportunity"),
description: frappe._("Potential opportunities for selling."),
doctype:"Opportunity"
},
{
label: frappe._("Quotation"),
description: frappe._("Quotes to Leads or Customers."),
doctype:"Quotation"
},
{
label: frappe._("Sales Order"),
description: frappe._("Confirmed orders from Customers."),
doctype:"Sales Order"
},
]
},
{
title: frappe._("Masters"),
icon: "icon-book",
items: [
{
label: frappe._("Contact"),
description: frappe._("All Contacts."),
doctype:"Contact"
},
{
label: frappe._("Address"),
description: frappe._("All Addresses."),
doctype:"Address"
},
{
label: frappe._("Item"),
description: frappe._("All Products or Services."),
doctype:"Item"
},
]
},
{
title: frappe._("Setup"),
icon: "icon-cog",
items: [
{
"label": frappe._("Selling Settings"),
"route": "Form/Selling Settings",
"doctype":"Selling Settings",
"description": frappe._("Settings for Selling Module")
},
{
label: frappe._("Sales Taxes and Charges Master"),
description: frappe._("Sales taxes template."),
doctype:"Sales Taxes and Charges Master"
},
{
label: frappe._("Shipping Rules"),
description: frappe._("Rules to calculate shipping amount for a sale"),
doctype:"Shipping Rule"
},
{
label: frappe._("Price List"),
description: frappe._("Multiple Price list."),
doctype:"Price List"
},
{
label: frappe._("Item Price"),
description: frappe._("Multiple Item prices."),
doctype:"Item Price"
},
{
label: frappe._("Sales BOM"),
description: frappe._("Bundle items at time of sale."),
doctype:"Sales BOM"
},
{
label: frappe._("Terms and Conditions"),
description: frappe._("Template of terms or contract."),
doctype:"Terms and Conditions"
},
{
label: frappe._("Customer Group"),
description: frappe._("Customer classification tree."),
route: "Sales Browser/Customer Group",
doctype:"Customer Group"
},
{
label: frappe._("Territory"),
description: frappe._("Sales territories."),
route: "Sales Browser/Territory",
doctype:"Territory"
},
{
"route":"Sales Browser/Sales Person",
"label":frappe._("Sales Person"),
"description": frappe._("Sales persons and targets"),
doctype:"Sales Person"
},
{
"route":"List/Sales Partner",
"label": frappe._("Sales Partner"),
"description":frappe._("Commission partners and targets"),
doctype:"Sales Partner"
},
{
"route":"Sales Browser/Item Group",
"label":frappe._("Item Group"),
"description": frappe._("Tree of item classification"),
doctype:"Item Group"
},
{
"route":"List/Campaign",
"label":frappe._("Campaign"),
"description":frappe._("Sales campaigns"),
doctype:"Campaign"
},
]
},
{
title: frappe._("Tools"),
icon: "icon-wrench",
items: [
{
"route":"Form/SMS Center/SMS Center",
"label":frappe._("SMS Center"),
"description":frappe._("Send mass SMS to your contacts"),
doctype:"SMS Center"
},
]
},
{
title: frappe._("Analytics"),
right: true,
icon: "icon-bar-chart",
items: [
{
"label":frappe._("Sales Analytics"),
page: "sales-analytics"
},
{
"label":frappe._("Sales Funnel"),
page: "sales-funnel"
},
{
"label":frappe._("Customer Acquisition and Loyalty"),
route: "query-report/Customer Acquisition and Loyalty",
doctype: "Customer"
},
]
},
{
title: frappe._("Reports"),
right: true,
icon: "icon-list",
items: [
{
"label":frappe._("Lead Details"),
route: "query-report/Lead Details",
doctype: "Lead"
},
{
"label":frappe._("Customer Addresses And Contacts"),
route: "query-report/Customer Addresses And Contacts",
doctype: "Contact"
},
{
"label":frappe._("Ordered Items To Be Delivered"),
route: "query-report/Ordered Items To Be Delivered",
doctype: "Sales Order"
},
{
"label":frappe._("Sales Person-wise Transaction Summary"),
route: "query-report/Sales Person-wise Transaction Summary",
doctype: "Sales Order"
},
{
"label":frappe._("Item-wise Sales History"),
route: "query-report/Item-wise Sales History",
doctype: "Item"
},
{
"label":frappe._("Territory Target Variance (Item Group-Wise)"),
route: "query-report/Territory Target Variance Item Group-Wise",
doctype: "Territory"
},
{
"label":frappe._("Sales Person Target Variance (Item Group-Wise)"),
route: "query-report/Sales Person Target Variance Item Group-Wise",
doctype: "Sales Person",
},
{
"label":frappe._("Customers Not Buying Since Long Time"),
route: "query-report/Customers Not Buying Since Long Time",
doctype: "Sales Order"
},
{
"label":frappe._("Quotation Trend"),
route: "query-report/Quotation Trends",
doctype: "Quotation"
},
{
"label":frappe._("Sales Order Trend"),
route: "query-report/Sales Order Trends",
doctype: "Sales Order"
},
{
"label":frappe._("Available Stock for Packing Items"),
route: "query-report/Available Stock for Packing Items",
doctype: "Item",
},
{
"label":frappe._("Pending SO Items For Purchase Request"),
route: "query-report/Pending SO Items For Purchase Request",
doctype: "Sales Order"
},
]
}
]
pscript['onload_selling-home'] = function(wrapper) {
frappe.views.moduleview.make(wrapper, "Selling");
}

View File

@ -1,33 +0,0 @@
[
{
"creation": "2012-02-20 15:46:39",
"docstatus": 0,
"modified": "2013-07-11 14:44:01",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"doctype": "Page",
"icon": "icon-th",
"module": "Selling",
"name": "__common__",
"page_name": "selling-home",
"standard": "Yes",
"title": "Selling Home"
},
{
"doctype": "Page Role",
"name": "__common__",
"parent": "selling-home",
"parentfield": "roles",
"parenttype": "Page",
"role": "All"
},
{
"doctype": "Page",
"name": "selling-home"
},
{
"doctype": "Page Role"
}
]

View File

@ -1 +0,0 @@
Settings for outgoing emails (SMTP), Support Ticket (POP).

View File

@ -1 +0,0 @@
from __future__ import unicode_literals

View File

@ -1,67 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import frappe
from frappe.utils import cint
class DocType:
def __init__(self,doc,doclist):
self.doc,self.doclist = doc,doclist
def validate(self):
"""Checks connectivity to email servers before saving"""
self.validate_outgoing()
self.validate_incoming()
def validate_outgoing(self):
"""Checks incoming email settings"""
self.doc.encode()
if self.doc.outgoing_mail_server:
from frappe.utils import cint
from frappe.utils.email_lib.smtp import SMTPServer
smtpserver = SMTPServer(login = self.doc.mail_login,
password = self.doc.mail_password,
server = self.doc.outgoing_mail_server,
port = cint(self.doc.mail_port),
use_ssl = self.doc.use_ssl
)
# exceptions are handled in session connect
sess = smtpserver.sess
def validate_incoming(self):
"""
Checks support ticket email settings
"""
if self.doc.sync_support_mails and self.doc.support_host:
from frappe.utils.email_lib.receive import POP3Mailbox
from frappe.model.doc import Document
import _socket, poplib
inc_email = Document('Incoming Email Settings')
inc_email.encode()
inc_email.host = self.doc.support_host
inc_email.use_ssl = self.doc.support_use_ssl
try:
err_msg = 'User Name or Support Password missing. Please enter and try again.'
if not (self.doc.support_username and self.doc.support_password):
raise AttributeError, err_msg
inc_email.username = self.doc.support_username
inc_email.password = self.doc.support_password
except AttributeError, e:
frappe.msgprint(err_msg)
raise
pop_mb = POP3Mailbox(inc_email)
try:
pop_mb.connect()
except _socket.error, e:
# Invalid mail server -- due to refusing connection
frappe.msgprint('Invalid POP3 Mail Server. Please rectify and try again.')
raise
except poplib.error_proto, e:
frappe.msgprint('Invalid User Name or Support Password. Please rectify and try again.')
raise

View File

@ -1,188 +0,0 @@
[
{
"creation": "2013-03-25 17:53:21",
"docstatus": 0,
"modified": "2013-12-06 13:12:25",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"allow_copy": 1,
"allow_email": 1,
"allow_print": 1,
"description": "Email Settings for Outgoing and Incoming Emails.",
"doctype": "DocType",
"icon": "icon-cog",
"in_create": 1,
"issingle": 1,
"module": "Setup",
"name": "__common__"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Email Settings",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"create": 1,
"doctype": "DocPerm",
"name": "__common__",
"parent": "Email Settings",
"parentfield": "permissions",
"parenttype": "DocType",
"permlevel": 0,
"read": 1,
"role": "System Manager",
"write": 1
},
{
"doctype": "DocType",
"name": "Email Settings"
},
{
"description": "Set your outgoing mail SMTP settings here. All system generated notifications, emails will go from this mail server. If you are not sure, leave this blank to use ERPNext servers (emails will still be sent from your email id) or contact your email provider.",
"doctype": "DocField",
"fieldname": "outgoing_mails",
"fieldtype": "Section Break",
"label": "Outgoing Mails"
},
{
"description": "SMTP Server (e.g. smtp.gmail.com)",
"doctype": "DocField",
"fieldname": "outgoing_mail_server",
"fieldtype": "Data",
"label": "Outgoing Mail Server"
},
{
"description": "<a href=\"https://en.wikipedia.org/wiki/Transport_Layer_Security\" target=\"_blank\">[?]</a>",
"doctype": "DocField",
"fieldname": "use_ssl",
"fieldtype": "Check",
"label": "Use TLS"
},
{
"description": "If non standard port (e.g. 587)",
"doctype": "DocField",
"fieldname": "mail_port",
"fieldtype": "Int",
"label": "Mail Port"
},
{
"doctype": "DocField",
"fieldname": "cb0",
"fieldtype": "Column Break"
},
{
"description": "Set Login and Password if authentication is required.",
"doctype": "DocField",
"fieldname": "mail_login",
"fieldtype": "Data",
"label": "Login Id"
},
{
"description": "Check this if you want to send emails as this id only (in case of restriction by your email provider).",
"doctype": "DocField",
"fieldname": "always_use_login_id_as_sender",
"fieldtype": "Check",
"label": "Always use above Login Id as sender"
},
{
"doctype": "DocField",
"fieldname": "mail_password",
"fieldtype": "Password",
"label": "Mail Password"
},
{
"description": "System generated mails will be sent from this email id.",
"doctype": "DocField",
"fieldname": "auto_email_id",
"fieldtype": "Data",
"label": "Auto Email Id"
},
{
"default": "1",
"description": "If checked, an email with an attached HTML format will be added to part of the EMail body as well as attachment. To only send as attachment, uncheck this.",
"doctype": "DocField",
"fieldname": "send_print_in_body_and_attachment",
"fieldtype": "Check",
"label": "Send Print in Body and Attachment"
},
{
"description": "To automatically create Support Tickets from your incoming mail, set your POP3 settings here. You must ideally create a separate email id for the erp system so that all emails will be synced into the system from that mail id. If you are not sure, please contact your EMail Provider.",
"doctype": "DocField",
"fieldname": "section_break0",
"fieldtype": "Section Break",
"label": "Incoming / Support Mail Setting"
},
{
"description": "Check this to pull emails from your mailbox",
"doctype": "DocField",
"fieldname": "sync_support_mails",
"fieldtype": "Check",
"label": "Sync Support Mails"
},
{
"description": "Your support email id - must be a valid email - this is where your emails will come!",
"doctype": "DocField",
"fieldname": "support_email",
"fieldtype": "Data",
"label": "Support Email"
},
{
"description": "POP3 mail server (e.g. pop.gmail.com)",
"doctype": "DocField",
"fieldname": "support_host",
"fieldtype": "Data",
"label": "POP3 Mail Server"
},
{
"doctype": "DocField",
"fieldname": "support_use_ssl",
"fieldtype": "Check",
"label": "Use SSL"
},
{
"doctype": "DocField",
"fieldname": "support_username",
"fieldtype": "Data",
"label": "User Name"
},
{
"doctype": "DocField",
"fieldname": "support_password",
"fieldtype": "Password",
"label": "Support Password"
},
{
"doctype": "DocField",
"fieldname": "cb1",
"fieldtype": "Column Break"
},
{
"description": "Signature to be appended at the end of every email",
"doctype": "DocField",
"fieldname": "support_signature",
"fieldtype": "Text",
"label": "Signature"
},
{
"default": "1",
"doctype": "DocField",
"fieldname": "send_autoreply",
"fieldtype": "Check",
"label": "Send Autoreply"
},
{
"description": "Autoreply when a new mail is received",
"doctype": "DocField",
"fieldname": "support_autoreply",
"fieldtype": "Text",
"label": "Custom Autoreply Message"
},
{
"doctype": "DocPerm"
}
]

View File

@ -2,7 +2,7 @@
{
"creation": "2013-02-22 01:28:09",
"docstatus": 0,
"modified": "2013-12-20 19:21:54",
"modified": "2014-02-28 13:00:07",
"modified_by": "Administrator",
"owner": "Administrator"
},
@ -26,7 +26,8 @@
"parent": "Website Item Group",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
"permlevel": 0,
"reqd": 1
},
{
"doctype": "DocType",

View File

@ -160,7 +160,7 @@ def set_defaults(args):
hr_settings.doc.emp_created_by = "Naming Series"
hr_settings.save()
email_settings = frappe.bean("Email Settings")
email_settings = frappe.bean("Outgoing Email Settings")
email_settings.doc.send_print_in_body_and_attachment = 1
email_settings.save()

View File

@ -34,7 +34,7 @@ mail_footer = """<div style="padding: 7px; text-align: right; color: #888"><smal
def get_monthly_bulk_mail_limit():
import frappe
# if global settings, then 500 or unlimited
if frappe.db.get_value('Email Settings', None, 'outgoing_mail_server'):
if frappe.db.get_value('Outgoing Email Settings', None, 'mail_server'):
return 999999
else:
return 500

View File

@ -1 +0,0 @@
from __future__ import unicode_literals

View File

@ -1,257 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt"
frappe.module_page["Stock"] = [
{
title: frappe._("Documents"),
top: true,
icon: "icon-copy",
items: [
{
label: frappe._("Item"),
description: frappe._("All Products or Services."),
doctype: "Item"
},
{
label: frappe._("Material Request"),
description: frappe._("Requests for items."),
doctype: "Material Request"
},
{
label: frappe._("Stock Entry"),
description: frappe._("Record item movement."),
doctype: "Stock Entry"
},
{
label: frappe._("Delivery Note"),
description: frappe._("Shipments to customers."),
doctype: "Delivery Note"
},
{
label: frappe._("Purchase Receipt"),
description: frappe._("Goods received from Suppliers."),
doctype: "Purchase Receipt"
},
]
},
{
title: frappe._("Masters"),
icon: "icon-book",
items: [
{
label: frappe._("Serial No"),
description: frappe._("Single unit of an Item."),
doctype: "Serial No"
},
{
label: frappe._("Batch"),
description: frappe._("Batch (lot) of an Item."),
doctype: "Batch"
},
{
label: frappe._("Warehouse"),
description: frappe._("Where items are stored."),
doctype: "Warehouse"
},
]
},
{
title: frappe._("Tools"),
icon: "icon-wrench",
items: [
{
doctype: "Stock Reconciliation",
label: frappe._("Stock Reconciliation"),
description: frappe._("Upload stock balance via csv.")
},
{
doctype: "Installation Note",
label: frappe._("Installation Note"),
description: frappe._("Installation record for a Serial No.")
},
{
label: frappe._("Packing Slip"),
doctype: "Packing Slip",
description: frappe._("Split Delivery Note into packages.")
},
{
doctype: "Price List",
label: frappe._("Price List"),
description: frappe._("Multiple Price list.")
},
{
doctype: "Item Price",
label: frappe._("Item Price"),
description: frappe._("Multiple Item prices.")
},
{
doctype: "Quality Inspection",
label: frappe._("Quality Inspection"),
description: frappe._("Incoming quality inspection.")
},
{
route: "Form/Landed Cost Wizard/Landed Cost Wizard",
label: frappe._("Landed Cost Wizard"),
description: frappe._("Distribute transport overhead across items."),
doctype: "Landed Cost Wizard"
},
{
route: "Form/Stock UOM Replace Utility/Stock UOM Replace Utility",
label: frappe._("UOM Replace Utility"),
description: frappe._("Change UOM for an Item."),
doctype: "Stock UOM Replace Utility"
},
]
},
{
title: frappe._("Setup"),
icon: "icon-cog",
items: [
{
label: frappe._("Stock Settings"),
route: "Form/Stock Settings",
doctype: "Stock Settings",
description: frappe._("Settings for Stock Module")
},
{
route: "Sales Browser/Item Group",
label: frappe._("Item Group"),
doctype: "Item Group",
description: frappe._("Item classification.")
},
{
doctype: "UOM",
label: frappe._("Unit of Measure") + " (UOM)",
description: frappe._("e.g. Kg, Unit, Nos, m")
},
{
doctype: "Brand",
label: frappe._("Brand"),
description: frappe._("Brand master.")
}
]
},
{
title: frappe._("Main Reports"),
right: true,
icon: "icon-table",
items: [
{
label: frappe._("Stock Ledger"),
doctype: "Item",
route: "query-report/Stock Ledger"
},
{
label: frappe._("Stock Balance"),
page: "stock-balance"
},
{
label: frappe._("Stock Projected Qty"),
doctype: "Item",
route: "query-report/Stock Projected Qty"
},
{
label: frappe._("Stock Ageing"),
doctype: "Item",
route: "query-report/Stock Ageing"
},
{
label: frappe._("Item-wise Price List Rate"),
route: "Report/Item Price/Item-wise Price List Rate",
doctype: "Item Price"
},
]
},
{
title: frappe._("Analytics"),
right: true,
icon: "icon-bar-chart",
items: [
{
label: frappe._("Stock Analytics"),
page: "stock-analytics"
},
]
},
{
title: frappe._("Reports"),
right: true,
icon: "icon-list",
items: [
{
label: frappe._("Ordered Items To Be Delivered"),
route: "query-report/Ordered Items To Be Delivered",
doctype: "Delivery Note"
},
{
label: frappe._("Purchase Order Items To Be Received"),
route: "query-report/Purchase Order Items To Be Received",
doctype: "Purchase Receipt"
},
{
label: frappe._("Item Shortage Report"),
route: "Report/Bin/Item Shortage Report",
doctype: "Purchase Receipt"
},
{
label: frappe._("Serial No Service Contract Expiry"),
route: "Report/Serial No/Serial No Service Contract Expiry",
doctype: "Serial No"
},
{
label: frappe._("Serial No Status"),
route: "Report/Serial No/Serial No Status",
doctype: "Serial No"
},
{
label: frappe._("Serial No Warranty Expiry"),
route: "Report/Serial No/Serial No Warranty Expiry",
doctype: "Serial No"
},
{
label: frappe._("Purchase In Transit"),
route: "query-report/Purchase In Transit",
doctype: "Purchase Order"
},
{
label: frappe._("Requested Items To Be Transferred"),
route: "query-report/Requested Items To Be Transferred",
doctype: "Material Request"
},
{
label: frappe._("Batch-Wise Balance History"),
route: "query-report/Batch-Wise Balance History",
doctype: "Batch"
},
{
label: frappe._("Warehouse-Wise Stock Balance"),
route: "query-report/Warehouse-Wise Stock Balance",
doctype: "Warehouse"
},
{
label: frappe._("Item Prices"),
route: "query-report/Item Prices",
doctype: "Price List"
},
{
label: frappe._("Itemwise Recommended Reorder Level"),
route: "query-report/Itemwise Recommended Reorder Level",
doctype: "Item"
},
{
label: frappe._("Delivery Note Trends"),
route: "query-report/Delivery Note Trends",
doctype: "Delivery Note"
},
{
label: frappe._("Purchase Receipt Trends"),
route: "query-report/Purchase Receipt Trends",
doctype: "Purchase Receipt"
},
]
}
]
pscript['onload_stock-home'] = function(wrapper) {
frappe.views.moduleview.make(wrapper, "Stock");
}

View File

@ -1,22 +0,0 @@
[
{
"creation": "2012-02-21 13:23:22",
"docstatus": 0,
"modified": "2013-07-11 14:44:17",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"doctype": "Page",
"icon": "icon-th",
"module": "Stock",
"name": "__common__",
"page_name": "stock-home",
"standard": "Yes",
"title": "Stock Home"
},
{
"doctype": "Page",
"name": "stock-home"
}
]

View File

@ -0,0 +1,47 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
# For license information, please see license.txt
from __future__ import unicode_literals
import frappe
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl
def validate(self):
"""
Checks support ticket email settings
"""
if self.doc.sync_support_mails and self.doc.mail_server:
from frappe.utils.email_lib.receive import POP3Mailbox
from frappe.model.doc import Document
import _socket, poplib
inc_email = Document('Incoming Email Settings')
inc_email.encode()
inc_email.host = self.doc.mail_server
inc_email.use_ssl = self.doc.use_ssl
try:
err_msg = 'User Name or Support Password missing. Please enter and try again.'
if not (self.doc.mail_login and self.doc.mail_password):
raise AttributeError, err_msg
inc_email.username = self.doc.mail_login
inc_email.password = self.doc.mail_password
except AttributeError, e:
frappe.msgprint(err_msg)
raise
pop_mb = POP3Mailbox(inc_email)
try:
pop_mb.connect()
except _socket.error, e:
# Invalid mail server -- due to refusing connection
frappe.msgprint('Invalid POP3 Mail Server. Please rectify and try again.')
raise
except poplib.error_proto, e:
frappe.msgprint('Invalid User Name or Support Password. Please rectify and try again.')
raise

View File

@ -0,0 +1,111 @@
[
{
"creation": "2014-03-03 19:48:46",
"docstatus": 0,
"modified": "2014-03-03 20:20:34",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"allow_copy": 1,
"description": "Email Settings for Outgoing and Incoming Emails.",
"doctype": "DocType",
"icon": "icon-cog",
"in_create": 1,
"issingle": 1,
"module": "Support",
"name": "__common__"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Support Email Settings",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"create": 1,
"doctype": "DocPerm",
"name": "__common__",
"parent": "Support Email Settings",
"parentfield": "permissions",
"parenttype": "DocType",
"permlevel": 0,
"read": 1,
"role": "System Manager",
"write": 1
},
{
"doctype": "DocType",
"name": "Support Email Settings"
},
{
"description": "Check this to pull emails from your mailbox",
"doctype": "DocField",
"fieldname": "sync_support_mails",
"fieldtype": "Check",
"label": "Sync Support Mails"
},
{
"description": "Your support email id - must be a valid email - this is where your emails will come!",
"doctype": "DocField",
"fieldname": "support_email",
"fieldtype": "Data",
"label": "Support Email"
},
{
"description": "POP3 mail server (e.g. pop.gmail.com)",
"doctype": "DocField",
"fieldname": "mail_server",
"fieldtype": "Data",
"label": "POP3 Mail Server"
},
{
"doctype": "DocField",
"fieldname": "use_ssl",
"fieldtype": "Check",
"label": "Use SSL"
},
{
"doctype": "DocField",
"fieldname": "mail_login",
"fieldtype": "Data",
"label": "User Name"
},
{
"doctype": "DocField",
"fieldname": "mail_password",
"fieldtype": "Password",
"label": "Support Password"
},
{
"doctype": "DocField",
"fieldname": "cb1",
"fieldtype": "Column Break"
},
{
"description": "Signature to be appended at the end of every email",
"doctype": "DocField",
"fieldname": "support_signature",
"fieldtype": "Text",
"label": "Signature"
},
{
"default": "1",
"doctype": "DocField",
"fieldname": "send_autoreply",
"fieldtype": "Check",
"label": "Send Autoreply"
},
{
"description": "Autoreply when a new mail is received",
"doctype": "DocField",
"fieldname": "support_autoreply",
"fieldtype": "Text",
"label": "Custom Autoreply Message"
},
{
"doctype": "DocPerm"
}
]

View File

@ -10,12 +10,12 @@ from frappe.core.doctype.communication.communication import _make
class SupportMailbox(POP3Mailbox):
def setup(self, args=None):
self.email_settings = frappe.doc("Email Settings", "Email Settings")
self.email_settings = frappe.doc("Support Email Settings", "Support Email Settings")
self.settings = args or frappe._dict({
"use_ssl": self.email_settings.support_use_ssl,
"host": self.email_settings.support_host,
"username": self.email_settings.support_username,
"password": self.email_settings.support_password
"use_ssl": self.email_settings.use_ssl,
"host": self.email_settings.mail_server,
"username": self.email_settings.mail_login,
"password": self.email_settings.mail_password
})
def process_message(self, mail):
@ -53,7 +53,7 @@ Original Query:
msg = cstr(response))
def get_support_mails():
if cint(frappe.db.get_value('Email Settings', None, 'sync_support_mails')):
if cint(frappe.db.get_value('Support Email Settings', None, 'sync_support_mails')):
SupportMailbox()
def add_support_communication(subject, content, sender, docname=None, mail=None):

View File

@ -11,7 +11,7 @@ cur_frm.add_fetch("customer", "customer_name", "customer_name")
$.extend(cur_frm.cscript, {
onload: function(doc, dt, dn) {
if(in_list(user_roles,'System Manager')) {
cur_frm.footer.help_area.innerHTML = '<p><a href="#Form/Email Settings/Email Settings">'+frappe._("Email Settings")+'</a><br>\
cur_frm.footer.help_area.innerHTML = '<p><a href="#Form/Support Email Settings/Support Email Settings">'+frappe._("Support Email Settings")+'</a><br>\
<span class="help">'+frappe._("Integrate incoming support emails to Support Ticket")+'</span></p>';
}
},

View File

@ -13,13 +13,13 @@ class DocType(TransactionBase):
self.doclist = doclist
def get_sender(self, comm):
return frappe.db.get_value('Email Settings',None,'support_email')
return frappe.db.get_value('Support Email Settings',None,'support_email')
def get_subject(self, comm):
return '[' + self.doc.name + '] ' + (comm.subject or 'No Subject Specified')
def get_content(self, comm):
signature = frappe.db.get_value('Email Settings',None,'support_signature')
signature = frappe.db.get_value('Support Email Settings',None,'support_signature')
content = comm.content
if signature:
content += '<p>' + signature + '</p>'

View File

@ -1 +0,0 @@
from __future__ import unicode_literals

View File

@ -1,99 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt"
frappe.module_page["Support"] = [
{
title: frappe._("Top"),
top: true,
icon: "icon-copy",
items: [
{
label: frappe._("Support Ticket"),
description: frappe._("Support queries from customers."),
doctype:"Support Ticket"
},
{
label: frappe._("Customer Issue"),
description: frappe._("Customer Issue against Serial No."),
doctype:"Customer Issue"
},
]
},
{
title: frappe._("Documents"),
icon: "icon-copy",
items: [
{
label: frappe._("Maintenance Schedule"),
description: frappe._("Plan for maintenance visits."),
doctype:"Maintenance Schedule"
},
{
label: frappe._("Maintenance Visit"),
description: frappe._("Visit report for maintenance call."),
doctype:"Maintenance Visit"
},
{
label: frappe._("Newsletter"),
description: frappe._("Newsletters to contacts, leads."),
doctype:"Newsletter"
},
{
label: frappe._("Communication"),
description: frappe._("Communication log."),
doctype:"Communication"
},
]
},
{
title: frappe._("Masters"),
icon: "icon-book",
items: [
{
label: frappe._("Serial No"),
description: frappe._("Single unit of an Item."),
doctype:"Serial No"
},
]
},
{
title: frappe._("Setup"),
icon: "icon-cog",
items: [
{
"route":"Form/Email Settings/Email Settings",
"label":frappe._("Email Settings"),
"description":frappe._("Setup to pull emails from support email account"),
doctype: "Email Settings"
},
]
},
{
title: frappe._("Analytics"),
right: true,
icon: "icon-bar-chart",
items: [
{
"label":frappe._("Support Analytics"),
page: "support-analytics"
},
]
},
{
title: frappe._("Reports"),
right: true,
icon: "icon-list",
items: [
{
"label":frappe._("Maintenance Schedules"),
route: "query-report/Maintenance Schedules",
doctype: "Maintenance Schedule"
}
]
}
]
pscript['onload_support-home'] = function(wrapper) {
frappe.views.moduleview.make(wrapper, "Support");
}

View File

@ -1,22 +0,0 @@
[
{
"creation": "2012-02-21 13:23:35",
"docstatus": 0,
"modified": "2013-07-11 14:44:26",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"doctype": "Page",
"icon": "icon-th",
"module": "Support",
"name": "__common__",
"page_name": "support-home",
"standard": "Yes",
"title": "Support Home"
},
{
"doctype": "Page",
"name": "support-home"
}
]