diff --git a/web_portal_attendance/README.rst b/web_portal_attendance/README.rst new file mode 100644 index 000000000..4bdce2032 --- /dev/null +++ b/web_portal_attendance/README.rst @@ -0,0 +1,42 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Portal Attendance +================== +This module allow to create attendance from portal without any user access + +Company +------- +* `Cybrosys Techno Solutions `__ + +License +------- +General Public License, Version 3 (AGPL v3). +(https://www.odoo.com/documentation/user/16.0/legal/licenses/licenses.html) + +Credits +------- +Developer: (V16) THASNI CP , Contact: odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/web_portal_attendance/__init__.py b/web_portal_attendance/__init__.py new file mode 100644 index 000000000..a96672476 --- /dev/null +++ b/web_portal_attendance/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: THASNI CP (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +################################################################################ +from . import controllers +from. import models diff --git a/web_portal_attendance/__manifest__.py b/web_portal_attendance/__manifest__.py new file mode 100644 index 000000000..84a4d14ce --- /dev/null +++ b/web_portal_attendance/__manifest__.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: THASNI CP (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +################################################################################ +{ + 'name': 'Portal Attendance', + 'version': '16.0.1.0.0', + 'category': 'Website,Human Resources', + 'summary': """For creating attendance from portal.""", + 'description': 'Using Portal Attendance module user can see their ' + 'attendance and also mark their ' + 'attendance from portal as well', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': ['website', 'hr_attendance', 'contacts'], + 'data': [ + 'views/hr_attendance_templates.xml', + 'views/hr_attendance_views.xml', + 'views/portal.xml', + ], + 'assets': {'web.assets_frontend': [ + 'web_portal_attendance/static/src/js/portal_message.js', + ], }, + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/web_portal_attendance/controllers/__init__.py b/web_portal_attendance/controllers/__init__.py new file mode 100644 index 000000000..daa3e5329 --- /dev/null +++ b/web_portal_attendance/controllers/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: THASNI CP (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +################################################################################ +from . import portal + + diff --git a/web_portal_attendance/controllers/portal.py b/web_portal_attendance/controllers/portal.py new file mode 100644 index 000000000..3d4ba3ae6 --- /dev/null +++ b/web_portal_attendance/controllers/portal.py @@ -0,0 +1,233 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: THASNI CP (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +################################################################################ +import pytz +from collections import OrderedDict +from datetime import datetime +from dateutil.relativedelta import relativedelta +from odoo import fields +from odoo import http +from odoo.http import request +from odoo.tools import date_utils +from odoo.addons.portal.controllers import portal +from odoo.addons.portal.controllers.portal import pager + + +class PortalAttendance(portal.CustomerPortal): + """To get the values of portal attendance""" + def _prepare_home_portal_values(self, counters): + """To get the count of the attendance in portal""" + values = super(PortalAttendance, self)._prepare_home_portal_values( + counters) + uid = request.session.uid + user_id = request.env['res.users'].browse(uid) + employee_id = request.env['hr.employee'].search( + [('user_id', '=', user_id.id)]) + attendance_count = request.env['hr.attendance'].search_count( + [('is_portal', '=', True), ('employee_id', '=', employee_id.id)]) + values.update({ + 'attendance_count': attendance_count + }) + return values + + @http.route('/attendance/checkin', type='http', auth='user', website=True) + def attendance_checkin(self): + """When clicking the checkin button it will redirect to the check in + template""" + uid = request.session.uid + user_id = request.env['res.users'].browse(uid) + employee_id = request.env['hr.employee'].search( + [('user_id', '=', user_id.id)]) + values = { + 'name': employee_id.name, + 'image': employee_id.image_1920, + 'check_in': datetime.now() + } + return request.render("web_portal_attendance.check_in_template", values) + + @http.route('/check/in', type='http', auth='user', website=True) + def attendance_creation(self): + """When clicking the checkin button it will create attendance to the + backend""" + uid = request.session.uid + user_id = request.env['res.users'].browse(uid) + employee_id = request.env['hr.employee'].search( + [('user_id', '=', user_id.id)]) + attendance = request.env['hr.attendance'].sudo().create({ + 'employee_id': employee_id.id, + 'check_in': datetime.now().strftime('%Y-%m-%d %H:%M:%S'), + 'is_portal': True + }) + check_in = datetime.now() + user_tz = pytz.timezone( + request.env.context.get('tz') or request.env.user.tz) + date_today = pytz.utc.localize(check_in).astimezone(user_tz) + formatted_time = datetime.strftime(date_today, '%H:%M:%S') + values = { + 'attendance': attendance, + 'name': employee_id.name, + 'image': employee_id.image_1920, + 'check_out': False, + 'formatted_time': formatted_time, + } + return request.render( + "web_portal_attendance.check_in_welcome_note_template", values) + + @http.route('/check/out', type='http', auth='user', website=True) + def attendance_checkout(self): + """When clicking the checkout button it will store the checkout time + and worked hours in the check in log """ + uid = request.session.uid + user_id = request.env['res.users'].browse(uid) + employee_id = request.env['hr.employee'].search( + [('user_id', '=', user_id.id)]) + values = { + 'name': employee_id.name, + 'image': employee_id.image_1920 + } + return request.render("web_portal_attendance.check_out_template", + values) + + @http.route('/check/out/last', type='http', auth='user', website=True) + def attendance_final_checkout(self): + """To display the final checkout template """ + uid = request.session.uid + user_id = request.env['res.users'].browse(uid) + employee_id = request.env['hr.employee'].search( + [('user_id', '=', user_id.id)]) + check_out = datetime.now() + user_tz = pytz.timezone( + request.env.context.get('tz') or request.env.user.tz) + date_today = pytz.utc.localize(check_out).astimezone(user_tz) + formatted_time = datetime.strftime(date_today, '%H:%M:%S') + attendance = request.env['hr.attendance'].search( + [('employee_id', '=', employee_id.id), ('check_out', '=', False), + ('is_portal', '=', True)], + order="check_in desc", limit=1) + # If there is an attendance record with no check-out time, + # update it with the current time + if attendance: + check_out = datetime.now() + check_in = attendance.check_in + worked_hours = check_out - check_in + total_seconds = worked_hours.total_seconds() + hours = int(total_seconds / 3600) + minutes = int((total_seconds % 3600) / 60) + worked_hours_str = "{:02d}:{:02d}".format(hours, minutes) + hours, minutes = map(int, worked_hours_str.split(':')) + worked_hours_float = hours + minutes / 60.0 + attendance.write({ + 'check_out': check_out.strftime('%Y-%m-%d %H:%M:%S'), + 'worked_hours': worked_hours_float + }) + values = { + 'name': employee_id.name, + 'image': employee_id.image_1920, + 'formatted_time': formatted_time + } + return request.render("web_portal_attendance.portal_last_checkout", + values) + + @http.route(['/attendance/list', '/attendance/list/page/'], + type='http', website=True) + def attendance_search_sort_view(self, page=1, search=None, + search_in="Check In", + filterby="all", **kwargs): + """To search and filter in the list view of attendance""" + uid = request.session.uid + user_id = request.env['res.users'].browse(uid) + employee_id = request.env['hr.employee'].search( + [('user_id', '=', user_id.id)]) + search_list = { + 'Work Hour': {'label': 'Work Hour', 'input': 'Work Hour', + 'domain': [('worked_hours', 'ilike', search)]}, + 'Check In': {'label': 'Check In', 'input': 'Check In', + 'domain': [('check_in', 'ilike', search)]}, + 'Check Out': {'label': 'Check Out', 'input': 'Check Out', + 'domain': [('check_out', 'ilike', search)]}, } + today = fields.Date.today() + last_week = today + relativedelta(weeks=-1) + last_month = today + relativedelta(months=-1) + last_year = today + relativedelta(years=-1) + searchbar_filters = { + 'all': {'label': 'All', 'domain': []}, + 'today': { + 'label': 'Today', + 'domain': [("check_in", ">=", + fields.Datetime.to_string(fields.Datetime.today())), + ("check_in", "<=", fields.Datetime.to_string( + fields.Datetime.today().replace(hour=23, + minute=59, + second=59)))]}, + 'week': { + 'label': 'Last Week', + 'domain': [ + ('check_in', '>=', date_utils.start_of(last_week, "week")), + ('check_in', '<=', date_utils.end_of(last_week, 'week'))]}, + 'month': { + 'label': 'Last Month', + 'domain': [('check_in', '>=', + date_utils.start_of(last_month, 'month')), + ('check_in', '<=', + date_utils.end_of(last_month, 'month'))]}, + 'year': { + 'label': 'Last Year', + 'domain': [ + ('check_in', '>=', date_utils.start_of(last_year, 'year')), + ('check_in', '<=', date_utils.end_of(last_year, 'year'))]}} + search_domain = search_list[search_in]['domain'] + filter_domain = searchbar_filters[filterby]['domain'] + attendance_obj = request.env['hr.attendance'].search( + [('is_portal', '=', True), ('employee_id', '=', employee_id.id)]) + total_attendance = attendance_obj.search_count( + [('is_portal', '=', True), + ('employee_id', '=', + employee_id.id)] + search_domain + filter_domain) + page_detail = pager(url='/attendance/list', + total=total_attendance, + page=page, + step=10, + url_args={'search': search, + 'search_in': search_in, + 'filterby': filterby}) + attendance_domain = [('is_portal', '=', True), + ('employee_id', '=', employee_id.id)] + if search_domain: + attendance_domain += search_domain + if filter_domain: + attendance_domain += filter_domain + attendance = attendance_obj.search( + attendance_domain, + limit=10, + offset=page_detail['offset']) + vals = { + 'attendance': attendance, + 'page_name': 'attendance', + 'pager': page_detail, + 'search': search, + 'search_in': search_in, + 'searchbar_inputs': search_list, + 'default_url': '/attendance/list', + 'searchbar_filters': OrderedDict(sorted(searchbar_filters.items())), + 'filterby': filterby, + } + return request.render( + "web_portal_attendance.portal_list_attendance_order", vals) diff --git a/web_portal_attendance/doc/RELEASE_NOTES.md b/web_portal_attendance/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..19c820d81 --- /dev/null +++ b/web_portal_attendance/doc/RELEASE_NOTES.md @@ -0,0 +1,7 @@ +## Module + +#### 19.10.2023 +#### Version 16.0.1.0.0 +#### ADD + +- Initial commit for Portal Attendance diff --git a/web_portal_attendance/models/__init__.py b/web_portal_attendance/models/__init__.py new file mode 100644 index 000000000..bed9565fd --- /dev/null +++ b/web_portal_attendance/models/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: THASNI CP (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +################################################################################ +from . import hr_attendance + + diff --git a/web_portal_attendance/models/hr_attendance.py b/web_portal_attendance/models/hr_attendance.py new file mode 100644 index 000000000..dc5a3d977 --- /dev/null +++ b/web_portal_attendance/models/hr_attendance.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: THASNI CP (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +################################################################################ +from odoo import fields, models + + +class HrAttendance(models.Model): + """To add a boolean field to check the attendance from website""" + _inherit = 'hr.attendance' + + is_portal = fields.Boolean(string="From Portal", + help="To check if the attendance from portal " + "or not", default=False) diff --git a/web_portal_attendance/static/description/assets/icons/check.png b/web_portal_attendance/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/check.png differ diff --git a/web_portal_attendance/static/description/assets/icons/chevron.png b/web_portal_attendance/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/chevron.png differ diff --git a/web_portal_attendance/static/description/assets/icons/cogs.png b/web_portal_attendance/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/cogs.png differ diff --git a/web_portal_attendance/static/description/assets/icons/consultation.png b/web_portal_attendance/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/consultation.png differ diff --git a/web_portal_attendance/static/description/assets/icons/ecom-black.png b/web_portal_attendance/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/ecom-black.png differ diff --git a/web_portal_attendance/static/description/assets/icons/education-black.png b/web_portal_attendance/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/education-black.png differ diff --git a/web_portal_attendance/static/description/assets/icons/hotel-black.png b/web_portal_attendance/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/hotel-black.png differ diff --git a/web_portal_attendance/static/description/assets/icons/license.png b/web_portal_attendance/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/license.png differ diff --git a/web_portal_attendance/static/description/assets/icons/lifebuoy.png b/web_portal_attendance/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/lifebuoy.png differ diff --git a/web_portal_attendance/static/description/assets/icons/manufacturing-black.png b/web_portal_attendance/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/manufacturing-black.png differ diff --git a/web_portal_attendance/static/description/assets/icons/pos-black.png b/web_portal_attendance/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/pos-black.png differ diff --git a/web_portal_attendance/static/description/assets/icons/puzzle.png b/web_portal_attendance/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/puzzle.png differ diff --git a/web_portal_attendance/static/description/assets/icons/restaurant-black.png b/web_portal_attendance/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/restaurant-black.png differ diff --git a/web_portal_attendance/static/description/assets/icons/service-black.png b/web_portal_attendance/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/service-black.png differ diff --git a/web_portal_attendance/static/description/assets/icons/trading-black.png b/web_portal_attendance/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/trading-black.png differ diff --git a/web_portal_attendance/static/description/assets/icons/training.png b/web_portal_attendance/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/training.png differ diff --git a/web_portal_attendance/static/description/assets/icons/update.png b/web_portal_attendance/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/update.png differ diff --git a/web_portal_attendance/static/description/assets/icons/user.png b/web_portal_attendance/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/user.png differ diff --git a/web_portal_attendance/static/description/assets/icons/wrench.png b/web_portal_attendance/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/web_portal_attendance/static/description/assets/icons/wrench.png differ diff --git a/web_portal_attendance/static/description/assets/misc/categories.png b/web_portal_attendance/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/web_portal_attendance/static/description/assets/misc/categories.png differ diff --git a/web_portal_attendance/static/description/assets/misc/check-box.png b/web_portal_attendance/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/web_portal_attendance/static/description/assets/misc/check-box.png differ diff --git a/web_portal_attendance/static/description/assets/misc/compass.png b/web_portal_attendance/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/web_portal_attendance/static/description/assets/misc/compass.png differ diff --git a/web_portal_attendance/static/description/assets/misc/corporate.png b/web_portal_attendance/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/web_portal_attendance/static/description/assets/misc/corporate.png differ diff --git a/web_portal_attendance/static/description/assets/misc/customer-support.png b/web_portal_attendance/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/web_portal_attendance/static/description/assets/misc/customer-support.png differ diff --git a/web_portal_attendance/static/description/assets/misc/cybrosys-logo.png b/web_portal_attendance/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/web_portal_attendance/static/description/assets/misc/cybrosys-logo.png differ diff --git a/web_portal_attendance/static/description/assets/misc/features.png b/web_portal_attendance/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/web_portal_attendance/static/description/assets/misc/features.png differ diff --git a/web_portal_attendance/static/description/assets/misc/logo.png b/web_portal_attendance/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/web_portal_attendance/static/description/assets/misc/logo.png differ diff --git a/web_portal_attendance/static/description/assets/misc/pictures.png b/web_portal_attendance/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/web_portal_attendance/static/description/assets/misc/pictures.png differ diff --git a/web_portal_attendance/static/description/assets/misc/pie-chart.png b/web_portal_attendance/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/web_portal_attendance/static/description/assets/misc/pie-chart.png differ diff --git a/web_portal_attendance/static/description/assets/misc/right-arrow.png b/web_portal_attendance/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/web_portal_attendance/static/description/assets/misc/right-arrow.png differ diff --git a/web_portal_attendance/static/description/assets/misc/star.png b/web_portal_attendance/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/web_portal_attendance/static/description/assets/misc/star.png differ diff --git a/web_portal_attendance/static/description/assets/misc/support.png b/web_portal_attendance/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/web_portal_attendance/static/description/assets/misc/support.png differ diff --git a/web_portal_attendance/static/description/assets/misc/whatsapp.png b/web_portal_attendance/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/web_portal_attendance/static/description/assets/misc/whatsapp.png differ diff --git a/web_portal_attendance/static/description/assets/modules/11.png b/web_portal_attendance/static/description/assets/modules/11.png new file mode 100644 index 000000000..df65629bf Binary files /dev/null and b/web_portal_attendance/static/description/assets/modules/11.png differ diff --git a/web_portal_attendance/static/description/assets/modules/22.png b/web_portal_attendance/static/description/assets/modules/22.png new file mode 100644 index 000000000..6058f6c3b Binary files /dev/null and b/web_portal_attendance/static/description/assets/modules/22.png differ diff --git a/web_portal_attendance/static/description/assets/modules/33.png b/web_portal_attendance/static/description/assets/modules/33.png new file mode 100644 index 000000000..163485cfd Binary files /dev/null and b/web_portal_attendance/static/description/assets/modules/33.png differ diff --git a/web_portal_attendance/static/description/assets/modules/44.png b/web_portal_attendance/static/description/assets/modules/44.png new file mode 100644 index 000000000..618e3e6c4 Binary files /dev/null and b/web_portal_attendance/static/description/assets/modules/44.png differ diff --git a/web_portal_attendance/static/description/assets/modules/55.png b/web_portal_attendance/static/description/assets/modules/55.png new file mode 100644 index 000000000..2a722d66e Binary files /dev/null and b/web_portal_attendance/static/description/assets/modules/55.png differ diff --git a/web_portal_attendance/static/description/assets/modules/66.png b/web_portal_attendance/static/description/assets/modules/66.png new file mode 100644 index 000000000..a44d454aa Binary files /dev/null and b/web_portal_attendance/static/description/assets/modules/66.png differ diff --git a/web_portal_attendance/static/description/assets/screenshots/hero.gif b/web_portal_attendance/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..02d1610bf Binary files /dev/null and b/web_portal_attendance/static/description/assets/screenshots/hero.gif differ diff --git a/web_portal_attendance/static/description/assets/screenshots/portal_01.png b/web_portal_attendance/static/description/assets/screenshots/portal_01.png new file mode 100644 index 000000000..167923424 Binary files /dev/null and b/web_portal_attendance/static/description/assets/screenshots/portal_01.png differ diff --git a/web_portal_attendance/static/description/assets/screenshots/portal_02.png b/web_portal_attendance/static/description/assets/screenshots/portal_02.png new file mode 100644 index 000000000..beb3654ab Binary files /dev/null and b/web_portal_attendance/static/description/assets/screenshots/portal_02.png differ diff --git a/web_portal_attendance/static/description/assets/screenshots/portal_03.png b/web_portal_attendance/static/description/assets/screenshots/portal_03.png new file mode 100644 index 000000000..d32f26274 Binary files /dev/null and b/web_portal_attendance/static/description/assets/screenshots/portal_03.png differ diff --git a/web_portal_attendance/static/description/assets/screenshots/portal_04.png b/web_portal_attendance/static/description/assets/screenshots/portal_04.png new file mode 100644 index 000000000..798ab093c Binary files /dev/null and b/web_portal_attendance/static/description/assets/screenshots/portal_04.png differ diff --git a/web_portal_attendance/static/description/assets/screenshots/portal_05.png b/web_portal_attendance/static/description/assets/screenshots/portal_05.png new file mode 100644 index 000000000..72b939c0b Binary files /dev/null and b/web_portal_attendance/static/description/assets/screenshots/portal_05.png differ diff --git a/web_portal_attendance/static/description/assets/screenshots/portal_06.png b/web_portal_attendance/static/description/assets/screenshots/portal_06.png new file mode 100644 index 000000000..e3c71c13a Binary files /dev/null and b/web_portal_attendance/static/description/assets/screenshots/portal_06.png differ diff --git a/web_portal_attendance/static/description/assets/screenshots/portal_07.png b/web_portal_attendance/static/description/assets/screenshots/portal_07.png new file mode 100644 index 000000000..4e49dfe6b Binary files /dev/null and b/web_portal_attendance/static/description/assets/screenshots/portal_07.png differ diff --git a/web_portal_attendance/static/description/assets/screenshots/portal_08.png b/web_portal_attendance/static/description/assets/screenshots/portal_08.png new file mode 100644 index 000000000..a27aaeb51 Binary files /dev/null and b/web_portal_attendance/static/description/assets/screenshots/portal_08.png differ diff --git a/web_portal_attendance/static/description/assets/screenshots/portal_09.png b/web_portal_attendance/static/description/assets/screenshots/portal_09.png new file mode 100644 index 000000000..24760fe5f Binary files /dev/null and b/web_portal_attendance/static/description/assets/screenshots/portal_09.png differ diff --git a/web_portal_attendance/static/description/assets/screenshots/portal_10.png b/web_portal_attendance/static/description/assets/screenshots/portal_10.png new file mode 100644 index 000000000..1b4a36762 Binary files /dev/null and b/web_portal_attendance/static/description/assets/screenshots/portal_10.png differ diff --git a/web_portal_attendance/static/description/assets/screenshots/portal_11.png b/web_portal_attendance/static/description/assets/screenshots/portal_11.png new file mode 100644 index 000000000..478a77fba Binary files /dev/null and b/web_portal_attendance/static/description/assets/screenshots/portal_11.png differ diff --git a/web_portal_attendance/static/description/assets/screenshots/portal_12.png b/web_portal_attendance/static/description/assets/screenshots/portal_12.png new file mode 100644 index 000000000..23cc767be Binary files /dev/null and b/web_portal_attendance/static/description/assets/screenshots/portal_12.png differ diff --git a/web_portal_attendance/static/description/assets/screenshots/portal_13.png b/web_portal_attendance/static/description/assets/screenshots/portal_13.png new file mode 100644 index 000000000..b304077ed Binary files /dev/null and b/web_portal_attendance/static/description/assets/screenshots/portal_13.png differ diff --git a/web_portal_attendance/static/description/banner.png b/web_portal_attendance/static/description/banner.png new file mode 100644 index 000000000..9b58fa3ec Binary files /dev/null and b/web_portal_attendance/static/description/banner.png differ diff --git a/web_portal_attendance/static/description/icon.png b/web_portal_attendance/static/description/icon.png new file mode 100644 index 000000000..b6251c594 Binary files /dev/null and b/web_portal_attendance/static/description/icon.png differ diff --git a/web_portal_attendance/static/description/index.html b/web_portal_attendance/static/description/index.html new file mode 100644 index 000000000..99b75a6f6 --- /dev/null +++ b/web_portal_attendance/static/description/index.html @@ -0,0 +1,703 @@ +
+ +
+ +
+
+ Community +
+
+
+ +
+
+
+ +

+ Portal Attendance

+

+ This Module Allows Users To View Their Attendance As + Well As Mark It From The Portal.

+ + +
+
+
+
+ + +
+
+ +
+

+ Explore This + Module

+
+ + + + +
+
+ +
+

+ Overview +

+
+
+
+ This allows to create attendance to the backend from the portal view, so the user + that don't have the access to the backend they can easily create attendance from + portal. +
+
+ + + +
+
+ +
+

+ Features +

+
+
+
+
+ + Easy to see the attendance from portal. +
+
+ + + Easy to filter the attendance from portal. +
+
+ + + Apply filters on record to see the records according to filters all and day wise of attendance. +
+
+ + + You can easily search the record from the list of records using searchbar. +
+
+ + + You can easily search the record from the list of records using searchbar. +
+
+ + + + +
+
+ +
+

+ Screenshots +

+
+
+
+
+

+ As seen in the image below,when the user enter to the portal the user + can see the check in button. +

+ +
+ +
+

+ When we clicked the check in button it will redirect to the another + page to create the attendance. +

+ +
+ +
+

+ When we click the check in button inside the template it will create + attendance to the backend , and we can see a welcome message and check + in time also the check in button turns to check out button.

+ +
+ +
+

+ Then the user can check the created attendance, from My Account -> + Attendance . Here we can see the created attendance and count of the + attendance. +

+ +
+ +
+

+ When open the created attendance here we can see the employee name + ,check in time, check out time and worked hours.

+ +
+ +
+

+ Click the check out button to check out the attendance. +

+ +
+ +
+

+ When clicking the check out button it will redirect to the check out + template, and they will ask to want to check out. +

+ +
+ +
+

+ After checked out the user can see the leaving note and checked out + time,also the check out button changed in to check in button. +

+ +
+ +
+

+ The check out time and the work hour updated to the created attendance. +

+ +
+
+

+ In portal attendance we can filter out, and we can search for the + attendance.

+ +
+
+
+

+ We can filter by All,Today,Last Week,Last Month,Last Year. +

+ +
+ +
+

+ We can search by Work Hour, Check In and Check Out by the day or the time. +

+ +
+
+

+ The admin can view the created attendance in the backend in Attendance + module.

+ +
+
+
+ + + + +
+
+ +
+

+ Related + Products +

+
+
+
+