Merge branch 'shopping-cart' of https://github.com/frappe/erpnext into shopping-cart
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR04_with_account_number.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR04_with_account_number.json
index 3fc109b..849df18 100644
--- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR04_with_account_number.json
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR04_with_account_number.json
@@ -910,98 +910,8 @@
},
"is_group": 1
},
- "Passiva": {
+ "Passiva - Verbindlichkeiten": {
"root_type": "Liability",
- "A - Eigenkapital": {
- "account_type": "Equity",
- "is_group": 1,
- "I - Gezeichnetes Kapital": {
- "account_type": "Equity",
- "is_group": 1,
- "Gezeichnetes Kapital": {
- "account_type": "Equity",
- "account_number": "2900"
- },
- "Ausstehende Einlagen auf das gezeichnete Kapital": {
- "account_number": "2910",
- "is_group": 1
- }
- },
- "II - Kapitalr\u00fccklage": {
- "account_type": "Equity",
- "is_group": 1,
- "Kapitalr\u00fccklage": {
- "account_number": "2920"
- }
- },
- "III - Gewinnr\u00fccklagen": {
- "account_type": "Equity",
- "1 - gesetzliche R\u00fccklage": {
- "account_type": "Equity",
- "is_group": 1,
- "Gesetzliche R\u00fccklage": {
- "account_number": "2930"
- }
- },
- "2 - R\u00fccklage f. Anteile an einem herrschenden oder mehrheitlich beteiligten Unternehmen": {
- "account_type": "Equity",
- "is_group": 1
- },
- "3 - satzungsm\u00e4\u00dfige R\u00fccklagen": {
- "account_type": "Equity",
- "is_group": 1,
- "Satzungsm\u00e4\u00dfige R\u00fccklagen": {
- "account_number": "2950"
- }
- },
- "4 - andere Gewinnr\u00fccklagen": {
- "account_type": "Equity",
- "is_group": 1,
- "Gewinnr\u00fccklagen aus den \u00dcbergangsvorschriften BilMoG": {
- "is_group": 1,
- "Gewinnr\u00fccklagen (BilMoG)": {
- "account_number": "2963"
- },
- "Gewinnr\u00fccklagen aus Zuschreibung Sachanlageverm\u00f6gen (BilMoG)": {
- "account_number": "2964"
- },
- "Gewinnr\u00fccklagen aus Zuschreibung Finanzanlageverm\u00f6gen (BilMoG)": {
- "account_number": "2965"
- },
- "Gewinnr\u00fccklagen aus Aufl\u00f6sung der Sonderposten mit R\u00fccklageanteil (BilMoG)": {
- "account_number": "2966"
- }
- },
- "Latente Steuern (Gewinnr\u00fccklage Haben) aus erfolgsneutralen Verrechnungen": {
- "account_number": "2967"
- },
- "Latente Steuern (Gewinnr\u00fccklage Soll) aus erfolgsneutralen Verrechnungen": {
- "account_number": "2968"
- },
- "Rechnungsabgrenzungsposten (Gewinnr\u00fccklage Soll) aus erfolgsneutralen Verrechnungen": {
- "account_number": "2969"
- }
- },
- "is_group": 1
- },
- "IV - Gewinnvortrag/Verlustvortrag": {
- "account_type": "Equity",
- "is_group": 1,
- "Gewinnvortrag vor Verwendung": {
- "account_number": "2970"
- },
- "Verlustvortrag vor Verwendung": {
- "account_number": "2978"
- }
- },
- "V - Jahres\u00fcberschu\u00df/Jahresfehlbetrag": {
- "account_type": "Equity",
- "is_group": 1
- },
- "Einlagen stiller Gesellschafter": {
- "account_number": "9295"
- }
- },
"B - R\u00fcckstellungen": {
"is_group": 1,
"1 - R\u00fcckstellungen f. Pensionen und \u00e4hnliche Verplicht.": {
@@ -1618,6 +1528,143 @@
},
"is_group": 1
},
+ "Passiva - Eigenkapital": {
+ "root_type": "Equity",
+ "A - Eigenkapital": {
+ "account_type": "Equity",
+ "is_group": 1,
+ "I - Gezeichnetes Kapital": {
+ "account_type": "Equity",
+ "is_group": 1,
+ "Gezeichnetes Kapital": {
+ "account_number": "2900",
+ "account_type": "Equity"
+ },
+ "Gesch\u00e4ftsguthaben der verbleibenden Mitglieder": {
+ "account_number": "2901"
+ },
+ "Gesch\u00e4ftsguthaben der ausscheidenden Mitglieder": {
+ "account_number": "2902"
+ },
+ "Gesch\u00e4ftsguthaben aus gek\u00fcndigten Gesch\u00e4ftsanteilen": {
+ "account_number": "2903"
+ },
+ "R\u00fcckst\u00e4ndige f\u00e4llige Einzahlungen auf Gesch\u00e4ftsanteile, vermerkt": {
+ "account_number": "2906"
+ },
+ "Gegenkonto R\u00fcckst\u00e4ndige f\u00e4llige Einzahlungen auf Gesch\u00e4ftsanteile, vermerkt": {
+ "account_number": "2907"
+ },
+ "Kapitalerh\u00f6hung aus Gesellschaftsmitteln": {
+ "account_number": "2908"
+ },
+ "Ausstehende Einlagen auf das gezeichnete Kapital, nicht eingefordert": {
+ "account_number": "2910"
+ }
+ },
+ "II - Kapitalr\u00fccklage": {
+ "account_type": "Equity",
+ "is_group": 1,
+ "Kapitalr\u00fccklage": {
+ "account_number": "2920"
+ },
+ "Kapitalr\u00fccklage durch Ausgabe von Anteilen \u00fcber Nennbetrag": {
+ "account_number": "2925"
+ },
+ "Kapitalr\u00fccklage durch Ausgabe von Schuldverschreibungen": {
+ "account_number": "2926"
+ },
+ "Kapitalr\u00fccklage durch Zuzahlungen gegen Gew\u00e4hrung eines Vorzugs": {
+ "account_number": "2927"
+ },
+ "Kapitalr\u00fccklage durch Zuzahlungen in das Eigenkapital": {
+ "account_number": "2928"
+ },
+ "Nachschusskapital (Gegenkonto 1299)": {
+ "account_number": "2929"
+ }
+ },
+ "III - Gewinnr\u00fccklagen": {
+ "account_type": "Equity",
+ "1 - gesetzliche R\u00fccklage": {
+ "account_type": "Equity",
+ "is_group": 1,
+ "Gesetzliche R\u00fccklage": {
+ "account_number": "2930"
+ }
+ },
+ "2 - R\u00fccklage f. Anteile an einem herrschenden oder mehrheitlich beteiligten Unternehmen": {
+ "account_type": "Equity",
+ "is_group": 1,
+ "R\u00fccklage f. Anteile an einem herrschenden oder mehrheitlich beteiligten Unternehmen": {
+ "account_number": "2935"
+ }
+ },
+ "3 - satzungsm\u00e4\u00dfige R\u00fccklagen": {
+ "account_type": "Equity",
+ "is_group": 1,
+ "Satzungsm\u00e4\u00dfige R\u00fccklagen": {
+ "account_number": "2950"
+ }
+ },
+ "4 - andere Gewinnr\u00fccklagen": {
+ "account_type": "Equity",
+ "is_group": 1,
+ "Andere Gewinnr\u00fccklagen": {
+ "account_number": "2960"
+ },
+ "Andere Gewinnr\u00fccklagen aus dem Erwerb eigener Anteile": {
+ "account_number": "2961"
+ },
+ "Eigenkapitalanteil von Wertaufholungen": {
+ "account_number": "2962"
+ },
+ "Gewinnr\u00fccklagen aus den \u00dcbergangsvorschriften BilMoG": {
+ "is_group": 1,
+ "Gewinnr\u00fccklagen (BilMoG)": {
+ "account_number": "2963"
+ },
+ "Gewinnr\u00fccklagen aus Zuschreibung Sachanlageverm\u00f6gen (BilMoG)": {
+ "account_number": "2964"
+ },
+ "Gewinnr\u00fccklagen aus Zuschreibung Finanzanlageverm\u00f6gen (BilMoG)": {
+ "account_number": "2965"
+ },
+ "Gewinnr\u00fccklagen aus Aufl\u00f6sung der Sonderposten mit R\u00fccklageanteil (BilMoG)": {
+ "account_number": "2966"
+ }
+ },
+ "Latente Steuern (Gewinnr\u00fccklage Haben) aus erfolgsneutralen Verrechnungen": {
+ "account_number": "2967"
+ },
+ "Latente Steuern (Gewinnr\u00fccklage Soll) aus erfolgsneutralen Verrechnungen": {
+ "account_number": "2968"
+ },
+ "Rechnungsabgrenzungsposten (Gewinnr\u00fccklage Soll) aus erfolgsneutralen Verrechnungen": {
+ "account_number": "2969"
+ }
+ },
+ "is_group": 1
+ },
+ "IV - Gewinnvortrag/Verlustvortrag": {
+ "account_type": "Equity",
+ "is_group": 1,
+ "Gewinnvortrag vor Verwendung": {
+ "account_number": "2970"
+ },
+ "Verlustvortrag vor Verwendung": {
+ "account_number": "2978"
+ }
+ },
+ "V - Jahres\u00fcberschu\u00df/Jahresfehlbetrag": {
+ "account_type": "Equity",
+ "is_group": 1
+ },
+ "Einlagen stiller Gesellschafter": {
+ "account_number": "9295"
+ }
+ }
+ },
"1 - Umsatzerl\u00f6se": {
"root_type": "Income",
"is_group": 1,
diff --git a/erpnext/crm/doctype/appointment/appointment.py b/erpnext/crm/doctype/appointment/appointment.py
index 63efeb3..2009ebf 100644
--- a/erpnext/crm/doctype/appointment/appointment.py
+++ b/erpnext/crm/doctype/appointment/appointment.py
@@ -126,7 +126,7 @@
add_assignemnt({
'doctype': self.doctype,
'name': self.name,
- 'assign_to': existing_assignee
+ 'assign_to': [existing_assignee]
})
return
if self._assign:
@@ -139,7 +139,7 @@
add_assignemnt({
'doctype': self.doctype,
'name': self.name,
- 'assign_to': agent
+ 'assign_to': [agent]
})
break
diff --git a/erpnext/manufacturing/doctype/job_card/job_card_calendar.js b/erpnext/manufacturing/doctype/job_card/job_card_calendar.js
index cf07698..f4877fd 100644
--- a/erpnext/manufacturing/doctype/job_card/job_card_calendar.js
+++ b/erpnext/manufacturing/doctype/job_card/job_card_calendar.js
@@ -8,7 +8,17 @@
"allDay": "allDay",
"progress": "progress"
},
- gantt: true,
+ gantt: {
+ field_map: {
+ "start": "started_time",
+ "end": "started_time",
+ "id": "name",
+ "title": "subject",
+ "color": "color",
+ "allDay": "allDay",
+ "progress": "progress"
+ }
+ },
filters: [
{
"fieldtype": "Link",
diff --git a/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js b/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js
index 8cd0164..7beecac 100644
--- a/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js
+++ b/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js
@@ -27,9 +27,9 @@
value = default_formatter(value, row, column, data);
if (column.id == "item") {
if (data["enough_parts_to_build"] > 0) {
- value = `<a style='color:green' href="#Form/Item/${data['item']}" data-doctype="Item">${data['item']}</a>`;
+ value = `<a style='color:green' href="/app/item/${data['item']}" data-doctype="Item">${data['item']}</a>`;
} else {
- value = `<a style='color:red' href="#Form/Item/${data['item']}" data-doctype="Item">${data['item']}</a>`;
+ value = `<a style='color:red' href="/app/item/${data['item']}" data-doctype="Item">${data['item']}</a>`;
}
}
return value
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index e80bd64..a597b49 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -450,7 +450,6 @@
erpnext.patches.v9_0.add_user_to_child_table_in_pos_profile
erpnext.patches.v9_0.set_schedule_date_for_material_request_and_purchase_order
erpnext.patches.v9_0.student_admission_childtable_migrate
-erpnext.patches.v9_0.fix_subscription_next_date #2017-10-23
erpnext.patches.v9_0.add_healthcare_domain
erpnext.patches.v9_0.set_variant_item_description
erpnext.patches.v9_0.set_uoms_in_variant_field
diff --git a/erpnext/patches/v9_0/fix_subscription_next_date.py b/erpnext/patches/v9_0/fix_subscription_next_date.py
deleted file mode 100644
index 4595c8d..0000000
--- a/erpnext/patches/v9_0/fix_subscription_next_date.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (c) 2017, Frappe and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe.utils import getdate
-from frappe.automation.doctype.auto_repeat.auto_repeat import get_next_schedule_date
-
-def execute():
- frappe.reload_doc('accounts', 'doctype', 'subscription')
- fields = ["name", "reference_doctype", "reference_document",
- "start_date", "frequency", "repeat_on_day"]
-
- for d in fields:
- if not frappe.db.has_column('Subscription', d):
- return
-
- doctypes = ('Purchase Order', 'Sales Order', 'Purchase Invoice', 'Sales Invoice')
- for data in frappe.get_all('Subscription',
- fields = fields,
- filters = {'reference_doctype': ('in', doctypes), 'docstatus': 1}):
-
- recurring_id = frappe.db.get_value(data.reference_doctype, data.reference_document, "recurring_id")
- if recurring_id:
- frappe.db.sql("update `tab{0}` set subscription=%s where recurring_id=%s"
- .format(data.reference_doctype), (data.name, recurring_id))
-
- date_field = 'transaction_date'
- if data.reference_doctype in ['Sales Invoice', 'Purchase Invoice']:
- date_field = 'posting_date'
-
- start_date = frappe.db.get_value(data.reference_doctype, data.reference_document, date_field)
-
- if start_date and getdate(start_date) != getdate(data.start_date):
- last_ref_date = frappe.db.sql("""
- select {0}
- from `tab{1}`
- where subscription=%s and docstatus < 2
- order by creation desc
- limit 1
- """.format(date_field, data.reference_doctype), data.name)[0][0]
-
- next_schedule_date = get_next_schedule_date(last_ref_date, data.frequency, data.repeat_on_day)
-
- frappe.db.set_value("Subscription", data.name, {
- "start_date": start_date,
- "next_schedule_date": next_schedule_date
- }, None)
\ No newline at end of file
diff --git a/erpnext/public/js/help_links.js b/erpnext/public/js/help_links.js
index 66ff464..a436cac 100644
--- a/erpnext/public/js/help_links.js
+++ b/erpnext/public/js/help_links.js
@@ -2,13 +2,13 @@
const docsUrl = 'https://erpnext.com/docs/';
-frappe.help.help_links['Form/Rename Tool'] = [
+frappe.help.help_links['rename tool'] = [
{ label: 'Bulk Rename', url: docsUrl + 'user/manual/en/setting-up/data/bulk-rename' },
]
//Setup
-frappe.help.help_links['List/User'] = [
+frappe.help.help_links['user'] = [
{ label: 'New User', url: docsUrl + 'user/manual/en/setting-up/users-and-permissions/adding-users' },
{ label: 'Rename User', url: docsUrl + 'user/manual/en/setting-up/articles/rename-user' },
]
@@ -21,7 +21,7 @@
{ label: 'Password', url: docsUrl + 'user/manual/en/setting-up/articles/change-password' },
]
-frappe.help.help_links['Form/System Settings'] = [
+frappe.help.help_links['system-settings'] = [
{ label: 'Naming Series', url: docsUrl + 'user/manual/en/setting-up/settings/system-settings' },
]
@@ -30,64 +30,60 @@
{ label: 'Overwriting Data from Data Import Tool', url: docsUrl + 'user/manual/en/setting-up/articles/overwriting-data-from-data-import-tool' },
]
-frappe.help.help_links['module_setup'] = [
- { label: 'Role Permissions Manager', url: docsUrl + 'user/manual/en/setting-up/users-and-permissions/role-based-permissions' },
-]
-
-frappe.help.help_links['Form/Naming Series'] = [
+frappe.help.help_links['naming-series'] = [
{ label: 'Naming Series', url: docsUrl + 'user/manual/en/setting-up/settings/naming-series' },
{ label: 'Setting the Current Value for Naming Series', url: docsUrl + 'user/manual/en/setting-up/articles/naming-series-current-value' },
]
-frappe.help.help_links['Form/Global Defaults'] = [
+frappe.help.help_links['global-defaults'] = [
{ label: 'Global Settings', url: docsUrl + 'user/manual/en/setting-up/settings/global-defaults' },
]
-frappe.help.help_links['Form/Email Digest'] = [
+frappe.help.help_links['email-digest'] = [
{ label: 'Email Digest', url: docsUrl + 'user/manual/en/setting-up/email/email-digest' },
]
-frappe.help.help_links['List/Print Heading'] = [
+frappe.help.help_links['print-heading'] = [
{ label: 'Print Heading', url: docsUrl + 'user/manual/en/setting-up/print/print-headings' },
]
-frappe.help.help_links['List/Letter Head'] = [
+frappe.help.help_links['letter-head'] = [
{ label: 'Letter Head', url: docsUrl + 'user/manual/en/setting-up/print/letter-head' },
]
-frappe.help.help_links['List/Address Template'] = [
+frappe.help.help_links['address-template'] = [
{ label: 'Address Template', url: docsUrl + 'user/manual/en/setting-up/print/address-template' },
]
-frappe.help.help_links['List/Terms and Conditions'] = [
+frappe.help.help_links['terms-and-conditions'] = [
{ label: 'Terms and Conditions', url: docsUrl + 'user/manual/en/setting-up/print/terms-and-conditions' },
]
-frappe.help.help_links['List/Cheque Print Template'] = [
+frappe.help.help_links['cheque-print-template'] = [
{ label: 'Cheque Print Template', url: docsUrl + 'user/manual/en/setting-up/print/cheque-print-template' },
]
-frappe.help.help_links['List/Email Account'] = [
+frappe.help.help_links['email-account'] = [
{ label: 'Email Account', url: docsUrl + 'user/manual/en/setting-up/email/email-account' },
]
-frappe.help.help_links['List/Notification'] = [
+frappe.help.help_links['notification'] = [
{ label: 'Notification', url: docsUrl + 'user/manual/en/setting-up/email/notifications' },
]
-frappe.help.help_links['Form/Notification'] = [
+frappe.help.help_links['notification'] = [
{ label: 'Notification', url: docsUrl + 'user/manual/en/setting-up/email/notifications' },
]
-frappe.help.help_links['List/Email Digest'] = [
+frappe.help.help_links['email-digest'] = [
{ label: 'Email Digest', url: docsUrl + 'user/manual/en/setting-up/email/email-digest' },
]
-frappe.help.help_links['List/Auto Email Report'] = [
+frappe.help.help_links['auto-email-report'] = [
{ label: 'Auto Email Reports', url: docsUrl + 'user/manual/en/setting-up/email/email-reports' },
]
-frappe.help.help_links['Form/Print Settings'] = [
+frappe.help.help_links['print-settings'] = [
{ label: 'Print Settings', url: docsUrl + 'user/manual/en/setting-up/print/print-settings' },
]
@@ -95,66 +91,60 @@
{ label: 'Print Format Builder', url: docsUrl + 'user/manual/en/setting-up/print/print-settings' },
]
-frappe.help.help_links['List/Print Heading'] = [
+frappe.help.help_links['print-heading'] = [
{ label: 'Print Heading', url: docsUrl + 'user/manual/en/setting-up/print/print-headings' },
]
//setup-integrations
-frappe.help.help_links['Form/PayPal Settings'] = [
+frappe.help.help_links['paypal-settings'] = [
{ label: 'PayPal Settings', url: docsUrl + 'user/manual/en/setting-up/integrations/paypal-integration' },
]
-frappe.help.help_links['Form/Razorpay Settings'] = [
+frappe.help.help_links['razorpay-settings'] = [
{ label: 'Razorpay Settings', url: docsUrl + 'user/manual/en/setting-up/integrations/razorpay-integration' },
]
-frappe.help.help_links['Form/Dropbox Settings'] = [
+frappe.help.help_links['dropbox-settings'] = [
{ label: 'Dropbox Settings', url: docsUrl + 'user/manual/en/setting-up/integrations/dropbox-backup' },
]
-frappe.help.help_links['Form/LDAP Settings'] = [
+frappe.help.help_links['ldap-settings'] = [
{ label: 'LDAP Settings', url: docsUrl + 'user/manual/en/setting-up/integrations/ldap-integration' },
]
-frappe.help.help_links['Form/Stripe Settings'] = [
+frappe.help.help_links['stripe-settings'] = [
{ label: 'Stripe Settings', url: docsUrl + 'user/manual/en/setting-up/integrations/stripe-integration' },
]
//Sales
-frappe.help.help_links['Form/Quotation'] = [
+frappe.help.help_links['quotation'] = [
{ label: 'Quotation', url: docsUrl + 'user/manual/en/selling/quotation' },
{ label: 'Applying Discount', url: docsUrl + 'user/manual/en/selling/articles/applying-discount' },
{ label: 'Sales Person', url: docsUrl + 'user/manual/en/selling/articles/sales-persons-in-the-sales-transactions' },
{ label: 'Applying Margin', url: docsUrl + 'user/manual/en/selling/articles/adding-margin' },
]
-frappe.help.help_links['List/Customer'] = [
+frappe.help.help_links['customer'] = [
{ label: 'Customer', url: docsUrl + 'user/manual/en/CRM/customer' },
{ label: 'Credit Limit', url: docsUrl + 'user/manual/en/accounts/credit-limit' },
]
-frappe.help.help_links['Form/Customer'] = [
+frappe.help.help_links['customer'] = [
{ label: 'Customer', url: docsUrl + 'user/manual/en/CRM/customer' },
{ label: 'Credit Limit', url: docsUrl + 'user/manual/en/accounts/credit-limit' },
]
-frappe.help.help_links['List/Sales Taxes and Charges Template'] = [
+frappe.help.help_links['sales-taxes-and-charges-template'] = [
{ label: 'Setting Up Taxes', url: docsUrl + 'user/manual/en/setting-up/setting-up-taxes' },
]
-frappe.help.help_links['Form/Sales Taxes and Charges Template'] = [
+frappe.help.help_links['sales-taxes-and-charges-template'] = [
{ label: 'Setting Up Taxes', url: docsUrl + 'user/manual/en/setting-up/setting-up-taxes' },
]
-frappe.help.help_links['List/Sales Order'] = [
- { label: 'Sales Order', url: docsUrl + 'user/manual/en/selling/sales-order' },
- { label: 'Recurring Sales Order', url: docsUrl + 'user/manual/en/accounts/recurring-orders-and-invoices' },
- { label: 'Applying Discount', url: docsUrl + 'user/manual/en/selling/articles/applying-discount' },
-]
-
-frappe.help.help_links['Form/Sales Order'] = [
+frappe.help.help_links['sales-order'] = [
{ label: 'Sales Order', url: docsUrl + 'user/manual/en/selling/sales-order' },
{ label: 'Recurring Sales Order', url: docsUrl + 'user/manual/en/accounts/recurring-orders-and-invoices' },
{ label: 'Applying Discount', url: docsUrl + 'user/manual/en/selling/articles/applying-discount' },
@@ -164,43 +154,34 @@
{ label: 'Applying Margin', url: docsUrl + 'user/manual/en/selling/articles/adding-margin' },
]
-frappe.help.help_links['Form/Product Bundle'] = [
+frappe.help.help_links['product-bundle'] = [
{ label: 'Product Bundle', url: docsUrl + 'user/manual/en/selling/setup/product-bundle' },
]
-frappe.help.help_links['Form/Selling Settings'] = [
+frappe.help.help_links['selling-settings'] = [
{ label: 'Selling Settings', url: docsUrl + 'user/manual/en/selling/setup/selling-settings' },
]
//Buying
-frappe.help.help_links['List/Supplier'] = [
+frappe.help.help_links['supplier'] = [
{ label: 'Supplier', url: docsUrl + 'user/manual/en/buying/supplier' },
]
-frappe.help.help_links['Form/Supplier'] = [
- { label: 'Supplier', url: docsUrl + 'user/manual/en/buying/supplier' },
-]
-
-frappe.help.help_links['Form/Request for Quotation'] = [
+frappe.help.help_links['request-for-quotation'] = [
{ label: 'Request for Quotation', url: docsUrl + 'user/manual/en/buying/request-for-quotation' },
{ label: 'RFQ Video', url: docsUrl + 'user/videos/learn/request-for-quotation.html' },
]
-frappe.help.help_links['Form/Supplier Quotation'] = [
+frappe.help.help_links['supplier-quotation'] = [
{ label: 'Supplier Quotation', url: docsUrl + 'user/manual/en/buying/supplier-quotation' },
]
-frappe.help.help_links['Form/Buying Settings'] = [
+frappe.help.help_links['buying-settings'] = [
{ label: 'Buying Settings', url: docsUrl + 'user/manual/en/buying/setup/buying-settings' },
]
-frappe.help.help_links['List/Purchase Order'] = [
- { label: 'Purchase Order', url: docsUrl + 'user/manual/en/buying/purchase-order' },
- { label: 'Recurring Purchase Order', url: docsUrl + 'user/manual/en/accounts/recurring-orders-and-invoices' },
-]
-
-frappe.help.help_links['Form/Purchase Order'] = [
+frappe.help.help_links['purchase-order'] = [
{ label: 'Purchase Order', url: docsUrl + 'user/manual/en/buying/purchase-order' },
{ label: 'Item UoM', url: docsUrl + 'user/manual/en/buying/articles/purchasing-in-different-unit' },
{ label: 'Supplier Item Code', url: docsUrl + 'user/manual/en/buying/articles/maintaining-suppliers-part-no-in-item' },
@@ -208,44 +189,44 @@
{ label: 'Subcontracting', url: docsUrl + 'user/manual/en/manufacturing/subcontracting' },
]
-frappe.help.help_links['List/Purchase Taxes and Charges Template'] = [
+frappe.help.help_links['purchase-taxes-and-charges-template'] = [
{ label: 'Setting Up Taxes', url: docsUrl + 'user/manual/en/setting-up/setting-up-taxes' },
]
-frappe.help.help_links['List/POS Profile'] = [
+frappe.help.help_links['pos-profile'] = [
{ label: 'POS Profile', url: docsUrl + 'user/manual/en/setting-up/pos-setting' },
]
-frappe.help.help_links['List/Price List'] = [
+frappe.help.help_links['price-list'] = [
{ label: 'Price List', url: docsUrl + 'user/manual/en/setting-up/price-lists' },
]
-frappe.help.help_links['List/Authorization Rule'] = [
+frappe.help.help_links['authorization-rule'] = [
{ label: 'Authorization Rule', url: docsUrl + 'user/manual/en/setting-up/authorization-rule' },
]
-frappe.help.help_links['Form/SMS Settings'] = [
+frappe.help.help_links['sms-settings'] = [
{ label: 'SMS Settings', url: docsUrl + 'user/manual/en/setting-up/sms-setting' },
]
-frappe.help.help_links['List/Stock Reconciliation'] = [
+frappe.help.help_links['stock-reconciliation'] = [
{ label: 'Stock Reconciliation', url: docsUrl + 'user/manual/en/setting-up/stock-reconciliation-for-non-serialized-item' },
]
-frappe.help.help_links['Tree/Territory'] = [
+frappe.help.help_links['territory/view/tree'] = [
{ label: 'Territory', url: docsUrl + 'user/manual/en/setting-up/territory' },
]
-frappe.help.help_links['Form/Dropbox Backup'] = [
+frappe.help.help_links['dropbox-backup'] = [
{ label: 'Dropbox Backup', url: docsUrl + 'user/manual/en/setting-up/third-party-backups' },
{ label: 'Setting Up Dropbox Backup', url: docsUrl + 'user/manual/en/setting-up/articles/setting-up-dropbox-backups' },
]
-frappe.help.help_links['List/Workflow'] = [
+frappe.help.help_links['workflow'] = [
{ label: 'Workflow', url: docsUrl + 'user/manual/en/setting-up/workflows' },
]
-frappe.help.help_links['List/Company'] = [
+frappe.help.help_links['company'] = [
{ label: 'Company', url: docsUrl + 'user/manual/en/setting-up/company-setup' },
{ label: 'Managing Multiple Companies', url: docsUrl + 'user/manual/en/setting-up/articles/managing-multiple-companies' },
{ label: 'Delete All Related Transactions for a Company', url: docsUrl + 'user/manual/en/setting-up/articles/delete-a-company-and-all-related-transactions' },
@@ -253,25 +234,25 @@
//Accounts
-frappe.help.help_links['modules/Accounts'] = [
+frappe.help.help_links['space/Accounts'] = [
{ label: 'Introduction to Accounts', url: docsUrl + 'user/manual/en/accounts/' },
{ label: 'Chart of Accounts', url: docsUrl + 'user/manual/en/accounts/chart-of-accounts.html' },
{ label: 'Multi Currency Accounting', url: docsUrl + 'user/manual/en/accounts/multi-currency-accounting' },
]
-frappe.help.help_links['Tree/Account'] = [
+frappe.help.help_links['account/view/tree'] = [
{ label: 'Chart of Accounts', url: docsUrl + 'user/manual/en/accounts/chart-of-accounts' },
{ label: 'Managing Tree Mastes', url: docsUrl + 'user/manual/en/setting-up/articles/managing-tree-structure-masters' },
]
-frappe.help.help_links['Form/Sales Invoice'] = [
+frappe.help.help_links['sales-invoice'] = [
{ label: 'Sales Invoice', url: docsUrl + 'user/manual/en/accounts/sales-invoice' },
{ label: 'Accounts Opening Balance', url: docsUrl + 'user/manual/en/accounts/opening-accounts' },
{ label: 'Sales Return', url: docsUrl + 'user/manual/en/stock/sales-return' },
{ label: 'Recurring Sales Invoice', url: docsUrl + 'user/manual/en/accounts/recurring-orders-and-invoices' },
]
-frappe.help.help_links['List/Sales Invoice'] = [
+frappe.help.help_links['sales-invoice'] = [
{ label: 'Sales Invoice', url: docsUrl + 'user/manual/en/accounts/sales-invoice' },
{ label: 'Accounts Opening Balance', url: docsUrl + 'user/manual/en/accounts/opening-accounts' },
{ label: 'Sales Return', url: docsUrl + 'user/manual/en/stock/sales-return' },
@@ -282,43 +263,43 @@
{ label: 'Point of Sale Invoice', url: docsUrl + 'user/manual/en/accounts/point-of-sale-pos-invoice' },
]
-frappe.help.help_links['List/POS Profile'] = [
+frappe.help.help_links['pos-profile'] = [
{ label: 'Point of Sale Profile', url: docsUrl + 'user/manual/en/setting-up/pos-setting' },
]
-frappe.help.help_links['List/Purchase Invoice'] = [
+frappe.help.help_links['purchase-invoice'] = [
{ label: 'Purchase Invoice', url: docsUrl + 'user/manual/en/accounts/purchase-invoice' },
{ label: 'Accounts Opening Balance', url: docsUrl + 'user/manual/en/accounts/opening-accounts' },
{ label: 'Recurring Purchase Invoice', url: docsUrl + 'user/manual/en/accounts/recurring-orders-and-invoices' },
]
-frappe.help.help_links['List/Journal Entry'] = [
+frappe.help.help_links['journal-entry'] = [
{ label: 'Journal Entry', url: docsUrl + 'user/manual/en/accounts/journal-entry' },
{ label: 'Advance Payment Entry', url: docsUrl + 'user/manual/en/accounts/advance-payment-entry' },
{ label: 'Accounts Opening Balance', url: docsUrl + 'user/manual/en/accounts/opening-accounts' },
]
-frappe.help.help_links['List/Payment Entry'] = [
+frappe.help.help_links['payment-entry'] = [
{ label: 'Payment Entry', url: docsUrl + 'user/manual/en/accounts/payment-entry' },
]
-frappe.help.help_links['List/Payment Request'] = [
+frappe.help.help_links['payment-request'] = [
{ label: 'Payment Request', url: docsUrl + 'user/manual/en/accounts/payment-request' },
]
-frappe.help.help_links['List/Asset'] = [
+frappe.help.help_links['asset'] = [
{ label: 'Managing Fixed Assets', url: docsUrl + 'user/manual/en/accounts/managing-fixed-assets' },
]
-frappe.help.help_links['List/Asset Category'] = [
+frappe.help.help_links['asset-category'] = [
{ label: 'Asset Category', url: docsUrl + 'user/manual/en/accounts/managing-fixed-assets' },
]
-frappe.help.help_links['Tree/Cost Center'] = [
+frappe.help.help_links['cost-center/view/tree'] = [
{ label: 'Budgeting', url: docsUrl + 'user/manual/en/accounts/budgeting' },
]
-frappe.help.help_links['List/Item'] = [
+frappe.help.help_links['item'] = [
{ label: 'Item', url: docsUrl + 'user/manual/en/stock/item' },
{ label: 'Item Price', url: docsUrl + 'user/manual/en/stock/item/item-price' },
{ label: 'Barcode', url: docsUrl + 'user/manual/en/stock/articles/track-items-using-barcode' },
@@ -329,61 +310,42 @@
{ label: 'Item Valuation', url: docsUrl + 'user/manual/en/stock/item/item-valuation-fifo-and-moving-average' },
]
-frappe.help.help_links['Form/Item'] = [
- { label: 'Item', url: docsUrl + 'user/manual/en/stock/item' },
- { label: 'Item Price', url: docsUrl + 'user/manual/en/stock/item/item-price' },
- { label: 'Barcode', url: docsUrl + 'user/manual/en/stock/articles/track-items-using-barcode' },
- { label: 'Item Wise Taxation', url: docsUrl + 'user/manual/en/accounts/item-wise-taxation' },
- { label: 'Managing Fixed Assets', url: docsUrl + 'user/manual/en/accounts/managing-fixed-assets' },
- { label: 'Item Codification', url: docsUrl + 'user/manual/en/stock/item/item-codification' },
- { label: 'Item Variants', url: docsUrl + 'user/manual/en/stock/item/item-variants' },
- { label: 'Item Valuation', url: docsUrl + 'user/manual/en/stock/item/item-valuation-fifo-and-moving-average' },
-]
-
-frappe.help.help_links['List/Purchase Receipt'] = [
+frappe.help.help_links['purchase-receipt'] = [
{ label: 'Purchase Receipt', url: docsUrl + 'user/manual/en/stock/purchase-receipt' },
{ label: 'Barcode', url: docsUrl + 'user/manual/en/stock/articles/track-items-using-barcode' },
]
-frappe.help.help_links['List/Delivery Note'] = [
+frappe.help.help_links['delivery-note'] = [
{ label: 'Delivery Note', url: docsUrl + 'user/manual/en/stock/delivery-note' },
{ label: 'Barcode', url: docsUrl + 'user/manual/en/stock/articles/track-items-using-barcode' },
{ label: 'Sales Return', url: docsUrl + 'user/manual/en/stock/sales-return' },
]
-frappe.help.help_links['Form/Delivery Note'] = [
+frappe.help.help_links['delivery-note'] = [
{ label: 'Delivery Note', url: docsUrl + 'user/manual/en/stock/delivery-note' },
{ label: 'Sales Return', url: docsUrl + 'user/manual/en/stock/sales-return' },
{ label: 'Barcode', url: docsUrl + 'user/manual/en/stock/articles/track-items-using-barcode' },
{ label: 'Subcontracting', url: docsUrl + 'user/manual/en/manufacturing/subcontracting' },
]
-frappe.help.help_links['List/Installation Note'] = [
+frappe.help.help_links['installation-note'] = [
{ label: 'Installation Note', url: docsUrl + 'user/manual/en/stock/installation-note' },
]
-frappe.help.help_links['Tree'] = [
- { label: 'Managing Tree Structure Masters', url: docsUrl + 'user/manual/en/setting-up/articles/managing-tree-structure-masters' },
-]
-frappe.help.help_links['List/Budget'] = [
+frappe.help.help_links['budget'] = [
{ label: 'Budgeting', url: docsUrl + 'user/manual/en/accounts/budgeting' },
]
//Stock
-frappe.help.help_links['List/Material Request'] = [
+frappe.help.help_links['material-request'] = [
{ label: 'Material Request', url: docsUrl + 'user/manual/en/stock/material-request' },
{ label: 'Auto-creation of Material Request', url: docsUrl + 'user/manual/en/stock/articles/auto-creation-of-material-request' },
]
-frappe.help.help_links['Form/Material Request'] = [
- { label: 'Material Request', url: docsUrl + 'user/manual/en/stock/material-request' },
- { label: 'Auto-creation of Material Request', url: docsUrl + 'user/manual/en/stock/articles/auto-creation-of-material-request' },
-]
-
-frappe.help.help_links['Form/Stock Entry'] = [
+frappe.help.help_links['stock-entry'] = [
{ label: 'Stock Entry', url: docsUrl + 'user/manual/en/stock/stock-entry' },
{ label: 'Stock Entry Types', url: docsUrl + 'user/manual/en/stock/articles/stock-entry-purpose' },
{ label: 'Repack Entry', url: docsUrl + 'user/manual/en/stock/articles/repack-entry' },
@@ -391,136 +353,114 @@
{ label: 'Subcontracting', url: docsUrl + 'user/manual/en/manufacturing/subcontracting' },
]
-frappe.help.help_links['List/Stock Entry'] = [
- { label: 'Stock Entry', url: docsUrl + 'user/manual/en/stock/stock-entry' },
-]
-
-frappe.help.help_links['Tree/Warehouse'] = [
+frappe.help.help_links['warehouse/view/tree'] = [
{ label: 'Warehouse', url: docsUrl + 'user/manual/en/stock/warehouse' },
]
-frappe.help.help_links['List/Serial No'] = [
+frappe.help.help_links['serial-no'] = [
{ label: 'Serial No', url: docsUrl + 'user/manual/en/stock/serial-no' },
]
-frappe.help.help_links['Form/Serial No'] = [
- { label: 'Serial No', url: docsUrl + 'user/manual/en/stock/serial-no' },
-]
-
-frappe.help.help_links['Form/Batch'] = [
+frappe.help.help_links['batch'] = [
{ label: 'Batch', url: docsUrl + 'user/manual/en/stock/batch' },
]
-frappe.help.help_links['Form/Packing Slip'] = [
+frappe.help.help_links['packing-slip'] = [
{ label: 'Packing Slip', url: docsUrl + 'user/manual/en/stock/tools/packing-slip' },
]
-frappe.help.help_links['Form/Quality Inspection'] = [
+frappe.help.help_links['quality-inspection'] = [
{ label: 'Quality Inspection', url: docsUrl + 'user/manual/en/stock/tools/quality-inspection' },
]
-frappe.help.help_links['Form/Landed Cost Voucher'] = [
+frappe.help.help_links['landed-cost-voucher'] = [
{ label: 'Landed Cost Voucher', url: docsUrl + 'user/manual/en/stock/tools/landed-cost-voucher' },
]
-frappe.help.help_links['Tree/Item Group'] = [
+frappe.help.help_links['item-group/view/tree'] = [
{ label: 'Item Group', url: docsUrl + 'user/manual/en/stock/setup/item-group' },
]
-frappe.help.help_links['Form/Item Attribute'] = [
+frappe.help.help_links['item-attribute'] = [
{ label: 'Item Attribute', url: docsUrl + 'user/manual/en/stock/setup/item-attribute' },
]
-frappe.help.help_links['Form/UOM'] = [
+frappe.help.help_links['uom'] = [
{ label: 'Fractions in UOM', url: docsUrl + 'user/manual/en/stock/articles/managing-fractions-in-uom' },
]
-frappe.help.help_links['Form/Stock Reconciliation'] = [
+frappe.help.help_links['stock-reconciliation'] = [
{ label: 'Opening Stock Entry', url: docsUrl + 'user/manual/en/stock/opening-stock' },
]
//CRM
-frappe.help.help_links['Form/Lead'] = [
+frappe.help.help_links['lead'] = [
{ label: 'Lead', url: docsUrl + 'user/manual/en/CRM/lead' },
]
-frappe.help.help_links['Form/Opportunity'] = [
+frappe.help.help_links['opportunity'] = [
{ label: 'Opportunity', url: docsUrl + 'user/manual/en/CRM/opportunity' },
]
-frappe.help.help_links['Form/Address'] = [
+frappe.help.help_links['address'] = [
{ label: 'Address', url: docsUrl + 'user/manual/en/CRM/address' },
]
-frappe.help.help_links['Form/Contact'] = [
+frappe.help.help_links['contact'] = [
{ label: 'Contact', url: docsUrl + 'user/manual/en/CRM/contact' },
]
-frappe.help.help_links['Form/Newsletter'] = [
+frappe.help.help_links['newsletter'] = [
{ label: 'Newsletter', url: docsUrl + 'user/manual/en/CRM/newsletter' },
]
-frappe.help.help_links['Form/Campaign'] = [
+frappe.help.help_links['campaign'] = [
{ label: 'Campaign', url: docsUrl + 'user/manual/en/CRM/setup/campaign' },
]
-frappe.help.help_links['Tree/Sales Person'] = [
+frappe.help.help_links['sales-person/view/tree'] = [
{ label: 'Sales Person', url: docsUrl + 'user/manual/en/CRM/setup/sales-person' },
]
-frappe.help.help_links['Form/Sales Person'] = [
+frappe.help.help_links['sales-person'] = [
{ label: 'Sales Person Target', url: docsUrl + 'user/manual/en/selling/setup/sales-person-target-allocation' },
]
-//Support
-
-frappe.help.help_links['List/Feedback Trigger'] = [
- { label: 'Feedback Trigger', url: docsUrl + 'user/manual/en/setting-up/feedback/setting-up-feedback' },
-]
-
-frappe.help.help_links['List/Feedback Request'] = [
- { label: 'Feedback Request', url: docsUrl + 'user/manual/en/setting-up/feedback/submit-feedback' },
-]
-
-frappe.help.help_links['List/Feedback Request'] = [
- { label: 'Feedback Request', url: docsUrl + 'user/manual/en/setting-up/feedback/submit-feedback' },
-]
-
//Manufacturing
-frappe.help.help_links['Form/BOM'] = [
+frappe.help.help_links['bom'] = [
{ label: 'Bill of Material', url: docsUrl + 'user/manual/en/manufacturing/bill-of-materials' },
{ label: 'Nested BOM Structure', url: docsUrl + 'user/manual/en/manufacturing/articles/nested-bom-structure' },
]
-frappe.help.help_links['Form/Work Order'] = [
+frappe.help.help_links['work-order'] = [
{ label: 'Work Order', url: docsUrl + 'user/manual/en/manufacturing/work-order' },
]
-frappe.help.help_links['Form/Workstation'] = [
+frappe.help.help_links['workstation'] = [
{ label: 'Workstation', url: docsUrl + 'user/manual/en/manufacturing/workstation' },
]
-frappe.help.help_links['Form/Operation'] = [
+frappe.help.help_links['operation'] = [
{ label: 'Operation', url: docsUrl + 'user/manual/en/manufacturing/operation' },
]
-frappe.help.help_links['Form/BOM Update Tool'] = [
+frappe.help.help_links['bom-update-tool'] = [
{ label: 'BOM Update Tool', url: docsUrl + 'user/manual/en/manufacturing/tools/bom-update-tool' },
]
//Customize
-frappe.help.help_links['Form/Customize Form'] = [
+frappe.help.help_links['customize-form'] = [
{ label: 'Custom Field', url: docsUrl + 'user/manual/en/customize-erpnext/custom-field' },
{ label: 'Customize Field', url: docsUrl + 'user/manual/en/customize-erpnext/customize-form' },
]
-frappe.help.help_links['Form/Custom Field'] = [
+frappe.help.help_links['custom-field'] = [
{ label: 'Custom Field', url: docsUrl + 'user/manual/en/customize-erpnext/custom-field' },
]
-frappe.help.help_links['Form/Custom Field'] = [
+frappe.help.help_links['custom-field'] = [
{ label: 'Custom Field', url: docsUrl + 'user/manual/en/customize-erpnext/custom-field' },
]
diff --git a/erpnext/public/js/telephony.js b/erpnext/public/js/telephony.js
index f9caade..6cb1207 100644
--- a/erpnext/public/js/telephony.js
+++ b/erpnext/public/js/telephony.js
@@ -11,7 +11,7 @@
.append(`
<span class="phone-btn">
<a class="btn-open no-decoration" title="${__('Make a call')}">
- <i class="fa fa-phone"></i></a>
+ ${frappe.utils.icon('call')}
</span>
`)
.find('.phone-btn')
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index 1cb71ae..842566b 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -327,7 +327,7 @@
if(r.message) {
frappe.msgprint({
message: __('Work Orders Created: {0}', [r.message.map(function(d) {
- return repl('<a href="#Form/Work Order/%(name)s">%(name)s</a>', {name:d})
+ return repl('<a href="/app/work-order/%(name)s">%(name)s</a>', {name:d})
}).join(', ')]),
indicator: 'green'
})
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 04d85e5..9388e09 100755
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -14,7 +14,6 @@
from frappe.desk.notifications import clear_doctype_notifications
from frappe.contacts.doctype.address.address import get_company_address
from erpnext.controllers.selling_controller import SellingController
-from frappe.automation.doctype.auto_repeat.auto_repeat import get_next_schedule_date
from erpnext.selling.doctype.customer.customer import check_credit_limit
from erpnext.stock.doctype.item.item import get_item_defaults
from erpnext.setup.doctype.item_group.item_group import get_item_group_defaults
@@ -418,8 +417,7 @@
def on_recurring(self, reference_doc, auto_repeat_doc):
def _get_delivery_date(ref_doc_delivery_date, red_doc_transaction_date, transaction_date):
- delivery_date = get_next_schedule_date(ref_doc_delivery_date,
- auto_repeat_doc.frequency, auto_repeat_doc.start_date, cint(auto_repeat_doc.repeat_on_day))
+ delivery_date = auto_repeat_doc.get_next_schedule_date(schedule_date=ref_doc_delivery_date)
if delivery_date <= transaction_date:
delivery_date_diff = frappe.utils.date_diff(ref_doc_delivery_date, red_doc_transaction_date)
diff --git a/erpnext/stock/doctype/shipment/shipment.js b/erpnext/stock/doctype/shipment/shipment.js
index 5ccb7d2..7af16af 100644
--- a/erpnext/stock/doctype/shipment/shipment.js
+++ b/erpnext/stock/doctype/shipment/shipment.js
@@ -150,7 +150,9 @@
frm.set_value('pickup_contact_name', '');
frm.set_value('pickup_contact', '');
}
- frappe.throw(__("Email or Phone/Mobile of the Contact are mandatory to continue.") + "</br>" + __("Please set Email/Phone for the contact") + ` <a href='#Form/Contact/${contact_name}'>${contact_name}</a>`);
+ frappe.throw(__("Email or Phone/Mobile of the Contact are mandatory to continue.")
+ + "</br>" + __("Please set Email/Phone for the contact")
+ + ` <a href='/app/contact/${contact_name}'>${contact_name}</a>`);
}
let contact_display = r.message.contact_display;
if (r.message.contact_email) {
@@ -242,7 +244,9 @@
frm.set_value('pickup_company', '');
frm.set_value('pickup_contact', '');
}
- frappe.throw(__("Last Name, Email or Phone/Mobile of the user are mandatory to continue.") + "</br>" + __("Please first set Last Name, Email and Phone for the user") + ` <a href="#Form/User/${frappe.session.user}">${frappe.session.user}</a>`);
+ frappe.throw(__("Last Name, Email or Phone/Mobile of the user are mandatory to continue.") + "</br>"
+ + __("Please first set Last Name, Email and Phone for the user")
+ + ` <a href="/app/user/${frappe.session.user}">${frappe.session.user}</a>`);
}
let contact_display = r.full_name;
if (r.email) {