From d7fa6037f00c41563f7079c186d0fee9332c0287 Mon Sep 17 00:00:00 2001 From: Pranay Date: Tue, 24 Jun 2025 17:38:23 +0530 Subject: [PATCH 01/49] employee_jod module --- addons_extensions/employee_jod/__init__.py | 1 + .../employee_jod/__manifest__.py | 21 ++ .../employee_jod/controllers/__init__.py | 1 + .../controllers/emp_jod_controller.py | 0 .../employee_jod/data/actions.xml | 27 ++ addons_extensions/employee_jod/data/data.xml | 26 ++ .../employee_jod/data/template.xml | 316 ++++++++++++++++++ .../employee_jod/models/__init__.py | 1 + .../employee_jod/models/emp_jod.py | 119 +++++++ .../employee_jod/views/emp_jod.xml | 14 + 10 files changed, 526 insertions(+) create mode 100644 addons_extensions/employee_jod/__init__.py create mode 100644 addons_extensions/employee_jod/__manifest__.py create mode 100644 addons_extensions/employee_jod/controllers/__init__.py create mode 100644 addons_extensions/employee_jod/controllers/emp_jod_controller.py create mode 100644 addons_extensions/employee_jod/data/actions.xml create mode 100644 addons_extensions/employee_jod/data/data.xml create mode 100644 addons_extensions/employee_jod/data/template.xml create mode 100644 addons_extensions/employee_jod/models/__init__.py create mode 100644 addons_extensions/employee_jod/models/emp_jod.py create mode 100644 addons_extensions/employee_jod/views/emp_jod.xml diff --git a/addons_extensions/employee_jod/__init__.py b/addons_extensions/employee_jod/__init__.py new file mode 100644 index 000000000..9a7e03ede --- /dev/null +++ b/addons_extensions/employee_jod/__init__.py @@ -0,0 +1 @@ +from . import models \ No newline at end of file diff --git a/addons_extensions/employee_jod/__manifest__.py b/addons_extensions/employee_jod/__manifest__.py new file mode 100644 index 000000000..75977ada3 --- /dev/null +++ b/addons_extensions/employee_jod/__manifest__.py @@ -0,0 +1,21 @@ +# __manifest__.py +{ + 'name': 'Employee JOD Form', + 'version': '1.0', + 'category': 'Human Resources', + 'summary': 'Send JOD form to employee after joining', + 'description': """ + This module is used to send the JOD (Joining Onboarding Document) form + to employees after they have joined the organization. + """, + 'author': 'FTPROTECH', + 'website': 'https://ftprotech.in', + 'depends': ['hr', 'mail','hr_employee_extended','hr_recruitment_extended'], + 'data': [ + 'data/data.xml', + 'data/actions.xml', + 'data/template.xml', + 'views/emp_jod.xml', + ], + 'license': 'LGPL-3', +} diff --git a/addons_extensions/employee_jod/controllers/__init__.py b/addons_extensions/employee_jod/controllers/__init__.py new file mode 100644 index 000000000..ec0561edd --- /dev/null +++ b/addons_extensions/employee_jod/controllers/__init__.py @@ -0,0 +1 @@ +from . import emp_jod_controller \ No newline at end of file diff --git a/addons_extensions/employee_jod/controllers/emp_jod_controller.py b/addons_extensions/employee_jod/controllers/emp_jod_controller.py new file mode 100644 index 000000000..e69de29bb diff --git a/addons_extensions/employee_jod/data/actions.xml b/addons_extensions/employee_jod/data/actions.xml new file mode 100644 index 000000000..853a0ce0a --- /dev/null +++ b/addons_extensions/employee_jod/data/actions.xml @@ -0,0 +1,27 @@ + + + + + Send JOD to EMPLOYEE + + + + form + code + action = records.send_jod_form_to_employee() + + + + Download Joining Form + hr.employee + qweb-pdf + employee_jod.emp_joining_form_template + employee_jod.emp_joining_form_template + + 'JOD - %s' % (object.display_name) + + report + + + + \ No newline at end of file diff --git a/addons_extensions/employee_jod/data/data.xml b/addons_extensions/employee_jod/data/data.xml new file mode 100644 index 000000000..a4461c7f5 --- /dev/null +++ b/addons_extensions/employee_jod/data/data.xml @@ -0,0 +1,26 @@ + + + + + + Internal Job + + + + + + IJ + + + + + + + + IJ001 + + + + + + \ No newline at end of file diff --git a/addons_extensions/employee_jod/data/template.xml b/addons_extensions/employee_jod/data/template.xml new file mode 100644 index 000000000..56e37cc38 --- /dev/null +++ b/addons_extensions/employee_jod/data/template.xml @@ -0,0 +1,316 @@ + + + + + \ No newline at end of file diff --git a/addons_extensions/employee_jod/models/__init__.py b/addons_extensions/employee_jod/models/__init__.py new file mode 100644 index 000000000..4fe43c877 --- /dev/null +++ b/addons_extensions/employee_jod/models/__init__.py @@ -0,0 +1 @@ +from . import emp_jod \ No newline at end of file diff --git a/addons_extensions/employee_jod/models/emp_jod.py b/addons_extensions/employee_jod/models/emp_jod.py new file mode 100644 index 000000000..11a22bcee --- /dev/null +++ b/addons_extensions/employee_jod/models/emp_jod.py @@ -0,0 +1,119 @@ +from odoo import fields, api, models, _ +from odoo.exceptions import UserError + + +class HREmployee(models.Model): + _inherit = 'hr.employee' + + + applicant_id = fields.Many2one("hr.applicant") + + def send_jod_form_to_employee(self): + for rec in self: + if not rec.applicant_id: + application = self.env['hr.applicant'].sudo().search([('employee_id','=',rec.id)],limit=1) + if not application: + candidate = self.env['hr.candidate'].sudo().create({ + 'partner_name': rec.name, + 'email_from': rec.work_email, + 'partner_phone': rec.work_phone, + 'employee_id': rec.id, + }) + + application = self.env['hr.applicant'].sudo().create({ + 'candidate_id': candidate.id, + 'hr_job_recruitment': self.env.ref('employee_jod.employee_jod_internal_job_recruitment_id').id, + 'recruitment_stage_id': self.env.ref('employee_jod.hired_stage8').id, + }) + rec.applicant_id = application.id + rec.sudo().applicant_id.send_post_onboarding_form = True + return rec.sudo().applicant_id.send_post_onboarding_form_to_candidate() + + + + +class PostOnboardingAttachmentWizard(models.TransientModel): + _inherit = 'post.onboarding.attachment.wizard' + + @api.onchange('template_id') + def _onchange_template_id(self): + """ Update the email body and recipients based on the selected template. """ + if self.template_id: + record_id = self.env.context.get('active_id') + model = self.env.context.get('active_model') + + if model == 'hr.applicant': + applicant = self.env['hr.applicant'].browse(record_id) + else: + if model == 'hr.employee': + applicant = self.env['hr.employee'].browse(record_id).applicant_id + + if applicant: + record = self.env[self.template_id.model].sudo().browse(applicant.id) + + if not record.exists(): + raise UserError("The record does not exist or is not accessible.") + + # Fetch email template + email_template = self.env['mail.template'].sudo().browse(self.template_id.id) + + if not email_template: + raise UserError("Email template not found.") + + self.email_from = self.env.company.email + self.email_to = applicant.email_from + self.email_body = email_template.body_html # Assign the rendered email bodyc + self.email_subject = email_template.subject + + + def action_confirm(self): + for rec in self: + self.ensure_one() + context = self.env.context + active_id = context.get('active_id') + model = context.get('active_model') + + if model == 'hr.applicant': + applicant = self.env['hr.applicant'].browse(active_id) + else: + if model == 'hr.employee': + applicant = self.env['hr.employee'].browse(active_id).applicant_id + + applicant.recruitment_attachments = [(4, attachment.id) for attachment in rec.req_attachment_ids] + + template = rec.template_id + + personal_docs = rec.req_attachment_ids.filtered(lambda a: a.attachment_type == 'personal').mapped('name') + education_docs = rec.req_attachment_ids.filtered(lambda a: a.attachment_type == 'education').mapped('name') + previous_employer_docs = rec.req_attachment_ids.filtered( + lambda a: a.attachment_type == 'previous_employer').mapped('name') + other_docs = rec.req_attachment_ids.filtered(lambda a: a.attachment_type == 'others').mapped('name') + + + # Prepare context for the template + email_context = { + 'personal_docs': personal_docs, + 'education_docs': education_docs, + 'previous_employer_docs': previous_employer_docs, + 'other_docs': other_docs, + } + email_values = { + 'email_from': rec.email_from, + 'email_to': rec.email_to, + 'email_cc': rec.email_cc, + 'subject': rec.email_subject, + 'attachment_ids': [(6, 0, rec.attachment_ids.ids)], + + } + # Use 'with_context' to override the email template fields dynamically + template.sudo().with_context(default_body_html=rec.email_body, + **email_context).send_mail(applicant.id, email_values=email_values, + force_send=True) + + + if rec.is_pre_onboarding_attachment_request: + applicant.doc_requests_form_status = 'email_sent_to_candidate' + else: + applicant.post_onboarding_form_status = 'email_sent_to_candidate' + + return {'type': 'ir.actions.act_window_close'} diff --git a/addons_extensions/employee_jod/views/emp_jod.xml b/addons_extensions/employee_jod/views/emp_jod.xml new file mode 100644 index 000000000..35b71cd2f --- /dev/null +++ b/addons_extensions/employee_jod/views/emp_jod.xml @@ -0,0 +1,14 @@ + + + + hr.employee.view.form.applicant.id + hr.employee + + + + + + + + + \ No newline at end of file From bc4caa9ca178f0d31d72ee534cd09e406aac1c95 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 02/49] Initial commit From 98177a68784d31f9666f57213fc1a4826e5283ff Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 03/49] Initial commit From 2587abe7fe89f639b1806fe87eb87cdeafba3273 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 04/49] Initial commit From c5d8fd8962163f4421dacd3a018020d56cbd03c6 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 05/49] Initial commit From 5e546b9e53684957779ff380cdaabaea55730f0f Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 06/49] Initial commit From 8d159b58ab126c721c550228eb6683493b02d382 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 07/49] Initial commit From 7cfc27a324fabcbebd58293334d24f8424dea622 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 08/49] Initial commit From 6276fcd99f59995d5fd676c9796c6a6a0200824c Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 09/49] Initial commit From e4ef21bf0d8a06e4ceefe16015fc1fff016fa7fd Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 10/49] Initial commit From d04b9186391ac1704d8cad928d0ec3019980fd2b Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 11/49] Initial commit From fcec9548d2afc77af681add81fdd8522c9c4a199 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 12/49] Initial commit From 7beeecb343fb9f8fa7980ba2a001c42de154458c Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 13/49] Initial commit From 2dcb1185b914d59507161e54c65255de421cb4fd Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 14/49] Initial commit From aecf388bebd3f0c7cc052c25b0754ff897a49c94 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 15/49] Initial commit From 5eb590f1cd71d1f7ca4d3257b745330f0f8019e0 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 16/49] Initial commit From bf995294a7271a84b366826486af76c424e71ec8 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 17/49] Initial commit From 7257debff41007445f04be3be71bbb2d17193e8c Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 18/49] Initial commit From 7120701736bd84c107e32de91cd5cfe41d6c87aa Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 19/49] Initial commit From 93b9c2ec42336554257810a35b25672c01886592 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 20/49] Initial commit From d67e42f92102de85f3bb5cfafd49398883de47ec Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 21/49] Initial commit From 6a058acd5d5176782f12143f3cd15025fcdecc48 Mon Sep 17 00:00:00 2001 From: Pranay Date: Mon, 24 Mar 2025 11:35:35 +0530 Subject: [PATCH 22/49] update whatsapp code --- addons_extensions/whatsapp/models/discuss_channel.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons_extensions/whatsapp/models/discuss_channel.py b/addons_extensions/whatsapp/models/discuss_channel.py index e2989c112..7fb18c9cf 100644 --- a/addons_extensions/whatsapp/models/discuss_channel.py +++ b/addons_extensions/whatsapp/models/discuss_channel.py @@ -201,8 +201,7 @@ class DiscussChannel(models.Model): subtype_xmlid='mail.mt_note', ) if partners_to_notify == channel.whatsapp_partner_id and wa_account_id.notify_user_ids.partner_id: - partners_to_notify += wa_account_id.notify_user_ids.partner_id - partners_to_notify = self.env['res.partner'].browse(list(set(partners_to_notify.ids))) + partners_to_notify |= wa_account_id.notify_user_ids.partner_id channel.channel_member_ids = [Command.clear()] + [Command.create({'partner_id': partner.id}) for partner in partners_to_notify] channel._broadcast(partners_to_notify.ids) return channel From 6ff7bbbca0d6d801fd6b5551bd4caa5552c9f6f7 Mon Sep 17 00:00:00 2001 From: Pranay Date: Mon, 24 Mar 2025 12:54:38 +0530 Subject: [PATCH 23/49] fix whatsapp --- addons_extensions/whatsapp/models/discuss_channel.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons_extensions/whatsapp/models/discuss_channel.py b/addons_extensions/whatsapp/models/discuss_channel.py index 7fb18c9cf..e2989c112 100644 --- a/addons_extensions/whatsapp/models/discuss_channel.py +++ b/addons_extensions/whatsapp/models/discuss_channel.py @@ -201,7 +201,8 @@ class DiscussChannel(models.Model): subtype_xmlid='mail.mt_note', ) if partners_to_notify == channel.whatsapp_partner_id and wa_account_id.notify_user_ids.partner_id: - partners_to_notify |= wa_account_id.notify_user_ids.partner_id + partners_to_notify += wa_account_id.notify_user_ids.partner_id + partners_to_notify = self.env['res.partner'].browse(list(set(partners_to_notify.ids))) channel.channel_member_ids = [Command.clear()] + [Command.create({'partner_id': partner.id}) for partner in partners_to_notify] channel._broadcast(partners_to_notify.ids) return channel From 141678959445461ceea73de373e90b43d7ed1bff Mon Sep 17 00:00:00 2001 From: Pranay Date: Mon, 24 Mar 2025 13:10:34 +0530 Subject: [PATCH 24/49] Recruitment Changes --- .../hr_recruitment_extended/models/hr_job_recruitment.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons_extensions/hr_recruitment_extended/models/hr_job_recruitment.py b/addons_extensions/hr_recruitment_extended/models/hr_job_recruitment.py index 97b114a76..d546a3cde 100644 --- a/addons_extensions/hr_recruitment_extended/models/hr_job_recruitment.py +++ b/addons_extensions/hr_recruitment_extended/models/hr_job_recruitment.py @@ -256,6 +256,8 @@ class HRJobRecruitment(models.Model): rec.submission_status = 'zero' + experience = fields.Many2one('candidate.experience', string="Experience") + @api.depends('application_ids.submitted_to_client') def _compute_no_of_submissions(self): counts = dict(self.env['hr.applicant']._read_group( From 5fade12734683ff1e86d4c2aa860377ed621f56f Mon Sep 17 00:00:00 2001 From: Pranay Date: Mon, 7 Apr 2025 16:08:02 +0530 Subject: [PATCH 25/49] time-off FIX --- addons_extensions/hr_timeoff_extended/models/hr_timeoff.py | 1 + 1 file changed, 1 insertion(+) diff --git a/addons_extensions/hr_timeoff_extended/models/hr_timeoff.py b/addons_extensions/hr_timeoff_extended/models/hr_timeoff.py index 593c2a541..fea92e9e5 100644 --- a/addons_extensions/hr_timeoff_extended/models/hr_timeoff.py +++ b/addons_extensions/hr_timeoff_extended/models/hr_timeoff.py @@ -1,3 +1,4 @@ +from asyncore import write from calendar import month from dateutil.utils import today From 0e05b106ababe26f4a8888e96341953b6ee0085a Mon Sep 17 00:00:00 2001 From: Pranay Date: Mon, 7 Apr 2025 16:34:42 +0530 Subject: [PATCH 26/49] TimeOff Fix --- addons_extensions/hr_timeoff_extended/models/hr_timeoff.py | 1 - 1 file changed, 1 deletion(-) diff --git a/addons_extensions/hr_timeoff_extended/models/hr_timeoff.py b/addons_extensions/hr_timeoff_extended/models/hr_timeoff.py index fea92e9e5..593c2a541 100644 --- a/addons_extensions/hr_timeoff_extended/models/hr_timeoff.py +++ b/addons_extensions/hr_timeoff_extended/models/hr_timeoff.py @@ -1,4 +1,3 @@ -from asyncore import write from calendar import month from dateutil.utils import today From 16a0431e131afe02c8b4b98fadba70cae949286c Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 27/49] Initial commit From fd70f95fa5a082ae711ff8891bc2ec934da25d73 Mon Sep 17 00:00:00 2001 From: administrator Date: Mon, 2 Jun 2025 15:19:52 +0530 Subject: [PATCH 28/49] pull commit --- addons_extensions/hr_employee_extended/__manifest__.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/addons_extensions/hr_employee_extended/__manifest__.py b/addons_extensions/hr_employee_extended/__manifest__.py index ec27233ec..ee072e92c 100644 --- a/addons_extensions/hr_employee_extended/__manifest__.py +++ b/addons_extensions/hr_employee_extended/__manifest__.py @@ -18,8 +18,12 @@ 'version': '0.1', # any module necessary for this one to work correctly + 'depends': ['base','hr','account','mail','hr_skills', 'hr_contract'], + + + # always loaded 'data': [ 'security/security.xml', From 91299b52c610efea74f8013e8f6c028dad7b8ba3 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 29/49] Initial commit From a46ec717d07fdecdb54a7237eb1a52a45a5e3043 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 30/49] Initial commit From 1b119a432cb56bfe79e5b0cf7af7406cc4ac96a1 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 31/49] Initial commit From df06f8235a05dde0fbc1a753e019e95746d5d97d Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 32/49] Initial commit From 492a359f882c072c98b8abc516c05f6e1816ec0a Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 33/49] Initial commit From 7edc7209f5df5175205a1aca8b6ae708ae848eae Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 34/49] Initial commit From 7e09097d91f6a819634e17a5f3f4236e0c4cde9b Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 35/49] Initial commit From 0e7edd62e6a7d30d4c5211e94fc1b2824b849e8e Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 36/49] Initial commit From c3d775b28e353c37177ccabd1371cc29aee3e84d Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 37/49] Initial commit From d9de6b202aee11c87e3347e4727493a6f9dc49df Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 38/49] Initial commit From 445a464e53a1dfe86b3d0a63337b7d93ee416fe8 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 39/49] Initial commit From 775f695375dd81ea73f427fc029cf0d7b05982f0 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 40/49] Initial commit From ad702dc97c15125737da27a61f30a9042e33b777 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 41/49] Initial commit From ffba64a0e3e5fa4dbff1b5195167701795a68e59 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 42/49] Initial commit From 3190290dd2d921c68385b6f32a2c33b86de946ff Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 43/49] Initial commit From aa4589764fd2a029dcb626ea400ee5dc9162c1a9 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 44/49] Initial commit From eb39db1c3afdbb587e261e6ab8974fe83f7bd14a Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 45/49] Initial commit From a26017a46ea2e50377cb9544a255b489137e7a7d Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 46/49] Initial commit From e1bcc0b78ac62fc8e03354c450e65c9e04b25a11 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 47/49] Initial commit From d1a820dc8727f1e2fa54755c43ae70123becdcc7 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 48/49] Initial commit From e733a412f1ae5e8ef9482d904f56b6becbaddfc4 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 7 Jan 2025 09:29:28 +0530 Subject: [PATCH 49/49] Initial commit