Merge pull request #5922 from expsa/14.0-i18n-odex_takaful-auto-20251231_234536

[FIX] odex_takaful: update module metadata
This commit is contained in:
Mohamed Eltayar 2025-12-31 23:46:26 +03:00 committed by GitHub
commit a3a2aa0574
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 204 additions and 58 deletions

View File

@ -12,6 +12,9 @@
'odex_benefit',
'account',
'phone_validation',
'ensan_sale_management',
'dev_membership',
'branch',
# 'analytic_account',
],
'data': [
@ -20,6 +23,10 @@
'data/sequence_data.xml',
'data/scheduled_actions.xml',
'views/reports_paperformats.xml',
'views/reports_templates.xml',
'views/reports_actions.xml',
'reports/sponsorship_receipt_report.xml',
'data/takaful_notification_mail_template.xml',
'data/sponsorship_states_data.xml',
'data/sponsorship_notification_data.xml',
@ -53,11 +60,7 @@
'views/takaful_conf.xml',
'views/sponsorship_states.xml',
'views/takaful_notification.xml',
'views/reports_paperformats.xml',
'views/reports_templates.xml',
'views/reports_actions.xml',
'reports/month_payment_template.xml',
'reports/sponsorship_receipt_report.xml',
'wizards/takaful_reports_wizards.xml',
'wizards/refund_payment_wizard.xml',
'wizards/add_details_wizard.xml',
@ -71,10 +74,10 @@
'views/donation_extension_history_views.xml',
'views/donation_replacement_log_views.xml',
'views/sponsorship_scheduling_line.xml',
'views/takaful_menus_actions.xml',
'views/preferred_communication.xml',
'views/takaful_payment_method.xml',
'views/product_views.xml',
'views/takaful_menus_actions.xml',
'data/message_template_data.xml',
'data/server_actions.xml',

View File

@ -7535,4 +7535,122 @@ msgstr "السجل"
#, python-format
msgid ""
"Only active donations with end date in the future can be extended. Line: %s"
msgstr "التمدد للكفالات النشطة فقط"
msgstr "التمدد للكفالات النشطة فقط"
#. module: odex_takaful
#: code:addons/odex_takaful/wizards/account_payment_register.py:0
#, python-format
msgid "Machine"
msgstr "الماكينة"
#. module: odex_takaful
#: code:addons/odex_takaful/wizards/esterdad.py:0
#, python-format
msgid "No user assigned to this sponsor"
msgstr "لا يوجد مستخدم مخصص لهذا الكفيل"
#. module: odex_takaful
#: code:addons/odex_takaful/wizards/esterdad.py:0
#, python-format
msgid "No references found in selected payments"
msgstr "لا توجد مراجع في الدفعات المحددة"
#. module: odex_takaful
#: code:addons/odex_takaful/wizards/esterdad.py:0
#, python-format
msgid "No invoices matching the specified references"
msgstr "لا توجد فواتير مطابقة للمراجع المحددة"
#. module: odex_takaful
#: code:addons/odex_takaful/wizards/esterdad.py:0
#, python-format
msgid "The entered number is incorrect"
msgstr "الرقم المدخل خاطئ"
#. module: odex_takaful
#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__waiting_date
msgid "Waiting Date"
msgstr "تاريخ الانتظار"
#. module: odex_takaful
#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__actual_end_date
msgid "Waiting Period"
msgstr "مدة الانتظار"
#. module: odex_takaful
#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__age_category__all
msgid "All Ages"
msgstr "جميع الأعمار"
#. module: odex_takaful
#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__age_category
msgid "Age Category"
msgstr "الفئة العمرية"
#. module: odex_takaful
#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0
#, python-format
msgid "You cannot do this. The refund period has expired."
msgstr "لا يمكنك القيام بذلك لتجاوز المدة المحددة للاسترداد."
#. module: odex_takaful
#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0
#, python-format
msgid ""
"You must create a new subscriber first before saving.\n"
"Click the \"Create Subscriber\" button to add a new subscriber."
msgstr ""
"يجب إنشاء مشترك جديد أولاً قبل الحفظ.\n"
"اضغط على زر \"إنشاء مشترك\" لإضافة مشترك جديد."
#. module: odex_takaful
#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0
#, python-format
msgid ""
"You must create a new sponsor first before saving.\n"
"Click the \"Create Subscriber\" button to add a new sponsor."
msgstr ""
"يجب إنشاء كافل جديد أولاً قبل الحفظ.\n"
"اضغط على زر \"إنشاء مشترك\" لإضافة كافل جديد."
#. module: odex_takaful
#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0
#, python-format
msgid "Sponsorship Entitlement"
msgstr "إستحقاق كفالة"
#. module: odex_takaful
#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0
#, python-format
msgid "For the purpose of sponsorship entitlement"
msgstr "بغرض إستحقاق كفالة"
#. module: odex_takaful
#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0
#, python-format
msgid "Sponsorship"
msgstr "كفالة"
#. module: odex_takaful
#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0
#, python-format
msgid "Sponsorship Number"
msgstr "كفالة رقم"
#. module: odex_takaful
#: code:addons/odex_takaful/models/takaful_contribution_model.py:0
#, python-format
msgid "Financial Contribution"
msgstr "مساهمة مالية"
#. module: odex_takaful
#: code:addons/odex_takaful/models/takaful_contribution_model.py:0
#, python-format
msgid "Financial contribution for:"
msgstr "مساهمة مالية لصالح:"
#. module: odex_takaful
#: code:addons/odex_takaful/models/takaful_contribution_model.py:0
#, python-format
msgid "Financial contribution by order %s"
msgstr "مساهمة مالية بالأمر %s"

View File

@ -104,9 +104,9 @@ class DonationsDetailsLines(models.Model):
age = fields.Integer(related='benefit_id.age')
number_of_family_member = fields.Integer(related='benefit_id.number_of_family_member')
waiting_date = fields.Date(
string="تاريخ الانتظار",
string="Waiting Date",
)
actual_end_date = fields.Date(string="مدة الانتظار", compute='_compute_actual_end_date', store=True)
actual_end_date = fields.Date(string="Waiting Period", compute='_compute_actual_end_date', store=True)
period_display = fields.Char(
string="Period",
compute="_compute_period_display" )
@ -114,8 +114,8 @@ class DonationsDetailsLines(models.Model):
age_category = fields.Selection([
('18', '+18'),
('16', '+16'),
('all', 'جميع الأعمار'),
], string="الفئة العمرية", compute="_compute_age_category")
('all', 'All Ages'),
], string="Age Category", compute="_compute_age_category")
direct_debit_filter = fields.Selection(
[

View File

@ -56,8 +56,15 @@ class ResPartner(models.Model):
check_lines = fields.Boolean()
def _get_default_preferred_communication(self):
"""Get first preferred communication method as default"""
first_comm = self.env['preferred.communication'].search([], limit=1, order='id asc')
return first_comm if first_comm else False
# Check if table exists before searching (safe during module installation)
from odoo.tools import sql
if not sql.table_exists(self.env.cr, 'preferred_communication'):
return False
try:
first_comm = self.env['preferred.communication'].search([], limit=1, order='id asc')
return first_comm.id if first_comm else False
except Exception:
return False
preferred_communication = fields.Many2one('preferred.communication', string="Preferred Communication", default=_get_default_preferred_communication)
serial_code = fields.Char(string="Serial Code", readonly=True, copy=False)

View File

@ -97,8 +97,8 @@ class TakafulContribution(models.Model):
'partner_id': partner_id.id,
'partner_invoice_id': partner_id.id,
'partner_shipping_id': partner_id.id,
'client_order_ref': u'مساهمة مالية',
'note': u'مساهمة مالية لصالح:' + '\n' + (self.benefit_id.name if self.benefit_id else ""),
'client_order_ref': _('Financial Contribution'),
'note': _('Financial contribution for:') + '\n' + (self.benefit_id.name if self.benefit_id else ""),
'order_line': this_products_line
})
@ -108,7 +108,7 @@ class TakafulContribution(models.Model):
inv = self.env['account.move'].browse(inv_id)
inv.journal_id = int(journal_id)
move_name = u'مساهمة مالية بالأمر %s' % inv.origin
move_name = _('Financial contribution by order %s') % inv.origin
ctx = self.env.context.copy()
ctx.update({'sponsorship' : {
'name': move_name,

View File

@ -225,7 +225,7 @@ class TakafulSponsorship(models.Model):
'context': context,
}
else:
raise UserError("لا يمكنك القيام بذلك لتجاوز المدة المحددة للاسترداد.")
raise UserError(_("You cannot do this. The refund period has expired."))
@ -922,14 +922,14 @@ class TakafulSponsorship(models.Model):
# Check for donation with new_sponsor
if record_type == 'donation' and sponsor_or_donor_type == 'new_sponsor' and not sponsor_id:
raise ValidationError(_(
'يجب إنشاء مشترك جديد أولاً قبل الحفظ.\n'
'اضغط على زر "إنشاء مشترك" لإضافة مشترك جديد.'
'You must create a new subscriber first before saving.\n'
'Click the "Create Subscriber" button to add a new subscriber.'
))
# Check for sponsorship with new_sponsor
elif record_type == 'sponsorship' and sponsor_donor_type == 'new_sponsor' and not sponsor_id:
raise ValidationError(_(
'يجب إنشاء كافل جديد أولاً قبل الحفظ.\n'
'اضغط على زر "إنشاء مشترك" لإضافة كافل جديد.'
'You must create a new sponsor first before saving.\n'
'Click the "Create Subscriber" button to add a new sponsor.'
))
# If validation passed, create the record
@ -1072,10 +1072,10 @@ class TakafulSponsorship(models.Model):
'journal_id': journal.id,
'currency_id': journal.currency_id.id or company_id.currency_id.id or currency_id.id,
# journal.currency_id.id
'name': u'إستحقاق كفالة' + ' - ' + self.code,
'name': _('Sponsorship Entitlement') + ' - ' + self.code,
'account_id': account_receivable.id, # account_id or
'type': 'out_invoice',
'comment': u'بغرض إستحقاق كفالة',
'comment': _('For the purpose of sponsorship entitlement'),
'date_invoice': next_date,
})
@ -1086,8 +1086,8 @@ class TakafulSponsorship(models.Model):
# Update product:
product_id.sudo().write({
"list_price": self.contribution_value,
"name": u'كفالة' + ' ' + self.code,
'description_sale': u'كفالة رقم ' + self.code,
"name": _('Sponsorship') + ' ' + self.code,
'description_sale': _('Sponsorship Number') + ' ' + self.code,
})
# Create line
@ -1097,7 +1097,7 @@ class TakafulSponsorship(models.Model):
'quantity': 1,
'price_unit': self.contribution_value,
'invoice_id': invoice_id.id,
'name': u'كفالة رقم ' + self.code,
'name': _('Sponsorship Number') + ' ' + self.code,
'account_id': account_revenue.id,
# "invoice_line_tax_ids": [],
})
@ -1996,7 +1996,7 @@ class PaymentDetailsLines(models.Model):
charity_journal_id = fields.Many2one('account.journal', string="charity Bank",related = 'points_of_sale.journal_id')
name = fields.Char(string="Ref.",readonly=True)
check_number = fields.Char(string='Check Number')
account_payment_method = fields.Many2one('account.payment.method.line',domain="[('payment_type','=','inbound')]",string='Account Payment Method')
account_payment_method = fields.Many2one('account.payment.method.line', string='Account Payment Method')
branch_custom_id = fields.Many2one('branch.settings', string="Branch",related='sponsorship_id.branch_custom_id')
sponsor_account_number = fields.Char(string='Sponsor Account Number')
sa_iban = fields.Char('SA',default='SA',readonly=True)

View File

@ -30,8 +30,5 @@
<field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_preferred_communication"
name="Preferred Communication"
parent="odex_takaful.sponsor_setting_menu"
action="action_preferred_communication"/>
<!-- Menu moved to takaful_menus_actions.xml -->
</odoo>

View File

@ -88,10 +88,7 @@
</field>
</record>
<!-- Menu Item -->
<menuitem id="menu_replacement_root" name="Kafala Processes" sequence="11"
parent="odex_takaful.takaful_kufula_app_top_menu" groups="odex_takaful.group_orphan_replacement"/>
<!-- Menu moved to takaful_menus_actions.xml to avoid circular dependency -->
<!-- <menuitem id="menu_replacement_process"-->
<!-- name="Orphan Replacement"-->
<!-- parent="menu_replacement_root"-->

View File

@ -33,6 +33,5 @@
<field name="view_mode">tree,form</field>
</record>
<!-- Menu -->
<menuitem id="menu_replacement_reasons" name="Replacement Reasons" parent="odex_takaful.takaful_app_top_menu" action="action_replacement_reasons" groups="odex_takaful.group_orphan_replacement"/>
<!-- Menu moved to takaful_menus_actions.xml to avoid circular dependency -->
</odoo>

View File

@ -32,8 +32,6 @@
</field>
</record>
<menuitem id="menu_sponsorship_states_items" name="Sponsorship States"
parent="sponsor_setting_menu"
action="sponsorship_states_action"/>
<!-- Menu moved to takaful_menus_actions.xml -->
</odoo>

View File

@ -92,12 +92,6 @@
</field>
</record>
<menuitem id="menu_donations_items" name="Donations Items"
parent="sponsor_setting_menu"
action="donations_items_action" />
<menuitem id="menu_points_of_sale_custom" name="Points of Sale"
parent="sponsor_setting_menu"
action="points_of_sale_custom_action" />
<!-- Menu items moved to takaful_menus_actions.xml to avoid circular dependency -->
</data>
</odoo>

View File

@ -7,6 +7,10 @@
<menuitem id="kafalat_main_menu" parent="takaful_kufula_app_top_menu"
sequence="10" name="Kafalat"/>
<!-- Kafala Processes (moved from replacement_process_views.xml) -->
<menuitem id="menu_replacement_root" name="Kafala Processes" sequence="11"
parent="takaful_kufula_app_top_menu" groups="odex_takaful.group_orphan_replacement"/>
<menuitem id="takaful_sponsorship_app_menu" parent="kafalat_main_menu"
name="Sponsorships" action="takaful_sponsorship_action" sequence="1"/>
@ -120,7 +124,35 @@
action="odex_takaful.takaful_message_template_action"
sequence="3"/>
<!-- Menu items moved from takaful_conf.xml -->
<menuitem id="menu_donations_items" name="Donations Items"
parent="sponsor_setting_menu"
action="donations_items_action"
sequence="4"/>
<menuitem id="menu_points_of_sale_custom" name="Points of Sale"
parent="sponsor_setting_menu"
action="points_of_sale_custom_action"
sequence="5"/>
<!-- Menu moved from sponsorship_states.xml -->
<menuitem id="menu_sponsorship_states_items" name="Sponsorship States"
parent="sponsor_setting_menu"
action="sponsorship_states_action"
sequence="6"/>
<!-- Menu moved from preferred_communication.xml -->
<menuitem id="menu_preferred_communication" name="Preferred Communication"
parent="sponsor_setting_menu"
action="action_preferred_communication"
sequence="7"/>
<!-- Menu moved from takaful_payment_method.xml -->
<menuitem id="menu_takaful_payment_method" name="Takaful Payment Method"
parent="sponsor_setting_menu"
action="action_takaful_payment_method"
sequence="8"/>
<!-- Begin Kufala Settings -->
<menuitem id="takaful_app_top_menu" parent="sponsor_setting_menu" sequence="99"
@ -140,6 +172,10 @@
<menuitem id="takaful_settings_menu" name="Kufala Global Settings"
parent="takaful_app_top_menu" action="odex_takaful_base.takaful_settings_action" sequence="99"/>
<menuitem id="menu_replacement_reasons" name="Replacement Reasons"
parent="takaful_app_top_menu" action="action_replacement_reasons"
groups="odex_takaful.group_orphan_replacement" sequence="50"/>
<!-- END Kufala Settings -->

View File

@ -34,8 +34,5 @@
<field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_takaful_payment_method"
name="Takaful Payment Method"
parent="odex_takaful.sponsor_setting_menu"
action="action_takaful_payment_method"/>
<!-- Menu moved to takaful_menus_actions.xml -->
</odoo>

View File

@ -30,7 +30,7 @@ class AccountRegisterPayment(models.TransientModel):
transaction_file_attachment = fields.Binary(string='Transaction Attachment', attachment=False)
transaction_attachment_file_name = fields.Char('Transaction File Name', required=False)
payment_method = fields.Selection(selection=[("cash", "Cash"), ("bank", "Bank Transfer"), ("check", "Check")], string="Payment Method", required=True, default="cash")
machine_id = fields.Many2one('geidea.terminals' , 'الماكينة')
machine_id = fields.Many2one('geidea.terminals', string=_('Machine'))
check_number = fields.Char(string='Check Number')
check_due_date = fields.Date(string='Check Due Date')
sponsorship_payment = fields.Boolean(string='Sponsorship Payment', default=False)

View File

@ -27,7 +27,7 @@
<!-- <attribute name="options">{'skip_disable_quick_create': True}</attribute>-->
</xpath>
<xpath expr="//field[@name='payment_method_line_id']" position="attributes">
<xpath expr="//field[@name='payment_method_id']" position="attributes">
<attribute name="invisible">context.get('sponsorship_payment')</attribute>
</xpath>

View File

@ -119,7 +119,7 @@ class EsterdadWizard(models.Model):
'context': context,
}
else:
raise UserError("لا يوجد مستخدم مخصص لهذا الكفيل")
raise UserError(_("No user assigned to this sponsor"))
@api.depends('sponsor_id.donations_details_lines', 'sponsor_id.donations_details_lines_mechanism_ids')
def _get_total_sponsorship_amount(self):
@ -156,14 +156,14 @@ class OTPWizard(models.TransientModel):
payment_refs = [ref for ref in payment_refs if ref]
if not payment_refs:
raise UserError("لا توجد مراجع في الدفعات المحددة")
raise UserError(_("No references found in selected payments"))
# Search for invoices in account.move matching payment refs
invoices = self.env['account.move'].search([
('name', 'in', payment_refs),
])
if not invoices:
raise UserError("لا توجد فواتير مطابقة للمراجع المحددة")
raise UserError(_("No invoices matching the specified references"))
for invoice in invoices:
credit = self.env['account.move.reversal'].with_company(self.env.user.company_id.id).create({
'refund_method': 'refund',
@ -217,4 +217,4 @@ class OTPWizard(models.TransientModel):
else:
raise UserError("الرقم المدخل خاطئ")
raise UserError(_("The entered number is incorrect"))

View File

@ -50,7 +50,7 @@
<field name="name" readonly="1"/>
<field name="journal_id" readonly="1"/>
<field name="payment_method_line_id" readonly="1"/>
<field name="payment_method_id" readonly="1"/>
<field name="amount" sum="Amount"
readonly="1"/>
<field name="state" readonly="1"/>