Mobile Apk: Update on module related to mobile apk
This commit is contained in:
parent
89295a4e5a
commit
5807943958
|
|
@ -15,7 +15,6 @@
|
|||
# Check https://github.com/odoo/odoo/blob/15.0/odoo/addons/base/data/ir_module_category_data.xml
|
||||
# for the full list
|
||||
'category': 'Flutter',
|
||||
'license': 'LGPL-3',
|
||||
'version': '0.1',
|
||||
|
||||
# any module necessary for this one to work correctly
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
from logging import exception
|
||||
|
||||
from odoo import api, models, _, fields
|
||||
from odoo.exceptions import ValidationError
|
||||
from odoo.tools.misc import format_date
|
||||
|
|
@ -6,24 +8,43 @@ from datetime import datetime
|
|||
class HRLeave(models.Model):
|
||||
_inherit = "hr.leave"
|
||||
|
||||
def flutter_check_overlap_constrain(self,employee_id, to_date, from_date):
|
||||
def flutter_check_overlap_constrain(self,employee_id, to_date, from_date, fetched_leave_id=None):
|
||||
if self.env.context.get('leave_skip_date_check', False):
|
||||
return
|
||||
date_from = datetime.fromisoformat(from_date).replace(hour=0, minute=0, second=0)
|
||||
date_to = datetime.fromisoformat(to_date).replace(hour=23, minute=59, second=59)
|
||||
employee_id = int(employee_id)
|
||||
all_leaves = self.search([
|
||||
('date_from', '<', date_to),
|
||||
('date_to', '>', date_from),
|
||||
('employee_id', 'in', [employee_id]),
|
||||
('state', 'not in', ['cancel', 'refuse']),
|
||||
])
|
||||
domain = [
|
||||
('employee_id', '=', employee_id),
|
||||
('date_from', '<', date_to),
|
||||
('date_to', '>', date_from),
|
||||
('state', 'not in', ['cancel', 'refuse']),
|
||||
]
|
||||
if fetched_leave_id and fetched_leave_id > 0:
|
||||
all_leaves = self.search([
|
||||
('date_from', '<', date_to),
|
||||
('date_to', '>', date_from),
|
||||
('employee_id', 'in', [employee_id]),
|
||||
('id','!=', fetched_leave_id),
|
||||
('state', 'not in', ['cancel', 'refuse']),
|
||||
])
|
||||
|
||||
domain = [
|
||||
('employee_id', '=', employee_id),
|
||||
('date_from', '<', date_to),
|
||||
('date_to', '>', date_from),
|
||||
('id', '!=', fetched_leave_id),
|
||||
('state', 'not in', ['cancel', 'refuse']),
|
||||
]
|
||||
else:
|
||||
all_leaves = self.search([
|
||||
('date_from', '<', date_to),
|
||||
('date_to', '>', date_from),
|
||||
('employee_id', 'in', [employee_id]),
|
||||
('state', 'not in', ['cancel', 'refuse']),
|
||||
])
|
||||
domain = [
|
||||
('employee_id', '=', employee_id),
|
||||
('date_from', '<', date_to),
|
||||
('date_to', '>', date_from),
|
||||
('state', 'not in', ['cancel', 'refuse']),
|
||||
]
|
||||
|
||||
|
||||
conflicting_holidays = all_leaves.filtered_domain(domain)
|
||||
|
||||
if conflicting_holidays:
|
||||
|
|
@ -102,6 +123,51 @@ Attempting to double-book your time off won't magically make your vacation 2x be
|
|||
}
|
||||
|
||||
@api.model
|
||||
def submit_leave_flutter_odoo(self,leave_request_data):
|
||||
print(leave_request_data)
|
||||
pass
|
||||
def submit_leave_flutter_odoo(self,leave_request_data, existing_leave_id = None):
|
||||
try:
|
||||
date_from = datetime.fromisoformat(leave_request_data['date_from']).replace(hour=0, minute=0, second=0)
|
||||
date_to = datetime.fromisoformat(leave_request_data['date_to']).replace(hour=23, minute=59, second=59)
|
||||
if existing_leave_id and existing_leave_id > 0:
|
||||
leave_id = self.env['hr.leave'].sudo().browse(existing_leave_id)
|
||||
else:
|
||||
leave_id = False
|
||||
if leave_id:
|
||||
leave_id.sudo().write({
|
||||
'employee_id': leave_request_data['employee_id'],
|
||||
'holiday_status_id': leave_request_data['holiday_status_id'],
|
||||
'request_date_from': date_from.date(),
|
||||
'request_date_to':date_to.date(),
|
||||
'name': leave_request_data['description'],
|
||||
'request_unit_half': leave_request_data['is_half_day'],
|
||||
'request_date_from_period': 'pm' if leave_request_data['half_day_option'] == 'afternoon' else 'am',
|
||||
})
|
||||
leave = leave_id
|
||||
else:
|
||||
leave = self.env['hr.leave'].sudo().create({
|
||||
'employee_id': leave_request_data['employee_id'],
|
||||
'holiday_status_id': leave_request_data['holiday_status_id'],
|
||||
'request_date_from': date_from.date(),
|
||||
'request_date_to':date_to.date(),
|
||||
'name':leave_request_data['description'],
|
||||
'request_unit_half': leave_request_data['is_half_day'],
|
||||
'request_date_from_period': 'pm' if leave_request_data['half_day_option'] == 'afternoon' else 'am',
|
||||
})
|
||||
attachment_ids = []
|
||||
for attachment in leave_request_data['attachments']:
|
||||
attachment_record = self.env['ir.attachment'].create({
|
||||
'name': attachment['name'], # Attachment name
|
||||
'datas': attachment['datas'], # Base64 encoded data
|
||||
'res_model': 'hr.leave', # Model to link
|
||||
'res_id': leave.id, # ID of the leave record
|
||||
})
|
||||
attachment_ids.append(attachment_record.id)
|
||||
|
||||
# Link the attachments to the leave record
|
||||
if attachment_ids:
|
||||
leave.supported_attachment_ids = [(6, 0, attachment_ids)]
|
||||
|
||||
leave._check_validity()
|
||||
leave.state = 'confirm'
|
||||
return {'status': 'success', 'leave_id': leave.id, 'message': ''}
|
||||
except Exception as e:
|
||||
return {'status': 'error','leave_id': '', 'message': str(e)}
|
||||
Loading…
Reference in New Issue