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
+
+
-
-
-
+
+
+
+
+
+