diff --git a/odex25_transactions/exp_transaction_documents/models/__pycache__/__init__.cpython-38.pyc b/odex25_transactions/exp_transaction_documents/models/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 000000000..b7c0b5bc6 Binary files /dev/null and b/odex25_transactions/exp_transaction_documents/models/__pycache__/__init__.cpython-38.pyc differ diff --git a/odex25_transactions/exp_transaction_documents/models/__pycache__/configuration.cpython-38.pyc b/odex25_transactions/exp_transaction_documents/models/__pycache__/configuration.cpython-38.pyc new file mode 100644 index 000000000..9313157fe Binary files /dev/null and b/odex25_transactions/exp_transaction_documents/models/__pycache__/configuration.cpython-38.pyc differ diff --git a/odex25_transactions/exp_transaction_documents/models/__pycache__/entity.cpython-38.pyc b/odex25_transactions/exp_transaction_documents/models/__pycache__/entity.cpython-38.pyc new file mode 100644 index 000000000..1bf97fd58 Binary files /dev/null and b/odex25_transactions/exp_transaction_documents/models/__pycache__/entity.cpython-38.pyc differ diff --git a/odex25_transactions/exp_transaction_documents/models/__pycache__/incoming_transaction.cpython-38.pyc b/odex25_transactions/exp_transaction_documents/models/__pycache__/incoming_transaction.cpython-38.pyc new file mode 100644 index 000000000..06703c576 Binary files /dev/null and b/odex25_transactions/exp_transaction_documents/models/__pycache__/incoming_transaction.cpython-38.pyc differ diff --git a/odex25_transactions/exp_transaction_documents/models/__pycache__/internal_transaction.cpython-38.pyc b/odex25_transactions/exp_transaction_documents/models/__pycache__/internal_transaction.cpython-38.pyc new file mode 100644 index 000000000..abdb3d0c8 Binary files /dev/null and b/odex25_transactions/exp_transaction_documents/models/__pycache__/internal_transaction.cpython-38.pyc differ diff --git a/odex25_transactions/exp_transaction_documents/models/__pycache__/outgoing_transaction.cpython-38.pyc b/odex25_transactions/exp_transaction_documents/models/__pycache__/outgoing_transaction.cpython-38.pyc new file mode 100644 index 000000000..4531db5f7 Binary files /dev/null and b/odex25_transactions/exp_transaction_documents/models/__pycache__/outgoing_transaction.cpython-38.pyc differ diff --git a/odex25_transactions/exp_transaction_documents/models/__pycache__/tools.cpython-38.pyc b/odex25_transactions/exp_transaction_documents/models/__pycache__/tools.cpython-38.pyc new file mode 100644 index 000000000..5ab829725 Binary files /dev/null and b/odex25_transactions/exp_transaction_documents/models/__pycache__/tools.cpython-38.pyc differ diff --git a/odex25_transactions/exp_transaction_documents/models/__pycache__/transaction.cpython-38.pyc b/odex25_transactions/exp_transaction_documents/models/__pycache__/transaction.cpython-38.pyc new file mode 100644 index 000000000..9856e868d Binary files /dev/null and b/odex25_transactions/exp_transaction_documents/models/__pycache__/transaction.cpython-38.pyc differ diff --git a/odex25_transactions/exp_transaction_documents/models/entity.py b/odex25_transactions/exp_transaction_documents/models/entity.py index ef5acadfd..11338a63c 100644 --- a/odex25_transactions/exp_transaction_documents/models/entity.py +++ b/odex25_transactions/exp_transaction_documents/models/entity.py @@ -16,14 +16,35 @@ class Entity(models.Model): _description = 'Transactions Contacts' _order = 'name' + def _normalize_arabic_text(self, text): + translation_map = str.maketrans({ + # Define a dictionary to replace different forms of characters + 'ه': 'ة', + 'إ': 'ا', # Replace Alef with Hamza Below with Alef + 'أ': 'ا', # Replace Alef with Hamza Above with Alef + 'آ': 'ا', # Replace Alef with Madda Above with Alef + 'ى': 'ي', # Replace Alef Maqsura with Ya + 'ئ': 'ي', # Replace Yeh with Hamza Above with Ya + 'ؤ': 'و', # Replace Waw with Hamza Above with Waw + + }) + return text.translate(translation_map) + @api.model - def _name_search(self, name, args=None, operator='like', limit=100, name_get_uid=None): - args = args or [] - domain = [] - if name: - domain = ['|', ('name', operator, name), ('code', operator, name)] - print(domain) - return self._search(domain + args, limit=limit, access_rights_uid=name_get_uid) + def search(self, args, offset=0, limit=None, order=None, count=False): + # Normalize the search arguments for 'name' field + new_args = [] + for arg in args: + if isinstance(arg, (list, tuple)) and arg[0] == 'name' and arg[1] == 'ilike': + normalized_value = self._normalize_arabic_text(arg[2]) + new_args.append('|') + new_args.append(arg) + new_args.append(('name', 'ilike', normalized_value)) + else: + new_args.append(arg) + return super(Entity, self).search(new_args, offset=offset, limit=limit, order=order, count=count) + + @api.constrains('code') def _check_code(self): diff --git a/odex25_transactions/exp_transaction_documents/models/incoming_transaction.py b/odex25_transactions/exp_transaction_documents/models/incoming_transaction.py index 8f8c7ef07..2a86007d1 100644 --- a/odex25_transactions/exp_transaction_documents/models/incoming_transaction.py +++ b/odex25_transactions/exp_transaction_documents/models/incoming_transaction.py @@ -10,7 +10,37 @@ class IncomingTransaction(models.Model): _inherit = ['transaction.transaction', 'mail.thread'] _description = 'incoming Transaction' - # due_date = fields.Date(string='Deadline', compute='compute_due_date') + def _normalize_arabic_text(self, text): + translation_map = str.maketrans({ + # Define a dictionary to replace different forms of characters + 'ه': 'ة', + 'إ': 'ا', # Replace Alef with Hamza Below with Alef + 'أ': 'ا', # Replace Alef with Hamza Above with Alef + 'آ': 'ا', # Replace Alef with Madda Above with Alef + 'ى': 'ي', # Replace Alef Maqsura with Ya + 'ئ': 'ي', + 'ؤ': 'و', + + }) + return text.translate(translation_map) + + + @api.model + def search(self, args, offset=0, limit=None, order=None, count=False): + # Normalize the search arguments for 'name' field + new_args = [] + for arg in args: + if isinstance(arg, (list, tuple)) and arg[1] == 'ilike' and arg[0] in ('name', 'subject'): + normalized_value = self._normalize_arabic_text(arg[2]) + new_args.append('|') + new_args.append(arg) + new_args.append((arg[0], 'ilike', normalized_value)) + else: + new_args.append(arg) + return super(IncomingTransaction, self).search(new_args, offset=offset, limit=limit, order=order, count=count) + + +# due_date = fields.Date(string='Deadline', compute='compute_due_date') from_id = fields.Many2one(comodel_name='cm.entity', string='Incoming From (External)') partner_id = fields.Many2one('res.partner') outgoing_transaction_id = fields.Many2one('outgoing.transaction', string='Related Outgoing') diff --git a/odex25_transactions/exp_transaction_documents/models/internal_transaction.py b/odex25_transactions/exp_transaction_documents/models/internal_transaction.py index 68659a754..baa3a417e 100644 --- a/odex25_transactions/exp_transaction_documents/models/internal_transaction.py +++ b/odex25_transactions/exp_transaction_documents/models/internal_transaction.py @@ -29,6 +29,34 @@ class InternalTransaction(models.Model): project_domain = fields.Many2many('project.project', string='Project Domain') processing_ids = fields.Many2many(comodel_name='internal.transaction', relation='transaction_internal_rel', column1='transaction_id', column2='internal_id', string='Process Transactions') + def _normalize_arabic_text(self, text): + translation_map = str.maketrans({ + # Define a dictionary to replace different forms of characters + 'ه': 'ة', + 'إ': 'ا', # Replace Alef with Hamza Below with Alef + 'أ': 'ا', # Replace Alef with Hamza Above with Alef + 'آ': 'ا', # Replace Alef with Madda Above with Alef + 'ى': 'ي', # Replace Alef Maqsura with Ya + 'ئ': 'ي', + 'ؤ': 'و', + + }) + return text.translate(translation_map) + + + @api.model + def search(self, args, offset=0, limit=None, order=None, count=False): + # Normalize the search arguments for 'name' field + new_args = [] + for arg in args: + if isinstance(arg, (list, tuple)) and arg[1] == 'ilike' and arg[0] in ('name', 'subject'): + normalized_value = self._normalize_arabic_text(arg[2]) + new_args.append('|') + new_args.append(arg) + new_args.append((arg[0], 'ilike', normalized_value)) + else: + new_args.append(arg) + return super(InternalTransaction, self).search(new_args, offset=offset, limit=limit, order=order, count=count) @api.model def get_url(self): diff --git a/odex25_transactions/exp_transaction_documents/models/outgoing_transaction.py b/odex25_transactions/exp_transaction_documents/models/outgoing_transaction.py index 2e78f1429..94052217a 100644 --- a/odex25_transactions/exp_transaction_documents/models/outgoing_transaction.py +++ b/odex25_transactions/exp_transaction_documents/models/outgoing_transaction.py @@ -38,6 +38,35 @@ class OutgoingTransaction(models.Model): # processing_ids = fields.Many2many(comodel_name='transaction.transaction', relation='transaction_outgoing_rel', # column1='transaction_id', column2='outgoing_id', string='Process Transactions') + def _normalize_arabic_text(self, text): + translation_map = str.maketrans({ + # Define a dictionary to replace different forms of characters + 'ه': 'ة', + 'إ': 'ا', # Replace Alef with Hamza Below with Alef + 'أ': 'ا', # Replace Alef with Hamza Above with Alef + 'آ': 'ا', # Replace Alef with Madda Above with Alef + 'ى': 'ي', # Replace Alef Maqsura with Ya + 'ئ': 'ي', + 'ؤ': 'و', + + }) + return text.translate(translation_map) + + @api.model + def search(self, args, offset=0, limit=None, order=None, count=False): + # Normalize the search arguments for 'name' field + new_args = [] + for arg in args: + if isinstance(arg, (list, tuple)) and arg[1] == 'ilike' and arg[0] in ('name', 'subject'): + normalized_value = self._normalize_arabic_text(arg[2]) + new_args.append('|') + new_args.append(arg) + new_args.append((arg[0], 'ilike', normalized_value)) + else: + new_args.append(arg) + return super(OutgoingTransaction, self).search(new_args, offset=offset, limit=limit, order=order, count=count) + + @api.depends('attachment_rule_ids') def compute_attachment_num(self): for r in self: diff --git a/odex25_transactions/exp_transaction_documents/views/incoming.xml b/odex25_transactions/exp_transaction_documents/views/incoming.xml index 58404151e..ed8d1e84a 100644 --- a/odex25_transactions/exp_transaction_documents/views/incoming.xml +++ b/odex25_transactions/exp_transaction_documents/views/incoming.xml @@ -8,6 +8,8 @@ incoming.transaction + + @@ -15,12 +17,15 @@ filter_domain="[('incoming_number','ilike',self)]"/> - - - + + + + + + diff --git a/odex25_transactions/exp_transaction_documents/views/internal.xml b/odex25_transactions/exp_transaction_documents/views/internal.xml index 8f1c30cef..87ec24441 100644 --- a/odex25_transactions/exp_transaction_documents/views/internal.xml +++ b/odex25_transactions/exp_transaction_documents/views/internal.xml @@ -7,15 +7,20 @@ internal.transaction + + - - - + + + + + + diff --git a/odex25_transactions/exp_transaction_documents/views/outgoing.xml b/odex25_transactions/exp_transaction_documents/views/outgoing.xml index 8cad84098..0805f68af 100644 --- a/odex25_transactions/exp_transaction_documents/views/outgoing.xml +++ b/odex25_transactions/exp_transaction_documents/views/outgoing.xml @@ -7,15 +7,20 @@ outgoing.transaction + + - - - + + + + + +