From 008b2788a0c8b1e801d8d661a28732bd74cda516 Mon Sep 17 00:00:00 2001 From: Horilla Date: Thu, 24 Jul 2025 21:03:28 +0530 Subject: [PATCH] [UPDT] LEAVE: Updated leave module leave type updation form html file --- leave/forms.py | 4 +- leave/models.py | 72 +- .../leave/leave_type/leave_type_creation.html | 191 ++-- .../leave/leave_type/leave_type_update.html | 968 +++++++++--------- leave/templates/leave/leave_type_update.html | 305 ------ load_data/mail_automations.json | 112 +- load_data/mail_templates.json | 115 ++- 7 files changed, 785 insertions(+), 982 deletions(-) delete mode 100644 leave/templates/leave/leave_type_update.html diff --git a/leave/forms.py b/leave/forms.py index cc2e1050f..776acad0c 100644 --- a/leave/forms.py +++ b/leave/forms.py @@ -174,9 +174,11 @@ class UpdateLeaveTypeForm(ConditionForm): class Meta: model = LeaveType fields = "__all__" - exclude = ["period_in", "total_days", "is_active"] + exclude = ["is_active"] widgets = { "color": TextInput(attrs={"type": "color", "style": "height:40px;"}), + "period_in": forms.HiddenInput(), + "total_days": forms.HiddenInput(), "carryforward_expire_date": forms.DateInput(attrs={"type": "date"}), } diff --git a/leave/models.py b/leave/models.py index bf32a14ca..827626b8e 100644 --- a/leave/models.py +++ b/leave/models.py @@ -157,38 +157,69 @@ WEEK_DAYS = [ class LeaveType(HorillaModel): - icon = models.ImageField(null=True, blank=True, upload_to="leave/leave_icon") - name = models.CharField(max_length=30, null=False) - color = models.CharField(null=True, max_length=30) - payment = models.CharField(max_length=30, choices=PAYMENT, default="unpaid") + icon = models.ImageField( + null=True, blank=True, upload_to="leave/leave_icon", verbose_name=_("Icon") + ) + name = models.CharField(max_length=30, null=False, verbose_name=_("Name")) + color = models.CharField(null=True, max_length=30, verbose_name=_("Color")) + payment = models.CharField( + max_length=30, choices=PAYMENT, default="unpaid", verbose_name=_("Is Paid") + ) count = models.FloatField(null=True, default=1) period_in = models.CharField(max_length=30, choices=TIME_PERIOD, default="day") - limit_leave = models.BooleanField(default=True) + limit_leave = models.BooleanField(default=True, verbose_name=_("Limit Leave Days")) total_days = models.FloatField(null=True, default=1) - reset = models.BooleanField(default=False) - is_encashable = models.BooleanField(default=False, verbose_name=_("Is encashable")) + reset = models.BooleanField(default=False, verbose_name=_("Reset")) + is_encashable = models.BooleanField(default=False, verbose_name=_("Is Encashable")) reset_based = models.CharField( max_length=30, choices=RESET_BASED, blank=True, null=True, + verbose_name=_("Reset Period"), + ) + reset_month = models.CharField( + max_length=30, choices=MONTHS, blank=True, verbose_name=_("Reset Month") + ) + reset_day = models.CharField( + max_length=30, choices=DAYS, null=True, blank=True, verbose_name=_("Reset Day") ) - reset_month = models.CharField(max_length=30, choices=MONTHS, blank=True) - reset_day = models.CharField(max_length=30, choices=DAYS, null=True, blank=True) reset_weekend = models.CharField( - max_length=10, null=True, blank=True, choices=WEEK_DAYS + max_length=10, + null=True, + blank=True, + choices=WEEK_DAYS, + verbose_name=_("Reset Weekday"), ) carryforward_type = models.CharField( - max_length=30, choices=CARRYFORWARD_TYPE, default="no carryforward" + max_length=30, + choices=CARRYFORWARD_TYPE, + default="no carryforward", + verbose_name=_("Carryforward Type"), + ) + carryforward_max = models.FloatField( + null=True, blank=True, verbose_name=_("Carryforward Max") + ) + carryforward_expire_in = models.IntegerField( + null=True, blank=True, verbose_name=_("Carryforward Expire In") ) - carryforward_max = models.FloatField(null=True, blank=True) - carryforward_expire_in = models.IntegerField(null=True, blank=True) carryforward_expire_period = models.CharField( - max_length=30, choices=TIME_PERIOD, null=True, blank=True + max_length=30, + choices=TIME_PERIOD, + null=True, + blank=True, + verbose_name=_("Carryforward Expire Period"), + ) + carryforward_expire_date = models.DateField( + null=True, blank=True, verbose_name=_("Carryforward Expire Date") ) - carryforward_expire_date = models.DateField(null=True, blank=True) require_approval = models.CharField( - max_length=30, choices=CHOICES, null=True, blank=True, default="yes" + max_length=30, + choices=CHOICES, + null=True, + blank=True, + default="yes", + verbose_name=_("Require Approval"), ) require_attachment = models.CharField( max_length=30, @@ -199,9 +230,14 @@ class LeaveType(HorillaModel): verbose_name=_("Require Attachment"), ) exclude_company_leave = models.CharField( - max_length=30, choices=CHOICES, default="no" + max_length=30, + choices=CHOICES, + default="no", + verbose_name=_("Exclude Company Holidays"), + ) + exclude_holiday = models.CharField( + max_length=30, choices=CHOICES, default="no", verbose_name=_("Exclude Holidays") ) - exclude_holiday = models.CharField(max_length=30, choices=CHOICES, default="no") is_compensatory_leave = models.BooleanField(default=False) company_id = models.ForeignKey( Company, null=True, editable=False, on_delete=models.PROTECT diff --git a/leave/templates/leave/leave_type/leave_type_creation.html b/leave/templates/leave/leave_type/leave_type_creation.html index 4204bedb0..42d1a561c 100644 --- a/leave/templates/leave/leave_type/leave_type_creation.html +++ b/leave/templates/leave/leave_type/leave_type_creation.html @@ -3,24 +3,19 @@ {% load i18n %} {% block content %} {% if form.errors %} - -
-
+
+
- {% for error in form.non_field_errors %} -
- {{ error }} + {% for error in form.non_field_errors %} +
+ {{ error }} +
+ {% endfor %}
- {% endfor %}
-
{% endif %} -
- -
- -
+
{% csrf_token %} @@ -29,28 +24,28 @@
- + {{form.name}} {{form.name.errors}}
-
+
{{form.icon}} {{form.icon.errors}}
- + {{form.color}} {{form.color.errors}}
- + {{form.payment}} {{form.payment.errors}}
@@ -58,8 +53,9 @@
- - + +
{{form.limit_leave}} @@ -91,8 +87,9 @@
- - + +
{{form.reset}} @@ -101,10 +98,11 @@
-
+
- - + +
{{ form.reset_based }} {{ form.reset_based.errors }} @@ -112,21 +110,21 @@
- + {{form.reset_month}} {{form.reset_month.errors}}
- + {{form.reset_day}} {{form.reset_day.errors}}
- + {{form.reset_weekend}} {{form.reset_weekend.errors}}
@@ -134,45 +132,50 @@
- - + +
- {{form.carryforward_type}} - {{form.carryforward_type.errors}} + {{form.carryforward_type}} + {{form.carryforward_type.errors}}
- - + +
- {{form.carryforward_max}} - {{form.carryforward_max.errors}} + {{form.carryforward_max}} + {{form.carryforward_max.errors}}
- - + +
- {{form.carryforward_expire_in}} - {{form.carryforward_expire_in.errors}} + {{form.carryforward_expire_in}} + {{form.carryforward_expire_in.errors}}
- - + +
{{form.carryforward_expire_period}} {{form.carryforward_expire_period.errors}}
- - + +
{{form.carryforward_expire_date}} {{form.carryforward_expire_date.errors}} @@ -180,8 +183,9 @@
- - + +
@@ -192,8 +196,9 @@
- - + +
@@ -204,8 +209,9 @@
- - + +
@@ -216,8 +222,9 @@
- - + +
@@ -228,8 +235,9 @@
- - + +
{{form.is_encashable}} @@ -239,12 +247,13 @@
{% if perms.leave.add_availableleave %}
-
- - -
- {{form.employee_id}} - {{form.employee_id.errors}} +
+ + +
+ {{form.employee_id}} + {{form.employee_id.errors}}
{% endif %} @@ -324,22 +333,22 @@ reset.change(function () { this.checked ? (reset_based.show().prop("required", true), - reset_based_label.show()) + reset_based_label.show()) : (reset_based_label.hide(), - reset_based.hide().prop("required", false), - reset_based.val("")), + reset_based.hide().prop("required", false), + reset_based.val("")), reset_based_span.show(); reset_based.is(":hidden") ? (reset_month_label.hide(), - reset_month.hide().prop("required", false), - reset_month.val(""), - reset_day_label.hide(), - reset_day.val(""), - reset_day.hide().prop("required", false), - reset_weekend_label.hide(), - reset_based_span.hide(), - reset_weekend.hide().prop("required", false), - reset_weekend.val("")) + reset_month.hide().prop("required", false), + reset_month.val(""), + reset_day_label.hide(), + reset_day.val(""), + reset_day.hide().prop("required", false), + reset_weekend_label.hide(), + reset_based_span.hide(), + reset_weekend.hide().prop("required", false), + reset_weekend.val("")) : ""; }); @@ -395,30 +404,30 @@ carryforward_type.change(function () { this.value == "carryforward" || this.value == "carryforward expire" ? (carryforward_max_label - .show() - .prop( - "title", - "Leave the field empty for unlimitted carryforward" - ), - carryforward_max.show()) + .show() + .prop( + "title", + "Leave the field empty for unlimitted carryforward" + ), + carryforward_max.show()) : (carryforward_max_label.hide(), - carryforward_max.hide().prop("required", false), - carryforward_max.val("")); + carryforward_max.hide().prop("required", false), + carryforward_max.val("")); this.value == "carryforward expire" ? (carryforward_expire_in_label.show(), - carryforward_expire_in.show().prop("required", true), - carryforward_expire_period_label.show(), - carryforward_expire_period.show().prop("required", true), - carryforward_expire_date.show().prop("required", true), - carryforward_expire_date_label.closest("div").show()) + carryforward_expire_in.show().prop("required", true), + carryforward_expire_period_label.show(), + carryforward_expire_period.show().prop("required", true), + carryforward_expire_date.show().prop("required", true), + carryforward_expire_date_label.closest("div").show()) : (carryforward_expire_in_label.hide(), - carryforward_expire_in.hide().prop("required", false), - carryforward_expire_in.val(""), - carryforward_expire_period_label.hide(), - carryforward_expire_period.hide().prop("required", false), - carryforward_expire_period.val(""), - carryforward_expire_date.hide().prop("required", false), - carryforward_expire_date_label.closest("div").hide()); + carryforward_expire_in.hide().prop("required", false), + carryforward_expire_in.val(""), + carryforward_expire_period_label.hide(), + carryforward_expire_period.hide().prop("required", false), + carryforward_expire_period.val(""), + carryforward_expire_date.hide().prop("required", false), + carryforward_expire_date_label.closest("div").hide()); }); function toggleFields() { diff --git a/leave/templates/leave/leave_type/leave_type_update.html b/leave/templates/leave/leave_type/leave_type_update.html index 040e01156..3dce47303 100644 --- a/leave/templates/leave/leave_type/leave_type_update.html +++ b/leave/templates/leave/leave_type/leave_type_update.html @@ -1,503 +1,501 @@ -{% extends 'index.html' %} {% load static %} {% load i18n %} {% block content %} +{% extends 'index.html' %} +{% load static %} +{% load i18n %} +{% block content %} {% if form.errors %} - -
-
- {% for error in form.non_field_errors %} -
{{ error }}
- {% endfor %} -
-
+
+
+ {% for error in form.non_field_errors %} +
{{ error }}
+ {% endfor %} +
+
{% endif %} -
- -
-
-
- - {% csrf_token %} -
-

- {% trans "Update Leave Type" %} -

-
-
-
- - {{form.name}} - {{form.name.errors}} -
-
-
-
-
- {{form.icon}} - {{form.icon.errors}} -
-
-
-
- - {{form.color}} - {{form.color.errors}} -
-
-
-
- - {{form.payment}} - {{form.payment.errors}} -
-
-
-
-
- - -
-
- {{form.limit_leave}} - {{form.limit_leave.errors}} -
-
-
-
-
- - {{form.count}} - {{form.count.errors}} -
-
-
-
- {% comment %} {% endcomment %} - {{form.period_in}} - {{form.period_in.errors}} -
-
-
-
- {% comment %} {% endcomment %} - {{form.total_days}} - {{form.total_days.errors}} -
-
-
-
-
- - -
-
- {{form.reset}} - {{form.reset.errors}} -
-
-
-
-
-
- - -
- {{ form.reset_based }} - {{ form.reset_based.errors }} -
-
-
-
- - {{form.reset_month}} - {{form.reset_month.errors}} -
-
-
-
- - {{form.reset_day}} - {{form.reset_day.errors}} -
-
-
-
- - {{form.reset_weekend}} - {{form.reset_weekend.errors}} -
-
-
-
-
- - -
- {{form.carryforward_type}} - {{form.carryforward_type.errors}} -
-
-
-
-
- - -
- {{form.carryforward_max}} - {{form.carryforward_max.errors}} -
-
-
-
-
- - -
- {{form.carryforward_expire_in}} - {{form.carryforward_expire_in.errors}} -
-
-
-
-
- - -
- {{form.carryforward_expire_period}} - {{form.carryforward_expire_period.errors}} -
-
-
-
-
- - -
- {{form.carryforward_expire_date}} - {{form.carryforward_expire_date.errors}} -
-
-
-
-
- - -
-
- - {{form.require_approval.errors}} -
-
-
-
-
-
- - -
-
- - {{form.require_attachment.errors}} -
-
-
-
-
-
- - -
-
- - {{form.exclude_company_leave.errors}} -
-
-
-
-
-
- - -
-
- - {{form.exclude_holiday.errors}} -
-
-
-
-
-
- - -
-
- {{form.is_encashable}} - {{form.is_encashable.errors}} +
+ + {% csrf_token %} +
+

{% trans "Update Leave Type" %}

+
+
+
+ + {{ form.name }} + {{ form.name.errors }} +
+
+
+
+
+ {{ form.icon }} + {{ form.icon.errors }} +
+
+
+
+ + {{ form.color }} + {{ form.color.errors }} +
+
+
+
+ + {{ form.payment }} + {{ form.payment.errors }} +
+
+
+
+
+ + +
+
+ {{ form.limit_leave }} + {{ form.limit_leave.errors }} +
+
+
+
+
+ + {{ form.count }} + {{ form.count.errors }} +
+
+
+
+ {% comment %} {% endcomment %} + {{ form.period_in }} + {{ form.period_in.errors }} +
+
+
+
+ {% comment %} {% endcomment %} + {{ form.total_days }} + {{ form.total_days.errors }} +
+
+
+
+
+ + +
+
+ {{ form.reset }} + {{ form.reset.errors }} +
+
+
+
+
+
+ + +
+ {{ form.reset_based }} + {{ form.reset_based.errors }} +
+
+
+
+ + {{ form.reset_month }} + {{ form.reset_month.errors }} +
+
+
+
+ + {{ form.reset_day }} + {{ form.reset_day.errors }} +
+
+
+
+ + {{ form.reset_weekend }} + {{ form.reset_weekend.errors }} +
+
+
+
+
+ + +
+ {{ form.carryforward_type }} + {{ form.carryforward_type.errors }} +
+
+
+
+
+ + +
+ {{ form.carryforward_max }} + {{ form.carryforward_max.errors }} +
+
+
+
+
+ + +
+ {{ form.carryforward_expire_in }} + {{ form.carryforward_expire_in.errors }} +
+
+
+
+
+ + +
+ {{ form.carryforward_expire_period }} + {{ form.carryforward_expire_period.errors }} +
+
+
+
+
+ + +
+ {{ form.carryforward_expire_date }} + {{ form.carryforward_expire_date.errors }} +
+
+
+
+
+ + +
+
+ + {{ form.require_approval.errors }} +
+
+
+
+
+
+ + +
+
+ + {{ form.require_attachment.errors }} +
+
+
+
+
+
+ + +
+
+ + {{ form.exclude_company_leave.errors }} +
+
+
+
+
+
+ + +
+
+ + {{ form.exclude_holiday.errors }} +
+
+
+
+
+
+ + +
+
+ {{ form.is_encashable }} + {{ form.is_encashable.errors }} +
+
+
+ + + +
-
- - - - -
-
- - -
+ + +
{% endblock %} diff --git a/leave/templates/leave/leave_type_update.html b/leave/templates/leave/leave_type_update.html deleted file mode 100644 index 0355f2b10..000000000 --- a/leave/templates/leave/leave_type_update.html +++ /dev/null @@ -1,305 +0,0 @@ -{% extends 'index.html' %} -{% load static %} -{% load i18n %} -{% block content %} - -{% if form.errors %} - -
-
- - {% for error in form.non_field_errors %} -
- {{ error }} -
- {% endfor %} -
-
-{% endif %} - -
-
-
- -
-
- -
- -
-
-
- {% csrf_token %} -
-

{% trans "Update Leave Type" %}

-
-
-
- - {{form.name}} - {{form.name.errors}} -
-
-
-
- - {{form.icon}} - {{form.icon.errors}} -
-
-
-
- - {{form.color}} - {{form.color.errors}} -
-
-
-
- - {{form.payment}} - {{form.payment.errors}} -
-
-
-
- - {{form.count}} - {{form.count.errors}} -
-
-
-
- {% comment %} {% endcomment %} - {{form.period_in}} - {{form.period_in.errors}} -
-
-
-
- {% comment %} {% endcomment %} - {{form.total_days}} - {{form.total_days.errors}} -
-
-
-
- - {{form.reset}} - {{form.reset.errors}} -
-
-
-
- - {{form.reset_based}} - {{form.reset_based.errors}} -
-
-
-
- - {{form.reset_month}} - {{form.reset_month.errors}} -
-
-
-
- - {{form.reset_day}} - {{form.reset_day.errors}} -
-
-
-
- - {{form.reset_weekend}} - {{form.reset_weekend.errors}} -
-
-
-
- - {{form.carryforward_type}} - {{form.carryforward_type.errors}} -
-
-
-
- - {{form.carryforward_max}} - {{form.carryforward_max.errors}} -
-
-
-
- - {{form.carryforward_expire_in}} - {{form.carryforward_expire_in.errors}} -
-
-
-
- - {{form.carryforward_expire_period}} - {{form.carryforward_expire_period.errors}} -
-
-
-
- - {{form.require_approval}} - {{form.require_approval.errors}} -
-
-
-
- - {{form.require_attachment}} - {{form.require_attachment.errors}} -
-
-
-
- - {{form.exclude_company_leave}} - {{form.exclude_company_leave.errors}} -
-
-
-
- - {{form.exclude_holiday}} - {{form.exclude_holiday.errors}} -
-
-
-
- - -
- -
-
- - - -{% endblock %} diff --git a/load_data/mail_automations.json b/load_data/mail_automations.json index d9a443355..34511472b 100644 --- a/load_data/mail_automations.json +++ b/load_data/mail_automations.json @@ -3,20 +3,20 @@ "model": "horilla_automations.mailautomation", "pk": 1, "fields": { - "created_at": "2025-06-30T06:35:03.533Z", + "created_at": "2025-07-24T07:30:08.899Z", "created_by": 1, "modified_by": 1, "is_active": true, - "title": "Leave Request Automation", - "method_title": "leave_request_automation", + "title": "Review Leave Request - {{ instance.employee_id }} ({{ instance.requested_days }} Days)", + "method_title": "review_leave_request_-_{{_instance.employee_id_}}_({{_instance.requested_days_}}_days)", "model": "leave.models.LeaveRequest", "mail_to": "['employee_id__employee_work_info__reporting_manager_id__get_email']", "mail_details": "employee_id__employee_work_info__reporting_manager_id__pk", "mail_detail_choice": "", "trigger": "on_create", - "mail_template": 1, + "mail_template": 3, "delivery_channel": "email", - "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1Is Active\r\n ==\r\n
\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
", + "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1Is Active\r\n ==\r\n
\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
", "condition_querystring": "automation_multiple_condition=automation_multiple_is_active&condition=%3D%3D&automation_multiple_condition=on&logic=and", "condition": "
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
\r\n
\r\n ", "also_sent_to": [], @@ -27,20 +27,20 @@ "model": "horilla_automations.mailautomation", "pk": 2, "fields": { - "created_at": "2025-06-30T06:35:03.555Z", + "created_at": "2025-07-24T07:30:08.931Z", "created_by": 1, "modified_by": 1, "is_active": true, - "title": "Leave Allocation Automation", - "method_title": "leave_allocation_automation", + "title": "Review Leave Allocation Request - {{ instance.employee_id }}", + "method_title": "review_leave_allocation_request_π╗_{{_instance.employee_id_}}", "model": "leave.models.LeaveAllocationRequest", "mail_to": "['employee_id__employee_work_info__reporting_manager_id__get_email']", "mail_details": "employee_id__pk", "mail_detail_choice": "", "trigger": "on_create", - "mail_template": 2, + "mail_template": 4, "delivery_channel": "email", - "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1Is Active\r\n ==\r\n
\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
", + "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1Is Active\r\n ==\r\n
\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
", "condition_querystring": "automation_multiple_condition=automation_multiple_is_active&condition=%3D%3D&automation_multiple_condition=on&logic=and", "condition": "
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
\r\n
\r\n ", "also_sent_to": [], @@ -51,7 +51,7 @@ "model": "horilla_automations.mailautomation", "pk": 3, "fields": { - "created_at": "2025-06-30T06:35:03.575Z", + "created_at": "2025-07-24T07:30:08.957Z", "created_by": 1, "modified_by": 1, "is_active": true, @@ -62,7 +62,7 @@ "mail_details": "referral__employee_work_info__reporting_manager_id__pk", "mail_detail_choice": "", "trigger": "on_create", - "mail_template": 3, + "mail_template": 5, "delivery_channel": "email", "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1Is Active\r\n ==\r\n
\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
", "condition_querystring": "automation_multiple_condition=automation_multiple_is_active&condition=%3D%3D&automation_multiple_condition=on&logic=and", @@ -75,7 +75,7 @@ "model": "horilla_automations.mailautomation", "pk": 4, "fields": { - "created_at": "2025-06-30T06:35:03.600Z", + "created_at": "2025-07-24T07:30:08.983Z", "created_by": 1, "modified_by": 1, "is_active": true, @@ -86,7 +86,7 @@ "mail_details": "candidate_id__pk", "mail_detail_choice": "", "trigger": "on_create", - "mail_template": 4, + "mail_template": 6, "delivery_channel": "email", "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1Is Active\r\n ==\r\n
\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
", "condition_querystring": "automation_multiple_condition=automation_multiple_is_active&condition=%3D%3D&automation_multiple_condition=on&logic=and", @@ -99,7 +99,7 @@ "model": "horilla_automations.mailautomation", "pk": 5, "fields": { - "created_at": "2025-06-30T06:35:03.620Z", + "created_at": "2025-07-24T07:30:09.008Z", "created_by": 1, "modified_by": 1, "is_active": true, @@ -110,7 +110,7 @@ "mail_details": "description", "mail_detail_choice": "", "trigger": "on_create", - "mail_template": 5, + "mail_template": 7, "delivery_channel": "notification", "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1Is active\r\n ==\r\n
\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
C2Recruitment managers\r\n !=\r\n
\r\n Or\r\n \r\n
\r\n \r\n \r\n
\r\n
", "condition_querystring": "automation_multiple_condition=automation_multiple_is_active&condition=%3D%3D&automation_multiple_condition=on&logic=and&automation_multiple_condition=automation_multiple_recruitment_managers&condition=!%3D&automation_multiple_condition=&logic=or", @@ -123,7 +123,7 @@ "model": "horilla_automations.mailautomation", "pk": 6, "fields": { - "created_at": "2025-06-30T06:35:03.644Z", + "created_at": "2025-07-24T07:30:09.036Z", "created_by": 1, "modified_by": 1, "is_active": true, @@ -134,7 +134,7 @@ "mail_details": "recruitment_id__description", "mail_detail_choice": "", "trigger": "on_create", - "mail_template": 6, + "mail_template": 8, "delivery_channel": "both", "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1Stage managers\r\n !=\r\n
\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
", "condition_querystring": "automation_multiple_condition=automation_multiple_stage_managers&condition=!%3D&automation_multiple_condition=&logic=and", @@ -147,18 +147,18 @@ "model": "horilla_automations.mailautomation", "pk": 7, "fields": { - "created_at": "2025-06-02T09:28:27.362Z", + "created_at": "2025-07-24T07:30:09.060Z", "created_by": 1, "modified_by": 1, "is_active": true, "title": "Offer of Employment at {{nstance.get_company}}", - "method_title": "offer_of_employment_at_{{instance.get_company}}", + "method_title": "offer_of_employment_at_{{nstance.get_company}}", "model": "recruitment.models.Candidate", "mail_to": "['get_email']", "mail_details": "pk", "mail_detail_choice": "", "trigger": "on_update", - "mail_template": 7, + "mail_template": 9, "delivery_channel": "email", "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1Stage type | Stage\r\n ==\r\n Hired\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
", "condition_querystring": "automation_multiple_condition=automation_multiple_stage_id__stage_type&condition=%3D%3D&automation_multiple_condition=hired&logic=and", @@ -171,18 +171,18 @@ "model": "horilla_automations.mailautomation", "pk": 8, "fields": { - "created_at": "2025-06-02T09:48:13.418Z", + "created_at": "2025-07-24T07:30:09.084Z", "created_by": 1, "modified_by": 1, "is_active": true, "title": "Candidate {{instance.get_full_name}} is Hired.", - "method_title": "new_hired_candidate", + "method_title": "candidate_{{instance.get_full_name}}_is_hired.", "model": "recruitment.models.Candidate", "mail_to": "['recruitment_id__recruitment_managers__get_mail']", "mail_details": "pk", "mail_detail_choice": "", "trigger": "on_update", - "mail_template": 8, + "mail_template": 10, "delivery_channel": "notification", "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1Stage type | Stage\r\n ==\r\n Hired\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
", "condition_querystring": "automation_multiple_condition=automation_multiple_stage_id__stage_type&condition=%3D%3D&automation_multiple_condition=hired&logic=and", @@ -195,20 +195,20 @@ "model": "horilla_automations.mailautomation", "pk": 9, "fields": { - "created_at": "2025-06-02T10:28:32.477Z", + "created_at": "2025-07-24T07:30:09.114Z", "created_by": 1, "modified_by": 1, "is_active": true, - "title": "Application Received – {{instance.get_job_position}} at {{instance.get_company}}", - "method_title": "application_received_–_{{instance.get_job_position}}_at_{{instance.get_company}}", + "title": "Application Received for {{ instance.get_job_position}} - {{ instance.get_company }}", + "method_title": "application_received_for_{{_instance.get_job_position}}_π╗_{{_instance.get_company_}}", "model": "recruitment.models.Candidate", "mail_to": "['get_email']", "mail_details": "pk", "mail_detail_choice": "", "trigger": "on_create", - "mail_template": 9, + "mail_template": 11, "delivery_channel": "email", - "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1Stage type | Stage\r\n ==\r\n Applied\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
", + "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1Stage type | Stage\r\n ==\r\n Applied\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
", "condition_querystring": "automation_multiple_condition=automation_multiple_stage_id__stage_type&condition=%3D%3D&automation_multiple_condition=applied&logic=and", "condition": "
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
\r\n
\r\n ", "also_sent_to": [], @@ -219,7 +219,7 @@ "model": "horilla_automations.mailautomation", "pk": 10, "fields": { - "created_at": "2025-06-07T08:25:05.235Z", + "created_at": "2025-05-07T08:25:05.235Z", "created_by": 1, "modified_by": 1, "is_active": true, @@ -230,7 +230,7 @@ "mail_details": "employee_objective_id__employee_id__pk", "mail_detail_choice": "", "trigger": "on_update", - "mail_template": 10, + "mail_template": 12, "delivery_channel": "notification", "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1\r\n \r\n Current value\r\n !=\r\n \r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
", "condition_querystring": "automation_multiple_condition=automation_multiple_current_value&condition=!%3D&automation_multiple_condition=0&logic=and", @@ -243,22 +243,22 @@ "model": "horilla_automations.mailautomation", "pk": 11, "fields": { - "created_at": "2025-06-09T10:53:19.511Z", + "created_at": "2025-07-24T07:30:09.167Z", "created_by": 1, "modified_by": 1, "is_active": true, - "title": "Access your Horilla Portl", - "method_title": "access_your_horilla_portl", + "title": "Access your HRMS Portal", + "method_title": "access_your_hrms_portal", "model": "employee.models.Employee", "mail_to": "['get_email']", "mail_details": "pk", "mail_detail_choice": "", "trigger": "on_create", - "mail_template": 11, + "mail_template": 13, "delivery_channel": "email", - "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1\r\n \r\n Is active\r\n ==\r\n
\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
", + "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1\r\n \r\n Is active\r\n ==\r\n
\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
", "condition_querystring": "automation_multiple_condition=automation_multiple_is_active&condition=%3D%3D&automation_multiple_condition=on&logic=and", - "condition": "
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1\r\n \r\n Is active\r\n ==\r\n
\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n ", + "condition": "
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
\r\n
\r\n ", "also_sent_to": [], "template_attachments": [] } @@ -267,7 +267,7 @@ "model": "horilla_automations.mailautomation", "pk": 12, "fields": { - "created_at": "2025-06-09T11:43:48.332Z", + "created_at": "2025-07-24T07:30:09.196Z", "created_by": 1, "modified_by": 1, "is_active": true, @@ -278,7 +278,7 @@ "mail_details": "pk", "mail_detail_choice": "", "trigger": "on_update", - "mail_template": 12, + "mail_template": 14, "delivery_channel": "email", "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1\r\n \r\n Stage type | Stage\r\n ==\r\n Initial\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
", "condition_querystring": "automation_multiple_condition=automation_multiple_stage_id__stage_type&condition=%3D%3D&automation_multiple_condition=initial&logic=and", @@ -291,20 +291,44 @@ "model": "horilla_automations.mailautomation", "pk": 13, "fields": { - "created_at": "2025-07-23T06:31:48.598Z", + "created_at": "2025-07-24T07:30:09.226Z", "created_by": 1, "modified_by": 1, "is_active": true, - "title": "Work Type Request from {{instance.employee_id}}", - "method_title": "work_type_request_from_{{instance.employee_id}}", + "title": "Review Work Type Request - {{instance.employee_id}}", + "method_title": "review_work_type_request_-_{{instance.employee_id}}", "model": "base.models.WorkTypeRequest", "mail_to": "['employee_id__employee_work_info__reporting_manager_id__get_email']", "mail_details": "employee_id__pk", "mail_detail_choice": "", "trigger": "on_create", - "mail_template": 13, + "mail_template": 15, "delivery_channel": "email", - "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1\r\n \r\n Is Active\r\n ==\r\n
\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
", + "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1\r\n \r\n Is Active\r\n ==\r\n
\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
", + "condition_querystring": "automation_multiple_condition=automation_multiple_is_active&condition=%3D%3D&automation_multiple_condition=on&logic=and", + "condition": "
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
\r\n
\r\n ", + "also_sent_to": [], + "template_attachments": [] + } + }, + { + "model": "horilla_automations.mailautomation", + "pk": 14, + "fields": { + "created_at": "2025-07-24T07:30:09.247Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Review Shift Request - {{instance.employee_id}}", + "method_title": "review_shift_request_-_{{instance.employee_id}}", + "model": "base.models.ShiftRequest", + "mail_to": "['employee_id__employee_work_info__reporting_manager_id__get_email']", + "mail_details": "employee_id__pk", + "mail_detail_choice": "", + "trigger": "on_create", + "mail_template": 16, + "delivery_channel": "email", + "condition_html": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
C1\r\n \r\n Is Active\r\n ==\r\n
\r\n And\r\n \r\n
\r\n \r\n \r\n
\r\n
", "condition_querystring": "automation_multiple_condition=automation_multiple_is_active&condition=%3D%3D&automation_multiple_condition=on&logic=and", "condition": "
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
CodeFieldConditionValueLogic\r\n Action \r\n \r\n \r\n \r\n
\r\n
\r\n ", "also_sent_to": [], diff --git a/load_data/mail_templates.json b/load_data/mail_templates.json index 17098f941..140fc11eb 100644 --- a/load_data/mail_templates.json +++ b/load_data/mail_templates.json @@ -3,12 +3,12 @@ "model": "base.horillamailtemplate", "pk": 1, "fields": { - "created_at": "2025-06-30T06:35:03.434Z", - "created_by": 1, - "modified_by": 1, - "is_active": false, - "title": "Leave Request Template", - "body": "

This is to inform you that {{ model_instance.employee_id }} has submitted a leave request for {{model_instance.requested_days}} days. Please take the necessary actions to review and process the request at your earliest convenience.


If you require any additional information or updates, feel free to communicate directly with {{ model_instance.employee_id }}.

Thank you for your prompt attention to this matter.

", + "created_at": "2025-06-05T09:39:13.733Z", + "created_by": null, + "modified_by": null, + "is_active": true, + "title": "Offer letter", + "body": "

Congratulations! Job Offer at {{instance.get_company}}

username:{{instance.get_email}}

password:{{instance.phone}}

Dear {{instance.get_full_name}},

                                                    I am delighted to extend an official offer of employment to you for the position of [Job Title] at [Company Name]. We were thoroughly impressed with your skills, experience, and the passion you demonstrated during the interview process.

Here are the details of your job offer: 

    Job Position: {{instance.get_job_position}}

We believe that your unique talents will make a significant contribution to our team, and we are thrilled about the prospect of you joining us. Please take the time to review the attached detailed job description, as well as the terms and conditions outlined in the employment contract.

To signify your acceptance of this job offer, please confirm your agreement by [Date to Respond]. If you have any questions or need further clarification, feel free to contact me directly

We are excited about the value you will bring to [Company Name], and we eagerly anticipate the positive impact you'll have on our team.

Welcome aboard, and we look forward to a successful and fulfilling working relationship!

Warm regards,

", "company_id": null } }, @@ -16,20 +16,46 @@ "model": "base.horillamailtemplate", "pk": 2, "fields": { - "created_at": "2025-06-30T06:35:03.460Z", + "created_at": "2025-06-12T10:23:52.188Z", "created_by": 1, "modified_by": 1, "is_active": false, - "title": "Leave Allocation Request Template", - "body": "

This is to inform you that {{ model_instance.employee_id }} has submitted a leave allocation request for {{model_instance.requested_days}} days. Please take the necessary actions to review and process the request at your earliest convenience.


If you require any additional information or updates, feel free to communicate directly with {{ model_instance.employee_id }}.

Thank you for your prompt attention to this matter. 

", - "company_id": null + "title": "Leave Request Mail", + "body": "

Dear,

This is to inform you that {{ model_instance.employee_id }} has submitted a leave request for {{model_instance.requested_days}} days. Please take the necessary actions to review and process the request at your earliest convenience.

If you require any additional information or updates, feel free to communicate directly with {{ model_instance.employee_id }}.

Thank you for your prompt attention to this matter.

", + "company_id": 1 } }, { "model": "base.horillamailtemplate", "pk": 3, "fields": { - "created_at": "2025-06-30T06:35:03.478Z", + "created_at": "2025-07-24T07:30:08.679Z", + "created_by": 1, + "modified_by": 1, + "is_active": false, + "title": "Leave Request Template", + "body": "
\n
\n

Leave Request

\n\n

\n Dear {{ model_instance.employee_id.get_reporting_manager }},\n

\n\n

\n {{ model_instance.employee_id }} has submitted a leave request. Please find the details below.\n

\n\n
\n

Leave Type: {{ model_instance.leave_type_id }}

\n

From Date: {{ model_instance.start_date }} ({{ model_instance.get_start_date_breakdown_display }})

\n

To Date: {{ model_instance.end_date }} ({{ model_instance.get_end_date_breakdown_display }})

\n

Total Days: {{ model_instance.requested_days }}

\n

Description: {{ model_instance.description }}

\n
\n\n

\n Please log in to the HRMS system to review and take necessary action on this request.\n

\n\n \n\n
\n\n

\n This is an automated message from the HRMS system.
\n Regards, {{ model_instance.employee_id.get_company }}\n

\n
\n
", + "company_id": null + } + }, + { + "model": "base.horillamailtemplate", + "pk": 4, + "fields": { + "created_at": "2025-07-24T07:30:08.701Z", + "created_by": 1, + "modified_by": 1, + "is_active": false, + "title": "Leave Allocation Request Template", + "body": "
\n
\n

Leave Allocation Request

\n\n

\n Dear {{ model_instance.employee_id.get_reporting_manager }},\n

\n\n

\n {{ model_instance.employee_id }} has submitted a leave allocation request for {{ model_instance.requested_days }} days.\n

\n\n
\n

Leave Type: {{ model_instance.leave_type_id }}

\n

Requested Days: {{ model_instance.requested_days }}

\n

Requested Date: {{ model_instance.requested_date }}

\n

Description: {{ model_instance.description }}

\n
\n\n

\n Please log in to the HRMS to review and take appropriate action.\n

\n\n \n\n
\n\n

\n This is an automated message from the HRMS system.
\n Regards, {{ model_instance.employee_id.get_company }}\n

\n
\n
", + "company_id": null + } + }, + { + "model": "base.horillamailtemplate", + "pk": 5, + "fields": { + "created_at": "2025-07-24T07:30:08.716Z", "created_by": 1, "modified_by": 1, "is_active": false, @@ -40,9 +66,9 @@ }, { "model": "base.horillamailtemplate", - "pk": 4, + "pk": 6, "fields": { - "created_at": "2025-06-30T06:35:03.497Z", + "created_at": "2025-07-24T07:30:08.729Z", "created_by": 1, "modified_by": 1, "is_active": false, @@ -53,9 +79,9 @@ }, { "model": "base.horillamailtemplate", - "pk": 5, + "pk": 7, "fields": { - "created_at": "2025-06-30T06:35:03.515Z", + "created_at": "2025-07-24T07:30:08.741Z", "created_by": 1, "modified_by": 1, "is_active": false, @@ -66,9 +92,9 @@ }, { "model": "base.horillamailtemplate", - "pk": 6, + "pk": 8, "fields": { - "created_at": "2025-06-30T06:36:05.669Z", + "created_at": "2025-07-24T07:30:08.756Z", "created_by": 1, "modified_by": 1, "is_active": false, @@ -79,9 +105,9 @@ }, { "model": "base.horillamailtemplate", - "pk": 7, + "pk": 9, "fields": { - "created_at": "2025-06-02T08:56:53.382Z", + "created_at": "2025-07-24T07:30:08.769Z", "created_by": 1, "modified_by": 1, "is_active": false, @@ -92,9 +118,9 @@ }, { "model": "base.horillamailtemplate", - "pk": 8, + "pk": 10, "fields": { - "created_at": "2025-06-02T09:03:19.682Z", + "created_at": "2025-07-24T07:30:08.783Z", "created_by": 1, "modified_by": 1, "is_active": false, @@ -105,22 +131,22 @@ }, { "model": "base.horillamailtemplate", - "pk": 9, + "pk": 11, "fields": { - "created_at": "2025-06-02T09:21:40.929Z", + "created_at": "2025-07-24T07:30:08.795Z", "created_by": 1, "modified_by": 1, "is_active": false, - "title": "Application Received Automation", - "body": "

Dear {{instance.get_full_name}},

Thank you for applying for the {{instance.get_job_position}} position at {{instance.get_company}}. We have received your application, and our team will be reviewing your profile shortly. 

If your qualifications match our requirements, we will reach out to you to discuss the next steps in the hiring process. Regardless of the outcome, we appreciate your interest in joining our team.

Thank you again for considering {{instance.get_company}}. We wish you all the best!

", + "title": "Application Received Template", + "body": "

Dear {{ instance.name }},

\n\n

Thank you for applying for the {{ instance.job_position_id }} position at \n{% if instance.recruitment_id.company_id %}\n{{ instance.recruitment_id.company_id }}.\n{% else %}\nour company.\n{% endif %}

\n\n

We have received your application and our recruitment team is currently reviewing your profile.

\n\n

If your qualifications align with our current requirements, we will contact you for the next steps in the hiring process. In the meantime, feel free to visit our portal for any updates or communication.

\n\n

We appreciate your interest in joining our team and taking the time to apply.

\n\n

Best regards,
\n{% if instance.recruitment_id.company_id %}\n{{ instance.recruitment_id.company_id }}
\n{% endif %}\nRecruitment Team

\n\n
\n\n

\nThis is an automated message from the HRMS system.\n

", "company_id": null } }, { "model": "base.horillamailtemplate", - "pk": 10, + "pk": 12, "fields": { - "created_at": "2025-06-03T06:48:48.607Z", + "created_at": "2025-07-24T07:30:08.810Z", "created_by": 1, "modified_by": 1, "is_active": false, @@ -131,22 +157,22 @@ }, { "model": "base.horillamailtemplate", - "pk": 11, + "pk": 13, "fields": { - "created_at": "2025-06-09T10:21:25.298Z", + "created_at": "2025-07-24T07:30:08.824Z", "created_by": 1, "modified_by": 1, "is_active": false, - "title": "Employee Portal Access Automation", - "body": "

Hi {{instance.get_full_name}},

Access following link {{ request.scheme }}://{{ request.get_host }} to access Horilla HR employee self service portal

Username: {{instance.employee_user_id.username}}
Initial Password: {{instance.phone}}

Reset after first login
", + "title": "Employee Portal Access Template", + "body": "
\n
\n \n

\n Access Your HRMS Portal\n

\n\n

\n Hi {{ instance.get_full_name }},\n

\n\n

\n You can now access the HRMS Portal using the details below:\n

\n\n
\n

\n Portal Link: \n \n {{ request.scheme }}://{{ request.get_host }}\n \n

\n

\n Username: \n {{ instance.email }}\n

\n

\n Initial Password: \n {{ instance.phone }}\n

\n

\n Please reset your password after first login.\n

\n
\n\n
\n\n

\n This is an automated message from the HRMS system.
\n Regards, {% if instance.get_company %}{{ instance.get_company }}{% endif %}

\n
\n
", "company_id": null } }, { "model": "base.horillamailtemplate", - "pk": 12, + "pk": 14, "fields": { - "created_at": "2025-06-09T11:03:19.494Z", + "created_at": "2025-07-24T07:30:08.840Z", "created_by": 1, "modified_by": 1, "is_active": false, @@ -157,14 +183,27 @@ }, { "model": "base.horillamailtemplate", - "pk": 13, + "pk": 15, "fields": { - "created_at": "2025-07-23T06:30:13.020Z", + "created_at": "2025-07-24T07:30:08.858Z", "created_by": 1, "modified_by": 1, - "is_active": true, - "title": "Work Type Request", - "body": "
Dear {{ model_instance.employee_id.get_reporting_manager }},\n\nA new work type change request has been submitted by {{ model_instance.employee_id }}.\n\nPlease review the request details below:\n\nEmployee: {{ model_instance.employee_id }}  \nCurrent Work Type: {{ model_instance.previous_work_type_id }}  \nRequested Work Type: {{ model_instance.work_type_id }}  \nRequested From: {{ model_instance.requested_date }}  \nRequested Till: {{ model_instance.requested_till }}\n\nDescription:  \n{{ model_instance.description }}\n\nPlease log in to the HRMS system:  \n{{ request.scheme }}://{{ request.get_host }}/employee/work-type-request-view/?id={{ model_instance.id }}  \nto review and take appropriate action on this request.\n\nThis is an automated message from the HRMS system.\n\nRegards,  \n{{ model_instance.employee_id.get_company }}
", + "is_active": false, + "title": "Work Type Request Template", + "body": "
\n
\n

Work Type Change Request

\n\n

\n Dear {{ model_instance.employee_id.get_reporting_manager }},\n

\n\n

\n A new work type change request has been submitted by {{ model_instance.employee_id }}.\n

\n\n
\n

Current Work Type: {{ model_instance.previous_work_type_id }}

\n

Requested Work Type: {{ model_instance.work_type_id }}

\n

From: {{ model_instance.requested_date }}

\n

Till: {{ model_instance.requested_till }}

\n

Description: {{ model_instance.description }}

\n
\n\n

\n Please review and process this request from your HRMS dashboard.\n

\n\n \n\n
\n\n

\n This is an automated message from the HRMS system.
\n Regards, {{ model_instance.employee_id.get_company }}\n

\n
\n
", + "company_id": 1 + } + }, + { + "model": "base.horillamailtemplate", + "pk": 16, + "fields": { + "created_at": "2025-07-24T07:30:08.874Z", + "created_by": 1, + "modified_by": 1, + "is_active": false, + "title": "Shift Request Template", + "body": "
\n
\n

Shift Change Request

\n\n

\n Dear {{ model_instance.employee_id.get_reporting_manager }},\n

\n\n

\n {{ model_instance.employee_id }} has submitted a shift change request. Please find the details below.\n

\n\n
\n

Previous Shift: {{ model_instance.previous_shift_id }}

\n

Requested Shift: {{ model_instance.shift_id }}

\n

Requested From: {{ model_instance.requested_date }}

\n {% if model_instance.requested_till %}\n

Requested Till: {{ model_instance.requested_till }}

\n {% endif %}\n

Permanent Change: {% if model_instance.is_permanent_shift %}Yes{% else %}No{% endif %}

\n {% if model_instance.reallocate_to %}\n

Reallocate To: {{ model_instance.reallocate_to }}

\n {% endif %}\n {% if model_instance.description %}\n

Description: {{ model_instance.description }}

\n {% endif %}\n
\n\n

\n Please log in to the HRMS system to review and take necessary action on this request.\n

\n\n \n\n
\n\n

\n This is an automated message from the HRMS system.
\n Regards, {% if model_instance.employee_id.get_company %}{{ model_instance.employee_id.get_company }}{% else %}HRMS{% endif %}\n

\n
\n
", "company_id": 1 } }