* feat: Moved Document to Payroll Module
* feat: Moved Reports to Payroll Module
* feat: Moved Print fromat With Patch
* feat: Moved Notifiction to Payroll Module and patches
* feat: added dashboard and desk page to Payroll
* feat: Payroll Dashboard
* feat: Module onboarding
* feat: Income tax Deductions Report
* feat: Ecs Checklist Report
* feat: Provident Fund Report
* feat: Professional Fund report and commonified Code
* feat: Total Payments Based On Payment Mode Report
* fix: refactor and added chart Total Payments Based On Payment Mode
* feat: Payroll Settings
* fix: Bank remittance Report
* feat(Payroll based on): Considered unmarked days
* feat: Added Help for condition an formula in Salary structure
* fix: requested changes
* fix: rename report Ecs checklist to salary_payments_via_ecs
* fix: renamed report report/total_payments_based_on_payment_mode
* fix: added role via setup.py for regional report
* feat: added All reports to desk page
* fix: frappe.reload doc in all patches
* fix: codacy
* fix: frappe.reload_doctype for patches
* patch: is_income_tax_component and component_type for salary component
* fix: uncommented code
* test: fixture
* fix: test
* test: test_payment_days_based_on_attendance
unnecessary requirement for project creation as this is a field of the Type select which will be pre-filled. When creating a project of list view it will also bring up this field as it has "reqd": 1. A new projekt will have the status set to open in most cases.
Co-authored-by: Nabin Hait <nabinhait@gmail.com>
Co-authored-by: Himanshu <himanshuwarekar@yahoo.com>
* fix: task validation error when adding tasks to projects
When adding a task to a project, if the project didn't have an Expected End Date the validation would fail.
This is because passing a None value to getdate() returns today's date, rather than being optional as expected.
* update task.py
* feat: create a duplicate project
* fix: allow duplication via form
* feat: fetch old task and link project
* fix: link task with project
* fix: parse json string as python object
* fix: avoid duplicate task based on the project template
* fix: ask user for the new project name
* fix: display a descriptive message on switching to a new route
* fix: override duplicate in menu
* fix: check for duplicate project name after submitting prompt
* fix: set the project template
* fix: minor changes
* fix: function call
* refactor: add a separate button for duplicate
* Update project.js
* feat: Add default energy point rules during install
* fix: Add completed_by field to task doctype
* fix: Rule data
* fix: Add default rules for opportunity
* fix: Add a patch to create default energy point rules
* fix: Default success action message
* fix: Use .items() instead of .iteritems()
* fix: Add "create_default_energy_points" patch entry
* fix: Reload Energy Point Rule to fix patch
* fix: Import frappe
- Case: If the company had standard working hour set
and when the user creates a timesheet with same date for
"To" and "From" then the hours field automatically used to
get reset to 0 after saving the form.