[UPDT] HELPDESK: Replace CRUD Operations into htmx

This commit is contained in:
Horilla
2024-12-13 15:27:36 +05:30
parent 1205749820
commit 73d65a6930
14 changed files with 2404 additions and 477 deletions

View File

@@ -69,7 +69,7 @@ class FAQForm(ModelForm):
"tags": forms.SelectMultiple(
attrs={
"class": "oh-select oh-select-2 select2-hidden-accessible",
"onchange": "updateTag()",
"onchange": "updateTag(this)",
}
),
}

View File

@@ -1,6 +1,15 @@
{% load i18n %}
{% if messages %}
<script>
setTimeout(() => { reloadMessage(this); $('.oh-modal__close').click(); }, 250);
</script>
<span hx-get="{% url 'faq-category-search' %}" hx-trigger="load" {% if faq_category %}
hx-target="#faqCategoryItem{{faq_category.id}}" hx-select="#faqCategoryItem{{faq_category.id}}" hx-swap="outerHTML"
{% else %} hx-target="#faqCategoryList" {% endif %}></span>
{% endif %}
<div class="oh-modal__dialog">
<div class="oh-modal__dialog-header">
<div class="oh-modal__dialog-header pb-0">
<h2 class="oh-modal__dialog-title" id="faqCreateModalLabel">
{% if faq_category %}
{% trans "FAQ category Update" %}
@@ -13,21 +22,13 @@
</button>
</div>
<div class="oh-modal__dialog-body" id="faqCategoryCreateForm">
<form
id="add-form"
<form id="add-form" class="oh-profile-section"
hx-post="{% if faq_category %}{% url 'faq-category-update' faq_category.id %}{% else %}{% url 'faq-category-create' %}{% endif %} "
hx-target="#faqCategoryCreate"
hx-swap="innerHTML"
method="post"
hx-encoding="multipart/form-data"
>
hx-target="#faqCategoryCreate" hx-swap="innerHTML" method="post" hx-encoding="multipart/form-data">
{{form.as_p}}
<div class="d-flex flex-row-reverse">
<input
type="submit"
value='{% trans "Save" %}'
class="oh-btn oh-btn--secondary oh-btn--shadow pl-5 pr-5"
/>
<input type="submit" value="{% trans 'Save' %}"
class="oh-btn oh-btn--secondary oh-btn--shadow pl-5 pr-5" />
</div>
</form>
</div>

View File

@@ -3,52 +3,34 @@
{% include 'filter_tags.html' %}
<div class="oh-wrapper oh-faq-cards">
{% for category in faq_categories %}
<div class="oh-faq-card">
<div class="oh-faq-card" id="faqCategoryItem{{category.id}}">
<div class="d-flex justify-content-between align-items-center">
<h3 class="oh-faq-card__title">{{category.title}}</h3>
{% if perms.helpdesk.change_faqcategory or perms.helpdesk.delete_faqcategory %}
<div class="oh-dropdown" x-data="{open: false}">
<button
class="oh-btn oh-stop-prop oh-btn--transparent oh-accordion-meta__btn"
@click="open = !open"
@click.outside="open = false"
title="Actions"
>
<ion-icon
name="ellipsis-vertical"
role="img"
class="md hydrated"
aria-label="ellipsis vertical"
></ion-icon>
<button class="oh-btn oh-stop-prop oh-btn--transparent oh-accordion-meta__btn" @click="open = !open"
@click.outside="open = false" title="Actions">
<ion-icon name="ellipsis-vertical" role="img" class="md hydrated"
aria-label="ellipsis vertical"></ion-icon>
</button>
<div class="oh-dropdown__menu oh-dropdown__menu--right" x-show="open">
<ul class="oh-dropdown__items">
{% if perms.helpdesk.change_faqcategory %}
<li class="oh-dropdown__item">
<a
hx-get="{% url 'faq-category-update' category.id %}"
hx-target="#objectCreateModalTarget"
data-toggle="oh-modal-toggle"
data-target="#objectCreateModal"
role="button"
class="oh-dropdown__link"
>{% trans "Edit" %}</a
>
<a hx-get="{% url 'faq-category-update' category.id %}" hx-target="#objectCreateModalTarget"
data-toggle="oh-modal-toggle" data-target="#objectCreateModal" role="button"
class="oh-dropdown__link">{% trans "Edit" %}</a>
</li>
{% endif %}
{% if perms.helpdesk.delete_faqcategory %}
<li class="oh-dropdown__item">
<form
action="{% url 'faq-category-delete' category.id %}"
onsubmit="return confirm('Are you sure you want to delete this FAQ Category?');"
method="post"
>
<form hx-confirm="{% trans 'Are you sure you want to delete this FAQ Category?' %}"
hx-post="{% url 'faq-category-delete' category.id %}" hx-swap="outerHTML"
hx-on-htmx-after-request="setTimeout(() => {reloadMessage(this);},100);"
hx-target="#faqCategoryItem{{category.id}}">
{% csrf_token %}
<button
type="submit"
class="oh-dropdown__link oh-dropdown__link--danger"
>
<button type="submit" class="oh-dropdown__link oh-dropdown__link--danger">
{% trans "Delete" %}
</button>
</form>
@@ -61,11 +43,7 @@
</div>
<p class="oh-faq-card__desc">{{category.description}}</p>
<a
href="{% url 'faq-view' category.id %}"
class="oh-btn oh-btn--secondary oh-btn--block"
>{% trans "View FAQs" %}</a
>
<a href="{% url 'faq-view' category.id %}" class="oh-btn oh-btn--secondary oh-btn--block">{% trans "View FAQs" %}</a>
</div>
{% endfor %}
</div>

View File

@@ -1,4 +1,11 @@
{% load i18n %}
{% if messages %}
<script>
setTimeout(() => { reloadMessage(this); $('.oh-modal__close').click(); }, 160);
</script>
<span hx-get="{% url 'faq-search' %}?cat_id={{cat_id}}" hx-trigger="load" {% if faq %} hx-target="#faqItem{{faq.id}}"
hx-select="#faqItem{{faq.id}}" hx-swap="outerHTML" {% else %} hx-target="#faqList" {% endif %}></span>
{% endif %}
<div class="oh-modal__dialog">
<div class="oh-modal__dialog-header">
<h2 class="oh-modal__dialog-title" id="faqCreateModalLabel">
@@ -13,21 +20,13 @@
</button>
</div>
<div class="oh-modal__dialog-body" id="faqCreateForm">
<form
id="add-form"
<form id="add-form" class="oh-profile-section"
hx-post="{% if faq %}{% url 'faq-update' faq.id %}{% else %}{% url 'faq-create' cat_id %}{% endif %} "
hx-target="#faqCreate"
hx-swap="innerHTML"
method="post"
hx-encoding="multipart/form-data"
>
hx-target="#faqCreate" hx-swap="innerHTML" method="post" hx-encoding="multipart/form-data">
{{form.as_p}}
<div class="d-flex flex-row-reverse">
<input
type="submit"
value='{% trans "Save" %}'
class="oh-btn oh-btn--secondary oh-btn--shadow pl-5 pr-5"
/>
<input type="submit" value='{% trans "Save" %}'
class="oh-btn oh-btn--secondary oh-btn--shadow pl-5 pr-5" />
</div>
</form>
</div>

View File

@@ -1,10 +1,10 @@
{% load i18n %}
{% include 'filter_tags.html' %}
<div class="oh-card">
<div class="oh-card mb-4">
<div class="oh-faq">
<ul class="oh-faq__items">
{% for faq in faqs %}
<li class="oh-faq__item">
<li class="oh-faq__item fade-me-out" id="faqItem{{faq.id}}">
<div class="oh-faq__item-header icon-inner" onclick="show_answer(this)">
<div class="oh-faq__item-header__left icon-inner">
<span class="oh-faq__item-title icon-inner"> {{faq.question}} </span>
@@ -16,38 +16,23 @@
</div>
<div class="oh-faq__item-header__right">
{% if perms.helpdesk.change_faq %}
<button
class="oh-btn oh-btn--sq oh-btn--transparent"
title="{% trans 'Edit' %}"
data-toggle="oh-modal-toggle"
data-target="#objectCreateModal"
hx-get="{% url 'faq-update' faq.id %}"
hx-target="#objectCreateModalTarget"
onclick='event.stopPropagation()'
>
<button class="oh-btn oh-btn--sq oh-btn--transparent" title="{% trans 'Edit' %}"
data-toggle="oh-modal-toggle" data-target="#objectCreateModal"
hx-get="{% url 'faq-update' faq.id %}" hx-target="#objectCreateModalTarget"
onclick='event.stopPropagation()'>
<ion-icon name="create-outline"></ion-icon>
</button>
{% endif %}
{% if perms.helpdesk.delete_faq %}
<form
action="{% url 'faq-delete' faq.id %}"
class="w-50"
onsubmit="return confirm('{% trans "Are you sure you want to delete this FAQ?" %}');"
method="post"
onclick="event.stopPropagation()"
>
<form hx-confirm="{% trans 'Are you sure you want to delete this FAQ?' %}"
hx-target="#faqItem{{faq.id}}" hx-post="{% url 'faq-delete' faq.id %}" class="w-50"
hx-on:click="event.stopPropagation();"
hx-on-htmx-after-request="setTimeout(() => {reloadMessage(this);},100);"
hx-swap="outerHTML swap:.5s">
{% csrf_token %}
<button
type="submit"
class="oh-btn oh-btn--sq oh-btn--danger-text oh-btn--transparent"
title="{% trans 'Delete' %}"
>
<ion-icon
class="me-1 md hydrated"
name="trash-outline"
role="img"
aria-label="trash outline"
></ion-icon>
<button type="submit" class="oh-btn oh-btn--sq oh-btn--danger-text oh-btn--transparent">
<ion-icon class="me-1 md hydrated" name="trash-outline" role="img"
aria-label="trash outline"></ion-icon>
</button>
</form>
{% endif %}

View File

@@ -5,10 +5,12 @@
background: #e9dfec9c;
opacity: 0.7;
}
.oh-faq__tag {
border-radius: 10px;
font-weight: 600;
}
.oh-faq__item-body {
max-height: 0;
transition: max-height 0.3s ease, padding 0.3s ease;
@@ -16,21 +18,27 @@
}
.oh-faq__item--show .oh-faq__item-body {
max-height: 200px; /* Adjust the max-height as needed */
max-height: 200px;
/* Adjust the max-height as needed */
}
.oh-title_faq__main-header {
width: 70%;
}
.oh-select-faq {
width: 12%;
}
.oh-select-faq , .oh-select-faq:last-child , .oh-faq__input-search {
.oh-select-faq,
.oh-select-faq:last-child,
.oh-faq__input-search {
margin: 1rem 0;
}
.oh-faq_search--icon {
top: 17px;
}
</style>
<div class="oh-wrapper">
{% if faqs %}
@@ -38,21 +46,15 @@
{% include "helpdesk/faq/faq_list.html" %}
</div>
{% else %}
<div
style="
<div style="
height: 70vh;
display: flex;
align-items: center;
justify-content: center;
"
>
">
<div class="oh-404">
<img
style="display: block; width: 150px; height: 150px; margin: 10px auto"
src="{% static 'images/ui/attendance.png' %}"
class="mb-4"
alt=""
/>
<img style="display: block; width: 150px; height: 150px; margin: 10px auto"
src="{% static 'images/ui/attendance.png' %}" class="mb-4" alt="" />
<h3 style="font-size: 20px" class="oh-404__subtitle">
{% trans "There are no FAQs at the moment." %}
</h3>
@@ -62,13 +64,7 @@
</div>
<!-- create FAQ modal -->
<div
class="oh-modal"
id="faqCreate"
role="dialog"
aria-labelledby="faqCreate"
aria-hidden="true"
></div>
<div class="oh-modal" id="faqCreate" role="dialog" aria-labelledby="faqCreate" aria-hidden="true"></div>
<!-- modal -->
@@ -77,37 +73,24 @@
</div>
</div>
<div
class="oh-modal"
id="addTagModal"
role="dialog"
aria-labelledby="editDialogModal"
aria-hidden="true"
style="z-index: 1100;"
>
<div class="oh-modal" id="addTagModal" role="dialog" aria-labelledby="editDialogModal" aria-hidden="true"
style="z-index: 1100;">
<div class="oh-modal__dialog">
<div class="oh-modal__dialog-header">
<h2 class="oh-modal__dialog-title" id="editTitle">
{% trans "Create Tag" %}
</h2>
<button class="oh-modal__close--custom" onclick="$(this).parents().closest('.oh-modal--show').toggleClass('oh-modal--show')" aria-label="Close">
<button class="oh-modal__close--custom"
onclick="$(this).parents().closest('.oh-modal--show').toggleClass('oh-modal--show')" aria-label="Close">
<ion-icon name="close-outline"></ion-icon>
</button>
</div>
<div class="oh-modal__dialog-body" id="editTarget">
<form
{% comment %} hx-post="{% url 'ticket-create-tag' %}"
hx-target="#addTagTarget"
method="post"
hx-encoding="multipart/form-data" {% endcomment %}
id ="addTagForm"
>
<form {% comment %} hx-post="{% url 'ticket-create-tag' %}" hx-target="#addTagTarget" method="post"
hx-encoding="multipart/form-data" {% endcomment %} id="addTagForm">
{% csrf_token %}
{{create_tag_f.as_p}}
{% comment %} <button
type="submit"
class="oh-btn oh-btn--secondary mt-2 mr-0 oh-btn--w-100-resp"
>
{% comment %} <button type="submit" class="oh-btn oh-btn--secondary mt-2 mr-0 oh-btn--w-100-resp">
{% trans "Save" %}
</button> {% endcomment %}
</form>
@@ -117,10 +100,7 @@
<script>
function updateTag(event) {
var selectedValues = $("#id_tags option:selected").map(function(){
return $(this).val();
}).get();
const selectedValues = Array.from(event.selectedOptions).map(option => option.value);
if (selectedValues.includes('create_new_tag')) {
$("#addTagModal").addClass("oh-modal--show");
}
@@ -149,6 +129,8 @@
$("#id_tags option[value='create_new_tag']").before(newOption);
$("#id_tags option[value='create_new_tag']").prop("selected", false);
$("#addTagModal").removeClass("oh-modal--show");
$('#addTagForm').find('input[name="title"]').val('');
},
})

View File

@@ -25,13 +25,13 @@ urlpatterns = [
),
path("faq-category-search/", views.faq_category_search, name="faq-category-search"),
path(
"faq-view/<int:cat_id>/",
"faq-view/<int:obj_id>/",
views.faq_view,
name="faq-view",
kwargs={"model": FAQCategory},
),
path("faq-create/<int:cat_id>/", views.create_faq, name="faq-create"),
path("faq-update/<int:id>", views.faq_update, name="faq-update"),
path("faq-create/<int:obj_id>/", views.create_faq, name="faq-create"),
path("faq-update/<int:obj_id>", views.faq_update, name="faq-update"),
path("faq-search/", views.faq_search, name="faq-search"),
path("faq-filter/<int:id>/", views.faq_filter, name="faq-filter"),
path("faq-suggestion/", views.faq_suggestion, name="faq-suggestion"),

View File

@@ -108,7 +108,8 @@ def faq_category_create(request):
if form.is_valid():
form.save()
messages.success(request, _("The FAQ Category created successfully."))
return HttpResponse("<script>window.location.reload()</script>")
form = FAQCategoryForm()
context = {
"form": form,
}
@@ -138,7 +139,7 @@ def faq_category_update(request, id):
if form.is_valid():
form.save()
messages.success(request, _("The FAQ category updated successfully."))
return HttpResponse("<script>window.location.reload()</script>")
context = {
"form": form,
"faq_category": faq_category,
@@ -153,9 +154,10 @@ def faq_category_delete(request, id):
faq = FAQCategory.objects.get(id=id)
faq.delete()
messages.success(request, _("The FAQ category has been deleted successfully."))
return HttpResponse("")
except ProtectedError:
messages.error(request, _("You cannot delete this FAQ category."))
return redirect(faq_category_view)
return HttpResponse("<script>window.location.reload()</script>")
@login_required
@@ -186,20 +188,20 @@ def faq_category_search(request):
@login_required
def faq_view(request, cat_id, **kwargs):
def faq_view(request, obj_id, **kwargs):
"""
This function is responsible for rendering the FAQ view.
Parameters:
request (HttpRequest): The HTTP request object.
cat_id (int): The id of the the faq category.
obj_id (int): The id of the the faq category.
"""
faqs = FAQ.objects.filter(category=cat_id)
faqs = FAQ.objects.filter(category=obj_id)
context = {
"faqs": faqs,
"f": FAQFilter(request.GET),
"cat_id": cat_id,
"cat_id": obj_id,
"create_tag_f": TagsForm(),
}
@@ -209,7 +211,7 @@ def faq_view(request, cat_id, **kwargs):
@login_required
@hx_request_required
@permission_required("helpdesk.add_faq")
def create_faq(request, cat_id):
def create_faq(request, obj_id):
"""
This function is responsible for creating the FAQ.
@@ -221,16 +223,16 @@ def create_faq(request, cat_id):
POST : return faq view
"""
form = FAQForm(initial={"category": cat_id})
form = FAQForm(initial={"category": obj_id})
if request.method == "POST":
form = FAQForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, _("The FAQ created successfully."))
return HttpResponse("<script>window.location.reload()</script>")
context = {
"form": form,
"cat_id": cat_id,
"cat_id": obj_id,
}
return render(request, "helpdesk/faq/faq_create.html", context)
@@ -238,7 +240,7 @@ def create_faq(request, cat_id):
@login_required
@hx_request_required
@permission_required("helpdesk.change_faq")
def faq_update(request, id):
def faq_update(request, obj_id):
"""
This function is responsible for updating the FAQ.
@@ -251,17 +253,17 @@ def faq_update(request, id):
POST : return faq view
"""
faq = FAQ.objects.get(id=id)
faq = FAQ.objects.get(id=obj_id)
form = FAQForm(instance=faq)
if request.method == "POST":
form = FAQForm(request.POST, instance=faq)
if form.is_valid():
form.save()
messages.success(request, _("The FAQ updated successfully."))
return HttpResponse("<script>window.location.reload()</script>")
context = {
"form": form,
"faq": faq,
"cat_id": faq.category.id,
}
return render(request, "helpdesk/faq/faq_create.html", context)
@@ -364,9 +366,10 @@ def faq_delete(request, id):
messages.success(
request, _('The FAQ "{}" has been deleted successfully.').format(faq)
)
return HttpResponse("")
except ProtectedError:
messages.error(request, _("You cannot delete this FAQ."))
return redirect(faq_view, cat_id=cat_id)
return HttpResponse("<script>window.location.reload()</script>")
@login_required

View File

@@ -59,19 +59,6 @@
"time_format": null
}
},
{
"model": "base.horillamailtemplate",
"pk": 1,
"fields": {
"created_at": "2024-11-05T09:39:13.733Z",
"created_by": null,
"modified_by": null,
"is_active": true,
"title": "Offer letter",
"body": "<p style=\"font-size: 12.8px; text-align: center;\"><span style=\"font-weight: bolder;\"><span style=\"font-family: &quot;Courier New&quot;; font-size: 24px;\">Congratulations! Job Offer at {{instance.get_company}}</span></span></p><p style=\"font-size: 12.8px;\">username:{{instance.get_email}}</p><p style=\"font-size: 12.8px;\">password:{{instance.phone}}</p><p style=\"font-size: 12.8px;\"><i><span style=\"font-size: 14px;\">Dear {{instance.get_full_name}},</span></i></p><p style=\"font-size: 12.8px;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 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.</p><p style=\"font-size: 12.8px;\"><span style=\"font-size: 12.8px;\">Here are the details of your job offer:&nbsp;</span></p><p style=\"font-size: 12.8px;\"><span style=\"font-size: 12.8px;\">&nbsp; &nbsp; Job Position: {{instance.get_job_position}}</span></p><p style=\"font-size: 12.8px;\"><span style=\"font-size: 12.8px;\">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.</span><br></p><p style=\"font-size: 12.8px;\"><span style=\"font-size: 12.8px;\">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</span><br></p><p style=\"font-size: 12.8px;\"><span style=\"font-size: 12.8px;\">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.</span><br></p><p style=\"font-size: 12.8px;\"><span style=\"font-size: 12.8px;\">Welcome aboard, and we look forward to a successful and fulfilling working relationship!</span><br></p><p style=\"font-size: 12.8px;\"><span style=\"font-size: 12.8px;\">Warm regards,</span></p>",
"company_id": null
}
},
{
"model": "base.department",
"pk": 1,
@@ -2668,7 +2655,7 @@
"modified_by": 1,
"is_active": true,
"title": "Recruitment",
"color": "#ffcccc",
"color": "#fb8787",
"company_id": null
}
},
@@ -2693,8 +2680,8 @@
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "attendance",
"color": "#000000",
"title": "Attendance",
"color": "#afbcee",
"company_id": null
}
},
@@ -2706,11 +2693,206 @@
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "employee",
"title": "Employee",
"color": "#806d8d",
"company_id": null
}
},
{
"model": "base.tags",
"pk": 6,
"fields": {
"created_at": "2024-12-12T03:26:32.592Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Leave",
"color": "#66cffd",
"company_id": null
}
},
{
"model": "base.tags",
"pk": 7,
"fields": {
"created_at": "2024-12-12T03:49:46.452Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Biometric",
"color": "#e35959",
"company_id": null
}
},
{
"model": "base.tags",
"pk": 17,
"fields": {
"created_at": "2024-12-12T06:48:51.312Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Asset",
"color": "#4cbdef",
"company_id": null
}
},
{
"model": "base.tags",
"pk": 18,
"fields": {
"created_at": "2024-12-12T06:49:10.165Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Dashboard",
"color": "#8a8585",
"company_id": null
}
},
{
"model": "base.tags",
"pk": 19,
"fields": {
"created_at": "2024-12-12T06:49:42.695Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Import",
"color": "#1dc56e",
"company_id": null
}
},
{
"model": "base.tags",
"pk": 20,
"fields": {
"created_at": "2024-12-12T06:50:12.441Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Export",
"color": "#70a5eb",
"company_id": null
}
},
{
"model": "base.tags",
"pk": 21,
"fields": {
"created_at": "2024-12-12T06:50:50.090Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Request",
"color": "#bec30c",
"company_id": null
}
},
{
"model": "base.tags",
"pk": 22,
"fields": {
"created_at": "2024-12-12T06:51:04.892Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Allocation",
"color": "#046d88;",
"company_id": null
}
},
{
"model": "base.tags",
"pk": 23,
"fields": {
"created_at": "2024-12-12T07:05:58.903Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Stage",
"color": "#b8a5fa;",
"company_id": null
}
},
{
"model": "base.tags",
"pk": 24,
"fields": {
"created_at": "2024-12-12T07:06:07.247Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Manager",
"color": "#00b2ba",
"company_id": null
}
},
{
"model": "base.tags",
"pk": 25,
"fields": {
"created_at": "2024-12-12T07:08:52.033Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Pipeline",
"color": "#843787",
"company_id": null
}
},
{
"model": "base.tags",
"pk": 26,
"fields": {
"created_at": "2024-12-12T07:12:53.694Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Resume",
"color": "#63a189",
"company_id": null
}
},
{
"model": "base.tags",
"pk": 27,
"fields": {
"created_at": "2024-12-12T07:13:16.506Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Skill Zone",
"color": "#f4b74e",
"company_id": null
}
},
{
"model": "base.tags",
"pk": 28,
"fields": {
"created_at": "2024-12-12T07:13:38.071Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Interview",
"color": "#f5dcb3",
"company_id": null
}
},
{
"model": "base.tags",
"pk": 29,
"fields": {
"created_at": "2024-12-12T07:14:05.035Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Candidate",
"color": "#b2e1f5",
"company_id": null
}
},
{
"model": "base.dynamicpagination",
"pk": 1,
@@ -2989,5 +3171,48 @@
"based_on_week_day": "5",
"company_id": null
}
},
{
"model": "base.multipleapprovalcondition",
"pk": 1,
"fields": {
"created_at": "2024-12-12T10:22:43.982Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"department": 2,
"condition_field": "requested_days",
"condition_operator": "gt",
"condition_value": "2",
"condition_start_value": null,
"condition_end_value": null,
"company_id": 1
}
},
{
"model": "base.horillamailtemplate",
"pk": 1,
"fields": {
"created_at": "2024-11-05T09:39:13.733Z",
"created_by": null,
"modified_by": null,
"is_active": true,
"title": "Offer letter",
"body": "<p style=\"font-size: 12.8px; text-align: center;\"><span style=\"font-weight: bolder;\"><span style=\"font-family: &quot;Courier New&quot;; font-size: 24px;\">Congratulations! Job Offer at {{instance.get_company}}</span></span></p><p style=\"font-size: 12.8px;\">username:{{instance.get_email}}</p><p style=\"font-size: 12.8px;\">password:{{instance.phone}}</p><p style=\"font-size: 12.8px;\"><i><span style=\"font-size: 14px;\">Dear {{instance.get_full_name}},</span></i></p><p style=\"font-size: 12.8px;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 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.</p><p style=\"font-size: 12.8px;\"><span style=\"font-size: 12.8px;\">Here are the details of your job offer:&nbsp;</span></p><p style=\"font-size: 12.8px;\"><span style=\"font-size: 12.8px;\">&nbsp; &nbsp; Job Position: {{instance.get_job_position}}</span></p><p style=\"font-size: 12.8px;\"><span style=\"font-size: 12.8px;\">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.</span><br></p><p style=\"font-size: 12.8px;\"><span style=\"font-size: 12.8px;\">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</span><br></p><p style=\"font-size: 12.8px;\"><span style=\"font-size: 12.8px;\">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.</span><br></p><p style=\"font-size: 12.8px;\"><span style=\"font-size: 12.8px;\">Welcome aboard, and we look forward to a successful and fulfilling working relationship!</span><br></p><p style=\"font-size: 12.8px;\"><span style=\"font-size: 12.8px;\">Warm regards,</span></p>",
"company_id": null
}
},
{
"model": "base.horillamailtemplate",
"pk": 2,
"fields": {
"created_at": "2024-12-12T10:23:52.188Z",
"created_by": 1,
"modified_by": 1,
"is_active": false,
"title": "Leave Request Mail",
"body": "<p>Dear,</p><p>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.<br><br>If you require any additional information or updates, feel free to communicate directly with {{ model_instance.employee_id }}.<br><br>Thank you for your prompt attention to this matter.</p>",
"company_id": 1
}
}
]

870
load_data/faqs.json Normal file
View File

@@ -0,0 +1,870 @@
[
{
"model": "helpdesk.faqcategory",
"pk": 1,
"fields": {
"created_at": "2024-12-12T03:19:37.526Z",
"created_by": null,
"modified_by": null,
"is_active": true,
"title": "Leave",
"description": "FAQs related to leave are shown here"
}
},
{
"model": "helpdesk.faqcategory",
"pk": 2,
"fields": {
"created_at": "2024-12-12T03:19:37.542Z",
"created_by": null,
"modified_by": null,
"is_active": true,
"title": "Attendance",
"description": "FAQs related to attendance are shown here"
}
},
{
"model": "helpdesk.faqcategory",
"pk": 3,
"fields": {
"created_at": "2024-12-12T03:19:37.558Z",
"created_by": null,
"modified_by": null,
"is_active": true,
"title": "Employee",
"description": "FAQs related to employee are shown here"
}
},
{
"model": "helpdesk.faqcategory",
"pk": 4,
"fields": {
"created_at": "2024-12-12T03:19:37.570Z",
"created_by": null,
"modified_by": null,
"is_active": true,
"title": "Base",
"description": "FAQs related to base are shown here"
}
},
{
"model": "helpdesk.faqcategory",
"pk": 5,
"fields": {
"created_at": "2024-12-12T03:19:37.583Z",
"created_by": null,
"modified_by": null,
"is_active": true,
"title": "Recruitment",
"description": "FAQs related to recruitment are shown here"
}
},
{
"model": "helpdesk.faqcategory",
"pk": 6,
"fields": {
"created_at": "2024-12-12T06:16:05.685Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Payroll",
"description": "FAQs related to attendance are shown here"
}
},
{
"model": "helpdesk.faqcategory",
"pk": 7,
"fields": {
"created_at": "2024-12-12T06:46:44.110Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Asset",
"description": "FAQs related to attendance are shown here"
}
},
{
"model": "helpdesk.faq",
"pk": 1,
"fields": {
"created_at": "2024-12-12T03:19:37.597Z",
"created_by": null,
"modified_by": null,
"is_active": true,
"question": "How to create a leave request?",
"answer": "Click on My Leave Request > Select Leave Type > Fill out the form",
"category": 1,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 2,
"fields": {
"created_at": "2024-12-12T03:19:38.034Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "How to export work records?",
"answer": "Click on Work Records inside Attendance, filter the data and click on Export button",
"category": 2,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 3,
"fields": {
"created_at": "2024-12-12T03:19:38.147Z",
"created_by": null,
"modified_by": null,
"is_active": true,
"question": "How to create a shift request?",
"answer": "go to employee --> shift request --> create --> Fill out the form",
"category": 4,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 4,
"fields": {
"created_at": "2024-12-12T03:19:38.278Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "How to add stage managers to an existing stage?",
"answer": "Recruitment --> Stage 3 dot --> Edit --> Managers",
"category": 5,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 5,
"fields": {
"created_at": "2024-12-12T03:19:38.394Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is recruitment pipeline?",
"answer": "All the details about the recruitment, stage, and candidate can be controlled from here.",
"category": 5,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 6,
"fields": {
"created_at": "2024-12-12T03:19:38.503Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "How to create an Employee?",
"answer": "Employee > Employees > Create > Fill out the form",
"category": 3,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 7,
"fields": {
"created_at": "2024-12-12T03:26:34.988Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"question": "How to assign leave type to employee",
"answer": "Leave > Assigned Leave > Assign",
"category": 1,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 8,
"fields": {
"created_at": "2024-12-12T03:31:56.975Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"question": "How to create leave types",
"answer": "Leave > Leave Types > Create > Fill Out Form",
"category": 1,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 9,
"fields": {
"created_at": "2024-12-12T03:45:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is the Attendance Module used for?",
"answer": "The Attendance Module tracks and manages employee attendance, including check-ins, check-outs, and biometric integration.",
"category": 2,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 10,
"fields": {
"created_at": "2024-12-12T03:45:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is the Check-In/Check-Out system?",
"answer": "It records employee working hours by tracking their check-in and check-out times.",
"category": 2,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 11,
"fields": {
"created_at": "2024-12-12T03:45:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is the purpose of Biometric Devices?",
"answer": "Biometric devices, such as ZKTeco,Matrix COSEC & Anviz synchronize attendance data automatically for accurate tracking.",
"category": 2,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 12,
"fields": {
"created_at": "2024-12-12T03:45:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "How can employees edit their attendance records?",
"answer": "Employees can submit an Attendance Request to edit or add missing attendance records.",
"category": 2,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 13,
"fields": {
"created_at": "2024-12-12T03:45:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is the Hour Account feature?",
"answer": "It tracks total worked hours for employees by month and year.",
"category": 2,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 14,
"fields": {
"created_at": "2024-12-12T03:45:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What does the Work Records feature do?",
"answer": "It compiles daily attendance statuses (e.g., present, absent) into monthly records.",
"category": 2,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 15,
"fields": {
"created_at": "2024-12-12T03:45:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is Attendance Activity?",
"answer": "It shows attendance records generated from check-ins, check-outs, or biometric devices.",
"category": 2,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 16,
"fields": {
"created_at": "2024-12-12T03:45:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What does Late Come Early Out mean?",
"answer": "It flags employees who check in late or leave early based on their shift schedule.",
"category": 2,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 17,
"fields": {
"created_at": "2024-12-12T03:45:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What can employees see in My Attendance?",
"answer": "Employees can view their previous attendance records and statuses.",
"category": 2,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 18,
"fields": {
"created_at": "2024-12-12T03:45:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What are Attendance Requests?",
"answer": "They allow employees to request modifications to attendance records if errors occur.",
"category": 2,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 19,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is the Employee Profile view used for?",
"answer": "The Employee Profile view displays all details about an employee, including personal, work, bank information, and more. It also allows employees to customize visible tabs.",
"category": 3,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 20,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "How can an employee request a shift change?",
"answer": "Employees can request a shift change through the 'Reallocate Shift' option in the Work Type & Shift tab. Admin approval is required for changes.",
"category": 3,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 21,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What details can employees view in the Attendance tab?",
"answer": "The Attendance tab shows all attendance records for the employee in a detailed tabular view.",
"category": 3,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 22,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What actions are available in the Employee Directory?",
"answer": "The Employee Directory allows actions like importing, exporting, bulk archiving, unarchiving, updating, and deleting employee data.",
"category": 3,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 23,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "How are document requests handled?",
"answer": "Admins or managers create document requests specifying details like title, format, and size. Employees upload documents directly from their profile.",
"category": 3,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 24,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is the Shift Request feature?",
"answer": "The Shift Request feature allows employees to request temporary or permanent shift changes. Approval by a manager or admin is required.",
"category": 3,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 25,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is a Rotating Work Type Assign?",
"answer": "A Rotating Work Type Assign automates frequent changes in work types based on conditions like intervals, weekends, or specific dates.",
"category": 3,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 26,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "How can employees manage disciplinary actions?",
"answer": "Admins can create disciplinary actions like warnings or suspensions, and these may block employee logins for the specified period.",
"category": 3,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 27,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What can employees find in the Policies section?",
"answer": "Employees can access company policies and guidelines in the Policies section for reference.",
"category": 3,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 28,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is the Organization Chart feature?",
"answer": "The Organization Chart provides a visual representation of reporting structures, helping to identify team members and managers.",
"category": 3,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 29,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is the Recruitment module in Horilla HRMS?",
"answer": "The Recruitment module allows HR professionals to create and manage job postings, receive and review resumes, manage interviews, and track candidate progress throughout the hiring process.",
"category": 5,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 30,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is the Recruitment Pipeline feature?",
"answer": "The Recruitment Pipeline is a comprehensive feature that organizes candidates through various stages using tabular and Kanban views. It supports multiple recruitment drives, each represented as a tab for easy management.",
"category": 5,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 31,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "How can I create a new recruitment in Horilla?",
"answer": "To create a new recruitment, click on the '+ Create' button from Recruitment > Recruitments , specify the job position, description, vacancies, managers, start and end dates, and select a recruitment survey.",
"category": 5,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 32,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What are the main stage types in the recruitment process?",
"answer": "The main stage types are Initial, Interview, Hired, and Cancelled. Each type serves a specific purpose, such as automatically registering candidates or marking them as hired.",
"category": 5,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 33,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "How do I add a new stage to the recruitment process?",
"answer": "To add a new stage, click on the '+ Stage' button from Recruitment Pipeline, provide the stage title, assign stage managers, and specify the stage type (e.g., Initial, Interview, Hired).",
"category": 5,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 34,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is Resume Shortlisting and how does it work?",
"answer": "Resume Shortlisting is a feature that uses skill-based keyword optimization to rank resumes. The system calculates scores for each resume based on matching skills and displays them in descending order.",
"category": 5,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 35,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is the Skill Zone feature?",
"answer": "The Skill Zone categorizes candidates based on their skills, helping recruiters match them to relevant job positions more efficiently.",
"category": 5,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 36,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "How can I manage interviews within the Recruitment module?",
"answer": "You can manage interviews through the 'Scheduled Interviews' page, where you can add, edit, or delete interviews, assign interviewers, and track the status of interviews.",
"category": 5,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 37,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "Can I customize application forms in Horilla HRMS?",
"answer": "Yes, the Recruitment Survey feature allows HR managers to create custom questionnaires for candidates, which are integrated into the application forms.",
"category": 5,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 38,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What are the available views for managing candidates?",
"answer": "Candidates can be managed using the Kanban view, list view, and detailed view. These views allow for filtering, grouping, and performing actions like editing, exporting, or converting candidates to employees.",
"category": 5,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 39,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is the Payroll module in Horilla HRMS?",
"answer": "The Payroll module in Horilla HRMS enables businesses to manage employee allowances, deductions, taxes, and generate accurate payslips, ensuring streamlined and efficient payroll processes.",
"category": 6,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 40,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What features does the Payroll Dashboard offer?",
"answer": "The Payroll Dashboard provides visual insights into payroll processes, including charts for payslips, contract details, and department-wise payslips. Managers can also download data as Excel files.",
"category": 6,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 41,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "How does Contract Management work in Horilla?",
"answer": "Contract Management allows users to create contracts, define compensation, set contract duration, and manage leave settings. It supports various wage types for customized work arrangements.",
"category": 6,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 42,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is the Allowance Management feature?",
"answer": "Allowance Management enables users to create and customize allowances, set eligibility conditions, and specify fixed or variable allowances. It simplifies targeting allowances to employee groups and ensures fairness.",
"category": 6,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 43,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "How are deductions managed in Horilla?",
"answer": "The Deduction Management feature allows users to create and personalize deductions, set eligibility conditions, and choose fixed or variable amounts. It ensures streamlined deductions and fair practices.",
"category": 6,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 44,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is the Loan and Advance Salary module?",
"answer": "This module helps manage employee loans, installments, and advance salary transactions, ensuring accurate and transparent financial dealings.",
"category": 6,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 45,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What does the Encashments & Reimbursements feature offer?",
"answer": "This feature supports reimbursements for company-related expenses, leave encashments, and bonus point encashments, simplifying the process for diverse employee needs.",
"category": 6,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 46,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "How does the Federal Tax feature work?",
"answer": "The Federal Tax feature automates tax calculations, defines tax brackets, and sets rates based on income. It ensures compliance and smooth payroll processing.",
"category": 6,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 47,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "How are payslips generated in Horilla?",
"answer": "The Payslip Generation feature calculates salaries, including allowances, deductions, and taxes, and creates accurate and detailed payslips for each pay period.",
"category": 6,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 48,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is the Asset Management System in Horilla HRMS?",
"answer": "The Asset Management System enables employees to request and manage work-related assets like computers and equipment. It categorizes assets, tracks requests, and ensures efficient allocation.",
"category": 7,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 49,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What features are available on the Asset Dashboard?",
"answer": "The Asset Dashboard displays the total number of assets, asset requests, and assets in use. It includes pie charts and tables for asset allocation and provides tools for admins to approve requests and allocate assets directly.",
"category": 7,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 50,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "How can admin search for assets in Horilla HRMS?",
"answer": "Admin can search for specific asset categories or individual assets using the search bar. The system dynamically filters results based on the search term.",
"category": 7,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 51,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is the Asset Import feature?",
"answer": "The Asset Import feature allows admin to upload large amounts of asset data, such as names, purchase dates, and categories, from an external file like Excel, improving efficiency in asset management.",
"category": 7,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 52,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is the purpose of the Asset Export feature?",
"answer": "The Asset Export feature enables admin to download asset data, either filtered or in full, for reporting or further processing.",
"category": 7,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 53,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "How can asset categories be managed in Horilla HRMS?",
"answer": "Admin can create, update, and delete asset categories. Categories can only be deleted if they are empty, ensuring no associated assets remain in use.",
"category": 7,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 54,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What is the Asset Request and Allocation feature?",
"answer": "This feature allows employees to request new assets or return allocated ones, while admins can allocate or reallocate assets based on requests and availability.",
"category": 7,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 55,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "What details can be updated in the Asset Updation form?",
"answer": "Admin can update details like asset name, description, tracking ID, purchase date, cost, status, and expiry date. Notifications can also be set for upcoming expiry dates.",
"category": 7,
"company_id": null
}
},
{
"model": "helpdesk.faq",
"pk": 56,
"fields": {
"created_at": "2024-12-12T04:00:00Z",
"created_by": null,
"modified_by": 1,
"is_active": true,
"question": "How does Asset History tracking work?",
"answer": "The Asset History feature tracks details of returned assets, allowing admin to filter, group, and sort asset usage data as needed.",
"category": 7,
"company_id": null
}
}
]

View File

@@ -3264,6 +3264,7 @@
"department": 1,
"include_all": true,
"description": "Horilla Project Installation",
"company_id": 1,
"job_position": [],
"spesific_leave_types": [],
"exclued_leave_types": []
@@ -3283,6 +3284,7 @@
"department": 2,
"include_all": true,
"description": "Luanch Horilla",
"company_id": 1,
"job_position": [],
"spesific_leave_types": [],
"exclued_leave_types": []
@@ -3302,6 +3304,27 @@
"department": 2,
"include_all": true,
"description": "Chirstmas Sales",
"company_id": 1,
"job_position": [],
"spesific_leave_types": [],
"exclued_leave_types": [3]
}
},
{
"model": "leave.restrictleave",
"pk": 5,
"fields": {
"created_at": "2024-12-12T10:25:21.388Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "S/W Dept. Restriction",
"start_date": "2024-12-01",
"end_date": "2024-12-30",
"department": 1,
"include_all": true,
"description": "Description",
"company_id": 1,
"job_position": [],
"spesific_leave_types": [],
"exclued_leave_types": [3]

View File

@@ -3,37 +3,22 @@
"model": "offboarding.offboarding",
"pk": 1,
"fields": {
"created_at": "2024-11-15T03:07:52.493Z",
"created_at": "2024-12-12T09:48:40.988Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Offboarding 2024",
"description": "Offboarding pipeline 2024",
"description": "Offboarding Pipeline for 2024",
"status": "ongoing",
"company_id": null,
"managers": [1]
}
},
{
"model": "offboarding.offboarding",
"pk": 2,
"fields": {
"created_at": "2024-11-15T03:10:52.493Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Offboarding 2025",
"description": "Offboarding pipeline 2025",
"status": "ongoing",
"company_id": null,
"company_id": 1,
"managers": [1]
}
},
{
"model": "offboarding.offboardingstage",
"pk": 1,
"pk": 13,
"fields": {
"created_at": "2024-11-15T03:07:52.499Z",
"created_at": "2024-12-12T09:48:41.001Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
@@ -46,9 +31,9 @@
},
{
"model": "offboarding.offboardingstage",
"pk": 2,
"pk": 14,
"fields": {
"created_at": "2024-11-15T03:07:52.517Z",
"created_at": "2024-12-12T09:48:41.028Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
@@ -61,9 +46,9 @@
},
{
"model": "offboarding.offboardingstage",
"pk": 3,
"pk": 15,
"fields": {
"created_at": "2024-11-15T03:07:52.527Z",
"created_at": "2024-12-12T09:48:41.045Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
@@ -76,9 +61,9 @@
},
{
"model": "offboarding.offboardingstage",
"pk": 4,
"pk": 16,
"fields": {
"created_at": "2024-11-15T03:07:52.537Z",
"created_at": "2024-12-12T09:48:41.063Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
@@ -91,9 +76,9 @@
},
{
"model": "offboarding.offboardingstage",
"pk": 5,
"pk": 17,
"fields": {
"created_at": "2024-11-15T03:07:52.547Z",
"created_at": "2024-12-12T09:48:41.080Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
@@ -106,9 +91,9 @@
},
{
"model": "offboarding.offboardingstage",
"pk": 6,
"pk": 18,
"fields": {
"created_at": "2024-11-15T03:07:52.556Z",
"created_at": "2024-12-12T09:48:41.097Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
@@ -119,81 +104,6 @@
"managers": []
}
},
{
"model": "offboarding.offboardingstage",
"pk": 8,
"fields": {
"created_at": "2024-11-15T03:07:52.517Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Exit interview",
"type": "interview",
"offboarding_id": 2,
"sequence": 0,
"managers": []
}
},
{
"model": "offboarding.offboardingstage",
"pk": 9,
"fields": {
"created_at": "2024-11-15T03:07:52.527Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Work Handover",
"type": "handover",
"offboarding_id": 2,
"sequence": 0,
"managers": []
}
},
{
"model": "offboarding.offboardingstage",
"pk": 10,
"fields": {
"created_at": "2024-11-15T03:07:52.537Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "FNF",
"type": "fnf",
"offboarding_id": 2,
"sequence": 0,
"managers": []
}
},
{
"model": "offboarding.offboardingstage",
"pk": 11,
"fields": {
"created_at": "2024-11-15T03:07:52.547Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Farewell",
"type": "other",
"offboarding_id": 2,
"sequence": 0,
"managers": []
}
},
{
"model": "offboarding.offboardingstage",
"pk": 12,
"fields": {
"created_at": "2024-11-15T03:07:52.556Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"title": "Archived",
"type": "archived",
"offboarding_id": 2,
"sequence": 0,
"managers": []
}
},
{
"model": "offboarding.resignationletter",
"pk": 1,

View File

@@ -1592,5 +1592,32 @@
"status": "requested",
"description": "Software license for Sublime Text (1-year subscription for team development)."
}
},
{
"model": "payroll.loanaccount",
"pk": 1,
"fields": {
"created_at": "2024-12-12T09:45:26.097Z",
"created_by": 1,
"modified_by": 1,
"is_active": true,
"type": "loan",
"title": "Medical Loan",
"employee_id": 18,
"loan_amount": 60000.0,
"provided_date": "2024-12-01",
"allowance_id": 5,
"description": "Loan for parents medical case",
"is_fixed": true,
"rate": 0.0,
"installment_amount": 5000.0,
"installments": 12,
"installment_start_date": "2025-01-01",
"apply_on": "end_of_month",
"settled": false,
"settled_date": null,
"asset_id": null,
"deduction_ids": [22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33]
}
}
]

File diff suppressed because it is too large Load Diff