From 755e5a0f5f9b97f5291c774341fe81d87e0cae3c Mon Sep 17 00:00:00 2001 From: Samir Ladoui Date: Sun, 13 Jul 2025 14:19:56 +0100 Subject: [PATCH] [FIX] exp_transaction_documents --- .../exp_transaction_documents/__manifest__.py | 2 +- .../data/server_action.xml | 13 +++ .../models/internal_transaction.py | 84 ++++--------------- 3 files changed, 29 insertions(+), 70 deletions(-) create mode 100644 odex25_transactions/exp_transaction_documents/data/server_action.xml diff --git a/odex25_transactions/exp_transaction_documents/__manifest__.py b/odex25_transactions/exp_transaction_documents/__manifest__.py index 9cac42058..56f251f1f 100644 --- a/odex25_transactions/exp_transaction_documents/__manifest__.py +++ b/odex25_transactions/exp_transaction_documents/__manifest__.py @@ -43,7 +43,7 @@ Managing Communications Transcations flows 'wizard/sign_letter_transaction_view.xml', 'email_templates/internal_templates.xml', 'email_templates/incoming_templates.xml', - + 'data/server_action.xml' ], 'qweb': [ ], diff --git a/odex25_transactions/exp_transaction_documents/data/server_action.xml b/odex25_transactions/exp_transaction_documents/data/server_action.xml new file mode 100644 index 000000000..9b8ea66dd --- /dev/null +++ b/odex25_transactions/exp_transaction_documents/data/server_action.xml @@ -0,0 +1,13 @@ + + + + + Fix forward user in internal transactions + + code + + env['internal.transaction']._fix_forward_user() + + + + diff --git a/odex25_transactions/exp_transaction_documents/models/internal_transaction.py b/odex25_transactions/exp_transaction_documents/models/internal_transaction.py index a13e2dbd0..0e783fe10 100644 --- a/odex25_transactions/exp_transaction_documents/models/internal_transaction.py +++ b/odex25_transactions/exp_transaction_documents/models/internal_transaction.py @@ -157,17 +157,12 @@ class InternalTransaction(models.Model): else: record.state = 'send' - - - - - record.trace_create_ids('internal_transaction_id', record, sent) partner_ids = [] if record.to_ids.type == 'unit': partner_ids.append(record.to_ids.secretary_id.user_id.partner_id.id) - #record.forward_user_id = record.to_ids.preparation_id.manager_id.id + record.forward_user_id = record.to_ids.manager_id.user_id.id elif record.to_ids.type == 'employee': partner_ids.append(record.to_ids.user_id.partner_id.id) record.forward_user_id = record.to_ids.user_id.id @@ -189,43 +184,6 @@ class InternalTransaction(models.Model): return res - # def action_draft(self): - # for record in self: - # """her i need to review code for to_ids""" - # res = super(InternalTransaction, self).action_draft() - # sent = 'sent' - # template = 'exp_transaction_documents.internal_notify_send_send_email' - # if record.subject_type_id.transaction_need_approve or record.preparation_id.need_approve: - # template = 'exp_transaction_documents.internal_approval1_request_email' - # sent = 'waite' - # record.trace_create_ids('internal_transaction_id', record, sent) - # partner_ids = [] - # for partner in record.to_ids: - # if partner.type == 'unit': - # partner_ids.append(partner.secretary_id.user_id.partner_id.id) - # record.forward_user_id = partner.secretary_id.user_id.id - # elif partner.type == 'employee': - # partner_ids.append(partner.user_id.partner_id.id) - # record.forward_user_id = partner.user_id.id - # if record.to_user_have_leave: - # record.forward_user_id = record.receive_id.user_id.id - # record.send_message(template=template) - # subj = _('Message Has been send !') - # msg = _(u'{} ← {}').format(record.employee_id.name, u' / '.join([k.name for k in record.to_ids])) - # msg = u'{}
{} {}.
{}'.format(msg, - # _(u'Action Taken'), record.procedure_id.name, - # u'رابط المعاملة ' % ( - # record.get_url())) - # company_id = self.env.user.company_id - # if company_id.sms_active == True: - # message = "There is a transaction that needs to " + self.procedure_id.name if self.procedure_id else "" - # message += " with the number " + self.name - # print(record.employee_id.employee_id.phone) - # print(message) - # request = company_id.send_sms(str(record.employee_id.employee_id.phone), message if message else "") - # # for rec in record: - # # rec.action_send_notification(subj, msg, partner_ids) - # return res def action_approve(self): res = super(InternalTransaction, self).action_approve() template = 'exp_transaction_documents.internal_notify_send_send_email' @@ -257,32 +215,6 @@ class InternalTransaction(models.Model): self.action_send_notification(subj, msg, partner_ids) return res - # def action_approve(self): - # res = super(InternalTransaction, self).action_approve() - # template = 'exp_transaction_documents.internal_notify_send_send_email' - # self.send_message(template=template) - # employee = self.current_employee() - # to_id = self.to_ids[0].id - # if self.to_ids[0].type != 'employee': - # to_id = self.to_ids[0].secretary_id.id - # self.trace_ids.create({ - # 'action': 'sent', - # 'to_id': to_id, - # 'from_id': employee and employee.id or False, - # 'procedure_id': self.procedure_id.id or False, - # 'internal_transaction_id': self.id - # }) - # # self.trace_create_ids('internal_transaction_id', self, 'sent') - # subj = _('Message Has been approved !') - # msg = _(u'{} ← {}').format(self.preparation_id.manager_id.name, u' / '.join([k.name for k in self.to_ids])) - # msg = u'{}
{} {}.
{}'.format(msg, - # _(u'Action Taken'), self.procedure_id.name, - # u'رابط المعاملة ' % ( - # self.get_url())) - # partner_ids = [self.employee_id.user_id.partner_id.id, self.to_ids[0].user_id.partner_id.id] - # self.action_send_notification(subj, msg, partner_ids) - # return res - def action_reject_internal(self): name = 'default_internal_transaction_id' return self.action_reject(name, self) @@ -375,3 +307,17 @@ class InternalTransaction(models.Model): # if self.env.uid != 1: # raise ValidationError(_("You can not delete transaction.....")) # return super(InternalTransaction, self).unlink() + + def _fix_forward_user(self): + # Get all records where state is send and forward user is False + records = self.search([('state', '=', 'send')]) + + for record in records: + last_trace_user_id = record.trace_ids.search([('internal_transaction_id', '=', record.id)], order='date DESC', limit=1).to_id.user_id.id + + if isinstance(last_trace_user_id, int): + record.write({'forward_user_id': last_trace_user_id}) + + print(f">>> internal transaction {record.id} fixed <<<") + + print(f">>> Fixing internal transactions completed for {len(records)} records <<<")