Merge pull request #269 from expsa/dev_odex25_mobile

some task
This commit is contained in:
AbuzarExp 2024-07-18 16:27:16 +03:00 committed by GitHub
commit 6516ee94ab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 108 additions and 24 deletions

View File

@ -5,10 +5,8 @@ from odoo import http, tools
from odoo.http import request, Response
from odoo.addons.auth_signup.models.res_users import SignupError
from odoo.exceptions import UserError
from datetime import datetime
from datetime import datetime ,timedelta
import base64
# from odoo.addons.odex_mobile.validator import validator
# from odoo.addons.odex_mobile.http_helper import http_helper
from ...validator import validator
from ...http_helper import http_helper
import json
@ -259,9 +257,45 @@ class AttendanceController(http.Controller):
attendance = {
'id':rec.id,
'date':str(rec.date),
'first_check_in':rec.sign_in,
'last_check_out':rec.sign_out,
'total_time':rec.office_hours,
'tr_date':self.get_translation_field(rec,'date'),
'first_check_in':self.convert_float_2time(rec.sign_in),
'tr_sign_in':self.get_translation_field(rec,'sign_in'),
'last_check_out':self.convert_float_2time(rec.sign_out),
'tr_sign_out':self.get_translation_field(rec,'sign_out'),
'total_time':self.convert_float_2time(rec.office_hours),
'tr_office_hours':self.get_translation_field(rec,'office_hours'),
'total_lateness_hours':self.convert_float_2time(rec.lateness),
'approve_lateness':rec.approve_lateness,
'tr_approve_lateness':self.get_translation_field(rec,'approve_lateness'),
'total_early_exit_hours':self.convert_float_2time(rec.early_exit),
'tr_total_early_exit_hours':self.get_translation_field(rec,'early_exit'),
'early_exit':rec.approve_exit_out,
'tr_early_exit':self.get_translation_field(rec,'approve_exit_out'),
'total_permission_hours':self.convert_float_2time(rec.total_permission_hours),
'tr_total_permission_hours':self.get_translation_field(rec,'total_permission_hours'),
'permission':rec.approve_personal_permission,
'tr_permission':self.get_translation_field(rec,'approve_personal_permission'),
'total_mission_hours':self.convert_float_2time(rec.total_mission_hours),
'tr_total_mission_hours':self.get_translation_field(rec,'total_mission_hours'),
'mission':rec.is_official,
'tr_mission':self.get_translation_field(rec,'is_official'),
'is_absent':rec.is_absent,
'tr_is_absent':self.get_translation_field(rec,'is_absent'),
'normal_leave':rec.normal_leave,
'tr_normal_leave':self.get_translation_field(rec,'normal_leave'),
'public_holiday':rec.public_holiday,
'tr_public_holiday':self.get_translation_field(rec,'public_holiday'),
}
li.append(attendance)
return http_helper.response(message="Data Found", data={'attendaces': li})
@ -398,3 +432,10 @@ class AttendanceController(http.Controller):
'longitude': longitude,
'latitude':latitude,
})
def convert_float_2time(self,time):
td = timedelta(hours=time)
dt = datetime.min + td
time = "{:%H:%M}".format(dt)
return time
def get_translation_field(self,rec,field):
return request.env['ir.translation'].get_field_string(rec._name)[field]

View File

@ -12,6 +12,7 @@ import json
import logging
from odoo.exceptions import ValidationError, Warning
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
from datetime import datetime ,timedelta
_logger = logging.getLogger(__name__)
import re
@ -57,7 +58,9 @@ class PermissionController(http.Controller):
"id": per.id,
"date_from": str(per.date_from),
"date_to": str(per.date_to),
"duration": per.duration,
"time_permission_from": self.convert_float_2time(per.time_permission_from),
"time_permission_to": self.convert_float_2time(per.time_permission_to),
"duration": self.convert_float_2time(per.duration),
"date": str(per.date),
"state": validator.get_state_name(per, per.state),
"state_name": per.state,
@ -97,6 +100,10 @@ class PermissionController(http.Controller):
return http_helper.response(code=400, message="Enter Early Exit for Permission request", success=False)
if not body.get('mission_purpose'):
return http_helper.response(code=400, message="mission purpose for Permission request", success=False)
if not body.get('time_float_from'):
return http_helper.response(code=400, message="Time From for Permission request", success=False)
if not body.get('time_float_to'):
return http_helper.response(code=400, message="Time To for Permission request", success=False)
employee = http.request.env['hr.employee'].search([('user_id', '=', user.id)], limit=1)
if not employee:
return http_helper.response(code=400,
@ -104,22 +111,28 @@ class PermissionController(http.Controller):
"You Have issue in your employee profile. please check with one of your team admins"),
success=False)
try:
permission_number = self.permission_number_decrement(employee, body['date_from'], body['date_to'])
permission = (
http.request.env["hr.personal.permission"]
.sudo()
.create(
date = body.get('date')
date = datetime.strptime(str(date),DEFAULT_SERVER_DATETIME_FORMAT).date()
time_float_from = float(body.get('time_float_from'))
time_float_to = float(body.get('time_float_to'))
obj_permission=http.request.env["hr.personal.permission"].sudo()
date_from = str(obj_permission._combine_date_and_time(date,time_float_from))
date_to = str(obj_permission._combine_date_and_time(date,time_float_to))
permission_number = self.permission_number_decrement(employee, date_from, date_to)
permission = obj_permission.create(
{
"employee_id": employee.id,
"date_from": body["date_from"],
"date_to": body["date_to"],
# "date_from": body["date_from"],
# "date_to": body["date_to"],
"time_permission_from": time_float_from,
"time_permission_to": time_float_to,
"early_exit": body["early_exit"],
"mission_purpose": body["mission_purpose"],
"permission_number": permission_number,
"date": body["date"],
}
)
)
permission.permission_number_decrement()
if 'attachment' in body and body['attachment']:
attach = http.request.env['ir.attachment'].sudo().create({
@ -136,9 +149,11 @@ class PermissionController(http.Controller):
data = {
"id": permission.id,
"date": str(permission.date),
"duration": permission.duration,
"date_from": str(permission.date_from),
"date_to": str(permission.date_to),
"time_permission_from": self.convert_float_2time(permission.time_permission_from),
"time_permission_to": self.convert_float_2time(permission.time_permission_to),
"duration": self.convert_float_2time(permission.duration),
"early_exit": permission.early_exit,
"state": validator.get_state_name(permission, permission.state),
"state_name": permission.state,
@ -171,6 +186,10 @@ class PermissionController(http.Controller):
success=False)
if not body.get('early_exit'):
return http_helper.response(code=400, message=_("Enter Early Exit for Permission request"), success=False)
if not body.get('time_float_from'):
return http_helper.response(code=400, message="Time From for Permission request", success=False)
if not body.get('time_float_to'):
return http_helper.response(code=400, message="Time To for Permission request", success=False)
employee = http.request.env['hr.employee'].search([('user_id', '=', user.id)], limit=1)
if not employee:
return http_helper.response(code=400,
@ -180,13 +199,27 @@ class PermissionController(http.Controller):
try:
permission = http.request.env['hr.personal.permission'].search([('id', '=', id)])
if permission:
date = body.get('date')
date = datetime.strptime(str(date),DEFAULT_SERVER_DATETIME_FORMAT).date()
time_float_from = float(body.get('time_float_from'))
time_float_to = float(body.get('time_float_to'))
obj_permission=http.request.env["hr.personal.permission"].sudo()
date_from = str(obj_permission._combine_date_and_time(date,time_float_from))
date_to = str(obj_permission._combine_date_and_time(date,time_float_to))
permission_number = self.permission_number_decrement(employee, date_from, date_to)
permission.write(
{'employee_id': permission.employee_id.id, 'date_from': body['date_from'],
'date_to': body['date_to'],
'early_exit': body['early_exit'],
'date': body['date'],
'mission_purpose': body['mission_purpose'],
})
{
"employee_id": permission.employee_id.id,
# "date_from": body["date_from"],
# "date_to": body["date_to"],
"time_permission_from": time_float_from,
"time_permission_to": time_float_to,
"early_exit": body["early_exit"],
"date": body["date"],
"mission_purpose": body["mission_purpose"],
"permission_number": permission_number,
}
)
if 'attachment' in body and body['attachment']:
attach = http.request.env['ir.attachment'].sudo().create({
@ -201,7 +234,9 @@ class PermissionController(http.Controller):
data = {
"id": permission.id,
"date": str(permission.date),
"duration": permission.duration,
"time_permission_from": self.convert_float_2time(permission.time_permission_from),
"time_permission_to": self.convert_float_2time(permission.time_permission_to),
"duration": self.convert_float_2time(permission.duration),
"date_from": str(permission.date_from),
"date_to": str(permission.date_to),
"early_exit": permission.early_exit,
@ -250,7 +285,9 @@ class PermissionController(http.Controller):
data = {
"id": permission.id,
"date": str(permission.date),
"duration": permission.duration,
"time_permission_from": self.convert_float_2time(permission.time_permission_from),
"time_permission_to": self.convert_float_2time(permission.time_permission_to),
"duration": self.convert_float_2time(permission.duration),
"date_from": str(permission.date_from),
"date_to": str(permission.date_to),
"early_exit": permission.early_exit,
@ -406,3 +443,9 @@ class PermissionController(http.Controller):
url = url_base + "/api/content/%s" % (att.id)
li.append(url)
return li
def convert_float_2time(self,time):
td = timedelta(hours=time)
dt = datetime.min + td
time = "{:%H:%M}".format(dt)
return time