Merge pull request #5531 from saurabh6790/cheque_print_fixes
[fixes] set default values to cheque print and set background image o…
diff --git a/.travis.yml b/.travis.yml
index eac53fd..287fe2d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -25,7 +25,6 @@
- bench use test_site
- bench reinstall
- bench build
- - bench build-website
- bench start &
- sleep 10
- bench --verbose run-tests --driver Firefox
diff --git a/erpnext/controllers/website_list_for_contact.py b/erpnext/controllers/website_list_for_contact.py
index 6b514b2..30f9172 100644
--- a/erpnext/controllers/website_list_for_contact.py
+++ b/erpnext/controllers/website_list_for_contact.py
@@ -19,7 +19,7 @@
}
def get_transaction_list(doctype, txt=None, filters=None, limit_start=0, limit_page_length=20):
- from frappe.templates.pages.list import get_list
+ from frappe.www.list import get_list
user = frappe.session.user
key = None
diff --git a/erpnext/crm/doctype/opportunity/opportunity.py b/erpnext/crm/doctype/opportunity/opportunity.py
index b977e26..ad8eea6 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.py
+++ b/erpnext/crm/doctype/opportunity/opportunity.py
@@ -48,13 +48,16 @@
if not lead_name:
sender_name = get_fullname(self.contact_email)
if sender_name == self.contact_email:
- sender_name = None
-
- account = ''
- email_name = self.contact_email[0:self.contact_email.index('@')]
- email_split = email_name.split('.')
- for s in email_split:
- account = account + s.capitalize() + ' '
+ sender_name = None
+
+ account = _('Unknown')
+
+ if self.contact_email.index('@'):
+ email_name = self.contact_email[0:self.contact_email.index('@')]
+
+ email_split = email_name.split('.')
+ for s in email_split:
+ account = account + s.capitalize() + ' '
lead = frappe.get_doc({
"doctype": "Lead",
diff --git a/erpnext/docs/__init__.py b/erpnext/docs/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/__init__.py
diff --git a/erpnext/docs/assets/__init__.py b/erpnext/docs/assets/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/__init__.py
diff --git a/erpnext/docs/assets/img/__init__.py b/erpnext/docs/assets/img/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/__init__.py
diff --git a/erpnext/docs/assets/img/accounts/__init__.py b/erpnext/docs/assets/img/accounts/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/accounts/__init__.py
diff --git a/erpnext/docs/assets/img/accounts/multi-currency/__init__.py b/erpnext/docs/assets/img/accounts/multi-currency/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/accounts/multi-currency/__init__.py
diff --git a/erpnext/docs/assets/img/articles/__init__.py b/erpnext/docs/assets/img/articles/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/__init__.py
diff --git a/erpnext/docs/assets/img/buying/__init__.py b/erpnext/docs/assets/img/buying/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/buying/__init__.py
diff --git a/erpnext/docs/assets/img/crm/__init__.py b/erpnext/docs/assets/img/crm/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/crm/__init__.py
diff --git a/erpnext/docs/assets/img/customize/__init__.py b/erpnext/docs/assets/img/customize/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/customize/__init__.py
diff --git a/erpnext/docs/assets/img/human-resources/__init__.py b/erpnext/docs/assets/img/human-resources/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/human-resources/__init__.py
diff --git a/erpnext/docs/assets/img/manufacturing/__init__.py b/erpnext/docs/assets/img/manufacturing/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/manufacturing/__init__.py
diff --git a/erpnext/docs/assets/img/multilingual_print_format/__init__.py b/erpnext/docs/assets/img/multilingual_print_format/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/multilingual_print_format/__init__.py
diff --git a/erpnext/docs/assets/img/pos-setting/__init__.py b/erpnext/docs/assets/img/pos-setting/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/pos-setting/__init__.py
diff --git a/erpnext/docs/assets/img/price-list/__init__.py b/erpnext/docs/assets/img/price-list/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/price-list/__init__.py
diff --git a/erpnext/docs/assets/img/project/__init__.py b/erpnext/docs/assets/img/project/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/project/__init__.py
diff --git a/erpnext/docs/assets/img/selling/__init__.py b/erpnext/docs/assets/img/selling/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/selling/__init__.py
diff --git a/erpnext/docs/assets/img/setup-wizard/__init__.py b/erpnext/docs/assets/img/setup-wizard/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/setup-wizard/__init__.py
diff --git a/erpnext/docs/assets/img/setup/__init__.py b/erpnext/docs/assets/img/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/__init__.py
diff --git a/erpnext/docs/assets/img/setup/customize/__init__.py b/erpnext/docs/assets/img/setup/customize/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/customize/__init__.py
diff --git a/erpnext/docs/assets/img/setup/data-import/__init__.py b/erpnext/docs/assets/img/setup/data-import/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/data-import/__init__.py
diff --git a/erpnext/docs/assets/img/setup/data/__init__.py b/erpnext/docs/assets/img/setup/data/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/data/__init__.py
diff --git a/erpnext/docs/assets/img/setup/email/__init__.py b/erpnext/docs/assets/img/setup/email/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/email/__init__.py
diff --git a/erpnext/docs/assets/img/setup/print/__init__.py b/erpnext/docs/assets/img/setup/print/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/print/__init__.py
diff --git a/erpnext/docs/assets/img/setup/settings/__init__.py b/erpnext/docs/assets/img/setup/settings/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/settings/__init__.py
diff --git a/erpnext/docs/assets/img/setup/users/__init__.py b/erpnext/docs/assets/img/setup/users/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/users/__init__.py
diff --git a/erpnext/docs/assets/img/stock/__init__.py b/erpnext/docs/assets/img/stock/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/stock/__init__.py
diff --git a/erpnext/docs/assets/img/support/__init__.py b/erpnext/docs/assets/img/support/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/support/__init__.py
diff --git a/erpnext/docs/assets/img/taxes/__init__.py b/erpnext/docs/assets/img/taxes/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/taxes/__init__.py
diff --git a/erpnext/docs/assets/img/users-and-permissions/__init__.py b/erpnext/docs/assets/img/users-and-permissions/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/users-and-permissions/__init__.py
diff --git a/erpnext/docs/assets/img/videos/__init__.py b/erpnext/docs/assets/img/videos/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/videos/__init__.py
diff --git a/erpnext/docs/assets/img/website/__init__.py b/erpnext/docs/assets/img/website/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/img/website/__init__.py
diff --git a/erpnext/docs/assets/old_images/__init__.py b/erpnext/docs/assets/old_images/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/old_images/__init__.py
diff --git a/erpnext/docs/assets/old_images/erpnext/__init__.py b/erpnext/docs/assets/old_images/erpnext/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/assets/old_images/erpnext/__init__.py
diff --git a/erpnext/docs/user/__init__.py b/erpnext/docs/user/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/__init__.py
diff --git a/erpnext/docs/user/manual/__init__.py b/erpnext/docs/user/manual/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/__init__.py
diff --git a/erpnext/docs/user/manual/de/Beispiel/__init__.py b/erpnext/docs/user/manual/de/Beispiel/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/Beispiel/__init__.py
diff --git a/erpnext/docs/user/manual/de/CRM/__init__.py b/erpnext/docs/user/manual/de/CRM/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/CRM/__init__.py
diff --git a/erpnext/docs/user/manual/de/CRM/setup/__init__.py b/erpnext/docs/user/manual/de/CRM/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/CRM/setup/__init__.py
diff --git a/erpnext/docs/user/manual/de/__init__.py b/erpnext/docs/user/manual/de/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/__init__.py
diff --git a/erpnext/docs/user/manual/de/accounts/__init__.py b/erpnext/docs/user/manual/de/accounts/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/accounts/__init__.py
diff --git a/erpnext/docs/user/manual/de/accounts/setup/__init__.py b/erpnext/docs/user/manual/de/accounts/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/accounts/setup/__init__.py
diff --git a/erpnext/docs/user/manual/de/accounts/tools/__init__.py b/erpnext/docs/user/manual/de/accounts/tools/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/accounts/tools/__init__.py
diff --git a/erpnext/docs/user/manual/de/buying/__init__.py b/erpnext/docs/user/manual/de/buying/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/buying/__init__.py
diff --git a/erpnext/docs/user/manual/de/buying/setup/__init__.py b/erpnext/docs/user/manual/de/buying/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/buying/setup/__init__.py
diff --git a/erpnext/docs/user/manual/de/customer-portal/__init__.py b/erpnext/docs/user/manual/de/customer-portal/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/customer-portal/__init__.py
diff --git a/erpnext/docs/user/manual/de/customize-erpnext/__init__.py b/erpnext/docs/user/manual/de/customize-erpnext/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/customize-erpnext/__init__.py
diff --git a/erpnext/docs/user/manual/de/customize-erpnext/custom-scripts/__init__.py b/erpnext/docs/user/manual/de/customize-erpnext/custom-scripts/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/customize-erpnext/custom-scripts/__init__.py
diff --git a/erpnext/docs/user/manual/de/customize-erpnext/custom-scripts/custom-script-examples/__init__.py b/erpnext/docs/user/manual/de/customize-erpnext/custom-scripts/custom-script-examples/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/customize-erpnext/custom-scripts/custom-script-examples/__init__.py
diff --git a/erpnext/docs/user/manual/de/human-resources/__init__.py b/erpnext/docs/user/manual/de/human-resources/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/human-resources/__init__.py
diff --git a/erpnext/docs/user/manual/de/human-resources/setup/__init__.py b/erpnext/docs/user/manual/de/human-resources/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/human-resources/setup/__init__.py
diff --git a/erpnext/docs/user/manual/de/human-resources/tools/__init__.py b/erpnext/docs/user/manual/de/human-resources/tools/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/human-resources/tools/__init__.py
diff --git a/erpnext/docs/user/manual/de/introduction/__init__.py b/erpnext/docs/user/manual/de/introduction/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/introduction/__init__.py
diff --git a/erpnext/docs/user/manual/de/manufacturing/__init__.py b/erpnext/docs/user/manual/de/manufacturing/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/manufacturing/__init__.py
diff --git a/erpnext/docs/user/manual/de/manufacturing/setup/__init__.py b/erpnext/docs/user/manual/de/manufacturing/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/manufacturing/setup/__init__.py
diff --git a/erpnext/docs/user/manual/de/manufacturing/tools/__init__.py b/erpnext/docs/user/manual/de/manufacturing/tools/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/manufacturing/tools/__init__.py
diff --git a/erpnext/docs/user/manual/de/projects/__init__.py b/erpnext/docs/user/manual/de/projects/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/projects/__init__.py
diff --git a/erpnext/docs/user/manual/de/selling/__init__.py b/erpnext/docs/user/manual/de/selling/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/selling/__init__.py
diff --git a/erpnext/docs/user/manual/de/selling/setup/__init__.py b/erpnext/docs/user/manual/de/selling/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/selling/setup/__init__.py
diff --git a/erpnext/docs/user/manual/de/setting-up/__init__.py b/erpnext/docs/user/manual/de/setting-up/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/setting-up/__init__.py
diff --git a/erpnext/docs/user/manual/de/setting-up/data/__init__.py b/erpnext/docs/user/manual/de/setting-up/data/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/setting-up/data/__init__.py
diff --git a/erpnext/docs/user/manual/de/setting-up/email/__init__.py b/erpnext/docs/user/manual/de/setting-up/email/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/setting-up/email/__init__.py
diff --git a/erpnext/docs/user/manual/de/setting-up/print/__init__.py b/erpnext/docs/user/manual/de/setting-up/print/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/setting-up/print/__init__.py
diff --git a/erpnext/docs/user/manual/de/setting-up/settings/__init__.py b/erpnext/docs/user/manual/de/setting-up/settings/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/setting-up/settings/__init__.py
diff --git a/erpnext/docs/user/manual/de/setting-up/setup-wizard/__init__.py b/erpnext/docs/user/manual/de/setting-up/setup-wizard/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/setting-up/setup-wizard/__init__.py
diff --git a/erpnext/docs/user/manual/de/setting-up/users-and-permissions/__init__.py b/erpnext/docs/user/manual/de/setting-up/users-and-permissions/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/setting-up/users-and-permissions/__init__.py
diff --git a/erpnext/docs/user/manual/de/stock/__init__.py b/erpnext/docs/user/manual/de/stock/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/stock/__init__.py
diff --git a/erpnext/docs/user/manual/de/stock/accounting-of-inventory-stock/__init__.py b/erpnext/docs/user/manual/de/stock/accounting-of-inventory-stock/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/stock/accounting-of-inventory-stock/__init__.py
diff --git a/erpnext/docs/user/manual/de/stock/articles/__init__.py b/erpnext/docs/user/manual/de/stock/articles/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/stock/articles/__init__.py
diff --git a/erpnext/docs/user/manual/de/stock/setup/__init__.py b/erpnext/docs/user/manual/de/stock/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/stock/setup/__init__.py
diff --git a/erpnext/docs/user/manual/de/stock/tools/__init__.py b/erpnext/docs/user/manual/de/stock/tools/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/stock/tools/__init__.py
diff --git a/erpnext/docs/user/manual/de/support/__init__.py b/erpnext/docs/user/manual/de/support/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/support/__init__.py
diff --git a/erpnext/docs/user/manual/de/using-erpnext/__init__.py b/erpnext/docs/user/manual/de/using-erpnext/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/using-erpnext/__init__.py
diff --git a/erpnext/docs/user/manual/de/website/__init__.py b/erpnext/docs/user/manual/de/website/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/website/__init__.py
diff --git a/erpnext/docs/user/manual/de/website/setup/__init__.py b/erpnext/docs/user/manual/de/website/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/de/website/setup/__init__.py
diff --git a/erpnext/docs/user/manual/en/CRM/__init__.py b/erpnext/docs/user/manual/en/CRM/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/CRM/__init__.py
diff --git a/erpnext/docs/user/manual/en/CRM/setup/__init__.py b/erpnext/docs/user/manual/en/CRM/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/CRM/setup/__init__.py
diff --git a/erpnext/docs/user/manual/en/__init__.py b/erpnext/docs/user/manual/en/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/__init__.py
diff --git a/erpnext/docs/user/manual/en/accounts/__init__.py b/erpnext/docs/user/manual/en/accounts/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/accounts/__init__.py
diff --git a/erpnext/docs/user/manual/en/accounts/articles/__init__.py b/erpnext/docs/user/manual/en/accounts/articles/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/accounts/articles/__init__.py
diff --git a/erpnext/docs/user/manual/en/accounts/setup/__init__.py b/erpnext/docs/user/manual/en/accounts/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/accounts/setup/__init__.py
diff --git a/erpnext/docs/user/manual/en/accounts/tools/__init__.py b/erpnext/docs/user/manual/en/accounts/tools/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/accounts/tools/__init__.py
diff --git a/erpnext/docs/user/manual/en/buying/__init__.py b/erpnext/docs/user/manual/en/buying/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/buying/__init__.py
diff --git a/erpnext/docs/user/manual/en/buying/articles/__init__.py b/erpnext/docs/user/manual/en/buying/articles/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/buying/articles/__init__.py
diff --git a/erpnext/docs/user/manual/en/buying/setup/__init__.py b/erpnext/docs/user/manual/en/buying/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/buying/setup/__init__.py
diff --git a/erpnext/docs/user/manual/en/customer-portal/__init__.py b/erpnext/docs/user/manual/en/customer-portal/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/customer-portal/__init__.py
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/__init__.py b/erpnext/docs/user/manual/en/customize-erpnext/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/customize-erpnext/__init__.py
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/__init__.py b/erpnext/docs/user/manual/en/customize-erpnext/articles/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/__init__.py
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/__init__.py b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/__init__.py
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/__init__.py b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/__init__.py
diff --git a/erpnext/docs/user/manual/en/human-resources/__init__.py b/erpnext/docs/user/manual/en/human-resources/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/human-resources/__init__.py
diff --git a/erpnext/docs/user/manual/en/human-resources/articles/__init__.py b/erpnext/docs/user/manual/en/human-resources/articles/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/human-resources/articles/__init__.py
diff --git a/erpnext/docs/user/manual/en/human-resources/setup/__init__.py b/erpnext/docs/user/manual/en/human-resources/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/human-resources/setup/__init__.py
diff --git a/erpnext/docs/user/manual/en/human-resources/tools/__init__.py b/erpnext/docs/user/manual/en/human-resources/tools/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/human-resources/tools/__init__.py
diff --git a/erpnext/docs/user/manual/en/introduction/__init__.py b/erpnext/docs/user/manual/en/introduction/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/introduction/__init__.py
diff --git a/erpnext/docs/user/manual/en/manufacturing/__init__.py b/erpnext/docs/user/manual/en/manufacturing/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/manufacturing/__init__.py
diff --git a/erpnext/docs/user/manual/en/manufacturing/articles/__init__.py b/erpnext/docs/user/manual/en/manufacturing/articles/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/manufacturing/articles/__init__.py
diff --git a/erpnext/docs/user/manual/en/manufacturing/setup/__init__.py b/erpnext/docs/user/manual/en/manufacturing/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/manufacturing/setup/__init__.py
diff --git a/erpnext/docs/user/manual/en/manufacturing/tools/__init__.py b/erpnext/docs/user/manual/en/manufacturing/tools/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/manufacturing/tools/__init__.py
diff --git a/erpnext/docs/user/manual/en/projects/__init__.py b/erpnext/docs/user/manual/en/projects/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/projects/__init__.py
diff --git a/erpnext/docs/user/manual/en/projects/articles/__init__.py b/erpnext/docs/user/manual/en/projects/articles/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/projects/articles/__init__.py
diff --git a/erpnext/docs/user/manual/en/selling/__init__.py b/erpnext/docs/user/manual/en/selling/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/selling/__init__.py
diff --git a/erpnext/docs/user/manual/en/selling/articles/__init__.py b/erpnext/docs/user/manual/en/selling/articles/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/selling/articles/__init__.py
diff --git a/erpnext/docs/user/manual/en/selling/setup/__init__.py b/erpnext/docs/user/manual/en/selling/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/selling/setup/__init__.py
diff --git a/erpnext/docs/user/manual/en/setting-up/__init__.py b/erpnext/docs/user/manual/en/setting-up/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/setting-up/__init__.py
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/__init__.py b/erpnext/docs/user/manual/en/setting-up/articles/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/setting-up/articles/__init__.py
diff --git a/erpnext/docs/user/manual/en/setting-up/data/__init__.py b/erpnext/docs/user/manual/en/setting-up/data/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/setting-up/data/__init__.py
diff --git a/erpnext/docs/user/manual/en/setting-up/email/__init__.py b/erpnext/docs/user/manual/en/setting-up/email/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/setting-up/email/__init__.py
diff --git a/erpnext/docs/user/manual/en/setting-up/print/__init__.py b/erpnext/docs/user/manual/en/setting-up/print/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/setting-up/print/__init__.py
diff --git a/erpnext/docs/user/manual/en/setting-up/settings/__init__.py b/erpnext/docs/user/manual/en/setting-up/settings/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/setting-up/settings/__init__.py
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/__init__.py b/erpnext/docs/user/manual/en/setting-up/setup-wizard/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/setting-up/setup-wizard/__init__.py
diff --git a/erpnext/docs/user/manual/en/setting-up/users-and-permissions/__init__.py b/erpnext/docs/user/manual/en/setting-up/users-and-permissions/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/setting-up/users-and-permissions/__init__.py
diff --git a/erpnext/docs/user/manual/en/stock/__init__.py b/erpnext/docs/user/manual/en/stock/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/stock/__init__.py
diff --git a/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/__init__.py b/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/__init__.py
diff --git a/erpnext/docs/user/manual/en/stock/articles/__init__.py b/erpnext/docs/user/manual/en/stock/articles/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/stock/articles/__init__.py
diff --git a/erpnext/docs/user/manual/en/stock/item/__init__.py b/erpnext/docs/user/manual/en/stock/item/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/stock/item/__init__.py
diff --git a/erpnext/docs/user/manual/en/stock/setup/__init__.py b/erpnext/docs/user/manual/en/stock/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/stock/setup/__init__.py
diff --git a/erpnext/docs/user/manual/en/stock/tools/__init__.py b/erpnext/docs/user/manual/en/stock/tools/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/stock/tools/__init__.py
diff --git a/erpnext/docs/user/manual/en/support/__init__.py b/erpnext/docs/user/manual/en/support/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/support/__init__.py
diff --git a/erpnext/docs/user/manual/en/using-erpnext/__init__.py b/erpnext/docs/user/manual/en/using-erpnext/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/using-erpnext/__init__.py
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/__init__.py b/erpnext/docs/user/manual/en/using-erpnext/articles/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/__init__.py
diff --git a/erpnext/docs/user/manual/en/website/__init__.py b/erpnext/docs/user/manual/en/website/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/website/__init__.py
diff --git a/erpnext/docs/user/manual/en/website/articles/__init__.py b/erpnext/docs/user/manual/en/website/articles/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/website/articles/__init__.py
diff --git a/erpnext/docs/user/manual/en/website/setup/__init__.py b/erpnext/docs/user/manual/en/website/setup/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/en/website/setup/__init__.py
diff --git a/erpnext/docs/user/manual/es/__init__.py b/erpnext/docs/user/manual/es/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/es/__init__.py
diff --git a/erpnext/docs/user/manual/es/accounts/__init__.py b/erpnext/docs/user/manual/es/accounts/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/manual/es/accounts/__init__.py
diff --git a/erpnext/docs/user/videos/__init__.py b/erpnext/docs/user/videos/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/videos/__init__.py
diff --git a/erpnext/docs/user/videos/learn/__init__.py b/erpnext/docs/user/videos/learn/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/docs/user/videos/learn/__init__.py
diff --git a/erpnext/fixtures/web_form.json b/erpnext/fixtures/web_form.json
deleted file mode 100644
index d8b79f3..0000000
--- a/erpnext/fixtures/web_form.json
+++ /dev/null
@@ -1,535 +0,0 @@
-[
- {
- "allow_comments": 1,
- "allow_delete": 1,
- "allow_edit": 1,
- "allow_multiple": 1,
- "breadcrumbs": "[{\"title\":\"Collaborative Project Management\", \"name\":\"projects?project=Collaborative Project Management\"}]",
- "doc_type": "Task",
- "docstatus": 0,
- "doctype": "Web Form",
- "introduction_text": null,
- "is_standard": 1,
- "login_required": 1,
- "modified": "2016-03-30 01:27:27.469840",
- "name": "tasks",
- "page_name": "tasks",
- "published": 1,
- "success_message": null,
- "success_url": "/projects?project=Collaborative Project Management",
- "title": "Task",
- "web_form_fields": [
- {
- "default": null,
- "description": null,
- "fieldname": "project",
- "fieldtype": "Link",
- "hidden": 0,
- "label": "Project",
- "options": "Project",
- "read_only": 1,
- "reqd": 1
- },
- {
- "default": null,
- "description": null,
- "fieldname": "subject",
- "fieldtype": "Data",
- "hidden": 0,
- "label": "Subject",
- "options": null,
- "read_only": 0,
- "reqd": 1
- },
- {
- "default": null,
- "description": null,
- "fieldname": "status",
- "fieldtype": "Select",
- "hidden": 0,
- "label": "Status",
- "options": "Open\nClosed\nCancelled",
- "read_only": 0,
- "reqd": 0
- },
- {
- "default": null,
- "description": null,
- "fieldname": "description",
- "fieldtype": "Text",
- "hidden": 0,
- "label": "Details",
- "options": null,
- "read_only": 0,
- "reqd": 0
- },
- {
- "default": null,
- "description": null,
- "fieldname": "priority",
- "fieldtype": "Select",
- "hidden": 0,
- "label": "Priority",
- "options": "Low\nMedium\nHigh\nUrgent",
- "read_only": 0,
- "reqd": 0
- },
- {
- "default": null,
- "description": null,
- "fieldname": "exp_start_date",
- "fieldtype": "Date",
- "hidden": 0,
- "label": "Expected Start Date",
- "options": null,
- "read_only": 0,
- "reqd": 0
- },
- {
- "default": null,
- "description": null,
- "fieldname": "exp_end_date",
- "fieldtype": "Date",
- "hidden": 0,
- "label": "Expected End Date",
- "options": null,
- "read_only": 0,
- "reqd": 0
- }
- ],
- "web_page_link_text": null
- },
- {
- "allow_comments": 0,
- "allow_delete": 1,
- "allow_edit": 0,
- "allow_multiple": 0,
- "breadcrumbs": "[{\"title\":\"Collaborative Project Management\", \"name\":\"project?project=Collaborative Project Management\"}]",
- "doc_type": "Time Log",
- "docstatus": 0,
- "doctype": "Web Form",
- "introduction_text": null,
- "is_standard": 0,
- "login_required": 1,
- "modified": "2016-03-30 01:28:00.061700",
- "name": "time-log",
- "page_name": "time-log",
- "published": 1,
- "success_message": null,
- "success_url": "/test?project=Collaborative Project Management",
- "title": "Time Log",
- "web_form_fields": [
- {
- "default": null,
- "description": null,
- "fieldname": "project",
- "fieldtype": "Link",
- "hidden": 0,
- "label": "Project",
- "options": "Project",
- "read_only": 1,
- "reqd": 1
- },
- {
- "default": null,
- "description": null,
- "fieldname": "title",
- "fieldtype": "Data",
- "hidden": 0,
- "label": "Title",
- "options": null,
- "read_only": 1,
- "reqd": 0
- },
- {
- "default": "Open",
- "description": null,
- "fieldname": "status",
- "fieldtype": "Select",
- "hidden": 0,
- "label": "Status",
- "options": "Open\nWorking\nPending Review\nClosed\nCancelled",
- "read_only": 1,
- "reqd": 1
- },
- {
- "default": null,
- "description": null,
- "fieldname": "employee",
- "fieldtype": "Link",
- "hidden": 0,
- "label": "Employee",
- "options": "Employee",
- "read_only": 1,
- "reqd": 0
- },
- {
- "default": null,
- "description": null,
- "fieldname": "from_time",
- "fieldtype": "Date",
- "hidden": 0,
- "label": "From Time",
- "options": null,
- "read_only": 1,
- "reqd": 1
- },
- {
- "default": null,
- "description": null,
- "fieldname": "to_time",
- "fieldtype": "Date",
- "hidden": 0,
- "label": "To Time",
- "options": null,
- "read_only": 1,
- "reqd": 1
- },
- {
- "default": "0",
- "description": null,
- "fieldname": "hours",
- "fieldtype": "Data",
- "hidden": 0,
- "label": "Hours",
- "options": null,
- "read_only": 1,
- "reqd": 0
- },
- {
- "default": null,
- "description": "Will be updated when batched.",
- "fieldname": "time_log_batch",
- "fieldtype": "Link",
- "hidden": 0,
- "label": "Time Log Batch",
- "options": "Time Log Batch",
- "read_only": 0,
- "reqd": 0
- },
- {
- "default": null,
- "description": null,
- "fieldname": "note",
- "fieldtype": "Text",
- "hidden": 0,
- "label": "Note",
- "options": null,
- "read_only": 1,
- "reqd": 0
- }
- ],
- "web_page_link_text": null
- },
- {
- "allow_comments": 1,
- "allow_delete": 1,
- "allow_edit": 1,
- "allow_multiple": 1,
- "breadcrumbs": "[{\"title\":\"Issues\", \"name\":\"issues\"}]",
- "doc_type": "Issue",
- "docstatus": 0,
- "doctype": "Web Form",
- "introduction_text": null,
- "is_standard": 1,
- "login_required": 1,
- "modified": "2016-03-30 01:22:09.921515",
- "name": "issues",
- "page_name": "issues",
- "published": 1,
- "success_message": "",
- "success_url": "/issues",
- "title": "Issue",
- "web_form_fields": [
- {
- "default": null,
- "description": null,
- "fieldname": "subject",
- "fieldtype": "Data",
- "hidden": 0,
- "label": "Subject",
- "options": null,
- "read_only": 0,
- "reqd": 1
- },
- {
- "default": "Open",
- "description": null,
- "fieldname": "status",
- "fieldtype": "Select",
- "hidden": 0,
- "label": "Status",
- "options": "Open\nReplied\nHold\nClosed",
- "read_only": 1,
- "reqd": 0
- },
- {
- "default": null,
- "description": null,
- "fieldname": "description",
- "fieldtype": "Text",
- "hidden": 0,
- "label": "Description",
- "options": null,
- "read_only": 0,
- "reqd": 0
- },
- {
- "default": null,
- "description": null,
- "fieldname": "attachment",
- "fieldtype": "Attach",
- "hidden": 0,
- "label": "Attachment",
- "options": null,
- "read_only": 0,
- "reqd": 0
- }
- ],
- "web_page_link_text": null
- },
- {
- "allow_comments": 0,
- "allow_delete": 0,
- "allow_edit": 1,
- "allow_multiple": 1,
- "breadcrumbs": null,
- "doc_type": "Address",
- "docstatus": 0,
- "doctype": "Web Form",
- "introduction_text": null,
- "is_standard": 1,
- "login_required": 1,
- "modified": "2016-03-30 01:22:04.728685",
- "name": "addresses",
- "page_name": "addresses",
- "published": 1,
- "success_message": null,
- "success_url": "/addresses",
- "title": "Address",
- "web_form_fields": [
- {
- "default": null,
- "description": "",
- "fieldname": "address_title",
- "fieldtype": "Data",
- "hidden": 0,
- "label": "Address Title",
- "options": null,
- "read_only": 0,
- "reqd": 0
- },
- {
- "default": null,
- "description": null,
- "fieldname": "address_type",
- "fieldtype": "Select",
- "hidden": 0,
- "label": "Address Type",
- "options": "Billing\nShipping\nOffice\nPersonal\nPlant\nPostal\nShop\nSubsidiary\nWarehouse\nOther",
- "read_only": 0,
- "reqd": 1
- },
- {
- "default": null,
- "description": null,
- "fieldname": "address_line1",
- "fieldtype": "Data",
- "hidden": 0,
- "label": "Address Line 1",
- "options": null,
- "read_only": 0,
- "reqd": 1
- },
- {
- "default": null,
- "description": null,
- "fieldname": "address_line2",
- "fieldtype": "Data",
- "hidden": 0,
- "label": "Address Line 2",
- "options": null,
- "read_only": 0,
- "reqd": 0
- },
- {
- "default": null,
- "description": null,
- "fieldname": "city",
- "fieldtype": "Data",
- "hidden": 0,
- "label": "City/Town",
- "options": null,
- "read_only": 0,
- "reqd": 1
- },
- {
- "default": null,
- "description": null,
- "fieldname": "state",
- "fieldtype": "Data",
- "hidden": 0,
- "label": "State",
- "options": null,
- "read_only": 0,
- "reqd": 0
- },
- {
- "default": null,
- "description": null,
- "fieldname": "pincode",
- "fieldtype": "Data",
- "hidden": 0,
- "label": "Postal Code",
- "options": null,
- "read_only": 0,
- "reqd": 0
- },
- {
- "default": null,
- "description": null,
- "fieldname": "country",
- "fieldtype": "Link",
- "hidden": 0,
- "label": "Country",
- "options": "Country",
- "read_only": 0,
- "reqd": 1
- },
- {
- "default": null,
- "description": null,
- "fieldname": null,
- "fieldtype": "Column Break",
- "hidden": 0,
- "label": null,
- "options": null,
- "read_only": 0,
- "reqd": 0
- },
- {
- "default": null,
- "description": null,
- "fieldname": "email_id",
- "fieldtype": "Data",
- "hidden": 0,
- "label": "Email Id",
- "options": null,
- "read_only": 0,
- "reqd": 0
- },
- {
- "default": null,
- "description": null,
- "fieldname": "phone",
- "fieldtype": "Data",
- "hidden": 0,
- "label": "Phone",
- "options": null,
- "read_only": 0,
- "reqd": 1
- },
- {
- "default": "0",
- "description": "",
- "fieldname": "is_primary_address",
- "fieldtype": "Check",
- "hidden": 0,
- "label": "Preferred Billing Address",
- "options": null,
- "read_only": 0,
- "reqd": 0
- },
- {
- "default": "0",
- "description": "",
- "fieldname": "is_shipping_address",
- "fieldtype": "Check",
- "hidden": 0,
- "label": "Preferred Shipping Address",
- "options": null,
- "read_only": 0,
- "reqd": 0
- }
- ],
- "web_page_link_text": null
- },
- {
- "allow_comments": 0,
- "allow_delete": 0,
- "allow_edit": 0,
- "allow_multiple": 0,
- "breadcrumbs": "[{\"title\":\"Jobs\", \"name\":\"jobs\"}]",
- "doc_type": "Job Applicant",
- "docstatus": 0,
- "doctype": "Web Form",
- "introduction_text": null,
- "is_standard": 0,
- "login_required": 0,
- "modified": "2016-03-30 01:21:57.425828",
- "name": "job_application",
- "page_name": "job_application",
- "published": 1,
- "success_message": "Thank you for applying.",
- "success_url": "/jobs",
- "title": "Job Applicant",
- "web_form_fields": [
- {
- "default": null,
- "description": null,
- "fieldname": "job_title",
- "fieldtype": "Data",
- "hidden": 0,
- "label": "Job Title",
- "options": "",
- "read_only": 1,
- "reqd": 0
- },
- {
- "default": null,
- "description": null,
- "fieldname": "applicant_name",
- "fieldtype": "Data",
- "hidden": 0,
- "label": "Applicant Name",
- "options": null,
- "read_only": 0,
- "reqd": 1
- },
- {
- "default": null,
- "description": null,
- "fieldname": "email_id",
- "fieldtype": "Data",
- "hidden": 0,
- "label": "Email Id",
- "options": "Email",
- "read_only": 0,
- "reqd": 0
- },
- {
- "default": "Cover Letter/Message",
- "description": null,
- "fieldname": "message",
- "fieldtype": "Text",
- "hidden": 0,
- "label": "Message",
- "options": null,
- "read_only": 0,
- "reqd": 1
- },
- {
- "default": null,
- "description": null,
- "fieldname": "upload_cv",
- "fieldtype": "Attach",
- "hidden": 0,
- "label": "Upload CV",
- "options": null,
- "read_only": 0,
- "reqd": 0
- }
- ],
- "web_page_link_text": null
- }
-]
\ No newline at end of file
diff --git a/erpnext/hr/doctype/job_opening/job_opening.json b/erpnext/hr/doctype/job_opening/job_opening.json
index 3cf1431..4556ed3 100644
--- a/erpnext/hr/doctype/job_opening/job_opening.json
+++ b/erpnext/hr/doctype/job_opening/job_opening.json
@@ -3,6 +3,7 @@
"allow_import": 0,
"allow_rename": 0,
"autoname": "field:job_title",
+ "beta": 0,
"creation": "2013-01-15 16:13:36",
"custom": 0,
"description": "Description of a Job Opening",
@@ -63,6 +64,32 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "depends_on": "publish",
+ "fieldname": "route",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Route",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 1
+ },
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
"fieldname": "status",
"fieldtype": "Select",
"hidden": 0,
@@ -108,71 +135,20 @@
"search_index": 0,
"set_only_once": 0,
"unique": 0
- },
- {
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "depends_on": "publish",
- "fieldname": "page_name",
- "fieldtype": "Data",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Page Name",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
- },
- {
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "default": "jobs",
- "fieldname": "parent_website_route",
- "fieldtype": "Data",
- "hidden": 1,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Parent Website Route",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
}
],
"hide_heading": 0,
"hide_toolbar": 0,
"icon": "icon-bookmark",
"idx": 1,
+ "image_view": 0,
"in_create": 0,
"in_dialog": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2016-03-02 01:44:28.280777",
+ "modified": "2016-06-23 14:45:46.102129",
"modified_by": "Administrator",
"module": "HR",
"name": "Job Opening",
@@ -199,7 +175,9 @@
"write": 1
}
],
+ "quick_entry": 0,
"read_only": 0,
"read_only_onload": 0,
- "sort_order": "ASC"
+ "sort_order": "ASC",
+ "track_seen": 0
}
\ No newline at end of file
diff --git a/erpnext/hr/doctype/job_opening/job_opening.py b/erpnext/hr/doctype/job_opening/job_opening.py
index acc40b7..267e7a8 100644
--- a/erpnext/hr/doctype/job_opening/job_opening.py
+++ b/erpnext/hr/doctype/job_opening/job_opening.py
@@ -17,9 +17,9 @@
condition_field = "publish",
page_title_field = "job_title",
)
-
- def get_route(self):
- return 'jobs/' + quoted(self.page_name)
+
+ def make_route(self):
+ return 'jobs/' + self.scrub(self.job_title)
def get_context(self, context):
context.parents = [{'name': 'jobs', 'title': _('All Jobs') }]
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index e3aa04b..2493643 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -271,3 +271,5 @@
execute:frappe.db.sql('update tabQuotation set status="Cancelled" where docstatus=2')
execute:frappe.rename_doc("DocType", "Payments", "Sales Invoice Payment", force=True)
erpnext.patches.v7_0.update_mins_to_first_response
+erpnext.patches.v6_20x.repost_valuation_rate_for_negative_inventory
+erpnext.patches.v7_0.re_route
diff --git a/erpnext/patches/v4_2/default_website_style.py b/erpnext/patches/v4_2/default_website_style.py
index e9f2cb9..cdf0a7a 100644
--- a/erpnext/patches/v4_2/default_website_style.py
+++ b/erpnext/patches/v4_2/default_website_style.py
@@ -1,6 +1,6 @@
from __future__ import unicode_literals
import frappe
-from frappe.templates.pages.style_settings import default_properties
+from frappe.www.style_settings import default_properties
def execute():
frappe.reload_doc('website', 'doctype', 'style_settings')
diff --git a/erpnext/patches/v6_20x/repost_valuation_rate_for_negative_inventory.py b/erpnext/patches/v6_20x/repost_valuation_rate_for_negative_inventory.py
new file mode 100644
index 0000000..8369fea
--- /dev/null
+++ b/erpnext/patches/v6_20x/repost_valuation_rate_for_negative_inventory.py
@@ -0,0 +1,11 @@
+# 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
+from erpnext.stock.stock_balance import repost
+
+def execute():
+ if cint(frappe.db.get_value("Stock Settings", None, "allow_negative_stock")):
+ repost(only_actual=True)
\ No newline at end of file
diff --git a/erpnext/patches/v6_5/show_in_website_for_template_item.py b/erpnext/patches/v6_5/show_in_website_for_template_item.py
index 48040ee..af6e830 100644
--- a/erpnext/patches/v6_5/show_in_website_for_template_item.py
+++ b/erpnext/patches/v6_5/show_in_website_for_template_item.py
@@ -9,7 +9,7 @@
item = frappe.get_doc("Item", item_code)
item.db_set("show_in_website", 1, update_modified=False)
- item.get_route()
- item.db_set("page_name", item.page_name, update_modified=False)
+ item.make_route()
+ item.db_set("route", item.route, update_modified=False)
frappe.website.render.clear_cache()
diff --git a/erpnext/patches/v7_0/re_route.py b/erpnext/patches/v7_0/re_route.py
new file mode 100644
index 0000000..1db4920
--- /dev/null
+++ b/erpnext/patches/v7_0/re_route.py
@@ -0,0 +1,4 @@
+from frappe.patches.v7_0.re_route import update_routes
+
+def execute():
+ update_routes(['Item', 'Item Group', 'Sales Partner', 'Job Opening'])
\ No newline at end of file
diff --git a/erpnext/projects/web_form/__init__.py b/erpnext/projects/web_form/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/projects/web_form/__init__.py
diff --git a/erpnext/projects/web_form/tasks/__init__.py b/erpnext/projects/web_form/tasks/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/projects/web_form/tasks/__init__.py
diff --git a/erpnext/projects/web_form/tasks/tasks.js b/erpnext/projects/web_form/tasks/tasks.js
new file mode 100644
index 0000000..699703c
--- /dev/null
+++ b/erpnext/projects/web_form/tasks/tasks.js
@@ -0,0 +1,3 @@
+frappe.ready(function() {
+ // bind events here
+})
\ No newline at end of file
diff --git a/erpnext/projects/web_form/tasks/tasks.json b/erpnext/projects/web_form/tasks/tasks.json
new file mode 100644
index 0000000..912b4c4
--- /dev/null
+++ b/erpnext/projects/web_form/tasks/tasks.json
@@ -0,0 +1,84 @@
+{
+ "allow_comments": 1,
+ "allow_delete": 1,
+ "allow_edit": 1,
+ "allow_multiple": 1,
+ "breadcrumbs": "[{\"title\":\"Tasks\", \"name\":\"tasks\"}]",
+ "creation": "2016-06-24 15:50:33.091287",
+ "doc_type": "Task",
+ "docstatus": 0,
+ "doctype": "Web Form",
+ "idx": 0,
+ "is_standard": 1,
+ "login_required": 1,
+ "modified": "2016-06-24 16:11:10.935835",
+ "modified_by": "Administrator",
+ "module": "Projects",
+ "name": "tasks",
+ "owner": "Administrator",
+ "published": 1,
+ "route": "tasks",
+ "success_url": "/projects?project=Collaborative Project Management",
+ "title": "Task",
+ "web_form_fields": [
+ {
+ "fieldname": "project",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "label": "Project",
+ "options": "Project",
+ "read_only": 1,
+ "reqd": 1
+ },
+ {
+ "fieldname": "subject",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "label": "Subject",
+ "read_only": 0,
+ "reqd": 1
+ },
+ {
+ "fieldname": "status",
+ "fieldtype": "Select",
+ "hidden": 0,
+ "label": "Status",
+ "options": "Open\nClosed\nCancelled",
+ "read_only": 0,
+ "reqd": 0
+ },
+ {
+ "fieldname": "description",
+ "fieldtype": "Text",
+ "hidden": 0,
+ "label": "Details",
+ "read_only": 0,
+ "reqd": 0
+ },
+ {
+ "fieldname": "priority",
+ "fieldtype": "Select",
+ "hidden": 0,
+ "label": "Priority",
+ "options": "Low\nMedium\nHigh\nUrgent",
+ "read_only": 0,
+ "reqd": 0
+ },
+ {
+ "fieldname": "exp_start_date",
+ "fieldtype": "Date",
+ "hidden": 0,
+ "label": "Expected Start Date",
+ "read_only": 0,
+ "reqd": 0
+ },
+ {
+ "fieldname": "exp_end_date",
+ "fieldtype": "Date",
+ "hidden": 0,
+ "label": "Expected End Date",
+ "read_only": 0,
+ "reqd": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/projects/web_form/tasks/tasks.py b/erpnext/projects/web_form/tasks/tasks.py
new file mode 100644
index 0000000..2334f8b
--- /dev/null
+++ b/erpnext/projects/web_form/tasks/tasks.py
@@ -0,0 +1,7 @@
+from __future__ import unicode_literals
+
+import frappe
+
+def get_context(context):
+ # do your magic here
+ pass
diff --git a/erpnext/setup/doctype/item_group/item_group.json b/erpnext/setup/doctype/item_group/item_group.json
index e5ccc2d..37d8c81 100644
--- a/erpnext/setup/doctype/item_group/item_group.json
+++ b/erpnext/setup/doctype/item_group/item_group.json
@@ -3,6 +3,7 @@
"allow_import": 1,
"allow_rename": 1,
"autoname": "field:item_group_name",
+ "beta": 0,
"creation": "2013-03-28 10:35:29",
"custom": 0,
"description": "Item Classification",
@@ -268,17 +269,18 @@
"bold": 0,
"collapsible": 0,
"depends_on": "show_in_website",
- "fieldname": "page_name",
+ "fieldname": "route",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
- "label": "Page Name",
+ "label": "Route",
"length": 0,
"no_copy": 0,
"permlevel": 0,
+ "precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
@@ -286,33 +288,7 @@
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
- "unique": 0
- },
- {
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "depends_on": "show_in_website",
- "fieldname": "parent_website_route",
- "fieldtype": "Read Only",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Parent Website Route",
- "length": 0,
- "no_copy": 0,
- "options": "",
- "permlevel": 0,
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 1,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
+ "unique": 1
},
{
"allow_on_submit": 0,
@@ -478,13 +454,14 @@
"hide_toolbar": 0,
"icon": "icon-sitemap",
"idx": 1,
+ "image_view": 0,
"in_create": 1,
"in_dialog": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 3,
- "modified": "2016-03-28 08:38:30.868523",
+ "modified": "2016-06-23 14:44:46.228923",
"modified_by": "Administrator",
"module": "Setup",
"name": "Item Group",
@@ -611,6 +588,7 @@
"write": 0
}
],
+ "quick_entry": 0,
"read_only": 0,
"read_only_onload": 0,
"search_fields": "parent_item_group",
diff --git a/erpnext/setup/doctype/item_group/item_group.py b/erpnext/setup/doctype/item_group/item_group.py
index dc30de1..3feff6b 100644
--- a/erpnext/setup/doctype/item_group/item_group.py
+++ b/erpnext/setup/doctype/item_group/item_group.py
@@ -16,13 +16,16 @@
website = frappe._dict(
condition_field = "show_in_website",
template = "templates/generators/item_group.html",
- parent_website_route_field = "parent_item_group",
no_cache = 1
)
def autoname(self):
self.name = self.item_group_name
+ def validate(self):
+ super(ItemGroup, self).validate()
+ self.make_route()
+
def on_update(self):
NestedSet.on_update(self)
WebsiteGenerator.on_update(self)
@@ -30,6 +33,17 @@
self.validate_name_with_item()
self.validate_one_root()
+ def make_route(self):
+ '''Make website route'''
+ if not self.route:
+ self.route = ''
+ if self.parent_item_group:
+ self.route = frappe.get_doc('Item Group', self.parent_item_group).route + '/'
+
+ self.route += self.scrub(self.item_group_name)
+
+ return self.route
+
def after_rename(self, olddn, newdn, merge=False):
NestedSet.after_rename(self, olddn, newdn, merge)
WebsiteGenerator.after_rename(self, olddn, newdn, merge)
@@ -38,16 +52,6 @@
NestedSet.on_trash(self)
WebsiteGenerator.on_trash(self)
- def set_parent_website_route(self):
- """Overwrite `parent_website_route` from `WebsiteGenerator`.
- Only set `parent_website_route` if parent is visble.
-
- e.g. If `show_in_website` is set for Products then url should be `/products`"""
- if self.parent_item_group and frappe.db.get_value("Item Group", self.parent_item_group, "show_in_website"):
- WebsiteGenerator.set_parent_website_route(self)
- else:
- self.parent_website_route = ""
-
def validate_name_with_item(self):
if frappe.db.exists("Item", self.name):
frappe.throw(frappe._("An item exists with same name ({0}), please change the item group name or rename the item").format(self.name))
@@ -74,9 +78,8 @@
child_groups = ", ".join(['"' + i[0] + '"' for i in get_child_groups(product_group)])
# base query
- query = """select name, item_name, item_code, page_name, image, website_image, thumbnail, item_group,
- description, web_long_description as website_description,
- concat(parent_website_route, "/", page_name) as route
+ query = """select name, item_name, item_code, route, image, website_image, thumbnail, item_group,
+ description, web_long_description as website_description
from `tabItem`
where show_in_website = 1
and disabled=0
@@ -127,7 +130,7 @@
def get_parent_item_groups(item_group_name):
item_group = frappe.get_doc("Item Group", item_group_name)
- return frappe.db.sql("""select name, page_name from `tabItem Group`
+ return frappe.db.sql("""select name, route from `tabItem Group`
where lft <= %s and rgt >= %s
and show_in_website=1
order by lft asc""", (item_group.lft, item_group.rgt), as_dict=True)
@@ -138,6 +141,5 @@
for d in get_parent_item_groups(item_group):
d = frappe.get_doc("Item Group", d.name)
- route = d.get_route()
- if route:
- clear_cache(route)
+ if d.route:
+ clear_cache(d.route)
diff --git a/erpnext/setup/doctype/sales_partner/sales_partner.json b/erpnext/setup/doctype/sales_partner/sales_partner.json
index d6a49c5..7cdb30d 100644
--- a/erpnext/setup/doctype/sales_partner/sales_partner.json
+++ b/erpnext/setup/doctype/sales_partner/sales_partner.json
@@ -1,664 +1,694 @@
{
- "allow_copy": 0,
- "allow_import": 1,
- "allow_rename": 1,
- "autoname": "field:partner_name",
- "creation": "2013-04-12 15:34:06",
- "custom": 0,
- "description": "A third party distributor / dealer / commission agent / affiliate / reseller who sells the companies products for a commission.",
- "docstatus": 0,
- "doctype": "DocType",
- "document_type": "Setup",
+ "allow_copy": 0,
+ "allow_import": 1,
+ "allow_rename": 1,
+ "autoname": "field:partner_name",
+ "beta": 0,
+ "creation": "2013-04-12 15:34:06",
+ "custom": 0,
+ "description": "A third party distributor / dealer / commission agent / affiliate / reseller who sells the companies products for a commission.",
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "Setup",
"fields": [
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "partner_name",
- "fieldtype": "Data",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 1,
- "in_list_view": 0,
- "label": "Sales Partner Name",
- "length": 0,
- "no_copy": 0,
- "oldfieldname": "partner_name",
- "oldfieldtype": "Data",
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 1,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "partner_name",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 1,
+ "in_list_view": 0,
+ "label": "Sales Partner Name",
+ "length": 0,
+ "no_copy": 0,
+ "oldfieldname": "partner_name",
+ "oldfieldtype": "Data",
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "partner_type",
- "fieldtype": "Select",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 1,
- "in_list_view": 1,
- "label": "Partner Type",
- "length": 0,
- "no_copy": 0,
- "oldfieldname": "partner_type",
- "oldfieldtype": "Select",
- "options": "\nChannel Partner\nDistributor\nDealer\nAgent\nRetailer\nImplementation Partner\nReseller",
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "partner_type",
+ "fieldtype": "Select",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 1,
+ "in_list_view": 1,
+ "label": "Partner Type",
+ "length": 0,
+ "no_copy": 0,
+ "oldfieldname": "partner_type",
+ "oldfieldtype": "Select",
+ "options": "\nChannel Partner\nDistributor\nDealer\nAgent\nRetailer\nImplementation Partner\nReseller",
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "description": "",
- "fieldname": "territory",
- "fieldtype": "Link",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 1,
- "label": "Territory",
- "length": 0,
- "no_copy": 0,
- "options": "Territory",
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 1,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "description": "",
+ "fieldname": "territory",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 1,
+ "label": "Territory",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Territory",
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "column_break0",
- "fieldtype": "Column Break",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "length": 0,
- "no_copy": 0,
- "oldfieldtype": "Column Break",
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "column_break0",
+ "fieldtype": "Column Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "length": 0,
+ "no_copy": 0,
+ "oldfieldtype": "Column Break",
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0,
"width": "50%"
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "commission_rate",
- "fieldtype": "Float",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Commission Rate",
- "length": 0,
- "no_copy": 0,
- "oldfieldname": "commission_rate",
- "oldfieldtype": "Currency",
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 1,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "commission_rate",
+ "fieldtype": "Float",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Commission Rate",
+ "length": 0,
+ "no_copy": 0,
+ "oldfieldname": "commission_rate",
+ "oldfieldtype": "Currency",
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "address_contacts",
- "fieldtype": "Section Break",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Address & Contacts",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "address_contacts",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Address & Contacts",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "depends_on": "eval:doc.__islocal",
- "fieldname": "address_desc",
- "fieldtype": "HTML",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Address Desc",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "depends_on": "eval:doc.__islocal",
+ "fieldname": "address_desc",
+ "fieldtype": "HTML",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Address Desc",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "address_html",
- "fieldtype": "HTML",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Address HTML",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 1,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "address_html",
+ "fieldtype": "HTML",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Address HTML",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "column_break1",
- "fieldtype": "Column Break",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "column_break1",
+ "fieldtype": "Column Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "depends_on": "eval:doc.__islocal",
- "fieldname": "contact_desc",
- "fieldtype": "HTML",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Contact Desc",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "depends_on": "eval:doc.__islocal",
+ "fieldname": "contact_desc",
+ "fieldtype": "HTML",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Contact Desc",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "contact_html",
- "fieldtype": "HTML",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Contact HTML",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 1,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "contact_html",
+ "fieldtype": "HTML",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Contact HTML",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "partner_target_details_section_break",
- "fieldtype": "Section Break",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Sales Partner Target",
- "length": 0,
- "no_copy": 0,
- "oldfieldtype": "Section Break",
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "partner_target_details_section_break",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Sales Partner Target",
+ "length": 0,
+ "no_copy": 0,
+ "oldfieldtype": "Section Break",
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "targets",
- "fieldtype": "Table",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Targets",
- "length": 0,
- "no_copy": 0,
- "oldfieldname": "partner_target_details",
- "oldfieldtype": "Table",
- "options": "Target Detail",
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "targets",
+ "fieldtype": "Table",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Targets",
+ "length": 0,
+ "no_copy": 0,
+ "oldfieldname": "partner_target_details",
+ "oldfieldtype": "Table",
+ "options": "Target Detail",
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "description": "Select Monthly Distribution to unevenly distribute targets across months.",
- "fieldname": "distribution_id",
- "fieldtype": "Link",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Target Distribution",
- "length": 0,
- "no_copy": 0,
- "oldfieldname": "distribution_id",
- "oldfieldtype": "Link",
- "options": "Monthly Distribution",
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "description": "Select Monthly Distribution to unevenly distribute targets across months.",
+ "fieldname": "distribution_id",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Target Distribution",
+ "length": 0,
+ "no_copy": 0,
+ "oldfieldname": "distribution_id",
+ "oldfieldtype": "Link",
+ "options": "Monthly Distribution",
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "website",
- "fieldtype": "Section Break",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Website",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "website",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Website",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "show_in_website",
- "fieldtype": "Check",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Show In Website",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "show_in_website",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Show In Website",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "depends_on": "eval:cint(doc.show_in_website)",
- "fieldname": "section_break_17",
- "fieldtype": "Section Break",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "depends_on": "show_in_website",
+ "fieldname": "section_break_17",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "logo",
- "fieldtype": "Attach",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Logo",
- "length": 0,
- "no_copy": 0,
- "options": "",
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "route",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Route",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 1
+ },
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "column_break_20",
+ "fieldtype": "Column Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "partner_website",
- "fieldtype": "Data",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Partner's Website",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "logo",
+ "fieldtype": "Attach",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Logo",
+ "length": 0,
+ "no_copy": 0,
+ "options": "",
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "column_break_20",
- "fieldtype": "Column Break",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "partner_website",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Partner website",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "page_name",
- "fieldtype": "Data",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Page Name",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 1,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "depends_on": "show_in_website",
+ "fieldname": "section_break_22",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "depends_on": "eval:cint(doc.show_in_website)",
- "fieldname": "section_break_22",
- "fieldtype": "Section Break",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "introduction",
+ "fieldtype": "Text",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Introduction",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "introduction",
- "fieldtype": "Text",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Introduction",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
- },
- {
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "description",
- "fieldtype": "Text Editor",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Description",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
- },
- {
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "default": "partners",
- "fieldname": "parent_website_route",
- "fieldtype": "Read Only",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Parent Website Route",
- "length": 0,
- "no_copy": 0,
- "options": "",
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "description",
+ "fieldtype": "Text Editor",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Description",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
}
- ],
- "hide_heading": 0,
- "hide_toolbar": 0,
- "icon": "icon-user",
- "idx": 1,
- "in_create": 0,
- "in_dialog": 0,
- "is_submittable": 0,
- "issingle": 0,
- "istable": 0,
- "max_attachments": 0,
- "modified": "2015-11-16 06:29:57.096980",
- "modified_by": "Administrator",
- "module": "Setup",
- "name": "Sales Partner",
- "owner": "Administrator",
+ ],
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "icon": "icon-user",
+ "idx": 1,
+ "image_view": 0,
+ "in_create": 0,
+ "in_dialog": 0,
+ "is_submittable": 0,
+ "issingle": 0,
+ "istable": 0,
+ "max_attachments": 0,
+ "modified": "2016-06-23 14:45:31.978973",
+ "modified_by": "Administrator",
+ "module": "Setup",
+ "name": "Sales Partner",
+ "owner": "Administrator",
"permissions": [
{
- "amend": 0,
- "apply_user_permissions": 0,
- "cancel": 0,
- "create": 0,
- "delete": 0,
- "email": 1,
- "export": 0,
- "if_owner": 0,
- "import": 0,
- "permlevel": 0,
- "print": 1,
- "read": 1,
- "report": 1,
- "role": "Sales Manager",
- "set_user_permissions": 0,
- "share": 0,
- "submit": 0,
+ "amend": 0,
+ "apply_user_permissions": 0,
+ "cancel": 0,
+ "create": 0,
+ "delete": 0,
+ "email": 1,
+ "export": 0,
+ "if_owner": 0,
+ "import": 0,
+ "permlevel": 0,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Sales Manager",
+ "set_user_permissions": 0,
+ "share": 0,
+ "submit": 0,
"write": 0
- },
+ },
{
- "amend": 0,
- "apply_user_permissions": 0,
- "cancel": 0,
- "create": 0,
- "delete": 0,
- "email": 1,
- "export": 0,
- "if_owner": 0,
- "import": 0,
- "permlevel": 0,
- "print": 1,
- "read": 1,
- "report": 1,
- "role": "Sales User",
- "set_user_permissions": 0,
- "share": 0,
- "submit": 0,
+ "amend": 0,
+ "apply_user_permissions": 0,
+ "cancel": 0,
+ "create": 0,
+ "delete": 0,
+ "email": 1,
+ "export": 0,
+ "if_owner": 0,
+ "import": 0,
+ "permlevel": 0,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Sales User",
+ "set_user_permissions": 0,
+ "share": 0,
+ "submit": 0,
"write": 0
- },
+ },
{
- "amend": 0,
- "apply_user_permissions": 0,
- "cancel": 0,
- "create": 1,
- "delete": 0,
- "email": 1,
- "export": 0,
- "if_owner": 0,
- "import": 0,
- "permlevel": 0,
- "print": 1,
- "read": 1,
- "report": 1,
- "role": "Sales Master Manager",
- "set_user_permissions": 0,
- "share": 1,
- "submit": 0,
+ "amend": 0,
+ "apply_user_permissions": 0,
+ "cancel": 0,
+ "create": 1,
+ "delete": 0,
+ "email": 1,
+ "export": 0,
+ "if_owner": 0,
+ "import": 0,
+ "permlevel": 0,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Sales Master Manager",
+ "set_user_permissions": 0,
+ "share": 1,
+ "submit": 0,
"write": 1
}
- ],
- "read_only": 0,
- "read_only_onload": 0
-}
+ ],
+ "quick_entry": 0,
+ "read_only": 0,
+ "read_only_onload": 0,
+ "sort_order": "ASC",
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/setup/doctype/sales_partner/sales_partner.py b/erpnext/setup/doctype/sales_partner/sales_partner.py
index 0e0f4ba..5a2aa49 100644
--- a/erpnext/setup/doctype/sales_partner/sales_partner.py
+++ b/erpnext/setup/doctype/sales_partner/sales_partner.py
@@ -22,7 +22,8 @@
self.name = self.partner_name
def validate(self):
- self.parent_website_route = "partners"
+ if not self.route:
+ self.route = "partners/" + self.scrub(self.partner_name)
super(SalesPartner, self).validate()
if self.partner_website and not self.partner_website.startswith("http"):
self.partner_website = "http://" + self.partner_website
diff --git a/erpnext/shopping_cart/cart.py b/erpnext/shopping_cart/cart.py
index daecaa6..d5cde4a 100644
--- a/erpnext/shopping_cart/cart.py
+++ b/erpnext/shopping_cart/cart.py
@@ -155,7 +155,7 @@
def decorate_quotation_doc(doc):
for d in doc.get("items", []):
d.update(frappe.db.get_value("Item", d.item_code,
- ["thumbnail", "website_image", "description", "page_name"], as_dict=True))
+ ["thumbnail", "website_image", "description", "route"], as_dict=True))
return doc
diff --git a/erpnext/stock/doctype/item/item.json b/erpnext/stock/doctype/item/item.json
index 2d6dae2..fd7a31b 100644
--- a/erpnext/stock/doctype/item/item.json
+++ b/erpnext/stock/doctype/item/item.json
@@ -1861,18 +1861,18 @@
"bold": 0,
"collapsible": 0,
"depends_on": "show_in_website",
- "description": "website page link",
- "fieldname": "page_name",
+ "fieldname": "route",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
- "label": "Page Name",
+ "label": "Route",
"length": 0,
- "no_copy": 1,
+ "no_copy": 0,
"permlevel": 0,
+ "precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
@@ -1880,7 +1880,7 @@
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
- "unique": 0
+ "unique": 1
},
{
"allow_on_submit": 0,
@@ -2170,31 +2170,6 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
- "fieldname": "parent_website_route",
- "fieldtype": "Read Only",
- "hidden": 0,
- "ignore_user_permissions": 1,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Parent Website Route",
- "length": 0,
- "no_copy": 1,
- "options": "",
- "permlevel": 0,
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
- },
- {
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
"fieldname": "total_projected_qty",
"fieldtype": "Float",
"hidden": 1,
@@ -2222,13 +2197,14 @@
"icon": "icon-tag",
"idx": 2,
"image_field": "image",
+ "image_view": 0,
"in_create": 0,
"in_dialog": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 1,
- "modified": "2016-06-02 14:48:46.128121",
+ "modified": "2016-06-23 14:44:31.115557",
"modified_by": "Administrator",
"module": "Stock",
"name": "Item",
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index bd2ada9..d156739 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -22,7 +22,6 @@
page_title_field = "item_name",
condition_field = "show_in_website",
template = "templates/generators/item.html",
- parent_website_route_field = "item_group",
no_cache = 1
)
@@ -133,6 +132,14 @@
stock_entry.add_comment("Comment", _("Opening Stock"))
+ def make_route(self):
+ if not self.route:
+ return frappe.db.get_value('Item Group', self.item_group, 'route') + '/' + self.scrub(self.item_name)
+
+ def get_parents(self, context):
+ item_group, route = frappe.db.get_value('Item Group', self.item_group, ['name', 'route'])
+ context.parents = [{'name': route, 'label': item_group}]
+
def validate_website_image(self):
"""Validate if the website image is a public file"""
auto_set_website_image = False
@@ -218,7 +225,7 @@
if self.variant_of:
# redirect to template page!
template_item = frappe.get_doc("Item", self.variant_of)
- frappe.flags.redirect_location = template_item.get_route() + "?variant=" + urllib.quote(self.name)
+ frappe.flags.redirect_location = template_item.route + "?variant=" + urllib.quote(self.name)
raise frappe.Redirect
context.parent_groups = get_parent_item_groups(self.item_group) + \
@@ -506,9 +513,9 @@
def after_rename(self, old_name, new_name, merge):
super(Item, self).after_rename(old_name, new_name, merge)
- if self.page_name:
+ if self.route:
invalidate_cache_for_item(self)
- clear_cache(self.page_name)
+ clear_cache(self.route)
frappe.db.set_value("Item", new_name, "item_code", new_name)
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index 7cea640..70cef36 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -192,7 +192,8 @@
stock_value_diff = frappe.db.get_value("Stock Ledger Entry",
{"voucher_type": "Purchase Receipt", "voucher_no": self.name,
"voucher_detail_no": d.name}, "stock_value_difference")
-
+ if not stock_value_diff:
+ continue
gl_entries.append(self.get_gl_dict({
"account": warehouse_account[d.warehouse]["name"],
"against": stock_rbnb,
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index 292bd61..096a5e0 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -229,27 +229,35 @@
# calculate new valuation rate only if stock value is positive
# else it remains the same as that of previous entry
self.valuation_rate = new_stock_value / new_stock_qty
-
+
def get_moving_average_values(self, sle):
actual_qty = flt(sle.actual_qty)
+ new_stock_qty = flt(self.qty_after_transaction) + actual_qty
+ if new_stock_qty >= 0:
+ if actual_qty > 0:
+ if flt(self.qty_after_transaction) <= 0:
+ self.valuation_rate = sle.incoming_rate
+ else:
+ new_stock_value = (self.qty_after_transaction * self.valuation_rate) + \
+ (actual_qty * sle.incoming_rate)
- if actual_qty > 0 or flt(sle.outgoing_rate) > 0:
- rate = flt(sle.incoming_rate) if actual_qty > 0 else flt(sle.outgoing_rate)
+ self.valuation_rate = new_stock_value / new_stock_qty
- if self.qty_after_transaction < 0 and not self.valuation_rate:
- # if negative stock, take current valuation rate as incoming rate
- self.valuation_rate = rate
+ elif sle.outgoing_rate:
+ if new_stock_qty:
+ new_stock_value = (self.qty_after_transaction * self.valuation_rate) + \
+ (actual_qty * sle.outgoing_rate)
- new_stock_qty = abs(self.qty_after_transaction) + actual_qty
- new_stock_value = (abs(self.qty_after_transaction) * self.valuation_rate) + (actual_qty * rate)
+ self.valuation_rate = new_stock_value / new_stock_qty
+ else:
+ self.valuation_rate = self.outgoing_rate
- if new_stock_qty:
- self.valuation_rate = new_stock_value / flt(new_stock_qty)
+ else:
+ if flt(self.qty_after_transaction) >= 0 and sle.outgoing_rate:
+ self.valuation_rate = sle.outgoing_rate
- elif not self.valuation_rate and self.qty_after_transaction <= 0:
- self.valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse, self.allow_zero_rate)
-
- self.valuation_rate = abs(flt(self.valuation_rate))
+ if not self.valuation_rate and actual_qty > 0:
+ self.valuation_rate = sle.incoming_rate
def get_fifo_values(self, sle):
incoming_rate = flt(sle.incoming_rate)
@@ -268,10 +276,7 @@
self.stock_queue.append([actual_qty, incoming_rate])
else:
qty = self.stock_queue[-1][0] + actual_qty
- if qty == 0:
- self.stock_queue.pop(-1)
- else:
- self.stock_queue[-1] = [qty, incoming_rate]
+ self.stock_queue[-1] = [qty, incoming_rate]
else:
qty_to_pop = abs(actual_qty)
while qty_to_pop:
@@ -298,7 +303,7 @@
break
else:
index = 0
-
+
# select first batch or the batch with same rate
batch = self.stock_queue[index]
if qty_to_pop >= batch[0]:
@@ -320,7 +325,11 @@
stock_value = sum((flt(batch[0]) * flt(batch[1]) for batch in self.stock_queue))
stock_qty = sum((flt(batch[0]) for batch in self.stock_queue))
- self.valuation_rate = (stock_value / flt(stock_qty)) if stock_qty else 0
+ if stock_qty:
+ self.valuation_rate = stock_value / flt(stock_qty)
+
+ if not self.stock_queue:
+ self.stock_queue.append([0, sle.incoming_rate or sle.outgoing_rate or self.valuation_rate])
def get_sle_before_datetime(self):
"""get previous stock ledger entry before current time-bucket"""
diff --git a/erpnext/support/doctype/issue/issue.py b/erpnext/support/doctype/issue/issue.py
index ab8e6d8..36d0876 100644
--- a/erpnext/support/doctype/issue/issue.py
+++ b/erpnext/support/doctype/issue/issue.py
@@ -64,7 +64,7 @@
}
def get_issue_list(doctype, txt, filters, limit_start, limit_page_length=20):
- from frappe.templates.pages.list import get_list
+ from frappe.www.list import get_list
user = frappe.session.user
ignore_permissions = False
if is_website_user():
diff --git a/erpnext/support/web_form/__init__.py b/erpnext/support/web_form/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/support/web_form/__init__.py
diff --git a/erpnext/support/web_form/issues/__init__.py b/erpnext/support/web_form/issues/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/support/web_form/issues/__init__.py
diff --git a/erpnext/support/web_form/issues/issues.js b/erpnext/support/web_form/issues/issues.js
new file mode 100644
index 0000000..699703c
--- /dev/null
+++ b/erpnext/support/web_form/issues/issues.js
@@ -0,0 +1,3 @@
+frappe.ready(function() {
+ // bind events here
+})
\ No newline at end of file
diff --git a/erpnext/support/web_form/issues/issues.json b/erpnext/support/web_form/issues/issues.json
new file mode 100644
index 0000000..4b7c70c
--- /dev/null
+++ b/erpnext/support/web_form/issues/issues.json
@@ -0,0 +1,60 @@
+{
+ "allow_comments": 1,
+ "allow_delete": 1,
+ "allow_edit": 1,
+ "allow_multiple": 1,
+ "breadcrumbs": "[{\"title\":\"Issues\", \"name\":\"issues\"}]",
+ "creation": "2016-06-24 15:50:33.186483",
+ "doc_type": "Issue",
+ "docstatus": 0,
+ "doctype": "Web Form",
+ "idx": 0,
+ "is_standard": 1,
+ "login_required": 1,
+ "modified": "2016-06-24 15:52:24.768558",
+ "modified_by": "Administrator",
+ "module": "Support",
+ "name": "issues",
+ "owner": "Administrator",
+ "published": 1,
+ "route": "issues",
+ "success_message": "",
+ "success_url": "/issues",
+ "title": "Issue",
+ "web_form_fields": [
+ {
+ "fieldname": "subject",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "label": "Subject",
+ "read_only": 0,
+ "reqd": 1
+ },
+ {
+ "default": "Open",
+ "fieldname": "status",
+ "fieldtype": "Select",
+ "hidden": 0,
+ "label": "Status",
+ "options": "Open\nReplied\nHold\nClosed",
+ "read_only": 1,
+ "reqd": 0
+ },
+ {
+ "fieldname": "description",
+ "fieldtype": "Text",
+ "hidden": 0,
+ "label": "Description",
+ "read_only": 0,
+ "reqd": 0
+ },
+ {
+ "fieldname": "attachment",
+ "fieldtype": "Attach",
+ "hidden": 0,
+ "label": "Attachment",
+ "read_only": 0,
+ "reqd": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/support/web_form/issues/issues.py b/erpnext/support/web_form/issues/issues.py
new file mode 100644
index 0000000..2334f8b
--- /dev/null
+++ b/erpnext/support/web_form/issues/issues.py
@@ -0,0 +1,7 @@
+from __future__ import unicode_literals
+
+import frappe
+
+def get_context(context):
+ # do your magic here
+ pass
diff --git a/erpnext/templates/includes/products_as_grid.html b/erpnext/templates/includes/products_as_grid.html
index 0a66de2..7a15c1f 100644
--- a/erpnext/templates/includes/products_as_grid.html
+++ b/erpnext/templates/includes/products_as_grid.html
@@ -1,6 +1,6 @@
{% from "erpnext/templates/includes/macros.html" import product_image_square %}
-<a class="product-link" href="{{ (route or page_name)|abs_url }}">
+<a class="product-link" href="{{ route|abs_url }}">
<div class="col-sm-4 col-xs-4 product-image-wrapper">
<div class="product-image-img">
{{ product_image_square(thumbnail or website_image) }}
diff --git a/erpnext/templates/includes/products_as_list.html b/erpnext/templates/includes/products_as_list.html
index a5523a9..b2069e4 100644
--- a/erpnext/templates/includes/products_as_list.html
+++ b/erpnext/templates/includes/products_as_list.html
@@ -1,6 +1,6 @@
{% from "erpnext/templates/includes/macros.html" import product_image_square %}
-<a class="product-link product-list-link" href="{{ (route or page_name)|abs_url }}">
+<a class="product-link product-list-link" href="{{ route|abs_url }}">
<div class='row'>
<div class='col-xs-3 col-sm-2 product-image-wrapper'>
{{ product_image_square(thumbnail or website_image) }}
diff --git a/erpnext/templates/pages/cart.html b/erpnext/templates/pages/cart.html
index 7d8d0ff..35e4989 100644
--- a/erpnext/templates/pages/cart.html
+++ b/erpnext/templates/pages/cart.html
@@ -75,5 +75,5 @@
</div>
</div>
-<!-- no-sidebar -->
+
{% endblock %}
diff --git a/erpnext/templates/pages/home.py b/erpnext/templates/pages/home.py
index 4440f7e..e62687e 100644
--- a/erpnext/templates/pages/home.py
+++ b/erpnext/templates/pages/home.py
@@ -11,9 +11,7 @@
homepage = frappe.get_doc('Homepage')
for item in homepage.products:
- parent_website_route, page_name = frappe.db.get_value('Item', item.item_code,
- ['parent_website_route', 'page_name'])
- item.route = '/' + '/'.join(filter(None, [parent_website_route, page_name]))
+ item.route = '/' + frappe.db.get_value('Item', item.item_code, 'route')
# show atleast 3 products
if len(homepage.products) < 3:
diff --git a/erpnext/templates/pages/order.html b/erpnext/templates/pages/order.html
index b548e1f..7129178 100644
--- a/erpnext/templates/pages/order.html
+++ b/erpnext/templates/pages/order.html
@@ -4,13 +4,10 @@
{% block breadcrumbs %}
{% include "templates/includes/breadcrumbs.html" %}
{% endblock %}
-{% block title %}
-{{ doc.name }}
-{% endblock %}
-{% block header %}
-<h1>{{ doc.name }}</h1>
-{% endblock %}
+{% block title %}{{ doc.name }}{% endblock %}
+
+{% block header %}<h1>{{ doc.name }}</h1>{% endblock %}
{% block page_content %}
diff --git a/erpnext/templates/pages/partners.html b/erpnext/templates/pages/partners.html
index 132c06b..72d6a64 100644
--- a/erpnext/templates/pages/partners.html
+++ b/erpnext/templates/pages/partners.html
@@ -10,7 +10,7 @@
<div class="row">
<div class="col-md-3">
{% if partner_info.logo -%}
- <a href="{{ partner_info.page_name }}">
+ <a href="{{ partner_info.route }}">
<img itemprop="brand" src="{{ partner_info.logo }}" class="partner-logo"
alt="{{ partner_info.partner_name }}" title="{{ partner_info.partner_name }}" />
</a>
diff --git a/erpnext/templates/pages/partners.py b/erpnext/templates/pages/partners.py
index 508ea71..6725a3e 100644
--- a/erpnext/templates/pages/partners.py
+++ b/erpnext/templates/pages/partners.py
@@ -11,9 +11,6 @@
partners = frappe.db.sql("""select * from `tabSales Partner`
where show_in_website=1 order by name asc""", as_dict=True)
- for p in partners:
- p.route = frappe.get_doc("Sales Partner", p.name).get_route()
-
return {
"partners": partners,
"title": page_title
diff --git a/erpnext/templates/pages/product_search.py b/erpnext/templates/pages/product_search.py
index 465fdd5..8124215 100644
--- a/erpnext/templates/pages/product_search.py
+++ b/erpnext/templates/pages/product_search.py
@@ -14,8 +14,8 @@
# limit = 12 because we show 12 items in the grid view
# base query
- query = """select name, item_name, item_code, page_name, website_image, thumbnail, item_group,
- description, web_long_description as website_description, parent_website_route
+ query = """select name, item_name, item_code, route, website_image, thumbnail, item_group,
+ description, web_long_description as website_description
from `tabItem`
where show_in_website = 1
and disabled=0
@@ -38,9 +38,5 @@
"today": nowdate()
}, as_dict=1)
- for d in data:
- d.route = ((d.parent_website_route + "/") if d.parent_website_route else "") \
- + (d.page_name or "")
-
return [get_item_for_list_in_html(r) for r in data]
diff --git a/erpnext/templates/pages/rfq.html b/erpnext/templates/pages/rfq.html
index cef93a5..5729e89 100644
--- a/erpnext/templates/pages/rfq.html
+++ b/erpnext/templates/pages/rfq.html
@@ -71,5 +71,5 @@
</div>
</div>
-<!-- no-sidebar -->
+
{% endblock %}
diff --git a/erpnext/templates/pages/task_info.html b/erpnext/templates/pages/task_info.html
index c756cd5..1d6574b 100644
--- a/erpnext/templates/pages/task_info.html
+++ b/erpnext/templates/pages/task_info.html
@@ -1,23 +1,23 @@
{% extends "templates/web.html" %}
{% block title %} {{ doc.name }} {% endblock %}
{% block breadcrumbs %}
-<div class="page-breadcrumbs" data-html-block="breadcrumbs">
+<div class="page-breadcrumbs" data-html-block="breadcrumbs">
<ul class="breadcrumb">
<li>
<span class="icon icon-angle-left"></span>
<a href="/projects?project={{ doc.project }}">{{ doc.project }}</a>
- </li>
+ </li>
</ul>
</div>
{% endblock %}
{% block page_content %}
-<div class="row">
+<div class="row">
<div class=" col-sm-8 ">
<h1> {{ doc.subject }} </h1>
</div>
-
+
<div class="col-sm-4">
- <div class="page-header-actions-block" data-html-block="header-actions">
+ <div class="page-header-actions-block" data-html-block="header-actions">
<button type="submit" class="btn btn-primary btn-sm btn-form-submit">
Update</button>
<a href="tasks" class="btn btn-default btn-sm">
@@ -28,38 +28,38 @@
<div class="page-content-block">
<form role="form" data-web-form="tasks">
-
+
<input type="hidden" name="web_form" value="tasks">
<input type="hidden" name="doctype" value="Task">
<input type="hidden" name="name" value="TASK00056">
<div class="row">
<div class="col-sm-12" style="max-width: 500px;">
- <div class="form-group">
+ <div class="form-group">
<label for="project" class="control-label text-muted small">Project</label>
- <input type="text" class="form-control" name="project" readonly value= "{{ doc.project }}">
+ <input type="text" class="form-control" name="project" readonly value= "{{ doc.project }}">
</div>
<div class="form-group">
<label for="subject" class="control-label text-muted small">Subject</label>
<input type="text" class="form-control" name="subject" readonly value="{{ doc.subject }}">
</div>
-
+
<div class="form-group">
<label for="description" class="control-label text-muted small">Details</label>
<textarea class="form-control" style="height: 200px;" name="description">{{ doc.description }}</textarea>
- </div>
-
+ </div>
+
<div class="form-group">
<label for="priority" class="control-label text-muted small">Priority</label>
<input type="text" class="form-control" name="priority" readonly value="{{ doc.priority }}">
</div>
-
+
<div class="form-group">
<label for="exp_start_date" class="control-label text-muted small">Expected Start Date</label>
<input type="text" class="form-control hasDatepicker" name="exp_start_date" readonly value="{{ doc.exp_start_date }}">
</div>
-
+
<div class="form-group">
<label for="exp_end_date" class="control-label text-muted small">Expected End Date</label>
<input type="text" class="form-control hasDatepicker" name="exp_end_date" readonly value="{{ doc.exp_end_date }}">
@@ -78,7 +78,7 @@
</select>
</div>
</div>
- </div>
+ </div>
</form>
</div>
@@ -93,7 +93,7 @@
<a class="add-comment btn btn-default btn-sm">Add Comment</a>
<div style="display: none;" id="comment-form">
<p>Add Comment</p>
- <form>
+ <form>
<fieldset>
<textarea class="form-control" name="comment" rows="5" placeholder="Comment"></textarea>
<p>
@@ -120,7 +120,7 @@
reference_doctype: "Task",
reference_name: "TASK00069",
comment_type: "Comment",
- page_name: "tasks",
+ route: "tasks",
}
frappe.call({
@@ -145,5 +145,5 @@
})
});
</script>
-
+
{% endblock %}
\ No newline at end of file
diff --git a/erpnext/templates/utils.py b/erpnext/templates/utils.py
index 6f4f4ee..f33e647 100644
--- a/erpnext/templates/utils.py
+++ b/erpnext/templates/utils.py
@@ -9,7 +9,7 @@
@frappe.whitelist(allow_guest=True)
def send_message(subject="Website Query", message="", sender="", status="Open"):
- from frappe.templates.pages.contact import send_message as website_send_message
+ from frappe.www.contact import send_message as website_send_message
website_send_message(subject, message, sender)
diff --git a/erpnext/utilities/web_form/__init__.py b/erpnext/utilities/web_form/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/utilities/web_form/__init__.py
diff --git a/erpnext/utilities/web_form/addresses/__init__.py b/erpnext/utilities/web_form/addresses/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/utilities/web_form/addresses/__init__.py
diff --git a/erpnext/utilities/web_form/addresses/addresses.js b/erpnext/utilities/web_form/addresses/addresses.js
new file mode 100644
index 0000000..699703c
--- /dev/null
+++ b/erpnext/utilities/web_form/addresses/addresses.js
@@ -0,0 +1,3 @@
+frappe.ready(function() {
+ // bind events here
+})
\ No newline at end of file
diff --git a/erpnext/utilities/web_form/addresses/addresses.json b/erpnext/utilities/web_form/addresses/addresses.json
new file mode 100644
index 0000000..50fe6e9
--- /dev/null
+++ b/erpnext/utilities/web_form/addresses/addresses.json
@@ -0,0 +1,133 @@
+{
+ "allow_comments": 0,
+ "allow_delete": 0,
+ "allow_edit": 1,
+ "allow_multiple": 1,
+ "creation": "2016-06-24 15:50:33.196990",
+ "doc_type": "Address",
+ "docstatus": 0,
+ "doctype": "Web Form",
+ "idx": 0,
+ "is_standard": 1,
+ "login_required": 1,
+ "modified": "2016-06-24 16:11:28.802353",
+ "modified_by": "Administrator",
+ "module": "Utilities",
+ "name": "addresses",
+ "owner": "Administrator",
+ "published": 1,
+ "route": "address",
+ "success_url": "/addresses",
+ "title": "Address",
+ "web_form_fields": [
+ {
+ "description": "",
+ "fieldname": "address_title",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "label": "Address Title",
+ "read_only": 0,
+ "reqd": 0
+ },
+ {
+ "fieldname": "address_type",
+ "fieldtype": "Select",
+ "hidden": 0,
+ "label": "Address Type",
+ "options": "Billing\nShipping\nOffice\nPersonal\nPlant\nPostal\nShop\nSubsidiary\nWarehouse\nOther",
+ "read_only": 0,
+ "reqd": 1
+ },
+ {
+ "fieldname": "address_line1",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "label": "Address Line 1",
+ "read_only": 0,
+ "reqd": 1
+ },
+ {
+ "fieldname": "address_line2",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "label": "Address Line 2",
+ "read_only": 0,
+ "reqd": 0
+ },
+ {
+ "fieldname": "city",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "label": "City/Town",
+ "read_only": 0,
+ "reqd": 1
+ },
+ {
+ "fieldname": "state",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "label": "State",
+ "read_only": 0,
+ "reqd": 0
+ },
+ {
+ "fieldname": "pincode",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "label": "Postal Code",
+ "read_only": 0,
+ "reqd": 0
+ },
+ {
+ "fieldname": "country",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "label": "Country",
+ "options": "Country",
+ "read_only": 0,
+ "reqd": 1
+ },
+ {
+ "fieldtype": "Column Break",
+ "hidden": 0,
+ "read_only": 0,
+ "reqd": 0
+ },
+ {
+ "fieldname": "email_id",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "label": "Email Id",
+ "read_only": 0,
+ "reqd": 0
+ },
+ {
+ "fieldname": "phone",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "label": "Phone",
+ "read_only": 0,
+ "reqd": 1
+ },
+ {
+ "default": "0",
+ "description": "",
+ "fieldname": "is_primary_address",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "label": "Preferred Billing Address",
+ "read_only": 0,
+ "reqd": 0
+ },
+ {
+ "default": "0",
+ "description": "",
+ "fieldname": "is_shipping_address",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "label": "Preferred Shipping Address",
+ "read_only": 0,
+ "reqd": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/utilities/web_form/addresses/addresses.py b/erpnext/utilities/web_form/addresses/addresses.py
new file mode 100644
index 0000000..2334f8b
--- /dev/null
+++ b/erpnext/utilities/web_form/addresses/addresses.py
@@ -0,0 +1,7 @@
+from __future__ import unicode_literals
+
+import frappe
+
+def get_context(context):
+ # do your magic here
+ pass