[UPDT] ATTENDANCE: Updated attendance export method by adding htmx for filter attendance datas to export
This commit is contained in:
@@ -134,35 +134,8 @@
|
||||
role="dialog"
|
||||
aria-labelledby="attendanceExport"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="oh-modal__dialog">
|
||||
<div class="oh-modal__dialog-header">
|
||||
<h2 class="oh-modal__dialog-title" id="attendanceExportLavel">
|
||||
{% trans "Export Attendances" %}
|
||||
</h2>
|
||||
<button class="oh-modal__close" aria-label="Close">
|
||||
<ion-icon name="close-outline"></ion-icon>
|
||||
</button>
|
||||
<div
|
||||
class="oh-modal__dialog-body p-0 pt-2"
|
||||
id="attendanceExportModalBody"
|
||||
>
|
||||
<form
|
||||
action="{%url 'attendance-info-export' %}"
|
||||
method="get"
|
||||
onsubmit="event.stopPropagation();$(this).parents().find('.oh-modal--show').last().toggleClass('oh-modal--show');"
|
||||
id="attendanceExportForm"
|
||||
>
|
||||
{% csrf_token %} {% include 'attendance/attendance/export_filter.html'%}
|
||||
<div class="oh-dropdown__filter-footer">
|
||||
<button class="oh-btn oh-btn--secondary oh-btn--small w-100">
|
||||
{% trans "Export" %}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
>
|
||||
<div class="oh-modal__dialog" id="attendanceExportModalBody"></div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
@@ -291,7 +264,7 @@
|
||||
}
|
||||
</script> {% endcomment %}
|
||||
</form>
|
||||
<div class="oh-dropdown ml-2" x-data="{open: false}">
|
||||
<div class="oh-dropdown ml-2" x-data="{open: false}" on>
|
||||
<button
|
||||
onclick="event.stopPropagation();event.preventDefault()"
|
||||
class="oh-btn oh-btn--dropdown"
|
||||
@@ -324,6 +297,8 @@
|
||||
id="attendance-info-export"
|
||||
data-toggle="oh-modal-toggle"
|
||||
data-target="#attendanceExport"
|
||||
hx-get="{% url 'attendance-info-export-form' %}"
|
||||
hx-target="#attendanceExportModalBody"
|
||||
>{% trans "Export" %}</a
|
||||
>
|
||||
</li>
|
||||
|
||||
@@ -1,159 +1,187 @@
|
||||
{% load static %} {% load i18n %}
|
||||
<div class="oh-dropdown__filter-body" id="export_attendance_form">
|
||||
<div class="oh-accordion">
|
||||
<div class="oh-accordion-header">{% trans "Excel columns" %}</div>
|
||||
<div class="oh-accordion-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">
|
||||
<input type="checkbox" id="select-all-fields" /> {% trans "Select All" %}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
{% for field in export_form.selected_fields %}
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label"> {{ field }} </label>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oh-accordion">
|
||||
<div class="oh-accordion-header">{% trans "Work Info" %}</div>
|
||||
<div class="oh-accordion-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Employee" %}</label>
|
||||
{{export.form.employee_id}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Department" %}</label>
|
||||
{{export.form.employee_id__employee_work_info__department_id}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Shift" %}</label>
|
||||
{{export.form.shift_id}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Reporting Manager" %}</label>
|
||||
{{export.form.employee_id__employee_work_info__reporting_manager_id}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Company" %}</label>
|
||||
{{export.form.employee_id__employee_work_info__company_id}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Job Position" %}</label>
|
||||
{{export.form.employee_id__employee_work_info__job_position_id}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Work Type" %}</label>
|
||||
{{export.form.work_type_id}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Work Location" %}</label>
|
||||
{{export.form.employee_id__employee_work_info__location}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oh-accordion">
|
||||
<div class="oh-accordion-header">{% trans "Attendance" %}</div>
|
||||
<div class="oh-accordion-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Attendance Date" %}</label>
|
||||
{{export.form.attendance_date}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "In Time" %}</label>
|
||||
{{export.form.attendance_clock_in}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Validated?" %}</label>
|
||||
{{export.form.attendance_validated}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Min Hour" %}</label>
|
||||
{{export.form.minimum_hour}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Out Time" %}</label>
|
||||
{{export.form.attendance_clock_out}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "OT Approved?" %}</label>
|
||||
{{export.form.attendance_overtime_approve}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oh-accordion">
|
||||
<div class="oh-accordion-header">{% trans "Advanced" %}</div>
|
||||
<div class="oh-accordion-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Attendance From" %}</label>
|
||||
{{export.form.attendance_date__gte}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "In From" %}</label>
|
||||
{{export.form.attendance_clock_in__gte}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Out From" %}</label>
|
||||
{{export.form.attendance_clock_out__gte}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label"
|
||||
>{% trans "At Work Greater or Equal" %}</label
|
||||
>
|
||||
{{export.form.at_work_second__gte}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "OT Greater or Equal" %}</label>
|
||||
{{export.form.overtime_second__gte}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Attendance Till" %}</label>
|
||||
{{export.form.attendance_date__lte}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "In Till" %}</label>
|
||||
{{export.form.attendance_clock_in__lte}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Out Till" %}</label>
|
||||
{{export.form.attendance_clock_out__lte}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label"
|
||||
>{% trans "At Work Less Than or Equal" %}</label
|
||||
>
|
||||
{{export.form.at_work_second__lte}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "OT Less Than or Equal" %}</label>
|
||||
{{export.form.overtime_second__lte}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oh-modal__dialog-header">
|
||||
<h2 class="oh-modal__dialog-title m-0" id="attendanceExportLavel">
|
||||
{% trans "Export Attendances" %}
|
||||
</h2>
|
||||
<button class="oh-modal__close" aria-label="Close">
|
||||
<ion-icon name="close-outline"></ion-icon>
|
||||
</button>
|
||||
</div>
|
||||
<div class="oh-modal__dialog-body" id="attendanceExportModalBody">
|
||||
<form
|
||||
action="{%url 'attendance-info-export' %}"
|
||||
method="get"
|
||||
onsubmit="event.stopPropagation();$(this).parents().find('.oh-modal--show').last().toggleClass('oh-modal--show');"
|
||||
id="attendanceExportForm"
|
||||
class="oh-profile-section pt-2"
|
||||
>
|
||||
{% csrf_token %}
|
||||
<div class="oh-dropdown__filter-body" id="export_attendance_form">
|
||||
<div class="oh-accordion">
|
||||
<div class="oh-accordion-header">{% trans "Excel columns" %}</div>
|
||||
<div class="oh-accordion-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">
|
||||
<input type="checkbox" id="select-all-fields" /> {% trans "Select All" %}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
{% for field in export_form.selected_fields %}
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label"> {{ field }} </label>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oh-accordion">
|
||||
<div class="oh-accordion-header">{% trans "Work Info" %}</div>
|
||||
<div class="oh-accordion-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Employee" %}</label>
|
||||
{{export.form.employee_id}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Department" %}</label>
|
||||
{{export.form.employee_id__employee_work_info__department_id}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Shift" %}</label>
|
||||
{{export.form.shift_id}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Reporting Manager" %}</label>
|
||||
{{export.form.employee_id__employee_work_info__reporting_manager_id}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Company" %}</label>
|
||||
{{export.form.employee_id__employee_work_info__company_id}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Job Position" %}</label>
|
||||
{{export.form.employee_id__employee_work_info__job_position_id}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Work Type" %}</label>
|
||||
{{export.form.work_type_id}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Work Location" %}</label>
|
||||
{{export.form.employee_id__employee_work_info__location}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oh-accordion">
|
||||
<div class="oh-accordion-header">{% trans "Attendance" %}</div>
|
||||
<div class="oh-accordion-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Attendance Date" %}</label>
|
||||
{{export.form.attendance_date}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "In Time" %}</label>
|
||||
{{export.form.attendance_clock_in}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Validated?" %}</label>
|
||||
{{export.form.attendance_validated}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Min Hour" %}</label>
|
||||
{{export.form.minimum_hour}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Out Time" %}</label>
|
||||
{{export.form.attendance_clock_out}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "OT Approved?" %}</label>
|
||||
{{export.form.attendance_overtime_approve}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oh-accordion">
|
||||
<div class="oh-accordion-header">{% trans "Advanced" %}</div>
|
||||
<div class="oh-accordion-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Attendance From" %}</label>
|
||||
{{export.form.attendance_date__gte}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "In From" %}</label>
|
||||
{{export.form.attendance_clock_in__gte}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Out From" %}</label>
|
||||
{{export.form.attendance_clock_out__gte}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label"
|
||||
>{% trans "At Work Greater or Equal" %}</label
|
||||
>
|
||||
{{export.form.at_work_second__gte}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label"
|
||||
>{% trans "OT Greater or Equal" %}</label
|
||||
>
|
||||
{{export.form.overtime_second__gte}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Attendance Till" %}</label>
|
||||
{{export.form.attendance_date__lte}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "In Till" %}</label>
|
||||
{{export.form.attendance_clock_in__lte}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label">{% trans "Out Till" %}</label>
|
||||
{{export.form.attendance_clock_out__lte}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label"
|
||||
>{% trans "At Work Less Than or Equal" %}</label
|
||||
>
|
||||
{{export.form.at_work_second__lte}}
|
||||
</div>
|
||||
<div class="oh-input-group">
|
||||
<label class="oh-label"
|
||||
>{% trans "OT Less Than or Equal" %}</label
|
||||
>
|
||||
{{export.form.overtime_second__lte}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oh-modal__dialog-footer p-0 pt-4">
|
||||
<button class="oh-btn oh-btn--secondary oh-btn--shadow">
|
||||
{% trans "Export" %}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -20,6 +20,9 @@ urlpatterns = [
|
||||
path(
|
||||
"attendance-info-import", views.attendance_import, name="attendance-info-import"
|
||||
),
|
||||
path(
|
||||
"attendance-info-export-form", views.attendance_export, name="attendance-info-export-form"
|
||||
),
|
||||
path(
|
||||
"attendance-info-export", views.attendance_export, name="attendance-info-export"
|
||||
),
|
||||
|
||||
@@ -307,6 +307,20 @@ def attendance_import(request):
|
||||
|
||||
@login_required
|
||||
def attendance_export(request):
|
||||
resolver_match = request.resolver_match
|
||||
if (
|
||||
resolver_match
|
||||
and resolver_match.url_name
|
||||
and resolver_match.url_name == "attendance-info-export-form"
|
||||
):
|
||||
return render(
|
||||
request,
|
||||
"attendance/attendance/export_filter.html",
|
||||
context={
|
||||
"export": AttendanceFilters(queryset=Attendance.objects.all()),
|
||||
"export_form": AttendanceExportForm(),
|
||||
},
|
||||
)
|
||||
return export_data(
|
||||
request=request,
|
||||
model=Attendance,
|
||||
@@ -324,7 +338,6 @@ def attendance_view(request):
|
||||
"""
|
||||
previous_data = request.GET.urlencode()
|
||||
form = AttendanceForm()
|
||||
export_form = AttendanceExportForm()
|
||||
condition = AttendanceValidationCondition.objects.first()
|
||||
minot = strtime_seconds("00:00")
|
||||
if condition is not None and condition.minimum_overtime_to_approve is not None:
|
||||
@@ -388,7 +401,6 @@ def attendance_view(request):
|
||||
template,
|
||||
{
|
||||
"form": form,
|
||||
"export_form": export_form,
|
||||
# "validate_attendances": paginator_qry(
|
||||
# validate_attendances, request.GET.get("vpage")
|
||||
# ),
|
||||
@@ -400,7 +412,6 @@ def attendance_view(request):
|
||||
"ot_attendances_ids": ot_attendances_ids,
|
||||
"attendances_ids": attendances_ids,
|
||||
"f": filter_obj,
|
||||
"export": AttendanceFilters(queryset=Attendance.objects.all()),
|
||||
"pd": previous_data,
|
||||
"gp_fields": AttendanceReGroup.fields,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user