diff --git a/.travis.yml b/.travis.yml
index a70062fea3a..92c15e03197 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -58,4 +58,5 @@ script:
- bench reinstall --yes
- bench execute erpnext.setup.setup_wizard.utils.complete
- bench execute erpnext.setup.utils.enable_all_roles_and_domains
+ - bench --verbose run-setup-wizard-ui-test
- bench run-ui-tests --app erpnext
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index 542743dde20..70ae35a5569 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -4,7 +4,7 @@ import inspect
import frappe
from erpnext.hooks import regional_overrides
-__version__ = '8.10.1'
+__version__ = '8.10.2'
def get_default_company(user=None):
'''Get default company for user'''
diff --git a/erpnext/accounts/doctype/account/test_account.js b/erpnext/accounts/doctype/account/test_account.js
index 7b23ef01dd6..039e33e011d 100644
--- a/erpnext/accounts/doctype/account/test_account.js
+++ b/erpnext/accounts/doctype/account/test_account.js
@@ -5,7 +5,9 @@ QUnit.test("test account", function(assert) {
let done = assert.async();
frappe.run_serially([
() => frappe.set_route('Tree', 'Account'),
+ () => frappe.timeout(3),
() => frappe.click_button('Expand All'),
+ () => frappe.timeout(1),
() => frappe.click_link('Debtors'),
() => frappe.click_button('Edit'),
() => frappe.timeout(1),
diff --git a/erpnext/docs/assets/img/articles/brand-logo.gif b/erpnext/docs/assets/img/articles/brand-logo.gif
new file mode 100644
index 00000000000..99a10d3b34b
Binary files /dev/null and b/erpnext/docs/assets/img/articles/brand-logo.gif differ
diff --git a/erpnext/docs/assets/img/articles/download-backup-1.png b/erpnext/docs/assets/img/articles/download-backup-1.png
new file mode 100644
index 00000000000..93597f453f9
Binary files /dev/null and b/erpnext/docs/assets/img/articles/download-backup-1.png differ
diff --git a/erpnext/docs/assets/img/articles/download-backup-2.gif b/erpnext/docs/assets/img/articles/download-backup-2.gif
new file mode 100644
index 00000000000..4109dff0187
Binary files /dev/null and b/erpnext/docs/assets/img/articles/download-backup-2.gif differ
diff --git a/erpnext/docs/assets/img/articles/email-error.png b/erpnext/docs/assets/img/articles/email-error.png
new file mode 100644
index 00000000000..e8c5d73dc35
Binary files /dev/null and b/erpnext/docs/assets/img/articles/email-error.png differ
diff --git a/erpnext/docs/assets/img/articles/fetching-1.png b/erpnext/docs/assets/img/articles/fetching-1.png
new file mode 100644
index 00000000000..fcf3fcbac24
Binary files /dev/null and b/erpnext/docs/assets/img/articles/fetching-1.png differ
diff --git a/erpnext/docs/assets/img/articles/fetching-2.png b/erpnext/docs/assets/img/articles/fetching-2.png
new file mode 100644
index 00000000000..c5594d56f4f
Binary files /dev/null and b/erpnext/docs/assets/img/articles/fetching-2.png differ
diff --git a/erpnext/docs/assets/img/articles/fetching-3.gif b/erpnext/docs/assets/img/articles/fetching-3.gif
new file mode 100644
index 00000000000..5deea3e5f8c
Binary files /dev/null and b/erpnext/docs/assets/img/articles/fetching-3.gif differ
diff --git a/erpnext/docs/assets/img/articles/item-valuation-1.png b/erpnext/docs/assets/img/articles/item-valuation-1.png
new file mode 100644
index 00000000000..16bde1d1202
Binary files /dev/null and b/erpnext/docs/assets/img/articles/item-valuation-1.png differ
diff --git a/erpnext/docs/assets/img/articles/item-valuation-2.png b/erpnext/docs/assets/img/articles/item-valuation-2.png
new file mode 100644
index 00000000000..cc8b8442f3f
Binary files /dev/null and b/erpnext/docs/assets/img/articles/item-valuation-2.png differ
diff --git a/erpnext/docs/assets/img/articles/purchase-return.gif b/erpnext/docs/assets/img/articles/purchase-return.gif
new file mode 100644
index 00000000000..de5f18cf337
Binary files /dev/null and b/erpnext/docs/assets/img/articles/purchase-return.gif differ
diff --git a/erpnext/docs/assets/img/articles/report-header-1.png b/erpnext/docs/assets/img/articles/report-header-1.png
new file mode 100644
index 00000000000..848c3018bbf
Binary files /dev/null and b/erpnext/docs/assets/img/articles/report-header-1.png differ
diff --git a/erpnext/docs/assets/img/articles/report-header-2.png b/erpnext/docs/assets/img/articles/report-header-2.png
new file mode 100644
index 00000000000..47d86958be6
Binary files /dev/null and b/erpnext/docs/assets/img/articles/report-header-2.png differ
diff --git a/erpnext/docs/assets/img/project/timesheet/make_invoice_from_timesheet.gif b/erpnext/docs/assets/img/project/timesheet/make_invoice_from_timesheet.gif
new file mode 100644
index 00000000000..90cc6d6e869
Binary files /dev/null and b/erpnext/docs/assets/img/project/timesheet/make_invoice_from_timesheet.gif differ
diff --git a/erpnext/docs/assets/img/schools/admission/program-enrollment-tool.gif b/erpnext/docs/assets/img/schools/admission/program-enrollment-tool.gif
new file mode 100644
index 00000000000..c25b1799674
Binary files /dev/null and b/erpnext/docs/assets/img/schools/admission/program-enrollment-tool.gif differ
diff --git a/erpnext/docs/assets/img/schools/admission/program-enrollment-tool01.gif b/erpnext/docs/assets/img/schools/admission/program-enrollment-tool01.gif
new file mode 100644
index 00000000000..8b1f6314be0
Binary files /dev/null and b/erpnext/docs/assets/img/schools/admission/program-enrollment-tool01.gif differ
diff --git a/erpnext/docs/assets/img/schools/admission/program-enrollment.gif b/erpnext/docs/assets/img/schools/admission/program-enrollment.gif
new file mode 100644
index 00000000000..616ab17df90
Binary files /dev/null and b/erpnext/docs/assets/img/schools/admission/program-enrollment.gif differ
diff --git a/erpnext/docs/assets/img/schools/admission/program-enrollment.png b/erpnext/docs/assets/img/schools/admission/program-enrollment.png
deleted file mode 100644
index df96f3c320d..00000000000
Binary files a/erpnext/docs/assets/img/schools/admission/program-enrollment.png and /dev/null differ
diff --git a/erpnext/docs/assets/img/schools/admission/student-applicant-enroll.png b/erpnext/docs/assets/img/schools/admission/student-applicant-enroll.png
index fb92a679dff..7cf5e75be4d 100644
Binary files a/erpnext/docs/assets/img/schools/admission/student-applicant-enroll.png and b/erpnext/docs/assets/img/schools/admission/student-applicant-enroll.png differ
diff --git a/erpnext/docs/assets/img/schools/admission/student-application-actions.png b/erpnext/docs/assets/img/schools/admission/student-application-actions.png
new file mode 100644
index 00000000000..e3a4c15ec19
Binary files /dev/null and b/erpnext/docs/assets/img/schools/admission/student-application-actions.png differ
diff --git a/erpnext/docs/assets/img/schools/schedule/student-attendance.gif b/erpnext/docs/assets/img/schools/schedule/student-attendance.gif
new file mode 100644
index 00000000000..82549d46922
Binary files /dev/null and b/erpnext/docs/assets/img/schools/schedule/student-attendance.gif differ
diff --git a/erpnext/docs/assets/img/schools/schedule/student-leave-application.gif b/erpnext/docs/assets/img/schools/schedule/student-leave-application.gif
new file mode 100644
index 00000000000..3b09fac27b2
Binary files /dev/null and b/erpnext/docs/assets/img/schools/schedule/student-leave-application.gif differ
diff --git a/erpnext/docs/assets/img/schools/setup/Course-schedule-error.png b/erpnext/docs/assets/img/schools/setup/Course-schedule-error.png
new file mode 100644
index 00000000000..d9913d857a4
Binary files /dev/null and b/erpnext/docs/assets/img/schools/setup/Course-schedule-error.png differ
diff --git a/erpnext/docs/assets/img/schools/setup/Room-Assesment-plan.png b/erpnext/docs/assets/img/schools/setup/Room-Assesment-plan.png
new file mode 100644
index 00000000000..4b23cd7ea38
Binary files /dev/null and b/erpnext/docs/assets/img/schools/setup/Room-Assesment-plan.png differ
diff --git a/erpnext/docs/assets/img/schools/setup/course-fee-program.png b/erpnext/docs/assets/img/schools/setup/course-fee-program.png
new file mode 100644
index 00000000000..c8527d04e0d
Binary files /dev/null and b/erpnext/docs/assets/img/schools/setup/course-fee-program.png differ
diff --git a/erpnext/docs/assets/img/schools/setup/setup-section.png b/erpnext/docs/assets/img/schools/setup/setup-section.png
deleted file mode 100644
index c02bbc4733d..00000000000
Binary files a/erpnext/docs/assets/img/schools/setup/setup-section.png and /dev/null differ
diff --git a/erpnext/docs/assets/img/schools/setup/student-attendance-tool.gif b/erpnext/docs/assets/img/schools/setup/student-attendance-tool.gif
new file mode 100644
index 00000000000..c8c1c05e809
Binary files /dev/null and b/erpnext/docs/assets/img/schools/setup/student-attendance-tool.gif differ
diff --git a/erpnext/docs/assets/img/schools/setup/student-group-instructor.png b/erpnext/docs/assets/img/schools/setup/student-group-instructor.png
new file mode 100644
index 00000000000..d9457a6d9c4
Binary files /dev/null and b/erpnext/docs/assets/img/schools/setup/student-group-instructor.png differ
diff --git a/erpnext/docs/assets/img/schools/student/guardian.png b/erpnext/docs/assets/img/schools/student/guardian.png
new file mode 100644
index 00000000000..01045be4901
Binary files /dev/null and b/erpnext/docs/assets/img/schools/student/guardian.png differ
diff --git a/erpnext/docs/assets/img/schools/student/schools-settings.png b/erpnext/docs/assets/img/schools/student/schools-settings.png
new file mode 100644
index 00000000000..8a71ac92edb
Binary files /dev/null and b/erpnext/docs/assets/img/schools/student/schools-settings.png differ
diff --git a/erpnext/docs/assets/img/schools/student/student group.gif b/erpnext/docs/assets/img/schools/student/student group.gif
new file mode 100644
index 00000000000..13b1cf43420
Binary files /dev/null and b/erpnext/docs/assets/img/schools/student/student group.gif differ
diff --git a/erpnext/docs/assets/img/schools/student/student-admission.gif b/erpnext/docs/assets/img/schools/student/student-admission.gif
new file mode 100644
index 00000000000..a9ce8dc9b50
Binary files /dev/null and b/erpnext/docs/assets/img/schools/student/student-admission.gif differ
diff --git a/erpnext/docs/assets/img/schools/student/student-batch-validation.gif b/erpnext/docs/assets/img/schools/student/student-batch-validation.gif
new file mode 100644
index 00000000000..dd9f0e821d4
Binary files /dev/null and b/erpnext/docs/assets/img/schools/student/student-batch-validation.gif differ
diff --git a/erpnext/docs/assets/img/schools/student/student-batch.gif b/erpnext/docs/assets/img/schools/student/student-batch.gif
new file mode 100644
index 00000000000..43bae7734d7
Binary files /dev/null and b/erpnext/docs/assets/img/schools/student/student-batch.gif differ
diff --git a/erpnext/docs/assets/img/schools/student/student-batch.png b/erpnext/docs/assets/img/schools/student/student-batch.png
deleted file mode 100644
index 75a33140cc7..00000000000
Binary files a/erpnext/docs/assets/img/schools/student/student-batch.png and /dev/null differ
diff --git a/erpnext/docs/assets/img/schools/student/student-course-validation.gif b/erpnext/docs/assets/img/schools/student/student-course-validation.gif
new file mode 100644
index 00000000000..6ab9d00472b
Binary files /dev/null and b/erpnext/docs/assets/img/schools/student/student-course-validation.gif differ
diff --git a/erpnext/docs/assets/img/schools/student/student-group-attendance.gif b/erpnext/docs/assets/img/schools/student/student-group-attendance.gif
new file mode 100644
index 00000000000..da9aa1ac269
Binary files /dev/null and b/erpnext/docs/assets/img/schools/student/student-group-attendance.gif differ
diff --git a/erpnext/docs/assets/img/schools/student/student-group-creation-tool.gif b/erpnext/docs/assets/img/schools/student/student-group-creation-tool.gif
new file mode 100644
index 00000000000..1fe1a6f0201
Binary files /dev/null and b/erpnext/docs/assets/img/schools/student/student-group-creation-tool.gif differ
diff --git a/erpnext/docs/assets/img/schools/student/student-group-creation-tool.png b/erpnext/docs/assets/img/schools/student/student-group-creation-tool.png
deleted file mode 100644
index 32e6498f8b2..00000000000
Binary files a/erpnext/docs/assets/img/schools/student/student-group-creation-tool.png and /dev/null differ
diff --git a/erpnext/docs/assets/img/schools/student/student-group.png b/erpnext/docs/assets/img/schools/student/student-group.png
deleted file mode 100644
index c562b001328..00000000000
Binary files a/erpnext/docs/assets/img/schools/student/student-group.png and /dev/null differ
diff --git a/erpnext/docs/user/manual/en/accounts/articles/freeze-account.md b/erpnext/docs/user/manual/en/accounts/articles/freeze-account.md
new file mode 100644
index 00000000000..3582c281248
--- /dev/null
+++ b/erpnext/docs/user/manual/en/accounts/articles/freeze-account.md
@@ -0,0 +1,13 @@
+# Freeze an Account
+
+Once an Account is Frozen, you won't be able to use it any accounting transaction. Since this is a critical action, you need to explicitly define a Role who can set an Account as Frozen. You can define this Role in the Account Settings.
+
+`Accounts > Account Settings`
+
+To freeze an Account, go to Chart of Accounts, and edit an Account.
+
+
+
+If User has Role define in the Account Setting assigned, then he/she will be able to set an Account as Frozen.
+
+
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/accounts/articles/index.txt b/erpnext/docs/user/manual/en/accounts/articles/index.txt
index 8b7768a2d18..af8572c2332 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/index.txt
+++ b/erpnext/docs/user/manual/en/accounts/articles/index.txt
@@ -13,4 +13,5 @@ what-is-the-differences-of-total-and-valuation-in-tax-and-charges
withdrawing-salary-from-owners-equity-account
adjust-withhold-amount-payment-entry
common-receivable-account.md
-types-in-tax-template
\ No newline at end of file
+types-in-tax-template
+freeze-account
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/fetching-data-from-a-document.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/fetching-data-from-a-document.md
new file mode 100644
index 00000000000..04b20ac4b9f
--- /dev/null
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/fetching-data-from-a-document.md
@@ -0,0 +1,19 @@
+# Fetching Data from one Document to Another
+
+**Question:** We track Customer's PO No and PO Date field in the Sales Order. To have these values fetched into Sales Invoice as well, we have inserted Custom Field in the Sales Invoice. However, when we create Sales Invoice from the Sales Order, Customer's PO details are not being fetched.
+
+**Answer:** When data is fetched from one transaction to the another transaction, then the mapping of data is done based on the field names. If two transactions have fields with the exact same name, then it's values are mapped.
+
+For example, if you want Customer's PO No. and PO Date to be fetched from Sales Order to Sales Invoice, then you should ensure that Custom Fields added in the Sales Invoice has an exact same field name as in the Sales Order.
+
+Sales Order (standard fields)
+
+
+
+Sales Invoice (custom fields)
+
+
+
+Since names for the Customer's PO related fields are same in the Sales Order and Sales Invoice, when creating Sales Invoice from the Sales Order, values in these fields are auto-fetched.
+
+
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/index.txt b/erpnext/docs/user/manual/en/customize-erpnext/articles/index.txt
index 1740ef0e943..56e7040b47a 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/index.txt
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/index.txt
@@ -15,4 +15,5 @@ set-language
set-precision
user-restriction
maximum-numbers-of-fields-in-a-form
-child-table
\ No newline at end of file
+child-table
+fetching-data-from-a-document
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/training.md b/erpnext/docs/user/manual/en/human-resources/training.md
index 39b9790246d..2aa06791f05 100644
--- a/erpnext/docs/user/manual/en/human-resources/training.md
+++ b/erpnext/docs/user/manual/en/human-resources/training.md
@@ -9,22 +9,23 @@ Schedule seminars, workshops, conferences etc using Training Event. You can also
### Inviting Employees for Event
You can invite your employees to attend the event. You can do so by selecting the employees to be invited in the employee table.
+
By default the status of the employee will be 'Open'.
-The system shall notify the employee with status 'Open' by sending a email to the office email address of the employee as mentioned in the employee master if you have selected 'Send Email' checkbox.
-The status is changed to 'Invited' when an invitation email is sent to the employee by the system.
-When an Employee confirms his/her presence for the event you can change the status to 'Confirmed'.
+When you submit the Training Event, a notifcation will be sent to the employee notifying that the Training has been scheduled. This is sent via Email Alert "Training Scheduled". You can modifiy this Email Alert to customize the message.
+
### Training Result
-After compleation of the training Employee Wise training results can be stored based on the Feedback received from the Trainer.
+After compleation of the training Employee-wise training results can be stored based on the Feedback received from the Trainer.
+When the Training Result is submitted, all the employees will receive an email notifying them that they must share their feedback via "Training Feedback". This is also managed via an Email Alert, so you can customize this alert too.
-### Trainig Feedback
+### Training Feedback
-Collect feedback regarding the event from your Employees using Training Feedback.
+Employees can then share their feedback via Training Feedback.
diff --git a/erpnext/docs/user/manual/en/projects/timesheet/sales-invoice-from-timesheet.md b/erpnext/docs/user/manual/en/projects/timesheet/sales-invoice-from-timesheet.md
index 9be2bad0e21..4dbdcbb6dc3 100644
--- a/erpnext/docs/user/manual/en/projects/timesheet/sales-invoice-from-timesheet.md
+++ b/erpnext/docs/user/manual/en/projects/timesheet/sales-invoice-from-timesheet.md
@@ -48,6 +48,8 @@ In the Timesheet, if "Is Billable" is checked, you will find option to create Sa
+
+
####Sales Invoice
Sales Invoice has dedicated table for the Timesheet table where Timesheet details will be updated. You can select more Timesheets in this table.
diff --git a/erpnext/docs/user/manual/en/schools/Assessment/assessment_criteria_group.md b/erpnext/docs/user/manual/en/schools/Assessment/assessment_criteria_group.md
new file mode 100644
index 00000000000..4287ca86179
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/Assessment/assessment_criteria_group.md
@@ -0,0 +1 @@
+#
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/__init__.py b/erpnext/docs/user/manual/en/schools/Attendance/__init__.py
similarity index 100%
rename from erpnext/docs/user/manual/en/setting-up/setup-wizard/__init__.py
rename to erpnext/docs/user/manual/en/schools/Attendance/__init__.py
diff --git a/erpnext/docs/user/manual/en/schools/Attendance/index.md b/erpnext/docs/user/manual/en/schools/Attendance/index.md
new file mode 100644
index 00000000000..3153a590227
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/Attendance/index.md
@@ -0,0 +1,6 @@
+#Attendance
+
+
+### Topics
+
+{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/Attendance/index.txt b/erpnext/docs/user/manual/en/schools/Attendance/index.txt
new file mode 100644
index 00000000000..8cd02627a20
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/Attendance/index.txt
@@ -0,0 +1,3 @@
+student-attendance
+student-leave-application
+student-attendance-tool
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/Attendance/student-attendance-tool.md b/erpnext/docs/user/manual/en/schools/Attendance/student-attendance-tool.md
new file mode 100644
index 00000000000..5c4ce3072a3
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/Attendance/student-attendance-tool.md
@@ -0,0 +1,15 @@
+# Student Attendance Tool
+
+The Student Attendance tool allow you to bulk update the attendance for students based on **Student Group and Course Schedule**.
+
+To mark the **Attedance* based on Student Group select the group based on
+
+**1. Batch
+ 2. Course
+ 3. Activity **
+
+Student detials will be autofetched and you can mark the attendance of the given date.
+
+
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/Attendance/student-attendance.md b/erpnext/docs/user/manual/en/schools/Attendance/student-attendance.md
new file mode 100644
index 00000000000..1b917d0ae26
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/Attendance/student-attendance.md
@@ -0,0 +1,15 @@
+# Student Attendance
+
+Attendance doctype allows you to track and manage attendance of a student in all the days at any time. The Attendance module is designed to help teachers easily mark student attendance during class.
+
+Attendance Records can be created against Student on daily basis.
+
+To create Attendance record :
+
+Select the **Student, Course Schedule and Student Group** for which attendance is to be marked for the given date. Set the Status to Present/Absent and save.
+
+
+
+**Student Attendance tool** can be used for bulk updation of the attendance based on **Batch, Course or Activity**.
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/Attendance/student-leave-application.md b/erpnext/docs/user/manual/en/schools/Attendance/student-leave-application.md
new file mode 100644
index 00000000000..5620bdadd73
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/Attendance/student-leave-application.md
@@ -0,0 +1,13 @@
+#Student Leave Application
+
+ERPNext allows you to record the leave application for a student.
+
+To create a Student Leave application record, enter the Student and the date for the leave is applied and save.
+
+
+
+Incase the student is not attending the school in order to participate or represent school in any event, he/she can be mark as present from the Leave Application itself.
+
+Once a Leave Application is recorded for a student it will not be recorded in the absent student report as he has applied for a leave.
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/admission/index.md b/erpnext/docs/user/manual/en/schools/admission/index.md
index 87cdfe5c899..b602271bbbd 100644
--- a/erpnext/docs/user/manual/en/schools/admission/index.md
+++ b/erpnext/docs/user/manual/en/schools/admission/index.md
@@ -1,6 +1,6 @@
# Admission
-This section contains student admission related documents.
+The Admission section allow you to create all records starting from Student application till the program enrollment. Below is the list of documents for Student addmission.
### Topics
diff --git a/erpnext/docs/user/manual/en/schools/admission/index.txt b/erpnext/docs/user/manual/en/schools/admission/index.txt
index ec9e768116a..680d7790897 100644
--- a/erpnext/docs/user/manual/en/schools/admission/index.txt
+++ b/erpnext/docs/user/manual/en/schools/admission/index.txt
@@ -1,2 +1,4 @@
+student-admission
student-applicant
-program-enrollment
\ No newline at end of file
+program-enrollment
+program-enrollment-Tool
diff --git a/erpnext/docs/user/manual/en/schools/admission/program-enrollment-tool.md b/erpnext/docs/user/manual/en/schools/admission/program-enrollment-tool.md
new file mode 100644
index 00000000000..2a2fa1e58e7
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/admission/program-enrollment-tool.md
@@ -0,0 +1,16 @@
+# Program Enrollment Tool
+
+The Program Enrollment tool allows the bulk enrollment of the **Student Applicants** in a Program.
+
+
+You can create the the Program Enrollment for :
+
+1. **Student Applicants** >> List of Student Applicants will be fetched for the selected **Program** and **Academic year**.
+
+
+
+2. **Program Enrollment** >> You can bulk update the **Program** for the students from one academic year to another in the same **Program** or a new **Program**.
+
+
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/admission/program-enrollment.md b/erpnext/docs/user/manual/en/schools/admission/program-enrollment.md
index 2dcc6cb2cec..cc1308cf6c1 100644
--- a/erpnext/docs/user/manual/en/schools/admission/program-enrollment.md
+++ b/erpnext/docs/user/manual/en/schools/admission/program-enrollment.md
@@ -1,7 +1,12 @@
# Program Enrollment
-This form allows you to enroll a student to a program. A student can be enrolled to multiple programs.
+Program Enrollment describes an educational model where students must complete a defined set of courses towards their academic objective in a specified sequence. Enrollment is a program driven process in which the student select the Program to enrol for in a Academic Year.
-
+Once a student have applied for the **Program** and the application is approved, the program enrollment is done for that student.
+
+
+
+- A student can be enrolled in multiple Course for a program in a given academeic year.
+- Based on the Fee structure selected at the time of enrollment Fee detials are created of the student.
{next}
diff --git a/erpnext/docs/user/manual/en/schools/admission/student-applicant.md b/erpnext/docs/user/manual/en/schools/admission/student-applicant.md
index e67c1dc79e6..22d370939d1 100644
--- a/erpnext/docs/user/manual/en/schools/admission/student-applicant.md
+++ b/erpnext/docs/user/manual/en/schools/admission/student-applicant.md
@@ -18,7 +18,9 @@ You can Approve or Reject a student applicant. By accepting a student applicant
and will not allow you to change the application status unless the student record is deleted.
### Student Enrollment
+Once the form is submitted you can either approve or reject the application form.
+
Once you approve a Student Applicant you can enroll them to a program. When you click the 'Enroll' buttom,
the system shall create a student against that applicant and redirect you to the [Program Enrollment form](/docs/user/manual/en/schools/student/program-enrollment.html).
diff --git a/erpnext/docs/user/manual/en/schools/admission/student_admission.md b/erpnext/docs/user/manual/en/schools/admission/student_admission.md
new file mode 100644
index 00000000000..eeaa977912b
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/admission/student_admission.md
@@ -0,0 +1,13 @@
+# Student Admission
+
+The admission process begins with filling the admission form. The Student Admission record enables to intitate your admission process for a given **Academic year**. ERPNext admission module allow you to create an admission record which can be then published on the ERPNext generate website.
+
+To create a Student Admission record go to :
+
+**Schools** >> **Admissions** >> **Student Admission** >>
+
+
+
+
+
+Once a admission record is created it can be published on the website and the student can apply from the web portal itself.
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/index.md b/erpnext/docs/user/manual/en/schools/index.md
index 8c766d6db49..d317d39bfaa 100644
--- a/erpnext/docs/user/manual/en/schools/index.md
+++ b/erpnext/docs/user/manual/en/schools/index.md
@@ -1,7 +1,7 @@
# Schools
-The School Modules is designed to meet requirements of Schools, Colleges & Educational Institutes.
+The School Modules in ERPNext is designed to meet requirements of Schools, Colleges & Educational Institutes. This is a centralized system, which maintains and updates all the activities related to an Institution. This will ease the process of each and every aspect of a School, be it Students, Admission, Examination and Fee.
diff --git a/erpnext/docs/user/manual/en/schools/index.txt b/erpnext/docs/user/manual/en/schools/index.txt
index b485fdcfea5..159089c6f38 100644
--- a/erpnext/docs/user/manual/en/schools/index.txt
+++ b/erpnext/docs/user/manual/en/schools/index.txt
@@ -1,6 +1,7 @@
student
admission
+Attendance
schedule
fees
setup
-assessment
\ No newline at end of file
+Assessment
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/schedule/student-attendance.md b/erpnext/docs/user/manual/en/schools/schedule/student-attendance.md
deleted file mode 100644
index 84e1ea8669d..00000000000
--- a/erpnext/docs/user/manual/en/schools/schedule/student-attendance.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Student Attendance
-
-Maintains attendance record of the student. Attendance Records can be created against Course Schedules.
-
-
-
-{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/academic-term.md b/erpnext/docs/user/manual/en/schools/setup/academic-term.md
index 6306444b616..b52bea71086 100644
--- a/erpnext/docs/user/manual/en/schools/setup/academic-term.md
+++ b/erpnext/docs/user/manual/en/schools/setup/academic-term.md
@@ -1,5 +1,9 @@
# Academic Term
+An academic term (or simply "term") is a portion of an academic year, the time during which an educational institution holds classes. The schedules adopted vary widely. The academic term can be a quater, trimester or a semester.
+
+The **Academic term** form in ERPNext enables you to create academic terms within in a year. Based on the term schedule enter the start and end date for the schedule and generate the term for a Academic year.
+
diff --git a/erpnext/docs/user/manual/en/schools/setup/academic-year.md b/erpnext/docs/user/manual/en/schools/setup/academic-year.md
index 3913eb634b2..4fc5f929a56 100644
--- a/erpnext/docs/user/manual/en/schools/setup/academic-year.md
+++ b/erpnext/docs/user/manual/en/schools/setup/academic-year.md
@@ -1,5 +1,11 @@
# Academic Year
+An academic year is a period of time which schools, colleges and universities use to measure a quantity of study.
+
+The **Academic year** form have the Start and End date for the Academic year.
+
-{next}
\ No newline at end of file
+**Student group** link is given to view or add the respective groups to the Academic year.
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/course.md b/erpnext/docs/user/manual/en/schools/setup/course.md
index 140131dccd2..dc10ed54b17 100644
--- a/erpnext/docs/user/manual/en/schools/setup/course.md
+++ b/erpnext/docs/user/manual/en/schools/setup/course.md
@@ -1,5 +1,15 @@
# Course
+ A course is a unit of teaching that typically lasts one academic term, is led by one or more instructors (teachers or professors), and has a fixed number of students. Students may receive a grade and academic credit after completion of the course.
+
+To create a **Course** enter the Course name and Code. Code for the course should be unique for every course. You can also link the department under which the course is conducted.
+
+Once a **Course** is created, a course schedule can defined for the same.
+
+
+
+The Course form is further linked to **Program, Student Group and Assessment Plan** doctypes. The links allow to view/create the related documents for a **Course**.
+
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/index.md b/erpnext/docs/user/manual/en/schools/setup/index.md
index 9de753614c8..4e0915277b7 100644
--- a/erpnext/docs/user/manual/en/schools/setup/index.md
+++ b/erpnext/docs/user/manual/en/schools/setup/index.md
@@ -1,5 +1,7 @@
# Setup
+The Setup section of Schools module provides facility to make some basic configuration. Below are doctypes for basic configuration.
+
### Topics
diff --git a/erpnext/docs/user/manual/en/schools/setup/index.txt b/erpnext/docs/user/manual/en/schools/setup/index.txt
index fb9ba05d090..8fb9bb2def9 100644
--- a/erpnext/docs/user/manual/en/schools/setup/index.txt
+++ b/erpnext/docs/user/manual/en/schools/setup/index.txt
@@ -2,5 +2,8 @@ course
program
instructor
room
+student-category
+student-batch-name
academic-term
-academic-year
\ No newline at end of file
+academic-year
+school-settings
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/instructor.md b/erpnext/docs/user/manual/en/schools/setup/instructor.md
index 1a4d35161c2..6150f025fe7 100644
--- a/erpnext/docs/user/manual/en/schools/setup/instructor.md
+++ b/erpnext/docs/user/manual/en/schools/setup/instructor.md
@@ -1,5 +1,18 @@
# Instructor
+An instructoe is a teacher, or professor, of a specialised subject that involves skill.
+
+You can create an Instructor and link it to the Employee master and a Departmemt.
+
+An **Instructor** is further linked to a **Course Schedule**, where you can define the schedule for a **Course** for a give date and **Room no**.
+
+
+It is also linked to **Student group** where an **Instructor** is assigned to the Student group.
+
+
+
+An **Instructor** is also linked to an **Assesment Plan** for a Student group. The Instructor can be an Examiner or the supervisor for the assesment.
+
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/program.md b/erpnext/docs/user/manual/en/schools/setup/program.md
index 64513e20b0f..be10166e7be 100644
--- a/erpnext/docs/user/manual/en/schools/setup/program.md
+++ b/erpnext/docs/user/manual/en/schools/setup/program.md
@@ -1,5 +1,19 @@
# Program
+An educational program is a program written by the institutions which determines the learning progress of each subject in all the stages of formal education.
+
+To create a Program go to :
+
+###Schools >> Setup >> Program >> New Program
+
+Enter a unique code for every **Program**. You can also link the **Program** to the department under which it is conducted.
+
+Add the relevant Course and the Fee details for a program.
+
+
+
+The Program Doctype is further linked to the **Student applicant**, **Program enrollment, Student group, Fee structre and Fee**. The links allow to view or create the related document for a Program.
+
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/room.md b/erpnext/docs/user/manual/en/schools/setup/room.md
index bb265e3ea21..43ddde92245 100644
--- a/erpnext/docs/user/manual/en/schools/setup/room.md
+++ b/erpnext/docs/user/manual/en/schools/setup/room.md
@@ -1,6 +1,17 @@
# Room
+A classroom is a space (room or lab) where you want to schedule courses or examinations. A room in an educational institute can be a Class room, a laboratory or a Examination hall.
+
+The Room doctype allows you to record the room number and the seating capacity for a classroom. Once a room is created Course schedule link is provided in the Room doctype to view or add the course schedule for the classroom.
+The course schedule validate the availability of the Room number and an alert message is shown if there is an overlap for the Room number for a given time slot.
+
+
+
+The Room number is further linked to the Assesment plan. It validates the availability of examination room for the assessment to be held for a given date and time.
+
+
+
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/school-settings.md b/erpnext/docs/user/manual/en/schools/setup/school-settings.md
new file mode 100644
index 00000000000..ce9e9144b7a
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/setup/school-settings.md
@@ -0,0 +1,15 @@
+#School Settings
+
+The Schools settings page allow you to setup basic settings like **Academic Year and Term** for the Schools setup.
+
+
+
+The checkbox to Validate Batch for Students in Student Group enables the Student Batch validation for every Student from the Program Enrollment for the **Batch** based on **Student Group**
+
+
+
+You can enable the validation of Course for every Student from the enrolled Courses in Program Enrollment,for Course based Student Group by checking the settings for **Validate Enrolled Course for Students in Student Group**
+
+
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/student-batch-name.md b/erpnext/docs/user/manual/en/schools/setup/student-batch-name.md
new file mode 100644
index 00000000000..056f9108636
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/setup/student-batch-name.md
@@ -0,0 +1,10 @@
+# Student Batch
+
+Student batch is a collection of students from Student Groups. **Student batch** allows you to create **Student Group** based on a batch. When a student is enrolled for a **Program**, the Student batch is selected to enroll the student for the given Program and batch
+
+
+
+You can also get a **Student Batch-Wise Attendance** report to view the number of student present from the Batch.
+
+
+{next}
diff --git a/erpnext/docs/user/manual/en/schools/setup/student-category.md b/erpnext/docs/user/manual/en/schools/setup/student-category.md
new file mode 100644
index 00000000000..0d769279727
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/setup/student-category.md
@@ -0,0 +1,12 @@
+# Student Category
+
+Student Category doctype allow you to classify student based various categories. In Institutions, there may be fee concession for some categories such as Handicapped students, foreign, nationals, reserved category by the government etc.
+
+To create Student category go to Setup >> Student Category >> New.
+
+We can create new student category by adding a name and save it
+
+
+
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/student/guardian.md b/erpnext/docs/user/manual/en/schools/student/guardian.md
new file mode 100644
index 00000000000..7bbdbc22c5c
--- /dev/null
+++ b/erpnext/docs/user/manual/en/schools/student/guardian.md
@@ -0,0 +1,9 @@
+#Guardian
+
+The Guardian doctype allows you to record the guardian details for a **Student**.
+
+
+
+The email id added in the **Guardian** detail can be linked to a email group for sending newsletter or announcements.
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/student/index.txt b/erpnext/docs/user/manual/en/schools/student/index.txt
index 9b31be4dc98..89704b1fc79 100644
--- a/erpnext/docs/user/manual/en/schools/student/index.txt
+++ b/erpnext/docs/user/manual/en/schools/student/index.txt
@@ -1,5 +1,6 @@
student
+guardian
student-log
student-batch
student-group
-student-group-creation-tool
+student-group-creation-tool
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/student/student-batch.md b/erpnext/docs/user/manual/en/schools/student/student-batch.md
index 4987c0313f2..056f9108636 100644
--- a/erpnext/docs/user/manual/en/schools/student/student-batch.md
+++ b/erpnext/docs/user/manual/en/schools/student/student-batch.md
@@ -1,7 +1,10 @@
# Student Batch
-Student batch is a collection of students from Student Groups.
+Student batch is a collection of students from Student Groups. **Student batch** allows you to create **Student Group** based on a batch. When a student is enrolled for a **Program**, the Student batch is selected to enroll the student for the given Program and batch
+
+
+
+You can also get a **Student Batch-Wise Attendance** report to view the number of student present from the Batch.
-
{next}
diff --git a/erpnext/docs/user/manual/en/schools/student/student-group-creation-tool.md b/erpnext/docs/user/manual/en/schools/student/student-group-creation-tool.md
index 130c94491eb..1cd9b1e796f 100644
--- a/erpnext/docs/user/manual/en/schools/student/student-group-creation-tool.md
+++ b/erpnext/docs/user/manual/en/schools/student/student-group-creation-tool.md
@@ -1,8 +1,17 @@
# Student Group Creation Tool
-This tool allows you to create student groups in bulk. You can specify multiple parameters to create them.
+The Student group creation tool allows you to create student groups in bulk.
+To create Student group using this tool go to
-
+##Schools >>Student >> Student Group creation tool
+
+Select the **Academic Term** and the **Program** for which a student group is to be created.
+
+
+
+By default the student group is created based on the **Course** only. The check box for "Separate course based Group for every Batch" allows you to create batchwise Student groups for a course.
+
+You can leave it unchecked if you don't want to consider batch while making course based groups.
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/student/student-group.md b/erpnext/docs/user/manual/en/schools/student/student-group.md
index 191e917a8bf..cf3f82c5a2d 100644
--- a/erpnext/docs/user/manual/en/schools/student/student-group.md
+++ b/erpnext/docs/user/manual/en/schools/student/student-group.md
@@ -1,8 +1,22 @@
# Student Group
-A student group is a collection of students taking a same course. You can create Course Schedules and Examinations against a Student Group.
-A student group needs to be created for every course in a particular academic term and academic year.
+A student group is a collection of students taking same course. You can create Course Schedules and Examinations against a Student Group.
+
+A Student Group needs to be created for every course for **Academic Term** and **Academic Year**. The student group can be create based on **Batch, Course and Activity**.
+
+To create a Student Group go to:
+
+Schools >> Student >> New Student Group
+
+
+
+To create a Student group based on **Batch**, select the **Progam** and **Batch**, where as to create a Student group based on **Course**, you will only have to select the Course Code. Creating a student group based on activity allows you to group of student for events and activities happening in the institute.
+
+Once a student group is created you can mark attendance for the group.
+
+
+
+You can also update the **Email Group** for the Student Group. Click on Update Email Group to add all the email ids of the gaurdians in the respective email group and **Newsletter** can be created and sent to the Email group.
-
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/student/student-log.md b/erpnext/docs/user/manual/en/schools/student/student-log.md
index a037a231ac6..160e39fcdc4 100644
--- a/erpnext/docs/user/manual/en/schools/student/student-log.md
+++ b/erpnext/docs/user/manual/en/schools/student/student-log.md
@@ -1,6 +1,7 @@
# Student Log
-You can make a note of student activities using student log.
+The Student log Doctype enables you to add and edit addtional information for a student.
+You can make a note of student activities using Student log.
Logs can be categorised as 'General', 'Academic', 'Medical' or 'Achievement'
diff --git a/erpnext/docs/user/manual/en/schools/student/student.md b/erpnext/docs/user/manual/en/schools/student/student.md
index dd99a80d2f4..09e44714e68 100644
--- a/erpnext/docs/user/manual/en/schools/student/student.md
+++ b/erpnext/docs/user/manual/en/schools/student/student.md
@@ -1,10 +1,12 @@
# Student
A Student is a person who has enrolled at your institute and you have accepted their application.
-The student doctype maintains personal details of the student.
-
-You can view everything related to a particular student on this page. Eg : Fees, Student Group, etc
+The Student doctype maintains detials like personal information, date of birth, address etc. It also records the **Guardian** and sibling details.
+The student is enrolled in a **Program** when the application is approved. Once the enrollement is done the **Student Applicant** status is update to Admitted.
-{next}
+You can view every doctype created for a particular student. Eg : Fees, Student Group, etc
+
+
+{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/email-error.md b/erpnext/docs/user/manual/en/setting-up/articles/email-error.md
new file mode 100644
index 00000000000..9d5abd021e7
--- /dev/null
+++ b/erpnext/docs/user/manual/en/setting-up/articles/email-error.md
@@ -0,0 +1,9 @@
+# Email Error in Sending or Receiving
+
+In ERPNext, you can customize the Incoming and Outgoing Email Gateway. On saving an Email Account, ERPNext tries establishing a connection with your email gateway. If your ERPNext account is able to connect fine, then Email Account is saved successfully. If not, then you might receive an error as below.
+
+
+
+This indicates that using login credentials and other email gateway details provided in the Email Account, ERPNext is not able to connect to your email server. Please ensure that you have entered valid email credentials for your Email Gateway. Once you have configured Email Account successfully, you should be able to send and receive emails from your ERPNext account fine.
+
+Note: Your ERPNext account is connected with an ERPNext email server by default. If you don't want to use your own email server, you can continue sending emails using ERPNext email server, without any configuration required in the Email Account.
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/index.txt b/erpnext/docs/user/manual/en/setting-up/articles/index.txt
index d175d929dae..259229ec8d6 100644
--- a/erpnext/docs/user/manual/en/setting-up/articles/index.txt
+++ b/erpnext/docs/user/manual/en/setting-up/articles/index.txt
@@ -14,4 +14,5 @@ using-custom-domain-on-erpnext
setup-two-factor-authentication
difference-between-system-user-and-website-user
outgoing-email-gateway
-print-format-sections
\ No newline at end of file
+print-format-sections
+email-error
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/setting-up/data/download-backup.md b/erpnext/docs/user/manual/en/setting-up/data/download-backup.md
new file mode 100644
index 00000000000..6c98cf34f84
--- /dev/null
+++ b/erpnext/docs/user/manual/en/setting-up/data/download-backup.md
@@ -0,0 +1,13 @@
+# Download Backup
+
+In the ERPNext, you can manually download database backup. To get the latest database backup, go to:
+
+`Setup > Data > Download Backup`
+
+Backup available for the download is updated in every eight hours. Click on the link to download the backups at a given time.
+
+
+
+By default three latest backups will be available for the download. If you want to customize no. of backups, then click on "Set Number of Backups". In the System Settings, you can set Number of Backups available for the download at a time.
+
+
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/setting-up/data/index.txt b/erpnext/docs/user/manual/en/setting-up/data/index.txt
index 998b5a21647..d15f9175bb3 100644
--- a/erpnext/docs/user/manual/en/setting-up/data/index.txt
+++ b/erpnext/docs/user/manual/en/setting-up/data/index.txt
@@ -1,2 +1,3 @@
data-import-tool
bulk-rename
+download-backup
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/index.md b/erpnext/docs/user/manual/en/setting-up/setup-wizard/index.md
index 244d893c7bb..c05c4af5b6a 100644
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/index.md
+++ b/erpnext/docs/user/manual/en/setting-up/setup-wizard/index.md
@@ -1,6 +1,6 @@
# Setup Wizard
-The Setup Wizard helps you quickly setup your ERPnext by helping you create your company, Items, Customer, Suppliers and will also setup a basic website with this data.
+The Setup Wizard helps you quickly setup ERPnext as per your locale and sets up your organisation.
Here is a quick overview of the steps:
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/index.txt b/erpnext/docs/user/manual/en/setting-up/setup-wizard/index.txt
index eb7655826e7..b2f680a388b 100644
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/index.txt
+++ b/erpnext/docs/user/manual/en/setting-up/setup-wizard/index.txt
@@ -1,10 +1,5 @@
step-1-language
step-2-currency-and-timezone
step-3-user-details
+step-4-two-factor-authentication
step-5-company-details
-step-6-letterhead-and-logo
-step-7-add-users
-step-8-tax-details
-step-9-customer-names
-step-10-suppliers
-step-11-item
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-10-suppliers.md b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-10-suppliers.md
deleted file mode 100644
index 364b4d6982c..00000000000
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-10-suppliers.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# Step 10: Suppliers
-
-Enter a few of your Suppliers' names.
-
-
-
----
-
-To understand Suppliers in detail visit [Supplier Master](/docs/user/manual/en/buying/supplier.html)
-
-{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-11-item.md b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-11-item.md
deleted file mode 100644
index 42d7e3d26d5..00000000000
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-11-item.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Step 11: Item Names
-
-In this final step, please enter the names of the Items you buy or sell.
-
-
-
-Please set the group of the item (Product / Service) and unit of measure. Don't worry you will be able to edit all of this later.
-
----
-
-## Thats it!
-
-Once you are done with the setup wizard you will see the familiar desktop page.
-
-{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-6-letterhead-and-logo.md b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-6-letterhead-and-logo.md
deleted file mode 100644
index 0286a3ee23e..00000000000
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-6-letterhead-and-logo.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# Step 6: Letterhead and Logo
-
-Attach Company Letterhead and Company Logo.
-
-
-
----
-
-### Letterhead
-
-A letterhead is the heading at the top of a sheet of letter paper (stationery). That heading usually consists of a name and an address, and a logo or corporate design.
-
-Click on the box ‘Attach Letterhead’ . Select the image file from the place it is stored and click enter.
-
-You may choose to skip this step if your letterhead is not ready.
-
-To select letterhead later through the setup module, read [Letter-head](/docs/user/manual/en/setting-up/print/letter-head.html)
-
-#### To "attach as web-link"
-
-For any attachments in ERPNext, you can also attach as a web-link. If you are using other tools like Dropbox or Google Docs to manage your files, you can set its public link.
-
-{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-7-add-users.md b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-7-add-users.md
deleted file mode 100644
index c92721c91b0..00000000000
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-7-add-users.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Step 7: Add Users
-
-Add other users and assign them roles based on their job responsibilities.
-
-
-
-{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-8-tax-details.md b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-8-tax-details.md
deleted file mode 100644
index dae88e4432a..00000000000
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-8-tax-details.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Step 8: Tax Details
-
-Enter any three types of taxes which you regularly pay. This wizard will create a tax master which will calculate the taxes as per the tax-type.
-
-
-
-Just set the tax name and the standard percentage levied.
-
----
-
-Some examples of tax types are given below.
-
-#### VAT
-
-A value added tax (VAT) is a form of consumption tax. From the perspective of the buyer, it is a tax on the purchase price. From that of the seller, it is a tax only on the value added to a product, material, or a service. From an accounting point of view, by the stage of its manufacture or distribution. The manufacturer remits to the government the difference between these two amounts, and retains the rest for themselves to offset the taxes they had previously paid on the inputs.
-
-The purpose of VAT is to generate tax revenues to the government similar to the corporate income tax or the personal income tax. For Example: When you shop at a departmental store and avail discount on the products, the store charges you 5% extra on the total bill as the VAT.
-
-To setup VAT in the setup wizard , simply enter the percentage amount levied by your government. To setup VAT at a later stage read [setting-up-taxes](/docs/user/manual/en/setting-up/setting-up-taxes.html)
-
-{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-9-customer-names.md b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-9-customer-names.md
deleted file mode 100644
index e3489433fcb..00000000000
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-9-customer-names.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# Step 9: Customers
-
-Enter your Customer names and the contact person from that organisation.
-
-
-
-
----
-
-#### Difference between a customer name and a contact name
-
-A customer name is the name of the organisation and a contact name is the name of the person from that organisation.
-
-For Example: If American Power Mills is an organisation name and their founder Shiv Agarwal has installed ERPNext on his system. Then,
-
-Customer Name: American Power Mills
-
-Contact Name: Shiv Agarwal
-
-To understand Customer in detail visit [Customer Details](/docs/user/manual/en/CRM/customer.html)
-
-{next}
diff --git a/erpnext/docs/user/manual/en/stock/articles/delivery-note-stock-error.md b/erpnext/docs/user/manual/en/stock/articles/delivery-note-stock-error.md
new file mode 100644
index 00000000000..afb6de92d8c
--- /dev/null
+++ b/erpnext/docs/user/manual/en/stock/articles/delivery-note-stock-error.md
@@ -0,0 +1,7 @@
+# Delivery Note Negative Stock Error
+
+**Question**: When submitting a Delivery Note, receiving a message says that item's stock is insufficient, but we have item's stock available in the Warehouse.
+
+**Answer**: On submission of Delivery Note, stock level is checked as on Posting Date and Posting Time of a Delivery Note. It's possible that you have stock of an Item available in the Warehouse. But if you are creating back-dated Delivery Note, and if item was not available in the warehouse on the Posting Date and Posting Time of Delivery Note, you are likely to receive an error message on the negative stock. You can refer to the Stock Ledger report to confirm the same.
+
+If this is the case, you should edit the Posting Date and Time of a Delivery Note, and ensure that it is after the Posting Date and Time of item's receipt entry.
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/articles/index.txt b/erpnext/docs/user/manual/en/stock/articles/index.txt
index df779de628a..acf1375214e 100644
--- a/erpnext/docs/user/manual/en/stock/articles/index.txt
+++ b/erpnext/docs/user/manual/en/stock/articles/index.txt
@@ -10,4 +10,8 @@ repack-entry
serial-no-naming
stock-entry-purpose
stock-level-report
-track-items-using-barcode
\ No newline at end of file
+track-items-using-barcode
+stock-received-but-not-billed
+return-rejected-item
+item-valuation-transactions
+delivery-note-stock-error
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/articles/item-valuation-transactions.md b/erpnext/docs/user/manual/en/stock/articles/item-valuation-transactions.md
new file mode 100644
index 00000000000..5cc6529d89a
--- /dev/null
+++ b/erpnext/docs/user/manual/en/stock/articles/item-valuation-transactions.md
@@ -0,0 +1,17 @@
+# Item Valuation Methods and Transactions
+
+In ERPNext, Item's stock valuation is updated on the creation of one of the following transaction.
+
+1. Purchase Receipt
+2. Stock Entry of type Material Receipt
+3. Stock Reconciliation made for updating stock opening balance
+
+You can select valuation method based on which item's value will be calculated. Valuation Method can be set globally for all the items from the Stock Settings.
+
+
+
+You can also set Valuation Method in the item master, especially when a valuation method for an item is different from the default Method.
+
+
+
+[Click here to learn about the valuation methods available in the ERPNext, and how it works.](https://frappe.io/blog/erpnext-features/inventory-valuation-method-fifo-vs-moving-average)
diff --git a/erpnext/docs/user/manual/en/stock/articles/return-rejected-item.md b/erpnext/docs/user/manual/en/stock/articles/return-rejected-item.md
new file mode 100644
index 00000000000..aaaec2dea0b
--- /dev/null
+++ b/erpnext/docs/user/manual/en/stock/articles/return-rejected-item.md
@@ -0,0 +1,13 @@
+# Return Rejected Items
+
+In the Purchase Receipt, you can receive the Items in the Accepted or the Rejected Warehouse.
+
+If you are creating Purchase Return for the items received in the Rejected Warehouse, then create return entry following these steps.
+
+1. In the Purchase Receipt Item table, for the item to be returned, in the Received Qty field, enter return entry in negative.
+2. In the Accepted Warehouse field, set value as zero.
+3. In the Rejected Warehouse field, set the quantity to be returned in negative.
+
+For detailed steps on how to create Purchase Return Entry for the Rejected Item, refer to the below example.
+
+
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/articles/stock-received-but-not-billed.md b/erpnext/docs/user/manual/en/stock/articles/stock-received-but-not-billed.md
new file mode 100644
index 00000000000..25ef3b8aa68
--- /dev/null
+++ b/erpnext/docs/user/manual/en/stock/articles/stock-received-but-not-billed.md
@@ -0,0 +1,9 @@
+# Purpose of Stock Received but not Billed
+
+When purchased items are received, an accounts posting is done based on the value of the purchased items in the Stock-in-hand / fixed-assets account. When you sell and deliver those items, an expense (cost-of-goods-sold) is booked, equal to the buying cost of the items.
+
+As stock balance increases through Purchase Receipt, Warehouse account is debited and an adjustment account called **Stock Received But Not Billed** account is credited. At the same time, the negative expense is booked in account **Expense included in Valuation** for the amount added for valuation purpose, to avoid double expense booking.
+
+On receiving Bill from the supplier, you will make Purchase Invoice against a Purchase Receipt. Here **Stock Received But Not Billed** account is debited, hence nullifies the balance in the Stock Received but not Billed Account.
+
+The balance in the Stock Received but not Billed account indicates the value of items for which Purchase Receipt has been made, but billing is pending.
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/index.txt b/erpnext/docs/user/manual/en/using-erpnext/articles/index.txt
index 4ca21aa969b..9dc7df3f31f 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/index.txt
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/index.txt
@@ -8,4 +8,5 @@ bulk-rename
renaming-documents
search-filter
tree-master-renaming
-pos-view
\ No newline at end of file
+pos-view
+letter-head-in-the-report
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/letter-head-in-the-report.md b/erpnext/docs/user/manual/en/using-erpnext/articles/letter-head-in-the-report.md
new file mode 100644
index 00000000000..4f8b2e9ea3e
--- /dev/null
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/letter-head-in-the-report.md
@@ -0,0 +1,15 @@
+# Letter Head in the Report's Print Format
+
+In the reports, Letter Head is fetched from the Company master. To have company's Letter Head fetched correctly in the report, please ensure that you have updated default Letter Head in the Company master.
+
+`Explore > Accounts > Company`
+
+
+
+In a Company master, if no Letter Head is set as default, then in the reports, Letter Head having Default field checked will be fetched.
+
+
+
+If you are managing multiple companies in a single ERPNext account, then ensure that for each Company, default Letter Head is set in the Company master.
+
+After updating Letter Head in the Company master, refresh your ERPNext account, and then check the print format of a report.
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/website/articles/website-banner.md b/erpnext/docs/user/manual/en/website/articles/website-banner.md
new file mode 100644
index 00000000000..514e23e58de
--- /dev/null
+++ b/erpnext/docs/user/manual/en/website/articles/website-banner.md
@@ -0,0 +1,9 @@
+# Website Banner Resizing
+
+Each ERPNext account website automatically generated from it. On a website, logo is set based on logo image selected in the Setup Wizard. You can change or edit property for your company's logo from the Website Settings.
+
+`Explore > Website > Website Settings`
+
+For the exact steps on how to upload a Website Banner and resize it, please refer to the help given below.
+
+
\ No newline at end of file
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 7e65fc92623..e5d9ef9e4fa 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -27,6 +27,8 @@ doctype_js = {
# setup wizard
setup_wizard_requires = "assets/erpnext/js/setup_wizard.js"
setup_wizard_complete = "erpnext.setup.setup_wizard.setup_wizard.setup_complete"
+setup_wizard_success = "erpnext.setup.setup_wizard.setup_wizard.setup_success"
+setup_wizard_test = "erpnext.setup.setup_wizard.test_setup_wizard.run_setup_wizard_test"
before_install = "erpnext.setup.install.check_setup_wizard_not_completed"
after_install = "erpnext.setup.install.after_install"
@@ -34,6 +36,8 @@ after_install = "erpnext.setup.install.after_install"
boot_session = "erpnext.startup.boot.boot_session"
notification_config = "erpnext.startup.notifications.get_notification_config"
get_help_messages = "erpnext.utilities.activation.get_help_messages"
+get_user_progress_slides = "erpnext.utilities.user_progress.get_user_progress_slides"
+update_and_get_user_progress = "erpnext.utilities.user_progress_utils.update_default_domain_actions_and_get_state"
on_session_creation = "erpnext.shopping_cart.utils.set_cart_count"
on_logout = "erpnext.shopping_cart.utils.clear_cart_count"
diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py
index a078ef2033b..03626cdc5cf 100755
--- a/erpnext/hr/doctype/employee/employee.py
+++ b/erpnext/hr/doctype/employee/employee.py
@@ -289,3 +289,15 @@ def create_user(employee, user = None):
})
user.insert()
return user.name
+
+def get_employee_emails(employee_list):
+ '''Returns list of employee emails either based on user_id or company_email'''
+ employee_emails = []
+ for employee in employee_list:
+ if not employee:
+ continue
+ user, email = frappe.db.get_value('Employee', employee, ['user_id', 'company_email'])
+ if user or email:
+ employee_emails.append(user or email)
+
+ return employee_emails
\ No newline at end of file
diff --git a/erpnext/hr/doctype/training_event/test_training_event.js b/erpnext/hr/doctype/training_event/tests/test_training_event.js
similarity index 100%
rename from erpnext/hr/doctype/training_event/test_training_event.js
rename to erpnext/hr/doctype/training_event/tests/test_training_event.js
diff --git a/erpnext/hr/doctype/training_event/tests/test_training_event_attandance.js b/erpnext/hr/doctype/training_event/tests/test_training_event_attandance.js
new file mode 100644
index 00000000000..6364308f731
--- /dev/null
+++ b/erpnext/hr/doctype/training_event/tests/test_training_event_attandance.js
@@ -0,0 +1,40 @@
+QUnit.module('hr');
+
+QUnit.test("test: Training Event", function (assert) {
+ // number of asserts
+ assert.expect(1);
+ let done = assert.async();
+
+ frappe.run_serially([
+ // insert a new Training Event
+ () => frappe.set_route("List", "Training Event", "List"),
+ () => frappe.new_doc("Training Event"),
+ () => frappe.timeout(1),
+ () => frappe.click_link('Edit in full page'),
+ () => cur_frm.set_value("event_name", "Test Event " + frappe.utils.get_random(10)),
+ () => cur_frm.set_value("start_time", "2017-07-26, 2:00 pm PDT"),
+ () => cur_frm.set_value("end_time", "2017-07-26, 2:30 pm PDT"),
+ () => cur_frm.set_value("introduction", "This is a test report"),
+ () => cur_frm.set_value("location", "Fake office"),
+ () => frappe.click_button('Add Row'),
+ () => frappe.db.get_value('Employee', {'employee_name':'Test Employee 1'}, 'name'),
+ (r) => {
+ console.log(r);
+ return cur_frm.fields_dict.employees.grid.grid_rows[0].doc.employee = r.message.name;
+ },
+ () => {
+ return cur_frm.fields_dict.employees.grid.grid_rows[0].doc.attendance = "Optional";
+ },
+ () => frappe.click_button('Save'),
+ () => frappe.timeout(2),
+ () => frappe.click_button('Submit'),
+ () => frappe.timeout(2),
+ () => frappe.click_button('Yes'),
+ () => frappe.timeout(1),
+ () => {
+ assert.equal(cur_frm.doc.docstatus, 1);
+ },
+ () => done()
+ ]);
+
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/training_event/training_event.js b/erpnext/hr/doctype/training_event/training_event.js
index ebe0c7907ce..6a6e8fe0a6a 100644
--- a/erpnext/hr/doctype/training_event/training_event.js
+++ b/erpnext/hr/doctype/training_event/training_event.js
@@ -18,4 +18,4 @@ frappe.ui.form.on('Training Event', {
});
}
}
-});
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/training_event/training_event.json b/erpnext/hr/doctype/training_event/training_event.json
index 03b58b48021..7be9d974fe6 100644
--- a/erpnext/hr/doctype/training_event/training_event.json
+++ b/erpnext/hr/doctype/training_event/training_event.json
@@ -25,7 +25,7 @@
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
- "in_list_view": 0,
+ "in_list_view": 1,
"in_standard_filter": 0,
"label": "Event Name",
"length": 0,
@@ -55,7 +55,7 @@
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
- "in_list_view": 0,
+ "in_list_view": 1,
"in_standard_filter": 1,
"label": "Event Status",
"length": 0,
@@ -115,12 +115,12 @@
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
- "in_list_view": 0,
+ "in_list_view": 1,
"in_standard_filter": 1,
"label": "Type",
"length": 0,
"no_copy": 0,
- "options": "Seminar\nTheory\nWorkshop\nConference\nExam\nInternet",
+ "options": "Seminar\nTheory\nWorkshop\nConference\nExam\nInternet\nSelf-Study",
"permlevel": 0,
"precision": "",
"print_hide": 0,
@@ -386,7 +386,7 @@
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
- "in_list_view": 0,
+ "in_list_view": 1,
"in_standard_filter": 1,
"label": "Location",
"length": 0,
@@ -581,37 +581,6 @@
"set_only_once": 0,
"unique": 0
},
- {
- "allow_bulk_edit": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "description": "Will send an email about the event to employees with status 'Open'",
- "fieldname": "send_email",
- "fieldtype": "Check",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
- "in_list_view": 0,
- "in_standard_filter": 0,
- "label": "Send Email",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
- },
{
"allow_bulk_edit": 0,
"allow_on_submit": 1,
@@ -672,6 +641,37 @@
"search_index": 0,
"set_only_once": 0,
"unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "employee_emails",
+ "fieldtype": "Small Text",
+ "hidden": 1,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Employee Emails",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Email",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
}
],
"has_web_view": 0,
@@ -684,7 +684,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2017-05-29 06:13:38.411039",
+ "modified": "2017-08-11 03:11:25.768563",
"modified_by": "Administrator",
"module": "HR",
"name": "Training Event",
diff --git a/erpnext/hr/doctype/training_event/training_event.py b/erpnext/hr/doctype/training_event/training_event.py
index 27ae8cf5491..cc568414a03 100644
--- a/erpnext/hr/doctype/training_event/training_event.py
+++ b/erpnext/hr/doctype/training_event/training_event.py
@@ -3,24 +3,10 @@
# For license information, please see license.txt
from __future__ import unicode_literals
-import frappe
-from frappe import _
from frappe.model.document import Document
+from erpnext.hr.doctype.employee.employee import get_employee_emails
class TrainingEvent(Document):
- def on_update(self):
- self.invite_employee()
-
- def on_update_after_submit(self):
- self.invite_employee()
-
- def invite_employee(self):
- if self.event_status == "Scheduled" and self.send_email:
- subject = _("""You are invited for to attend {0} - {1} scheduled from {2} to {3} at {4}."""\
- .format(self.type, self.event_name, self.start_time, self.end_time, self.location))
-
- for emp in self.employees:
- if emp.status== "Open":
- frappe.sendmail(frappe.db.get_value("Employee", emp.employee, "company_email"), \
- subject=subject, content= self.introduction)
- emp.status= "Invited"
\ No newline at end of file
+ def validate(self):
+ self.employee_emails = ', '.join(get_employee_emails([d.employee
+ for d in self.employees]))
diff --git a/erpnext/hr/doctype/training_event_employee/training_event_employee.json b/erpnext/hr/doctype/training_event_employee/training_event_employee.json
index 575d0e75822..a8a72b1a701 100644
--- a/erpnext/hr/doctype/training_event_employee/training_event_employee.json
+++ b/erpnext/hr/doctype/training_event_employee/training_event_employee.json
@@ -1,5 +1,6 @@
{
"allow_copy": 0,
+ "allow_guest_to_view": 0,
"allow_import": 0,
"allow_rename": 0,
"beta": 0,
@@ -11,6 +12,7 @@
"editable_grid": 1,
"fields": [
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -21,6 +23,7 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Employee",
@@ -40,6 +43,7 @@
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -50,6 +54,7 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Employee Name",
@@ -69,6 +74,7 @@
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -79,6 +85,7 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
@@ -96,6 +103,7 @@
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 1,
"bold": 0,
"collapsible": 0,
@@ -107,12 +115,44 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Status",
"length": 0,
"no_copy": 1,
- "options": "Open\nInvited\nConfirmed\nAttended\nWithdrawn",
+ "options": "Open\nInvited\nCompleted\nFeedback Submitted",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "attendance",
+ "fieldtype": "Select",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Attendance",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Mandatory\nOptional",
"permlevel": 0,
"precision": "",
"print_hide": 0,
@@ -126,17 +166,17 @@
"unique": 0
}
],
+ "has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 0,
"image_view": 0,
"in_create": 0,
- "in_dialog": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 1,
"max_attachments": 0,
- "modified": "2016-12-14 11:43:40.996578",
+ "modified": "2017-08-11 03:36:22.738253",
"modified_by": "Administrator",
"module": "HR",
"name": "Training Event Employee",
@@ -146,7 +186,9 @@
"quick_entry": 1,
"read_only": 0,
"read_only_onload": 0,
+ "show_name_in_global_search": 0,
"sort_field": "modified",
"sort_order": "DESC",
+ "track_changes": 0,
"track_seen": 0
}
\ No newline at end of file
diff --git a/erpnext/hr/doctype/training_feedback/training_feedback.py b/erpnext/hr/doctype/training_feedback/training_feedback.py
index 2a0403bd53a..20a3bc5652e 100644
--- a/erpnext/hr/doctype/training_feedback/training_feedback.py
+++ b/erpnext/hr/doctype/training_feedback/training_feedback.py
@@ -5,6 +5,19 @@
from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
+from frappe import _
class TrainingFeedback(Document):
- pass
+ def validate(self):
+ training_event = frappe.get_doc("Training Event", self.training_event)
+ if training_event.docstatus != 1:
+ frappe.throw(_('{0} must be submitted').format(_('Training Event')))
+
+ def on_submit(self):
+ training_event = frappe.get_doc("Training Event", self.training_event)
+ for e in training_event.employees:
+ if e.employee == self.employee:
+ training_event.status = 'Feedback Submitted'
+ break
+
+ training_event.update_after_submit()
diff --git a/erpnext/hr/doctype/training_result/test_training_result.js b/erpnext/hr/doctype/training_result/test_training_result.js
new file mode 100644
index 00000000000..cb1d7fb27a3
--- /dev/null
+++ b/erpnext/hr/doctype/training_result/test_training_result.js
@@ -0,0 +1,23 @@
+/* eslint-disable */
+// rename this file from _test_[name] to test_[name] to activate
+// and remove above this line
+
+QUnit.test("test: Training Result", function (assert) {
+ let done = assert.async();
+
+ // number of asserts
+ assert.expect(1);
+
+ frappe.run_serially([
+ // insert a new Training Result
+ () => frappe.tests.make('Training Result', [
+ // values to be set
+ {key: 'value'}
+ ]),
+ () => {
+ assert.equal(cur_frm.doc.key, 'value');
+ },
+ () => done()
+ ]);
+
+});
diff --git a/erpnext/hr/doctype/training_result/training_result.json b/erpnext/hr/doctype/training_result/training_result.json
index e5fbb5fd426..41142b59e69 100644
--- a/erpnext/hr/doctype/training_result/training_result.json
+++ b/erpnext/hr/doctype/training_result/training_result.json
@@ -26,7 +26,7 @@
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
- "in_list_view": 0,
+ "in_list_view": 1,
"in_standard_filter": 0,
"label": "Training Event",
"length": 0,
@@ -133,6 +133,37 @@
"search_index": 0,
"set_only_once": 0,
"unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "employee_emails",
+ "fieldtype": "Small Text",
+ "hidden": 1,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Employee Emails",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Email",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
}
],
"has_web_view": 0,
@@ -145,7 +176,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2017-06-15 08:16:01.566531",
+ "modified": "2017-08-11 03:53:21.283968",
"modified_by": "Administrator",
"module": "HR",
"name": "Training Result",
diff --git a/erpnext/hr/doctype/training_result/training_result.py b/erpnext/hr/doctype/training_result/training_result.py
index 36c3cb93bc1..7cdc51f8010 100644
--- a/erpnext/hr/doctype/training_result/training_result.py
+++ b/erpnext/hr/doctype/training_result/training_result.py
@@ -6,19 +6,27 @@ from __future__ import unicode_literals
import frappe
from frappe import _
from frappe.model.document import Document
+from erpnext.hr.doctype.employee.employee import get_employee_emails
class TrainingResult(Document):
+ def validate(self):
+ training_event = frappe.get_doc("Training Event", self.training_event)
+ if training_event.docstatus != 1:
+ frappe.throw(_('{0} must be submitted').format(_('Training Event')))
+
+ self.employee_emails = ', '.join(get_employee_emails([d.employee
+ for d in self.employees]))
+
def on_submit(self):
- self.send_result()
-
- def send_result(self):
- for emp in self.employees:
- message = "Thank You for attending {0}.".format(self.training_event)
- if emp.grade:
- message = message + "Your grade: {0}".format(emp.grade)
- frappe.sendmail(frappe.db.get_value("Employee", emp.employee, "company_email"), \
- subject=_("{0} Results".format(self.training_event)), \
- content=message)
+ training_event = frappe.get_doc("Training Event", self.training_event)
+ training_event.status = 'Completed'
+ for e in self.employees:
+ for e1 in training_event.employees:
+ if e1.employee == e.employee:
+ e1.status = 'Completed'
+ break
+
+ training_event.save()
@frappe.whitelist()
def get_employees(training_event):
diff --git a/erpnext/hr/email_alert/__init__.py b/erpnext/hr/email_alert/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/erpnext/hr/email_alert/training_feedback/__init__.py b/erpnext/hr/email_alert/training_feedback/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/erpnext/hr/email_alert/training_feedback/training_feedback.html b/erpnext/hr/email_alert/training_feedback/training_feedback.html
new file mode 100644
index 00000000000..fd8fef9e82c
--- /dev/null
+++ b/erpnext/hr/email_alert/training_feedback/training_feedback.html
@@ -0,0 +1,6 @@
+
{{ _("Hello") }},
+ +You attended training {{ frappe.utils.get_link_to_form( + "Training Event", doc.training_event) }}
+ +{{ _("Please share your feedback to the training by clicking on 'Training Feedback' and then 'New'") }}
\ No newline at end of file diff --git a/erpnext/hr/email_alert/training_feedback/training_feedback.json b/erpnext/hr/email_alert/training_feedback/training_feedback.json new file mode 100644 index 00000000000..51f6cedfecd --- /dev/null +++ b/erpnext/hr/email_alert/training_feedback/training_feedback.json @@ -0,0 +1,24 @@ +{ + "attach_print": 0, + "creation": "2017-08-11 03:17:11.769210", + "days_in_advance": 0, + "docstatus": 0, + "doctype": "Email Alert", + "document_type": "Training Result", + "enabled": 1, + "event": "Submit", + "idx": 0, + "is_standard": 1, + "message": "{{ message }}
\n\n{{ message }}
+ +{{ doc.introduction }}
+ +{{ doc.introduction }}
\n\n{{ message }}
+ +{{ message }}
+ +{{_("Please update your status for this training event")}}:
+ + +{% else %} +{{_("Please confirm once you have completed your training")}}:
+ +{% endif %} +{{_("Thank you")}},
+{{ user_fullname }}