Add completed (done) page for application mobile

This commit is contained in:
younes 2025-06-26 14:15:23 +01:00
parent 5a0244214b
commit f4c2960683
5 changed files with 44 additions and 23 deletions

View File

@ -497,7 +497,7 @@ class EmployeeOtherRequestController(http.Controller):
# --------------------------------------------
@http.route(['/rest_api/v2/employee_other_request'],
type='http', auth='none', csrf=False, methods=['GET'])
def get_all_requests(self, **kw):
def get_all_requests(self,done=None, **kw):
http_method, body, headers, token = http_helper.parse_request()
# 1) Check Token
@ -521,11 +521,14 @@ class EmployeeOtherRequestController(http.Controller):
page = int(kw.get("page", 1))
sort = kw.get("sort", "") # e.g. 'date' or '-state'
approvel = kw.get("approvel", 0)
# done = kw.get("done", 0)
filters_str = kw.get("filters", "") # e.g. 'state=approved'
page, offset, limit, prev = validator.get_page_pagination(page)
domain = [('employee_id', '=', employee.id)]
if approvel:
domain=[('state', '!=', 'draft'),('employee_id', '!=', employee.id)]
domain=[('state', 'not in', ['approved','refuse']),('employee_id', '!=', employee.id)]
elif done:
domain = [('state', 'in', ['approved','refuse']), ('employee_id', '!=', employee.id)]
if filters_str:
# Very naive filter parser: "state=approved;request_type=insurance"
for part in filters_str.split(";"):
@ -556,9 +559,9 @@ class EmployeeOtherRequestController(http.Controller):
request_list = convert_dates_in_data(request_list)
next_page = validator.get_page_pagination_next(page, all_records)
next_url = "/rest_api/v2/employee_other_request?approvel=%s&page=%s" % (
approvel, next_page) if next_page else False
prev_url = "/rest_api/v2/employee_other_request?approvel=%s&page=%s" % (approvel, prev) if prev else False
next_url = "/rest_api/v2/employee_other_request?approvel=%s&done=%s&page=%s" % (
approvel,done, next_page) if next_page else False
prev_url = "/rest_api/v2/employee_other_request?approvel=%s&done=%s&page=%s" % (approvel,done, prev) if prev else False
data = {
'links': {
'prev': prev_url,

View File

@ -20,7 +20,7 @@ import re
class LoanController(http.Controller):
# loans
@http.route(['/rest_api/v2/loans'], type='http', auth='none', csrf=False, methods=['GET'])
def get_loan(self,approvel=None,page=None, **kw):
def get_loan(self,approvel=None,done=None,page=None, **kw):
http_method, body, headers, token = http_helper.parse_request()
result = validator.verify_token(token)
if not result['status']:
@ -41,8 +41,14 @@ class LoanController(http.Controller):
loan_advantage = http.request.env['loan.request.type'].search([])
if approvel:
# domain = []
loans = http.request.env['hr.loan.salary.advance'].search([('employee_id', '!=', employee.id),('state', '!=', 'draft')], order='date desc', offset=offset, limit=limit)
count = http.request.env['hr.loan.salary.advance'].search_count([('employee_id', '!=', employee.id),('state', '!=', 'draft')])
loans = http.request.env['hr.loan.salary.advance'].search([('employee_id', '!=', employee.id),('state', 'not in', ['pay','closed','refused'])], order='date desc', offset=offset, limit=limit)
count = http.request.env['hr.loan.salary.advance'].search_count([('employee_id', '!=', employee.id),('state', 'not in', ['pay','closed','refused'])])
elif done:
loans = http.request.env['hr.loan.salary.advance'].search(
[('employee_id', '!=', employee.id), ('state', 'in', ['pay','closed','refused'])], order='date desc', offset=offset,
limit=limit)
count = http.request.env['hr.loan.salary.advance'].search_count(
[('employee_id', '!=', employee.id), 'in', ['pay','closed','refused']])
else:
loans = http.request.env['hr.loan.salary.advance'].search([('employee_id', '=', employee.id)], order='date desc', offset=offset, limit=limit)
count = http.request.env['hr.loan.salary.advance'].search_count([('employee_id', '=', employee.id)])
@ -71,8 +77,8 @@ class LoanController(http.Controller):
value['lines'] = lines
li.append(value)
next = validator.get_page_pagination_next(page, count)
url = "/rest_api/v2/loans?approvel=%s&page=%s" % (approvel, next) if next else False
prev_url = "/rest_api/v2/loans?approvel=%s&page=%s" % (approvel, prev) if prev else False
url = "/rest_api/v2/loans?approvel=%s&done=%s&page=%s" % (approvel,done, next) if next else False
prev_url = "/rest_api/v2/loans?approvel=%s&done=%s&page=%s" % (approvel,done, prev) if prev else False
data = {'links': {'prev': prev_url, 'next': url, },
'count': count,
'results':{'loan_types': types, 'employee_loans': li }}

View File

@ -325,7 +325,7 @@ class HrOfficialMissionController(http.Controller):
# ----------------------------------------------------------
@http.route(['/rest_api/v2/hr_official_mission'],
type='http', auth='none', csrf=False, methods=['GET'])
def get_all_missions(self, **kw):
def get_all_missions(self,done=None, **kw):
"""
Query parameters:
page (optional, default=1)
@ -352,13 +352,16 @@ class HrOfficialMissionController(http.Controller):
# 2) Build domain & pagination
page = int(kw.get('page', 1))
approvel = kw.get('approvel', 0)
# done = kw.get('done', 0)
sort = kw.get('sort') # e.g. 'date_from' or '-state'
filters_str = kw.get('filters')
page, offset, limit, prev = validator.get_page_pagination(page)
domain = [('employee_id', '=', employee.id)]
if approvel:
domain=[('state', '!=', 'draft'),('employee_id', '!=', employee.id)]
domain=[('state', 'not in', ['approve','refused']),('employee_id', '!=', employee.id)]
elif done:
domain = [('state', 'in', ['approve','refused']), ('employee_id', '!=', employee.id)]
if filters_str:
# Very basic parse; adapt as you like.
@ -390,9 +393,9 @@ class HrOfficialMissionController(http.Controller):
data_list = convert_dates_in_data(data_list)
next_page = validator.get_page_pagination_next(page, all_missions)
next_url = "/rest_api/v2/employee_other_request?approvel=%s&page=%s" % (
approvel, next_page) if next_page else False
prev_url = "/rest_api/v2/employee_other_request?approvel=%s&page=%s" % (approvel, prev) if prev else False
next_url = "/rest_api/v2/employee_other_request?approvel=%s&done=%s&page=%s" % (
approvel,done, next_page) if next_page else False
prev_url = "/rest_api/v2/employee_other_request?approvel=%s&done=%s&page=%s" % (approvel,done, prev) if prev else False
data = {
'links': {
'prev': prev_url,

View File

@ -56,7 +56,7 @@ class OverTimeController(http.Controller):
return http_helper.errcode(code=403, message=message)
@http.route(['/rest_api/v2/overtimes'], type='http', auth='none', csrf=False, methods=['GET'])
def get_overtime(self,approvel=None,page=None, **kw):
def get_overtime(self,approvel=None,done=None,page=None, **kw):
page = page if page else 1
page, offset, limit, prev = validator.get_page_pagination(page)
http_method, body, headers, token = http_helper.parse_request()
@ -75,9 +75,14 @@ class OverTimeController(http.Controller):
success=False)
try:
if approvel:
domain = [('state','!=','draft'),('line_ids_over_time.employee_id', '!=', employee.id)]
domain = [('state','not in',['refused','validated']),('line_ids_over_time.employee_id', '!=', employee.id)]
overtime = http.request.env['employee.overtime.request'].search(domain, order='request_date desc', offset=offset, limit=limit)
count = http.request.env['employee.overtime.request'].search_count(domain)
elif done:
domain = [('state', 'in', ['refused','validated']), ('line_ids_over_time.employee_id', '!=', employee.id)]
overtime = http.request.env['employee.overtime.request'].search(domain, order='request_date desc',
offset=offset, limit=limit)
count = http.request.env['employee.overtime.request'].search_count(domain)
else:
overtime = http.request.env['employee.overtime.request'].search([('line_ids_over_time.employee_id', '=', employee.id)], order='request_date desc', offset=offset, limit=limit)
count = http.request.env['employee.overtime.request'].search_count([('line_ids_over_time.employee_id', '=', employee.id)])
@ -134,8 +139,8 @@ class OverTimeController(http.Controller):
value['employees'] = emps
over.append(value)
next = validator.get_page_pagination_next(page, count)
url = "/rest_api/v2/overtimes?page=%s" % (approvel, next) if next else False
prev_url = "/rest_api/v2/overtimes?page=%s" % (approvel, prev) if prev else False
url = "/rest_api/v2/overtimes?approvel=%s&done=%s&page=%s" % (approvel,done, next) if next else False
prev_url = "/rest_api/v2/overtimes?approvel=%s&done=%s&page=%s" % (approvel,done, prev) if prev else False
data = {'links': {'prev': prev_url, 'next': url, },
'count': count,
'results': {'overtimes': over,}}

View File

@ -21,7 +21,7 @@ from odoo.tools.translate import _
class PermissionController(http.Controller):
# Permission
@http.route(['/rest_api/v2/permissions'], type='http', auth='none', csrf=False, methods=['GET'])
def get_permission(self, approvel=None, page=None, **kw):
def get_permission(self, approvel=None, done=None,page=None, **kw):
page = page if page else 1
page, offset, limit, prev = validator.get_page_pagination(page)
http_method, body, headers, token = http_helper.parse_request()
@ -43,7 +43,11 @@ class PermissionController(http.Controller):
count = 0
emp = []
if approvel:
domain = [('state', '!=', 'draft'), ('employee_id', '!=', employee.id)]
domain = [('state', 'not in', ['approve','refused']), ('employee_id', '!=', employee.id)]
permissions = http.request.env['hr.personal.permission'].search(domain, offset=offset, limit=limit)
count = http.request.env['hr.personal.permission'].search_count(domain)
elif done:
domain = [('state', 'in', ['approve','refused']), ('employee_id', '!=', employee.id)]
permissions = http.request.env['hr.personal.permission'].search(domain, offset=offset, limit=limit)
count = http.request.env['hr.personal.permission'].search_count(domain)
else:
@ -71,8 +75,8 @@ class PermissionController(http.Controller):
}
emp.append(value)
next = validator.get_page_pagination_next(page, count)
url = "/rest_api/v2/permissions?approvel=%s&page=%s" % (approvel, next) if next else False
prev_url = "/rest_api/v2/permissions?approvel=%s&page=%s" % (approvel, prev) if prev else False
url = "/rest_api/v2/permissions?approvel=%s&done=%s&page=%s" % (approvel,done, next) if next else False
prev_url = "/rest_api/v2/permissions?approvel=%s&done=%s&page=%s" % (approvel,done, prev) if prev else False
data = {'links': {'prev': prev_url, 'next': url, }, 'count': count,
'results': {'permission_types': permission_types, 'permissions': emp, 'groups': ['group_division_manager', 'group_hr_user']}}
return http_helper.response(message="Data Found", data=data)