diff --git a/odex25_takaful/ensan_sale_management_takaful/__init__.py b/odex25_takaful/ensan_sale_management_takaful/__init__.py new file mode 100644 index 000000000..9a7e03ede --- /dev/null +++ b/odex25_takaful/ensan_sale_management_takaful/__init__.py @@ -0,0 +1 @@ +from . import models \ No newline at end of file diff --git a/odex25_takaful/ensan_sale_management_takaful/__manifest__.py b/odex25_takaful/ensan_sale_management_takaful/__manifest__.py new file mode 100644 index 000000000..18bdcee24 --- /dev/null +++ b/odex25_takaful/ensan_sale_management_takaful/__manifest__.py @@ -0,0 +1,18 @@ +{ + 'name': 'Ensan Sale Management Takaful', + 'version': '1.0', + 'description': 'Bridging Takaful and Sale Management', + 'summary': 'Bridging Takaful and Sale Management', + 'author': 'Expert Co. Ltd.', + 'website': 'http://www.exp-sa.com', + 'license': 'LGPL-3', + 'category': 'Odex25-Ens', + 'depends': [ + 'ensan_sale_management', + 'odex_takaful', + ], + 'data': [ + 'views/product_template_views.xml', + ], + 'auto_install': True, +} \ No newline at end of file diff --git a/odex25_takaful/ensan_sale_management_takaful/models/__init__.py b/odex25_takaful/ensan_sale_management_takaful/models/__init__.py new file mode 100644 index 000000000..232754377 --- /dev/null +++ b/odex25_takaful/ensan_sale_management_takaful/models/__init__.py @@ -0,0 +1 @@ +from . import product \ No newline at end of file diff --git a/odex25_takaful/ensan_sale_management_takaful/models/product.py b/odex25_takaful/ensan_sale_management_takaful/models/product.py new file mode 100644 index 000000000..265a09a18 --- /dev/null +++ b/odex25_takaful/ensan_sale_management_takaful/models/product.py @@ -0,0 +1,8 @@ +from odoo import models + +class ProductTemplate(models.Model): + _inherit = 'product.template' + + def _compute_fixed_value(self): + for rec in self: + rec.fixed_value = rec.donation_type == 'Fixed Amount' \ No newline at end of file diff --git a/odex25_takaful/ensan_sale_management_takaful/views/product_template_views.xml b/odex25_takaful/ensan_sale_management_takaful/views/product_template_views.xml new file mode 100644 index 000000000..539dabbb8 --- /dev/null +++ b/odex25_takaful/ensan_sale_management_takaful/views/product_template_views.xml @@ -0,0 +1,16 @@ + + + + + product.template.form.inherit + product.template + + + + + + + + + + diff --git a/odex25_takaful/odex_takaful/MODULE_REVIEW.md b/odex25_takaful/odex_takaful/MODULE_REVIEW.md new file mode 100644 index 000000000..2be8ff5cb --- /dev/null +++ b/odex25_takaful/odex_takaful/MODULE_REVIEW.md @@ -0,0 +1,354 @@ +# مراجعة شاملة لموديول Odex Takaful System + +## نظرة عامة + +**اسم الموديول:** Odex Takaful System +**الإصدار:** 11.0 +**الفئة:** Odex25-Takaful/Odex25-Takaful +**المؤلف:** Expert Co. Ltd. +**الموقع:** http://www.exp-sa.com +**الملخص:** موديول لإدارة نظام التكافل (الكفالة والمساهمات والتبرعات) + +## الاعتماديات (Dependencies) + +- `base` +- `takaful_core` +- `odex_takaful_base` +- `odex_benefit` +- `account` +- `phone_validation` + +## الهيكل العام للموديول + +### 1. النماذج (Models) - 26 ملف + +#### النماذج الرئيسية: + +1. **`takaful.sponsorship`** - نموذج الكفالة الرئيسي + - إدارة الكفالات (أيتام/أرامل) + - أنواع الكفالة: فردية/جماعية، مؤقتة/دائمة + - حالات الكفالة: draft, confirmed, wait_pay, paid, canceled, closed, etc. + - إدارة المدفوعات والاسترداد + - ربط مع الحسابات المالية + +2. **`donations.details.lines`** - تفاصيل التبرعات والكفالات + - إدارة بنود التبرعات والكفالات + - دعم التبرعات المباشرة (Direct Debit) + - جدولة المدفوعات الشهرية + - إدارة الاستبدال والتمديد + +3. **`payment.details.lines`** - تفاصيل المدفوعات + - تسجيل المدفوعات + - ربط مع الحسابات المالية + - دعم طرق الدفع المختلفة (نقد، تحويل بنكي، سحب مباشر) + +4. **`sponsorship.scheduling.line`** - جدولة المدفوعات + - جدولة المدفوعات الشهرية + - معالجة المدفوعات التلقائية + - تتبع حالة كل دفعة + +5. **`month.payment`** - المدفوعات الشهرية للمستفيدين + - تجميع المدفوعات الشهرية + - إنشاء قيود مالية للمستفيدين + +6. **`takaful.sponsor.operation`** - عمليات الكافل + - تتبع عمليات الكافل (كفالة، مساهمة، هدية) + +7. **`sponsorship.payment`** - مدفوعات الكفالة + - إدارة مدفوعات الكفالة + - ربط مع الفواتير + +8. **`sponsorship.cancellation`** - إلغاء الكفالة + - إدارة عمليات الإلغاء + - حساب المتأخرات + +9. **`replacement.process`** - عملية الاستبدال + - استبدال المستفيدين + - تتبع عمليات الاستبدال + +10. **`takaful.contribution`** - المساهمات المالية + - إدارة المساهمات المالية + - ربط مع الحاجات + +11. **`takaful.grant.benefit`** - تمديد نموذج المستفيدين + - حساب قيمة الكفالة + - تتبع الكفالات النشطة + +12. **`takaful.push.notification`** - الإشعارات + - إرسال الإشعارات (SMS, Email, WhatsApp) + +13. **`takaful.notification`** - إعدادات الإشعارات + - أنواع الإشعارات المختلفة + - ربط مع حالات الكفالة + +14. **`takaful.payment.method`** - طرق الدفع + - إدارة طرق الدفع المختلفة + +15. **`donation.extension.history`** - سجل التمديدات + - تتبع تمديدات التبرعات + +16. **`donation.replacement.log`** - سجل الاستبدالات + - تتبع استبدالات المستفيدين + +17. **`refund.details.lines`** - تفاصيل الاسترداد + - إدارة عمليات الاسترداد + +18. **`sponsorship.benefit.arrears`** - المتأخرات + - حساب المتأخرات للمستفيدين + +#### النماذج المساعدة: + +- `replacement.reasons` - أسباب الاستبدال +- `sponsorship.reason.stop` - أسباب إيقاف الكفالة +- `refund.reasons` - أسباب الاسترداد +- `sponsorship.states` - حالات الكفالة +- `preferred.communication` - طرق التواصل المفضلة +- `takaful.conf` - إعدادات التكافل +- `donations.items` - عناصر التبرعات +- `points.of.sale.custom` - نقاط البيع + +### 2. الويزاردات (Wizards) - 10 ملفات + +1. **`account.payment.register`** - تسجيل المدفوعات +2. **`add.details.wiz`** - إضافة التفاصيل +3. **`benefit.month.payment.wiz`** - مدفوعات المستفيدين الشهرية +4. **`donation.extension.wizard`** - تمديد التبرعات +5. **`orphan.replacement.wizard`** - استبدال الأيتام +6. **`refund.wiz`** - استرداد المدفوعات +7. **`replace.sponsor.wizard`** - استبدال الكافل +8. **`takaful.reports.wizards`** - تقارير التكافل +9. **`transfer.deduction.wizard`** - تحويل الخصومات + +### 3. التقارير (Reports) - 7 ملفات + +1. **`month_payment_report.py`** - تقرير المدفوعات الشهرية +2. **`payment_details_lines_reports.xml`** - تقارير تفاصيل المدفوعات +3. **`takaful_reports.py`** - تقارير التكافل العامة +4. **`transfer_deduction_report.xml`** - تقرير تحويل الخصومات + +### 4. البيانات (Data) - 7 ملفات + +1. **`sequence_data.xml`** - التسلسلات +2. **`scheduled_actions.xml`** - الإجراءات المجدولة +3. **`takaful_notification_mail_template.xml`** - قوالب البريد الإلكتروني +4. **`sponsorship_states_data.xml`** - حالات الكفالة +5. **`sponsorship_notification_data.xml`** - إعدادات الإشعارات +6. **`message_template_data.xml`** - قوالب الرسائل +7. **`server_actions.xml`** - إجراءات الخادم + +### 5. الأمان (Security) + +- **`security_data.xml`** - مجموعات الأمان +- **`ir.model.access.csv`** - صلاحيات الوصول + +### 6. الواجهات (Views) - 33 ملف + +- واجهات الكفالات +- واجهات المدفوعات +- واجهات التبرعات +- واجهات التقارير +- واجهات الإشعارات + +### 7. الإجراءات المجدولة (Scheduled Actions) + +1. **فحص تاريخ انتهاء الكفالة وإرسال رسائل WhatsApp** + - التكرار: يومي + - الوقت: 04:00 + +2. **إدارة سير عمل الكفالة يومياً** + - التكرار: يومي + - الوقت: 04:00 + +3. **إنشاء فواتير الكفالات شهرياً** + - التكرار: شهري + - الوقت: 02:00 في اليوم الأول من الشهر + +4. **معالجة المدفوعات المجدولة يومياً** + - التكرار: يومي + - الوقت: 03:00 + +5. **إرسال تذكيرات SMS لانتهاء السحب المباشر** + - التكرار: يومي + - الوقت: 05:00 + +## الوظائف الرئيسية + +### 1. إدارة الكفالات + +#### إنشاء كفالة جديدة: +- اختيار الكافل (مسجل، جديد، غير معروف) +- اختيار المستفيد (فردي/جماعي) +- اختيار نوع المستفيد (أيتام/أرامل) +- تحديد مدة الكفالة (مؤقتة/دائمة) +- إضافة بنود التبرعات/الكفالات +- تحديد طريقة الدفع + +#### حالات الكفالة: +- **draft**: مسودة +- **confirmed**: مؤكدة +- **wait_pay**: انتظار الدفع +- **paid**: مدفوعة +- **partial_refund**: استرداد جزئي +- **fully_refund**: استرداد كامل +- **approve_refund**: موافقة على الاسترداد +- **under_refund**: تحت إجراءات الاسترداد +- **under_replacement**: تحت الاستبدال +- **replacement_done**: تم الاستبدال +- **canceled**: ملغاة +- **closed**: مغلقة + +### 2. إدارة المدفوعات + +#### أنواع المدفوعات: +- نقد (Cash) +- بطاقة (Card) +- شيك (Check) +- تحويل بنكي (Bank Transfer) +- سحب مباشر (Direct Debit) + +#### تسجيل المدفوعات: +- ربط مع الفواتير +- إنشاء قيود مالية تلقائياً +- تتبع حالة الدفع + +### 3. جدولة المدفوعات + +- جدولة المدفوعات الشهرية للكفالات المؤقتة +- معالجة تلقائية للمدفوعات المجدولة +- تتبع حالة كل دفعة + +### 4. الاستبدال + +- استبدال المستفيدين +- تتبع عمليات الاستبدال +- إرسال إشعارات للكافل + +### 5. التمديد + +- تمديد التبرعات/الكفالات +- تتبع تاريخ التمديدات +- إرسال تذكيرات قبل الانتهاء + +### 6. الاسترداد + +- استرداد كامل أو جزئي +- إنشاء فواتير استرداد +- تتبع عمليات الاسترداد + +### 7. الإشعارات + +#### أنواع الإشعارات: +- إنشاء كفالة +- قبل انتهاء الكفالة +- بعد انتهاء الكفالة +- إلغاء الكفالة +- استرداد كامل/جزئي +- استبدال يتيم/أرملة +- دفع كامل/جزئي +- قبل الإلغاء + +#### قنوات الإشعارات: +- SMS +- Email +- WhatsApp (عبر Twilio) +- Push Notifications + +### 8. التقارير + +- تقارير المدفوعات الشهرية +- تقارير تفاصيل المدفوعات +- تقارير التكافل العامة +- تقارير تحويل الخصومات + +## التكامل مع الموديولات الأخرى + +### 1. odex_benefit +- ربط مع المستفيدين (family.member) +- ربط مع العائلات (grant.benefit) +- استخدام حالات المستفيدين + +### 2. account +- إنشاء الفواتير تلقائياً +- إنشاء قيود المدفوعات +- ربط مع الحسابات المالية + +### 3. takaful_core +- استخدام الإعدادات الأساسية +- استخدام الحسابات المالية + +### 4. odex_takaful_base +- استخدام الإعدادات الأساسية +- استخدام الإشعارات + +## البيانات في النظام + +بناءً على فحص البيانات في Odoo: +- **الكفالات (takaful.sponsorship):** 0 سجل +- **تفاصيل التبرعات (donations.details.lines):** 0 سجل +- **تفاصيل المدفوعات (payment.details.lines):** 197 سجل +- **المدفوعات الشهرية (month.payment):** 0 سجل +- **جدولة المدفوعات (sponsorship.scheduling.line):** 0 سجل + +## الميزات المتقدمة + +### 1. السحب المباشر (Direct Debit) +- جدولة المدفوعات الشهرية تلقائياً +- معالجة المدفوعات في التاريخ المحدد +- إرسال تذكيرات قبل الانتهاء + +### 2. آلية التبرع +- **مع شروط (With Conditions):** ربط مع مستفيدين محددين +- **بدون شروط (Without Conditions):** تبرع عام + +### 3. حساب المتأخرات +- حساب المتأخرات تلقائياً +- إرسال إشعارات للمتأخرات +- إلغاء تلقائي بعد فترة محددة + +### 4. الاستبدال التلقائي +- استبدال تلقائي عند تغيير حالة المستفيد +- إرسال إشعارات للكافل + +### 5. التكامل مع Twilio +- إرسال رسائل WhatsApp +- إرسال SMS +- استخدام قوالب الرسائل + +## الأمان والصلاحيات + +### مجموعات الأمان: +- `group_kufula_user` - مستخدم التكافل +- `group_donations_coordinator` - منسق التبرعات +- `group_sponsorship_coordinator` - منسق الكفالات +- `group_orphan_replacement` - استبدال الأيتام +- `group_replace_sponsor` - استبدال الكافل +- `donation_officer_group` - موظف التبرعات +- `sponsorship_officer_group` - موظف الكفالات + +## نقاط القوة + +1. **شمولية النظام:** يغطي جميع جوانب إدارة الكفالات والتبرعات +2. **التكامل الجيد:** تكامل ممتاز مع الموديولات الأخرى +3. **الإشعارات المتقدمة:** دعم قنوات إشعارات متعددة +4. **الأتمتة:** معالجة تلقائية للعديد من العمليات +5. **المرونة:** دعم أنواع مختلفة من الكفالات والتبرعات +6. **التقارير:** تقارير شاملة للعمليات + +## نقاط التحسين المحتملة + +1. **الأداء:** قد يحتاج تحسين للأداء مع كمية كبيرة من البيانات +2. **التوثيق:** يمكن تحسين التوثيق الداخلي للكود +3. **الاختبارات:** إضافة المزيد من الاختبارات الآلية +4. **التعليقات:** بعض الأكواد تحتاج تعليقات أوضح +5. **معالجة الأخطاء:** تحسين معالجة الأخطاء في بعض الأماكن + +## الخلاصة + +موديول **Odex Takaful System** هو نظام شامل ومتكامل لإدارة الكفالات والتبرعات. يوفر ميزات متقدمة مثل السحب المباشر، الاستبدال التلقائي، والإشعارات المتعددة القنوات. النظام متكامل جيداً مع الموديولات الأخرى ويوفر واجهات سهلة الاستخدام. + +النظام جاهز للاستخدام في بيئة الإنتاج مع بعض التحسينات المحتملة للأداء والتوثيق. + +--- + +**تاريخ المراجعة:** 2025-01-27 +**المراجع:** AI Assistant diff --git a/odex25_takaful/odex_takaful/__init__.py b/odex25_takaful/odex_takaful/__init__.py new file mode 100644 index 000000000..b6b626309 --- /dev/null +++ b/odex25_takaful/odex_takaful/__init__.py @@ -0,0 +1,6 @@ +from . import models +from . import controllers +from . import reports +from . import wizards + + diff --git a/odex25_takaful/odex_takaful/__manifest__.py b/odex25_takaful/odex_takaful/__manifest__.py new file mode 100644 index 000000000..c2741ae73 --- /dev/null +++ b/odex25_takaful/odex_takaful/__manifest__.py @@ -0,0 +1,84 @@ +{ + 'name': 'Odex Takaful System', + 'version': '11.0', + 'category': 'Odex25-Takaful/Odex25-Takaful', + 'author': "Expert Co. Ltd.", + 'website': "http://www.exp-sa.com", + 'summary': 'This module for Takaful project', + 'depends': [ + 'base', + 'takaful_core', + 'odex_takaful_base', + 'odex_benefit', + 'account', + 'phone_validation', + # 'analytic_account', + ], + 'data': [ + 'security/security_data.xml', + 'security/ir.model.access.csv', + + 'data/sequence_data.xml', + 'data/scheduled_actions.xml', + 'data/takaful_notification_mail_template.xml', + 'data/sponsorship_states_data.xml', + 'data/sponsorship_notification_data.xml', + + 'views/takaful_sponsor_view.xml', + 'views/takaful_sponsor_operation_views.xml', + 'reports/payment_details_lines_reports.xml', + 'views/assets.xml', + 'views/res_config_settings.xml', + 'wizards/orphan_replacement_wizard.xml', + 'views/takaful_sponorship_view.xml', + 'views/donation_item_views.xml', + 'views/replacement_reasons_views.xml', + 'views/replacement_process_views.xml', + 'views/benefit_views.xml', + 'views/family_member.xml', + + 'views/takaful_contribution_view.xml', + 'views/sponsorship_payment_view.xml', + 'views/sponsorship_cancellation_view.xml', + 'views/payment_details_lines_views.xml', + 'wizards/account_payment_register.xml', + 'views/res_partner_bank.xml', + 'views/res_users_inherit.xml', + + 'views/takaful_push_notification_view.xml', + 'views/takaful_grant_benefit_view.xml', + 'views/takaful_month_payment_view.xml', + 'wizards/benefit_month_payment_wiz_view.xml', + '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', + 'wizards/takaful_reports_wizards.xml', + 'wizards/refund_payment_wizard.xml', + 'wizards/add_details_wizard.xml', + 'wizards/donation_extension_wizard.xml', + 'wizards/replace_sponsor_wizard.xml', + 'wizards/add_benefit_wizard.xml', + 'views/donations_details_lines.xml', + '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', + 'data/message_template_data.xml', + 'data/server_actions.xml', + + 'wizards/transfer_deduction_wizard_views.xml', + 'reports/transfer_deduction_report.xml', + 'reports/transfer_deduction_report_templates.xml', + ], + 'icon': 'static/description/icon.png', + # 'installable': True, + # 'application': True, + # 'auto_install': False, +} diff --git a/odex25_takaful/odex_takaful/controllers/__init__.py b/odex25_takaful/odex_takaful/controllers/__init__.py new file mode 100644 index 000000000..870743d07 --- /dev/null +++ b/odex25_takaful/odex_takaful/controllers/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +from . import _cart_change + + + diff --git a/odex25_takaful/odex_takaful/controllers/_cart_change.py b/odex25_takaful/odex_takaful/controllers/_cart_change.py new file mode 100644 index 000000000..74fd1fdb2 --- /dev/null +++ b/odex25_takaful/odex_takaful/controllers/_cart_change.py @@ -0,0 +1,34 @@ +from odoo import http +import json + + +class QtyChangeSO(http.Controller): + + @http.route(['/qtyupdatecart_so'], type='http', auth='user', website=True) + def QtyUpdateSO(self, **post): + # _sol_obj = http.request.env["takaful.sponsorship"] + # _sol_obj.user_input_qty_sol( + # float(post.get("quantity")), int(post.get("donation_name")), int(post.get("sponsorship_id"))) + # return json.dumps({"message": True}) + try: + env = http.request.env + sponsorship_model = env["takaful.sponsorship"].sudo() + # Support both 'donation_name' and 'product_id' parameters for backwards compatibility + product_id = int(post.get("donation_name") or post.get("product_id")) + quantity = float(post.get("quantity")) + sponsorship_id = int(post.get("sponsorship_id")) + sponsorship_model.user_input_qty_sol(quantity, product_id, sponsorship_id) + return json.dumps({"message": True}) + except Exception as e: + # Return a structured error so the frontend can display/log details + return http.Response( + json.dumps({"message": False, "error": str(e)}), + status=500, + mimetype='application/json' + ) + + # @http.route(['/getuom_so'], type='http', auth='user', website=True) + # def UOMGetSO(self, **post): + # product = http.request.env['product.product'].search([('id', '=', post["product_id"])]) + # uom_category = product.product_tmpl_id.uom_id.category_id.name + # return json.dumps({"uom_category": uom_category.lower()}) diff --git a/odex25_takaful/odex_takaful/data/message_template_data.xml b/odex25_takaful/odex_takaful/data/message_template_data.xml new file mode 100644 index 000000000..e5069b584 --- /dev/null +++ b/odex25_takaful/odex_takaful/data/message_template_data.xml @@ -0,0 +1,53 @@ + + + + + + + إنشاء كفالة + تم إنشاء كفالة + sponsorship_creation + + + + + إشعار سداد + تم سداد كفالة + sponsorship_paid + + + + + إلغاء كفالة + لقد تم إلغاء الكفالة + sponsorship_canceled + + + + + + + + + علي وشك الإلغاء + الكفالة علي وشك الإلغاء + sponsorship_to_cancel + + + + + إنهاء كفالة + تم إنهاء الكفالة + sponsorship_close + + + + + علي وشك الإنتهاء + الكفالة علي وشك النهاية + sponsorship_to_close + + + + + \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/data/scheduled_actions.xml b/odex25_takaful/odex_takaful/data/scheduled_actions.xml new file mode 100644 index 000000000..c5397eb9d --- /dev/null +++ b/odex25_takaful/odex_takaful/data/scheduled_actions.xml @@ -0,0 +1,95 @@ + + + + + + + Check Sponsorship End Date To Send Wahtsapp Message to Sponsor + + 1 + + days + -1 + + + model.run_check_all_end_dates() + code + + + + + + Daily Manage Sponsorship Workflow Scheduler + + 1 + + days + -1 + + + model.process_sponsorship_workflow_scheduler() + code + + + + + + + Create Sponsorships Invoices Scheduler + + 1 + months + + -1 + + + code + model.monthly_create_sponsorship_invoice_scheduler() + + + + + + + Process Scheduled Payments Daily + + 1 + days + + -1 + + + code + model.with_context(from_cron=True).cron_process_scheduled_payments() + + + + + + + Send Direct Debit End Date Reminders + + 1 + days + + -1 + + + code + model.cron_send_direct_debit_end_date_reminders() + + + + + + Family Member Restriction + + code + model._cron_family_member_restriction() + 1 + days + -1 + False + + + \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/data/sequence_data.xml b/odex25_takaful/odex_takaful/data/sequence_data.xml new file mode 100644 index 000000000..0f15aad47 --- /dev/null +++ b/odex25_takaful/odex_takaful/data/sequence_data.xml @@ -0,0 +1,119 @@ + + + + + + Sponsorship Sequence + sponsorship.sequence + SPSHIP/ + + + + + 4 + + + + Replacement Process Sequence + replacement.process.sequence + OR-RE/ + + + + + 4 + + + + Sponsorship Orphan Sequence + sponsorship.orphan.sequence + + + + + + 1 + + + + Sponsorship Widow Sequence + sponsorship.widow.sequence + + + + + + 1 + + + + Month Payment Sequence + month.payment.sequence + PAY/ + + + + + 4 + + + Point Of Sale Sequence + point.of.sale.sequence + PO/ + + + + + 4 + + + Payment Details Sequence + payment.details.sequence + Payment/ + + + + + 4 + + + + Donations Details Sequence + donations.details.lines.sequence + SPSH/ + 4 + 1 + 1 + + + + Sponsorship Scheduling Line Sequence + sponsorship.scheduling.line.sequence + SSL/ + 5 + 1 + 1 + + + + ACCRSP Journal Entries Sequence + account.move.accrsp + ACCRSP/%(year)s/%(month)s/ + 4 + 1 + 1 + + True + + + SP Journal Entries Sequence + account.move.payment.details.sequence + SP/%(year)s/%(month)s/ + 4 + 1 + 1 + + True + + + \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/data/server_actions.xml b/odex25_takaful/odex_takaful/data/server_actions.xml new file mode 100644 index 000000000..ef0ca221a --- /dev/null +++ b/odex25_takaful/odex_takaful/data/server_actions.xml @@ -0,0 +1,22 @@ + + + + + + + Extend Donation + + + code + action = records.action_extend_sponsorship() + + + \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/data/sponsorship_notification_data.xml b/odex25_takaful/odex_takaful/data/sponsorship_notification_data.xml new file mode 100644 index 000000000..bfa9411d4 --- /dev/null +++ b/odex25_takaful/odex_takaful/data/sponsorship_notification_data.xml @@ -0,0 +1,62 @@ + + + + + + ارسال رسالة واتساب مباشرة بعد اجراء الconfirm على الكفالة + 0 + create_kafala + + + هنيئًا لك .. يا من اعطيت وبادرت لتُسعد يتيمًا، نشكركم على كفالتكم بمبلغ ( [Amount] ) ر.س بلغكم الله مرافقة النبي ﷺ في الجنة رابط التقييم : https://forms.gle/pRrNWohAnLPoFwb38 + + + + + تذكير اول بأنتهاء الكفالة: يتم ارسال رسالة واتساب قبل تاريخ انتهاء الكفالة المخطط له اخر بند مجدول بشهر + 30 + before_finish + + + عزيزي الكافل / ـة : كفالتك السنوية عطاء يتجدد في كل عام، وثواب يُخلد لمرافقة خير الأنام ﷺ نود تذكيركم بموعد تجديد كفالتكم قبل تاريخ [ExpiryDate] + + + + + تذكير ثاني بأنتهاء الكفالة: = يتم ارسال رسالة واتساب قبل تاريخ انتهاء الكفالة المخطط له اخر بند مجدول ب16 يوم + 16 + before_finish + + + عزيزي الكافل / ـة : كفالتك السنوية عطاء يتجدد في كل عام، وثواب يُخلد لمرافقة خير الأنام ﷺ نود تذكيركم بموعد تجديد كفالتكم المتبقي عليها 15 يوماَ + + + + + + تذكير ثالث بأنتهاء الكفالة: يتم ارسال رسالة واتساب قبل تاريخ انتهاء الكفالة المخطط له اخر بند مجدول ب4 يوم + 4 + before_finish + + + عزيزي الكافل / ـة : ثلاثة أيام فقط على إنتهاء كفالتكم السنوية. كنتم سندًا لليتيم، ويسعدنا استمرار كفالتكم التي تنتهي تلقائياَ بتاريخ [ExpiryDate] + + + + ارسال رسالة واتساب بعد كل اجراء دفع يتم على بنود جدولة الكفالات + 0 + partial_payment + + + هنيئًا لك .. يا من اعطيت وبادرت لتُسعد يتيمًا وأسرته، تم استلام تبرعكم بمبلغ ( [Amount] ) ر س بلغكم الله مرافقة النبي ﷺ في الجنة. رابط التقييم: https://forms.gle/pRrNWohAnLPoFwb38 + + + + + + \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/data/sponsorship_states_data.xml b/odex25_takaful/odex_takaful/data/sponsorship_states_data.xml new file mode 100644 index 000000000..93706f7e1 --- /dev/null +++ b/odex25_takaful/odex_takaful/data/sponsorship_states_data.xml @@ -0,0 +1,62 @@ + + + + + + draft + + + + confirmed + + + + wait_pay + + + + paid + + + + partial_refund + + + + fully_refund + + + + approve_refund + + + + under_refund + + + + under_replacement + + + + replacement_done + + + + canceled + + + + closed + + + + Whatsapp + app + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/data/takaful_notification_mail_template.xml b/odex25_takaful/odex_takaful/data/takaful_notification_mail_template.xml new file mode 100644 index 000000000..7f7db70ea --- /dev/null +++ b/odex25_takaful/odex_takaful/data/takaful_notification_mail_template.xml @@ -0,0 +1,35 @@ + + + + + + Notification Email + ${ctx.get('email_from')} or ''} + ${ctx.get('email_to')} + ${ctx.get('company_name')} - ${ctx.get('title')} + False + + + + + ar_001 + + Dear ${ctx.get('partner_name')}, +

+ +

+ ${ctx.get('body')} +

+ +

+ Thank you, +

+ +

+ From ${ctx.get('company_name')}. +

+ ]]>
+
+ +
diff --git a/odex25_takaful/odex_takaful/i18n/ar_001.po b/odex25_takaful/odex_takaful/i18n/ar_001.po new file mode 100644 index 000000000..3582cee76 --- /dev/null +++ b/odex25_takaful/odex_takaful/i18n/ar_001.po @@ -0,0 +1,7565 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * odex_takaful +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-10-19 10:59+0000\n" +"PO-Revision-Date: 2025-10-19 10:59+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: odex_takaful +#: model:ir.actions.report,print_report_name:odex_takaful.action_report_transfer_deduction_pdf +msgid "" +"\n" +" (object.sponsorship_creation_date and ('Transfer Deduction Report - %s' % (object.sponsorship_creation_date.strftime('%Y-%m-%d'))) or 'Transfer Deduction Report')\n" +" " +msgstr "" + +#. module: odex_takaful +#: model:mail.template,body_html:odex_takaful.push_notification_email_template +msgid "" +"\n" +"

\n" +" Dear ${ctx.get('partner_name')},\n" +"

\n" +" \n" +"

\n" +" ${ctx.get('body')}\n" +"

\n" +"\n" +"

\n" +" Thank you,\n" +"

\n" +"\n" +"

\n" +" From ${ctx.get('company_name')}.\n" +"

\n" +" " +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_month_payment.py:0 +#, python-format +msgid " No benefits for pay" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid " Please set Journal in Payment Details " +msgstr "يرجى تعيين اليومية في تفاصيل الدفع" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid " Please set donor's payable and receivable accounts first " +msgstr "يرجى تحديد حسابات الدفع والقبض أولا" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "" +" Please set income journal in settings (kafala_journal_id Payment Journal)" +msgstr "يرجى ضبط دفتر الإيراد في الإعدادات" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid " Please set orphan restricted income account in settings " +msgstr "يرجى تعيين حساب الإيراد المقيد للأيتام في الإعدادات" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid " Please set widow restricted income account in settings " +msgstr "يرجى تعيين حساب الإيراد المقيد للأرملة في الإعدادات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items___quantity +msgid " Quantity" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__event_count +msgid "# Events" +msgstr "عدد الفعاليات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__meeting_count +msgid "# Meetings" +msgstr "عدد الاجتماعات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__operation_count +msgid "# Of Operations" +msgstr "العمليات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__signature_count +msgid "# Signatures" +msgstr "التوقيعات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__task_count +msgid "# Tasks" +msgstr "عدد المهام" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__supplier_invoice_count +msgid "# Vendor Bills" +msgstr "عدد فواتير الموردين" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__contribution_count +msgid "# of Contributions" +msgstr "المساهمين" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__gift_count +msgid "# of Gifts" +msgstr "عدد الهدايا" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__kafalat_count +msgid "# of Kafalat" +msgstr "عدد الكفالات" + +#. module: odex_takaful +#: model:mail.template,subject:odex_takaful.push_notification_email_template +msgid "${ctx.get('company_name')} - ${ctx.get('title')}" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.product_product_view_kanban +msgid "" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.product_product_view_kanban +msgid "" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "" +"

\n" +" Create a new product\n" +"

" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_payment_form +msgid " Months" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_payment_form +msgid " Riyal" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_settings_view2 +msgid "Hours" +msgstr "الساعات" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.makfuleen_report_pdf +msgid " Sponsor Name: " +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_payment_report_pdf +msgid "Benefits Payments Report" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_share +msgid "Benefits Payments Shares Report From Sponsorship:" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_report_pdf +msgid "Sponsorship Monthly Payments of Benefits :" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_payment_voucher +msgid "Amount Paid:" +msgstr "مبلغ التبرع:" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_payment_voucher +msgid "Beneficiary:" +msgstr "المستفيد:" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +msgid "Benefit Members" +msgstr "الأفراد المستفيدين" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +msgid "Branches" +msgstr "الفروع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_payment_voucher +msgid "Donation Amount:" +msgstr "المبلغ المدفوع:" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_payment_voucher +msgid "Donation Name:" +msgstr "اسم التبرع:" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_payment_voucher +msgid "Donation Type:" +msgstr "نوع التبرع:" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +msgid "End Date" +msgstr "تاريخ النهاية" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_payment_voucher +msgid "Payment Date:" +msgstr "تاريخ الدفع:" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_payment_voucher +msgid "Payment Method:" +msgstr "طريقة الدفع:" + +#. module: enasan_geidea_sponsorship +#: model_terms:ir.ui.view,arch_db:enasan_geidea_sponsorship.view_account_payment_register_form_geidea +msgid "Process on Terminal" +msgstr "الدفع على المنصة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +msgid "Payment Method" +msgstr "طريقة الدفع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_payment_voucher +msgid "Point of Sale:" +msgstr "نقطة البيع:" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_payment_voucher +msgid "Scheduling Sequence(s):" +msgstr "تسلسلات الجدولة:" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_payment_voucher +msgid "Sponsor Name:" +msgstr "المتبرع/الكافل:" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +msgid "Sponsors" +msgstr "المتبرعين" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +msgid "Start Date" +msgstr "تاريخ البداية" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +msgid "Selected Criteria" +msgstr "المعايير المختارة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +msgid "Sponsorship Details" +msgstr "تفاصيل الكفالات" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/res_partner.py:0 +#, python-format +msgid "" +"A contact cannot be both Family/Beneficiary and Donor/Member/Sponsor at the " +"same time!" +msgstr "لا يمكن أن تكون جهة الاتصال أسرة/مستفيد ومتبرع/عضو/كافل في نفس الوقت!" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items__account_id +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__account_id +msgid "Account" +msgstr "حساب" + +#. module: odex_takaful +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__account_number +#, python-format +msgid "Account Number" +msgstr "رقم الحساب" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__property_account_payable_id +msgid "Account Payable" +msgstr "حساب الدائنون" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_account_payment +msgid "Account Payment Inherit Model" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__account_payment_method +msgid "Account Payment Method" +msgstr "طريقة الدفع المرتبطة بالحاب" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__property_account_receivable_id +msgid "Account Receivable" +msgstr "حساب المدينون" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__account_type +msgid "Account Type" +msgstr "نوع الحساب" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__message_needaction +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__message_needaction +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__message_needaction +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__message_needaction +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__message_needaction +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__message_needaction +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__message_needaction +msgid "Action Needed" +msgstr "إجراء مطلوب" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +msgid "Action Refund" +msgstr "إجراء الإرجاع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__activation_mode +msgid "Activation Mode" +msgstr "نموذج الأنشطة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__active +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__state__active +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +msgid "Active" +msgstr "نشط" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__active_lang_count +msgid "Active Lang Count" +msgstr "عدد اللغات النشطة" + +#. module: odex_takaful +#: model:ir.actions.server,name:odex_takaful.action_active_sponsor_report +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__active_counts +#: model_terms:ir.ui.view,arch_db:odex_takaful.active_sponsor_report_pivot_view +msgid "Active Sponsors Count" +msgstr "عدد الكفلاء النشطين" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponsor_model.py:0 +#, python-format +msgid "Active Sponsors Count Report" +msgstr "تقرير عدد الكفلاء النشطين" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.active_sponsor_report_menu +msgid "Active Sponsors Report" +msgstr "تقرير الكفلاء النشطين" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__activity_ids +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__activity_ids +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__activity_ids +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__activity_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__activity_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__activity_ids +msgid "Activities" +msgstr "الأنشطة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__activity_exception_decoration +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__activity_exception_decoration +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__activity_exception_decoration +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__activity_exception_decoration +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__activity_exception_decoration +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "زخرفة استثناء النشاط" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__activity_state +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__activity_state +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__activity_state +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__activity_state +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__activity_state +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__activity_state +msgid "Activity State" +msgstr "حالة النشاط" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__activity_type_icon +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__activity_type_icon +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__activity_type_icon +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__activity_type_icon +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__activity_type_icon +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__activity_type_icon +msgid "Activity Type Icon" +msgstr "أيقونة نوع النشاط" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.add_details_wizard_form +msgid "Add" +msgstr "إضافة" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_conf.py:0 +#, python-format +msgid "Add Details Wizard" +msgstr "إضافة التفاصيل" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.product_product_view_kanban +msgid "Add Payment" +msgstr "طريقة الدفع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.product_product_view_kanban +msgid "Add Payment Method" +msgstr "طريقة الدفع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Add a line" +msgstr "إضافة بند" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Add a section" +msgstr "إضافة قطاع" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#, python-format +msgid "Added: %s" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__l10n_sa_additional_identification_number +msgid "Additional Identification Number for Seller/Buyer" +msgstr "رقم التعريف الإضافي للبائع/المشتري" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__l10n_sa_additional_identification_scheme +msgid "Additional Identification scheme for Seller/Buyer" +msgstr "مخطط التعريف الإضافي للبائع/المشتري" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__additional_info +msgid "Additional info" +msgstr "معلومات إضافية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__type +msgid "Address Type" +msgstr "نوع العنوان" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__affiliate_id +msgid "Affiliate" +msgstr "الشريك التابع" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_res_config_settings +msgid "Affiliate Configuration Model" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__affiliate_key +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__res_affiliate_key +msgid "Affiliate key" +msgstr "مفتاح الشريك التابع" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_notification.py:0 +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_notification__notification_type__after_kafala_end +#, python-format +msgid "After Kafala End Date" +msgstr "بعد انتهاء تاريخ الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__age +msgid "Age" +msgstr "العمر" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__age_category_id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__age_category_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__age_category_id +msgid "Age Category" +msgstr "الفئة العمرية" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#, python-format +msgid "All" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__lang +msgid "" +"All the emails and documents sent to this contact will be translated in this" +" language." +msgstr "" +"سيتم ترجمة كافة رسائل البريد الإلكتروني والمستندات المرسلة لجهة الاتصال " +"المختارة إلى هذه اللغة." + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__allowed_payment_method_ids +msgid "Allowed Payment Method" +msgstr "طرق الدفع المسموحة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__allowed_sponsor_ids +msgid "Allowed Sponsor" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__amount +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__amount +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__amount +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__amount +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_share +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +#, python-format +msgid "Amount" +msgstr "مبلغ" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.product_product_view_kanban +msgid "Amount :" +msgstr "المبلغ :" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_donation_extension_wizard__amount +msgid "Amount per month for the extension period" +msgstr "المبلغ لكل شهر لفترة التمديد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__another_sponsors +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Another Sponsors" +msgstr "المهدي لهم" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_form +msgid "Approve" +msgstr "تصديق الموارد البشرية" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_scheduling_line__status__approve_refund +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_states__name__approve_refund +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__state__approve_refund +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_view_search +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Approve Refund" +msgstr "موافقة الإرجاع" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__month_payment__state__approve +msgid "Approved" +msgstr "تم التصديق" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__approved_amt +msgid "Approved Amount" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_form +msgid "Are you sure you want to Approve?" +msgstr "هل أنت متأكد أنك تريد الموافقة؟" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_form +msgid "Are you sure you want to Cancel?" +msgstr "هل أنت متأكد أنك تريد الإلغاء؟" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_form +msgid "Are you sure you want to Create lines Manually?" +msgstr "هل أنت متأكد أنك تريد إنشاء البنود يدوياً؟" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_form +msgid "Are you sure you want to Refuse?" +msgstr "هل أنت متأكد أنك تريد الرفض؟" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_form +msgid "Are you sure you want to Send Pay Notify?" +msgstr "هل أنت متأكد أنك تريد إرسال إشعار الدفع؟" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_form +msgid "Are you sure you want to Submit?" +msgstr "هل أنت متأكد أنك تريد الإرسال؟" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__arrears_month_number +msgid "Arrears Months Number" +msgstr "عدد الأشهر المتأخرة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__arrears_total +msgid "Arrears Total" +msgstr "إجمالي المتأخرات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__message_attachment_count +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__message_attachment_count +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__message_attachment_count +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__message_attachment_count +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__message_attachment_count +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__message_attachment_count +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__message_attachment_count +msgid "Attachment Count" +msgstr "عدد المرفقات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donate_for_another_person__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_points_of_sale_custom__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_preferred_communication__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_refund_reasons__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process_line__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_reasons__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_reason_stop__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_states__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_message_template__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_push_notification__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__attachment_takaful_sponsor_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__attachment_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__attachment_ids +msgid "Attachments" +msgstr "المرفقات" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_cancellation__cancel_type__sys +msgid "Automatically" +msgstr "تلقائياً" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__receipt_reminder_email +msgid "" +"Automatically send a confirmation email to the vendor X days before the " +"expected receipt date, asking him to confirm the exact date." +msgstr "" +"قم بإرسال بريد التأكيد الإلكتروني إلى المورّد بعدد الأيام قبل تاريخ الإيصال " +"المتوقع، تطلب فيه تأكيد التاريخ بالتحديد." + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "Bail Receipts Number %s" +msgstr "مقبوضات الكفالة رقم %s" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__bank_account_count +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__bank_id +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_share +msgid "Bank" +msgstr "البنك" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__bank_entity_name +msgid "Bank Entity Name" +msgstr "اسم كيان البنك" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_benefits_representative__bank_journal_id +#: model:ir.model.fields,field_description:odex_takaful.field_external_benefits__bank_journal_id +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit__bank_journal_id +#: model:ir.model.fields,field_description:odex_takaful.field_res_partner__bank_journal_id +#: model:ir.model.fields,field_description:odex_takaful.field_res_users__bank_journal_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__bank_journal_id +msgid "Bank Journal" +msgstr "يومية البنك" + +#. module: odex_takaful +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__bank_id +#, python-format +msgid "Bank Name" +msgstr "اسم البنك" + +#. module: odex_takaful +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#, python-format +msgid "Bank Sheet" +msgstr "ورقة البنك" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_payment_method__payment_method__bank_transfer +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__parent_payment_method__bank_transfer +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__payment_method__bank +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Bank Transfer" +msgstr "حوالة بنكية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__bank_transfer_amount +msgid "Bank Transfer Amount" +msgstr "مبلغ الحوالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__bank_ids +msgid "Banks" +msgstr "البنوك" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__barcode +msgid "Barcode" +msgstr "باركود" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Basic Information" +msgstr "البيانات الأساسية" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_notification.py:0 +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_notification__notification_type__before_cancel +#, python-format +msgid "Before Cancel" +msgstr "قبل الإلغاء" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_notification.py:0 +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_notification__notification_type__before_finish +#, python-format +msgid "Before Kafala End Date" +msgstr "قبل تاريخ إنتهاء الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__benefit_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__benefit_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__benefit_ids +msgid "Beneficiaries" +msgstr "المستفيدين" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.benefit_grant_due_invoice_action +msgid "Beneficiaries Due Payments" +msgstr "المدفوعات المستحقة للمستفيدين" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__benefit_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__benefit_ids +msgid "Beneficiaries Names" +msgstr "أسماء المستفيدين" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__name_in_certificate +msgid "Beneficiaries Names In Certificate" +msgstr "أسماء المستفيدين في الشهادة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__benefit_type +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__benefit_type +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__benefit_type +msgid "Beneficiaries Type" +msgstr "نوع المستفيدين" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__type_in_certificate +msgid "Beneficiaries Type In Certificate" +msgstr "نوع المستفيدين في الشهادة" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__benefit_id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__beneficiary_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__benefit_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__benefit_id +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +#, python-format +msgid "Beneficiary" +msgstr "المستفيد" + +#. module: odex_takaful +#: model:res.groups,name:odex_takaful.group_beneficiary_department_access +msgid "Beneficiary - Department Access" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Beneficiary Filters" +msgstr " حقول التصفية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_add_benefit_wizard__benefit_id +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__benefit_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__benefit_id +msgid "Beneficiary Name" +msgstr "اسم المستفيد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__benefit_type +msgid "Beneficiary Type" +msgstr "نوع المستفيد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__benefit_id +msgid "Benefit" +msgstr "ملف الأسرة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +msgid "Benefit Details" +msgstr "تفاصيل ملف الأسرة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__benefit_family_code +msgid "Benefit Family Code" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__benefit_id_number +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_share +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_payment_report_pdf +#, python-format +msgid "Benefit ID Number" +msgstr "رقم هوية المستفيد" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#, python-format +msgid "Benefit IDs changed in a donation item:
%s" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_transfer_deduction_wizard__benefit_member_ids +#, python-format +msgid "Benefit Members" +msgstr "لأفراد المستفيدين" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.benefit_month_payment_line_action +msgid "Benefit Month Payment" +msgstr "المدفوعات الشهرية الخاصة بالمستفيد" + +#. module: odex_takaful +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_share +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_payment_report_pdf +#, python-format +msgid "Benefit Name" +msgstr "اسم المستفيد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit__benefit_needs_percent +msgid "Benefit Needs Percent" +msgstr "نسبة احتياج المستفيد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit__benefit_needs_value +msgid "Benefit Needs Value" +msgstr "قيمة احتياجات المستفيد" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/account_move.py:0 +#, python-format +msgid "Benefit Number %s" +msgstr "" + +#. module: odex_takaful +#: model:ir.actions.report,name:odex_takaful.benefit_payment_report_pdf_act +msgid "Benefit Payment Report" +msgstr "تقرير مدفوعات المستفيدين" + +#. module: odex_takaful +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__benefit_type +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_share +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_payment_report_pdf +#, python-format +msgid "Benefit Type" +msgstr "نوع المستفيدين" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_benefit_wiz +msgid "Benefit Wizard Report" +msgstr "معالج تقرير المستفيد" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#, python-format +msgid "Benefit changed from %s to %s in a donation item." +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_benefit_wiz__benefit_ids +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__benefit_ids +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_takaful_sponsor_form +msgid "Benefits" +msgstr "المستفيدين" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_grant_benefit +msgid "Benefits - Profiles" +msgstr "الملف الشخصي - المستفيد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__benefits_count +msgid "Benefits Count" +msgstr "عدد المستفيدين" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__total_months_amount +msgid "Total Months Amount" +msgstr "اجمالي مبلغ الشهور" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__benefit_wiz__report_type__benefit_month +#: model:ir.ui.menu,name:odex_takaful.benefit_month_payment_sponsorship_menu_report +msgid "Benefits Month Payments" +msgstr "المدفوعات الشهرية للمستفيدين" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.benefit_month_report_action +msgid "Benefits Month Report" +msgstr "تقرير المستفيدين الشهرى" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__benefit_wiz__report_type__benefit +msgid "Benefits Payment" +msgstr "دفعة المستفيدين" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.benefit_payment_sponsorship_menu_report +msgid "Benefits Payments" +msgstr "دفعات المستفيدين" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.sponsor_report_menu_action +msgid "Benefits Payments Report" +msgstr "تقرير المستفيدين الشهرى" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__benefit_ids +msgid "Benefits Records" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__birth_date +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_share +#, python-format +msgid "Birth Date" +msgstr "تاريخ الميلاد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_blacklisted +msgid "Blacklist" +msgstr "القائمة السوداء" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__mobile_blacklisted +msgid "Blacklisted Phone Is Mobile" +msgstr "الهاتف الذي تم إدراجه في القائمة السوداء هو هاتف محمول" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__phone_blacklisted +msgid "Blacklisted Phone is Phone" +msgstr "الهاتف الذي تم إدراجه في القائمة السوداء هو هاتف" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__benefit_type__both +msgid "Both" +msgstr "كلاهما" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__message_bounce +msgid "Bounce" +msgstr "المرتد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__branch_custom_id +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items__branch_custom_id +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__branch_custom_id +#: model:ir.model.fields,field_description:odex_takaful.field_points_of_sale_custom__branch_custom_ids +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__branch_id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__branch_ids +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__branch_id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__branch_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__branch_custom_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__branch_id +#: model:ir.model.fields,field_description:odex_takaful.field_res_partner__branch_custom_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__branch_custom_id +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +msgid "Branch" +msgstr "الفرع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__manager_id +#: model:res.groups,name:odex_takaful.branch_manager_group +msgid "Branch Manager" +msgstr "مدير الفرع" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_transfer_deduction_wizard__branch_ids +#, python-format +msgid "Branches" +msgstr "الفروع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__l10n_sa_edi_building_number +msgid "Building Number" +msgstr "رقم المبنى" + +#. module: odex_takaful +#: model:res.groups,name:odex_takaful.group_can_activate_sponsor +msgid "Can Activate Inactive Sponsors" +msgstr "إمكانية تفعيل الكفلاء غير النشطين" + +#. module: odex_takaful +#: model:res.groups,comment:odex_takaful.group_can_make_sponsorship_payment +msgid "Can Make Payments For Sponsorships?" +msgstr "هل يمكن إجراء مدفوعات للكفلاء؟" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__can_publish +msgid "Can Publish" +msgstr "بإمكانه النشر" + +#. module: odex_takaful +#: model:res.groups,comment:odex_takaful.group_can_recieve_sponsorship_payment +msgid "Can Recieve Payments For Sponsorships?" +msgstr "هل يمكن الحصول على مدفوعات مقابل الكفالة؟" + +#. module: odex_takaful +#: model:res.groups,comment:odex_takaful.group_show_donation_item_product +msgid "Can Show Donation Item Product?" +msgstr "" + +#. module: odex_takaful +#: model:res.groups,comment:odex_takaful.group_refund_approval +msgid "Can make Approval for refund?" +msgstr "" + +#. module: odex_takaful +#: model:res.groups,comment:odex_takaful.group_can_activate_sponsor +msgid "Can make Sponsor active again?" +msgstr "هل يمكن جعل الكافل نشطًا مرة أخرى؟" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__month_payment__state__cancel +#: model_terms:ir.ui.view,arch_db:odex_takaful.add_benefit_wizard_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.add_details_wizard_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.donation_extension_wizard_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_cancel_wizard_report_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_payment_wizard_report_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.makfuleen_wizard_report_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.refund_wizard_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.sponsor_report_menu_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.sponsorship_cancellation_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.transfer_deduction_wizard_form_view +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_payment_details_wizard_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_replacement_wiz_form +msgid "Cancel" +msgstr "إلغاء" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_cancel_report_pdf +msgid "Cancel Date" +msgstr "تاريخ الإلغاء" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_notification.py:0 +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_notification__notification_type__cancel_kafala +#, python-format +msgid "Cancel Kafala" +msgstr "الغاء الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__cancel_reason +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_cancel_report_pdf +msgid "Cancel Reason" +msgstr "سبب الإلغاء" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_res_config_settings__cancel_refund +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__cancel_refund +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__cancel_refund +msgid "Cancel Refund Time" +msgstr "وقت الإلغاء للإرجاع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_cancel_report_pdf +msgid "Cancel Type" +msgstr "نوع الإلغاء" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_states__name__canceled +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__state__canceled +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_view_search +msgid "Canceled" +msgstr "ملغاة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_cancel_report_pdf +msgid "Canceled Kafalat Count" +msgstr "عدد الكفالات الملغاة" + +#. module: odex_takaful +#: model:ir.actions.report,name:odex_takaful.kafalat_cancel_report_pdf_act +#: model:ir.ui.menu,name:odex_takaful.canceled_kafalat_report_menu +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_cancel_report_pdf +msgid "Canceled Kafalat Report" +msgstr "تقرير الكفالات الملغاه" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.kafalat_cancel_wizard_report_action +msgid "Canceled Kafalat Report Wizard Window" +msgstr "نافذة معالج تقرير الكفالات الملغاه" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__cancel_reason_id +msgid "Cancellation Entry" +msgstr "إدخال الإلغاء" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__reason_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__reason +msgid "Cancellation Reason" +msgstr "سبب الإلغاء" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__cancel_type +msgid "Cancellation Type" +msgstr "نوع الإلغاء" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_cancellation__state__cancel +msgid "Cancelled" +msgstr "ملغي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__cancel_user_id +msgid "Cancelled By" +msgstr "تم الإلغاء بواسطة" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/account_move.py:0 +#, python-format +msgid "" +"Cannot proceed with payment!\n" +"\n" +"The following sponsorship lines contain beneficiaries that are already sponsored by other sponsors:\n" +"Lines: %s\n" +"\n" +"Please choose different beneficiaries for these lines before proceeding with the payment." +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_payment_method__payment_method__card +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__parent_payment_method__card +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Card" +msgstr "شبكة" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_payment_method__payment_method__cash +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__parent_payment_method__cash +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__payment_method__cash +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Cash" +msgstr "نقدي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__certifications_count +msgid "Certifications Count" +msgstr "عدد الشهادات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__channel_ids +msgid "Channels" +msgstr "القنوات" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +#, python-format +msgid "Charity Bank" +msgstr "بنك الجمعية" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_payment_method__payment_method__check +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__parent_payment_method__check +msgid "Check" +msgstr "شيك" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__check_number +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__check_number +msgid "Check Number" +msgstr "رقم الشيك" + +#. module: odex_takaful +#: model:ir.actions.server,name:odex_takaful.scheduler_check_sponsorship_end_date_send_whatsapp_action_ir_actions_server +#: model:ir.cron,cron_name:odex_takaful.scheduler_check_sponsorship_end_date_send_whatsapp_action +#: model:ir.cron,name:odex_takaful.scheduler_check_sponsorship_end_date_send_whatsapp_action +msgid "Check Sponsorship End Date To Send Wahtsapp Message to Sponsor" +msgstr "Check Sponsorship End Date To Send Whatsapp Message to Sponsor" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__is_company +msgid "Check if the contact is a company, otherwise it is a person" +msgstr "فحص ما اذا كانت جهة الاتصال مؤسسة، وإلا كانت شخصًا" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__employee +msgid "Check this box if this contact is an Employee." +msgstr "قم بتحديد هذا المربع إذا كانت جهة الاتصال المختارة موظفًا." + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "Choose Donation Items" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__city +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__city_id +msgid "City" +msgstr "المدينة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Close" +msgstr "إغلاق" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__close_to_be_canceled_date +msgid "Close To Cancel Date" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_states__name__closed +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__state__closed +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_view_search +msgid "Closed" +msgstr "مغلق" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__state__closed +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search + +msgid "Closed" +msgstr "ملغي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__code +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__code +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__code +msgid "Code" +msgstr "الكود" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__color +msgid "Color Index" +msgstr "معرف اللون" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__note +msgid "Comment" +msgstr "تعليق" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__commercial_partner_id +msgid "Commercial Entity" +msgstr "الكيان التجاري" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__commercial_register +msgid "Commercial Register" +msgstr "السجل التجاري" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__ref_company_ids +msgid "Companies that refers to partner" +msgstr "مؤسسات تشير إلي شركاء" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__company_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__company_id +msgid "Company" +msgstr "الشركة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__certifications_company_count +msgid "Company Certifications Count" +msgstr "عدد شهادات الشركة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__company_name +msgid "Company Name" +msgstr "اسم المؤسسة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__commercial_company_name +msgid "Company Name Entity" +msgstr "كيان اسم المؤسسة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__company_type +msgid "Company Type" +msgstr "نوع المؤسسة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__partner_gid +msgid "Company database ID" +msgstr "معرف قاعدة بيانات المؤسسة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__contact_address +msgid "Complete Address" +msgstr "العنوان الكامل" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +msgid "Compute Sponsorships" +msgstr "احتساب الكفالات" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_cancel_wizard_report_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_payment_wizard_report_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.makfuleen_wizard_report_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_payment_details_wizard_form +msgid "Confirm" +msgstr "تاكيد" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Confirm Data" +msgstr "تأكيد البيانات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__confirm_date +msgid "Confirm Date" +msgstr "تاريخ التأكيد" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_replacement_process_form +msgid "Confirm Replacement" +msgstr "تأكيد الإستبدال" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__state__confirmed +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_states__name__confirmed +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__state__confirmed +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_view_search +msgid "Confirmed" +msgstr "مؤكد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__confirm_user_id +msgid "Confirmed By" +msgstr "تم التأكيد بواسطة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__child_ids +msgid "Contact" +msgstr "جهة الاتصال" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__contact_address_complete +msgid "Contact Address Complete" +msgstr "عنوان الاتصال كامل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__contact_person +msgid "Contact person" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__contract_ids +msgid "Contracts" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__contribution_value +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_payment_report_pdf +#, python-format +msgid "Contribution Value" +msgstr "قيمة المساهمة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__total_contribution +msgid "Contributions Total" +msgstr "مجموع المساهمات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__copy_no +msgid "Copy No" +msgstr "رقم النسخه" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__count +msgid "Count" +msgstr "العدد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__payment_token_count +msgid "Count Payment Token" +msgstr "عدد رموز السداد السرية" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__message_bounce +msgid "Counter of the number of bounced emails for this contact" +msgstr "عدد الرسائل المرتدة لجهة الاتصال هذه" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__country_id +msgid "Country" +msgstr "الدولة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__country_code +msgid "Country Code" +msgstr "رمز الدولة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__create_date +msgid "Create Date" +msgstr "تاريخ الإنشاء" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_notification.py:0 +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_notification__notification_type__create_kafala +#, python-format +msgid "Create Kafala" +msgstr "إنشاء الكفالة " + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__month_payment__state__create +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_form +msgid "Create Lines" +msgstr "إنشاء البنود" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Create New Sponsor" +msgstr "إنشاء مشترك جديد" + +#. module: odex_takaful +#: model:ir.actions.server,name:odex_takaful.scheduler_monthly_create_sponsorship_invoice_action_ir_actions_server +#: model:ir.cron,cron_name:odex_takaful.scheduler_monthly_create_sponsorship_invoice_action +#: model:ir.cron,name:odex_takaful.scheduler_monthly_create_sponsorship_invoice_action +msgid "Create Sponsorships Invoices Scheduler" +msgstr "إنشاء جدول فواتير الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__create_uid +msgid "Create Uid" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__user_id +msgid "Create User" +msgstr "المنشئ" + +#. module: odex_takaful +#: model_terms:ir.actions.act_window,help:odex_takaful.donations_items_action +msgid "Create a Donation Item" +msgstr "إنشاء بند التبرع" + +#. module: odex_takaful +#: model_terms:ir.actions.act_window,help:odex_takaful.benefit_month_payment_action +msgid "Create a Month Payment" +msgstr "إنشاء دفعة شهرية" + +#. module: odex_takaful +#: model_terms:ir.actions.act_window,help:odex_takaful.sponsorship_states_action +msgid "Create a Sponsorship States" +msgstr "إنشاء حالات الكفالة" + +#. module: odex_takaful +#: model_terms:ir.actions.act_window,help:odex_takaful.action_sponsorship_scheduling_line +msgid "Create a new Sponsorship Scheduling Line" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.actions.act_window,help:odex_takaful.points_of_sale_custom_action +msgid "Create a points of sale" +msgstr "إنشاء نقاط البيع" + +#. module: odex_takaful +#: model_terms:ir.actions.act_window,help:odex_takaful.benefit_month_payment_line_action +msgid "Create the Month Payment Line" +msgstr "إنشاء بند الدفع الشهري" + +#. module: odex_takaful +#: model_terms:ir.actions.act_window,help:odex_takaful.sponsorship_cancellation_action +msgid "Create the Sponsorship Cancellation" +msgstr "إنشئ عملية إلغاء الكفالة" + +#. module: odex_takaful +#: model_terms:ir.actions.act_window,help:odex_takaful.takaful_sponsorship_payment_action +msgid "Create the Sponsorship Payment" +msgstr "إنشاء دفعة الكفالة" + +#. module: odex_takaful +#: model_terms:ir.actions.act_window,help:odex_takaful.action_replacement_process +msgid "Create your first Replacement Process" +msgstr "أنشئ عملية إستبدال" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_add_details_wiz__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_benefit_wiz__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_donate_for_another_person__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_points_of_sale_custom__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_preferred_communication__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_refund_reasons__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_line__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process_line__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_reasons__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_reason_stop__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_states__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_message_template__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_push_notification__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_kafalat_cancel__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_kafalat_payment__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_makfuleen__create_uid +#: model:ir.model.fields,field_description:odex_takaful.field_transfer_deduction_wizard__create_uid +msgid "Created by" +msgstr "أنشئ بواسطة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_add_details_wiz__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_benefit_wiz__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_donate_for_another_person__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_points_of_sale_custom__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_preferred_communication__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_refund_reasons__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_line__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process_line__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_reasons__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_reason_stop__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_states__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_message_template__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_push_notification__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_kafalat_cancel__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_kafalat_payment__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_makfuleen__create_date +#: model:ir.model.fields,field_description:odex_takaful.field_transfer_deduction_wizard__create_date +msgid "Created on" +msgstr "أنشئ في" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +msgid "Creation Date" +msgstr "تاريخ الإنشاء" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_payment_method__payment_method__credit_card +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__parent_payment_method__credit_card +msgid "Credit Card" +msgstr "بطاقة إئتمان" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__credit_limit +msgid "Credit Limit" +msgstr "حد الائتمان" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__currency_id +msgid "Currency" +msgstr "العملة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard__current_end_date +msgid "Current End Date" +msgstr "تاريخ الانتهاء الحالي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit__overdue_kafalat_amount +msgid "Current Overdue Kafalat Amount" +msgstr "مبلغ الكفالة المستحقة حاليًا" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit__is_active_sponsorship +msgid "Currently Has Sponsorship?" +msgstr "هل يوجد كفالة حاليا؟" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__property_stock_customer +msgid "Customer Location" +msgstr "مكان العميل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__property_payment_term_id +msgid "Customer Payment Terms" +msgstr "شروط السداد للعميل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__customer_rank +msgid "Customer Rank" +msgstr "رتبة العميل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__new_direct_debit +msgid "New Direct Debit" +msgstr "حالة الإستقطاع الجديده" + +#. module: odex_takaful +#: model:ir.actions.server,name:odex_takaful.scheduler_sponsorship_workflow_action_ir_actions_server +#: model:ir.cron,cron_name:odex_takaful.scheduler_sponsorship_workflow_action +#: model:ir.cron,name:odex_takaful.scheduler_sponsorship_workflow_action +msgid "Daily Manage Sponsorship Workflow Scheduler" +msgstr "جدول سير عمل إدارة الكفالة اليومية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__date +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__date +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__date +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__date +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_payment_report_pdf +msgid "Date" +msgstr "التاريخ" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_benefit_wiz__date_from +msgid "Date From" +msgstr "تاريخ البداية" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donation_extension_wizard_form +msgid "Date Information" +msgstr "معلومات التاريخ" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_benefit_wiz__date_to +msgid "Date To" +msgstr "تاريخ النهاية" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/benefit_month_payment_wiz.py:0 +#, python-format +msgid "Date To Should Be Greater Than Date From" +msgstr "يجب أن يكون التاريخ إلى أكبر من التاريخ من" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_scheduling_line__scheduled_date +msgid "Date when the payment should be automatically processed" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__reminder_date_before_receipt +msgid "Days Before Receipt" +msgstr "الايام قبل الاستلام" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__payment_method__deduct +msgid "Deduction" +msgstr "الخصم" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__trust +msgid "Degree of trust you have in this debtor" +msgstr "درجة ثقتكم في هذا المدين" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_points_of_sale_custom__department_name +msgid "Department Name" +msgstr "اسم القسم" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_reason_stop__sequence +msgid "Determine the display order" +msgstr "تحديد ترتيب العرض" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard__direct_debit +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__direct_debit +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__direct_debit +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_payment_method__payment_method__direct_debit +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Direct Debit" +msgstr "إستقطاع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__direct_debit_amount +msgid "Direct Debit Amount" +msgstr "مبلغ الإستقطاع" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +#, python-format +msgid "Direct Debit End" +msgstr "تاريخ نهاية الاستقطاع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__direct_debit_end_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__direct_debit_end_date +msgid "Direct Debit End Date" +msgstr "تاريخ انتهاء الإستقطاع" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +#, python-format +msgid "Direct Debit Start" +msgstr "تاريخ بداية الاستقطاع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__direct_debit_start_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__direct_debit_start_date +msgid "Direct Debit Start Date" +msgstr "تاريخ بداية الإستقطاع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_add_details_wiz__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_benefit_wiz__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_donate_for_another_person__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_points_of_sale_custom__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_preferred_communication__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_refund_reasons__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_line__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process_line__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_reasons__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_benefit_month_payment_bank_sheet__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_benefit_month_payment_report_pdf__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_benefit_month_payment_report_xlsx__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_benefit_payment_report_pdf__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_kafalat_cancel_report_pdf__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_kafalat_payment_report_pdf__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_makfuleen_report_pdf__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_reason_stop__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_states__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_message_template__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_push_notification__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_kafalat_cancel__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_kafalat_payment__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_makfuleen__display_name +#: model:ir.model.fields,field_description:odex_takaful.field_transfer_deduction_wizard__display_name +msgid "Display Name" +msgstr "الاسم المعروض" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__display_type +msgid "Display Type" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__district_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__city_id +msgid "District" +msgstr "الحي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__document_count +msgid "Document Count" +msgstr "عدد المستندات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__donate_for_another_person +msgid "Donate For Another Person" +msgstr "التبرع لشخص آخر" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donation_replacement_log__record_type__donation +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__donation_type__donation +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__donation_types__donation +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__record_type__donation +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_items__donation_type__donation +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_items__donation_types__donation +#: model:ir.model.fields.selection,name:odex_takaful.selection__product_template__donation_category__donation +#: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_process__record_type__donation +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__record_type__donation +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_view_search +msgid "Donation" +msgstr "التبرع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__donation_amount +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items__fixed_donation_amount +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__donation_amount +msgid "Donation Amount" +msgstr "المبلغ" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +#, python-format +msgid "Donation Catalog" +msgstr "كتالوج التبرعات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_product_product__donation_category +#: model:ir.model.fields,field_description:odex_takaful.field_product_template__donation_category +msgid "Donation Category" +msgstr "فئة التبرع" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__donation_date +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +#, python-format +msgid "Donation Date" +msgstr "تاريخ التبرع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_replacement_log__donation_detail_id +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__donation_detail_id +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard__donation_detail_id +msgid "Donation Detail" +msgstr "تفاصيل التبرع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__donation_detail_linked_id +msgid "Donation Detail Linked" +msgstr "تفاصيل التبرع المرتبطة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_family_member__donation_details_count +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.family_member_form_inherit_donation_button +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Donation Details" +msgstr "تفاصيل الكفالة/التبرع المشروط" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/family_member.py:0 +#, python-format +msgid "Donation Details Lines" +msgstr "بنود تفاصيل التبرع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_res_company__donation_ended_sms_template_id +#: model:ir.model.fields,field_description:odex_takaful.field_res_config_settings__donation_ended_sms_template_id +msgid "Donation Ended SMS Template" +msgstr "قالب رسالة SMS انتهاء التبرع" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_donation_extension_history +msgid "Donation Extension History" +msgstr "سجل تمديد التبرع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_res_company__donation_extension_reminder_sms_template_id +#: model:ir.model.fields,field_description:odex_takaful.field_res_config_settings__donation_extension_reminder_sms_template_id +msgid "Donation Extension Reminder SMS Template" +msgstr "قالب رسالة SMS تذكير تمديد التبرع" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_donation_extension_wizard +msgid "Donation Extension Wizard" +msgstr "معالج تمديد التبرع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +msgid "Donation Information" +msgstr "معلومات التبرع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__product_template_id +msgid "Donation Item" +msgstr "بند التبرع" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_donations_items +msgid "Donation Items" +msgstr "بنود التبرع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__donation_mechanism +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__donation_mechanism +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +msgid "Donation Mechanism" +msgstr "صفة التبرع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__product_template_id +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items__name +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +msgid "Donation Name" +msgstr "بند التبرع" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__donation_type +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__donation_types +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items__donation_type +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items__donation_types +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +#, python-format +msgid "Donation Type" +msgstr "نوع التبرع" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/donation_extension_wizard.py:0 +#, python-format +msgid "Donation has been extended for %s month(s) until %s" +msgstr "تم تمديد التبرع لمدة %s شهر (أشهر) حتى %s" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__donations_count +msgid "Donations Count" +msgstr "عدد البنود" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.donations_details_lines_action +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__donations_details_lines +#: model:ir.ui.menu,name:odex_takaful.donations_details_lines_app_menu +msgid "Donations Details Lines" +msgstr "تفاصيل بنود التبرعات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__donations_details_lines_mechanism_ids +msgid "Donations Details Lines Mechanism" +msgstr "التفاصيل" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.donations_items_action +#: model:ir.ui.menu,name:odex_takaful.menu_donations_items +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_items_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_items_tree +msgid "Donations Items" +msgstr "بنود التبرعات" + +#. module: odex_takaful +#: model:res.groups,name:odex_takaful.donation_officer_group +msgid "Donations Officer" +msgstr "موظف نقاط بيع" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__registered_type__donor +msgid "Donor" +msgstr "متبرع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Donor Information" +msgstr "بيانات المتبرع" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__month_payment__state__draft +#: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_process__state__draft +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_cancellation__state__draft +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_payment__state__draft +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_states__name__draft +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsor__state__draft +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__state__draft +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_view_search +msgid "Draft" +msgstr "مسودة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__due_code +msgid "Due Code" +msgstr "الكود المستحق" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__due_date +msgid "Due Date" +msgstr "تاريخ الاستحقاق" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_grant_due_invoice_form +msgid "Due Payment" +msgstr "السداد المستحق" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__due_invoice_ids +msgid "Due Payments" +msgstr "المدفوعات المستحقة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_grant_due_invoice_tree +msgid "Due Payments List" +msgstr "قائمة المدفوعات المستحقة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__editable +msgid "Editable" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__education_institution +msgid "Education Institution" +msgstr "اسم الجهة التعليمية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__education_level_id +msgid "Education Level" +msgstr "المرحلة التعليمية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__education_level +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__education_level +msgid "Education Levels" +msgstr "مستويات التعليم" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__education_status +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__education_status +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__education_status +msgid "Education Status" +msgstr "حالة التعليم" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__education_level +msgid "Educational level" +msgstr "المرحلة التعليمية" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__partner_share +msgid "" +"Either customer (not a user), either shared user. Indicated the current " +"partner is a customer without access or with a limited access created for " +"sharing data." +msgstr "" +"إما العميل (ليس مستخدماً)، إما مستخدم مشتَرَك. يشير إلى أن الشريك الحالي هو " +"عميل بلا صلاحيات وصول أو مع صلاحيات وصول محدودة، تم إنشاؤها لمشاركة " +"البيانات." + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_push_notification__email +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__email +msgid "Email" +msgstr "البريد الإلكتروني" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__employee +msgid "Employee" +msgstr "الموظف" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__employer +msgid "Employer" +msgstr "جهة العمل" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_transfer_deduction_wizard__end_date +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.makfuleen_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +#, python-format +msgid "End Date" +msgstr "تاريخ الانتهاء" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "End Date Must Be More Than Start Date in Months" +msgstr "يجب أن يكون تاريخ النهاية أكبر من تاريخ البدء بالأشهر" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__product_template__donation_category__endowment +msgid "Endowment" +msgstr "وقف" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_states__name__wait_pay +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__state__wait_pay +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_view_search +msgid "Enter Payment Details" +msgstr "قيد الدفع" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_res_config_settings__twilio_from_whatsapp +msgid "" +"Enter a valid phone number including country code. Example: +14155238886" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__entry_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__entry_id +msgid "Entry" +msgstr "دخول" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_event_address +msgid "Event address" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__supporter_status__yes +msgid "Exist" +msgstr "خروج" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__expected_cancel_date +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_payment_report_pdf +msgid "Expected Cancel Date" +msgstr "تاريخ الإلغاء المتوقع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_membership_expire +msgid "Expire Membership" +msgstr "انتهاء العضوية" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donation_extension_wizard_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Extend" +msgstr "تمديد" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +#, python-format +msgid "Extend Donation" +msgstr "تمديد الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__state__extended +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +msgid "Extended" +msgstr "ممددة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__user_id +msgid "Extended By" +msgstr "تم التمديد بواسطة" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_extension_history.py:0 +#, python-format +msgid "Extension" +msgstr "التمديد" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_extension_history.py:0 +#, python-format +msgid "Extension - %s - %s" +msgstr "تمديد - %s - %s" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/donation_extension_wizard.py:0 +#, python-format +msgid "Extension - %s - %s month(s)" +msgstr "تمديد - %s - %s شهر (أشهر)" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__extension_amount +msgid "Extension Amount" +msgstr "مبلغ التمديد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__extension_date +msgid "Extension Date" +msgstr "تاريخ التمديد" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donation_extension_wizard_form +msgid "Extension Details" +msgstr "تفاصيل التمديد" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#: model:ir.actions.act_window,name:odex_takaful.action_donation_extension_history +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__extension_history_ids +#, python-format +msgid "Extension History" +msgstr "سجل التمديد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__invoice_id +msgid "Extension Invoice" +msgstr "فاتورة التمديد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__extension_months +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard__months +msgid "Extension Months" +msgstr "أشهر التمديد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__extension_ref +msgid "Extension Reference" +msgstr "مرجع التمديد" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/donation_extension_wizard.py:0 +#, python-format +msgid "Extension amount must be greater than 0." +msgstr "يجب أن يكون مبلغ التمديد أكبر من 0." + +#. module: odex_takaful +#: model_terms:ir.actions.act_window,help:odex_takaful.action_donation_extension_history +msgid "Extension history will appear here when donations are extended." +msgstr "سيظهر سجل التمديد هنا عند تمديد التبرعات." + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/donation_extension_wizard.py:0 +#, python-format +msgid "Extension months must be greater than 0." +msgstr "يجب أن تكون أشهر التمديد أكبر من 0." + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__extension_count +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +msgid "Extensions" +msgstr "التمديدات" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#: code:addons/odex_takaful/models/replacement_process.py:0 +#: code:addons/odex_takaful/models/replacement_process.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "Failed to send WhatsApp message: %s" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__family_ids +msgid "Families" +msgstr "الاسر المستفيدة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__family_id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__family_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__family_id +msgid "Family" +msgstr "ملف الأسرة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__family_category_ids +msgid "Family Category" +msgstr "فئة الأسرة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_replacement_wiz_form +msgid "Family Info" +msgstr "بيانات الأسر" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__members_ids +msgid "Family Members" +msgstr "أفراد الأسر المستفيدين" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__family_name +msgid "Family Name" +msgstr "اسم الأسرة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__father_family_name +msgid "Father Family Name" +msgstr "اسم عائلة الأب" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__father_name +msgid "Father First Name" +msgstr "الاسم الاول للأب" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__father_second_name +msgid "Father Second Name" +msgstr "الاسم الثاني للأب" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__father_third_name +msgid "Father Third Name" +msgstr "الاسم الثالث للأب" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__gender__female +#: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_wiz__gender__female +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__gender__female +msgid "Female" +msgstr "أنثى" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__phone_sanitized +msgid "" +"Field used to store sanitized phone number. Helps speeding up searches and " +"comparisons." +msgstr "" +"حقل مُستخدَم لتخزين أرقام الهواتف السليمة، مما يساعد على تسريع عمليات البحث " +"والمقارنات." + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponsorship_payment_model.py:0 +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_payment__state__financial +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_payment_form +#, python-format +msgid "Financial" +msgstr "مالى" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_takaful_contribution +msgid "Financial Contribution" +msgstr "المساهمة المالية" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.takaful_financial_contribution_action +msgid "Financial Contributions" +msgstr "المساهمات المالية" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_contribution_tree +msgid "Financial Contributions List" +msgstr "قائمة المساهمات المالية" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__grant_benefit_invoice__operation_type__financial_gift +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_contribution__operation_type__gift +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsor_operation__operation_type__gift +msgid "Financial Gift" +msgstr "هدية مالية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__first_name +msgid "First Name" +msgstr "الاسم الأول" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__property_account_position_id +msgid "Fiscal Position" +msgstr "الموقف الضريبي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__followup_level +msgid "Follow-up Level" +msgstr "مستوى المتابعة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__payment_responsible_id +msgid "Follow-up Responsible" +msgstr "مسئول المتابعة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__followup_status +msgid "Follow-up Status" +msgstr "حالة المتابعة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__message_follower_ids +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__message_follower_ids +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__message_follower_ids +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__message_follower_ids +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__message_follower_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__message_follower_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__message_follower_ids +msgid "Followers" +msgstr "المتابعون" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__message_channel_ids +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__message_channel_ids +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__message_channel_ids +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__message_channel_ids +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__message_channel_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__message_channel_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__message_channel_ids +msgid "Followers (Channels)" +msgstr "المتابعون (القنوات)" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__message_partner_ids +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__message_partner_ids +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__message_partner_ids +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__message_partner_ids +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__message_partner_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__message_partner_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__message_partner_ids +msgid "Followers (Partners)" +msgstr "المتابعون (الشركاء)" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_month_payment__activity_type_icon +#: model:ir.model.fields,help:odex_takaful.field_replacement_process__activity_type_icon +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_cancellation__activity_type_icon +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_payment__activity_type_icon +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__activity_type_icon +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsorship__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "رمز الخط الرائع ، على سبيل المثال FA- المهام" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__payment_option__once +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__payment_option__once +msgid "For Once" +msgstr "لمرة واحدة" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__email_formatted +msgid "Format email address \"Name \"" +msgstr "تنسيق البريد الإلكتروني \"الاسم \"" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__email_formatted +msgid "Formatted Email" +msgstr "البريد الإلكتروني المنسق" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__partner_id +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "From" +msgstr "من" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_line__from_benefit_id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process_line__from_benefit_id +msgid "From Benefit" +msgstr "المستفيد الحالي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_line__from_benefit_ids +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process_line__from_benefit_ids +msgid "From Benefits (Group)" +msgstr "(مجموعة)المستفيدين الحاليين" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_kafalat_cancel__from_date +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_cancel_report_pdf +msgid "From Date" +msgstr "من تاريخ" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_res_config_settings__twilio_from_whatsapp +msgid "From WhatsApp Number" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_notification.py:0 +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_notification__notification_type__full_payment +#, python-format +msgid "Full Payment" +msgstr "دفع كلى" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_scheduling_line__status__fully_refund +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_states__name__fully_refund +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__state__fully_refund +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_view_search +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Fully Refund" +msgstr "إرجاع كامل" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_notification.py:0 +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_notification__notification_type__refund_full_kafala +#, python-format +msgid "Fully Refund Kafala" +msgstr "ارجاع كلى الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__sponsorship_class__fully +msgid "Fully Sponsorship" +msgstr "كفالة كاملة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__gender +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__gender +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__gender +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__gender +msgid "Gender" +msgstr "الجنس" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_contribution__benefit_type__general +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsor_operation__benefit_type__general +msgid "General" +msgstr "عام" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__partner_latitude +msgid "Geo Latitude" +msgstr "خط العرض الجغرافي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__partner_longitude +msgid "Geo Longitude" +msgstr "خط الطول الجغرافي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__date_localization +msgid "Geolocation Date" +msgstr "تاريخ التموضع الجغرافي" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Gifter Information" +msgstr "معلومات مقدم الهدية" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.sponsor_setting_menu +msgid "Global Settings" +msgstr "الإعدادات العامة" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__sponsorship_type__group +#: model:ir.model.fields.selection,name:odex_takaful.selection__grant_benefit_invoice__benefit_target__group +#: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_line__sponsorship_type__group +#: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_process_line__sponsorship_type__group +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__sponsorship_type__group +msgid "Group" +msgstr "إختيار مجموعة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_view_search +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Group By" +msgstr "تجميع حسب" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_base_automation__groups_id +#: model:ir.model.fields,field_description:odex_takaful.field_ir_actions_server__groups_id +#: model:ir.model.fields,field_description:odex_takaful.field_ir_cron__groups_id +msgid "Groups" +msgstr "المجموعات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__has_bank_account +msgid "Has Another Account?" +msgstr "هل لديك حساب آخر؟" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit__has_arrears +msgid "Has Arrears" +msgstr "لديه متأخرات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit__has_kafala_delay +msgid "Has Kafala Delay?" +msgstr "هل تأخرت الكفالة؟" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__has_needs +msgid "Has Needs" +msgstr "لديه احتياجات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__has_delay +msgid "Has Payment Delay?" +msgstr "هل هناك تأخير في الدفع؟" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__has_unreconciled_entries +msgid "Has Unreconciled Entries" +msgstr "يحتوي قيود غير مسواة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__health_status +msgid "Health Status" +msgstr "الحالة الصحية" + +#. module: odex_takaful +#: model:ir.module.category,description:odex_takaful.module_category_kufula +msgid "Helps you manage Kafleen and Kafalat in kufula System" +msgstr "يساعدك على إدارة الكفلاء والكفالات في نظام الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__hide_beneficiary_group +msgid "Hide Beneficiary Group" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__iban +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_share +msgid "IBAN" +msgstr "رقم الآي بان" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__iban +msgid "IBAN / Account Number" +msgstr "رقم الحساب / الآيبان" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_add_details_wiz__id +#: model:ir.model.fields,field_description:odex_takaful.field_benefit_wiz__id +#: model:ir.model.fields,field_description:odex_takaful.field_donate_for_another_person__id +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__id +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard__id +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__id +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items__id +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__id +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__id +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__id +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__id +#: model:ir.model.fields,field_description:odex_takaful.field_points_of_sale_custom__id +#: model:ir.model.fields,field_description:odex_takaful.field_preferred_communication__id +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__id +#: model:ir.model.fields,field_description:odex_takaful.field_refund_reasons__id +#: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz__id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_line__id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process_line__id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_reasons__id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__id +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_benefit_month_payment_bank_sheet__id +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_benefit_month_payment_report_pdf__id +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_benefit_month_payment_report_xlsx__id +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_benefit_payment_report_pdf__id +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_kafalat_cancel_report_pdf__id +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_kafalat_payment_report_pdf__id +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_makfuleen_report_pdf__id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_reason_stop__id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_states__id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_message_template__id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_push_notification__id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_kafalat_cancel__id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_kafalat_payment__id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_makfuleen__id +#: model:ir.model.fields,field_description:odex_takaful.field_transfer_deduction_wizard__id +msgid "ID" +msgstr "المُعرف" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponsor_model.py:0 +#, python-format +msgid "ID number must contain exactly 10 digits." +msgstr "يجب أن يحتوي رقم الهوية على 10 أرقام بالضبط." + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__im_status +msgid "IM Status" +msgstr "حالة المحادثات الفورية" + +#. module: odex_takaful +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#, python-format +msgid "Iban" +msgstr "الآيبان" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__activity_exception_icon +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__activity_exception_icon +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__activity_exception_icon +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__activity_exception_icon +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__activity_exception_icon +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__activity_exception_icon +msgid "Icon" +msgstr "الأيقونة" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_month_payment__activity_exception_icon +#: model:ir.model.fields,help:odex_takaful.field_replacement_process__activity_exception_icon +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_cancellation__activity_exception_icon +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_payment__activity_exception_icon +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__activity_exception_icon +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsorship__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "الأيقونة للإشارة إلى استثناء النشاط" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__id_expiry +msgid "Id Expiry Date" +msgstr "تاريخ انتهاء الهوية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__id_number_attach +msgid "Id Number Attachment" +msgstr "مرفق الهوية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__identification_expiry_date +msgid "Identification Expiry Date" +msgstr "تاريخ انتهاء الهوية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__identification_issue_date +msgid "Identification Issue Date" +msgstr "تاريخ اصدار الهوية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__identification_number +msgid "Identification NUmber" +msgstr "رقم الهوية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__l10n_sa_additional_identification_number +msgid "Identification Number (SA)" +msgstr "رقم التعريف (SA)" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__l10n_sa_additional_identification_scheme +msgid "Identification Scheme" +msgstr "نظام التعريف" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__identification_type +msgid "Identification Type" +msgstr "نوع الهوية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__id_number +msgid "Identity NO" +msgstr "رقم الهوية" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_donations_details_lines__message_needaction +#: model:ir.model.fields,help:odex_takaful.field_donations_details_lines__message_unread +#: model:ir.model.fields,help:odex_takaful.field_month_payment__message_needaction +#: model:ir.model.fields,help:odex_takaful.field_month_payment__message_unread +#: model:ir.model.fields,help:odex_takaful.field_replacement_process__message_needaction +#: model:ir.model.fields,help:odex_takaful.field_replacement_process__message_unread +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_cancellation__message_needaction +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_cancellation__message_unread +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_payment__message_needaction +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_payment__message_unread +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__message_needaction +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__message_unread +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsorship__message_needaction +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsorship__message_unread +msgid "If checked, new messages require your attention." +msgstr "إذا كان محددًا، فهناك رسائل جديدة تحتاج لرؤيتها." + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_donations_details_lines__message_has_error +#: model:ir.model.fields,help:odex_takaful.field_donations_details_lines__message_has_sms_error +#: model:ir.model.fields,help:odex_takaful.field_month_payment__message_has_error +#: model:ir.model.fields,help:odex_takaful.field_month_payment__message_has_sms_error +#: model:ir.model.fields,help:odex_takaful.field_replacement_process__message_has_error +#: model:ir.model.fields,help:odex_takaful.field_replacement_process__message_has_sms_error +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_cancellation__message_has_error +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_cancellation__message_has_sms_error +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_payment__message_has_error +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_payment__message_has_sms_error +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__message_has_error +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__message_has_sms_error +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsorship__message_has_error +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsorship__message_has_sms_error +msgid "If checked, some messages have a delivery error." +msgstr "إذا كان محددًا، فقد حدث خطأ في تسليم بعض الرسائل." + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__team_id +msgid "" +"If set, this Sales Team will be used for sales and assignments related to " +"this partner" +msgstr "" +"إذا كان محدداً، فسوف يُستخدَم فريق المبيعات هذا للمبيعات والتعيينات المتعلقة" +" بهذا الشريك" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__is_blacklisted +msgid "" +"If the email address is on the blacklist, the contact won't receive mass " +"mailing anymore, from any list" +msgstr "" +"إذا كان البريد الإلكتروني في القائمة السوداء، لن يستقبل صاحبه أي مراسلات " +"جماعية من أي قائمة" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__phone_sanitized_blacklisted +msgid "" +"If the sanitized phone number is on the blacklist, the contact won't receive" +" mass mailing sms anymore, from any list" +msgstr "" +"إذا كان رقم الهاتف السليم في القائمة السوداء، لن تستلم جهة الاتصال الرسائل " +"النصية القصيرة الجماعية من أي قائمة بعد الآن" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__image_1920 +msgid "Image" +msgstr "صورة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__image_1024 +msgid "Image 1024" +msgstr "صورة 1024" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__image_128 +msgid "Image 128" +msgstr "صورة 128" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__image_256 +msgid "Image 256" +msgstr "صورة 256" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__image_512 +msgid "Image 512" +msgstr "صورة 512" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.change_status_search +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_takaful_sponsor_form +msgid "Inactive" +msgstr "غير نشط" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__mobile_blacklisted +msgid "" +"Indicates if a blacklisted sanitized phone number is a mobile number. Helps " +"distinguish which number is blacklisted when there is both a " +"mobile and phone field in a model." +msgstr "" +"يشير إلى إذا ما كان رقم الهاتف السليم المدرج في القائمة السوداء أم لا. " +"يساعد في تمييز أي الأرقام تم إدراجها في القائمة السوداء عندما يمون هناك " +"حقلان لرقم الهاتف والهاتف المحمول في إحدى النماذج." + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__phone_blacklisted +msgid "" +"Indicates if a blacklisted sanitized phone number is a phone number. Helps " +"distinguish which number is blacklisted when there is both a " +"mobile and phone field in a model." +msgstr "" +"يشير إلى إذا ما كان رقم الهاتف السليم رقم هاتف أم لا. يساعد في تمييز أي " +"الأرقام تم إدراجها في القائمة السوداء عندما يكون هناك حقلان لرقم الهاتف " +"والهاتف المحمول في أحد النماذج." + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__sponsorship_type__person +#: model:ir.model.fields.selection,name:odex_takaful.selection__grant_benefit_invoice__benefit_target__person +#: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_line__sponsorship_type__person +#: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_process_line__sponsorship_type__person +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__sponsorship_type__person +msgid "Individual" +msgstr "إختيار فرد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__industry_id +msgid "Industry" +msgstr "مجال العمل" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "" +"Invalid From Account of Benefit Payments (Recievable Account), Please " +"configure it" +msgstr "" +"غير صالح من حساب مدفوعات الاستحقاق (حساب مدفوعات العملاء)، يرجى تكوينه" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "Invalid Orphans or Widows account, Please configure it" +msgstr "حساب الأيتام أو الأرامل غير صالح، يرجى تكوينه" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__operation_invoice_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__invoice_warn +msgid "Invoice" +msgstr "فاتورة" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__type +msgid "" +"Invoice & Delivery addresses are used in sales orders. Private addresses are" +" only visible by authorized users." +msgstr "" +"تُستخدم عناوين الفوترة والتوصيل في أوامر البيع. تكون العناوين الخاصة مرئية " +"فقط من قِبَل المستخدمين المصرح لهم." + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_grant_benefit_model.py:0 +#, python-format +msgid "Invoice Ref: " +msgstr "مرجع الفاتورة:" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_donation_extension_history__invoice_id +msgid "Invoice created for this extension" +msgstr "الفاتورة المنشأة لهذا التمديد" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_grant_benefit_invoice +msgid "Invoice for Beneficiaries" +msgstr "فاتورة للمستفيدين" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__invoiced +msgid "Invoiced" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__invoice_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__invoice_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__invoice_count +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +#, python-format +msgid "Invoices" +msgstr "الفواتير" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_affiliate +msgid "Is Affiliate" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_benefit +msgid "Is Benefit" +msgstr "هل هو مستفيد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__is_confirmed +msgid "Is Confirmed" +msgstr "تم التأكيد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__is_donations_coordinator +msgid "Is Donations Coordinator" +msgstr "مسئول التبرعات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_donor +msgid "Is Donor" +msgstr "هل هو متبرع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_family +msgid "Is Family" +msgstr "هل هو أسرة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard__fixed_value +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__fixed_value +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items__fixed_value +#: model:ir.model.fields,field_description:odex_takaful.field_product_product__fixed_value +#: model:ir.model.fields,field_description:odex_takaful.field_product_template__fixed_value +msgid "Is Fixed Value?" +msgstr "هل القيمة ثابتة؟" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__message_is_follower +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__message_is_follower +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__message_is_follower +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__message_is_follower +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__message_is_follower +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__message_is_follower +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__message_is_follower +msgid "Is Follower" +msgstr "متابع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__is_fully_refund +msgid "Is Fully Refund" +msgstr "هل تم استرداد المبلغ بالكامل؟" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__is_gift +msgid "Is Gift To Person" +msgstr "هي هدية للشخص" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__is_invoiced +msgid "Is Invoiced?" +msgstr "هل تم إصدار الفاتورة؟" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_member +msgid "Is Member" +msgstr "عضو" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_office_owner +msgid "Is Office Owner" +msgstr "هل هو مالك مكتب" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__is_paid +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__is_paid +msgid "Is Paid" +msgstr "هل تم الدفع؟" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__is_partial_refund +msgid "Is Partial Refund" +msgstr "هل هناك استرداد جزئي؟" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_benefits_representative__is_partner_sponsor +#: model:ir.model.fields,field_description:odex_takaful.field_external_benefits__is_partner_sponsor +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit__is_partner_sponsor +#: model:ir.model.fields,field_description:odex_takaful.field_res_partner__is_partner_sponsor +#: model:ir.model.fields,field_description:odex_takaful.field_res_users__is_partner_sponsor +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_partner_sponsor +msgid "Is Partner Sponsor" +msgstr "هل هو شريك كافل؟" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_published +msgid "Is Published" +msgstr "تم نشره" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__is_recorded +msgid "Is Recorded In Beneficiaries" +msgstr "هل هو مسجل في المستفيدين" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_account_bank_statement_line__is_refund_sponsorship +#: model:ir.model.fields,field_description:odex_takaful.field_account_move__is_refund_sponsorship +#: model:ir.model.fields,field_description:odex_takaful.field_account_payment__is_refund_sponsorship +#: model:ir.model.fields,field_description:odex_takaful.field_account_payment_register__is_refund_sponsorship +msgid "Is Refund Sponsorship" +msgstr "هل تم الارجاع على الكفالة؟" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_account_payment__is_benefit_registered +msgid "Is Registered To Beneficiary" +msgstr "هل هو مسجل للمستفيد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_sponsor_portal +msgid "Is Sponsor" +msgstr "هل هو كافل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__is_sponsorship_coordinator +msgid "Is Sponsorship Coordinator" +msgstr "هل هو مسئول الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_tenant +msgid "Is Tenant?" +msgstr "هل هو مستأجر؟" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_transaction_entity +msgid "Is Transaction Entity?" +msgstr "جهات المعاملات؟" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_vendor +msgid "Is Vendor" +msgstr "هل هو مورد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_company +msgid "Is a Company" +msgstr "هذه مؤسسة" + +#. module: odex_takaful +#: model:res.groups,comment:odex_takaful.takaful_group_user_sponsor +msgid "Is this user a Sponsor?" +msgstr "هل هذا المستخدم كافل؟" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__user_id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__user_id +msgid "Issued By" +msgstr "تم الإصدار بواسطة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__issuer +msgid "Issuer" +msgstr "جهة الإصدار" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__function +msgid "Job Position" +msgstr "المنصب الوظيفي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__join_date +msgid "Join Date" +msgstr "تاريخ الانضمام" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__journal_id +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__journal_id +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__journal_id +#: model:ir.model.fields,field_description:odex_takaful.field_points_of_sale_custom__journal_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__journal_id +msgid "Journal" +msgstr "دفتر اليومية" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_account_move +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__journal_entry_ids +msgid "Journal Entry" +msgstr "قيد اليومية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__journal_entry_count +msgid "Journal Entry Count" +msgstr "عدد قيود اليومية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__journal_entry_count_vendor +msgid "Journal Entry Count Vendor" +msgstr "" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_account_move_line +msgid "Journal Item" +msgstr "عنصر اليومية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__journal_item_count +msgid "Journal Items" +msgstr "عناصر اليومية" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.menu_replacement_root +msgid "Kafala Processes" +msgstr "عمليات الكفالة" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.kafalat_main_menu +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_takaful_sponsor_form +msgid "Kafalat" +msgstr "كفالات و نقاط بيع" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_takaful_wizard_report_kafalat_cancel +msgid "Kafalat Cancel Report" +msgstr "تقرير إلغاء الكفالات" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_payment_report_pdf +msgid "Kafalat Overdue Count" +msgstr "عدد الكفالات المتأخرة" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.payment_overdue_report_menu +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_payment_report_pdf +msgid "Kafalat Overdue Report" +msgstr "تقرير كفالات المتأخرة" + +#. module: odex_takaful +#: model:ir.actions.report,name:odex_takaful.kafalat_payment_report_pdf_act +#: model:ir.model,name:odex_takaful.model_takaful_wizard_report_kafalat_payment +msgid "Kafalat Payment Report" +msgstr "تقرير مدفوعات الكفالات" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.kafalat_payment_wizard_report_action +msgid "Kafalat Payment Report Wizard Window" +msgstr "نافذة معالج تقرير مدفوعات الكفالات" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.takaful_kufula_app_top_menu +msgid "Kafalat System" +msgstr "كفالة و نقاط بيع" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.kafileen_main_menu +msgid "Kafileen" +msgstr "الكفلاء" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.takaful_settings_menu +msgid "Kufala Global Settings" +msgstr "الإعدادات العامة" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.takaful_app_top_menu +msgid "Kufala Settings" +msgstr "إعدادات الكفالات" + +#. module: odex_takaful +#: model:ir.module.category,name:odex_takaful.module_category_kufula +msgid "Kufula System" +msgstr "نظام الكفلاء ونقاط البيع" + +#. module: odex_takaful +#: model:res.groups,name:odex_takaful.group_kufula_user +msgid "Kufula User" +msgstr "مستخدم الكفالات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__lang +msgid "Language" +msgstr "اللغة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__last_invoice_date +msgid "Last Invoice" +msgstr "آخر فاتورة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_add_details_wiz____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_benefit_wiz____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_donate_for_another_person____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_points_of_sale_custom____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_preferred_communication____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_refund_reasons____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_line____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process_line____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_reasons____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_benefit_month_payment_bank_sheet____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_benefit_month_payment_report_pdf____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_benefit_month_payment_report_xlsx____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_benefit_payment_report_pdf____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_kafalat_cancel_report_pdf____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_kafalat_payment_report_pdf____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_report_odex_takaful_makfuleen_report_pdf____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_reason_stop____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_states____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_message_template____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_push_notification____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_kafalat_cancel____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_kafalat_payment____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_makfuleen____last_update +#: model:ir.model.fields,field_description:odex_takaful.field_transfer_deduction_wizard____last_update +msgid "Last Modified on" +msgstr "آخر تعديل في" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__last_website_so_id +msgid "Last Online Sales Order" +msgstr "أمر المبيعات الإلكتروني الأخير" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_add_details_wiz__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_benefit_wiz__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_donate_for_another_person__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_points_of_sale_custom__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_preferred_communication__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_refund_reasons__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_line__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process_line__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_reasons__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_reason_stop__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_states__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_message_template__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_push_notification__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_kafalat_cancel__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_kafalat_payment__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_makfuleen__write_uid +#: model:ir.model.fields,field_description:odex_takaful.field_transfer_deduction_wizard__write_uid +msgid "Last Updated by" +msgstr "آخر تحديث بواسطة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_add_details_wiz__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_benefit_wiz__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_donate_for_another_person__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_points_of_sale_custom__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_preferred_communication__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_refund_reasons__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_line__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process_line__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_reasons__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_reason_stop__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_states__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_message_template__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_push_notification__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_kafalat_cancel__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_kafalat_payment__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_makfuleen__write_date +#: model:ir.model.fields,field_description:odex_takaful.field_transfer_deduction_wizard__write_date +msgid "Last Updated on" +msgstr "آخر تحديث في" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__calendar_last_notif_ack +msgid "Last notification marked as read from base Calendar" +msgstr "تم تحديد آخر رسالة كمقروءة من التقويم الأساسي" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__last_time_entries_checked +msgid "" +"Last time the invoices & payments matching was performed for this partner. " +"It is set either if there's not at least an unreconciled debit and an " +"unreconciled credit or if you click the \"Done\" button." +msgstr "" +"آخر مرة تم إجراء تسوية بين فواتير ومدفوعات هذا الشريك. يتم تحديد هذا الحقل " +"إذا كان هناك مبلغ مدين غير مسوى ومبلغ دائن غير مسوى أو إذا نقرت زر \"تم\"." + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__last_time_entries_checked +msgid "Latest Invoices & Payments Matching Date" +msgstr "تاريخ آخر مطابقة للفواتير والدفعات" + +#. module: odex_takaful +#: model:res.groups,comment:odex_takaful.group_beneficiary_department_access +msgid "Limits beneficiary records to user's department" +msgstr "" + +#. module: odex_takaful +#: model:res.groups,comment:odex_takaful.group_sponsor_department_access +msgid "Limits sponsor records to user's department" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__line_ids +msgid "Lines" +msgstr "البنود" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_product_template_tree_sponsorship +msgid "Link to Sponsorship" +msgstr "اضافة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__load_amount +msgid "Load Amount Per Person" +msgstr "كمية التحميل للشخص الواحد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__message_main_attachment_id +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__message_main_attachment_id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__message_main_attachment_id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__message_main_attachment_id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__message_main_attachment_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__message_main_attachment_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__message_main_attachment_id +msgid "Main Attachment" +msgstr "المرفق الرئيسي" + +#. module: odex_takaful +#: model:ir.actions.server,name:odex_takaful.activate_sponsor_multi +msgid "Make Active" +msgstr "إجعله نشطا" + +#. module: odex_takaful +#: model:res.groups,name:odex_takaful.group_can_make_sponsorship_payment +msgid "Make Sponsorship Payments" +msgstr "إجراء مدفوعات الكفالة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.makfuleen_report_pdf +msgid "Makfool Name/Makfuleen Names" +msgstr "اسم المستفيد/اسماء المستفيدين" + +#. module: odex_takaful +#: model:ir.actions.report,name:odex_takaful.makfuleen_report_pdf_act +#: model:ir.actions.server,name:odex_takaful.action_makfuleen_report +#: model:ir.ui.menu,name:odex_takaful.makfuleen_report_menu +#: model_terms:ir.ui.view,arch_db:odex_takaful.makfuleen_report_pdf +msgid "Makfuleen Report" +msgstr "تقرير المستفيدين" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_takaful_wizard_report_makfuleen +msgid "Makfuleen Report For Selected Sponsor(s)" +msgstr "تقرير المستفيدين للكافل المختار" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.makfuleen_wizard_report_action +msgid "Makfuleen Report Wizard Window" +msgstr "نافذة معالج تقرير المستفيدين" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__gender__male +#: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_wiz__gender__male +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__gender__male +msgid "Male" +msgstr "ذكر" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_cancellation__cancel_type__user +msgid "Manually" +msgstr "يدويًا" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__marital_status +msgid "Marital Status" +msgstr "الحالة الاجتماعية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__marketer_id +msgid "Marketer" +msgstr "المسوّق" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__max_needs_percent +msgid "Max Needs Percentage" +msgstr "نسبة الاحتياجات القصوى" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__image_medium +msgid "Medium-sized image" +msgstr "صورة متوسطة الحجم" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__meeting_ids +msgid "Meetings" +msgstr "الاجتماعات" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_process__registered_type__member +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__registered_type__member +msgid "Member" +msgstr "عضو" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_family_member +msgid "Member - Profiles" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_replacement_wiz_form +msgid "Member Info" +msgstr "بيانات أفراد الأسرة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__member_id +msgid "Member Name" +msgstr "اسم العضو" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__members_domain_ids +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_line__members_domain_ids +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process_line__members_domain_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__members_domain_ids +msgid "Members Domain" +msgstr "نطاق الأعضاء" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__active_membership_id +msgid "Membership" +msgstr "العضوية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__membership_count +msgid "Membership Count" +msgstr "عدد العضوية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__membrship_no +msgid "Membership Number" +msgstr "رقم العضوية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__memebership_status +msgid "Membership Status" +msgstr "حالة العضوية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__product_id +msgid "Membership Type" +msgstr "نوع العضوية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__membrship_level +msgid "Membrship level" +msgstr "مستوى العضوية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__memebership_end_date +msgid "Memebership End Date" +msgstr "تاريخ نهاية العضوية" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__points_of_sale_custom__department_name__men +msgid "Men" +msgstr "الرجال" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_message_template__body +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_notification__message +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_push_notification__body +msgid "Message" +msgstr "الرسالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__message_has_error +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__message_has_error +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__message_has_error +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__message_has_error +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__message_has_error +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__message_has_error +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__message_has_error +msgid "Message Delivery error" +msgstr "خطأ في تسليم الرسائل" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.takaful_message_template_action +#: model:ir.model,name:odex_takaful.model_takaful_message_template +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_message_template_form +msgid "Message Template" +msgstr "قالب الرسالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__gifter_message +msgid "Message To Gifter" +msgstr "رسالة إلى صاحب الهدية" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.message_type_menu +msgid "Message Types" +msgstr "أنواع الرسائل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__invoice_warn_msg +msgid "Message for Invoice" +msgstr "رسالة للفاتورة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__purchase_warn_msg +msgid "Message for Purchase Order" +msgstr "رسالة لأمر الشراء" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__sale_warn_msg +msgid "Message for Sales Order" +msgstr "رسالة لأمر المبيعات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__picking_warn_msg +msgid "Message for Stock Picking" +msgstr "رسالة لاختيار الأسهم" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__message_ids +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__message_ids +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__message_ids +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__message_ids +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__message_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__message_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__message_ids +#: model_terms:ir.ui.view,arch_db:odex_takaful.inherit_takaful_sponsorship_notification_form +msgid "Messages" +msgstr "الرسائل" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.takaful_message_template_menu +msgid "Messages Templates" +msgstr "قوالب الرسائل" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_message_template_tree +msgid "Messages Templates List" +msgstr "قائمة قوالب الرسائل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__payment_method +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__payment_method +msgid "Method Of Payment" +msgstr "طريقة الدفع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__min_needs_percent +msgid "Min Needs Percentage" +msgstr "نسبة الاحتياجات الدنيا" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__sponsor_phone +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_push_notification__mobile +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__mobile +msgid "Mobile" +msgstr "الهاتف المحمول" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__month_id +msgid "Month" +msgstr "شهر" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_report_pdf +msgid "Month :" +msgstr "شهر:" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__month_code +msgid "Month Code" +msgstr "كود الشهر" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.benefit_month_payment_action +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_line_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_payment_report_pdf +msgid "Month Payment" +msgstr "الدفعة الشهرية" + +#. module: odex_takaful +#: model:ir.actions.report,name:odex_takaful.benefit_month_payment_report_pdf_act +msgid "Month Payment Report" +msgstr "تقرير الدفعات الشهرية" + +#. module: odex_takaful +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#, python-format +msgid "Month Payment Sheet" +msgstr "ورقة الدفعات الشهرية" + +#. module: odex_takaful +#: model:ir.actions.report,name:odex_takaful.benefit_month_payment_share_report_pdf_act +msgid "Month Payments Shares PDF" +msgstr "أسهم الدفعات الشهرية PDF" + +#. module: odex_takaful +#: model:ir.actions.report,name:odex_takaful.benefit_month_payment_report_xlsx_act +msgid "Month Payments Shares Xlsx" +msgstr "أسهم دفعات شهرية XLSX" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__month_amount +msgid "Month Sponsorship Amount" +msgstr "مبلغ الكفالة الشهري" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__month_year +msgid "Month Year" +msgstr "الشهر/ السنة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Month/Year" +msgstr "شهر/سنه" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__payment_option__month +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__payment_option__month +msgid "Monthly" +msgstr "شهرياً" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard__amount +msgid "Monthly Extension Amount" +msgstr "مبلغ التمديد الشهري" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "Move Entries" +msgstr "حركة الإدخالات" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "Moves" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__my_activity_date_deadline +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__my_activity_date_deadline +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__my_activity_date_deadline +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__my_activity_date_deadline +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__my_activity_date_deadline +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "نهاية الوقت المعين للنشاط" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#, python-format +msgid "N/A" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__name +#: model:ir.model.fields,field_description:odex_takaful.field_preferred_communication__name +#: model:ir.model.fields,field_description:odex_takaful.field_refund_reasons__name +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_reasons__name +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__name +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__name +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_line_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_takaful_sponsor_form +msgid "Name" +msgstr "الاسم" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__nationality_id +msgid "Nationality" +msgstr "الجنسية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__need_id +msgid "Need" +msgstr "يحتاج" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__to_renew +msgid "Need To Renew?" +msgstr "هل تحتاج إلى تجديد؟" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__grant_benefit_invoice__operation_type__need_contribution +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_contribution__operation_type__contribution +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsor_operation__operation_type__contribution +msgid "Needs Contribution" +msgstr "يحتاج إلى مساهمة" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_conf.py:0 +#: code:addons/odex_takaful/models/takaful_conf.py:0 +#: code:addons/odex_takaful/models/takaful_month_payment.py:0 +#: code:addons/odex_takaful/models/takaful_month_payment.py:0 +#: code:addons/odex_takaful/models/takaful_month_payment.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "New" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__new_end_date +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard__new_end_date +msgid "New End Date" +msgstr "تاريخ الانتهاء الجديد" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_process__sponsor_donor_type__new_sponsor +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__sponsor_donor_type__new_sponsor +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__sponsor_or_donor_type__new_sponsor +msgid "New Sponsor" +msgstr "مشترك جديد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__payment_next_action_date +msgid "Next Action Date" +msgstr "تاريخ الإجراء التالي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__activity_date_deadline +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__activity_date_deadline +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__activity_date_deadline +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__activity_date_deadline +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__activity_date_deadline +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "الموعد النهائي للنشاط التالي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__activity_summary +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__activity_summary +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__activity_summary +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__activity_summary +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__activity_summary +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__activity_summary +msgid "Next Activity Summary" +msgstr "ملخص النشاط التالي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__activity_type_id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__activity_type_id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__activity_type_id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__activity_type_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__activity_type_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__activity_type_id +msgid "Next Activity Type" +msgstr "نوع النشاط التالي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__next_due_date +msgid "Next Payment Date" +msgstr "تاريخ الدفع القادم" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__is_gift__no +msgid "No" +msgstr "لا" + +#. module: odex_takaful +#: model_terms:ir.actions.act_window,help:odex_takaful.takaful_financial_contribution_action +msgid "No Any Financial Contribution!" +msgstr "لا يوجد أي مساهمة مالية!" + +#. module: odex_takaful +#: model_terms:ir.actions.act_window,help:odex_takaful.takaful_sponsor_operation_action +msgid "No Any Sponsor Operations" +msgstr "لا يوجد أي عمليات كفالة" + +#. module: odex_takaful +#: model_terms:ir.actions.act_window,help:odex_takaful.sponsorship_benefit_arrears_action +msgid "No Any Sponsorships Arrears" +msgstr "لا يوجد أي متأخرات في الكفالة" + +#. module: odex_takaful +#: model_terms:ir.actions.act_window,help:odex_takaful.benefit_grant_due_invoice_action +msgid "No Due Payments for Beneficiaries" +msgstr "لا توجد مدفوعات مستحقة للمستفيدين" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_contribution_model.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "No Journal for Sponsorships, Please configure it" +msgstr "لا يوجد يومية للكفالات، يرجى تكوينها" + +#. module: odex_takaful +#: model_terms:ir.actions.act_window,help:odex_takaful.takaful_message_template_action +msgid "No Message Template" +msgstr "لا يوجد قالب رسالة" + +#. module: odex_takaful +#: model_terms:ir.actions.act_window,help:odex_takaful.takaful_push_notification_action +msgid "No Notification Messege" +msgstr "لا توجد رسالة إشعار" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "No Whatsapp notification of type 'Create Kafala' found." +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#, python-format +msgid "No data found for the selected criteria." +msgstr "لم يتم العثور على بيانات للمعايير المختارة." + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/donation_extension_wizard.py:0 +#, python-format +msgid "No donation detail line selected." +msgstr "لم يتم تحديد بند تفاصيل التبرع." + +#. module: odex_takaful +#: model_terms:ir.actions.act_window,help:odex_takaful.action_donation_extension_history +msgid "No extension history found" +msgstr "لم يتم العثور على سجل تمديد" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "No fiscal year periods in this date." +msgstr "لا توجد فترات سنة مالية في هذا التاريخ." + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "No invoice found for this sponsorship." +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#, python-format +msgid "No message found in 'Before Kafala End Date' notification." +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "No message found in 'Create Kafala' notification." +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "No notification of type 'Create Kafala' found." +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#, python-format +msgid "No notification of type Before Kafala End Date found." +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +msgid "No sponsorship scheduling lines found for the selected criteria." +msgstr "لم يتم العثور على جدولة الكفالات للمعايير المختارة." + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__email_normalized +msgid "Normalized Email" +msgstr "البريد الإلكتروني العادي" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__supporter_status__no +msgid "Not Exist" +msgstr "غير موجود" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__sponsor_or_donor_type__not_registered +msgid "Not Registered" +msgstr "غير مسجل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donate_for_another_person__note +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__name +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__note +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__display_type__line_note +msgid "Note" +msgstr "ملاحظة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__note +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__note +msgid "Note/Message" +msgstr "ملاحظة/رسالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__notes +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__comment +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_cancel_report_pdf +msgid "Notes" +msgstr "الملاحظات" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_push_notification.py:0 +#, python-format +msgid "Notification" +msgstr "الإشعار" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.takaful_push_notification_action +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_push_notification_form +msgid "Notification Message" +msgstr "رسالة الإشعار" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_notification__name +msgid "Notification Name" +msgstr "إسم الإشعار" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_notification__notification_state_ids +msgid "Notification State" +msgstr "حالات الإشعار" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_notification__notification_type +msgid "Notification Type" +msgstr "نوع الإشعار" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.takaful_notification_menu +msgid "Notifications" +msgstr "الإشعارات" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_push_notification_tree +msgid "Notifications Messages List" +msgstr "قائمة رسائل الإشعارات" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_takaful_notification +msgid "Notifications for Takaful Settings" +msgstr "التنبيهات الخاصة بإعدادات نظام تكافل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__notify_by_app +msgid "Notify By App" +msgstr "الإشعار عن طريق التطبيق" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__notify_by_sms +msgid "Notify By SMS" +msgstr "الإخطار عن طريق الرسائل النصية القصيرة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__notify_month_day +msgid "Notify Month Day" +msgstr "الإخطار بالشهر واليوم" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_report_pdf +msgid "Number :" +msgstr "رقم :" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__message_needaction_counter +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__message_needaction_counter +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__message_needaction_counter +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__message_needaction_counter +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__message_needaction_counter +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__message_needaction_counter +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__message_needaction_counter +msgid "Number of Actions" +msgstr "عدد الإجراءات" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__reminder_date_before_receipt +msgid "Number of days to send reminder email before the promised receipt date" +msgstr "عدد الأيام لإرسال بريد إلكتروني للتذكير قبل تاريخ الإيصال المحدد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__message_has_error_counter +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__message_has_error_counter +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__message_has_error_counter +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__message_has_error_counter +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__message_has_error_counter +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__message_has_error_counter +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__message_has_error_counter +msgid "Number of errors" +msgstr "عدد الاخطاء" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__event_count +msgid "Number of events the partner has participated." +msgstr "عدد الفعاليات التي شارك بها الشريك." + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_donations_details_lines__message_needaction_counter +#: model:ir.model.fields,help:odex_takaful.field_month_payment__message_needaction_counter +#: model:ir.model.fields,help:odex_takaful.field_replacement_process__message_needaction_counter +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_cancellation__message_needaction_counter +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_payment__message_needaction_counter +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__message_needaction_counter +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsorship__message_needaction_counter +msgid "Number of messages which requires an action" +msgstr "عدد الرسائل التي تتطلب إجراء" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_donations_details_lines__message_has_error_counter +#: model:ir.model.fields,help:odex_takaful.field_month_payment__message_has_error_counter +#: model:ir.model.fields,help:odex_takaful.field_replacement_process__message_has_error_counter +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_cancellation__message_has_error_counter +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_payment__message_has_error_counter +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__message_has_error_counter +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsorship__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "عدد الرسائل الحادث بها خطأ في التسليم" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_donation_extension_wizard__months +msgid "Number of months to extend" +msgstr "عدد الأشهر للتمديد" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_donations_details_lines__message_unread_counter +#: model:ir.model.fields,help:odex_takaful.field_month_payment__message_unread_counter +#: model:ir.model.fields,help:odex_takaful.field_replacement_process__message_unread_counter +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_cancellation__message_unread_counter +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_payment__message_unread_counter +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__message_unread_counter +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsorship__message_unread_counter +msgid "Number of unread messages" +msgstr "عدد الرسائل الجديدة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__old_end_date +msgid "Old End Date" +msgstr "تاريخ الانتهاء السابق" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__on_time_rate +msgid "On-Time Delivery Rate" +msgstr "نسبة التوصيل في الوقت المحدد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__operation_id +msgid "Operation" +msgstr "عملية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__operation_code +msgid "Operation Code" +msgstr "رمز العملية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__name +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__name +msgid "Operation Name" +msgstr "إسم العملية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__operation_on +msgid "Operation Time" +msgstr "وقت العملية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__title +msgid "Operation Title" +msgstr "عنوان العملية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__operation_type +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__operation_type +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__operation_type +msgid "Operation Type" +msgstr "نوع العملية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__opportunity_ids +msgid "Opportunities" +msgstr "الفرص" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__opportunity_count +msgid "Opportunity" +msgstr "فرصة" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__payment_responsible_id +msgid "" +"Optionally you can assign a user to this field, which will make him " +"responsible for the action." +msgstr "" +"يمكنك اختياريًا إسناد مستخدم لهذا الحقل، وجعله مسئولًا عن هذا الإجراء." + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_organizer +msgid "Organizer" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__origin_id +msgid "Origin" +msgstr "المصدر" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.menu_replacement_process +#: model:res.groups,comment:odex_takaful.group_orphan_replacement +#: model:res.groups,name:odex_takaful.group_orphan_replacement +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Orphan Replacement" +msgstr "إستبدال مستفيد" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__benefit_type__orphan +#: model:ir.model.fields.selection,name:odex_takaful.selection__grant_benefit_invoice__benefit_type__orphan +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_contribution__benefit_type__orphan +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsor_operation__benefit_type__orphan +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__benefit_type__orphan +msgid "Orphans" +msgstr "الأيتام" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Orphans List" +msgstr "قائمة الأيتام" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__with_orphan_ids +msgid "Orphans Names Of Widow" +msgstr "أسماء أيتام الأرامل" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Orphans and Widows List" +msgstr "قائمة الأيتام والأرامل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__other_id_type +msgid "Other ID" +msgstr "معرف آخر" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__on_time_rate +msgid "" +"Over the past x days; the number of products received on time divided by the" +" number of ordered products.x is either the System Parameter " +"purchase_stock.on_time_delivery_days or the default 365" +msgstr "" +"على مدار الأيام x الماضية؛ عدد المنتجات التي تم استلامها في الوقت المحدد " +"مقسومًا على عدد المنتجات المطلوبة.x هو إما معلمة النظام " +"purchase_stock.on_time_delivery_days أو 365 الافتراضي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__overdue_amount +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_payment_report_pdf +msgid "Overdue Amount" +msgstr "المبلغ المتأخر" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "Overdue Amount:" +msgstr "المبلغ المتأخر:" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__due_days +msgid "Overdue in Days" +msgstr "متأخرة بالأيام" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "Overdue in Sponsorships Payment of Total %s" +msgstr "متأخر في سداد الكفالة بنسبة إجمالية %s" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__month_payment__state__paid +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_payment__state__paid +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_scheduling_line__status__paid +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_states__name__paid +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__state__paid +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_view_search +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Paid" +msgstr "تم الدفع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__paid_amount +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__paid_amount +msgid "Paid Amount" +msgstr "المبلغ المدفوع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__paid_month_count +msgid "Paid Months Count" +msgstr "عدد الأشهر المدفوعة" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_grant_benefit_model.py:0 +#, python-format +msgid "Paid Value: " +msgstr "القيمة المدفوعة:" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__parent_payment_method +msgid "Parent Payment Method" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__parent_state +msgid "Parent State" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__parent_name +msgid "Parent name" +msgstr "اسم الأساس" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_notification.py:0 +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_notification__notification_type__partial_payment +#, python-format +msgid "Partial Payment" +msgstr "دفع جزئى" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_scheduling_line__status__partial_refund +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_states__name__partial_refund +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__state__partial_refund +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_view_search +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Partial Refund" +msgstr "الارجاع الجزئى" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__sponsorship_class__partial +msgid "Partial Sponsorship" +msgstr "كفالة جزئية" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_notification.py:0 +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_notification__notification_type__refund_partial_kafala +#, python-format +msgid "Partially refund Kafala" +msgstr "ارجاع جزئى الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__partner_id +msgid "Partner" +msgstr "الشريك" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__parnter_referencen +msgid "Partner Reference" +msgstr "مرجع الشريك" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__same_vat_partner_id +msgid "Partner with same Tax ID" +msgstr "شريك لديه نفس المعرف الضريبي" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__sponsor_partner_id +msgid "Partner-related data of the user" +msgstr "بيانات المستخدم المتعلقة بالشريك" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +msgid "Pay" +msgstr "إدفع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Pay All Sponsorships" +msgstr "دفع جميع التبرعات" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_form +msgid "Pay Notify" +msgstr "اشعار الدفع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__debit_limit +msgid "Payable Limit" +msgstr "حدود الدين المستحق" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__notify_for_pay +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__notify_pay_by_app +msgid "Paying Notify By App" +msgstr "إشعار الدفع عن طريق التطبيق" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__notify_pay_by_sms +msgid "Paying Notify By SMS" +msgstr "إشعار الدفع عن طريق الرسائل النصية القصيرة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_account_bank_statement_line__payment_id +#: model:ir.model.fields,field_description:odex_takaful.field_account_move__payment_id +#: model:ir.model.fields,field_description:odex_takaful.field_account_payment__payment_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__payment_ids +msgid "Payment" +msgstr "دفعة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__payment_attachment +msgid "Payment Attachment" +msgstr "مرفق الدفع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_payment_report_pdf +msgid "Payment Code" +msgstr "كود الدفع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__payment_date +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__payment_date +msgid "Payment Date" +msgstr "تاريخ الدفع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_payment_details_wizard_form +msgid "Payment Details" +msgstr "تفاصيل المدفوعات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_account_bank_statement_line__payment_details_line +#: model:ir.model.fields,field_description:odex_takaful.field_account_move__payment_details_line +#: model:ir.model.fields,field_description:odex_takaful.field_account_payment__payment_details_line +msgid "Payment Details Line" +msgstr "بند تفاصيل الدفع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__payment_details_line +#: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz__payment_details_line +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__payment_details_lines +msgid "Payment Details Lines" +msgstr "تفاصيل الدفعية " + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.sponsorship_benefit_arrears_form +msgid "Payment Information" +msgstr "معلومات الدفع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__invoice_ids +msgid "Payment Invoices" +msgstr "فواتير المدفوعات" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_add_details_wiz__payment_method_id +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__payment_method +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__payment_method_id +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items__payment_method_id +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__payment_method +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__payment_method_id +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__payment_method +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__payment_method_id +#: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz__payment_method +#: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz__payment_method_id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__payment_method +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__payment_method +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__parent_payment_method_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__payment_journal_id +#: model:ir.model.fields,field_description:odex_takaful.field_transfer_deduction_wizard__payment_method_id +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +#, python-format +msgid "Payment Method" +msgstr "طريقة الدفع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__payment_month_count +msgid "Payment Month Count" +msgstr "عدد الأشهر" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#, python-format +msgid "Payment Month Count Must be Bigger than zero!" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#, python-format +msgid "Payment Month Count should be greather than zero!" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponsorship_payment_model.py:0 +#, python-format +msgid "Payment Month Number should be at least for one month" +msgstr "يجب أن يكون رقم شهر الدفع لمدة شهر واحد على الأقل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__payment_option +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__payment_option +msgid "Payment Option" +msgstr "خيار الدفع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__payment_token_ids +msgid "Payment Tokens" +msgstr "رموز السداد السرية" + +#. module: odex_takaful +#: model:ir.actions.report,name:odex_takaful.action_payment_voucher_report +msgid "Payment Voucher Report" +msgstr "تقرير قسيمة الدفع" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/account_move.py:0 +#: code:addons/odex_takaful/models/takaful_month_payment.py:0 +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_form +#, python-format +msgid "Payments" +msgstr "الدفعات" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_sponsorship_payment +msgid "Payments for Sponsorship system in Takaful project" +msgstr "مدفوعات نظام الكفالة في مشروع الكفلاء" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_payment_tree +msgid "Payments List" +msgstr "قائمة المدفوعات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__pending_amt +msgid "Pending Amount" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__period_code +msgid "Period Code" +msgstr "رمز الفترة" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__sponsorship_duration__permanent +#: model:ir.model.fields.selection,name:odex_takaful.selection__product_template__sponsorship_duration__permanent +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__sponsorship_duration__permanent +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +msgid "Permanent" +msgstr "دائمة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__phone +msgid "Phone" +msgstr "رقم الهاتف" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__phone_sanitized_blacklisted +msgid "Phone Blacklisted" +msgstr "تمت إضافة رقم الهاتف إلى القائمة السوداء" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__plan_to_change_car +msgid "Plan To Change Car" +msgstr "خطة لتغيير السيارة" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "Please Select End Date" +msgstr "الرجاء تحديد تاريخ النهاية" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "Please add at least one line in donation details!" +msgstr "يرجى إضافة بند واحد على الأقل في تفاصيل التبرع!" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "Please define the payment method for each line!" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__l10n_sa_edi_plot_identification +msgid "Plot Identification" +msgstr "رقم القطعة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__points_of_sale +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__points_of_sale +msgid "Point OF sale" +msgstr "نقطة البيع" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.points_of_sale_custom_action +#: model:ir.model,name:odex_takaful.model_points_of_sale_custom +msgid "Points Of Sale Custom" +msgstr "نقاط البيع المخصصة" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.menu_points_of_sale_custom +msgid "Points of Sale" +msgstr "نقاط البيع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.points_of_sale_custom_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.points_of_sale_custom_tree +msgid "Points of sale custom" +msgstr "نقاط البيع المخصصة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__pos_order_ids +msgid "Pos Order" +msgstr "طلب نقطة البيع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__pos_order_count +msgid "Pos Order Count" +msgstr "عدد أوامر نقطة البيع" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.action_preferred_communication +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__preferred_communication +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__preferred_communication +#: model:ir.model.fields,field_description:odex_takaful.field_res_partner__preferred_communication +#: model:ir.ui.menu,name:odex_takaful.menu_preferred_communication +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_preferred_communication_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_preferred_communication_tree +msgid "Preferred Communication" +msgstr "طرق التواصل المفضله" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_product_template_tree_sponsorship +msgid "Price" +msgstr "السعر" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__property_product_pricelist +msgid "Pricelist" +msgstr "قائمه الأسعار" + +#. module: odex_takaful +#: model:ir.actions.report,name:odex_takaful.benefit_month_payment_bank_Sheet_act +msgid "Print Bank Sheet" +msgstr "طباعة ورقة البنك" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.transfer_deduction_wizard_form_view +msgid "Print Excel" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.sponsor_report_menu_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.transfer_deduction_wizard_form_view +msgid "Print PDF" +msgstr "طباعة PDF" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_cancel_wizard_report_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_payment_wizard_report_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.makfuleen_wizard_report_form +msgid "Print The Report" +msgstr "طباعة التقرير" + +#. module: odex_takaful +#: model:ir.actions.server,name:odex_takaful.scheduler_process_scheduled_payments_action_ir_actions_server +#: model:ir.cron,cron_name:odex_takaful.scheduler_process_scheduled_payments_action +#: model:ir.cron,name:odex_takaful.scheduler_process_scheduled_payments_action +msgid "Process Scheduled Payments Daily" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__product_id +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items__product_id +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +msgid "Product" +msgstr "المنتج" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_product_template +msgid "Product Template" +msgstr "قالب المنتج" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_product_template_tree_sponsorship +msgid "Products" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__affiliate_program_id +msgid "Program" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__purchase_contract_count +msgid "Purchase Contracts" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__purchase_line_ids +msgid "Purchase Lines" +msgstr "بنود الشراء" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__purchase_warn +msgid "Purchase Order" +msgstr "أمر شراء" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__purchase_order_count +msgid "Purchase Order Count" +msgstr "عدد أوامر الشراء" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_takaful_push_notification +msgid "Push Notification" +msgstr "دفع الإخطار" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_reason_stop__name +msgid "Reason" +msgstr "السبب" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__reason +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__reason +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__reason +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__reason +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__reason +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__reason +msgid "Reason/Justification" +msgstr "السببظ المبرر" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.sponsorship_stop_reason_menu +msgid "Reasons To Stop" +msgstr "أسباب الإلغاء" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__receipt_reminder_email +msgid "Receipt Reminder" +msgstr "تذكير الإيصال" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donate_for_another_person__receive_messages +msgid "Receive messages?" +msgstr "هل تتلقى رسائل؟" + +#. module: odex_takaful +#: model:res.groups,name:odex_takaful.group_can_recieve_sponsorship_payment +msgid "Recieve Sponsorship Payments" +msgstr "تلقي مدفوعات الكفالة" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_month_payment.py:0 +#, python-format +msgid "Recieving Money" +msgstr "استلام الأموال" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__record_type +#: model:ir.model.fields,field_description:odex_takaful.field_donation_replacement_log__record_type +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__record_type +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__record_type +msgid "Record Type" +msgstr "نوع السجل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__name +msgid "Ref." +msgstr "المرجع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__ref +msgid "Reference" +msgstr "رقم الإشارة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__journal_id +#: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz__journal_id +msgid "Refund Account Journal" +msgstr "يومية الإرجاع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Refund All" +msgstr "إرجاع جميع المدفوعات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__refund_amount +#: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz__refund_amount +msgid "Refund Amount" +msgstr "مبلغ الإرجاع " + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/refund_payment_wizard.py:0 +#, python-format +msgid "Refund Amount should be less or equal %s" +msgstr "يجب أن يكون مبلغ الإرجاع أقل أو يساوي %s" + +#. module: odex_takaful +#: model:res.groups,name:odex_takaful.group_refund_approval +msgid "Refund Approval" +msgstr "موافقة الإرجاع" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/refund_payment_wizard.py:0 +#, python-format +msgid "Refund Attachment is required." +msgstr "مطلوب مرفق للإرجاع." + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_settings_view2 +msgid "Refund Cancel Time" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__refund_date +#: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz__refund_date +msgid "Refund Date" +msgstr "تاريخ الإرجاع" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_refund_details_lines +msgid "Refund Destails Lines" +msgstr "تفاصيل الإرجاع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Refund Details" +msgstr "تفاصيل الإرجاع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__refund_details_lines_ids +msgid "Refund Details Lines" +msgstr "تفاصيل الإرجاع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Refund Invoices" +msgstr "فاتورة الإرجاع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__refund_payment_count +msgid "Refund Payment Count" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Refund Payments" +msgstr "مبلغ الإرجاع" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_refund_reasons +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__refund_reason +#: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz__refund_reason +msgid "Refund Reason" +msgstr "سبب الإرجاع" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_add_details_wiz +#: model:ir.model,name:odex_takaful.model_refund_wiz +#: model:ir.model,name:odex_takaful.model_replacement_wiz +msgid "Refund Wizard" +msgstr "معالج الإرجاع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__refunded_amount +msgid "Refunded Amount" +msgstr "المبلغ المسترد" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_form +msgid "Refuse" +msgstr "مرفوض" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__month_payment__state__refused +msgid "Refused" +msgstr "مرفوض" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: model:ir.model,name:odex_takaful.model_account_payment_register +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_tree +#, python-format +msgid "Register Payment" +msgstr "تسجيل دفعة" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_process__sponsor_donor_type__registered +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__sponsor_donor_type__registered +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__sponsor_or_donor_type__registered +msgid "Registered" +msgstr "مشترك بالنظام" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__registered_type +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__registered_type +msgid "Registered Type" +msgstr "نوع الإشتراك (كافل)" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__related_benefits_count +msgid "Related Benefits Count" +msgstr "عدد المستفيدين المرتبطين" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__parent_id +msgid "Related Company" +msgstr "مؤسسة متعلقة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__related_move_lines_records_count +msgid "Related Move Lines Records Count" +msgstr "عدد سجلات بنود الحركات ذات الصلة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__related_move_records_count +msgid "Related Move Records Count" +msgstr "عدد سجلات الحركات ذات الصلة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__user_id +msgid "Related User" +msgstr "المستخدم المرتبط" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__remaining_amount +msgid "Remaining Amount" +msgstr "المبلغ المتبقى" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__arrears_amount +msgid "Remine Arrears Amount" +msgstr "إعادة تذكير مبلغ المتأخرات" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#, python-format +msgid "Removed: %s" +msgstr "" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_res_partner +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_renter +msgid "Renter" +msgstr "المستأجر" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_replacement_wiz_form +msgid "Replace" +msgstr "إستبدال" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_notification.py:0 +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_notification__notification_type__replace_orphan +#, python-format +msgid "Replace Orphan / Widow" +msgstr "استبدال يتيم/ارملة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_family_member__replaced +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit__replaced +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__replaced +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__replaced +#: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_process__state__replaced +msgid "Replaced" +msgstr "تم الإستبدال" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__replacement_id +msgid "Replacement" +msgstr "الإستبدال" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_states__name__replacement_done +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__state__replacement_done +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_view_search +msgid "Replacement Done" +msgstr "تم الإستبدال" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_replacement_line +msgid "Replacement Line" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__replacement_line_ids +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__replacement_line_ids +msgid "Replacement Lines" +msgstr "إستبدال المستفيدين" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_replacement_process +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_replacement_process_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_replacement_process_tree +msgid "Replacement Process" +msgstr "عملية الإستبدال" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_replacement_process_line +msgid "Replacement ProcessLine" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: model:ir.actions.act_window,name:odex_takaful.action_replacement_process +#: model_terms:ir.ui.view,arch_db:odex_takaful.inherit_grant_benefit_form_add_replaced +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +#, python-format +msgid "Replacement Processes" +msgstr "عمليات الإستبدال" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_replacement_log__replacement_reason_id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__replacement_reason_id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__replacement_reason_id +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_replacement_wiz_form +msgid "Replacement Reason" +msgstr "سبب الإستبدال" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.action_replacement_reasons +#: model:ir.model,name:odex_takaful.model_replacement_reasons +#: model:ir.ui.menu,name:odex_takaful.menu_replacement_reasons +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_replacement_reasons_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_replacement_reasons_tree +msgid "Replacement Reasons" +msgstr "أسباب الإستبدال" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__code +msgid "Replacement Reference" +msgstr "مرجع الإستبدال" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.action_replacement_wiz_window +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_replacement_wiz_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_replacement_wiz_tree +msgid "Replacement Wizard" +msgstr "عملية الإستبدال" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#, python-format +msgid "Report" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#, python-format +msgid "Report Data" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_benefit_wiz__report_type +msgid "Report Type" +msgstr "نوع التقرير" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#, python-format +msgid "Report action '%s' is not a valid QWeb-PDF report." +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#, python-format +msgid "Report action '%s' not found." +msgstr "" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.sponsor_report_menu +msgid "Reports" +msgstr "التقارير" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_res_company +msgid "Res Company SMS Configuration" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__responsible_id +msgid "Responsible Benefit" +msgstr "المستفيد المسئول" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__responsible_user_ids +#: model:ir.model.fields,field_description:odex_takaful.field_res_partner__responsible_user_ids +msgid "Responsible Employees" +msgstr "الموظفون المسئولون" + +#. module: odex_takaful +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_share +#, python-format +msgid "Responsible ID Number" +msgstr "رقم هوية المسؤول" + +#. module: odex_takaful +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_share +#, python-format +msgid "Responsible Name" +msgstr "اسم المسؤول" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__partner_id +msgid "Responsible Partner" +msgstr "شريك المسئول" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__activity_user_id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__activity_user_id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__activity_user_id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__activity_user_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__activity_user_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__activity_user_id +msgid "Responsible User" +msgstr "المستخدم المسؤول" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__website_id +msgid "Restrict publishing to this website." +msgstr "قصر إمكانية النشر على هذا الموقع." + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__sa_iban +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__sa_iban +msgid "SA" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_seo_optimized +msgid "SEO optimized" +msgstr "تم تحسين محركات البحث" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__message_has_sms_error +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__message_has_sms_error +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__message_has_sms_error +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__message_has_sms_error +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__message_has_sms_error +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__message_has_sms_error +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__message_has_sms_error +msgid "SMS Delivery error" +msgstr "خطأ في تسليم الرسائل القصيرة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_settings_view2 +msgid "SMS Templates" +msgstr "قوالب الرسائل النصيه" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__sale_contract_count +msgid "Sale Contracts" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__sale_order_count +msgid "Sale Order Count" +msgstr "عدد أوامر البيع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__sale_order_ids +msgid "Sales Order" +msgstr "أمر البيع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__team_id +msgid "Sales Team" +msgstr "فريق المبيعات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__sale_warn +msgid "Sales Warnings" +msgstr "تحذيرات المبيعات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__phone_sanitized +msgid "Sanitized Number" +msgstr "رقم هاتف سليم" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__sponsorship_scheduling_line +#: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz__sponsorship_scheduling_line +msgid "Schedule Details Lines" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__scheduled_date +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Scheduled Date" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Scheduled This Week" +msgstr "يدفع هذا الاسبوع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Scheduled Today" +msgstr "يدفع اليوم" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__sponsorship_scheduling_ref +msgid "Scheduling Sequences" +msgstr "تسلسلات الجدولة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +msgid "Search Donation Details Lines" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Search Sponsorship Scheduling Lines" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__second_name +msgid "Second Name" +msgstr "الاسم الثاني" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__display_type__line_section +msgid "Section" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_push_notification__is_read +msgid "Seen" +msgstr "مرئي" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/orphan_replacement_wizard.py:0 +#, python-format +msgid "Select Branch First !" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#, python-format +msgid "Selected Criteria" +msgstr "المعايير المختارة" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__invoice_warn +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__picking_warn +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__purchase_warn +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__sale_warn +msgid "" +"Selecting the \"Warning\" option will notify user with the message, " +"Selecting \"Blocking Message\" will throw an exception with the message and " +"block the flow. The Message has to be written in the next field." +msgstr "" +"اختيار الخيار \"تحذير\" سوف يخطر المستخدم مع الرسالة، واختيار \"حجب رسالة\" " +"سيظهر رسالة خطأ مع الرسالة ويوقف التدفق. يجب كتابة الرسالة في الحقل التالي." + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__self +msgid "Self" +msgstr "نفس" + +#. module: odex_takaful +#: model:ir.actions.server,name:odex_takaful.scheduler_direct_debit_end_date_reminders_ir_actions_server +#: model:ir.cron,cron_name:odex_takaful.scheduler_direct_debit_end_date_reminders +#: model:ir.cron,name:odex_takaful.scheduler_direct_debit_end_date_reminders +msgid "Send Direct Debit End Date Reminders" +msgstr "إرسال تذكيرات موعد انتهاء الخصم المباشر" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_payment_form +msgid "Send to Finance" +msgstr "إرسال إلى المالية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_push_notification__sent_on +msgid "Sent On" +msgstr "تم الإرسال" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__seo_name +msgid "Seo name" +msgstr "اسم محسنات محرك البحث" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__sequence +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_reason_stop__sequence +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__code +msgid "Sequence" +msgstr "المسلسل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__sequence_no +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__sequence_no +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__sequence_no +msgid "Sequence No" +msgstr "رقم التسلسل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_points_of_sale_custom__name +msgid "Sequence/Point Name" +msgstr "اسم التسلسل/النقطة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__serial_code +msgid "Serial Code" +msgstr "" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_ir_actions_server +msgid "Server Action" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__partner_share +msgid "Share Partner" +msgstr "مشاركة الشريك" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_items__show_donation_item +msgid "Show Donation Item" +msgstr "إظهار بند التبرع" + +#. module: odex_takaful +#: model:res.groups,name:odex_takaful.group_show_donation_item_product +msgid "Show Donation Item Product" +msgstr "عرض منتج بند الخدمة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__show_extend_button +msgid "Show Extend Button" +msgstr "إظهار زر التمديد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__show_payment_details +msgid "Show Payment Details" +msgstr "إظهار تفاصيل الدفع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__show_register_payment +msgid "Show Register Payment" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__signup_expiration +msgid "Signup Expiration" +msgstr "انتهاء صلاحية التسجيل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__signup_token +msgid "Signup Token" +msgstr "كلمة سر التسجيل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__signup_type +msgid "Signup Token Type" +msgstr "نوع كلمة سر التسجيل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__signup_valid +msgid "Signup Token is Valid" +msgstr "كلمة سر التسجيل صالحة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__signup_url +msgid "Signup URL" +msgstr "رابط التسجيل" + +#. module: odex_takaful +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#, python-format +msgid "Sorry, there are no results for this selection !" +msgstr "عذرا، لا توجد نتائج لهذا الاختيار!" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__sponsor_id +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__sponsor_id +#: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz__sponsor_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__is_sponsor +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +#, python-format +msgid "Sponsor" +msgstr "المستفيد" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponsor_model.py:0 +#, python-format +msgid "Sponsor %s is associated with sponsorships" +msgstr "" + +#. module: odex_takaful +#: model:res.groups,name:odex_takaful.group_sponsor_department_access +msgid "Sponsor - Department Access" +msgstr "حصر الكفلاء بناء على الفرع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__sponsor_donor_type +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__sponsor_donor_type +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__sponsor_or_donor_type +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Sponsor / Donor Type" +msgstr "نوع الكافل/المتبرع " + +#. module: odex_takaful +#: model:res.groups,name:odex_takaful.takaful_group_user_sponsor +msgid "Sponsor Account" +msgstr "حساب الكافل" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__sponsor_account_number +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__sponsor_account_number +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +#, python-format +msgid "Sponsor Account Number" +msgstr "رقم حساب المتبرع" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +#, python-format +msgid "Sponsor Bank" +msgstr "بنك المتبرع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__bank_journal_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__bank_journal_id +msgid "Sponsor Bank Journal" +msgstr "يومية بنك الكافل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__bank_name +msgid "Sponsor Bank Name" +msgstr "اسم ابنك الكافل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__bank_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__bank_id +msgid "Sponsor Bank Number" +msgstr "رقم الحساب البنكى الخاص بالكافل" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#, python-format +msgid "Sponsor Branch" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donate_for_another_person__sponsor_id_number +msgid "Sponsor ID Number" +msgstr "رقم هوية" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +#, python-format +msgid "Sponsor Mobile" +msgstr "جوال المتبرع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__sponsor_id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__sponsor_id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__sponsor_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_kafalat_payment__sponsor_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_makfuleen__sponsor_id +msgid "Sponsor Name" +msgstr "اسم الكافل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__sponsor_note +msgid "Sponsor Note" +msgstr "ملاحظات الكافل" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.takaful_sponsor_operation_action +msgid "Sponsor Operation" +msgstr "عملية الكافل" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponsor_model.py:0 +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsor_operation_form +#, python-format +msgid "Sponsor Operations" +msgstr "عمليات الكافل" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsor_operation_tree +msgid "Sponsor Operations List" +msgstr "قائمة عمليات الكفلاء" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donate_for_another_person__sponsor_phone +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__sponsor_phone +msgid "Sponsor Phone" +msgstr "رقم الهاتف" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__sponsor_title +msgid "Sponsor Title" +msgstr "لقب الكافل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_push_notification__user_id +msgid "Sponsor User" +msgstr "مستخدم الكافل" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponsor_model.py:0 +#, python-format +msgid "Sponsor is already active" +msgstr "الكافل نشط بالفعل" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_transfer_deduction_wizard__sponsor_ids +#, python-format +msgid "Sponsors" +msgstr "المتبرعين" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsor_tree +msgid "Sponsors List" +msgstr "قائمة الكفلاء" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.takaful_sponsor_menu +msgid "Sponsors Record" +msgstr "سجل الكفلاء" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_takaful_sponsorship +#: model:ir.model.fields,field_description:odex_takaful.field_account_bank_statement_line__sponsorship_id +#: model:ir.model.fields,field_description:odex_takaful.field_account_move__sponsorship_id +#: model:ir.model.fields,field_description:odex_takaful.field_account_payment__sponsorship_id +#: model:ir.model.fields,field_description:odex_takaful.field_donate_for_another_person__sponsorship_id +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__sponsorship_id +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__sponsorship_id +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__sponsorship_mechanism_id +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__sponsorship_id +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__sponsorship_id +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__sponsorship_id +#: model:ir.model.fields,field_description:odex_takaful.field_refund_wiz__sponsorship_id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__sponsorship_id +#: model:ir.model.fields.selection,name:odex_takaful.selection__donation_replacement_log__record_type__sponsorship +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__sponsorship_id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__sponsorship_id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__sponsorship_id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__sponsorship_id +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__donation_type__sponsorship +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__record_type__sponsorship +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_items__donation_type__sponsorship +#: model:ir.model.fields.selection,name:odex_takaful.selection__grant_benefit_invoice__operation_type__sponsorship +#: model:ir.model.fields.selection,name:odex_takaful.selection__product_template__donation_category__sponsorship +#: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_process__record_type__sponsorship +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsor_operation__operation_type__sponsorship +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__record_type__sponsorship +#: model:ir.model.fields.selection,name:odex_takaful.selection__donation_replacement_log__record_type__sponsorship +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_cancel_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.makfuleen_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_view_search +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Sponsorship" +msgstr "الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__month_amount +msgid "Sponsorship Amount" +msgstr "مبلغ الكفالة" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_sponsorship_benefit_arrears +msgid "Sponsorship Arrears for a Beneficiary" +msgstr "متأخرات الكفالة للمستفيد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__sponsorship_class +msgid "Sponsorship Beneficiaries Classification" +msgstr "تصنيف المستفيدين من الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__benefit_count +msgid "Sponsorship Beneficiaries Number" +msgstr "عدد المستفيدين من الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__benefit_type +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__benefit_type +msgid "Sponsorship Beneficiary Type" +msgstr "نوع المستفيد" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +#, python-format +msgid "Sponsorship Branch" +msgstr "الفرع" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: model:ir.actions.act_window,name:odex_takaful.sponsorship_cancellation_action +#: model:ir.model,name:odex_takaful.model_sponsorship_cancellation +#: model_terms:ir.ui.view,arch_db:odex_takaful.sponsorship_cancellation_form +#, python-format +msgid "Sponsorship Cancellation" +msgstr "إلغاء الكفالة" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__sponsorship_creation_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__sponsorship_creation_date +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +#, python-format +msgid "Sponsorship Creation Date" +msgstr "تاريخ الإنشاء" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +#, python-format +msgid "Sponsorship Creator" +msgstr "اسم المحصل" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +msgid "Sponsorship Creator Branch" +msgstr "فرع المحصل" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +#, python-format +msgid "Sponsorship Details" +msgstr "تفاصيل الكفالة" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_month_payment.py:0 +#, python-format +msgid "Sponsorship Due Payments" +msgstr "مدفوعات الكفالة المستحقة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__sponsorship_duration +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_payment_report_pdf +msgid "Sponsorship Duration" +msgstr "مدة الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__duration_in_certificate +msgid "Sponsorship Duration In Certificate" +msgstr "مدة الكفالة في الشهادة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_product_product__sponsorship_duration +#: model:ir.model.fields,field_description:odex_takaful.field_product_template__sponsorship_duration +msgid "Sponsorship Duration Type" +msgstr "نوع الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__end_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__end_date +msgid "Sponsorship End Date" +msgstr "تاريخ انتهاء الكفالة" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "Sponsorship Entitlement Number %s" +msgstr "استحقاق الكفالة رقم %s" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +msgid "Sponsorship Information" +msgstr "معلومات الكفالة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_tree +msgid "Sponsorship List" +msgstr "قائمة الكفلاء" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__month_count +msgid "Sponsorship Months Count" +msgstr "عدد أشهر الكفالة" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__s_code +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__code +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__code +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__code +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_share +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +#, python-format +msgid "Sponsorship Number" +msgstr "عدد الكفالات" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_res_partner_model.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: model:ir.actions.act_window,name:odex_takaful.takaful_sponsorship_payment_action +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_payment_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_partner_property_form +#, python-format +msgid "Sponsorship Payment" +msgstr "مدفوعات الكفالات" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.action_config_sponsorship_stop +msgid "Sponsorship Reason" +msgstr "أسباب الإلغاء" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +msgid "Sponsorship Scheduling" +msgstr "جدولة الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_account_bank_statement_line__sponsorship_scheduling_line +#: model:ir.model.fields,field_description:odex_takaful.field_account_move__sponsorship_scheduling_line +#: model:ir.model.fields,field_description:odex_takaful.field_account_payment__sponsorship_scheduling_line +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__sponsorship_scheduling_line_ids +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__sponsorship_scheduling_line_id +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__sponsorship_scheduling_line_ids +#: model:ir.model.fields,field_description:odex_takaful.field_refund_details_lines__sponsorship_scheduling_line_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__sponsorship_scheduling_line_ids +msgid "Sponsorship Scheduling Line" +msgstr "بند جدولة الرعاية" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.action_sponsorship_scheduling_line +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_tree +msgid "Sponsorship Scheduling Lines" +msgstr "جدولة التبرعات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__start_date +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__start_date +msgid "Sponsorship Start Date" +msgstr "تاريخ بداية الكفالة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.makfuleen_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Sponsorship State" +msgstr "حالة الكفالة" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.sponsorship_states_action +#: model:ir.ui.menu,name:odex_takaful.menu_sponsorship_states_items +#: model_terms:ir.ui.view,arch_db:odex_takaful.sponsorship_states_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.sponsorship_states_tree +msgid "Sponsorship States" +msgstr "حالات الكفالة" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_sponsorship_reason_stop +msgid "Sponsorship Stop Reason" +msgstr "أسباب الإلغاء" + +#. module: odex_takaful +#: model:res.groups,name:odex_takaful.sponsorship_system_manager_group +msgid "Sponsorship System Manager" +msgstr "مدير نظام الكفالات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__sponsorship_duration +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__sponsorship_type +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_line__sponsorship_type +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process_line__sponsorship_type +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__sponsorship_type +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.makfuleen_report_pdf +msgid "Sponsorship Type" +msgstr "نوع الكفالة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.makfuleen_report_pdf +msgid "Sponsorship Value" +msgstr "قيمة الكفالة" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_grant_benefit_model.py:0 +#, python-format +msgid "Sponsorship: " +msgstr "طلبات التبرعات" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_sponsorship_states +msgid "SponsorshipS States" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponsor_model.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit__sponsorship_ids +#: model:ir.ui.menu,name:odex_takaful.takaful_sponsorship_app_menu +#, python-format +msgid "Sponsorships" +msgstr "طلبات التبرعات" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.sponsorship_benefit_arrears_action +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit__arrears_ids +#: model_terms:ir.ui.view,arch_db:odex_takaful.sponsorship_benefit_arrears_form +msgid "Sponsorships Arrears" +msgstr "متأخرات الكفالة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.sponsorship_benefit_arrears_tree +msgid "Sponsorships Arrears List" +msgstr "قائمة متأخرات الكفالة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.sponsorship_cancellation_tree +msgid "Sponsorships Cancellations List" +msgstr "قائمة إلغاء الكفالات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__sponsorships_computed +msgid "Sponsorships Computed" +msgstr "تم حساب الكفالات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__payment_month_number +msgid "Sponsorships Number To Pay" +msgstr "رقم الكفالة المطلوب دفعه" + +#. module: odex_takaful +#: model:res.groups,name:odex_takaful.sponsorship_officer_group +msgid "Sponsorships Officer" +msgstr "مسئول الكفالات" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model:ir.model.fields,field_description:odex_takaful.field_transfer_deduction_wizard__start_date +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.makfuleen_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +#, python-format +msgid "Start Date" +msgstr "تاريخ البداية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__state +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__state +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_states__name +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__state +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__state_id +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +msgid "State" +msgstr "الحالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__status +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_share +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Status" +msgstr "الحالة" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_month_payment__activity_state +#: model:ir.model.fields,help:odex_takaful.field_replacement_process__activity_state +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_cancellation__activity_state +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_payment__activity_state +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__activity_state +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsorship__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" +"الحالة على أساس الأنشطة\n" +"المتأخرة: تاريخ الاستحقاق مر\n" +"اليوم: تاريخ النشاط هو اليوم\n" +"المخطط: الأنشطة المستقبلية." + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__picking_warn +msgid "Stock Picking" +msgstr "إلتقاط المخزون" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__street +msgid "Street" +msgstr "الشارع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__street2 +msgid "Street2" +msgstr "الشارع 2" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_message_template__title +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_push_notification__title +msgid "Subject" +msgstr "العنوان" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.refund_wizard_form +msgid "Submit" +msgstr "إرسال" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__month_payment__state__submit +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_form +msgid "Submit To Pay" +msgstr "إرسال للدفع" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/donation_extension_wizard.py:0 +#, python-format +msgid "Success" +msgstr "تم بنجاح" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__suffix_title_id +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_takaful_sponsor_form +msgid "Suffix Title" +msgstr "العبارة الختامية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__property_purchase_currency_id +msgid "Supplier Currency" +msgstr "عملة المورد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__supplier_rank +msgid "Supplier Rank" +msgstr "رتبة المورد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__supporter_status +msgid "Supporter" +msgstr "داعم" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__category_id +msgid "Tags" +msgstr "علامات الوسام" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.action_takaful_payment_method +#: model:ir.ui.menu,name:odex_takaful.menu_takaful_payment_method +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_takaful_payment_method_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_takaful_payment_method_tree +msgid "Takaful Payment Method" +msgstr "طرق الدفع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_view_search +msgid "Takaful SponsorShip Search" +msgstr "البحث عن كفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_account_bank_statement_line__takaful_sponsorship_id +#: model:ir.model.fields,field_description:odex_takaful.field_account_move__takaful_sponsorship_id +#: model:ir.model.fields,field_description:odex_takaful.field_account_move_line__takaful_sponsorship_id +#: model:ir.model.fields,field_description:odex_takaful.field_account_payment__takaful_sponsorship_id +#: model:ir.model.fields,field_description:odex_takaful.field_account_payment_register__takaful_sponsorship_id +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Takaful Sponsorship" +msgstr "كفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit_invoice__benefit_target +msgid "Target of Beneficiaries" +msgstr "هدف المستفيدين" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__task_ids +msgid "Tasks" +msgstr "المهام" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_donations_details_lines__display_type +msgid "Technical field for UX purpose." +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_message_template__template_name +msgid "Template Name" +msgstr "اسم القالب" + +#. module: odex_takaful +#: model:ir.model.constraint,message:odex_takaful.constraint_takaful_message_template_template_name_uniq +msgid "Template Name Is Already Exist!" +msgstr "اسم القالب موجود بالفعل!" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__sponsorship_duration__temporary +#: model:ir.model.fields.selection,name:odex_takaful.selection__product_template__sponsorship_duration__temporary +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__sponsorship_duration__temporary +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +msgid "Temporary" +msgstr "سنوية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_account_bank_statement_line__benefit_invoice_ids +#: model:ir.model.fields,field_description:odex_takaful.field_account_move__benefit_invoice_ids +#: model:ir.model.fields,field_description:odex_takaful.field_account_payment__benefit_invoice_ids +msgid "The Beneficiaries" +msgstr "المستفيدين" + +#. module: odex_takaful +#: model:ir.model.constraint,message:odex_takaful.constraint_takaful_sponsor_email_uniq +msgid "The Email Already Exist!" +msgstr "البريد الإلكتروني موجود بالفعل!" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_contribution_form +msgid "The Financial Contribution" +msgstr "المساهمة المالية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__gifter_mobile +msgid "The Gifter Mobile" +msgstr "جوال المانح" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__gifter_name +msgid "The Gifter Name" +msgstr "اسم المانج" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__gifter_id +msgid "The Gifter To" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "The IBAN number must contain exactly 22 digits." +msgstr "يجب أن يحتوي رقم الآيبان على 22 رقمًا بالضبط." + +#. module: odex_takaful +#: model:ir.model.constraint,message:odex_takaful.constraint_takaful_sponsor_id_number_uniq +msgid "The ID Number Already Exist!" +msgstr "رقم الهوية موجود بالفعل!" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponsor_model.py:0 +#, python-format +msgid "The ID number already exists in sponsor with name" +msgstr "رقم الهوية موجود بالفعل لدى الكفيل بالاسم" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_history__old_direct_debit +msgid "Old Direct Debit" +msgstr "حالة الإستقطاع الحاليه" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__country_code +msgid "" +"The ISO country code in two chars. \n" +"You can use this field for quick search." +msgstr "" +"كود الدولة ISO بحرفين. \n" +"يمكنك استخدام هذا الحقل للبحث السريع." + +#. module: odex_takaful +#: model:ir.model.constraint,message:odex_takaful.constraint_takaful_sponsor_mobile_uniq +msgid "The Mobile Already Exist!" +msgstr "الجوال موجود بالفعل!" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__month +msgid "The Month" +msgstr "الشهر" + +#. module: odex_takaful +#: model:ir.model.constraint,message:odex_takaful.constraint_takaful_sponsor_phone_uniq +msgid "The Phone Already Exist!" +msgstr "رقم الجوال موجود بالفعل!" + +#. module: odex_takaful +#: code:addons/odex_takaful/reports/month_payment_report.py:0 +#: model:ir.actions.act_window,name:odex_takaful.takaful_sponsor_action +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__sponsor_id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_benefit_arrears__sponsor_id +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__sponsor_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_contribution__sponsor_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor_operation__sponsor_id +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_report_pdf +#: model_terms:ir.ui.view,arch_db:odex_takaful.benefit_month_payment_share +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_cancel_report_pdf +#, python-format +msgid "The Sponsor" +msgstr "الكافل" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.takaful_sponsorship_action +msgid "The Sponsorship" +msgstr "طلبات التبرعات" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "The Sponsorship Invoices" +msgstr "فواتير الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__vat +msgid "" +"The Tax Identification Number. Complete it if the contact is subjected to " +"government taxes. Used in some legal statements." +msgstr "" +"رقم التعريف الضريبي. قم بإكماله إذا كانت جهة الاتصال تخضع للضرائب الحكومية. " +"يُستخدم في بعض المستندات القانونية." + +#. module: odex_takaful +#: model:ir.model.constraint,message:odex_takaful.constraint_takaful_sponsor_user_id_uniq +msgid "The User Already Exist!" +msgstr "المستخدم موجود بالفعل!" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "The account number should contain only digits." +msgstr "ينبغي أن يحتوي رقم الحساب على أرقام فقط." + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__payment_next_action_date +msgid "The date before which no action should be taken." +msgstr "التاريخ الذي لا تحتاج للقيام بأي إجراء قبله." + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__property_account_position_id +msgid "" +"The fiscal position determines the taxes/accounts used for this contact." +msgstr "" +"يحدد الموقف الضريبي الضرائب/الحسابات المستخدمة لجهة الاتصال المُختارة." + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__website_url +msgid "The full URL to access the document through the website." +msgstr "الرابط الكامل للوصول إلى المستند من خلال الموقع الإلكتروني." + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__affiliate_key +msgid "The key of the affiliate how invited this partner to the platform" +msgstr "مفتاح الشريك التابع الذي دعا هذا الشريك إلى المنصة" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#, python-format +msgid "" +"The library 'xlsxwriter' is not installed. Please install it: pip install " +"xlsxwriter" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__pos_order_count +msgid "The number of point of sales orders related to this customer" +msgstr "عدد أوامر نقاط البيع المرتبطة بهذا العميل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__sponsor_partner_id +msgid "The partner Associated with the Sponsor" +msgstr "الشريك المرتبط بالكافل" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__has_unreconciled_entries +msgid "" +"The partner has at least one unreconciled debit and credit since last time " +"the invoices & payments matching was performed." +msgstr "" +"لدى الشريك حساب مدين ودائن واحد على الأقل لم يُسوَ منذ أخر تطابق بين " +"الفواتير والمدفوعات." + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/orphan_replacement_wizard.py:0 +#, python-format +msgid "The selected Families Doesn't belong to Selected Branch ." +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_takaful_sponsor_form +msgid "The sponsor" +msgstr "كافل" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__property_stock_customer +msgid "" +"The stock location used as destination when sending goods to this contact." +msgstr "الموقع التخزيني المُستخدم كوجهة عند إرسال بضاعة لجهة الاتصال هذه." + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__property_stock_supplier +msgid "" +"The stock location used as source when receiving goods from this contact." +msgstr "الموقع التخزيني المُستخدم كمصدر عند إرسال بضاعة لجهة الاتصال هذه." + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__middle_name +msgid "Third Name" +msgstr "الاسم الثالث" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "This Sponsorship is not confirmed" +msgstr "لم يتم تأكيد هذا التبرع" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__property_account_payable_id +msgid "" +"This account will be used instead of the default one as the payable account " +"for the current partner" +msgstr "" +"سيتم استخدام هذا الحساب بدلًا من الحساب الافتراضي كحساب دائن للشريك الحالي" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__property_account_receivable_id +msgid "" +"This account will be used instead of the default one as the receivable " +"account for the current partner" +msgstr "" +"سيتم استخدام هذا الحساب بدلًا من الحساب الافتراضي كحساب مدين للشريك الحالي" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__property_purchase_currency_id +msgid "" +"This currency will be used, instead of the default one, for purchases from " +"the current partner" +msgstr "" +"سيتم استخدام هذه العملة بدلًا من العملة الافتراضية لإتمام عمليات الشراء من " +"الشريك الحالي" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__email_normalized +msgid "" +"This field is used to search on email address as the primary email field can" +" contain more than strictly an email address." +msgstr "" +"يُستخدَم هذا الحقل للبحث في عناوين البريد الإلكتروني حيث أنه بوسع حقل البريد" +" الإلكتروني الأساسي أن يحتوي على أكثر من عنوان بريد إلكتروني واحد فقط." + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__property_supplier_payment_term_id +msgid "" +"This payment term will be used instead of the default one for purchase " +"orders and vendor bills" +msgstr "" +"سيُستخدم شرط السداد هذا بدلًا من الشرط الافتراضي لأوامر الشراء وفواتير " +"المورد" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__property_payment_term_id +msgid "" +"This payment term will be used instead of the default one for sales orders " +"and customer invoices" +msgstr "" +"سيُستخدم شرط السداد هذا بدلًا من الشرط الافتراضي لإصدار أوامر المبيعات " +"وفواتير العملاء" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__property_product_pricelist +msgid "" +"This pricelist will be used, instead of the default one, for sales to the " +"current partner" +msgstr "سوف تستخدم قائمة الأسعار هذه بدلاً من الافتراضية للبيع للشريك الحالي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__tz +msgid "Timezone" +msgstr "المنطقة الزمنية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__tz_offset +msgid "Timezone offset" +msgstr "الانحراف عن المنطقة الزمنية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__sponsor_title +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__title +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_takaful_sponsor_form +msgid "Title" +msgstr "اللقب" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "To" +msgstr "الى" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_line__to_benefit_id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process_line__to_benefit_id +msgid "To Benefit" +msgstr "المستفيد الجديد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_line__to_benefit_ids +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process_line__to_benefit_ids +msgid "To Benefits (Group)" +msgstr "(مجموعة)المستفيدين الجدد" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "To Cancel" +msgstr "للإلغاء" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_wizard_report_kafalat_cancel__to_date +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_cancel_report_pdf +msgid "To Date" +msgstr "تاريخ النهاية" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__state__draft +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +msgid "To Pay" +msgstr "مسودة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__amount +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__amount +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_tree +msgid "Total Amount" +msgstr "المبلغ الإجمالي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__total_donation_amount +msgid "Total Donation Amount" +msgstr "إجمالي المبلغ" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__total_due +msgid "Total Due" +msgstr "الإجمالي المستحق" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard__total_donation_amount +msgid "Total Extension Amount" +msgstr "المبلغ الإجمالي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__total_invoiced +msgid "Total Invoiced" +msgstr "إجمالي قيمة الفواتير" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit__total_kafala_value +msgid "Total Kafala Value" +msgstr "إجمالي قيمة الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard__total_months_amount +msgid "Total Months Amount" +msgstr "اجمالي الشهور" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__total_overdue +msgid "Total Overdue" +msgstr "الإجمالي المتأخر" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.kafalat_payment_report_pdf +msgid "Total Overdues" +msgstr "إجمالي المتأخرات" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__debit +msgid "Total Payable" +msgstr "الاجمالى الدائن" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.makfuleen_report_pdf +msgid "Total Payment" +msgstr "المبلغ الإجمالي" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_payment_tree +msgid "Total Payments" +msgstr "المبالغ الإجمالية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__credit +msgid "Total Receivable" +msgstr "الإجمالي المدين" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_tree +msgid "Total Refunded" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__total_sponsorship_amount +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__total_waqf_and_donation_amount +msgid "Total Sponsorship Amount" +msgstr "إجمالي المبلغ" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_grant_benefit__benefit_arrears_value +msgid "Total Sponsorships Arrears" +msgstr "إجمالي متأخرات الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_donation_extension_wizard__total_months_amount +msgid "Total amount for the extension period" +msgstr "المبلغ الإجمالي لفترة التمديد" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/account_move.py:0 +#, python-format +msgid "Total amount should be less or equal %s" +msgstr "اجمالي المبلغ يجب ان يكون اقل من او يساوى%S" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__credit +msgid "Total amount this customer owes you." +msgstr "إجمالي المبلغ المُستحق من هذا العميل." + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__debit +msgid "Total amount you have to pay to this vendor." +msgstr "إجمالي المبلغ الواجب سداده لهذا المورد." + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_donation_extension_wizard__total_donation_amount +msgid "Total extension amount (amount × months)" +msgstr "إجمالي مبلغ التمديد (المبلغ × الأشهر)" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document +msgid "Total lines found:" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#, python-format +msgid "Total lines found: %s" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.actions.act_window,help:odex_takaful.action_sponsorship_scheduling_line +msgid "Track and manage sponsorship payment schedules for beneficiaries." +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__transfer_receipt +msgid "Transfer Receipt" +msgstr "إيصال التحويل" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#: model:ir.actions.act_window,name:odex_takaful.action_transfer_deduction_wizard +#: model:ir.ui.menu,name:odex_takaful.menu_transfer_deduction_report +#: model_terms:ir.ui.view,arch_db:odex_takaful.transfer_deduction_wizard_form_view +#, python-format +msgid "Transfer and Deduction Report" +msgstr "تقرير الحوالة والاستقطاع" + +#. module: odex_takaful +#: model:ir.actions.report,name:odex_takaful.action_report_transfer_deduction_pdf +msgid "Transfer and Deduction Report (PDF)" +msgstr "تقرير الحوالة والاستقطاع (PDF)" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_transfer_deduction_wizard +msgid "Transfer and Deduction Report Wizard" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/transfer_deduction_wizard.py:0 +#, python-format +msgid "Transfer_Deduction_Report_%(date)s.xlsx" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_res_config_settings__twilio_account_sid +msgid "Twilio Account SID" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_res_config_settings__twilio_auth_token +msgid "Twilio Auth Token" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#: code:addons/odex_takaful/models/replacement_process.py:0 +#: code:addons/odex_takaful/models/replacement_process.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "" +"Twilio configuration is missing. Please configure Twilio SID, Auth Token, " +"and WhatsApp number in General Configurations." +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_month_payment__activity_exception_decoration +#: model:ir.model.fields,help:odex_takaful.field_replacement_process__activity_exception_decoration +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_cancellation__activity_exception_decoration +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_payment__activity_exception_decoration +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__activity_exception_decoration +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsorship__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "نوع النشاط الاستثنائي على السجل." + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_scheduling_line__status__under_refund +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Under Refund" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_states__name__under_refund +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__state__under_refund +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_view_search +msgid "Under Refund Procedure" +msgstr "تحت إجراء الإرجاع" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_states__name__under_replacement +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__state__under_replacement +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_view_search +msgid "Under Replacement" +msgstr "تحت إجراء الإستبدال" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__education_status__under_study_age +#: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_wiz__education_status__under_study_age +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__education_status__under_study_age +msgid "Under Study Age" +msgstr "تحت سن الدراسة" + +#. module: odex_takaful +#: model:product.product,uom_name:odex_takaful.financial_gift +#: model:product.product,uom_name:odex_takaful.sponsorship +#: model:product.template,uom_name:odex_takaful.financial_gift_product_template +#: model:product.template,uom_name:odex_takaful.sponsorship_product_template +msgid "Units" +msgstr "الوحدات" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__sponsor_or_donor_type__unknown +msgid "Unknown" +msgstr "فاعل خير" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__sponsorship_scheduling_line__status__unpaid +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_sponsorship_scheduling_line_search +msgid "Unpaid" +msgstr "غير مدفوع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__unpaid_invoices +msgid "Unpaid Invoices" +msgstr "الفواتير غير المدفوعة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__message_unread +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__message_unread +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__message_unread +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__message_unread +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__message_unread +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__message_unread +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__message_unread +msgid "Unread Messages" +msgstr "الرسائل الجديدة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__message_unread_counter +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__message_unread_counter +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__message_unread_counter +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__message_unread_counter +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__message_unread_counter +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__message_unread_counter +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__message_unread_counter +msgid "Unread Messages Counter" +msgstr "عدد الرسائل الجديدة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__unreconciled_aml_ids +msgid "Unreconciled Aml" +msgstr "لم تتم التسوية" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_tree +msgid "Unregistered Sponsor Name" +msgstr "اسم الكافل الغير مسجل بالنظام" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__barcode +msgid "Use a barcode to identify this contact." +msgstr "استخدام الباركود لتعريف جهة الاتصال هذه." + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_push_notification__email +msgid "Used to log into the system" +msgstr "يستخدم لتسجيل الدخول إلى النظام" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__user_type +msgid "User Type" +msgstr "نوع المستخدم" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__user_ids +msgid "Users" +msgstr "المستخدمون" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__currency_id +msgid "Utility field to express amount currency" +msgstr "حقل مساعد للتعبير عن عملة المبلغ" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__vat +msgid "VAT/Tax ID" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Vendor Invoices" +msgstr "أذونات الصرف" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__property_stock_supplier +msgid "Vendor Location" +msgstr "مكان المورد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__property_supplier_payment_term_id +msgid "Vendor Payment Terms" +msgstr "شروط السداد كمورد" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsor__state__verified +msgid "Verified" +msgstr "معتمد" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_tree +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "View Scheduling Lines" +msgstr "عرض جدولة التبرع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__website_published +msgid "Visible on current website" +msgstr "ظاهرة في الموقع الحالي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__visitor_ids +msgid "Visitors" +msgstr "الزائرين" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__total_voucher +msgid "Voucher Total" +msgstr "إجمالي القسيمة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__voucher_ids +msgid "Vouchers" +msgstr "القسائم" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__state__waiting +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +msgid "Waiting" +msgstr "في الانتظار" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__wait_cancel_day +msgid "Waiting For Cancellation" +msgstr "في انتظار الإلغاء" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__donation_type__waqf +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__donation_types__waqf +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_items__donation_type__waqf +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_items__donation_types__waqf +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +msgid "Waqf" +msgstr "وقف" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__website_id +msgid "Website" +msgstr "الموقع الإلكتروني" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__website +msgid "Website Link" +msgstr "رابط الموقع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__website_message_ids +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__website_message_ids +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process__website_message_ids +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__website_message_ids +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__website_message_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__website_message_ids +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__website_message_ids +msgid "Website Messages" +msgstr "رسائل الموقع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__website_description +msgid "Website Partner Full Description" +msgstr "وصف الشريك الكامل بالموقع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__website_short_description +msgid "Website Partner Short Description" +msgstr "وصف موجز للشريك بالموقع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__website_url +msgid "Website URL" +msgstr "رابط URL للموقع الإلكتروني" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_donations_details_lines__website_message_ids +#: model:ir.model.fields,help:odex_takaful.field_month_payment__website_message_ids +#: model:ir.model.fields,help:odex_takaful.field_replacement_process__website_message_ids +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_cancellation__website_message_ids +#: model:ir.model.fields,help:odex_takaful.field_sponsorship_payment__website_message_ids +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__website_message_ids +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsorship__website_message_ids +msgid "Website communication history" +msgstr "سجل تواصل الموقع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__website_meta_description +msgid "Website meta description" +msgstr "الوصف الدلالي للموقع الإلكتروني" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__website_meta_keywords +msgid "Website meta keywords" +msgstr "الكلمات المفتاحية الدلالية للموقع الإلكتروني" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__website_meta_title +msgid "Website meta title" +msgstr "العنوان الدلالي للموقع الإلكتروني" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__website_meta_og_img +msgid "Website opengraph image" +msgstr "صورة الرسم البياني المفتوح للموقع الإلكتروني" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_settings_view2 +msgid "Whatsapp API Integration" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,help:odex_takaful.field_takaful_sponsor__tz +msgid "" +"When printing documents and exporting/importing data, time values are computed according to this timezone.\n" +"If the timezone is not set, UTC (Coordinated Universal Time) is used.\n" +"Anywhere else, time values are computed according to the time offset of your web client." +msgstr "" +"عند طباعة المستندات واستيراد/تصدير البيانات، يتم احتساب قيم الوقت وفقاً للمنطقة الزمنية. \n" +"إذا لم تكن المنطقة الزمنية محددة، يتم استخدام UTC (التوقيت العالمي المنسق). \n" +"في أي مكان آخر، يتم احتساب قيم الوقت بناءً على إزاحة الوقت لعميل الويب الخاص بك." + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__is_widow_orphan +msgid "Widow with Her Orphans?" +msgstr "أرملة مع أيتامها؟" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__benefit_type__widow +#: model:ir.model.fields.selection,name:odex_takaful.selection__grant_benefit_invoice__benefit_type__widow +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_contribution__benefit_type__widow +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsor_operation__benefit_type__widow +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__benefit_type__widow +msgid "Widows" +msgstr "أرملة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Widows List" +msgstr "قائمة الأرامل" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +msgid "With Beneficiary" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__donation_mechanism__with_conditions +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__donation_mechanism__with_conditions +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +#, python-format +msgid "With Conditions" +msgstr "مشروط" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +msgid "Without Beneficiary" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__donation_mechanism__without_conditions +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__donation_mechanism__without_conditions +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +#, python-format +msgid "Without Conditions" +msgstr "غير مشروط" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_line__wiz_id +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_process_line__process_id +msgid "Wizard" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__points_of_sale_custom__department_name__women +msgid "Women" +msgstr "إمرأة" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__is_gift__yes +msgid "Yes" +msgstr "نعم" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "You cannot Add more than one sponsorship" +msgstr "لا يمكنك إضافة أكثر من كفالة واحدة" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#, python-format +msgid "" +"You cannot change the type of a sale quote line. Instead you should delete " +"the current line and create a new line of the proper type." +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/replacement_process.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "You cannot delete this record" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#: code:addons/odex_takaful/wizards/refund_payment_wizard.py:0 +#, python-format +msgid "You have Refund invoice not paid" +msgstr "لديك فاتورة مرتجع لم يتم دفعها" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_month_payment.py:0 +#, python-format +msgid "You have recieved money in tolal of %s in your account." +msgstr "لقد تلقيت مبلغًا إجماليًا قدره %s في حسابك." + +#. module: odex_takaful +#: code:addons/odex_takaful/models/replacement_process.py:0 +#: code:addons/odex_takaful/wizards/orphan_replacement_wizard.py:0 +#, python-format +msgid "" +"You must select the same number of beneficiaries in the from benefits group " +"(%s) to the to benefits group (%s)" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsor__zip +msgid "Zip" +msgstr "الرمز البريدي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__charity_bank_id +#: model:ir.model.fields,field_description:odex_takaful.field_payment_details_lines__charity_journal_id +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_payment_method__charity_bank_id +msgid "charity Bank" +msgstr "بنك الجمعية" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_donate_for_another_person +msgid "donate.for.another.person" +msgstr "الشخص المراد التبرع عنه" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_donations_details_lines +msgid "donations.details.lines" +msgstr "بنود تفاصيل التبرعات" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__education_status__educated +#: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_wiz__education_status__educated +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__education_status__educated +msgid "educated" +msgstr "متعلم" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponsor_model.py:0 +#, python-format +msgid "email already exists in sponsor with name %s" +msgstr "البريد الإلكتروني موجود بالفعل في الكافل باسم %s" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__education_status__illiterate +#: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_wiz__education_status__illiterate +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__education_status__illiterate +msgid "illiterate" +msgstr "أمي لا يقرأ ولا يكتب" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_month_payment +msgid "month.payment" +msgstr "شهر.الدفع" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_month_payment_line +msgid "month.payment.line" +msgstr "شهر. الدفع. بند" + +#. module: odex_takaful +#: model:ir.actions.report,print_report_name:odex_takaful.action_payment_voucher_report +msgid "object.print_report_name()" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.add_details_wizard_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.donation_extension_wizard_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.refund_wizard_form +msgid "or" +msgstr "أو" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_payment_details_lines +msgid "payment.details.lines" +msgstr "" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_preferred_communication +msgid "preferred.communication" +msgstr "" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_report_odex_takaful_benefit_month_payment_bank_sheet +msgid "report.odex_takaful.benefit_month_payment_bank_sheet" +msgstr "" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_report_odex_takaful_benefit_month_payment_report_pdf +msgid "report.odex_takaful.benefit_month_payment_report_pdf" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__journal_id +msgid "Journal" +msgstr "بنك الجمعية" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_report_odex_takaful_benefit_month_payment_report_xlsx +msgid "report.odex_takaful.benefit_month_payment_report_xlsx" +msgstr "" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_report_odex_takaful_benefit_payment_report_pdf +msgid "report.odex_takaful.benefit_payment_report_pdf" +msgstr "" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_report_odex_takaful_kafalat_cancel_report_pdf +msgid "report.odex_takaful.kafalat_cancel_report_pdf" +msgstr "" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_report_odex_takaful_kafalat_payment_report_pdf +msgid "report.odex_takaful.kafalat_payment_report_pdf" +msgstr "" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_report_odex_takaful_makfuleen_report_pdf +msgid "report.odex_takaful.makfuleen_report_pdf" +msgstr "" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_sponsorship_scheduling_line +msgid "sponsorship.scheduling.line" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment__state +#: model:ir.model.fields,field_description:odex_takaful.field_month_payment_line__state +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_cancellation__state +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_payment__state +#: model:ir.model.fields,field_description:odex_takaful.field_sponsorship_scheduling_line__sponsorship_state +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__state +msgid "state" +msgstr "الحالة" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_takaful_payment_method +msgid "takaful.payment.method" +msgstr "" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_takaful_sponsor +msgid "takaful.sponsor" +msgstr "" + +#. module: odex_takaful +#: model:ir.model,name:odex_takaful.model_takaful_sponsor_operation +msgid "takaful.sponsor.operation" +msgstr "" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "voucher Payment" +msgstr "قسيمة الدفع" + +#. module: odex_takaful +#: model:product.product,name:odex_takaful.sponsorship +#: model:product.template,name:odex_takaful.sponsorship_product_template +msgid "كفالة" +msgstr "" + +#. module: odex_takaful +#: model:product.product,name:odex_takaful.financial_gift +#: model:product.template,name:odex_takaful.financial_gift_product_template +msgid "هدية مالية" +msgstr "" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_replacement_log__sponsor_id +#: model:ir.model.fields.selection,name:odex_takaful.selection__replacement_process__registered_type__sponsor +#: model:ir.model.fields.selection,name:odex_takaful.selection__takaful_sponsorship__registered_type__sponsor +#, python-format +msgid "Sponsor" +msgstr "كافل" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_family_member__sponsorship_end_date +msgid "Sponsorship End Date" +msgstr "تاريخ إنتهاء الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__debit_payment_file_attachment +msgid "Debit Payment Attachment" +msgstr "الأمر المستديم" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__debit_payment_attachment_file_name +msgid "Debit Payment File Name" +msgstr "ملف الأمر المستديم" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_account_payment_register__transaction_file_attachment +msgid "Transaction Attachment" +msgstr "المستند" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_account_payment_register__transaction_attachment_file_name +msgid "Transaction File Name" +msgstr "فايل المستند" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_family_member__is_restricted +msgid "Is Restricted ?" +msgstr "مقيد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_family_member__general_restriction +msgid "General Restriction" +msgstr "تقييد عام" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_res_config_settings__restriction_period +msgid "Restriction Period" +msgstr "فترة التقييد" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.family_member_form_inherit_donation_button +msgid "Available For Sponsorship" +msgstr "متاح للكفالة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.family_member_form_inherit_donation_button +msgid "Not Available For Sponsorship" +msgstr "غير متاح للكفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donate_for_another_person__sponsor_name +msgid "Sponsor Name" +msgstr "إسم المهدى له" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_replace_sponsor_wizard__old_sponsor_id +msgid "Current Sponsor" +msgstr "الكافل الحالي" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.replace_sponsor_wizard_form +msgid "Sponsor Information" +msgstr "تفاصيل نقل الكفالة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.replace_sponsor_wizard_form +msgid "Please provide a reason for replacing the sponsor..." +msgstr "رجاءاً إذكر سبب لنقل الكفالةً" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/replace_sponsor_wizard.py:0 +#, python-format +msgid "Please provide a reason for the replacement." +msgstr "رجاءاً إذكر سبب لنقل الكفالةً" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#: model:res.groups,name:odex_takaful.group_replace_sponsor +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.replace_sponsor_wizard_form +#, python-format +msgid "Replace Sponsor" +msgstr "نقل كفالة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__donation_qty +msgid "Donation QTY" +msgstr "الكمية" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_account_payment_register_form +msgid "Association Journal" +msgstr "حساب الجمعية" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_account_payment_register_form +msgid "Account Transferred From" +msgstr "حساب المحول منه" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_takaful_sponsorship__sponsor_name +msgid "Sponsor Name" +msgstr "اسم الكافل/المتبرع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__direct_debit_partner_bank_id +msgid "Direct Debit Partner Bank" +msgstr "بنك المتبرع" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "Add New Sponsor" +msgstr "إضافة كافل/متبرع جديد" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Choose Record Type" +msgstr "اختر نوع السجل" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Donation Type" +msgstr "نوع التبرع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Unconditional" +msgstr "غير مشروط" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Conditional" +msgstr "مشروط" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Record Type" +msgstr "نوع السجل" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Donor Information" +msgstr "معلومات المتبرع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Details" +msgstr "التفاصيل" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Choose donation type then enter donor information" +msgstr "اختر نوع التبرع ثم أدخل معلومات المتبرع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Enter sponsor information then select beneficiary" +msgstr "أدخل معلومات الكافل ثم اختر المستفيد" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Select registered sponsor from the list" +msgstr "اختر كافل مسجل من القائمة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Saudi mobile number format" +msgstr "تنسيق رقم الجوال السعودي" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_takaful_sponsor_form +msgid "Related Donors" +msgstr "كافل/متبرع مرتبط" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_family_member__kafala_status +msgid "Kafala Status" +msgstr "حالة الكفالة" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__family_member__kafala_status__have_kafala +#: model_terms:ir.ui.view,arch_db:odex_takaful.family_member_search_inherit +msgid "Have Kafala" +msgstr "مكفول" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__family_member__kafala_status__have_not_kafala +#: model_terms:ir.ui.view,arch_db:odex_takaful.family_member_search_inherit +msgid "Have not Kafala" +msgstr "غير مكفول" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "Please Check The Amount in donation Line!" +msgstr "مبلغ التبرع صفر الرجاء ادخال قيمة لمبلغ التبرع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.product_product_view_kanban +msgid "" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.product_product_view_kanban +msgid "" +msgstr "" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.product_template_view_kanban_odex_takaful +msgid "" +"\n" +" Add" +msgstr "" +"\n" +" إضافة" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "Choose Donation Items" +msgstr "أختر بنود التبرع" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.product_template_view_kanban_odex_takaful +msgid "Amount:" +msgstr "القيمة:" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.family_member_form_inherit_donation_button +msgid "Kafala Information" +msgstr "بيانات الكفالة" + + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_replacement_log__new_benefit +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__new_members_id +msgid "New Benefit" +msgstr "المستفيد الجديد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__new_family_id +msgid "New Family" +msgstr "المستفيد الجديد عائلة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_replacement_log__old_benefit +msgid "old Benefit" +msgstr "المستفيد القديم" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_replacement_wiz__old_family_id +msgid "Old Family" +msgstr "المستفيد القديم عائلة" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_replacement_log__replacement_ref +msgid "replacement Reference" +msgstr "المرجع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_replacement_log__replacement_date +msgid "Replacement Date" +msgstr "تاريخ الاستبدال" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.donations_details_lines_replace_action +msgid "Donations Details Lines Replacement" +msgstr "تفاصيل بنود التبرع للاستبدال" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.donations_details_lines_to_replace_app_menu +msgid "Donations Details Lines To Replace Benefit" +msgstr "مستفيدين بحاجة للاستبدال" + +#. module: odex_takaful +#: model:ir.ui.menu,name:odex_takaful.donations_details_lines_waiting_app_menu +msgid "Donations Details Lines Waiting Benefit" +msgstr "كفلاء بحاجة لمستفيدين" + +#. module: odex_takaful +#: model:ir.actions.act_window,name:odex_takaful.donations_details_lines_waiting_action +msgid "Donations Details Lines waiting" +msgstr "تفاصيل بنود التبرع في الانتظار" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__benefit_status +msgid "Benefit Status" +msgstr "حالة المستفيد" + + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__state__replace +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_search +msgid "To Replace" +msgstr "للاستبدال" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +msgid "Reset to Draft" +msgstr "إعادة التعيين لحالة مسودة" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/takaful_sponorship_model.py:0 +#, python-format +msgid "You can only reset to draft a confirmed sponsorship." +msgstr "يمكنك الارسال الى مسودة للتبرعات المؤكدة فقط" + +#. module: odex_takaful +#: code:addons/odex_takaful/wizards/account_payment_register.py:0 +#, python-format +msgid "Payment registered successfully" +msgstr "تمت عملية الدفع بنجاح" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#: code:addons/odex_takaful/wizards/add_benefit_wizard.py:0 +#: model:ir.model,name:odex_takaful.model_add_benefit_wizard +#: model_terms:ir.ui.view,arch_db:odex_takaful.add_benefit_wizard_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.donations_details_lines_view_form +#: model_terms:ir.ui.view,arch_db:odex_takaful.takaful_sponsorship_form +#, python-format +msgid "Add Benefit" +msgstr "إضافة مستفيد" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.add_benefit_wizard_form +msgid "Benefit Information" +msgstr "تفاصيل إضافة المستفيد" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_replacement_log__user_id +msgid "Replaced By" +msgstr "تم الإستبدال بواسطة" + +#. module: odex_takaful +#: code:addons/odex_takaful/models/donation_details_lines.py:0 +#: model:ir.actions.act_window,name:odex_takaful.action__replacement_log_history +#: model:ir.model.fields,field_description:odex_takaful.field_donations_details_lines__replacement_log_ids +#, python-format +msgid "Replacement Log" +msgstr "سجل الإستبدال" + +#. module: odex_takaful +#: model:ir.model.fields.selection,name:odex_takaful.selection__donations_details_lines__state__paid +msgid "Paid" +msgstr "منتهي" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_extension_payment_wizard_line__check_number +msgid "Check Number" +msgstr "رقم الشيك" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_extension_payment_wizard_line__journal_id +msgid "Journal" +msgstr "حساب الجمعية" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_extension_payment_wizard_line__partner_bank_id +msgid "Partner Bank" +msgstr "بنك المتبرع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_extension_payment_wizard_line__payment_amount +msgid "Payment Amount" +msgstr "المبلغ" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_extension_payment_wizard_line__payment_file_attachment +msgid "Payment Attachment" +msgstr "مرفق الدفع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_extension_payment_wizard_line__payment_method +msgid "Payment Method" +msgstr "طريقة الدفع" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_extension_payment_wizard_line__check_due_date +msgid "Check Due Date" +msgstr "تاريخ الإستحقاق" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_extension_payment_wizard_line__check_number +msgid "Check Number" +msgstr "رقم الشيك" + +#. module: odex_takaful +#: model:ir.model.fields,field_description:odex_takaful.field_donation_extension_wizard__is_different_payment +msgid "Is Different Payment" +msgstr "طرف دفع متعددة" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.view_account_payment_register_form +msgid "Association Journal" +msgstr "حساب الجمعية" + +#. module: odex_takaful +#: model_terms:ir.ui.view,arch_db:odex_takaful.donation_extension_wizard_form +msgid "Sub Payments" +msgstr "دفع متعدد" \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/models/__init__.py b/odex25_takaful/odex_takaful/models/__init__.py new file mode 100644 index 000000000..2a117e145 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/__init__.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- + +from . import takaful_grant_benefit_model +from . import takaful_sponorship_model +from . import takaful_sponsorship_cancellation_model +from . import takaful_sponsorship_payment_model + +from . import takaful_sponsor_operation + +from . import takaful_push_notification +from . import takaful_contribution_model +from . import takaful_month_payment +from . import takaful_conf +from . import sponsorship_states +from . import replacement_reasons +from . import replacement_process +from . import takaful_notification +from . import account_move +from . import account_payment +from . import res_partner + +from . import preferred_communication +from . import takaful_payment_method +from . import res_config_settings +from . import product +from . import donation_details_lines +from . import donation_extension_history +from . import family_member +from . import sponsorship_scheduling_line +from . import donation_replacement_log diff --git a/odex25_takaful/odex_takaful/models/account_move.py b/odex25_takaful/odex_takaful/models/account_move.py new file mode 100644 index 000000000..69d02bf89 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/account_move.py @@ -0,0 +1,253 @@ +from odoo import api, fields, models, _ +from odoo.exceptions import UserError +from odoo.tools import float_compare +from odoo.tools.misc import format_date, get_lang +from collections import defaultdict + +class AccountMove(models.Model): + _inherit = 'account.move' + + takaful_sponsorship_id = fields.Many2one('takaful.sponsorship', compute='_compute_takaful_sponsorship_id', store=True) + is_refund_sponsorship = fields.Boolean(string='Is Refund Sponsorship', default=False) + sponsorship_scheduling_line = fields.Many2one('sponsorship.scheduling.line') + payment_details_line = fields.Many2one('payment.details.lines') + sponsorship_id = fields.Many2one('takaful.sponsorship', string='Sponsorship', readonly=True, ) + payment_id = fields.Many2one('account.payment', string='Payment', copy=False) + + @api.depends('state') + def _compute_takaful_sponsorship_id(self): + for move in self: + if not move.takaful_sponsorship_id and move.move_type == 'entry': + partials = move.line_ids.matched_debit_ids | move.line_ids.matched_credit_ids + takaful_sponsorship_ids = (partials.debit_move_id.move_id.takaful_sponsorship_id | partials.credit_move_id.move_id.takaful_sponsorship_id) + move.takaful_sponsorship_id = takaful_sponsorship_ids[-1] if takaful_sponsorship_ids else False + else: + move.takaful_sponsorship_id = move.takaful_sponsorship_id + + def action_move_line_create(self): + ''' + Confirm the vouchers given in ids and create the journal entries for each of them + ''' + res = super(AccountMove, self).action_move_line_create() + if res: + self.write({'payment_id': self.move_id.line_ids.mapped('payment_id').id}) + + @api.onchange('payment_journal_id') + def on_change_payment_journal_id(self): + for rec in self: + rec.account_id = rec.payment_journal_id.default_debit_account_id + + def action_register_payment(self): + ''' Override the payment registration behavior. ''' + # Perform any custom logic before calling the original method + # Call the original method to preserve the default behavior + action = super(AccountMove, self).action_register_payment() + for move in self: + if move.is_refund_sponsorship: # Check if it's a refund + # Add any additional custom logic after calling the original method + action['context'].update({ + 'default_takaful_sponsorship_id': move.takaful_sponsorship_id.id, + 'default_journal_id': move.payment_details_line.journal_id.id, + 'default_is_refund_sponsorship': True, + + }) + + return action + + @api.depends( + 'line_ids.matched_debit_ids.debit_move_id.move_id.payment_id.is_matched', + 'line_ids.matched_debit_ids.debit_move_id.move_id.line_ids.amount_residual', + 'line_ids.matched_debit_ids.debit_move_id.move_id.line_ids.amount_residual_currency', + 'line_ids.matched_credit_ids.credit_move_id.move_id.payment_id.is_matched', + 'line_ids.matched_credit_ids.credit_move_id.move_id.line_ids.amount_residual', + 'line_ids.matched_credit_ids.credit_move_id.move_id.line_ids.amount_residual_currency', + 'line_ids.debit', + 'line_ids.credit', + 'line_ids.currency_id', + 'line_ids.amount_currency', + 'line_ids.amount_residual', + 'line_ids.amount_residual_currency', + 'line_ids.payment_id.state', + 'line_ids.full_reconcile_id', + 'sponsorship_scheduling_line.status' + ) + def _compute_amount(self): + # Call the original method to preserve Odoo's logic + super(AccountMove, self)._compute_amount() + for move in self.filtered("takaful_sponsorship_id"): + scheduling_amount = move.sponsorship_scheduling_line.amount + if move.payment_state == 'paid': + # refund_amount = move.invoice_line_ids.price_unit + refund_amount = sum(move.invoice_line_ids.mapped("price_unit")) + refunded_scheduling_amount = move.sponsorship_scheduling_line.refunded_amount + total_refunded_amount = refund_amount + refunded_scheduling_amount + + if refunded_scheduling_amount == scheduling_amount: + move.sponsorship_scheduling_line.status = 'fully_refund' + move.sponsorship_scheduling_line.refunded_amount = scheduling_amount + move.payment_details_line.is_fully_refund = True + + elif refunded_scheduling_amount < scheduling_amount: + move.sponsorship_scheduling_line.status = 'partial_refund' + move.sponsorship_scheduling_line.refunded_amount += refund_amount + move.payment_details_line.is_partial_refund = True + + else: + if not isinstance(scheduling_amount, (int, float)): + raise UserError( + _("Total amount should be less or equal %s") % scheduling_amount + ) + + has_partial_refund = False + has_fully_refund = False + has_paid = False + has_unpaid = False + for line in move.takaful_sponsorship_id.sponsorship_scheduling_line_ids: + if line.status == "partial_refund": + has_partial_refund = True + elif line.status == "fully_refund": + has_fully_refund = True + elif line.status == "paid": + has_paid = True + elif line.status == "unpaid": + has_unpaid = True + if has_partial_refund: + move.takaful_sponsorship_id.state = 'partial_refund' + elif has_fully_refund and not (has_partial_refund and has_paid and has_unpaid): + move.takaful_sponsorship_id.state = 'fully_refund' + elif has_fully_refund and (has_partial_refund or has_paid or has_unpaid): + move.takaful_sponsorship_id.state = 'partial_refund' + + def _post(self, soft=True): + """Post/Validate the documents. + + Posting the documents will give it a number, and check that the document is + complete (some fields might not be required if not posted but are required + otherwise). + If the journal is locked with a hash table, it will be impossible to change + some fields afterwards. + + :param soft (bool): if True, future documents are not immediately posted, + but are set to be auto posted automatically at the set accounting date. + Nothing will be performed on those documents before the accounting date. + :return Model: the documents that have been posted + """ + if soft: + future_moves = self.filtered(lambda move: move.date > fields.Date.context_today(self)) + future_moves.auto_post = True + for move in future_moves: + msg = _('This move will be posted at the accounting date: %(date)s', + date=format_date(self.env, move.date)) + move.message_post(body=msg) + to_post = self - future_moves + else: + to_post = self + + # `user_has_group` won't be bypassed by `sudo()` since it doesn't change the user anymore. + # if not self.env.su and not self.env.user.has_group('account.group_account_invoice'): + # raise AccessError(_("You don't have the access rights to post an invoice.")) + for move in to_post: + if move.partner_bank_id and not move.partner_bank_id.active: + raise UserError( + _("The recipient bank account link to this invoice is archived.\nSo you cannot confirm the invoice.")) + if move.state == 'posted': + raise UserError(_('The entry %s (id %s) is already posted.') % (move.name, move.id)) + if not move.line_ids.filtered(lambda line: not line.display_type): + raise UserError(_('You need to add a line before posting.')) + if move.auto_post and move.date > fields.Date.context_today(self): + date_msg = move.date.strftime(get_lang(self.env).date_format) + raise UserError(_("This move is configured to be auto-posted on %s", date_msg)) + + if not move.partner_id: + if move.is_sale_document(): + raise UserError( + _("The field 'Customer' is required, please complete it to validate the Customer Invoice.")) + elif move.is_purchase_document(): + raise UserError( + _("The field 'Vendor' is required, please complete it to validate the Vendor Bill.")) + + if move.is_invoice(include_receipts=True) and float_compare(move.amount_total, 0.0, + precision_rounding=move.currency_id.rounding) < 0: + raise UserError( + _("You cannot validate an invoice with a negative total amount. You should create a credit note instead. Use the action menu to transform it into a credit note or refund.")) + + if move.line_ids.account_id.filtered(lambda account: account.deprecated): + raise UserError(_("A line of this move is using a deprecated account, you cannot post it.")) + + # Handle case when the invoice_date is not set. In that case, the invoice_date is set at today and then, + # lines are recomputed accordingly. + # /!\ 'check_move_validity' must be there since the dynamic lines will be recomputed outside the 'onchange' + # environment. + if not move.invoice_date: + if move.is_sale_document(include_receipts=True): + move.invoice_date = fields.Date.context_today(self) + move.with_context(check_move_validity=False)._onchange_invoice_date() + elif move.is_purchase_document(include_receipts=True): + raise UserError(_("The Bill/Refund date is required to validate this document.")) + + # When the accounting date is prior to the tax lock date, move it automatically to the next available date. + # /!\ 'check_move_validity' must be there since the dynamic lines will be recomputed outside the 'onchange' + # environment. + if (move.company_id.tax_lock_date and move.date <= move.company_id.tax_lock_date) and ( + move.line_ids.tax_ids or move.line_ids.tax_tag_ids): + move.date = move._get_accounting_date(move.invoice_date or move.date, True) + move.with_context(check_move_validity=False)._onchange_currency() + + for move in to_post: + # Fix inconsistencies that may occure if the OCR has been editing the invoice at the same time of a user. We force the + # partner on the lines to be the same as the one on the move, because that's the only one the user can see/edit. + wrong_lines = move.is_invoice() and move.line_ids.filtered( + lambda aml: aml.partner_id != move.commercial_partner_id and not aml.display_type) + if wrong_lines: + wrong_lines.partner_id = move.commercial_partner_id.id + + # Create the analytic lines in batch is faster as it leads to less cache invalidation. + to_post.mapped('line_ids').create_analytic_lines() + to_post.write({ + 'state': 'posted', + 'posted_before': True, + }) + + for move in to_post: + move.message_subscribe([p.id for p in [move.partner_id] if p not in move.sudo().message_partner_ids]) + + for move in to_post: + if move.is_sale_document() \ + and move.journal_id.sale_activity_type_id \ + and (move.journal_id.sale_activity_user_id or move.invoice_user_id).id not in ( + self.env.ref('base.user_root').id, False): + move.activity_schedule( + date_deadline=min((date for date in move.line_ids.mapped('date_maturity') if date), + default=move.date), + activity_type_id=move.journal_id.sale_activity_type_id.id, + summary=move.journal_id.sale_activity_note, + user_id=move.journal_id.sale_activity_user_id.id or move.invoice_user_id.id, + ) + + customer_count, supplier_count = defaultdict(int), defaultdict(int) + for move in to_post: + if move.is_sale_document(): + customer_count[move.partner_id] += 1 + elif move.is_purchase_document(): + supplier_count[move.partner_id] += 1 + for partner, count in customer_count.items(): + (partner | partner.commercial_partner_id)._increase_rank('customer_rank', count) + for partner, count in supplier_count.items(): + (partner | partner.commercial_partner_id)._increase_rank('supplier_rank', count) + + # Trigger action for paid invoices in amount is zero + to_post.filtered( + lambda m: m.is_invoice(include_receipts=True) and m.currency_id.is_zero(m.amount_total) + ).action_invoice_paid() + + # Force balance check since nothing prevents another module to create an incorrect entry. + # This is performed at the very end to avoid flushing fields before the whole processing. + to_post._check_balanced() + return to_post + + +class AccountMoveLines(models.Model): + _inherit = 'account.move.line' + + takaful_sponsorship_id = fields.Many2one('takaful.sponsorship', related='move_id.takaful_sponsorship_id', store=True) + diff --git a/odex25_takaful/odex_takaful/models/account_payment.py b/odex25_takaful/odex_takaful/models/account_payment.py new file mode 100644 index 000000000..7728b983f --- /dev/null +++ b/odex25_takaful/odex_takaful/models/account_payment.py @@ -0,0 +1,7 @@ +from odoo import models, fields + + +class AccountPayment(models.Model): + _inherit = 'account.payment' + + takaful_sponsorship_id = fields.Many2one(related="move_id.takaful_sponsorship_id") \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/models/donation_details_lines.py b/odex25_takaful/odex_takaful/models/donation_details_lines.py new file mode 100644 index 000000000..ee84a3f7b --- /dev/null +++ b/odex25_takaful/odex_takaful/models/donation_details_lines.py @@ -0,0 +1,1203 @@ +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError, UserError +import re +import requests +import logging +from datetime import datetime, date +from dateutil.relativedelta import relativedelta +import json +from odoo.osv import expression + +_logger = logging.getLogger(__name__) + + +class DonationsDetailsLines(models.Model): + _name = "donations.details.lines" + _inherit = ['mail.thread'] + _rec_name = 'sequence_no' + + @api.model + def _default_journal_id(self): + journal_id = self.env.company.sponsorship_direct_debit_journal_id.id + return journal_id if journal_id else False + + name = fields.Text(string="Note") + display_type = fields.Selection([ + ('line_section', "Section"), + ('line_note', "Note")], default=False, help="Technical field for UX purpose.") + sequence = fields.Integer(string='Sequence', default=10) + sequence_no = fields.Char(default='/', readonly=True, copy=False) + donation_type = fields.Selection([('donation', 'Donation'), ('waqf', 'Waqf'), ('sponsorship', 'Sponsorship'), ], + string='Donation Type', default='donation') + donation_types = fields.Selection([('donation', 'Donation'), ('waqf', 'Waqf')], string='Donation Type', default='donation') + product_template_id = fields.Many2one('product.template', string="Donation Name", required=True) + product_id = fields.Many2one('product.product', compute='_compute_product_id') + sponsorship_id = fields.Many2one('takaful.sponsorship', string="Sponsorship", ondelete='cascade') + sponsorship_mechanism_id = fields.Many2one('takaful.sponsorship', string="Sponsorship", ondelete='cascade') + sponsorship_creation_date = fields.Datetime() + donation_amount = fields.Float(string='Donation Amount', store=True) + donation_qty = fields.Float(string='Donation QTY', default=1) + donation_mechanism = fields.Selection( + [('with_conditions', _('With Conditions')), ('without_conditions', _('Without Conditions'))], + string='Donation Mechanism', readonly=True) + benefit_type = fields.Selection([('orphan', 'Orphans'), ('widow', 'Widows'), ('both', 'Both')], + string='Sponsorship Beneficiary Type', tracking=True, default="both") + sponsorship_type = fields.Selection([('person', 'Individual'), ('group', 'Group')], string='Sponsorship Type', + tracking=True, default='group') + gender = fields.Selection(selection=[('male', 'Male'), ('female', 'Female')], string="Gender") + age_category_id = fields.Many2one('age.category', string='Age Category') + education_status = fields.Selection(string='Education Status', + selection=[('educated', 'educated'), ('illiterate', 'illiterate'), + ('under_study_age', 'Under Study Age')]) + education_level = fields.Many2one("education.level", string='Education Levels') + + members_domain_ids = fields.Many2many('family.member', compute='_compute_members_domain_ids') + family_domain_ids = fields.Many2many('grant.benefit', compute='_compute_family_domain_ids') + benefit_id = fields.Many2one('family.member', string='Beneficiary Name', ondelete='restrict', domain="[('id', 'in', members_domain_ids)]", tracking=True) + family_id = fields.Many2one('grant.benefit', string='Family', ondelete='restrict', domain="[('id', 'in', family_domain_ids)]", tracking=True) + benefit_ids = fields.Many2many('family.member', string='Beneficiaries Names', tracking=True, domain="[('id', 'in', members_domain_ids) , ('age' , '<' , ages)]") + sponsorship_duration = fields.Selection([('temporary', 'Temporary'), ('permanent', 'Permanent')], + string='Sponsorship Type', default="temporary") + start_date = fields.Date(string="Sponsorship Start Date", copy=False, default=fields.Date.today()) + end_date = fields.Date(string="Sponsorship End Date", compute='_compute_end_date', store=True) + payment_option = fields.Selection([('month', 'Monthly'), ('once', 'For Once')], string='Payment Option') + payment_month_count = fields.Integer(string='Payment Month Count', default=1) + payment_month_count_visibility = fields.Boolean(compute="_compute_payment_month_count_visibility") + fixed_value = fields.Boolean(string='Is Fixed Value?', related='product_template_id.fixed_value') + benefits_count = fields.Integer(string='Benefits Count', compute='_get_benefits_count') + total_donation_amount = fields.Float(string='Total Donation Amount', compute='_get_total_donation_amount') + total_months_amount = fields.Float(string='Total Months Amount', compute='_get_total_months_amount') + currency_id = fields.Many2one('res.currency', string='Currency', + default=lambda self: self.env.company.currency_id, readonly=True) + sponsorships_computed = fields.Boolean(copy=False, readonly=True) + direct_debit = fields.Boolean(string='Direct Debit') + benefit_id_number = fields.Char("Benefit ID Number") + benefit_family_code = fields.Char("Benefit Family Code") + editable = fields.Boolean(string="Editable", default=True) # To differentiate + direct_debit_partner_bank_id = fields.Many2one("res.partner.bank", string="Direct Debit Partner Bank", domain="[('partner_id', '=', sponsor_id)]") + sponsor_id = fields.Many2one('res.partner', compute='_compute_sponsor_id', store=True, readonly=True) + sponsor_phone = fields.Char(related='sponsor_id.mobile') + branch_custom_id = fields.Many2one('branch.settings', compute='_compute_branch_custom_id') + record_type = fields.Selection([('sponsorship', 'Sponsorship'),('donation', 'Donation')], compute='_compute_record_type', store=True, readonly=True) + state = fields.Selection([('draft', 'Draft'),('confirmed', 'Confirmed'),('waiting', 'Waiting'), ('active', 'Active'),('closed', 'Closed'),('extended', 'Extended'),('replace', 'To Replace'), ('paid', 'Paid')], string='State', default='draft') + sponsorship_scheduling_line_ids = fields.One2many('sponsorship.scheduling.line', 'donation_detail_linked_id') + extension_history_ids = fields.One2many('donation.extension.history', 'donation_detail_id', + string='Extension History') + extension_count = fields.Integer(string='Extensions', compute='_compute_extension_count') + replacement_log_ids = fields.One2many('donation.replacement.log', 'donation_detail_id', + string='Replacement Log') + replacement_count = fields.Integer(string='Replacement', compute='_compute_replacement_count') + + show_extend_button = fields.Boolean(string='Show Extend Button', compute='_compute_show_extend_button') + show_replaced_button = fields.Boolean(string='Show Replaced Button', compute='_compute_show_replaced_button') + show_add_benefit_button = fields.Boolean(string='Show Add Benefit Button', compute='_compute_show_add_benefit_button') + is_paid = fields.Boolean(string="Is Paid", default=False) + parent_state = fields.Char(compute='_compute_parent_state') + hide_beneficiary_group = fields.Boolean(compute='_compute_hide_beneficiary_group') + debit_payment_file_attachment = fields.Binary(string='Debit Payment Attachment', attachment=True) + debit_payment_attachment_file_name = fields.Char('Debit Payment File Name', required=False) + journal_id = fields.Many2one('account.journal', string="Journal",domain="[('type','=','bank')]",default=_default_journal_id) + benefit_status = fields.Selection(related='benefit_id.member_status') + ages = fields.Integer(compute='_compute_get_age_range' , store=True) + waiting_date = fields.Date( + string="تاريخ الانتظار", + ) + actual_end_date = fields.Date(string="مدة الانتظار", compute='_compute_actual_end_date', store=True) + period_display = fields.Char( + string="Period", + compute="_compute_period_display" ) + + age_category = fields.Selection([ + ('18', '+18'), + ('16', '+16'), + ('all', 'جميع الأعمار'), + ], string="الفئة العمرية", compute="_compute_age_category") + + @api.depends('sponsorship_duration', 'payment_month_count', 'direct_debit') + def _compute_age_category(self): + for rec in self: + print( rec.sponsorship_duration , ' ' ,rec.direct_debit , ' ' , rec.payment_month_count) + if rec.sponsorship_duration == 'permanent': + rec.age_category = 'all' + elif rec.sponsorship_duration != 'permanent' : + if rec.direct_debit: + rec.age_category = '16' + elif rec.sponsorship_duration != 'permanent' and rec.payment_month_count >= 6: + rec.age_category = 'all' + elif rec.sponsorship_duration != 'permanent' and rec.payment_month_count < 6: + rec.age_category = '18' + else: + rec.age_category = 'all' + + @api.depends('benefit_ids.end_date') + def _compute_actual_end_date(self): + for rec in self: + if rec.benefit_ids: + # take the first benefit record + first_benefit = rec.benefit_ids[0] + rec.actual_end_date = first_benefit.end_date + else: + rec.actual_end_date = False + @api.depends('end_date', 'waiting_date') + def _compute_period_display(self): + today = date.today() + for rec in self: + + # pick whichever date is set + if rec.state == 'replace' : + base_date = rec.end_date + elif rec.state == 'waiting': + base_date = rec.waiting_date + else: + base_date = False + if base_date: + delta = relativedelta(today, base_date) + # build human-readable string + if delta.years > 0: + rec.period_display = f"{delta.years} year(s)" + elif delta.months > 0: + rec.period_display = f"{delta.months} month(s)" + elif delta.days > 0: + rec.period_display = f"{delta.days} day(s)" + else: + rec.period_display = "Today" + else: + rec.period_display = "No date" + + + + @api.constrains('state') + def _compute_dates(self): + """Automatically set waiting_date or replace_date based on state.""" + for rec in self: + if rec.state == 'waiting': + rec.waiting_date = date.today() + else: + rec.waiting_date = False + + + # cheque_number = fields.Integer(string="Cheque Number") + # cheque_due_date = fields.Date(string="Cheque Due Date") + # cheque_file_attachment = fields.Binary(string='Cheque Attachment', attachment=True) + # cheque_attachment_file_name = fields.Char('Cheque File Name', required=False) + # bank_transfer_file_attachment = fields.Binary(string='Bank Transfer Attachment', attachment=True) + # bank_transfer_attachment_file_name = fields.Char('Bank Transfer File Name', required=False) + + + @api.depends('sponsorship_duration' , 'product_template_id' , 'payment_month_count' , 'direct_debit') + def _compute_get_age_range(self): + for rec in self: + x = [] + branch_id = rec.branch_custom_id.id + records = self.env['donations.details.lines'].search(['|' , ('state', '=', 'replace') , ('state', '=', 'waiting') ]) + filtered_records = records.filtered(lambda r: r.sponsorship_mechanism_id.branch_custom_id.id == branch_id) + + for record in filtered_records: + if record.sponsorship_duration == 'permanent' : + x.append(1) + elif record.sponsorship_duration != 'permanent' and record.payment_month_count < 6 and record.direct_debit : + x.append(16) + elif record.sponsorship_duration != 'permanent' and record.payment_month_count >= 6 : + x.append(1) + elif record.sponsorship_duration != 'permanent' and record.payment_month_count < 6 : + x.append(18) + + + if len(x) > 0 : + lowest_value = min(x) if x else None + else: + lowest_value = 100 + + rec.ages = lowest_value + + @api.depends('extension_history_ids') + def _compute_extension_count(self): + for rec in self: + rec.extension_count = len(rec.extension_history_ids) + + @api.depends('replacement_log_ids') + def _compute_replacement_count(self): + for rec in self: + rec.replacement_count = len(rec.replacement_log_ids) + + @api.depends('sponsorship_id', 'sponsorship_mechanism_id') + def _compute_sponsor_id(self): + for rec in self: + rec.sponsor_id = rec.sponsorship_id.sponsor_id or rec.sponsorship_mechanism_id.sponsor_id + + def _compute_branch_custom_id(self): + for rec in self: + rec.branch_custom_id = rec.sponsorship_id.branch_custom_id or rec.sponsorship_mechanism_id.branch_custom_id + + @api.depends('direct_debit', 'end_date') + def _compute_show_extend_button(self): + today = fields.Date.today() + for rec in self: + show_extend_button = ( + rec.record_type == 'sponsorship' and + rec.end_date and + rec.end_date >= today and + rec.state == 'active' + ) + rec.show_extend_button = show_extend_button + + @api.depends('donation_mechanism', 'state') + def _compute_show_replaced_button(self): + for rec in self: + show_replaced_button = ( + rec.record_type == 'sponsorship' and + rec.state in ('active','replace') and + (rec.benefit_id or rec.benefit_ids) + + ) + rec.show_replaced_button = show_replaced_button + + @api.depends('record_type', 'state') + def _compute_show_add_benefit_button(self): + for rec in self: + show_add_benefit_button = ( + rec.record_type == 'sponsorship' and + rec.state == 'waiting' + ) + rec.show_add_benefit_button = show_add_benefit_button + + @api.depends('sponsorship_duration', 'direct_debit', 'record_type', 'start_date') + def _compute_hide_beneficiary_group(self): + for rec in self: + if rec.sponsorship_duration == 'temporary' and rec.direct_debit and rec.record_type == 'sponsorship' and rec.start_date != fields.Date.context_today( + rec): + rec.hide_beneficiary_group = True + else: + rec.hide_beneficiary_group = False + + @api.depends("record_type", "sponsorship_duration", "donation_mechanism", "direct_debit") + def _compute_payment_month_count_visibility(self): + for line in self: + if line.record_type == "sponsorship": + if line.sponsorship_duration == "temporary": + line.payment_month_count_visibility = True + else: + line.payment_month_count_visibility = False + elif line.record_type == "donation" and line.donation_mechanism == "with_conditions" and line.direct_debit: + line.payment_month_count_visibility = True + else: + line.payment_month_count_visibility = False + + + @api.depends('sponsorship_id', 'sponsorship_mechanism_id', 'sponsorship_id.state', 'sponsorship_mechanism_id.state') + def _compute_parent_state(self): + for rec in self: + rec.parent_state = rec.sponsorship_id.state if rec.sponsorship_id else rec.sponsorship_mechanism_id.state + + @api.depends('sponsorship_id', 'sponsorship_mechanism_id', 'sponsorship_id.record_type', + 'sponsorship_mechanism_id.record_type') + def _compute_record_type(self): + for rec in self: + rec.record_type = rec.sponsorship_id.record_type if rec.sponsorship_id else rec.sponsorship_mechanism_id.record_type + + def _compute_product_id(self): + for rec in self: + if rec.product_template_id: + rec.product_id = rec.product_template_id._get_first_possible_variant_id() + else: + rec.product_id = False + + def onset_benefit_id(self): + for rec in self: + if rec.state == 'waiting' and (rec.benefit_id or rec.benefit_ids): + rec.state = 'active' + sponsor_id = rec.sponsorship_mechanism_id.sponsor_id.id if rec.sponsorship_mechanism_id else rec.sponsorship_id.sponsor_id.id + (rec.benefit_id | rec.benefit_ids).write( + {'sponsor_related_id': sponsor_id, 'kafala_status': 'have_kafala', "sponsorship_end_date": rec.end_date if rec.end_date else False}) + + @api.model + def run_check_all_end_dates(self): + lines = self.search([('end_date', '!=', False)]) + lines.check_end_date() + + @api.depends('payment_month_count', 'donation_amount', 'sponsorship_duration') + def _get_total_months_amount(self): + for rec in self: + rec.total_months_amount = rec.donation_amount * rec.payment_month_count + + @api.onchange('sponsorship_duration') + def _onchange_sponsorship_duration(self): + for rec in self: + if rec.sponsorship_duration == "permanent": + rec.direct_debit = False + + @api.onchange('product_template_id') + def _onchange_product_template_id(self): + for rec in self: + rec.donation_amount = rec.product_template_id.list_price + + def check_end_date(self): + for record in self: + if record.end_date: + today = fields.Date.today() + end_date = record.end_date + days_difference = (today - record.end_date).days + if days_difference == 30: + record.action_send_whatsapp(30, end_date) + elif days_difference == 16: + record.action_send_whatsapp(16, end_date) + elif days_difference == 4: + record.action_send_whatsapp(4, end_date) + return False + + def action_send_whatsapp(self, duration, end_date): + + if duration == 30: + notification = self.env['takaful.notification'].sudo().search( + [('notification_type', '=', 'before_finish'), ('message_type_ids.tool_type', '=', 'app'), + ('duration', '=', 30)], + limit=1 + ) + expiry_date_str = end_date.strftime('%d-%m-%Y') if end_date else 'N/A' + message = notification.message or _("No message found in 'Before Kafala End Date' notification.") + message = message.replace('[ExpiryDate]', expiry_date_str) + + elif duration == 16: + notification = self.env['takaful.notification'].sudo().search( + [('notification_type', '=', 'before_finish'), ('message_type_ids.tool_type', '=', 'app'), + ('duration', '=', 16)], + limit=1 + ) + message = notification.message or _("No message found in 'Before Kafala End Date' notification.") + + + + + elif duration == 4: + notification = self.env['takaful.notification'].sudo().search( + [('notification_type', '=', 'before_finish'), ('message_type_ids.tool_type', '=', 'app'), + ('duration', '=', 4)], + limit=1 + ) + expiry_date_str = end_date.strftime('%d-%m-%Y') if end_date else 'N/A' + message = notification.message or _("No message found in 'Before Kafala End Date' notification.") + message = message.replace('[ExpiryDate]', expiry_date_str) + + if not notification: + raise ValidationError(_("No notification of type Before Kafala End Date found.")) + + config = self.env['ir.config_parameter'].sudo() + account_sid = config.get_param('odex_takaful.twilio_account_sid') + auth_token = config.get_param('odex_takaful.twilio_auth_token') + from_whatsapp = config.get_param('odex_takaful.twilio_from_whatsapp') + + if not account_sid or not auth_token or not from_whatsapp: + raise ValidationError( + _("Twilio configuration is missing. Please configure Twilio SID, Auth Token, and WhatsApp number in General Configurations.")) + + from_cleaned_mobile = re.sub(r'[^\d+]', '', from_whatsapp) + from_whatsapp_number = f'whatsapp:{from_cleaned_mobile}' + # Search for the notification message for 'create_kafala' + + # Use the message from the notification + amount = self.donation_amount if hasattr(self, 'donation_amount') else 0.0 + + for partner in self: + sponsorship_id = partner.sponsorship_mechanism_id or partner.sponsorship_id + mobile = sponsorship_id.sponsor_id.mobile if sponsorship_id.sponsor_id else sponsorship_id.member_id.mobile + if mobile: + # Clean the number (keep + and digits only) + cleaned_mobile = re.sub(r'[^\d+]', '', mobile) + to_whatsapp_number = f'whatsapp:{cleaned_mobile}' + url = f"https://api.twilio.com/2010-04-01/Accounts/{account_sid}/Messages.json" + + payload = { + 'From': from_whatsapp_number, + 'To': to_whatsapp_number, + 'Body': message, + } + + response = requests.post( + url, + data=payload, + auth=(account_sid, auth_token) + ) + + if response.status_code != 201: + raise ValidationError(_("Failed to send WhatsApp message: %s") % response.text) + + # def sol_by_cart(self, operation, product_id, sponsorship_id): + # """ + # Create Sale Order Line By + # Cart Functionality + # """ + # + # sol_object = self.env["donations.details.lines"] + # + # if product_id.payment_method_id: + # payment_method = product_id.payment_method_id.id + # else: + # payment_method = self.env["takaful.payment.method"].search([('payment_method', '=', 'cash')], limit=1).id + # + # sol_data = dict() + # sol_data["product_template_id"] = product_id.id + # sol_data["sponsorship_id"] = sponsorship_id.id + # sol_data["donation_amount"] = product_id.fixed_donation_amount + # sol_data["payment_method_id"] = payment_method + # sol_data["donation_types"] = 'donation' + # sol_data["name"] = product_id.name + # + # if operation == "add": + # sol_object.create(sol_data) + # return + # + # sol_ = sol_object.search( + # [('sponsorship_id', '=', sponsorship_id.id), ('product_template_id', '=', product_id.id), ]) # ("cart_flag", "=", True) + # + # if operation == "remove": + # sol_.unlink() + # return + # + # + # def user_input_qty_sol(self, _qty, product_id, sponsorship_id): + # sol_object = self.env["donations.details.lines"] + # product_object = self.env["product.template"] + # cart_product_details = sol_object.search( + # [('sponsorship_id', "=", sponsorship_id), ("product_template_id", "=", product_id) + # ]) # ("cart_flag", "=", True) + # if product_id.payment_method_id: + # payment_method = product_id.payment_method_id.id + # else: + # payment_method = self.env["takaful.payment.method"].search([('payment_method', '=', 'cash')], limit=1).id + # + # + # donation_id = product_object.search([('id', '=', product_id)]) + # sol_data = dict() + # sol_data["product_template_id"] = donation_id.id + # sol_data["sponsorship_id"] = sponsorship_id + # sol_data["donation_amount"] = donation_id.list_price + # sol_data["payment_method_id"] = payment_method + # sol_data["donation_types"] = 'donation' + # sol_data["name"] = donation_id.name + # so = sol_object.create(sol_data) + # return + + def sol_by_cart(self, operation, product_id, sponsorship_id): + """ + Create Sale Order Line By + Cart Functionality + """ + + sol_object = self.env["donations.details.lines"] + + sol_data = dict() + sol_data["product_template_id"] = product_id.id + sol_data["sponsorship_id"] = sponsorship_id.id + sol_data["donation_amount"] = product_id.fixed_donation_amount + sol_data["donation_types"] = 'donation' + sol_data["name"] = product_id.name + + if operation == "add": + sol_object.create(sol_data) + return + + sol_ = sol_object.search( + [('sponsorship_id', '=', sponsorship_id.id), + ('product_template_id', '=', product_id.id), ]) # ("cart_flag", "=", True) + + if operation == "remove": + sol_.unlink() + return + + def user_input_qty_sol(self, _qty, product_id, sponsorship_id): + # sol_object = self.env["donations.details.lines"] + # product_object = self.env["product.template"] + # cart_product_details = sol_object.search( + # [('sponsorship_id', "=", sponsorship_id), ("product_template_id", "=", product_id) + # ]) # ("cart_flag", "=", True) + # donation_id = product_object.search([('id', '=', product_id)]) + # sol_data = dict() + # sol_data["product_template_id"] = donation_id.id + # sol_data["sponsorship_id"] = sponsorship_id + # sol_data["donation_amount"] = donation_id.fixed_donation_amount + # sol_data["donation_types"] = 'donation' + # sol_data["name"] = donation_id.name + # so = sol_object.create(sol_data) + """Kept for compatibility, mirrors logic on sponsorship model. + Prefer calling the method on 'takaful.sponsorship'. + """ + sol_object = self.env["donations.details.lines"].sudo() + product_object = self.env["product.template"].sudo() + product = product_object.browse(product_id) + if not product.exists(): + return + existing = sol_object.search([ + ("sponsorship_id", "=", sponsorship_id), + ("product_template_id", "=", product_id) + ], limit=1) + if _qty and _qty > 0: + if existing: + existing.write({"donation_qty": _qty}) + else: + sol_object.create({ + "product_template_id": product.id, + "sponsorship_id": sponsorship_id, + "donation_types": 'donation', + "name": product.name, + "donation_qty": _qty, + "donation_amount": product.lst_price + }) + else: + if existing: + existing.unlink() + return + + @api.onchange('benefit_id_number', 'sponsorship_type', 'benefit_type') + def _onchange_benefit_id_number(self): + for rec in self: + if rec.benefit_id_number and rec.sponsorship_type == 'person' and rec.benefit_type in ['orphan', 'widow']: + member = self.env['family.member'].search([('member_id_number', '=', rec.benefit_id_number)], limit=1) + if member: + rec.benefit_id = member + else: + rec.benefit_id = False + + @api.constrains('payment_month_count') + def _check_payment_month_count(self): + for rec in self: + if rec.donation_type == 'sponsorship' and rec.sponsorship_duration == 'temporary' and rec.payment_option == 'month' and rec.payment_month_count <= 0: + raise ValidationError( + _("Payment Month Count should be greather than zero!") + ) + + @api.onchange('sponsorship_duration', 'direct_debit', 'record_type') + def _onchange_sponsorship_duration(self): + for rec in self: + if rec.record_type == "sponsorship" and rec.sponsorship_duration: + product_templ_id = self.env["product.template"].sudo().search([("sponsorship_duration", "=", rec.sponsorship_duration)], limit=1) + if product_templ_id: + rec.product_template_id = product_templ_id.id + if rec.sponsorship_duration == 'temporary' and not rec.direct_debit: + rec.start_date = fields.Date.context_today(rec) + + + + @api.model + def default_get(self, fields): + res = super(DonationsDetailsLines, self).default_get(fields) + parent_id = self.env.context.get('default_active_id') + parent_record = self.env['takaful.sponsorship'].browse(parent_id) + + res['sponsorship_creation_date'] = parent_record.sponsorship_creation_date + res['branch_custom_id'] = parent_record.branch_custom_id + # res['donation_mechanism'] = parent_record.donation_mechanism + + self._onchange_sponsorship_type() + return res + + + @api.onchange('donation_types', 'donation_type') + def _onchange_sponsorship_type(self): + for rec in self: + if rec.sponsorship_mechanism_id: + if rec.sponsorship_mechanism_id.record_type == 'sponsorship': + rec.donation_type = 'sponsorship' + + if rec.donation_types: + if rec.donation_types == 'donation': + rec.donation_type = 'donation' + elif rec.donation_types == 'waqf': + rec.donation_type = 'waqf' + + @api.onchange('direct_debit') + def _onchange_direct_debit(self): + for rec in self: + if rec.direct_debit: + rec.payment_option = 'month' + else: + rec.payment_option = 'once' + + @api.depends('start_date', 'payment_month_count') + def _compute_end_date(self): + for record in self: + if record.start_date and record.payment_month_count: + record.end_date = record.start_date + relativedelta(months=record.payment_month_count) + else: + record.end_date = False + + @api.depends('benefit_ids') + def _get_benefits_count(self): + for rec in self: + rec.benefits_count = len(rec.benefit_ids | rec.benefit_id) + + @api.depends('benefits_count', 'donation_amount', 'total_months_amount', 'donation_qty', 'record_type', 'sponsorship_type') + def _get_total_donation_amount(self): + for rec in self: + if rec.record_type == 'donation': + if rec.sponsorship_id.donation_mechanism == 'without_conditions': + rec.total_donation_amount = rec.donation_amount * rec.donation_qty + else: + rec.total_donation_amount = rec.total_months_amount + else: + rec.total_donation_amount = rec.total_months_amount * (rec.benefits_count or 1) + + @api.depends('family_id','record_type') + def _compute_family_domain_ids(self): + for rec in self: + domain = [] + if rec.record_type == 'donation': + domain = [ + '|', + ('state', '=', 'second_approve'), + '&', + ('state', 'in', ('waiting_approve', 'first_approve')), + ('action_type', '=', 'suspended')] + family = self.env['grant.benefit'].sudo().search(domain) + + rec.family_domain_ids = [(6, 0, family.ids)] if family else False + + @api.depends('gender', + 'record_type', + 'education_status', + 'education_level', + 'sponsorship_type', + 'benefit_type', + 'age_category_id', + 'benefit_id_number', + 'benefit_family_code', + 'payment_month_count', + 'direct_debit', + 'donation_mechanism', + 'family_id', + 'sponsorship_duration') + def _compute_members_domain_ids(self): + for rec in self: + domain = [] + if rec.record_type == 'sponsorship': + domain = [ + '|', + ('state', '=', 'second_approve'), + '&', + ('state', 'in', ('waiting_approve', 'first_approve')), + ('action_type', '=', 'suspended')] + + domain = expression.AND([domain, [ + ('member_status', '=', 'benefit'), + ('sponsor_related_id', '=', False), + ('general_restriction', '=', False) + ]]) + + if rec.benefit_family_code: + domain = expression.AND([domain, [ + ('benefit_id.code', '=', rec.benefit_family_code) + ]]) + + if rec.age_category_id: + domain = expression.AND([domain, [ + ('age', '<=', rec.age_category_id.max_age), + ('age', '>=', rec.age_category_id.min_age) + ]]) + + if rec.education_level: + domain = expression.AND([domain, [ + ('education_levels', '=', rec.education_level.id) + ]]) + + if rec.education_status: + domain = expression.AND([domain, [ + ('education_status', '=', rec.education_status) + ]]) + + if rec.benefit_type == 'orphan': + if rec.gender == 'female': + domain = expression.AND([domain, [ + ('relationn.relation_type', '=', 'daughter') + ]]) + elif rec.gender == 'male': + domain = expression.AND([domain, [ + ('relationn.relation_type', '=', 'son') + ]]) + else: + domain = expression.AND([domain, [ + ('relationn.relation_type', 'in', ['daughter', 'son']) + ]]) + elif rec.benefit_type == 'widow': + domain = expression.AND([domain, [ + ('relationn.relation_type', 'in', ['mother', 'replacement_mother']) + ]]) + elif rec.gender == 'female': + domain = expression.AND([domain, [ + ('relationn.relation_type', '=', 'daughter') + ]]) + elif rec.gender == 'male': + domain = expression.AND([domain, [ + ('relationn.relation_type', '=', 'son') + ]]) + + if rec.benefit_id_number: + domain = expression.AND([domain, [ + ('member_id_number', '=', rec.benefit_id_number) + ]]) + + if rec.record_type == "sponsorship" and rec.sponsorship_duration == "temporary": + benefit_age_limit = None + if rec.direct_debit: + benefit_age_limit = 16 + elif rec.payment_month_count < 6: + benefit_age_limit = 18 + if benefit_age_limit: + domain = expression.AND([domain, [ + ('age', '>=', benefit_age_limit) + ]]) + if rec.sponsorship_id or rec.sponsorship_mechanism_id: + all_benefit_ids = ( + + ( + rec.sponsorship_mechanism_id.donations_details_lines_mechanism_ids if rec.sponsorship_mechanism_id else + self.env['donations.details.lines']) + ) + selected_benefit_ids = all_benefit_ids.mapped('benefit_ids').ids + domain = expression.AND([domain, [('id', 'not in', selected_benefit_ids)]]) + + elif rec.record_type == 'donation' and rec.donation_mechanism == "with_conditions" and rec.family_id: + domain = [("benefit_id", "=", rec.family_id.id)] + members = self.env['family.member'].sudo().search(domain) + + rec.members_domain_ids = members if members else self.env['family.member'].sudo().browse() + + + @api.onchange('product_template_id', 'donation_types', 'donation_type', 'sponsorship_duration') + def onchange_product_template_id(self): + for rec in self: + # Process both donation details and mechanism details + if rec.product_template_id.fixed_value: + rec.donation_amount = rec.product_template_id.list_price + rec.donation_qty = 1 + selected_donations = [] + if rec.sponsorship_id or rec.sponsorship_mechanism_id: + all_donation_lines = ( + (rec.sponsorship_id.donations_details_lines if rec.sponsorship_id else self.env[ + 'donations.details.lines']) | + ( + rec.sponsorship_mechanism_id.donations_details_lines_mechanism_ids if rec.sponsorship_mechanism_id else + self.env['donations.details.lines']) + ) + selected_donations = all_donation_lines.mapped('product_template_id.id') + domain = [('id', 'not in', selected_donations), ('sale_ok', '=', True)] + # Apply condition based on record type + record_type = rec.sponsorship_id.record_type if rec.sponsorship_id else rec.sponsorship_mechanism_id.record_type + + if record_type == 'donation': + domain.append(('donation_category', '=', 'donation')) + + elif record_type == 'sponsorship': + domain.append(('donation_category', '=', 'sponsorship')) + domain.append(('sponsorship_duration', '=', rec.sponsorship_duration)) + + return { + 'domain': { + 'product_template_id': domain} + } + + @api.onchange('donation_type') + def onchange_donation_type(self): + for rec in self: + if rec.donation_type == 'sponsorship': + rec.donation_mechanism = 'with_conditions' + + def compute_sponsorships_lines(self): + for rec in self: + sponsorship_id = rec.sponsorship_mechanism_id if rec.sponsorship_mechanism_id.donations_details_lines_mechanism_ids else rec.sponsorship_id + + SponsorshipSchedulingLink = self.env['sponsorship.scheduling.line'].sudo() + SponsorshipSchedulingLink.search([('sponsorship_id', 'in', sponsorship_id.ids), + ('donation_detail_linked_id.sponsorships_computed', '=', False)]).unlink() + + if rec.sponsorships_computed: + return + if rec.payment_option == 'month' and rec.direct_debit: + # Divide the total donation amount by the number of months + if rec.payment_month_count > 0: + base_amount, remainder = divmod(rec.total_donation_amount, rec.payment_month_count) + else: + raise ValidationError( + _("Payment Month Count Must be Bigger than zero!") + ) + + # Convert base_amount to a float with two decimal points + base_amount = float(base_amount) + + for index in range(rec.payment_month_count): + # Add 1 to the base amount for the first 'remainder' months to handle the rounding issue + amount = base_amount + 1 if index < remainder else base_amount + # Format the amount to 2 decimal places for better representation + amount = round(amount, 2) + # Calculate the month and year + scheduled_date = (rec.start_date + relativedelta(months=index)) + month_year = scheduled_date.strftime("%m/%Y") + # Create the Sponsorship Scheduling Link + SponsorshipSchedulingLink.create({ + 'sponsorship_id': sponsorship_id.id, + 'donation_detail_linked_id': rec.id, + 'beneficiary_id': rec.benefit_id.id, + 'month_year': month_year, + 'amount': amount, + 'sponsor_id': rec.sponsor_id.id, + 'scheduled_date': scheduled_date + }) + + rec.sponsorships_computed = True + + def action_delegate_to_catalog(self): + sponsorship_id = self.env.context.get('sponsorship_id') + if sponsorship_id: + sponsorship = self.env['takaful.sponsorship'].browse(sponsorship_id) + if sponsorship: + return sponsorship.donation_catelog() # Call the method on sale.order + return False + + def donation_catalog(self): + cart_object = self.env["donations.details.lines"] + product_object = self.env["product.template"] + cart_products_details = cart_object.search( + [('sponsorship_id', "=", self.sponsorship_id.id)]) # , ("cart_flag", "=", True) + product_object_data = product_object.search( + [("_quantity", "!=", 0)]) + assign_quantity = 0 + for rec in product_object_data: + rec._quantity = 0 + if len(cart_products_details) > 0: + for rec in cart_products_details: + # assign_quantity = rec.product_uom_qty + if assign_quantity == 0: + assign_quantity += 1 + rec.product_id._quantity = assign_quantity + # else: + # product_object_data = product_object.search( + # [("_quantity", "!=", 0)]) + # for rec in product_object_data: + # rec._quantity = 0 + + kanban_view = self.env.ref( + 'odex_takaful.product_template_view_kanban_odex_takaful') + all_donation_lines = self.sponsorship_id.donations_details_lines | self.sponsorship_id.donations_details_lines_mechanism_ids + + return { + 'type': 'ir.actions.act_window', + 'name': _('Choose Donation Items'), + 'res_model': 'product.template', + 'views': [(kanban_view.id, 'kanban')], + 'domain': [('id', 'not in', all_donation_lines.mapped('product_template_id').ids), + ('donation_category', '=', 'donation')], + 'context': { + # '_quantity_change': True, + 'sponsorship_id': self.id, + 'create': False + }, + 'help': _("""

+ Create a new donation +

""") + } + + @api.model + # @api.model_create_multi + def create(self, vals): + # Check if sequence_no is not already set + if vals.get('sequence_no', '/') == '/': + # Assign the next sequence number + vals['sequence_no'] = self.env['ir.sequence'].next_by_code('donations.details.lines.sequence') or '/' + if vals.get('display_type'): + vals.update({ + 'product_template_id': False, + 'donation_type': False, + }) + + record = super(DonationsDetailsLines, self).create(vals) + if record.benefit_ids == 1: + record.benefit_id = record.benefit_ids[0].id + print('Vals >>> ' , vals) + return record + + def write(self, vals): + res = False + for rec in self: + old_benefit = rec.benefit_id.name + old_benefits = rec.benefit_ids.mapped('name') # assuming benefit has a 'name' + old_benefits_set = set(old_benefits) + res |= super(DonationsDetailsLines, rec).write(vals) + rec.invalidate_cache() + rec = self.browse(rec.id) + + if 'display_type' in vals and self.filtered(lambda line: line.display_type != vals.get('display_type')): + raise UserError( + _("You cannot change the type of a sale quote line. Instead you should delete the current line and create a new line of the proper type.")) + if 'benefit_id' in vals: + new_benefit = rec.benefit_id.name or 'None' + sponsorship = self.env['takaful.sponsorship'].browse( + self.env.context.get(rec.sponsorship_id)) + if sponsorship and len(sponsorship) == 1: + message = _("Benefit changed from %s to %s in a donation item.") % ( + old_benefit or 'None', new_benefit) + sponsorship.message_post(body=message) + + # Auto-trigger state change when benefit is assigned to waiting line + + if 'benefit_ids' in vals: + new_benefits = rec.benefit_ids.mapped('name') + new_benefits_set = set(new_benefits) + + added = new_benefits_set - old_benefits_set + removed = old_benefits_set - new_benefits_set + + changes = [] + if added: + changes.append(_("Added: %s") % ', '.join(added)) + if removed: + changes.append(_("Removed: %s") % ', '.join(removed)) + + if changes: + # Find sponsorship + sponsorship = rec.sponsorship_id or self.env['takaful.sponsorship'].browse( + self.env.context.get(rec.sponsorship_id)) + + if sponsorship and len(sponsorship) == 1: + message = _("Benefit IDs changed in a donation item:
%s") % "
".join(changes) + sponsorship.message_post(body=message) + + # if 'state' in vals: + # print('In Vals') + # print("vals['state'] >>> " , vals['state']) + # if vals['state'] == 'waiting': + # vals['waiting_date'] = date.today() + # print("vals['waiting_date'] >>> " , vals['waiting_date']) + # vals['replace_date'] = False + # elif vals['state'] == 'replace': + # vals['replace_date'] = date.today() + # vals['waiting_date'] = False + # else: + # vals['waiting_date'] = False + # vals['replace_date'] = False + self.onset_benefit_id() + + return res + + def action_view_replacement_wizard(self): + self.ensure_one() + + # wizard = self.env['replacement.wiz'].create({ + # 'replacement_line_ids': [(0, 0, { + # 'sponsorship_type': self.sponsorship_type, + # 'from_benefit_id': self.benefit_id.id if self.sponsorship_type == 'person' else False, + # 'from_benefit_ids': [(6, 0, self.benefit_ids.ids)] if self.sponsorship_type == 'group' else False + # })] + # }) + + wizard = self.env['replacement.wiz'].create({ + 'old_family_id': self.family_id.id if self.family_id else False, + 'old_members_id': self.benefit_ids[0].id if self.benefit_ids else False, + 'record_type': self.record_type, + 'sponsorship_id': self.id, + }) + + return { + 'name': 'Replacement Wizard', + 'type': 'ir.actions.act_window', + 'res_model': 'replacement.wiz', + 'view_mode': 'form', + 'res_id': wizard.id, + 'target': 'new', + } + + def action_view_scheduling_lines(self): + self.ensure_one() + + return { + 'name': 'Sponsorship Scheduling Lines', + 'type': 'ir.actions.act_window', + 'res_model': 'sponsorship.scheduling.line', + 'view_mode': 'tree', + 'domain': [('donation_detail_linked_id', '=', self.id)], + 'context': {'default_donation_detail_linked_id': self.id, 'create': False, 'delete': False}, + } + + def action_register_payment(self): + self.ensure_one() + sponsorship_id = self.sponsorship_mechanism_id.id if self.sponsorship_mechanism_id else self.sponsorship_id.id + invoice_id = self.env['account.move'].sudo().search([ + ('takaful_sponsorship_id', '=', sponsorship_id), + ('move_type', '=', 'out_invoice'), + ('state', '=', 'posted'), + ('payment_state', 'in', ['not_paid', 'partial']) + ], limit=1, order='id') + if not invoice_id: + raise ValidationError(_("No invoice found for this sponsorship.")) + + return { + 'name': _('Register Payment'), + 'res_model': 'account.payment.register', + 'view_mode': 'form', + 'context': { + 'active_model': 'account.move', + 'active_ids': invoice_id.ids, + 'default_sponsorship_payment': True, + 'dont_redirect_to_payments': True, + 'sponsorship_line_ids': self.ids, + 'default_amount': self.total_donation_amount, + 'sponsorship_payment': True, + 'force_sponsorship_line_partner_id': self.sponsor_id.id, + }, + 'target': 'new', + 'type': 'ir.actions.act_window', + } + + def unlink(self): + self.product_template_id._quantity = 0 + return super().unlink() + + @api.model + def cron_send_direct_debit_end_date_reminders(self): + """ + Cron job to send SMS reminders for direct debit donations + when end_date is 30, 15, or 3 days away + """ + company = self.env.user.company_id + reminder_sms_template = company.reminder_sms_template_id + ended_sms_template = company.ended_sms_template_id + bot = self.env.ref('base.partner_root').id + + if not reminder_sms_template: + _logger.warning("No SMS reminder template configured in settings.") + return + + today = date.today() + reminder_days = [30, 15, 3] + + for days in reminder_days: + target_date = today + relativedelta(days=days) + + donation_lines = self.search([ + ('state', '=', 'active'), + ('direct_debit', '=', True), + ('end_date', '=', target_date), + ]) + + for line in donation_lines: + sponsor = line.sponsor_id + + if not sponsor or not sponsor.mobile: + _logger.warning( + "No sponsor or mobile number found for donation line ID %s", + line.id + ) + continue + + try: + line._message_sms_with_template( + template=reminder_sms_template, + put_in_queue=True, + partner_ids=sponsor.ids, + author_id=bot + ) + _logger.info( + "SMS reminder sent to sponsor %s for donation line %s (end date: %s, days remaining: %s)", + sponsor.name, + line.sequence_no, + line.end_date, + days + ) + except Exception as e: + _logger.error( + "Failed to send SMS reminder to sponsor %s for donation line %s: %s", + sponsor.name, + line.sequence_no, + str(e) + ) + + ended_lines = self.search([('end_date', '!=', False), ('end_date', '<', today)]) + ended_lines.write({ + 'state': 'closed' + }) + all_beneficiaries = ended_lines.benefit_ids | ended_lines.benefit_id + all_beneficiaries.write({ + 'sponsor_related_id': False + }) + for line in ended_lines: + line._message_sms_with_template( + template=ended_sms_template, + put_in_queue=True, + partner_ids=line.sponsor_id.ids, + author_id=bot + ) + + def action_extend_sponsorship(self): + """ + Open wizard to extend donation detail line + """ + + return { + 'type': 'ir.actions.act_window', + 'name': _('Extend Donation'), + 'res_model': 'donation.extension.wizard', + 'view_mode': 'form', + 'target': 'new', + 'context': { + 'donation_detail_ids': self.ids, + }, + } + + def action_view_extension_history(self): + """ + View extension history for this donation detail line + """ + self.ensure_one() + + return { + 'type': 'ir.actions.act_window', + 'name': _('Extension History'), + 'res_model': 'donation.extension.history', + 'view_mode': 'tree,form', + 'domain': [('donation_detail_id', '=', self.id)], + 'context': { + 'default_donation_detail_id': self.id, + 'create': False, + }, + } + + def action_view_replacement_log(self): + """ + View replacement log for this donation detail line + """ + self.ensure_one() + + return { + 'type': 'ir.actions.act_window', + 'name': _('Replacement Log'), + 'res_model': 'donation.replacement.log', + 'view_mode': 'tree,form', + 'domain': [('donation_detail_id', '=', self.id)], + 'context': { + 'default_donation_detail_id': self.id, + }, + } + + def replace_sponsor_wizard(self): + self.ensure_one() + return { + 'type': 'ir.actions.act_window', + 'name': _('Replace Sponsor'), + 'res_model': 'replace.sponsor.wizard', + 'view_mode': 'form', + 'target': 'new', + 'context': { + 'default_donation_detail_id': self.id, + }, + } + + + def add_benefit_wizard(self): + self.ensure_one() + return { + 'type': 'ir.actions.act_window', + 'name': _('Add Benefit'), + 'res_model': 'add.benefit.wizard', + 'view_mode': 'form', + 'target': 'new', + 'context': { + 'default_donation_detail_id': self.id, + }, + } diff --git a/odex25_takaful/odex_takaful/models/donation_extension_history.py b/odex25_takaful/odex_takaful/models/donation_extension_history.py new file mode 100644 index 000000000..b2f487273 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/donation_extension_history.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api, _ + + +class DonationExtensionHistory(models.Model): + _name = 'donation.extension.history' + _description = 'Donation Extension History' + _order = 'extension_date desc' + _rec_name = 'extension_ref' + + extension_ref = fields.Char( + string='Extension Reference', + readonly=True, + compute='_compute_extension_ref', + store=True + ) + + donation_detail_id = fields.Many2one( + 'donations.details.lines', + string='Donation Detail', + required=True, + ondelete='cascade', + index=True + ) + + sponsor_id = fields.Many2one( + 'res.partner', + string='Sponsor', + related='donation_detail_id.sponsor_id', + store=True, + readonly=True + ) + + sponsorship_id = fields.Many2one( + 'takaful.sponsorship', + string='Sponsorship', + related='donation_detail_id.sponsorship_id', + store=True, + readonly=True + ) + + product_template_id = fields.Many2one( + 'product.template', + string='Donation Item', + related='donation_detail_id.product_template_id', + store=True, + readonly=True + ) + + extension_amount = fields.Float( + string='Extension Amount', + required=True, + readonly=True + ) + + extension_months = fields.Integer( + string='Extension Months', + required=True, + readonly=True + ) + + old_end_date = fields.Date( + string='Old End Date', + required=True, + readonly=True + ) + + new_end_date = fields.Date( + string='New End Date', + required=True, + readonly=True + ) + + extension_date = fields.Datetime( + string='Extension Date', + default=fields.Datetime.now, + readonly=True + ) + + user_id = fields.Many2one( + 'res.users', + string='Extended By', + default=lambda self: self.env.user, + readonly=True + ) + + invoice_id = fields.Many2one( + 'account.move', + string='Extension Invoice', + readonly=True, + help='Invoice created for this extension' + ) + + notes = fields.Text( + string='Notes' + ) + + old_direct_debit = fields.Boolean( + string='Old Direct Debit', + readonly=True + ) + + new_direct_debit = fields.Boolean( + string='New Direct Debit', + readonly=True + ) + + @api.depends('donation_detail_id', 'extension_date') + def _compute_extension_ref(self): + for rec in self: + if rec.donation_detail_id and rec.extension_date: + rec.extension_ref = _('Extension - %s - %s') % ( + rec.donation_detail_id.sequence_no or 'N/A', + rec.extension_date.strftime('%Y-%m-%d %H:%M') + ) + else: + rec.extension_ref = _('Extension') + diff --git a/odex25_takaful/odex_takaful/models/donation_replacement_log.py b/odex25_takaful/odex_takaful/models/donation_replacement_log.py new file mode 100644 index 000000000..bb2a2965e --- /dev/null +++ b/odex25_takaful/odex_takaful/models/donation_replacement_log.py @@ -0,0 +1,70 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api, _ + + +class DonationReplacementLog(models.Model): + _name = 'donation.replacement.log' + _description = 'Donation Replacement Log' + _order = 'replacement_date desc' + _rec_name = 'replacement_ref' + + replacement_ref = fields.Char( + string='replacement Reference', + readonly=True, + compute='_compute_replacement_ref', + store=True + ) + + donation_detail_id = fields.Many2one( + 'donations.details.lines', + string='Donation Detail', + required=True, + ondelete='cascade', + index=True + ) + + sponsor_id = fields.Many2one( + 'res.partner', + string='Sponsor', + related='donation_detail_id.sponsor_id', + store=True, + readonly=True + ) + + sponsorship_id = fields.Many2one( + 'takaful.sponsorship', + string='Sponsorship', + related='donation_detail_id.sponsorship_id', + store=True, + readonly=True + ) + + replacement_date = fields.Datetime( + string='Replacement Date', + default=fields.Datetime.now, + readonly=True + ) + + user_id = fields.Many2one( + 'res.users', + string='Replaced By', + default=lambda self: self.env.user, + readonly=True + ) + + new_benefit = fields.Char(string="New Benefit", copy=False, readonly=True) + old_benefit = fields.Char(string="old Benefit", copy=False, readonly=True) + record_type = fields.Selection([('sponsorship', 'Sponsorship'),('donation', 'Donation')], string="Record Type", readonly=True) + replacement_reason_id = fields.Many2one('replacement.reasons', string="Replacement Reason", readonly=True) + + @api.depends('donation_detail_id', 'replacement_date') + def _compute_replacement_ref(self): + for rec in self: + if rec.donation_detail_id and rec.replacement_date: + rec.replacement_ref = _('Replacement - %s - %s') % ( + rec.donation_detail_id.sequence_no or 'N/A', + rec.replacement_date.strftime('%Y-%m-%d %H:%M') + ) + else: + rec.replacement_ref = _('Replacement') + diff --git a/odex25_takaful/odex_takaful/models/family_member.py b/odex25_takaful/odex_takaful/models/family_member.py new file mode 100644 index 000000000..232357975 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/family_member.py @@ -0,0 +1,108 @@ +from odoo import models, fields, api, _ +from dateutil.relativedelta import relativedelta +from datetime import datetime, timedelta + + +class GrantBenefit(models.Model): + _inherit = 'grant.benefit' + + def action_second_accepted(self): + super(GrantBenefit, self).action_second_accepted() + for member in self.member_ids: + sponsorships_main = self.env['donations.details.lines'].search([ + ('benefit_id', '=', member.id,),('state', '=', 'active') + ]) + sponsorships_multi = self.env['donations.details.lines'].search([ + ('benefit_ids', 'in', member.id),('state', '=', 'active') + ]) + sponsorships = sponsorships_main | sponsorships_multi + if sponsorships: + for sponsorship in sponsorships: + if member.member_status and member.member_status == 'non_benefit' and sponsorship.record_type == 'sponsorship': + sponsorship.sudo().write({'state': 'replace'}) + + + +class FamilyMember(models.Model): + _inherit = 'family.member' + + donation_details_count = fields.Integer( + string='Donation Details', + compute='_compute_donation_details_count' + ) + sponsor_id = fields.Many2one('res.partner', string='Sponsor Partner', domain="[('is_sponsor_portal', '=', True)]") + sponsor_related_id = fields.Many2one('res.partner', string='Sponsor') + sponsorship_id = fields.Many2one('takaful.sponsorship', string='Sponsorship') + sponsorship_end_date = fields.Date(string='Sponsorship End Date') + is_restricted = fields.Boolean(string="Is Restricted ?", default=False, readonly=True) + general_restriction = fields.Boolean(string="General Restriction", default=False, readonly=True) + kafala_status = fields.Selection( + [('have_kafala', 'Have Kafala'), ('have_not_kafala', 'Have not Kafala')], + string='Kafala Status', compute='_compute_kafala_status', store=True, readonly=True) + + @api.depends('sponsor_related_id') + def _compute_kafala_status(self): + for rec in self: + rec.kafala_status = 'have_kafala' if rec.sponsor_related_id else 'have_not_kafala' + + def _compute_donation_details_count(self): + for rec in self: + rec.donation_details_count = self.env['donations.details.lines'].search_count([ + '|', + ('benefit_id', '=', rec.id), + ('benefit_ids', 'in', rec.ids) + ]) + + def action_open_donation_detail(self): + self.ensure_one() + + return { + 'name': _('Donation Details Lines'), + 'type': 'ir.actions.act_window', + 'res_model': 'donations.details.lines', + 'view_mode': 'tree,form', + 'domain': ['|', ('benefit_id', '=', self.id), ('benefit_ids', 'in', self.ids)], + 'context': {'create': False, 'delete': False}, + } + + def action_not_available_for_sponsorship(self): + for rec in self: + rec.general_restriction = True + + def action_available_for_sponsorship(self): + for rec in self: + rec.general_restriction = False + + @api.model + def _cron_family_member_restriction(self): + benefit_ids = self.env["family.member"].sudo().search([("is_restricted", "=", True)]) + today = fields.Date.today() + restriction_period = self.env['ir.config_parameter'].sudo().get_param('odex_takaful.restriction_period') + for benefit in benefit_ids: + create_date = benefit.create_date.date() + benefit_date = create_date + timedelta(days=int(restriction_period) or 0) + if benefit_date >= today: + benefit.is_restricted = False + + def create(self, vals): + res = super(FamilyMember, self).create(vals) + self.is_restricted = True + return res + + # @api.model + # def write(self, vals): + # res = super(FamilyMember, self).write(vals) + # if 'member_status' in vals: + # for member in self: + # sponsorships_main = self.env['donations.details.lines'].search([ + # ('benefit_id', '=', member.id) + # ]) + # sponsorships_multi = self.env['donations.details.lines'].search([ + # ('benefit_ids', 'in', member.id) + # ]) + # sponsorships = sponsorships_main | sponsorships_multi + # + # if sponsorships: + # if member.member_status and member.member_status == 'non_benefit' and sponsorships.sponsorship_id.record_type == 'sponsorship': + # sponsorships.write({'state': 'replace'}) + # return res diff --git a/odex25_takaful/odex_takaful/models/preferred_communication.py b/odex25_takaful/odex_takaful/models/preferred_communication.py new file mode 100644 index 000000000..bb078cf41 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/preferred_communication.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- + +from odoo import models, fields, api, _ + + +class PreferredCommunication(models.Model): + _name = 'preferred.communication' + + name = fields.Char(required=True) diff --git a/odex25_takaful/odex_takaful/models/product.py b/odex25_takaful/odex_takaful/models/product.py new file mode 100644 index 000000000..488302f15 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/product.py @@ -0,0 +1,99 @@ +from odoo import models, fields, api, _ + + +class ProductTemplate(models.Model): + _inherit = 'product.template' + + donation_category = fields.Selection( + [('donation', 'Donation'), ('sponsorship', 'Sponsorship'), ('endowment', 'Endowment')], + string='Donation Category') + fixed_value = fields.Boolean(string='Is Fixed Value?', compute='_compute_fixed_value') + sponsorship_duration = fields.Selection([('temporary', 'Temporary'), ('permanent', 'Permanent')], + string='Sponsorship Duration Type') + _quantity = fields.Float(default=0, store=True) + payment_method_id = fields.Many2one('takaful.payment.method', string="Payment Method") + + def _compute_fixed_value(self): + for rec in self: + rec.fixed_value = False + + def link_to_sponsorship(self): + sponsorship_id = self.env.context.get('sponsorship_id') + if not sponsorship_id: + return + + sponsorship = self.env['takaful.sponsorship'].browse(sponsorship_id) + vals = [] + for rec in self: + vals.append((0, 0, { + 'product_template_id': rec.id, + 'sponsorship_id': sponsorship_id, + 'donation_types': 'donation', + 'donation_mechanism': 'without_conditions', + })) + + # Append to existing lines instead of replacing them + sponsorship.write({ + 'donations_details_lines': vals + }) + + def utilizable_cart_details(self): + """ + Utilizable Cart Details For Remove , Add And Update Operations + For Cart To Product Catelog Module To Object addcart.sales.products + """ + + context = self._context.copy() or {} + cart_object = self.env["donations.details.lines"] + cart_details = dict() + total_count = cart_object.search_count( + [('product_template_id', '=', self.id), + ('sponsorship_id', '=', context.get('sponsorship_id'))]) # , ("cart_flag", "=", True) + cart_details["total_count"] = total_count + cart_data = cart_object.search( + [('product_template_id', '=', self.id), + ('sponsorship_id', '=', context.get('sponsorship_id'))]) # , ("cart_flag", "=", True) + cart_details["cart_data"] = cart_data + return cart_details + + def initiate_sol(self, operation, sponsorship_id): + """ + Initiate Sale Order Line By Cart Functionality. + """ + + ts_object = self.env["takaful.sponsorship"] + sponsorship_object = ts_object.search([("id", "=", sponsorship_id)]) + if operation == "add": + ts_object.sol_by_cart(operation, self, sponsorship_object) + elif operation == "remove": + ts_object.sol_by_cart(operation, self, sponsorship_object) + elif operation == "update": + ts_object.sol_by_cart(operation, self, sponsorship_object) + + def set_quantity_so(self, quantity, operation=None): + context = self._context.copy() or {} + cart_details = self.utilizable_cart_details() + if operation == "remove": + self._quantity -= quantity + if cart_details.get("total_count") != 0: + self.initiate_sol("remove", context.get("sponsorship_id")) + else: + self._quantity += quantity + if cart_details.get("total_count") != 0: + self.initiate_sol("update", context.get("sponsorship_id")) + else: + self.initiate_sol("add", context.get("sponsorship_id")) + + def remove_quantity_button_so(self): + if self._quantity == 0: + self._quantity = 0 + return + return self.set_quantity_so(1, operation="remove") + + def add_quantity_button_so(self): + # return self.set_quantity_so(1, operation="add") + self.set_quantity_so(1, operation="add") + return { + 'type': 'ir.actions.client', + 'tag': 'display_notification', + } diff --git a/odex25_takaful/odex_takaful/models/replacement_process.py b/odex25_takaful/odex_takaful/models/replacement_process.py new file mode 100644 index 000000000..816472206 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/replacement_process.py @@ -0,0 +1,230 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api, _, exceptions +from odoo.exceptions import ValidationError, UserError, Warning +import requests +import re + +class ReplacementProcess(models.Model): + _name = 'replacement.process' + _inherit = ['mail.thread', 'mail.activity.mixin'] + _description = "Replacement Process" + _rec_name = 'code' + + code = fields.Char(string="Replacement Reference",copy=False,readonly=True) + user_id = fields.Many2one('res.users', string="Create User") + sponsorship_id = fields.Many2one('takaful.sponsorship',string='Sponsorship') + branch_id = fields.Many2one('branch.settings', string="Branch") + branch_ids = fields.Many2many('branch.settings', string="Branch") + sponsor_donor_type = fields.Selection(string='Sponsor / Donor Type',selection=[('registered', 'Registered'), ('new_sponsor', 'New Sponsor')]) + record_type = fields.Selection([('sponsorship', 'Sponsorship'),('donation', 'Donation')], string="Record Type") + sponsor_id = fields.Many2one('res.partner',string='Sponsor Name') + replacement_reason_id = fields.Many2one('replacement.reasons', string="Replacement Reason") + benefit_ids = fields.Many2many('family.member',string='Benefits') + replaced = fields.Boolean('Replaced') + family_ids = fields.Many2many('grant.benefit',string='Family') + registered_type = fields.Selection(string='Registered Type',selection=[('sponsor', 'Sponsor'),('member', 'Member')]) + replacement_line_ids = fields.One2many('replacement.process.line', 'process_id', string="Replacement Lines", tracking=True) + state = fields.Selection([('draft', 'Draft'),('replaced', 'Replaced')],string='State', default='draft', tracking=True) + + + + + # Model Operations + @api.model + def create(self, vals): + if vals.get('code', 'New') == 'New': + vals['code'] = self.env['ir.sequence'].sudo().next_by_code('replacement.process.sequence') + + res = super(ReplacementProcess, self).create(vals) + return res + + + + def unlink(self): + raise UserError(_('You cannot delete this record')) + return super(ReplacementProcess, self).unlink() + + + def confirm_replacement(self): + for rec in self: + rec.benefit_ids.sudo().write({'replaced': True}) + rec.sponsorship_id.sudo().write({'state': 'replacement_done'}) + rec.sponsorship_id.sudo().write({'branch_custom_id': self.branch_id.id}) + if rec.replacement_line_ids: + for benefit in rec.replacement_line_ids: + all_donation_lines = ( + (rec.sponsorship_id.donations_details_lines if rec.sponsorship_id.donations_details_lines else self.env[ + 'donations.details.lines']) | + ( + rec.sponsorship_id.donations_details_lines_mechanism_ids if rec.sponsorship_id.donations_details_lines_mechanism_ids else + self.env['donations.details.lines']) + ) + + for donation_line in all_donation_lines: + if donation_line.sponsorship_type in ['person',benefit.sponsorship_type] and donation_line.benefit_id and benefit.to_benefit_id and donation_line.benefit_id == benefit.from_benefit_id: + donation_line.benefit_id.sudo().write({'replaced': True}) + rec.family_ids = [(6, 0, [donation_line.benefit_id.benefit_id.id])] + donation_line.sudo().write({'benefit_id': benefit.to_benefit_id.id}) + + elif donation_line.sponsorship_type in ['group',benefit.sponsorship_type] and donation_line.benefit_ids and benefit.to_benefit_ids and donation_line.benefit_ids == benefit.from_benefit_ids: + rec.family_ids = [(6, 0, [donation_line.benefit_ids.mapped('benefit_id.id')[0]])] + donation_line.sudo().write({'benefit_ids': benefit.to_benefit_ids.ids}) + donation_line.sudo().write({'benefit_id': benefit.to_benefit_ids.ids[0]}) + donation_line.benefit_ids.sudo().write({'replaced': True}) + rec.state = 'replaced' + rec.replaced = True + rec.action_send_whatsapp() + + + + + def action_send_whatsapp(self): + config = self.env['ir.config_parameter'].sudo() + account_sid = config.get_param('odex_takaful.twilio_account_sid') + auth_token = config.get_param('odex_takaful.twilio_auth_token') + from_whatsapp = config.get_param('odex_takaful.twilio_from_whatsapp') + + if not account_sid or not auth_token or not from_whatsapp: + raise ValidationError(_("Twilio configuration is missing. Please configure Twilio SID, Auth Token, and WhatsApp number in General Configurations.")) + + from_cleaned_mobile = re.sub(r'[^\d+]', '', from_whatsapp) + from_whatsapp_number = f'whatsapp:{from_cleaned_mobile}' + message = "نشعركم بإستبدال أبنائكم المكفول/ة بآخر مستحق وذلك لإستبعاده من الجمعية نظامياً، للحصول على تقرير اليتيم الجديد يسعدنا تواصلكم مع الفرع، بلغكم الله مرافقة النبى صلى الله عليه وسلم فى الجنة" + + for partner in self: + mobile = partner.sponsor_id.mobile if partner.sponsor_id else partner.sponsorship_id.member_id.mobile + if mobile: + # Clean the number (keep + and digits only) + cleaned_mobile = re.sub(r'[^\d+]', '', mobile) + to_whatsapp_number = f'whatsapp:{cleaned_mobile}' + url = f"https://api.twilio.com/2010-04-01/Accounts/{account_sid}/Messages.json" + + payload = { + 'From': from_whatsapp_number, + 'To': to_whatsapp_number, + 'Body': message, + } + + response = requests.post( + url, + data=payload, + auth=(account_sid, auth_token) + ) + + if response.status_code != 201: + raise ValidationError(_("Failed to send WhatsApp message: %s") % response.text) + + +class FamilyMember(models.Model): + _inherit = 'family.member' + + replaced = fields.Boolean('Replaced') + + def write(self, vals): + res = super(FamilyMember, self).write(vals) + sponsorship_states = ['confirmed', 'wait_pay', 'under_refund', 'under_replacement', 'replacement_done'] + + for record in self: + if any(key in vals for key in ['is_work', 'is_married', 'member_location_conf']): + if vals.get('is_work') or vals.get('is_married') or vals.get('member_location_conf') is False: + # Search in donations.details.lines where this member is either benefit_id or in benefit_ids + lines = self.env['donations.details.lines'].sudo().search([ + '|', + ('benefit_id', '=', record.id), + ('benefit_ids', 'in', [record.id]) + ]) + + for line in lines: + # Get related sponsorship + sponsorship = line.sponsorship_mechanism_id or line.sponsorship_id + if sponsorship and sponsorship.state in sponsorship_states: + sponsor = sponsorship.sponsor_id or sponsorship.member_id + mobile = sponsor.mobile if sponsor else None + + if mobile: + self.send_whatsapp_message(mobile, record.name) + break + + return res + + def send_whatsapp_message(self, mobile, member_name): + config = self.env['ir.config_parameter'].sudo() + account_sid = config.get_param('odex_takaful.twilio_account_sid') + auth_token = config.get_param('odex_takaful.twilio_auth_token') + from_whatsapp = config.get_param('odex_takaful.twilio_from_whatsapp') + + + if not account_sid or not auth_token or not from_whatsapp: + raise ValidationError(_("Twilio configuration is missing. Please configure Twilio SID, Auth Token, and WhatsApp number in General Configurations.")) + + from_cleaned_mobile = re.sub(r'[^\d+]', '', from_whatsapp) + from_whatsapp_number = f'whatsapp:{from_cleaned_mobile}' + message = "تنبيه: اليتيم الحالي [NAME] أصبح غير مستحق لأسباب محددة ويجب الاستبدال بيتيم اخر." + message = message.replace("[NAME]", member_name) # Clean the number (keep + and digits only) + cleaned_mobile = re.sub(r'[^\d+]', '', mobile) + to_whatsapp_number = f'whatsapp:{cleaned_mobile}' + + url = f"https://api.twilio.com/2010-04-01/Accounts/{account_sid}/Messages.json" + + payload = { + 'From': from_whatsapp_number, + 'To': to_whatsapp_number, + 'Body': message, + } + + response = requests.post(url, data=payload, auth=(account_sid, auth_token)) + + if response.status_code != 201: + raise ValidationError(_("Failed to send WhatsApp message: %s") % response.text) + +class ReplacementProcessLine(models.Model): + _name = 'replacement.process.line' + _description = 'Replacement ProcessLine' + + members_domain_ids = fields.Many2many(comodel_name='family.member') + from_benefit_id = fields.Many2one('family.member', string="From Benefit") + to_benefit_id = fields.Many2one('family.member', string="To Benefit", domain = "[('id', 'in',members_domain_ids)]") + from_benefit_ids = fields.Many2many('family.member', 'replacement_process_from_benefit_wiz_rel', 'line_id', 'benefit_id', string="From Benefits (Group)") + to_benefit_ids = fields.Many2many('family.member', 'replacement_process_to_benefitwiz__rel', 'line_id', 'benefit_id', string="To Benefits (Group)", domain = "[('id', 'in',members_domain_ids)]") + sponsorship_type = fields.Selection([('person', 'Individual'),('group', 'Group')],string='Sponsorship Type') + process_id = fields.Many2one('replacement.process', string="Wizard") + + @api.constrains('from_benefit_ids', 'to_benefit_ids') + def onchange_from_to_constrain(self): + for rec in self: + if len(self.from_benefit_ids) != len(self.to_benefit_ids): + raise ValidationError( + _("You must select the same number of beneficiaries in the from benefits group (%s) to the to benefits group (%s)" % ( + ", ".join(self.from_benefit_ids.mapped('name')), + ", ".join(self.to_benefit_ids.mapped('name'))))) + + + + +class GrantBenefit(models.Model): + _inherit = 'grant.benefit' + + replaced = fields.Boolean('Replaced') + + def action_open_replacements(self): + self.ensure_one() + return { + 'type': 'ir.actions.act_window', + 'name': 'Replacement Process', + 'view_mode': 'tree,form', + 'res_model': 'replacement.process', + 'domain': [('family_ids', 'in', [self.id])], + } + + + + + + + + + + + + + diff --git a/odex25_takaful/odex_takaful/models/replacement_reasons.py b/odex25_takaful/odex_takaful/models/replacement_reasons.py new file mode 100644 index 000000000..0794e4b41 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/replacement_reasons.py @@ -0,0 +1,7 @@ +from odoo import api, fields, models, _ + +class ReplacementReasons(models.Model): + _name = "replacement.reasons" + _description = "Replacement Reasons" + + name = fields.Char(string="Name") diff --git a/odex25_takaful/odex_takaful/models/res_config_settings.py b/odex25_takaful/odex_takaful/models/res_config_settings.py new file mode 100644 index 000000000..3239b08e7 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/res_config_settings.py @@ -0,0 +1,47 @@ +from odoo import models, fields, api, _ + +class TakafulConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + cancel_refund = fields.Integer(string='Cancel Refund Time') + twilio_account_sid = fields.Char(string="Twilio Account SID", config_parameter="odex_takaful.twilio_account_sid") + twilio_auth_token = fields.Char(string="Twilio Auth Token", config_parameter="odex_takaful.twilio_auth_token") + twilio_from_whatsapp = fields.Char(string="From WhatsApp Number",help="Enter a valid phone number including country code. Example: +14155238886", + config_parameter="odex_takaful.twilio_from_whatsapp") + + donation_extension_reminder_sms_template_id = fields.Many2one('sms.template', string="Donation Extension Reminder SMS Template", related='company_id.donation_extension_reminder_sms_template_id', readonly=False) + donation_ended_sms_template_id = fields.Many2one('sms.template', string="Donation Ended SMS Template", related='company_id.donation_ended_sms_template_id', readonly=False) + restriction_period = fields.Integer(string='Restriction Period') + faal_kheer_partner_id = fields.Many2one("res.partner", string="Faal Kheer Partner", related='company_id.faal_kheer_partner_id', readonly=False) + + def set_values(self): + super(TakafulConfigSettings, self).set_values() + sudoConf = self.env['ir.config_parameter'].sudo() + + sudoConf.set_param('odex_takaful.cancel_refund', self.cancel_refund) + sudoConf.set_param('odex_takaful.restriction_period', self.restriction_period) + + + @api.model + def get_values(self): + res = super(TakafulConfigSettings, self).get_values() + sudoConf = self.env['ir.config_parameter'].sudo() + + cancel_refund = sudoConf.get_param('odex_takaful.cancel_refund') + restriction_period = sudoConf.get_param('odex_takaful.restriction_period') + res.update( + { + 'cancel_refund': int(cancel_refund), + 'restriction_period': int(restriction_period), + + } + ) + + return res + +class ResCompany(models.Model): + _inherit = 'res.company' + + donation_extension_reminder_sms_template_id = fields.Many2one('sms.template', string="Donation Extension Reminder SMS Template") + donation_ended_sms_template_id = fields.Many2one('sms.template', string="Donation Ended SMS Template") + faal_kheer_partner_id = fields.Many2one("res.partner", string="Faal Kheer Partner") diff --git a/odex25_takaful/odex_takaful/models/res_partner.py b/odex25_takaful/odex_takaful/models/res_partner.py new file mode 100644 index 000000000..4167b994d --- /dev/null +++ b/odex25_takaful/odex_takaful/models/res_partner.py @@ -0,0 +1,455 @@ +# -*- coding: utf-8 -*- + +from odoo import models, fields, api, _ +from odoo.exceptions import UserError, ValidationError, Warning +from dateutil.parser import parse +import re +from odoo.osv import expression +SAUDI_MOBILE_PATTERN = r"^(\+?966)?0?5[013456789][0-9]{7}$" + +class IrActionsServer(models.Model): + _inherit = 'ir.actions.server' + + groups_id = fields.Many2many('res.groups', 'res_groups_server_rel', 'uid', 'gid', string='Groups') + + +class sponsor(models.Model): + _name = 'takaful.sponsor' + + +class ResPartner(models.Model): + _name = 'res.partner' + _inherit = ['res.partner', 'mail.thread'] + + + account_number = fields.Char(string="Account Number") + bank_entity_name = fields.Char(string="Bank Entity Name") + name = fields.Char(string="Name", compute='get_partner_name', store=True, readonly=False) + + #Location + branch_custom_id = fields.Many2one('branch.settings', string="Branch") + district_id = fields.Many2one('res.districts', string="District", domain="[('branch_custom_id','=',branch_custom_id)]") + + # New Added + notify_by_app = fields.Boolean(string='Notify By App', default=True) + notify_by_sms = fields.Boolean(string='Notify By SMS', default=True) + notify_for_pay = fields.Boolean(string='Paying Notify By App', default=True) + notify_pay_by_app = fields.Boolean(string='Paying Notify By App', default=True) + notify_pay_by_sms = fields.Boolean(string='Paying Notify By SMS', default=True) + + name_in_certificate = fields.Boolean(string='Beneficiaries Names In Certificate', default=True) + type_in_certificate = fields.Boolean(string='Beneficiaries Type In Certificate', default=True) + duration_in_certificate = fields.Boolean(string='Sponsorship Duration In Certificate', default=True) + + notify_month_day = fields.Integer(string="Notify Month Day", default=1) + wait_cancel_day = fields.Integer(string="Waiting For Cancellation", default=2) + # operation_ids = fields.One2many('takaful.sponsor.operation', 'sponsor_id', string="Operations Records") + benefit_ids = fields.One2many('family.member', 'sponsor_related_id', string="Benefits Records") + related_benefits_count = fields.Integer(compute="_compute_related_benefits_count") + kafel_id = fields.Many2one('res.users') + + state = fields.Selection([ + ('draft', 'Draft'), + ('verified', 'Verified') + ], string='State',default='draft', tracking=True) + + 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 + + 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) + + responsible_user_ids = fields.Many2many( + 'res.users', + 'takaful_sponsor_user_rel', + 'sponsor_id', + 'user_id', + string='Responsible Employees' + ) + + operation_count = fields.Integer( + compute='_compute_operation_count', + string="# Of Operations", + readonly=True + ) + + kafalat_count = fields.Integer( + compute='_compute_kafalat_count', + string="# of Kafalat", + readonly=True + ) + contribution_count = fields.Integer( + compute='_compute_contribution_count', + string="# of Contributions", + readonly=True + ) + + active_counts = fields.Integer( + string="Active Sponsors Count", + ) + active = fields.Boolean(default=True) + + gift_count = fields.Integer( + compute='_compute_gift_count', + string="# of Gifts", + readonly=True + ) + + + _sql_constraints = [ + ('id_number_uniq', 'unique (id_number)', 'The ID Number Already Exist!'), + ] + + + def view_sponsorship_payment_action(self): + """Enable The Sponsor To Pay Sponsorships Entries""" + sponsorship_id = self.env['takaful.sponsorship'].sudo().search([('sponsor_id', '=', self.id), ('has_delay', '=', True)], limit=1) + + context = dict(self.env.context or {}) + context['default_sponsor_id'] = self.id or False + context['default_sponsorship_id'] = sponsorship_id.id or False + return { + 'name': _('Sponsorship Payment'), + 'view_type': 'form', + 'view_mode': 'tree,form', + 'views': [(self.env.ref( + 'odex_takaful.takaful_sponsorship_payment_tree').id, 'tree'), + (self.env.ref('odex_takaful.takaful_sponsorship_payment_form').id, 'form')], + 'type': 'ir.actions.act_window', + 'res_model': 'sponsorship.payment', + 'domain': "[('sponsor_id','=',%s)]" % (self.id or False), + 'target': 'current', + 'context': context, + } + + + @api.constrains('is_family', 'is_benefit', 'is_donor', 'is_sponsor_portal') + def _check_family_beneficiary_exclusivity(self): + for rec in self: + is_family_or_beneficiary = rec.is_family or rec.is_benefit + + is_donor_vendor_sponsor = rec.is_donor or rec.is_sponsor_portal or rec.is_vendor + + if is_family_or_beneficiary and is_donor_vendor_sponsor: + raise ValidationError(_("A contact cannot be both Family/Beneficiary and Donor/Member/Sponsor at the same time!")) + + @api.model + def _name_search(self, name, args=None, operator='ilike', limit=100, name_get_uid=None): + if not args: + args = [] + domain = ['|', '|', ('name', operator, name),('id_number', operator, name),('mobile', operator, name)] + domain = expression.AND([domain, args]) + parent_record_ids = self.search(domain).ids + domain = expression.OR([domain, [('parent_id', 'in', parent_record_ids)]]) + return self._search(domain, limit=limit, access_rights_uid=name_get_uid) + + def _compute_related_benefits_count(self): + for record in self: + record.related_benefits_count = self.env['family.member'].search_count([ + ('sponsor_related_id', '=', record.id) + ]) + def action_open_benefit_records(self): + """Open related account.move records.""" + return { + 'type': 'ir.actions.act_window', + 'name': 'Related Benefits', + 'view_mode': 'tree,form', + 'res_model': 'family.member', + 'domain': [('id', 'in', self.benefit_ids.ids)], + 'context': {'create': False}, + } + + def _compute_operation_count(self): + # Get operation_count + operation_count = self.env['takaful.sponsor.operation'].sudo().search_count([('sponsor_id', '=', self.id)]) + + if operation_count >0: + self.operation_count = operation_count + else: + self.operation_count = 0 + + + def _compute_kafalat_count(self): + # Get kafalat + kafalat_count = self.env['takaful.sponsorship'].sudo().search_count([('sponsor_id', '=', self.id)]) + + if kafalat_count >0: + self.kafalat_count = kafalat_count + else: + self.kafalat_count = 0 + + def _compute_contribution_count(self): + # The current user may not have access rights for contributions. + for partner in self: + try: + partner.contribution_count = len(partner.id) * 2 + except Exception: + partner.contribution_count = 50 + + def _compute_gift_count(self): + # The current user may not have access rights for gifts. + for partner in self: + try: + partner.gift_count = len(partner.id) * 3 + except Exception: + partner.gift_count = 75 + + #Validition here + def check_bank_info_value(self): + # all values true + bank_info = [self.account_number, + self.iban, + self.bank_id, + self.bank_entity_name, + ] + + res = all(bank_info) + return res + + def unlink(self): + related_contact = self.env['res.partner'].search([('parent_id', 'in', self.ids)]) + sponsorships = self.env['takaful.sponsorship'].search([('sponsor_id', 'in', self.ids)]) + if sponsorships or related_contact: + raise UserError(_('Contacts are associated with sponsorships') ) + self.user_id.sudo().write({ + "active": False + }) + return super(ResPartner, self).unlink() + + def on_activate_sponsor_multi(self): + for record in self: + if not record.active: + if record.user_id: + record.user_id.sudo().write({ + "active": True + }) + record.active = True + else: + raise UserError(_('Sponsor is already active')) + + def action_save_and_close(self): + """Save and close the form wizard - used when creating new sponsor from sponsorship form""" + self.ensure_one() + # The form will close automatically and return to parent form + return {'type': 'ir.actions.act_window_close'} + + @api.model + def create(self, values): + mobile_number = values.get('mobile', False) + context = self.env.context + + if mobile_number: + self._check_phone_numbers(values['mobile']) + validated_mobile_number = self.phone_format(mobile_number) + values.update({'mobile': validated_mobile_number}) + + if context.get('sponsor_contact'): + values.update({'lang': 'ar_001'}) + values.update({'tz': 'Asia/Riyadh'}) + # values.update({'account_type':'sponsor'}) + values.update({'is_sponsor_portal': True}) + if not values.get('serial_code'): + values['serial_code'] = self.env['ir.sequence'].next_by_code('takaful.sponsor.sequence') or 'S/0000' + + res = super(ResPartner, self).create(values) + + if context.get('sponsor_contact'): + if context.get('parent_model') == 'takaful.sponsorship' and context.get('parent_id'): + parent_record = self.env[context['parent_model']].browse(context['parent_id']) + parent_record.sponsor_id = res.id + + + if 'is_sponsor_portal' in values or 'is_donor' in values: + if values['is_sponsor_portal'] == True or values['is_donor'] == True : + if res.mobile != False: + kafeel = self.env['res.users'].with_user(2).create({ + 'name' : values['name'], + 'branch_custom_id':values['branch_custom_id'], + 'sel_groups_1_9_10' : 9, + 'partner_id' : res.id, + 'login' : values['mobile'], + 'otp_mobile_phone' : values['mobile'], + 'otp_enabled' : True, + }) + res.kafel_id = kafeel + + return res + + def write(self, vals): + if 'mobile' in vals: + self._check_phone_numbers(vals['mobile']) + vals['mobile'] = self.phone_format(vals['mobile']) + if 'name' in vals : + if self.kafel_id: + self.kafel_id.name = vals['name'] + + if 'mobile' in vals : + if self.kafel_id: + self.kafel_id.login = vals['mobile'] + + res = super(ResPartner, self).write(vals) + return res + + def create_user(self): + for follower in self.message_follower_ids: + follower.sudo().unlink() + # If you add 'no_reset_password' to the context to True, it won't send an email. + # You can then set the password manually (and find a way to let the user know it). + user = self.env['res.users'].sudo().with_context(no_reset_password=False).create({ + 'name': self.name, + 'login': self.mobile, + 'phone': self.mobile, + 'mobile': self.mobile, + 'partner_id': self.id, + 'active': True, + 'city': self.city_id.name if self.city_id else False, + 'lang':'ar_001', + 'tz': 'Asia/Riyadh', + }) + + # Add groups to the user as sponsor + user.sudo().write({'groups_id': [ + # in odoo relation field accept a list of commands + # command 4 means add the id in the second position must be an integer + # ref return an object so we return the id + (4, self.env.ref('odex_takaful.takaful_group_user_sponsor').id), + (3, self.env.ref('base.group_user', False).id), + (4, self.env.ref('base.group_portal', False).id)] + }) + self.user_id = user.id + return self + + + def action_open_sponsor_operation(self): + """Open Operations History for a Sponsor""" + domain = [('sponsor_id', '=', self.id or False)] + context = dict(self.env.context or {}) + context['default_sponsor_id'] = self.id or False + + return { + 'name': _('Sponsor Operations'), + 'view_type': 'form', + 'view_mode': 'tree,form', + 'view_id': False, + 'res_model': 'takaful.sponsor.operation', + 'type': 'ir.actions.act_window', + 'target': 'current', + 'domain': domain, + 'context': context, + } + + + def view_sponsorship_action(self): + """List Sponsorships For The Sponsor""" + domain = [('sponsor_id', '=', self.id or False)] + context = dict(self.env.context or {}) + context['default_sponsor_id'] = self.id or False + + # view = self.env.ref('odex_takaful.takaful_sponsorship_tree') + return { + 'name': _('Sponsorships'), + 'view_type': 'form', + 'view_mode': 'tree,form', + 'view_id': False, + 'res_model': 'takaful.sponsorship', + 'type': 'ir.actions.act_window', + 'target': 'current', + 'domain': domain, + 'context': context, + } + + @api.model + def get_active_sponsors_users(self): + sponsors_users = self.env['res.users'].sudo().search([ + ("active", "=", True), + ("groups_id", "=", self.env.ref("odex_takaful.takaful_group_user_sponsor").id)])#self.env['res.users'].sudo().search([]) + + count = len(sponsors_users) or 0 + sponsors = self.env['res.partner'].sudo().search([]) + for rec in sponsors: + rec.update({ + "active_counts": count, + }) + + def show_active_sponsor_report_report(self): + self.sudo().get_active_sponsors_users() + ctx = self.env.context.copy() + return { + 'name': _('Active Sponsors Count Report'), + 'type': 'ir.actions.act_window', + 'res_model': 'res.partner', + 'view_type': 'form', + 'view_mode': 'pivot', + 'view_id': self.env.ref('odex_takaful.active_sponsor_report_pivot_view').id, + 'target': 'main', + 'context': ctx, + } + + def _check_phone_numbers(self, mobile_number): + for rec in self: + mobile = str(mobile_number).strip().replace(" ", "").replace("-", "") + if not re.fullmatch(SAUDI_MOBILE_PATTERN, mobile): + raise ValidationError(_('Enter a valid Saudi mobile number')) + + def action_unlink_sponsor_and_related(self): + member_ids = self.env["family.member"].sudo().search([("sponsor_related_id", "in", self.ids)]) + if member_ids: + member_ids.sudo().write({"sponsor_related_id": False}) + grant_partner_ids = self.env['grant.benefit'].sudo().search([ + ('partner_id', 'in', self.ids), + ('state', 'not in', ['draft', 'new']) + ]).partner_id + if grant_partner_ids: + partner_ids = self.filtered(lambda p: p.id not in grant_partner_ids) + partner_ids.sudo().write({'active': False}) + + def name_get(self): + result = [] + for sponsor in self: + name = sponsor.name + if sponsor.mobile: + name = sponsor.name + " - " + str(sponsor.mobile) + result.append((sponsor.id, name)) + return result + + @api.depends('company_type', + 'first_name', + 'second_name', + 'middle_name', + 'family_name', + 'sponsor_title', + 'suffix_title_id') + def get_partner_name(self): + for rec in self: + names = [] + if rec.sponsor_title: + names.append(f"{rec.sponsor_title.shortcut if rec.sponsor_title.shortcut else rec.sponsor_title.name}/") + if rec.first_name: + names.append(rec.first_name) + if rec.second_name: + names.append(rec.second_name) + if rec.middle_name: + names.append(rec.middle_name) + if rec.family_name: + names.append(rec.family_name) + if rec.suffix_title_id: + names.append(f"({rec.suffix_title_id.shortcut if rec.suffix_title_id.shortcut else rec.suffix_title_id.name})") + if names: + rec.name = " ".join(names) + else: + rec.name = " " + +class ResPartnerBank(models.Model): + _inherit = 'res.partner.bank' + + def name_get(self): + result = [] + for bank in self: + if bank.bank_id: + name = f"{bank.acc_number} - {bank.bank_id.name}" + else: + name = f"{bank.acc_number}" + result.append((bank.id, name)) + return result diff --git a/odex25_takaful/odex_takaful/models/sponsorship_scheduling_line.py b/odex25_takaful/odex_takaful/models/sponsorship_scheduling_line.py new file mode 100644 index 000000000..f6b2316b5 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/sponsorship_scheduling_line.py @@ -0,0 +1,245 @@ +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError +import logging + +_logger = logging.getLogger(__name__) + +class SchedulingLine(models.Model): + _name = 'sponsorship.scheduling.line' + + sponsorship_id = fields.Many2one('takaful.sponsorship') + sponsorship_state = fields.Selection(related='sponsorship_id.state') + donation_detail_linked_id = fields.Many2one('donations.details.lines') + sequence_no = fields.Char(default='/', readonly=True, copy=False) + beneficiary_id = fields.Many2one('family.member') + month_year = fields.Char() + scheduled_date = fields.Date(string='Scheduled Date', help='Date when the payment should be automatically processed') + amount = fields.Float() + refunded_amount = fields.Float(string='Refunded Amount') + currency_id = fields.Many2one('res.currency', string='Currency', + default=lambda self: self.env.company.currency_id, readonly=True) + status = fields.Selection([ + ('unpaid', 'Unpaid'), + ('paid', 'Paid'), + ('approve_refund', 'Approve Refund'), + ('under_refund', 'Under Refund'), + ('partial_refund', 'Partial Refund'), + ('fully_refund', 'Fully Refund'), + ], copy=False, default='unpaid') + sponsor_id = fields.Many2one('res.partner') + direct_debit = fields.Boolean(string='Direct Debit', related='donation_detail_linked_id.direct_debit') + cancel_refund = fields.Boolean(string='Cancel Refund Time', compute="compute_days_after_payment") + + def compute_days_after_payment(self): + """Check if the number of hours passed after payment is within the configured limit""" + for record in self: + days_passed = 0 + config_param = record.env['ir.config_parameter'].sudo() + max_hours = int(config_param.get_param('odex_takaful.cancel_refund', default=0)) + + payment_record = record.env['payment.details.lines'].search([ + '|', + ('sponsorship_scheduling_line_id', '=', record.id), + ('sponsorship_scheduling_line_ids', 'in', record.id), + ('sponsorship_id', '=', record.sponsorship_id.id) + + ], order="payment_date desc", limit=1) + + if payment_record and payment_record.payment_date: + now = fields.Datetime.now() + payment_datetime = fields.Datetime.to_datetime(payment_record.payment_date) + hours_passed = (now - payment_datetime).total_seconds() / 3600 # Convert seconds to hours + record.cancel_refund = hours_passed >= max_hours + else: + record.cancel_refund = False + + + def action_register_payment(self): + invoice_id = self.env['account.move'].sudo().search([ + ('takaful_sponsorship_id', '=', self.sponsorship_id.id), + ('move_type', '=', 'out_invoice'), + ('state', '=', 'posted'), + ('payment_state', 'in', ['not_paid', 'partial'])], limit=1, order='id') + if not invoice_id: + raise ValidationError(_("No invoice found for this sponsorship.")) + return { + 'name': _('Register Payment'), + 'res_model': 'account.payment.register', + 'view_mode': 'form', + 'context': { + 'active_model': 'account.move', + 'active_ids': invoice_id.ids, + 'dont_redirect_to_payments': True, + 'sponsorship_line_ids': self.donation_detail_linked_id.ids, + 'default_amount': self.amount, + 'default_journal_id': self.env.company.sponsorship_direct_debit_journal_id.id, + 'schedule_line_payment': True, + 'schedule_line_id': self.id, + 'force_sponsorship_line_partner_id': self.donation_detail_linked_id.sponsor_id.id, + }, + 'target': 'new', + 'type': 'ir.actions.act_window', + } + + @api.model + def create(self, vals): + # Check if sequence_no is not already set + if vals.get('sequence_no', '/') == '/': + # Assign the next sequence number + vals['sequence_no'] = self.env['ir.sequence'].next_by_code('sponsorship.scheduling.line.sequence') or '/' + return super(SchedulingLine, self).create(vals) + + @api.model + def cron_process_scheduled_payments(self): + today = fields.Date.today() + + scheduled_lines = self.search([ + ('scheduled_date', '<=', today), + ('status', '=', 'unpaid'), + ]) + + _logger.info(f"Found {len(scheduled_lines)} scheduling lines scheduled for {today}") + + for line in scheduled_lines: + donation_line = line.donation_detail_linked_id + sponsorship = donation_line.sponsorship_id or donation_line.sponsorship_mechanism_id + + try: + if line.donation_detail_linked_id.direct_debit: + invoice_id = self.env['account.move'].sudo().search([ + ('takaful_sponsorship_id', '=', sponsorship.id), + ('move_type', '=', 'out_invoice'), + ('state', '=', 'posted'), + ('payment_state', 'in', ['not_paid', 'partial']) + ], limit=1) + + if not invoice_id: + _logger.warning(f"No unpaid invoice found for sponsorship {line.sponsorship_id.code}, skipping line {line.sequence_no}") + continue + + journal_id = self.env.company.sponsorship_direct_debit_journal_id + if not journal_id: + _logger.warning(f"No journal found for payment method of line {line.sequence_no}") + continue + + payment_register_vals = { + 'payment_date': fields.Date.today(), + 'amount': line.amount, + 'journal_id': journal_id.id, + 'partner_bank_id': donation_line.direct_debit_partner_bank_id.id, + 'communication': f"{line.sponsorship_id.code} - {line.sequence_no}", + 'transaction_file_attachment': donation_line.debit_payment_file_attachment, + } + + payment_register = self.env['account.payment.register'].sudo().with_context( + active_model='account.move', + active_ids=invoice_id.ids, + schedule_line_payment=True, + dont_redirect_to_payments=True, + schedule_line_id=line.id, + is_direct_debit=True, + sponsorship_id=sponsorship.id, + sponsorship_line_ids=line.donation_detail_linked_id.ids, + from_cron=True, + force_sponsorship_line_partner_id=line.donation_detail_linked_id.sponsor_id.id, + ).create(payment_register_vals) + + payment_register.action_create_payments() + line.sudo().write({'status': 'paid'}) + if line.donation_detail_linked_id.state == 'waiting' or (not line.donation_detail_linked_id.benefit_id and line.donation_detail_linked_id.record_type == 'sponsorship'): + line.donation_detail_linked_id.sudo().write({'state': 'waiting'}) + elif line.donation_detail_linked_id.record_type == 'donation': + line.donation_detail_linked_id.sudo().write({'state': 'paid'}) + elif line.donation_detail_linked_id.state != 'waiting' and line.donation_detail_linked_id.record_type != 'donation' and line.donation_detail_linked_id.record_type == 'sponsorship': + line.donation_detail_linked_id.sudo().write({'state': 'active'}) + line.donation_detail_linked_id.sponsorship_id.sudo().write({'state': 'wait_pay'}) + + + _logger.info(f"Successfully processed scheduled payment for line {line.sequence_no}") + else: + _logger.warning(f"Scheduling line {line.sequence_no} payment method is not direct debit, skipping auto-payment") + + except Exception as e: + _logger.error(f"Error processing scheduled payment for line {line.sequence_no}: {str(e)}") + continue + + return True + + def action_refund(self): + refund_amount = self.amount - self.refunded_amount + + return { + 'type': 'ir.actions.act_window', + 'name': 'Refund Wizard', + 'res_model': 'refund.wiz', + 'view_mode': 'form', + 'target': 'new', + 'context': {'default_refund_amount': refund_amount} + } + + + def approve_refund(self): + self.final_refund() + self.sponsorship_id.state = 'under_refund' + + + def final_refund(self): + invoice_lines = [] + unpaid_invoice_exists = self.env['account.move'].search( + [('takaful_sponsorship_id', '=', self.sponsorship_id.id), ('move_type', '=', 'out_refund'), + ('payment_state', '!=', 'paid')]) + refund_amount = self.sponsorship_id.refund_details_lines_ids.filtered( + lambda r: r.sponsorship_scheduling_line.id == self.id or self.id in r.sponsorship_scheduling_line_ids.ids and r.invoiced == False).mapped('refund_amount')[0] if self.sponsorship_id.refund_details_lines_ids else 0.0 + sponsor_id = self.sponsorship_id.sponsor_id + payment_details_line = self.sponsorship_id.refund_details_lines_ids.filtered( + lambda r: r.sponsorship_scheduling_line.id == self.id or self.id in r.sponsorship_scheduling_line_ids.ids).mapped('payment_details_line') + + if unpaid_invoice_exists: + raise ValidationError(_("You have Refund invoice not paid")) + + # Check if product exists from donation item + product_template = self.donation_detail_linked_id.product_template_id + product = self.donation_detail_linked_id.product_id # Directly linked product + + if not product: + # If no product_id exists in product_template, check if a product with the same name exists + product = self.env['product.product'].search([('name', '=', product_template.name)], limit=1) + + if not product: + # Create new product if it doesn't exist + product = self.env['product.product'].create({ + 'name': product_template.name, + 'type': 'service' # Setting type to service + }) + + invoice_lines.append((0, 0, { + 'product_id': product.id, + 'account_id': self.donation_detail_linked_id.product_template_id.property_account_income_id.id, + # The same account for all lines + 'quantity': 1, # Qty is 1 + # The same analytic account + 'takaful_sponsorship_id': self.sponsorship_id.id, + 'price_unit': refund_amount, + 'analytic_account_id': self.sponsorship_id.branch_custom_id.branch.analytic_account_id.id + })) + Partner = self.env['res.partner'].sudo() + partner_id = sponsor_id or Partner.search([('name', '=', 'Cash Customer')], limit=1) + if not partner_id: + partner_id = Partner.create({ + 'company_type': 'person', + 'name': 'Cash Customer' + }) + + invoice = self.env['account.move'].create({ + 'move_type': 'out_refund', # Refund Invoice + 'partner_id': partner_id.id, + 'invoice_date': fields.Date.today(), + 'invoice_line_ids': invoice_lines, + 'takaful_sponsorship_id': self.sponsorship_id.id, + 'is_refund_sponsorship': True, + 'sponsorship_scheduling_line': self.id, + 'payment_details_line': payment_details_line, + }) + invoice.action_post() + self.sponsorship_id.refund_details_lines_ids.write({'invoiced': True}) + return invoice diff --git a/odex25_takaful/odex_takaful/models/sponsorship_states.py b/odex25_takaful/odex_takaful/models/sponsorship_states.py new file mode 100644 index 000000000..4d9da2280 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/sponsorship_states.py @@ -0,0 +1,33 @@ +from odoo.exceptions import UserError , ValidationError +from odoo import api, fields, models, _ + + +class SponsorshipStates(models.Model): + _name = "sponsorship.states" + _description = "SponsorshipS States" + _rec_name = 'display_name' + + name = fields.Selection([ + ('draft', 'Draft'), + ('confirmed', 'Confirmed'), + ('wait_pay', 'Enter Payment Details'), + ('paid', 'Paid'), + ('partial_refund', 'Partial Refund'), + ('fully_refund', 'Fully Refund'), + ('approve_refund', 'Approve Refund'), + ('under_refund', 'Under Refund Procedure'), + ('under_replacement', 'Under Replacement'), + ('replacement_done', 'Replacement Done'), + ('canceled', 'Canceled'), + ('closed', 'Closed'), + ], string='State', default='draft', required=True) + + display_name = fields.Char(string="Display Name", compute='_compute_display_name') + + @api.depends('name') + def _compute_display_name(self): + selection_dict = dict(self._fields['name'].selection) + for rec in self: + rec.display_name = _(selection_dict.get(rec.name, rec.name)) + + diff --git a/odex25_takaful/odex_takaful/models/takaful_conf.py b/odex25_takaful/odex_takaful/models/takaful_conf.py new file mode 100644 index 000000000..8152f4192 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/takaful_conf.py @@ -0,0 +1,133 @@ +from odoo.exceptions import UserError , ValidationError +from odoo import api, fields, models, _ + + +class DonationsItems(models.Model): + _name = "donations.items" + _description = "Donation Items" + + name = fields.Char(string="Donation Name") + donation_type = fields.Selection([('donation', 'Donation'),('waqf', 'Waqf'),('sponsorship', 'Sponsorship'),], string='Donation Type') + branch_custom_id = fields.Many2one('branch.settings', string="Branch") + show_donation_item = fields.Boolean(string='Show Donation Item') + fixed_value = fields.Boolean(string='Is Fixed Value?') + fixed_donation_amount = fields.Float(string='Donation Amount') + currency_id = fields.Many2one('res.currency', string='Currency', + default=lambda self: self.env.company.currency_id, readonly=True) + account_id = fields.Many2one('account.account', string="Account",domain="[('user_type_id.id','=',13)]") + product_id = fields.Many2one('product.product', string="Product", domain="[('type', '=', 'service')]") + _quantity = fields.Float(default=0, store=True) + donation_types = fields.Selection([('donation', 'Donation'), ('waqf', 'Waqf')],string='Donation Type') + payment_method_id = fields.Many2one('takaful.payment.method', string="Payment Method") + + + @api.model + def create(self, vals): + """Automatically create a product when a donation item is created""" + donation_item = super(DonationsItems, self).create(vals) + + # Create a related product + product = self.env['product.product'].create({ + 'name': donation_item.name, + 'type': 'service', + }) + + # Link the created product to the donation item + donation_item.product_id = product.id + + return donation_item + + @api.onchange('name') + def _onchange_name(self): + """Update the related product name when the donation item name changes""" + if self.product_id: + self.product_id.name = self.name + + def add_payment_method(self): + return { + 'type': 'ir.actions.act_window', + 'name': _('Add Details Wizard'), + 'res_model': 'add.details.wiz', + 'view_mode': 'form', + 'target': 'new', + } + + def utilizable_cart_details(self): + """ + Utilizable Cart Details For Remove , Add And Update Operations + For Cart To Product Catelog Module To Object addcart.sales.products + """ + + context = self._context.copy() or {} + cart_object = self.env["donations.details.lines"] + cart_details = dict() + total_count = cart_object.search_count( + [('donation_name', '=', self.id), ('sponsorship_id', '=', context.get('sponsorship_id'))]) # , ("cart_flag", "=", True) + cart_details["total_count"] = total_count + cart_data = cart_object.search( + [('donation_name', '=', self.id), ('sponsorship_id', '=', context.get('sponsorship_id'))]) # , ("cart_flag", "=", True) + cart_details["cart_data"] = cart_data + return cart_details + + def initiate_sol(self, operation, sponsorship_id): + """ + Initiate Donation Details Lines By Cart Functionality. + """ + + so_object = self.env["takaful.sponsorship"] + sale_object = so_object.search([("id", "=", sponsorship_id)]) + if operation == "add": + so_object.sol_by_cart(operation, self, sale_object) + elif operation == "remove": + so_object.sol_by_cart(operation, self, sale_object) + elif operation == "update": + so_object.sol_by_cart(operation, self, sale_object) + + def set_quantity_so(self, quantity, operation=None): + context = self._context.copy() or {} + cart_details = self.utilizable_cart_details() + if operation == "remove": + self._quantity -= quantity + if cart_details.get("total_count") != 0: + self.initiate_sol("remove", context.get("sponsorship_id")) + else: + if self._quantity == 0: + self._quantity += quantity + if cart_details.get("total_count") != 0: + self.initiate_sol("update", context.get("sponsorship_id")) + else: + self.initiate_sol("add", context.get("sponsorship_id")) + + def remove_quantity_button_so(self): + if self._quantity == 0: + self._quantity = 0 + return + return self.set_quantity_so(1, operation="remove") + + def add_quantity_button_so(self): + return self.set_quantity_so(1, operation="add") + + + + +class PointsOfSaleCustom(models.Model): + _name = "points.of.sale.custom" + _description = "Points Of Sale Custom" + + name = fields.Char(string="Sequence/Point Name",readonly=True) + department_name = fields.Selection([('men', 'Men'),('women', 'Women')], string='Department Name') + branch_custom_ids = fields.Many2many('branch.settings',relation='points_sale_branch_settings_rel',column1='points_sale_id', column2='branch_id',string="Branch") + journal_id = fields.Many2one('account.journal', string="Journal",domain="[('type','=','bank')]") + + @api.model + def create(self, vals): + res = super(PointsOfSaleCustom, self).create(vals) + if not res.name or res.name == _('New'): + res.name = self.env['ir.sequence'].sudo().next_by_code('point.of.sale.sequence') or _('New') + return res + +class RefundReason(models.Model): + _name = "refund.reasons" + _description = "Refund Reason" + + name = fields.Char(string="Name") \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/models/takaful_contribution_model.py b/odex25_takaful/odex_takaful/models/takaful_contribution_model.py new file mode 100644 index 000000000..77aafa17d --- /dev/null +++ b/odex25_takaful/odex_takaful/models/takaful_contribution_model.py @@ -0,0 +1,122 @@ +# -*- coding: utf-8 -*- + +from odoo.exceptions import UserError , ValidationError +from odoo import api, fields, models, _ + +import logging + +_logger = logging.getLogger(__name__) + + +class TakafulContribution(models.Model): + _name = "takaful.contribution" + _description = "Financial Contribution" + + name = fields.Char(string="Operation Name") + sponsor_id = fields.Many2one( + 'res.partner', + string='The Sponsor', + ondelete='set null' + ) + need_id = fields.Many2one('benefits.needs') + benefit_id = fields.Many2one( + 'grant.benefit', + string='Beneficiary', + ondelete='set null' + ) + benefit_ids = fields.Many2many( + 'grant.benefit', + string='Beneficiaries' + ) + benefit_type = fields.Selection([ + ('orphan', 'Orphans'), + ('widow', 'Widows'), + ('general', 'General')], + string='Beneficiaries Type', + compute='_compute_benefit_type_values', + related=False, + readonly=True, + ) + operation_type = fields.Selection([ + ('contribution', 'Needs Contribution'), + ('gift', 'Financial Gift')], + string='Operation Type', + ) + amount = fields.Float(string="Amount") + currency_id = fields.Many2one('res.currency', string='Currency', + default=lambda self: self.env.company.currency_id, readonly=True) + note = fields.Text(string='Note/Message') + date = fields.Datetime(string="Date", default=fields.Datetime.now) + entry_id = fields.Many2one('account.move', string="Entry") + is_confirmed = fields.Boolean(default=False) + + def _compute_benefit_type_values(self): + for rec in self: + b_type = [] + if rec.benefit_ids: + for i in rec.benefit_ids: + b_type.append(i.benefit_type) + if rec.benefit_id: + b_type.append(rec.benefit_id.benefit_type) + if 'orphan' in b_type and 'widow' not in b_type: + rec.benefit_type = 'orphan' + if 'widow' in b_type and 'orphan' not in b_type: + rec.benefit_type = 'widow' + if 'widow' in b_type and 'orphan' in b_type: + rec.benefit_type = 'general' + if b_type == []: + rec.benefit_type = '' + + def create_entry(self): + sudoConf = self.env['ir.config_parameter'].sudo() + journal_id = sudoConf.get_param('odex_takaful_base.kafala_journal_id', default=False) + if not journal_id: + # Raise an error + raise ValidationError( + _(u'No Journal for Sponsorships, Please configure it')) + + need_inv = self.env['needs.payment.line'].sudo().create({ + "need_id" : self.need_id.id, + "invoice_id" : inv.id, + }) + + product_id = self.env['product.product'].search([('default_code', '=', 'financial_gift')], limit=1) + partner_id = self.sponsor_id + + product_id.sudo().write({ + "list_price": self.amount, + }) + + # Do your staf .. + this_products_line = [[0, 0, {'product_id': product_id.id, + 'tax_id': False, + }] + ] + + so_id = self.env['sale.order'].create({ + '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 ""), + 'order_line': this_products_line + }) + + # Invoicing + so_id.action_confirm() + inv_id = so_id.action_invoice_create() + inv = self.env['account.move'].browse(inv_id) + inv.journal_id = int(journal_id) + + move_name = u'مساهمة مالية بالأمر %s' % inv.origin + ctx = self.env.context.copy() + ctx.update({'sponsorship' : { + 'name': move_name, + 'ref': inv.origin, + } + }) + inv.with_context(ctx).action_invoice_open() + + self.entry_id = inv.move_id.id + + diff --git a/odex25_takaful/odex_takaful/models/takaful_grant_benefit_model.py b/odex25_takaful/odex_takaful/models/takaful_grant_benefit_model.py new file mode 100644 index 000000000..0498c5017 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/takaful_grant_benefit_model.py @@ -0,0 +1,372 @@ +# -*- coding: utf-8 -*- + +from odoo import api, fields, models, _ +from datetime import datetime, date, timedelta +from datetime import timedelta +from dateutil.relativedelta import relativedelta +from dateutil.parser import parse +from odoo.exceptions import UserError, ValidationError, Warning +import logging + +_logger = logging.getLogger(__name__) + + +class TakafulGrantBenefit(models.Model): + _inherit = "grant.benefit" + + is_active_sponsorship = fields.Boolean( + string="Currently Has Sponsorship?", compute='_get_sponsorship_ids') + + sponsorship_ids = fields.Many2many( + 'takaful.sponsorship', string='Sponsorships', compute='_get_sponsorship_ids') + has_kafala_delay = fields.Boolean( + string='Has Kafala Delay?', compute='_get_sponsorship_ids') + overdue_kafalat_amount = fields.Float( + string="Current Overdue Kafalat Amount", compute='_get_sponsorship_ids') + + # These fields work to calculate the value of the need and its percentage + total_kafala_value = fields.Integer( + string='Total Kafala Value', compute='_needs_value') + benefit_needs_value = fields.Float(compute='_needs_value') + benefit_needs_percent = fields.Float(compute='_needs_value') + + # Monthly sponsorship Payments + # sponsorship_payment_ids = fields.One2many( + # 'benefit.sponsorship.payment.line', + # 'benefit_id', 'Sponsorship Monthly Payments') + + # @api.onchange('arrears_ids') + # def _compute_sponsorships_arrears(self): + # for rec in self: + # rec.benefit_arrears_value = sum(rec.arrears_ids.mapped('arrears_total')) + + @api.onchange('total_expenses', 'total_income') + def _needs_value(self): + for rec in self: + rec.total_kafala_value = rec.total_expenses + kafala_income = 0.0 + for kafala in rec.sponsorship_ids: + # if kafala.state not in ['draft', 'canceled', 'closed']: #todo + kafala_income += kafala.contribution_value + rec.benefit_needs_value = abs( + rec.total_expenses - rec.total_income - kafala_income) # todo + try: + rec.benefit_needs_percent = 100 - \ + (((rec.total_income + kafala_income) / rec.total_kafala_value) * 100) + except: + rec.benefit_needs_percent = 0.0 + pass + + def _get_sponsorship_ids(self): + """ Get Sponsorships of Benefit""" + for rec in self: + sponsorships = self.env['takaful.sponsorship'].sudo().search( + [('benefit_id', '=', rec.id), ('state', 'in', ['wait_pay', 'progress', 'to_cancel'])]) + overdue_kafala = 0 + ls_ids = [] + + today = datetime.today().date().replace(day=1) + for spon in sponsorships: + spon._compute_next_due_date() + ls_ids.append(spon.id) + if spon.has_delay: + start_date = parse(str(spon.start_date)).date().replace(day=1) + if spon.paid_month_count > 0: + last_pay_date = start_date + \ + relativedelta(months=spon.paid_month_count) + else: + spon._compute_next_due_date() + last_pay_date = (spon.next_due_date or start_date + + relativedelta(months=spon.paid_month_count)) + + if spon.paid_month_count == 0: + num_months = 1 + else: + num_months = (today.year - last_pay_date.year) * \ + 12 + (today.month - last_pay_date.month) + + overdue_kafala += (num_months * spon.contribution_value) + + if ls_ids: + rec.sponsorship_ids = [(6, 0, ls_ids)] + rec.is_active_sponsorship = True + else: + rec.sponsorship_ids = [(6, 0, [])] + rec.is_active_sponsorship = False + + if overdue_kafala > 0: + rec.has_kafala_delay = True + rec.overdue_kafalat_amount = overdue_kafala + else: + rec.has_kafala_delay = False + rec.overdue_kafalat_amount = 0 + + +class GrantBenefitInvoice(models.Model): + _name = "grant.benefit.invoice" + _description = 'Invoice for Beneficiaries' + # _rec_name = 'code' + + benefit_ids = fields.Many2many('grant.benefit', string='Beneficiaries') + operation_invoice_id = fields.Many2one('account.move', + string="Invoice", ondelete='set null', readonly=True) + operation_code = fields.Char(string='Operation Code', readonly=True) + operation_type = fields.Selection([ + ('sponsorship', 'Sponsorship'), + ('financial_gift', 'Financial Gift'), + ('need_contribution', 'Needs Contribution')], + string='Operation Type', + ) + operation_id = fields.Integer(readonly=True) + benefit_type = fields.Selection([ + ('orphan', 'Orphans'), + ('widow', 'Widows')], + string='Beneficiaries Type', + ) + benefit_target = fields.Selection([ + ('person', 'Individual'), + ('group', 'Group')], + string='Target of Beneficiaries', + ) + paid_amount = fields.Float(string='Paid Amount', readonly=True) + currency_id = fields.Many2one('res.currency', string='Currency', + default=lambda self: self.env.company.currency_id, readonly=True) + partner_id = fields.Many2one('res.partner', string='From', + store=True, + related='operation_invoice_id.partner_id') + journal_id = fields.Many2one('account.journal', string='Journal', + store=True, + related='operation_invoice_id.journal_id') + due_date = fields.Date(string='Due Date', store=True, + related='operation_invoice_id.invoice_date') + due_code = fields.Char(string='Due Code', store=True, + compute='_get_due_code', ) + payment_date = fields.Date(string='Payment Date', readonly=True) + note = fields.Text(string='Note/Message') + is_recorded = fields.Boolean( + string='Is Recorded In Beneficiaries', default=False) + + def _get_due_code(self): + """ Extract due code from due date """ + for rec in self: + if rec.due_date: + date = parse(str(rec.due_date)).date() + rec.due_code = date.strftime("%Y_%m") + + +class AccountInvoice(models.Model): + _inherit = "account.move" + + benefit_invoice_ids = fields.One2many('grant.benefit.invoice', 'operation_invoice_id', + string='The Beneficiaries', ondelete='restrict') + + +class AccountPayment(models.Model): + _inherit = "account.payment" + + direct_debit = fields.Boolean(string='Direct Debit', default=False) + is_benefit_registered = fields.Boolean( + string='Is Registered To Beneficiary', default=False) + + def sponsorship_validate_invoice_payment(self, invoice): + + sponsorship_obj = self.env['takaful.sponsorship'].sudo().browse( + invoice.operation_id) + # Create an invoice for benefits. + benefit_invoice = self.env['grant.benefit.invoice'].sudo().create({ + 'operation_invoice_id': invoice.id, + 'operation_type': 'sponsorship', + 'operation_id': sponsorship_obj.id, + 'operation_code': sponsorship_obj.code, + 'benefit_type': sponsorship_obj.benefit_type, + 'benefit_target': sponsorship_obj.sponsorship_type, + 'paid_amount': self.amount, + 'payment_date': self.payment_date, + }) + + if sponsorship_obj.sponsorship_type == 'person': + benefit_invoice.write( + {'benefit_ids': [(4, sponsorship_obj.benefit_id.id)]}) + else: + for benefit in sponsorship_obj.benefit_ids: + benefit_invoice.write({'benefit_ids': [(4, benefit.id)]}) + + if invoice.state == 'paid': + self.is_benefit_registered = True + + # Change State + if not sponsorship_obj.has_delay: + sponsorship_obj.state = "progress" + + # Send SMS and Email Notifications + paid_template = self.env['takaful.message.template'].search( + [('template_name', '=', 'sponsorship_paid')], limit=1) + + subject = paid_template.title + message = paid_template.body + '\n' + _('Sponsorship: ') + '{}'.format(sponsorship_obj.code) + '\n' + _( + 'Paid Value: ') + '{}'.format(self.amount) + '\n' + _('Invoice Ref: ') + '{}'.format(invoice.number) + user_id = sponsorship_obj.sponsor_id.user_id + + push = self.env['takaful.push.notification'].sudo().create({ + 'user_id': user_id.id, + 'title': subject, + 'body': message, + }) + + push.sudo().send_sms_notification() + push.sudo().send_email_notification() + + def action_validate_invoice_payment(self): + res = super(AccountPayment, self).action_validate_invoice_payment() + # Handle payment for every invoice + for invoice in self.invoice_ids: + # move = invoice.invoice_id + if invoice.operation_type == 'sponsorship': + self.sudo().sponsorship_validate_invoice_payment(invoice) + + return res + + +class TakafulGrantBenefit(models.Model): + _inherit = "grant.benefit" + + @api.model + def create(self, values): + name = values.get('name', False) + if name is False: + first_name = values.get('first_name') + second_name = values.get('second_name') + middle_name = values.get('middle_name') + family_name = values.get('family_name') + name = '' + if all([second_name,first_name,middle_name,family_name]): + name = first_name + " " + second_name + " " + middle_name + " " + family_name + values.update({'name': name}) + values.update({'lang': 'ar_001'}) + values.update({'tz': 'Asia/Riyadh'}) + return super(TakafulGrantBenefit, self).create(values) + + arrears_ids = fields.One2many( + 'sponsorship.benefit.arrears', 'sponsor_id', string="Sponsorships Arrears") + benefit_arrears_value = fields.Float( + string='Total Sponsorships Arrears', compute='_compute_sponsorships_arrears', store=True) + has_arrears = fields.Boolean( + string='Has Arrears', compute='_compute_sponsorships_arrears', store=True) + # analytic_account_id = fields.Many2one( + # 'account.analytic.account', 'Cost Center') + + def finish_complete_data(self): + for rec in self: + res = super(TakafulGrantBenefit, self).finish_complete_data() + # main_analytic_account_id = "" + # self.ensure_one() + # sudoConf = self.env['ir.config_parameter'].sudo() + # main_widows_analytic_account_id = sudoConf.get_param( + # 'odex_benefit.main_widows_analytic_account_id', default=False) + # main_orphan_analytic_account_id = sudoConf.get_param( + # 'odex_benefit.main_orphan_analytic_account_id', default=False) + # if rec.benefit_type == "orphan": + # if not main_orphan_analytic_account_id: + # raise ValidationError( + # _(''' Please set orphan restricted income account in settings ''')) + # main_analytic_account_id = main_orphan_analytic_account_id + # elif rec.benefit_type == "widow": + # if not main_widows_analytic_account_id: + # raise ValidationError( + # _(''' Please set widow restricted income account in settings ''')) + # main_analytic_account_id = main_widows_analytic_account_id + # if main_analytic_account_id and not rec.analytic_account_id: + # ID = self.env['account.analytic.account'].create({'parent_id': main_analytic_account_id,'name': rec.name}) + # rec.write({'analytic_account_id': ID.id}) + def action_accepted(self): + for rec in self: + res = super(TakafulGrantBenefit, self).action_accepted() + # main_analytic_account_id = "" + # self.ensure_one() + # sudoConf = self.env['ir.config_parameter'].sudo() + # main_widows_analytic_account_id = sudoConf.get_param( + # 'odex_benefit.main_widows_analytic_account_id', default=False) + # main_orphan_analytic_account_id = sudoConf.get_param( + # 'odex_benefit.main_orphan_analytic_account_id', default=False) + # if rec.benefit_type == "orphan": + # if not main_orphan_analytic_account_id: + # raise ValidationError( + # _(''' Please set orphan restricted income account in settings ''')) + # main_analytic_account_id = main_orphan_analytic_account_id + # elif rec.benefit_type == "widow": + # if not main_widows_analytic_account_id: + # raise ValidationError( + # _(''' Please set widow restricted income account in settings ''')) + # main_analytic_account_id = main_widows_analytic_account_id + # if main_analytic_account_id and not rec.analytic_account_id: + # ID = self.env['account.analytic.account'].create({'parent_id': main_analytic_account_id,'name': rec.name}) + # rec.write({'analytic_account_id': ID.id}) + + @api.onchange('arrears_ids') + def _compute_sponsorships_arrears(self): + for rec in self: + rec.benefit_arrears_value = sum( + rec.arrears_ids.mapped('arrears_total')) + if rec.benefit_arrears_value > 0: + rec.has_arrears = True + else: + rec.has_arrears = False + + +class SponsorshipBenefitArrears(models.Model): + _name = "sponsorship.benefit.arrears" + _description = 'Sponsorship Arrears for a Beneficiary' + _rec_name = 'code' + + benefit_id = fields.Many2one('grant.benefit', string='Beneficiary') + benefit_type = fields.Selection( + string="Beneficiary Type", related="benefit_id.benefit_type", store=True) + sponsorship_id = fields.Many2one( + 'takaful.sponsorship', + string='Sponsorship' + ) + sponsor_id = fields.Many2one( + 'res.partner', + string='The Sponsor', + ondelete='set null' + ) + code = fields.Char(string="Sponsorship Number", + related="sponsorship_id.code", store=True) + month_amount = fields.Float(string="Month Sponsorship Amount", + related="sponsorship_id.load_amount", store=True, readonly=True) + currency_id = fields.Many2one('res.currency', string='Currency', + default=lambda self: self.env.company.currency_id, readonly=True) + arrears_month_number = fields.Integer(string="Arrears Months Number") + arrears_total = fields.Float(string="Arrears Total") + date = fields.Date('Date', readonly=True, default=fields.Date.today()) + is_paid = fields.Float(string="Is Paid", compute='_get_arrears_amount') + paid_amount = fields.Float( + string="Paid Amount", compute='_get_arrears_amount', store=True) + arrears_amount = fields.Float( + string="Remine Arrears Amount", compute='_get_arrears_amount', store=True) + invoice_ids = fields.Many2many( + 'account.move', string='Payment Invoices') + + def _get_arrears_amount(self): + """ Compute Arrears Amount, Paid and Remine""" + for rec in self: + if rec.invoice_ids: + paid_amount = 0 + for inv in rec.invoice_ids: + if inv.state == 'paid': + paid_amount += inv.amount + + if paid_amount > 0: + rec.paid_amount = paid_amount + rec.arrears_amount = abs(rec.arrears_total - paid_amount) + else: + rec.paid_amount = 0 + rec.arrears_amount = rec.arrears_total + + if paid_amount >= rec.arrears_total: + rec.is_paid = True + else: + rec.is_paid = False + else: + rec.is_paid = False + rec.arrears_amount = rec.arrears_total diff --git a/odex25_takaful/odex_takaful/models/takaful_month_payment.py b/odex25_takaful/odex_takaful/models/takaful_month_payment.py new file mode 100644 index 000000000..707b221f4 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/takaful_month_payment.py @@ -0,0 +1,268 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api, _ +from datetime import datetime, date, timedelta +from odoo.exceptions import UserError, ValidationError +from odoo.tools import DEFAULT_SERVER_DATE_FORMAT +from ..utils import formats +from dateutil.relativedelta import relativedelta +from dateutil.parser import parse + +import logging + +_logger = logging.getLogger(__name__) + + +class MonthPayment(models.Model): + _name = 'month.payment' + _inherit = ['mail.thread', 'mail.activity.mixin'] + + name = fields.Char(string="Name") + code = fields.Char(string="Code", copy=False, readonly=True, default=lambda x: _('New')) + journal_id = fields.Many2one('account.journal') + account_id = fields.Many2one('account.account', ) + date = fields.Date(string="Date", default=fields.Datetime.now) + amount = fields.Float(string="Total Amount", compute='_compute_payment_total', store=True) + currency_id = fields.Many2one('res.currency', string='Currency', + default=lambda self: self.env.company.currency_id, readonly=True) + count = fields.Integer(string="Count", compute='_compute_payment_total', store=True) + user_id = fields.Many2one('res.users', string="Issued By", default=lambda self: self.env.user) + company_id = fields.Many2one('res.company', string="Company", default=lambda self: self.env.user.company_id) + line_ids = fields.One2many('month.payment.line', 'month_id', string="Lines") + due_invoice_ids = fields.Many2many('grant.benefit.invoice', string="Due Payments") + + state = fields.Selection([ + ('draft', 'Draft'), + ('create', 'Create Lines'), + ('approve', 'Approved'), + ('submit', 'Submit To Pay'), + ('paid', 'Paid'), + ('refused', 'Refused'), + ('cancel', 'Cancel'), + ], string='state', default="draft", tracking=True) + + month_code = fields.Char(string="Month Code", store=True, compute='_compute_payment_month_code') + entry_id = fields.Many2one('account.move', string="Entry") + + @api.depends('line_ids') + def _compute_payment_total(self): + for rec in self: + if rec.line_ids: + rec.amount = sum(rec.line_ids.mapped('amount')) + rec.count = len(rec.line_ids) + else: + rec.amount = 0 + rec.count = 0 + + @api.onchange('name', 'date') + def _compute_payment_name(self): + if self.date and not self.name: + date = parse(str(self.date)).date() + self.name = _('Sponsorship Due Payments') + ' {}'.format(date.strftime("%m-%Y")) + + def _compute_payment_month_code(self): + """ Extract month code from date """ + for rec in self: + if rec.date: + date = parse(str(rec.date)).date() + rec.month_code = date.strftime("%Y_%m") + + @api.model + def create(self, vals): + res = super(MonthPayment, self).create(vals) + if not res.code or res.code == _('New'): + res.code = self.env['ir.sequence'].sudo().next_by_code('month.payment.sequence') or _('New') + return res + + def open_payments(self): + return { + 'name': _('Payments'), + 'view_type': 'form', + 'view_mode': 'tree,form', + 'views': [(self.env.ref( + 'odex_takaful.benefit_month_payment_line_tree').id, 'tree'), + (self.env.ref('odex_takaful.benefit_month_payment_line_form').id, 'form')], + 'res_model': 'month.payment.line', + 'type': 'ir.actions.act_window', + 'domain': "[('month_id','=',%s)]" % (self.id), + 'target': 'current', + } + + def action_create_lines(self): + if not self.line_ids: + due_invoices = self.env['grant.benefit.invoice'].sudo().search([ + ('operation_type', '=', 'sponsorship'), + ('due_code', '=', self.month_code), + ('is_recorded', '=', False), + ]) + + for rec in due_invoices: + if rec.benefit_target == "person" and len(rec.benefit_ids) ==1: + line = self.env['month.payment.line'].sudo().create({ + 'month_id': self.id, + 'sponsorship_id': rec.operation_id, + 'benefit_id': rec.benefit_ids[0].id, + 'responsible_id': rec.benefit_ids[0].responsible_id.id if rec.benefit_ids[0].responsible_id else False, + 'partner_id': rec.benefit_ids[0].responsible_id.partner_id.id if rec.benefit_ids[0].responsible_id else False, + 'amount': rec.paid_amount, + 'date': datetime.now(), + }) + else: + amount = (rec.paid_amount / len(rec.benefit_ids)) + now = datetime.now() + for ben in rec.benefit_ids: + line = self.env['month.payment.line'].sudo().create({ + 'month_id': self.id, + 'sponsorship_id': rec.operation_id, + 'benefit_id': ben.id, + 'responsible_id': ben.responsible_id.id if ben.responsible_id else False, + 'partner_id': ben.responsible_id.partner_id.id if ben.responsible_id else False, + 'amount': amount, + 'date': now, + }) + + self.write({'due_invoice_ids': [(4, rec.id)]}) + + # Now true for rec.is_recorded + # rec.is_recorded = True + + self.state = 'create' + + + def create_entry(self): + move_name = self.name + ' - %s' % self.code + move_id = self.env['account.move'].sudo().create({ + 'name': move_name, + 'journal_id': self.company_id.kafala_benefit_journal_id.id, + 'ref': self.code}) + move_line = [] + move_line.append({ + 'debit': self.amount, + 'credit': 0.0, + 'account_id': self.company_id.kafala_benefit_account_id.id, + }) + move_line.append({ + 'debit': 0.0, + 'credit': self.amount, + 'account_id': self.company_id.kafala_benefit_bank_account_id.id, + }) + + move_id.write({'line_ids': [(0, 0, line) for line in move_line]}) + move_id.post() + self.entry_id = move_id.id + + for inv in self.due_invoice_ids: + inv.is_recorded = True + + def action_notify(self): + if self.state == 'submit': + payment = self.env['month.payment.line'].search([('month_id', '=', self.id)]) + for i in payment: + if i.responsible_id.email: + email_from = self.env.user.company_id.email + company_name = self.env.user.company_id.name + + template_id = self.env.ref('odex_takaful.push_notification_email_template').id + context = { + 'email_from': email_from, + 'email_to': i.responsible_id.email, + 'partner_name': i.responsible_id.name, + 'body': _("You have recieved money in tolal of %s in your account.") % str(i.amount), + 'title': _("Recieving Money"), + 'company_name': company_name + } + + # Start to SEND Email + self.env['mail.template'].browse(template_id).with_context(context).send_mail(self.id, force_send=True, raise_exception=False) + + self.state = 'paid' + else: + raise ValidationError( + _(u' No benefits for pay')) + + def action_approve(self): + if self.line_ids: + self.sudo().create_entry() + self.state = 'approve' + + def action_refuse(self): + self.state = 'refused' + + def action_submit(self): + self.state = 'submit' + + def action_cancel(self): + for i in self.line_ids: + i.sudo().unlink() + self.state = 'cancel' + + +class MonthPaymentLine(models.Model): + _name = 'month.payment.line' + _rec_name = 'month_id' + + month_id = fields.Many2one('month.payment') + sponsorship_id = fields.Many2one("takaful.sponsorship", string="Sponsorship") + s_code = fields.Char(string="Sponsorship Number", related="sponsorship_id.code",store=True) + sponsor_id = fields.Many2one(string="The Sponsor", related="sponsorship_id.sponsor_id",store=True) + benefit_id = fields.Many2one('grant.benefit', string="Benefit") + benefit_type = fields.Selection(string="Benefit Type", related="benefit_id.benefit_type",store=True) + responsible_id = fields.Many2one('grant.benefit', string="Responsible Benefit") + partner_id = fields.Many2one('res.partner', string="Responsible Partner") + date = fields.Date(string="Date") + state = fields.Selection(related="month_id.state", store=True) + code = fields.Char(related="month_id.code", store=True) + amount = fields.Float(string="Amount") + currency_id = fields.Many2one('res.currency', string='Currency', + default=lambda self: self.env.company.currency_id, readonly=True) + +""" +@api.model + def payment_cron(self): + payment = self.env['month.payment'].search([('state', '=', 'approve'), ('date', '=', str(datetime.now().date())), + ('line_ids', '=', False)], limit=1) + if payment: + payment.action_create_lines() + +def create_records(self, benefits, support=False): + if benefits: + self.sudo().is_benefits = True + for p in benefits: + p.get_amount_month() + amount = float("{:.2f}".format(p.amount * self.amount)) + if self.is_appendix: + payment = self.env['month.payment.line'].search([('month_id', '=', self.parent_id.id)]) + for i in payment: + amount += i.amount + line = self.env['month.payment.line'].sudo().create({ + 'month_id': self.id, + 'benefit_id': p.id, + 'responsible_id': p.id if not support else p.parent_id.id, + 'amount': amount, + 'date': datetime.now(), + }) + if self.is_appendix: + + payment = self.env['month.payment.line'].search([('month_id', '=', self.id)]) + self.amount = 0.0 + for pay in payment: + self.amount += pay.amount + +def action_create_lines(self): + if not self.line_ids: + if not self.parent_id: + benefit = self.env['grant.benefit'].search([('state', '=', 'approve')]) + benefits = benefit.filtered(lambda r: r.benefit_type in ['benefit', 'support']) + self.create_records(benefits) + parent = benefit.filtered(lambda r: r.benefit_type == 'parent') + self.get_child(parent) + self.get_child(benefits) + else: + ben = self.parent_id.line_ids.mapped('benefit_id') + benefit = self.env['grant.benefit'].search([('state', '=', 'approve')]) + benefits = benefit.filtered(lambda r: r.benefit_type in ['benefit', 'support'] and r.id not in ben.ids) + self.create_records(benefits) + parent = benefit.filtered(lambda r: r.benefit_type == 'parent') + self.get_child(parent, sub=ben.ids) + self.get_child(benefits, sub=ben.ids) + self.state = 'create' +""" \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/models/takaful_notification.py b/odex25_takaful/odex_takaful/models/takaful_notification.py new file mode 100644 index 000000000..0177f8030 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/takaful_notification.py @@ -0,0 +1,61 @@ +from odoo import models, fields, api, _ + + +class TakafulNotification(models.Model): + _inherit = 'takaful.notification' + + name = fields.Char(string='Notification Name', required=True) + notification_type = fields.Selection([ + ('create_kafala', _('Create Kafala')), + ('before_finish', _('Before Kafala End Date')), + ('after_kafala_end', _('After Kafala End Date')), + ('cancel_kafala', _('Cancel Kafala')), + ('refund_full_kafala', _('Fully Refund Kafala')), + ('refund_partial_kafala', _('Partially refund Kafala')), + ('replace_orphan', _('Replace Orphan / Widow')), + ('full_payment', _('Full Payment')), + ('partial_payment', _('Partial Payment')), + ('before_cancel', _('Before Cancel')), + ], + string='Notification Type', + default='create_kafala', + required=True + ) + + notification_state_ids = fields.Many2many('sponsorship.states', required=True) + + message = fields.Html(string="Message") + + + + @api.onchange('notification_type') + def _onchange_notification_type(self): + """Filter available states based on notification_type.""" + if not self.notification_type: + return + + allowed_states = { + 'create_kafala': ['draft'], + 'before_finish': ['confirmed', 'wait_pay'], + 'after_kafala_end': ['paid', 'closed'], + 'cancel_kafala': ['canceled'], + 'refund_full_kafala': ['fully_refund'], + 'refund_partial_kafala': ['partial_refund'], + 'replace_orphan': ['under_replacement', 'replacement_done'], + 'full_payment': ['paid'], + 'partial_payment': ['wait_pay'], + 'before_cancel': ['confirmed'], + } + + state_names = allowed_states.get(self.notification_type, []) + + domain = [('name', 'in', state_names)] + + if allowed_states: + self.notification_state_ids = self.env['sponsorship.states'].search(domain) + + return { + 'domain': { + 'notification_state_ids': domain + } + } diff --git a/odex25_takaful/odex_takaful/models/takaful_payment_method.py b/odex25_takaful/odex_takaful/models/takaful_payment_method.py new file mode 100644 index 000000000..b9c97e86d --- /dev/null +++ b/odex25_takaful/odex_takaful/models/takaful_payment_method.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- + +from odoo import models, fields, api, _ + + +class TakafulPaymentMethod(models.Model): + _name = 'takaful.payment.method' + + name = fields.Char(required=True) + payment_method = fields.Selection([ + ("cash", "Cash"), + ("bank", "Bank Transfer"), + ("direct_debit", "Direct Debit"), + ("check", "Check"), + ("network", "Network"), + ], required=True) + + journal_id = fields.Many2one('account.journal', string="Journal", required=True) diff --git a/odex25_takaful/odex_takaful/models/takaful_push_notification.py b/odex25_takaful/odex_takaful/models/takaful_push_notification.py new file mode 100644 index 000000000..0ad12d374 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/takaful_push_notification.py @@ -0,0 +1,92 @@ +# -*- coding: utf-8 -*- +from odoo import api, fields, models, _ +from odoo.exceptions import UserError + +class TakafulMessageTemplate(models.Model): + _name = "takaful.message.template" + _description = "Message Template" + _rec_name = 'title' + + title = fields.Char(string='Subject') + body = fields.Text(string='Message', required=True) + template_name = fields.Char('Template Name', readonly=True, copy=False) + + _sql_constraints = [ + ('template_name_uniq', 'unique (template_name)', 'Template Name Is Already Exist!') + ] + + +class TakafulPushNotification(models.Model): + _name = 'takaful.push.notification' + _description = 'Push Notification' + + user_id = fields.Many2one('res.users', string="Sponsor User", required=True) + email = fields.Char(string='Email', related='user_id.login',store=True) + mobile = fields.Char(string='Mobile', related='user_id.phone',store=True) + + title = fields.Char(string='Subject') + body = fields.Text(string='Message', required=True) + sent_on = fields.Datetime(string="Sent On", default=fields.Datetime.now) + + is_read = fields.Boolean(string="Seen", default=False) + + # @api.multi + def send_sms_notification(self): + self.ensure_one() + return self.user_id.partner_id.sudo().send_sms_notification(body=self.body, phone=self.mobile) + + # @api.multi + def send_email_notification(self): + self.ensure_one() + if not all([self.email, self.body]): + # Missing email message information" + return False + + email_from = self.env.user.company_id.email + company_name = self.env.user.company_id.name + + template_id = self.env.ref('odex_takaful.push_notification_email_template').id + context = { + 'email_from': email_from, + 'email_to': self.email, + 'partner_name': self.user_id.partner_id.name, + 'body': self.body, + 'title': self.title or _("Notification"), + 'company_name': company_name + } + try: + # Start to SEND Email + self.env['mail.template'].browse(template_id).with_context(context).send_mail(self.id, force_send=True) + except Exception as e: + return False + + """ + And getting the values (context) in email template + ${ctx.get('your_key')} + """ + # Email is SENT ... + return True + + # @api.multi + def send_all(self): + self.ensure_one() + for tool in self.notification_type_ids: + if tool.tool_type == "sms": + sms = self.send_sms_notification() + if sms: + print("SMS is sent.") + + elif tool.tool_type == "app": + print("App message is sent.") + + elif tool.tool_type == "email": + email= self.send_email_notification() + if email: + print("Email is sent.") + + + + + + + diff --git a/odex25_takaful/odex_takaful/models/takaful_sponorship_model.py b/odex25_takaful/odex_takaful/models/takaful_sponorship_model.py new file mode 100644 index 000000000..18f6e8898 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/takaful_sponorship_model.py @@ -0,0 +1,2081 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api, _, exceptions +from datetime import datetime, date +from odoo import SUPERUSER_ID +from odoo.exceptions import UserError, ValidationError, Warning + +from ast import literal_eval +import datetime +from datetime import timedelta +from dateutil.relativedelta import relativedelta +from dateutil.parser import parse +from math import floor +import re +import requests +from odoo.osv import expression +import logging + +SAUDI_MOBILE_PATTERN = r"^(\+?966)?0?5[013456789][0-9]{7}$" + + +def trunc_datetime(someDate): + # Compare two dates based on Month and Year only + return someDate.replace(day=1, hour=0, minute=0, second=0, microsecond=0) + + +def get_first_day_of_next_month(): + """ Get the first day of the next month. Preserves the timezone. """ + dt = datetime.datetime.today() # Starting from current month + if dt.day == 1: + # Ya.. first day of the month! + return dt + + if dt.month == 12: + return datetime.datetime(year=dt.year + 1, + month=1, + day=1, + tzinfo=dt.tzinfo) + else: + return datetime.datetime(year=dt.year, + month=dt.month + 1, + day=1, + tzinfo=dt.tzinfo) + + +class TakafulSponsorship(models.Model): + _name = 'takaful.sponsorship' + _inherit = ['mail.thread', 'mail.activity.mixin', 'phone.validation.mixin'] + _description = "Sponsorship" + _rec_name = 'code' + _order = 'id desc' + + sponsor_id = fields.Many2one('res.partner',string='Sponsor Name',domain="['|', '|',('is_donor', '=', True), ('is_member', '=', True), ('is_sponsor_portal', '=', True)]") + preferred_communication = fields.Many2one('preferred.communication', string="Preferred Communication", related="sponsor_id.preferred_communication") + member_id = fields.Many2one('res.partner',string='Member Name',domain="[('is_member', '=', True)]") + is_gift = fields.Selection([('no', 'No'),('yes', 'Yes')],string='Is Gift To Person') + gifter_id = fields.Many2one( + 'res.partner', + string='The Gifter To' + ) + gifter_name = fields.Char(string="The Gifter Name") + gifter_mobile = fields.Char(string="The Gifter Mobile") + gifter_message = fields.Text(string='Message To Gifter') + + sponsorship_type = fields.Selection([('person', 'Individual'),('group', 'Group')],string='Sponsorship Type',tracking=True) + code = fields.Char(string="Sequence",copy=False,readonly=True) + benefit_type = fields.Selection([('orphan', 'Orphans'),('widow', 'Widows')],string='Sponsorship Beneficiary Type',tracking=True) + branch_custom_id = fields.Many2one('branch.settings', string="Branch", default=lambda self: self._default_branch_custom_id(), required=True, tracking=True) + sponsorship_creation_date = fields.Datetime(string="Sponsorship Creation Date", default=fields.Datetime.now, required=True, copy=False) + sponsor_note = fields.Text(string='Sponsor Note') + sponsor_or_donor_type = fields.Selection(string='Sponsor / Donor Type',selection=[('registered', 'Registered'), ('new_sponsor', 'New Sponsor'), ('unknown', 'Unknown')], required=True, default='registered') + # ('not_registered', 'Not Registered'), + sponsor_donor_type = fields.Selection(string='Sponsor / Donor Type',selection=[('registered', 'Registered'), ('new_sponsor', 'New Sponsor')], default='registered') + sponsor_name = fields.Char(string="Sponsor Name") + sponsor_phone = fields.Char(string="Sponsor Phone", compute='_compute_sponsor_phone', store=True, readonly=False) + sponsor_title = fields.Many2one('res.partner.title',string='Sponsor Title') + donate_for_another_person = fields.Boolean(string='Donate For Another Person') + another_sponsors = fields.One2many('donate.for.another.person','sponsorship_id') + registered_type = fields.Selection(string='Registered Type',selection=[('sponsor', 'Sponsor'),('member', 'Member'), ('donor', 'Donor')]) + # TODO: Remove this field + members_domain_ids = fields.Many2many(comodel_name='family.member', compute='_compute_domain_ids') + # This is if for one person, and not a group. + benefit_id = fields.Many2one('family.member',string='Beneficiary Name',ondelete='set null',domain = "[('id', 'in',members_domain_ids)]") + family_id = fields.Many2one('grant.benefit',string='Family',ondelete='set null',related="benefit_id.benefit_id") + education_status = fields.Selection(string='Education Status',selection=[('educated', 'educated'), ('illiterate', 'illiterate'),('under_study_age','Under Study Age')]) + education_level = fields.Many2one("education.level", string='Education Levels') + sponsorship_duration = fields.Selection([('temporary', 'Temporary'),('permanent', 'Permanent')],string='Sponsorship Duration',default='permanent',tracking=True) + total_sponsorship_amount = fields.Float(string='Total Sponsorship Amount',compute='_get_total_sponsorship_amount') + #This field for total of donation and waqf without sponsorship + total_waqf_and_donation_amount = fields.Float(string='Total Sponsorship Amount',compute='_get_total_waqf_and_donation_amount') + supporter_status = fields.Selection([ + ('no', 'Not Exist'), + ('yes', 'Exist')], + string='Supporter', + tracking=True, + compute='_compute_supporter_status', + ) + + has_needs = fields.Boolean(store=True) + donations_details_lines = fields.One2many( + 'donations.details.lines', + 'sponsorship_id', + readonly=True, + states={'draft': [('readonly', False)]}, tracking=True + ) + donations_details_lines_mechanism_ids = fields.One2many( + 'donations.details.lines', + 'sponsorship_mechanism_id', + readonly=True, + states={'draft': [('readonly', False)]}, tracking=True + ) + sponsorship_scheduling_line_ids = fields.One2many('sponsorship.scheduling.line', 'sponsorship_id') + payment_details_lines = fields.One2many('payment.details.lines','sponsorship_id') + show_payment_details = fields.Boolean(string="Show Payment Details") + manager_id = fields.Many2one('hr.employee', string="Branch Manager", compute='_compute_manager_id', store=True) + + journal_entry_ids = fields.One2many('account.move', 'takaful_sponsorship_id') + journal_entry_count = fields.Integer(compute="_compute_journal_entry_count") + journal_entry_count_vendor = fields.Integer(compute="_compute_journal_entry_count_vendor") + payment_ids = fields.One2many('account.payment', 'takaful_sponsorship_id') + refund_move_count = fields.Integer(compute="_compute_refund_move_count") + related_move_lines_records_count = fields.Integer(compute="_compute_related_move_lines_records") + refund_details_lines_ids = fields.One2many('refund.details.lines', 'sponsorship_id') + donation_mechanism = fields.Selection([('with_conditions', 'With Conditions'),('without_conditions', 'Without Conditions')],string='Donation Mechanism', default='without_conditions') + donations_count = fields.Integer(compute="_compute_donation_count", string="Donations Count") + cancel_refund = fields.Boolean(string='Cancel Refund Time', compute="compute_days_after_payment") + replaced = fields.Boolean('Replaced') + replacement_id = fields.Many2one('replacement.process', string="Replacement") + create_uid = fields.Many2one('res.users', default=lambda self: self.env.user) + marketer_id = fields.Many2one('hr.employee') + + + @api.depends('sponsor_id','sponsor_id.mobile') + def _compute_sponsor_phone(self): + for rec in self: + rec.sponsor_phone = rec.sponsor_id.mobile if rec.sponsor_id else False + + def compute_days_after_payment(self): + """Check if the number of hours passed after payment is within the configured limit""" + for record in self: + config_param = record.env['ir.config_parameter'].sudo() + max_hours = int(config_param.get_param('odex_takaful.cancel_refund', default=0)) + payment_record = record.payment_details_lines[:1] # Get the first record + if payment_record and payment_record.payment_date: + now = fields.Datetime.now() + payment_datetime = fields.Datetime.to_datetime(payment_record.payment_date) + hours_passed = (now - payment_datetime).total_seconds() / 3600 # Convert seconds to hours + record.cancel_refund = hours_passed >= max_hours + else: + record.cancel_refund = False + + def unlink(self): + for rec in self: + if rec.state not in ['draft']: + raise UserError(_('You cannot delete this record')) + return super(TakafulSponsorship, self).unlink() + + def approve_refund(self): + self.create_refund_invoice() + self.state = 'under_refund' + + def create_refund_invoice(self): + invoice_lines = [] + unpaid_invoice_exists = self.env['account.move'].search( + [('takaful_sponsorship_id', '=', self.id), ('move_type', '=', 'out_refund'), + ('payment_state', '!=', 'paid')]) + if unpaid_invoice_exists: + raise ValidationError(_("You have Refund invoice not paid")) + for line in self.refund_details_lines_ids: + if line.invoiced == False: + sponsorship_scheduling_line = line.sponsorship_scheduling_line_ids[:1] or line.sponsorship_scheduling_line + # Check if product exists from donation item + product_template = sponsorship_scheduling_line.donation_detail_linked_id.product_template_id + product = sponsorship_scheduling_line.donation_detail_linked_id.product_id # Directly linked product + + if not product: + # If no product_id exists in product_template, check if a product with the same name exists + product = self.env['product.product'].search([('name', '=', product_template.name)], limit=1) + + if not product: + # Create new product if it doesn't exist + product = self.env['product.product'].create({ + 'name': product_template.name, + 'type': 'service' # Setting type to service + }) + + invoice_lines.append((0, 0, { + 'product_id': product.id, + 'account_id': sponsorship_scheduling_line.donation_detail_linked_id.product_template_id.property_account_income_id.id, # The same account for all lines + 'quantity': 1, # Qty is 1 + # The same analytic account + 'takaful_sponsorship_id': self.id, + 'price_unit': line.refund_amount, + 'analytic_account_id': self.branch_custom_id.branch.analytic_account_id.id + })) + invoice = self.env['account.move'].create({ + 'move_type': 'out_refund', # Refund Invoice + 'partner_id': self.sponsor_id.id, + 'invoice_date': fields.Date.today(), + 'invoice_line_ids':invoice_lines, + 'takaful_sponsorship_id': self.id, + 'is_refund_sponsorship': True, + 'sponsorship_scheduling_line': sponsorship_scheduling_line.id, + 'payment_details_line': line.payment_details_line.id, + }) + invoice.action_post() + line.invoiced = True + return invoice + + def action_replacement_processes(self): + return { + 'name': _('Replacement Processes'), + 'type': 'ir.actions.act_window', + 'res_model': 'replacement.process', + 'view_mode': 'tree,form', + 'domain': [('sponsorship_id', '=', self.id)], + } + + def donation_catelog(self): + cart_object = self.env["donations.details.lines"] + product_object = self.env["product.template"] + cart_products_details = cart_object.search( + [('sponsorship_id', "=", self.id)]) # , ("cart_flag", "=", True) + product_object_data = product_object.search( + [("_quantity", "!=", 0)]) + assign_quantity = 0 + for rec in product_object_data: + rec._quantity = 0 + if len(cart_products_details) > 0: + for rec in cart_products_details: + # assign_quantity = rec.product_uom_qty + if assign_quantity == 0: + assign_quantity += 1 + rec.product_id._quantity = assign_quantity + # else: + # product_object_data = product_object.search( + # [("_quantity", "!=", 0)]) + # for rec in product_object_data: + # rec._quantity = 0 + + kanban_view = self.env.ref( + 'odex_takaful.product_template_view_kanban_odex_takaful') + + all_donation_lines = self.donations_details_lines | self.donations_details_lines_mechanism_ids + + return { + 'type': 'ir.actions.act_window', + 'name': _('Choose Donation Items'), + 'res_model': 'product.template', + 'views': [(kanban_view.id, 'kanban')], + 'view_id': kanban_view.id, + 'domain': [('id', 'not in', all_donation_lines.mapped('product_template_id').ids), + ('donation_category', '=', 'donation')], + 'context': { + # '_quantity_change': True, + 'sponsorship_id': self._origin.id, + 'create': False, + 'hide_breadcrumbs': True, + 'action_code': 'donation_items' + }, + 'target': "new", + 'help': _("""

+ Create a new donation +

""") + } + + def sol_by_cart(self, operation, product_id, sponsorship_id): + """ + Create Sale Order Line By + Cart Functionality + """ + + sol_object = self.env["donations.details.lines"] + sol_data = dict() + sol_data["product_template_id"] = product_id.id + sol_data["sponsorship_id"] = sponsorship_id.id + # sol_data["donation_amount"] = product_id.fixed_donation_amount + sol_data["donation_amount"] = product_id.list_price + # sol_data["donation_amount"] = product_id.list_price * product_id._quantity + sol_data["donation_qty"] = product_id._quantity + sol_data["donation_types"] = 'donation' + sol_data["name"] = product_id.name + + if operation == "add": + sol_object.create(sol_data) + return + + + sol_ = sol_object.search( + [('sponsorship_id', '=', sponsorship_id.id), ('product_template_id', '=', product_id.id), ]) # ("cart_flag", "=", True) + + + if operation == "update": + sol_.update(sol_data) + + if operation == "remove": + sol_.unlink() + return + + def user_input_qty_sol(self, _qty, product_id, sponsorship_id): + # sol_object = self.env["donations.details.lines"] + # product_object = self.env["product.template"] + + # donation_id = product_object.search([('id', '=', product_id)]) + # sol_data = dict() + # sol_data["product_template_id"] = donation_id.id + # sol_data["sponsorship_id"] = sponsorship_id + # sol_data["donation_amount"] = donation_id.fixed_donation_amount + # sol_data["donation_types"] = 'donation' + # sol_data["name"] = donation_id.name + # so = sol_object.create(sol_data) + sol_object = self.env["donations.details.lines"].sudo() + product_object = self.env["product.template"].sudo() + + product = product_object.browse(product_id) + if not product.exists(): + return + + existing = sol_object.search([ + ("sponsorship_id", "=", sponsorship_id), + ("product_template_id", "=", product_id), + ], limit=1) + + if _qty and _qty > 0: + if existing: + existing.write({"donation_qty": _qty}) + else: + sol_object.create({ + "product_template_id": product.id, + "sponsorship_id": sponsorship_id, + "donation_types": 'donation', + "name": product.name, + "donation_qty": _qty, + "donation_amount": product.lst_price + }) + else: + # remove if qty <= 0 + if existing: + existing.unlink() + return + + @api.depends('journal_entry_ids') + def _compute_journal_entry_count(self): + for rec in self: + rec.journal_entry_count = len(rec.journal_entry_ids.filtered(lambda r: r.move_type == 'out_invoice')) + + @api.depends('journal_entry_ids') + def _compute_journal_entry_count_vendor(self): + for rec in self: + rec.journal_entry_count_vendor = len(rec.journal_entry_ids.filtered(lambda r: r.move_type == 'in_invoice')) + + @api.depends('donations_details_lines') + def _compute_donation_count(self): + for rec in self: + rec.donations_count = len(rec.donations_details_lines.filtered(lambda r: r.display_type == False)) + len(rec.donations_details_lines_mechanism_ids.filtered(lambda r: r.display_type == False)) + + def action_view_journal_entries(self): + self.ensure_one() # Ensure the method is called on a single record + action = self.env.ref('account.action_move_out_invoice_type').read()[0] + action['domain'] = [('move_type', '=', 'out_invoice'), ('id', 'in', self.journal_entry_ids.ids)] + action['context'] = { + 'default_takaful_sponsorship_id': self.id, + 'create': False + } + return action + + def action_view_journal_entries_vendor(self): + self.ensure_one() # Ensure the method is called on a single record + action = self.env.ref('account.action_move_out_invoice_type').read()[0] + action['domain'] = [('move_type', '=', 'in_invoice'), ('id', 'in', self.journal_entry_ids.ids)] + action['context'] = { + 'default_takaful_sponsorship_id': self.id, + 'create': False + } + return action + + @api.depends('journal_entry_ids') + def _compute_refund_move_count(self): + for rec in self: + rec.refund_move_count = len(rec.journal_entry_ids.filtered(lambda r: r.move_type == 'out_refund')) + + def action_view_refund_moves(self): + self.ensure_one() + return { + 'name': _('Moves'), + 'type': 'ir.actions.act_window', + 'res_model': 'account.move', + 'view_mode': 'tree,form', + 'domain': [('id', 'in', self.journal_entry_ids.filtered(lambda r: r.move_type == 'out_refund').ids)], + } + + def action_open_donation_catalog(self): + """ Opens product catalog to link products to sponsorship """ + self.ensure_one() + return { + 'name': _('Donation Catalog'), + 'type': 'ir.actions.act_window', + 'res_model': 'product.template', + 'view_mode': 'tree', + 'view_id': self.env.ref('odex_takaful.view_product_template_tree_sponsorship').id, + 'context': { + 'sponsorship_id': self.id, 'create': False, 'edit': False, 'delete': False, + }, + 'domain': [('donation_category', '=', 'donation'), ('id', 'not in', self.donations_details_lines.mapped('product_template_id').ids)], + 'target': 'new', + } + + def _compute_related_move_lines_records(self): + for record in self: + record.related_move_lines_records_count = len(self.env['account.move'].search([ + ('takaful_sponsorship_id', '=', record.id), ('move_type', '=', 'out_refund') + ]).mapped('line_ids').ids) + + def action_open_related_move_lines_records(self): + """ Opens a tree view with related records filtered by a dynamic domain """ + move_lines = self.env['account.move'].search([ + ('takaful_sponsorship_id', '=', self.id), ('move_type','=','out_refund') + ]).mapped('line_ids').ids + + return { + 'name': _('Moves'), + 'type': 'ir.actions.act_window', + 'res_model': 'account.move.line', + 'view_mode': 'tree,form', + 'domain': [('id', 'in', move_lines)], + } + + @api.depends('branch_custom_id') + def _compute_manager_id(self): + for record in self: + if record.branch_custom_id: + department = record.branch_custom_id.branch + record.manager_id = department.manager_id if department else False + + def action_show_payment_details(self): + self.write({'show_payment_details': True}) + return True + + def action_confirm_payment(self): + pass + + def _default_branch_custom_id(self): + return self.env['branch.settings'].sudo().search([('branch', '=', self.env.user.department_id.id)], limit=1) + + # @api.constrains('payment_details_lines') + # def check_payment_amount(self): + # total_amount = 0 + # for rec in self.payment_details_lines: + # total_amount += rec.donation_amount + # if total_amount != self.total_sponsorship_amount: + # raise ValidationError( + # _('Total Payment Amount Should be Total Sponsorship Amount')) + + @api.constrains('donations_details_lines','donations_details_lines_mechanism_ids') + def check_donation_types(self): + # Search for an existing record + record_exist = self.env["donations.details.lines"].search( + [('donation_type', '=', 'sponsorship'), + ('sponsorship_id', '=', self.id)], + ) + + # Raise error if record already exists + if record_exist and len(record_exist) > 1: + raise ValidationError(_("You cannot Add more than one sponsorship")) + + @api.constrains('end_date') + def check_end_date(self): + if self.sponsorship_duration == "temporary" and not self.end_date: + raise ValidationError( + _(u'Please Select End Date')) + + elif self.sponsorship_duration == "temporary" and self.end_date: + start_date = trunc_datetime(parse(str(self.start_date))).date() + end_date = trunc_datetime(parse(str(self.end_date))).date() + if start_date >= end_date: + raise ValidationError( + _(u'End Date Must Be More Than Start Date in Months')) + + @api.depends('benefit_id.benefit_id') + @api.onchange('benefit_id') + def _compute_supporter_status(self): + for rec in self: + if rec.benefit_id: + if rec.benefit_id.benefit_id: + rec.supporter_status = 'yes' + else: + rec.supporter_status = 'no' + else: + rec.supporter_status = '' + @api.depends('donations_details_lines', 'donations_details_lines_mechanism_ids') + def _get_total_sponsorship_amount(self): + for rec in self: + rec.total_sponsorship_amount = ( + sum(line.total_donation_amount for line in rec.donations_details_lines) + + sum(line.total_donation_amount for line in rec.donations_details_lines_mechanism_ids) + ) + @api.depends('donations_details_lines', 'donations_details_lines_mechanism_ids') + def _get_total_waqf_and_donation_amount(self): + for rec in self: + rec.total_waqf_and_donation_amount = ( + sum(line.total_donation_amount for line in + rec.donations_details_lines.filtered(lambda line: line.donation_type != 'sponsorship')) + + sum(line.total_donation_amount for line in rec.donations_details_lines_mechanism_ids.filtered( + lambda line: line.donation_type != 'sponsorship')) + ) + @api.onchange('donations_details_lines') + def onchange_donations_details_lines(self): + for rec in self: + rec.benefit_ids = ( + rec.donations_details_lines.mapped('benefit_ids').ids + + rec.donations_details_lines_mechanism_ids.mapped('benefit_ids').ids + ) + @api.depends('gender','education_status','education_level','sponsorship_type','benefit_type','age_category_id') + def _compute_domain_ids(self): + # Create a domain + self.members_domain_ids = [(6, 0, [])] + if self.benefit_type == 'orphan' and self.sponsorship_type: + base_domain = \ + [ + '|', ('state', '=', 'second_approve'), '&', ('state', 'in', ('waiting_approve', 'first_approve')),('action_type', '=', 'suspended'), + ('member_status', '=', 'benefit'), + '|', + ('relationn.relation_type', '=', 'daughter'), + ('relationn.relation_type', '=', 'son') + ] + if self.gender: + if self.gender == 'female': + base_domain = [ + '|', ('state', '=', 'second_approve'), '&', + ('state', 'in', ('waiting_approve', 'first_approve')), ('action_type', '=', 'suspended'), + ('member_status', '=', 'benefit'), ('relationn.relation_type', '=', 'daughter')] + if self.gender == 'male': + base_domain = [ + '|', ('state', '=', 'second_approve'), '&',('state', 'in', ('waiting_approve', 'first_approve')), ('action_type', '=', 'suspended'), + ('member_status', '=', 'benefit'),('relationn.relation_type', '=', 'son')] + if self.education_status: + base_domain.append(('education_status', '=', self.education_status)) + if self.education_level: + base_domain.append(('education_levels', '=', self.education_level.id)) + if self.age_category_id: + base_domain.append(('age', '<=', self.age_category_id.max_age)) + base_domain.append(('age', '>=', self.age_category_id.min_age)) + self.members_domain_ids = self.env['family.member'].sudo().search(base_domain) + domain = {'benefit_id': [('id', 'in', self.members_domain_ids.ids)]} + # return {'domain': domain} + if self.benefit_type == 'widow' and self.sponsorship_type: + self.benefit_count = 0 + self.min_needs_percent = 0 + self.max_needs_percent = 0 + base_domain = ['|',('state','=','second_approve'),'&',('state','in',('waiting_approve','first_approve')),('action_type','=','suspended'),('member_status','=','benefit'),'|',('relationn.relation_type', '=', 'mother'),('relationn.relation_type', '=', 'replacement_mother')] + if self.education_status: + base_domain.append(('education_status', '=', self.education_status)) + if self.education_level: + base_domain.append(('education_levels', '=', self.education_level.id)) + if self.age_category_id: + base_domain.append(('age', '<=', self.age_category_id.max_age)) + base_domain.append(('age', '>=', self.age_category_id.min_age)) + self.members_domain_ids = self.env['family.member'].sudo().search(base_domain) + domain = {'benefit_id': [('id', 'in', self.members_domain_ids.ids)]} + # return {'domain': domain} + + # @api.depends('sponsorship_type') + # def onchange_benefit_type(self): + # # Create a domain + # if self.benefit_type and self.benefit_id and not self.benefit_id.benefit_type == self.benefit_type: + # self.benefit_id = False + # elif self.benefit_type and self.benefit_ids and not self.benefit_ids[0].benefit_type == self.benefit_type: + # self.benefit_ids = [(6, 0, [])] + # self.benefit_count = 0 + # self.min_needs_percent = 0 + # self.max_needs_percent = 0 + # + # if self.benefit_type and self.sponsorship_type == 'person': + # self.benefit_ids = [(6, 0, [])] + # self.benefit_count = 0 + # self.min_needs_percent = 0 + # self.max_needs_percent = 0 + # base_domain = [('state', 'in', ('second_approve', 'temporarily_suspended', 'suspended_first_approve'))] + # if self.gender: + # if self.gender == 'female': + # base_domain.append(('relationn.relation_type', '=','daughter')) + # if self.gender == 'male': + # base_domain.append(('relationn.relation_type', '=', 'son')) + # if self.education_status: + # base_domain.append(('education_status', '=', self.education_status)) + # if self.education_level: + # base_domain.append(('education_levels', '=', self.education_level.id)) + # benefit_ids = self.env['family.member'].sudo().search(base_domain) + # domain = {'benefit_id': [('id', 'in', benefit_ids.mapped('id'))]} + # return {'domain': domain} + # elif self.benefit_type and self.sponsorship_type == 'group': + # self.benefit_id = False + # benefit_ids = self.env['grant.benefit'].sudo().search( + # [('benefit_type', '=', self.benefit_type), ('state', '=', 'approve')], limit=self.benefit_count) + # # domain = {'benefit_ids': [('id', 'in', benefit_ids.filtered(lambda ben: ben.benefit_needs_percent > 0 and ben.benefit_needs_percent >= self.min_needs_percent and ben.benefit_needs_percent <= self.max_needs_percent).mapped('id'))]} + # domain = {'benefit_ids': [('id', 'in', benefit_ids.mapped('id'))]} + # return {'domain': domain} + + gender = fields.Selection(selection=[('male', 'Male'), ('female', 'Female')], string="Gender") + age_category_id = fields.Many2one('age.category',string='Age Category') + city_id = fields.Many2one( + 'res.country.city',string='District') + + benefit_count = fields.Integer(string='Sponsorship Beneficiaries Number',compute="_get_benefits_count") + + start_date = fields.Date(string="Sponsorship Start Date", copy=False) + end_date = fields.Date(string="Sponsorship End Date") + + min_needs_percent = fields.Float(string='Min Needs Percentage') + max_needs_percent = fields.Float(string='Max Needs Percentage') + + sponsorship_class = fields.Selection([ + ('partial', 'Partial Sponsorship'), + ('fully', 'Fully Sponsorship')], + string='Sponsorship Beneficiaries Classification', + tracking=True + ) + benefit_ids = fields.Many2many('family.member',string='Beneficiaries Names') + + with_orphan_ids = fields.Many2many( + 'grant.benefit',relation='takaful_sponsor_grant_benefit_rel', + string='Orphans Names Of Widow' + ) + + is_widow_orphan = fields.Boolean( + string='Widow with Her Orphans?', default=False) + + payment_option = fields.Selection([('month', 'Monthly'),('once', 'For Once')], string='Payment Option') + payment_journal_id = fields.Many2one('account.journal', string='Payment Method', domain="[('type', 'in', ['cash', 'bank'])]",) + + cancel_reason_id = fields.Many2one('sponsorship.cancellation', string='Cancellation Entry', + tracking=True) + reason = fields.Text(string="Cancellation Reason", + related="cancel_reason_id.note", store=True) + + state = fields.Selection([ + ('draft', 'Draft'), + ('confirmed', 'Confirmed'), + ('wait_pay', 'Enter Payment Details'), + ('paid', 'Paid'), + # ('progress', 'In Progress'), + ('partial_refund', 'Partial Refund'), + ('fully_refund', 'Fully Refund'), + # ('to_cancel', 'About To Cancel'), + ('approve_refund', 'Approve Refund'), + ('under_refund', 'Under Refund Procedure'), + ('under_replacement', 'Under Replacement'), + ('replacement_done', 'Replacement Done'), + ('canceled', 'Canceled'), + ('closed', 'Closed'), + ], string='state', default='draft', tracking=True, store=True, compute='_compute_state') + + has_delay = fields.Boolean(string='Has Payment Delay?', compute='_check_if_has_delay', related=False, readonly=True, + store=True) + due_days = fields.Integer(string='Overdue in Days', + compute='_check_if_has_delay', store=True) + contribution_value = fields.Float(string="Contribution Value") + load_amount = fields.Float(string="Load Amount Per Person") + currency_id = fields.Many2one('res.currency', string='Currency', + default=lambda self: self.env.company.currency_id, readonly=True) + total_contribution = fields.Float(string="Contributions Total", + compute='calculate_total_paid') + + total_voucher = fields.Float(string="Voucher Total", + compute='voucher_total_paid') + # New Added + to_renew = fields.Boolean(string='Need To Renew?', default=False) + overdue_amount = fields.Float( + string='Overdue Amount', compute='_compute_overdue_total_amount') + expected_cancel_date = fields.Date( + string='Expected Cancel Date', compute='_check_if_has_delay') + month_count = fields.Integer( + string='Sponsorship Months Count', compute='_compute_month_count') + paid_month_count = fields.Integer( + string='Paid Months Count', compute='_compute_paid_month_count') + next_due_date = fields.Date( + string='Next Payment Date', compute='_compute_next_due_date', store=True) + close_to_be_canceled_date = fields.Date(string='Close To Cancel Date') + + # NN + invoice_count = fields.Integer(string='Invoices', + compute='_compute_invoice_count') + last_invoice_date = fields.Date(string='Last Invoice') + voucher_ids = fields.One2many('account.move','sponsorship_id',string='Vouchers', copy=False) + record_type = fields.Selection([ + ('donation', 'Donation'), + ('sponsorship', 'Sponsorship'), + ], string="Record Type", required=True, default=lambda self: self._get_default_record_type(), copy=False) + is_donations_coordinator = fields.Boolean(string="Is Donations Coordinator", compute='_compute_is_coordinator') + is_sponsorship_coordinator = fields.Boolean(string="Is Sponsorship Coordinator", compute='_compute_is_coordinator') + amount_paid = fields.Float(string='Amount Paid', compute='_compute_amount_paid') + + @api.depends('payment_ids', 'payment_ids.move_id.state') + def _compute_amount_paid(self): + for rec in self: + amount_paid = 0 + for payment in rec.payment_ids: + if self.env.context.get('exclude_direct_debit', False) and payment.direct_debit: + continue + if payment.state == 'posted': + amount_paid += payment.amount + rec.amount_paid = amount_paid + + @api.depends('payment_ids') + def _compute_state(self): + for sponsorship in self: + if not sponsorship.payment_ids: + sponsorship.state = sponsorship.state + continue + if sponsorship.amount_paid >= sponsorship.total_sponsorship_amount: + sponsorship.state = 'paid' + + vendor_bill_vals = [] + benefit_journal_id = sponsorship.env.company.kafala_benefit_journal_id.id + sponsorship_lines = (sponsorship.donations_details_lines + sponsorship.donations_details_lines_mechanism_ids).filtered(lambda l: not l.direct_debit) + + if sponsorship.record_type == 'donation' and sponsorship.donation_mechanism == 'with_conditions': + family_ids = sponsorship_lines.family_id + for family in family_ids: + family_lines = sponsorship_lines.filtered(lambda l: l.family_id == family) + bill_values = { + 'takaful_sponsorship_id': sponsorship.id, + 'name': self.env['ir.sequence'].next_by_code('account.move.accrsp'), + 'move_type': 'in_invoice', + 'journal_id': benefit_journal_id, + 'date': fields.Date.today(), + 'invoice_date': fields.Date.today(), + 'partner_id': family.partner_id.id, + 'invoice_origin': sponsorship.code, + 'invoice_line_ids': [(0, 0, { + 'product_id': line.product_id.id, + 'price_unit': line.donation_amount, + 'quantity': 1, + 'name': _("Benefit Number %s") % (line.sequence_no), + 'analytic_account_id': sponsorship.branch_custom_id.branch.analytic_account_id.id, + }) for line in family_lines] + } + vendor_bill_vals.append(bill_values) + + bill_id = self.env['account.move'].sudo().create(vendor_bill_vals) + for line in bill_id.invoice_line_ids: + line.account_id = line._get_computed_account() + taxes = line._get_computed_taxes() + if taxes and line.move_id.fiscal_position_id: + taxes = line.move_id.fiscal_position_id.map_tax(taxes, partner=line.partner_id) + line.tax_ids = taxes + line.product_uom_id = line._get_computed_uom() + bill_id.action_post() + else: + sponsorship.state = 'wait_pay' + + def copy(self, default=None): + self.ensure_one() + default = dict(default or {}) + default["record_type"] = self.record_type + return super(TakafulSponsorship, self).copy(default) + + @api.onchange('sponsor_donor_type') + def _onchange_sponsor_donor_type(self): + for rec in self: + if rec.sponsor_donor_type == 'registered': + rec.sponsor_or_donor_type = 'registered' + elif rec.sponsor_donor_type == 'new_sponsor': + rec.sponsor_or_donor_type = 'new_sponsor' + # Clear sponsor_id and related fields when switching to new_sponsor + if rec.sponsor_id: + rec.sponsor_id = False + rec.sponsor_phone = False + else: + # Clear sponsor_id and related fields when switching to unknown or other types + if rec.sponsor_id: + rec.sponsor_id = False + rec.sponsor_phone = False + + @api.onchange('sponsor_or_donor_type') + def _onchange_sponsor_or_donor_type(self): + for rec in self: + # Clear sponsor_id and related fields when not 'registered' + if rec.sponsor_or_donor_type != 'registered' and rec.sponsor_id: + rec.sponsor_id = False + rec.sponsor_phone = False + + @api.onchange('sponsor_id') + def _onchange_sponsor_id(self): + """ + Smart logic: If user manually selects a different sponsor from the list + after creating a new sponsor, automatically change the type to 'registered' + """ + for rec in self: + if rec.sponsor_id: + # Get the newly created sponsor ID from context (if exists) + newly_created_sponsor_id = self.env.context.get('newly_created_sponsor_id', False) + + # If the selected sponsor is NOT the newly created one, change type to 'registered' + if newly_created_sponsor_id and rec.sponsor_id.id != newly_created_sponsor_id: + if rec.record_type == 'donation' and rec.sponsor_or_donor_type == 'new_sponsor': + rec.sponsor_or_donor_type = 'registered' + elif rec.record_type == 'sponsorship' and rec.sponsor_donor_type == 'new_sponsor': + rec.sponsor_donor_type = 'registered' + + # Update related fields from selected sponsor + rec.sponsor_phone = rec.sponsor_id.mobile + rec.preferred_communication = rec.sponsor_id.preferred_communication + + @api.model + def create(self, vals): + """Override create to validate new sponsor requirement before creating""" + # Check if creating with 'new_sponsor' but no sponsor_id + record_type = vals.get('record_type') + sponsor_or_donor_type = vals.get('sponsor_or_donor_type') + sponsor_donor_type = vals.get('sponsor_donor_type') + sponsor_id = vals.get('sponsor_id') + state = vals.get('state', 'draft') + print('Vals >>> ' , vals) + # Only validate when state is draft and saving (not during onchange) + if state == 'draft': + # Check for donation with new_sponsor + if record_type == 'donation' and sponsor_or_donor_type == 'new_sponsor' and not sponsor_id: + raise ValidationError(_( + 'يجب إنشاء مشترك جديد أولاً قبل الحفظ.\n' + 'اضغط على زر "إنشاء مشترك" لإضافة مشترك جديد.' + )) + # Check for sponsorship with new_sponsor + elif record_type == 'sponsorship' and sponsor_donor_type == 'new_sponsor' and not sponsor_id: + raise ValidationError(_( + 'يجب إنشاء كافل جديد أولاً قبل الحفظ.\n' + 'اضغط على زر "إنشاء مشترك" لإضافة كافل جديد.' + )) + + # If validation passed, create the record + return super(TakafulSponsorship, self).create(vals) + + def _get_default_record_type(self): + if self.env.user.has_group("odex_takaful.donation_officer_group"): + return "donation" + if self.env.user.has_group("odex_takaful.sponsorship_officer_group"): + return "sponsorship" + return "" + + @api.depends_context("uid") + @api.depends('sponsorship_creation_date') + def _compute_is_coordinator(self): + for record in self: + record.is_donations_coordinator = self.env.user.has_group('odex_takaful.group_donations_coordinator') + record.is_sponsorship_coordinator = self.env.user.has_group('odex_takaful.group_sponsorship_coordinator') + + @api.onchange('record_type') + def _onchange_record_type(self): + """ + Clears the One2many field when record_type is changed and data exists in the other field. + """ + if self.record_type == 'sponsorship': + self.donation_mechanism = False + elif self.record_type == 'donation': + self.donation_mechanism = 'without_conditions' + + if self.donations_details_lines_mechanism_ids: + self.donations_details_lines_mechanism_ids = [(5, 0, 0)] # Clears the field + elif self.donations_details_lines: + self.donations_details_lines = [(5, 0, 0)] # Clears the field + + + @api.model + def default_get(self, fields): + res = super(TakafulSponsorship, self).default_get(fields) + if self.env.user.has_group('odex_takaful.group_donations_coordinator'): + res.update({ + 'record_type': 'donation', + }) + elif self.env.user.has_group('odex_takaful.group_sponsorship_coordinator'): + res.update({ + 'record_type': 'sponsorship', + }) + return res + + # payment_ids = fields.One2many('account.payment','sponsorship_id',string='Payments', copy=False) + + # @api.depends('contribution_value', 'benefit_ids', 'sponsorship_type') + # def _compute_load_amount(self): + # """ Calculate load amount of sponsorship for a person """ + # for rec in self: + # if rec.benefit_ids and rec.contribution_value > 0 and rec.sponsorship_type == 'group': + # rec.load_amount = float( + # rec.contribution_value / len(rec.benefit_ids)) + # else: + # rec.load_amount = rec.contribution_value + @api.depends('benefit_ids') + def _get_benefits_count(self): + for rec in self: + rec.benefit_count = len(rec.benefit_ids) + + def voucher_total_paid(self): + self.total_voucher = len(self.voucher_ids) + + def calculate_total_paid(self): + """ Calculate Total Paid Invoices based on sponsorship """ + for rec in self: + paid_invoices = self.env['account.move'].sudo().search_count([ + ('sponsorship_id', '=', rec.id), + ('state', 'not in', ['draft','proforma']), + ]) + rec.total_contribution = paid_invoices + + def _compute_invoice_count(self): + """ Calculate Invoice count based on sponsorship """ + invoice_count = self.env['account.move'].search_count( + [('operation_id', '=', self.id), ('operation_type', '=', 'sponsorship')]) + if invoice_count > 0: + self.invoice_count = invoice_count + else: + self.invoice_count = 0 + + def create_next_invoice(self, next_date=None): + if not next_date: + next_date = get_first_day_of_next_month(datetime.datetime.today()) + + # Get journal from config + sudoConf = self.env['ir.config_parameter'].sudo() + journal_id = sudoConf.get_param( + 'odex_takaful_base.kafala_journal_id', default=False) + + if not journal_id: + # Raise an error + raise ValidationError( + _(u'No Journal for Sponsorships, Please configure it')) + + journal = self.env['account.journal'].search([('id', '=', journal_id)]) + # Create the Invoice staff + customer = self.sponsor_id + # account_receivable = self.env['account.account'].search([('user_type_id', '=', self.env.ref('account.data_account_type_receivable').id)], limit=1) + + company_id = self.env.user.company_id + + if self.benefit_type == 'orphan': + account_revenue = company_id.orphan_account_id + elif self.benefit_type == 'widow': + account_revenue = company_id.widow_account_id + + if not account_revenue: + # Raise an error + raise ValidationError( + _(u'Invalid Orphans or Widows account, Please configure it')) + + account_receivable = company_id.kafala_benefit_account_id + if not account_receivable: + # Raise an error + raise ValidationError( + _(u'Invalid From Account of Benefit Payments (Recievable Account), Please configure it')) + + Invoice = self.env["account.move"].sudo() + + currency_id = self.env.ref('base.main_company').currency_id + + invoice_id = Invoice.create({ + 'operation_id': self.id, + 'operation_type': 'sponsorship', + 'partner_id': customer.id, + 'reference_type': 'none', + '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, + 'account_id': account_receivable.id, # account_id or + 'type': 'out_invoice', + 'comment': u'بغرض إستحقاق كفالة', + 'date_invoice': next_date, + }) + + product_id = self.env['product.product'].sudo().search( + [('default_code', '=', "sponsorship")], limit=1) + partner_id = self.sponsor_id + + # Update product: + product_id.sudo().write({ + "list_price": self.contribution_value, + "name": u'كفالة' + ' ' + self.code, + 'description_sale': u'كفالة رقم ' + self.code, + }) + + # Create line + InvoiceLine = self.env["account.move.line"] + InvoiceLine.create({ + 'product_id': product_id.id, + 'quantity': 1, + 'price_unit': self.contribution_value, + 'invoice_id': invoice_id.id, + 'name': u'كفالة رقم ' + self.code, + 'account_id': account_revenue.id, + # "invoice_line_tax_ids": [], + }) + + invoice_id.action_invoice_open() + + if invoice_id: + self.state = "wait_pay" + + return invoice_id + + def button_invoice_count(self): + """ It displays invoice based on sponsorship """ + return { + 'name': _('Invoices'), + 'domain': [('operation_id', '=', self.id), ('operation_type', '=', 'sponsorship')], + 'view_type': 'form', + 'res_model': 'account.move', + 'view_mode': 'tree,form', + 'type': 'ir.actions.act_window', + 'context': { + "create": False + } + } + + def button_payment(self): + """ Button to create invoice for sponsorship """ + out_invoice = self.create_next_invoice() + + return { + 'name': _('The Sponsorship Invoices'), + 'type': 'ir.actions.act_window', + 'res_model': 'account.move', + 'view_mode': 'form', + 'res_id': out_invoice.id if out_invoice else False + } + + # EE + def _compute_overdue_total_amount(self): + """ Calculate Total Overdue Amount""" + for rec in self: + overdue_kafala = 0 + # if rec.has_delay and rec.state in ['wait_pay', 'progress', 'to_cancel']: + if rec.has_delay and rec.state in ['wait_pay', 'to_cancel']: + # Get open invoices + open_invoices = self.env['account.move'].sudo().search( + [('state', '=', 'open'), ('operation_id', '=', rec.id), ('operation_type', '=', 'sponsorship')]) + for invoice in open_invoices: + if invoice.state == 'open': + overdue_kafala += invoice.residual_company_signed + rec.overdue_amount = overdue_kafala + + @api.depends("paid_month_count", "month_count", "last_invoice_date") + def _compute_next_due_date(self): + """ Find the Next Due Date for Sponsorship Payment""" + for rec in self: + next_due = None + if rec.end_date: + end_date = parse(str(rec.end_date)).date() + else: + end_date = None + + # if rec.state in ['draft', 'wait_pay', 'progress', 'to_cancel']: + if rec.state in ['draft', 'wait_pay', 'to_cancel']: + if rec.end_date and rec.paid_month_count < rec.month_count: + start_date = parse(str(rec.start_date)).date() + next_due = start_date + \ + relativedelta(months=(rec.paid_month_count + 1)) + else: + if rec.last_invoice_date: + last_invoice = parse(str(rec.last_invoice_date)).date() + next_due = last_invoice + relativedelta(months=1) + + if (next_due and end_date and next_due <= end_date) or (next_due and not rec.end_date): + rec.next_due_date = next_due + else: + rec.next_due_date = None + + if rec.state == "confirmed": + rec.next_due_date = parse(str(rec.start_date)).date() + + def _compute_paid_month_count(self): + """ Calculate Total Paid Months for the sponsorship """ + for rec in self: + invoice_count = self.env['account.move'].sudo().search_count([ + ('operation_type', '=', 'sponsorship'), + ('operation_id', '=', rec.id), + ('state', '=', 'paid'), + ]) + + if invoice_count > 0: + rec.paid_month_count = invoice_count + else: + rec.paid_month_count = 0 + + def _compute_month_count(self): + """ Calculate months count """ + for rec in self: + if rec.start_date and rec.end_date: + start = parse(str(rec.start_date)).date() + end = parse(str(rec.end_date)).date() + months = relativedelta(start, end) + rec.month_count = abs(months.months) + abs(months.years*12) + + def is_sponsorship_has_delay(self): + """ Find that if sponsorship package has overdue invoices""" + sudoConf = self.env['ir.config_parameter'].sudo() + allowed_days = int(sudoConf.get_param( + 'odex_takaful_base.allowed_pay_days')) + date_today = datetime.datetime.today().date() + + # Get open invoices + open_invoices = self.env['account.move'].sudo().search( + [('state', '=', 'open'), ('operation_id', '=', self.id), ('operation_type', '=', 'sponsorship')]) + for invoice in open_invoices: + payment_limt_date = parse( + str(invoice.date_due)) + timedelta(days=allowed_days) + if payment_limt_date.date() < date_today: + return payment_limt_date + + return False + + @api.depends('expected_cancel_date') + def _check_if_has_delay(self): + sudoConf = self.env['ir.config_parameter'].sudo() + cancel_kafala = int(sudoConf.get_param( + 'odex_takaful_base.cancel_kafala')) + date_today = datetime.datetime.today().date() + for rec in self: + delay_date = rec.is_sponsorship_has_delay() + if delay_date: + rec.has_delay = True + rec.due_days = (date_today - delay_date.date()).days + rec.expected_cancel_date = delay_date + \ + timedelta(days=(cancel_kafala)) + else: + rec.has_delay = False + rec.expected_cancel_date = None + rec.due_days = 0 + + @api.model + def create(self, vals): + # if vals.get('code', 'New') == 'New': + # vals['code'] = self.env['ir.sequence'].sudo().next_by_code('sponsorship.sequence') + + sponsor_phone = vals.get('sponsor_phone', False) + if sponsor_phone: + self._check_phone_numbers(sponsor_phone) + validated_sponsor_phone = self.phone_format(sponsor_phone) + vals.update({'sponsor_phone': validated_sponsor_phone}) + # Create the record + res = super(TakafulSponsorship, self).create(vals) + + + + return res + + def write(self, vals): + if 'sponsor_phone' in vals: + self._check_phone_numbers(vals['sponsor_phone']) + vals['sponsor_phone'] = self.phone_format(vals['sponsor_phone']) + res = super(TakafulSponsorship, self).write(vals) + return res + + def _check_phone_numbers(self, mobile_number): + for rec in self: + mobile = str(mobile_number).strip().replace(" ", "").replace("-", "") + if not re.fullmatch(SAUDI_MOBILE_PATTERN, mobile): + raise ValidationError(_('Enter a valid Saudi mobile number')) + + # @api.multi + def action_open_sponsorship_payement(self): + """Open Payments for a Sponsorship""" + pay = [] + pay_ids = self.voucher_ids.mapped('payment_id').ids + for line in self.voucher_ids: + pay.append(line.line_ids.filtered(lambda x : x.payment_id != False).mapped('payment_id').id) + domain = [('id','in',pay_ids)] + context = dict(self.env.context or {}) + context['default_sponsor_id'] = self.sponsor_id.id + context['default_sponsorship_id'] = self.id + return { + 'name': _('Sponsorship Payment'), + 'view_type': 'form', + 'view_mode': 'tree,form', + 'type': 'ir.actions.act_window', + 'res_model': 'account.payment', + 'target': 'current', + 'domain': domain, + } + + # @api.multi + def action_set_cancel(self): + """Make Cancellation For Sponsorship""" + domain = [] + context = dict(self.env.context or {}) + context['default_sponsor_id'] = self.sponsor_id.id + context['default_cancel_user_id'] = self.env.uid or SUPERUSER_ID + context['default_sponsorship_id'] = self.id + view = self.env.ref('odex_takaful.sponsorship_cancellation_form') + return { + 'name': _('Sponsorship Cancellation'), + 'view_mode': 'form', + 'view_type': 'form', + 'type': 'ir.actions.act_window', + 'res_model': 'sponsorship.cancellation', + 'view_id': view.id, + 'target': 'new', + 'domain': domain, + 'context': context, + } + + def action_set_close(self): + self.ensure_one() + self.state = 'closed' + + # @api.multi + def action_make_payement(self): + """Create Payment for Sponsorship Beneficiary""" + # Create necessary objects + if self.state == 'draft': + # Raise an error + raise ValidationError( + _(u'This Sponsorship is not confirmed')) + + self.sponsor_id.write({ + 'lang': 'ar_001', + }) + + domain = [] + context = dict(self.env.context or {}) + context['default_sponsor_id'] = self.sponsor_id.id + context['default_sponsorship_id'] = self.id + view = self.env.ref('odex_takaful.takaful_sponsorship_payment_form') + return { + 'name': _('Sponsorship Payment'), + 'view_mode': 'form', + 'view_type': 'form', + 'type': 'ir.actions.act_window', + 'res_model': 'sponsorship.payment', + 'view_id': view.id, + 'target': 'current', + 'domain': domain, + 'context': context, + } + + def action_confirm_data(self): + # In a model method or an automated action: + self.ensure_one() + # Check if donation details is empty + if not len(self.donations_details_lines) and not self.donations_details_lines_mechanism_ids: + raise ValidationError( + _("Please add at least one line in donation details!") + ) + #Check if The Total Amount is not Zero + if self.total_sponsorship_amount == 0: + raise ValidationError( + _("Please Check The Amount in donation Line!") + ) + + if not self.code: + self.code = self.env['ir.sequence'].sudo().next_by_code('sponsorship.sequence') + + if self.record_type == 'sponsorship': + for line in self.donations_details_lines_mechanism_ids: + if line.benefit_ids: + if len(line.benefit_ids) > 1: + for count, bf in enumerate(line.benefit_ids): + if count == 0: + line.benefit_id = bf.id + line.benefit_ids = bf.ids + line.benefits_count = 1 + else: + new_vals = { + 'benefit_ids': [(6, 0, [bf.id])], + 'benefit_id': bf.id, + 'record_type': line.record_type, + 'sponsorship_duration': line.sponsorship_duration, + 'product_template_id': line.product_template_id.id, + 'direct_debit': line.direct_debit, + 'payment_month_count': line.payment_month_count, + 'start_date': line.start_date, + 'donation_amount': line.donation_amount, + 'payment_option': line.payment_option, + 'donation_mechanism': 'with_conditions', + } + self.write({'donations_details_lines_mechanism_ids': [(0, 0, new_vals)]}) + + elif len(line.benefit_ids) == 1: + line.benefit_id = line.benefit_ids[0].id + + all_donation_lines = (self.donations_details_lines + self.donations_details_lines_mechanism_ids).filtered( + lambda r: r.display_type == False) + + + + for line in all_donation_lines.filtered(lambda r: r.record_type == 'sponsorship'): + for benefit in (line.benefit_id | line.benefit_ids): + if benefit.sponsor_related_id: + raise ValidationError(_("Cannot proceed with payment!\n\n" + "The following sponsorship lines contain beneficiaries that are already sponsored by other sponsors:\n" + "Lines: %s\n\n" + "Please choose different beneficiaries for these lines before proceeding with the payment." % line.sequence_no)) + + + if not all(all_donation_lines.mapped("sponsorships_computed")): + (self.donations_details_lines + self.donations_details_lines_mechanism_ids).compute_sponsorships_lines() + + if self.state == 'draft': + # Send SMS Notification + msg_template = self.env['takaful.message.template'].search( + [('template_name', '=', 'sponsorship_creation')], limit=1) + if self.start_date: + start_date = parse(str(self.start_date)).date() + start_by = _('Start Date') + start_text = start_by + ' ' + start_date.strftime('%d, %b %Y') + + subject = msg_template.title + message = msg_template.body + '\n' + _('Sponsorship Number') + ' %s' % self.code + '\n' + _( + 'Contribution Value') + ' %s' % str(self.contribution_value) + '\n' + start_text + user_id = self.sponsor_id.user_id + push = self.env['takaful.push.notification'].sudo().create({ + 'user_id': user_id.id, + 'title': subject, + 'body': message, + }) + + push.sudo().send_sms_notification() + + self.state = "confirmed" + for line_state in all_donation_lines: + line_state.state = 'confirmed' + faal_kheer_partner_id = self.env.company.faal_kheer_partner_id + # if self.sponsor_or_donor_type != 'registered': + # return + if self.sponsor_or_donor_type in ["registered", "new_sponsor"]: + partner_id = self.sponsor_id + elif self.sponsor_or_donor_type == "unknown": + partner_id = faal_kheer_partner_id + else: + partner_id = faal_kheer_partner_id + + sudoConf = self.env['ir.config_parameter'].sudo() + kafala_journal_id = sudoConf.get_param('odex_takaful_base.kafala_journal_id', default=False) + if not kafala_journal_id: + raise ValidationError( + _(''' Please set income journal in settings (kafala_journal_id Payment Journal)''')) + Invoice = self.env["account.move"].sudo() + invoice_values = { + 'takaful_sponsorship_id': self.id, + 'move_type': 'out_invoice', + 'journal_id': int(kafala_journal_id), + 'date': fields.Date.today(), + 'partner_id': partner_id.id, + 'invoice_origin': self.code, + } + invoice_line_vals = [(0, 0, { + 'product_id': line.product_id.id, + 'price_unit': line.total_donation_amount, + 'quantity': 1, + 'name': _("Sponsorship Entitlement Number %s") % line.sequence_no, + 'analytic_account_id': line.sponsorship_id.branch_custom_id.branch.analytic_account_id.id, + }) for line in all_donation_lines] + + current_invoice = self.journal_entry_ids.filtered(lambda r: r.move_type == 'out_invoice' and r.state == 'draft') + if current_invoice: + invoice_values['invoice_line_ids'] = [(5, 0, 0)] + invoice_line_vals + current_invoice.sudo().write(invoice_values) + invoice_id = current_invoice + else: + invoice_values.update({'invoice_line_ids': invoice_line_vals, 'name': self.env['ir.sequence'].next_by_code('account.move.accrsp')}) + invoice_id = Invoice.create(invoice_values) + + for line in invoice_id.invoice_line_ids: + line.account_id = line._get_computed_account() + taxes = line._get_computed_taxes() + if taxes and line.move_id.fiscal_position_id: + taxes = line.move_id.fiscal_position_id.map_tax(taxes, partner=line.partner_id) + line.tax_ids = taxes + line.product_uom_id = line._get_computed_uom() + + invoice_id.sudo().action_post() + + # Search for the notification message for 'create_kafala' + notification = self.env['takaful.notification'].sudo().search( + [('notification_type', '=', 'create_kafala'), ('message_type_ids.tool_type', '=', 'app')], + limit=1 + ) + + if not notification: + raise ValidationError(_("No Whatsapp notification of type 'Create Kafala' found.")) + else: + pass + #self.action_send_whatsapp() + + + def action_send_whatsapp(self): + config = self.env['ir.config_parameter'].sudo() + account_sid = config.get_param('odex_takaful.twilio_account_sid') + auth_token = config.get_param('odex_takaful.twilio_auth_token') + from_whatsapp = config.get_param('odex_takaful.twilio_from_whatsapp') + + if not account_sid or not auth_token or not from_whatsapp: + raise ValidationError(_("Twilio configuration is missing. Please configure Twilio SID, Auth Token, and WhatsApp number in General Configurations.")) + + from_cleaned_mobile = re.sub(r'[^\d+]', '', from_whatsapp) + from_whatsapp_number = f'whatsapp:{from_cleaned_mobile}' + # Search for the notification message for 'create_kafala' + notification = self.env['takaful.notification'].sudo().search( + [('notification_type', '=', 'create_kafala'), ('message_type_ids.tool_type', '=', 'app')], + limit=1 + ) + + if not notification: + raise ValidationError(_("No notification of type 'Create Kafala' found.")) + + # Use the message from the notification + amount = self.total_sponsorship_amount if hasattr(self, 'total_sponsorship_amount') else 0.0 + message = notification.message or _("No message found in 'Create Kafala' notification.") + message = notification.message.replace('[Amount]', f"{amount:.2f}") + message = re.sub(r'<[^>]+>', '', message).strip() + + for partner in self: + mobile = partner.sponsor_id.mobile if partner.sponsor_id else partner.member_id.mobile + + if mobile: + # Clean the number (keep + and digits only) + cleaned_mobile = re.sub(r'[^\d+]', '', mobile) + to_whatsapp_number = f'whatsapp:{cleaned_mobile}' + url = f"https://api.twilio.com/2010-04-01/Accounts/{account_sid}/Messages.json" + + payload = { + 'From': from_whatsapp_number, + 'To': to_whatsapp_number, + 'Body': message, + } + + response = requests.post( + url, + data=payload, + auth=(account_sid, auth_token) + ) + + if response.status_code != 201: + raise ValidationError(_("Failed to send WhatsApp message: %s") % response.text) + + + # @api.multi + def print_makfuleen_report(self): + """ Method to print Makfuleen report """ + datas = dict(self.env.context) + return self.env.ref('odex_takaful.makfuleen_report_pdf_act').report_action(self, data=datas) + + # @api.multi + def process_sponsor_payments_scheduler(self): + domain = [] + context = dict(self.env.context or {}) + context["create"] = False + context["edit"] = False + flags = {'initial_mode': 'readonly'} # default is 'edit' + return { + 'name': _('Move Entries'), + 'domain': domain, + 'view_type': 'form', + 'res_model': 'account.move', + 'view_mode': 'tree,form', + 'type': 'ir.actions.act_window', + 'flags': flags, + 'context': context, + } + + # """ + # contribute = self.env['takaful.contribution'].sudo().create({ + # 'name': u'مساهمة مالية لكمبيوتر مكتبي', + # 'sponsor_id': self.sponsor_id.id, + # 'benefit_id': self.benefit_id.id or False, + # 'amount': self.contribution_value, + # }) + # + # contribute.sudo().create_entry() + # """ + + # @api.multi + def monthly_create_sponsorship_invoice_scheduler(self): + sponsorships = self.env['takaful.sponsorship'].sudo().search( + [('state', 'in', ['wait_pay', 'to_cancel'])]) + # [('state', 'in', ['wait_pay', 'progress', 'to_cancel'])]) + for rec in sponsorships: + if rec.last_invoice_date: + today = trunc_datetime(datetime.datetime.today()).date() + invoice_date = parse(str(rec.last_invoice_date)) + last_invoice = trunc_datetime(invoice_date).date() + if today != last_invoice: + rec.sudo().create_next_invoice() + + + # @api.multi + def process_sponsorship_workflow_scheduler(self): + # _logger.info("Hi, Manage Sponsorship Workflow Scheduler")s + # Part: Processing state + sudoConf = self.env['ir.config_parameter'].sudo() + notifications = sudoConf.get_param( + 'odex_takaful_base.notification_ids') + + cancel_number = 1 + finish_number = 1 + cancel_message_type_ids = [] + finish_message_type_ids = [] + if notifications: + notification_ids = self.env['takaful.notification'].sudo().search( + [('id', 'in', literal_eval(notifications))]) + for rec in notification_ids: + if rec.notification_type == "before_cancel": + cancel_number = rec.duration + cancel_message_type_ids = rec.message_type_ids + + if rec.notification_type == "before_finish": + finish_number = rec.duration + finish_message_type_ids = rec.message_type_ids + + sponsorships = self.env['takaful.sponsorship'].sudo().search( + [('state', 'in', ['wait_pay', 'to_cancel'])]) + # [('state', 'in', ['wait_pay', 'progress', 'to_cancel'])]) + + date_today = datetime.datetime.today().date() + for rec in sponsorships: + # For colse (Finishing the sponsorships) + partner_id = rec.sponsor_id + if rec.end_date: + end_date = datetime.datetime.strptime( + rec.end_date, '%Y-%m-%d').date() + if end_date == date_today: + rec.sudo().write({"state": "closed", }) + # Send Close Notification + sponsorship_close_template = self.env['takaful.message.template'].sudo().search( + [('template_name', '=', 'sponsorship_close')], limit=1) + + subject = sponsorship_close_template.title + message = sponsorship_close_template.body + user_id = self.env['res.users'].sudo().search( + [('partner_id', '=', partner_id.id)], limit=1) + + push = self.env['takaful.push.notification'].sudo().create({ + 'user_id': user_id.id, + 'title': subject, + 'body': message, + }) + + push.sudo().send_sms_notification() + push.sudo().send_email_notification() + else: + before_close_date = end_date - \ + timedelta(days=finish_number) + if before_close_date == date_today and not rec.to_renew: + rec.to_renew = True + # Send About to Close Notification + sponsorship_to_close_template = self.env['takaful.message.template'].sudo().search( + [('template_name', '=', 'sponsorship_to_close')], limit=1) + + subject = sponsorship_to_close_template.title + message = sponsorship_to_close_template.body + + user_id = self.env['res.users'].sudo().search( + [('partner_id', '=', partner_id.id)], limit=1) + push = self.env['takaful.push.notification'].sudo().create({ + 'user_id': user_id.id, + 'title': subject, + 'body': message, + }) + for msg in finish_message_type_ids: + if msg.tool_type == "sms": + push.sudo().send_sms_notification() + + elif msg.tool_type == "email": + push.sudo().send_email_notification() + + # For Cancel or about to cancel sponsorships + if rec.expected_cancel_date: + cancel_date = datetime.datetime.strptime( + rec.expected_cancel_date, '%Y-%m-%d').date() + if cancel_date == date_today: + # Create Automatic cancellation record + sp_cancel = self.env['sponsorship.cancellation'].sudo().create({ + 'sponsorship_id': self.id, + 'cancel_type': "sys", + 'cancel_user_id': self.env.uid or SUPERUSER_ID, + 'note': _('Overdue in Sponsorships Payment of Total %s') % str(rec.overdue_amount) + }) + # Confirm cancellation and Send Notifications + sp_cancel.sudo().do_cancel_action() + else: + before_cancel_date = cancel_date - \ + timedelta(days=cancel_number) + if rec.state != "to_cancel" and before_cancel_date == date_today: + rec.sudo().write({"state": "to_cancel", }) + rec.close_to_be_canceled_date = before_cancel_date + # Send About to Cancel Notification + sponsorship_to_cancel_template = self.env['takaful.message.template'].sudo().search( + [('template_name', '=', 'sponsorship_to_cancel')], limit=1) + + subject = sponsorship_to_cancel_template.title + message = sponsorship_to_cancel_template.body + '\n' + _('Overdue Amount:') + ' %s' % str( + rec.overdue_amount) + + user_id = self.env['res.users'].sudo().search( + [('partner_id', '=', partner_id.id)], limit=1) + push = self.env['takaful.push.notification'].sudo().create({ + 'user_id': user_id.id, + 'title': subject, + 'body': message, + }) + for msg in cancel_message_type_ids: + if msg.tool_type == "sms": + push.sudo().send_sms_notification() + + elif msg.tool_type == "email": + push.sudo().send_email_notification() + else: + rec.close_to_be_canceled_date = None + + # _logger.info("Bye, Manage Sponsorship Workflow Scheduler") + + # @api.multi + def get_voucher_lines(self): + """ + prepare voucher lines from details lines + for voucher creation + """ + self.ensure_one() + if self.benefit_type == "orphan": + if not self.env.user.company_id.widow_account_id: + raise ValidationError( + _(''' Please set orphan restricted income account in settings ''')) + account_id = self.env.user.company_id.orphan_account_id.id + elif self.benefit_type == "widow": + if not self.env.user.company_id.widow_account_id: + raise ValidationError( + _(''' Please set widow restricted income account in settings ''')) + account_id = self.env.user.company_id.widow_account_id.id + + lines = [ + { + 'name': self.code, + 'account_id': account_id, + 'price_unit': self.contribution_value, + 'quantity': 1, # only one service + 'analytic_account_id': self.branch_custom_id.branch.analytic_account_id.id, + } + ] + lines = [(0, 0, x) for x in lines] + return lines + + # @api.multi + def open_account_voucher(self): + self.ensure_one() + lines = self.get_voucher_lines() + journal_id = False + sudoConf = self.env['ir.config_parameter'].sudo() + journal_id = sudoConf.get_param('odex_takaful_base.kafala_journal_id', default=False) + if not journal_id: + raise ValidationError( + _(''' Please set income journal in settings (kafala_journal_id Payment Journal)''')) + + company_id = self.env.user.company_id.id + p = self.sponsor_id if not company_id else self.sponsor_id.with_company(company_id) + + rec_account = p.property_account_receivable_id + pay_account = p.property_account_payable_id + if not rec_account and not pay_account: + raise ValidationError( + _(''' Please set donor's payable and receivable accounts first ''')) + + periods = self.env['fiscalyears.periods'].search( + [('state', '=', 'open'), + ('date_from', '<=', fields.Datetime.now()), + ('date_to', '>=', fields.Datetime.now())]) + + if not periods: + raise ValidationError( + _('No fiscal year periods in this date.')) + + data = { + # 'name': self.code, + # 'ref': self.code, + # 'move_type': 'out_receipt', + # 'date': fields.Datetime.now(), + 'invoice_date': fields.Datetime.now(), + 'invoice_date_due': fields.Datetime.now(), + 'narration': self.code, + 'company_id': self.env.user.company_id.id, + 'partner_id': self.sponsor_id.id, + 'journal_id': int(journal_id), + # 'account_id': self.sponsor_id.property_account_receivable_id.id, + 'line_ids': lines, + # 'pay_now': 'pay_now', + # 'payment_journal_id':self.payment_journal_id.id, + 'sponsorship_id':self.id, + } + voucher_id = self.env['account.move'].create(data) + self.voucher_ids = [(4,voucher_id.id)] + + def action_open_voucher_payement(self): + """Open Payments for a voucher""" + domain = [('sponsorship_id', '=', self.id or False)] + context = dict(self.env.context or {}) + + return { + 'name': _('voucher Payment'), + 'view_type': 'form', + 'view_mode': 'tree,form', + 'views': [(self.env.ref( + 'account.view_move_tree').id, 'tree'), + (self.env.ref('account.view_move_form').id, 'form')], + 'type': 'ir.actions.act_window', + 'res_model': 'account.move', + 'target': 'current', + 'domain': domain, + 'context': context, + } + def create_new_sponsor(self): + return { + 'name': _('Add New Sponsor'), + 'type': 'ir.actions.act_window', + 'res_model': 'res.partner', + 'view_mode': 'form', + 'view_id': self.env.ref('odex_takaful.view_takaful_sponsor_form').id, + 'target': 'new', + 'context': { + 'default_company_type': 'person', + 'parent_model': self._name, # Pass current model's name + 'parent_id': self.id, # Pass current record's ID # Pass the current record ID + 'default_is_sponsor_portal': True, + 'default_is_donor': True, + 'sponsor_contact': True, + }, + } + + def action_refund(self): + refund_amount = sum(self.sponsorship_scheduling_line_ids.mapped('amount')) - sum(self.sponsorship_scheduling_line_ids.mapped('refunded_amount')) + return { + 'type': 'ir.actions.act_window', + 'name': 'Refund Wizard', + 'res_model': 'refund.wiz', + 'view_mode': 'form', + 'target': 'new', + 'context': { + 'default_refund_amount': refund_amount, + + }, } + + def action_register_payment(self): + invoice_id = self.env['account.move'].sudo().search([ + ('takaful_sponsorship_id', '=', self.id), + ('move_type', '=', 'out_invoice'), + ('state', '=', 'posted'), + ('payment_state', 'in', ['not_paid', 'partial'])], limit=1, order='id') + if not invoice_id: + raise ValidationError(_("No invoice found for this sponsorship.")) + sponsorship_line_ids = (self.donations_details_lines + self.donations_details_lines_mechanism_ids).filtered(lambda l: not l.direct_debit) + amount = sum(sponsorship_line_ids.mapped('total_donation_amount')) - self.with_context(exclude_direct_debit=True).amount_paid + + return { + 'name': _('Register Payment'), + 'res_model': 'account.payment.register', + 'view_mode': 'form', + 'context': { + 'active_model': 'account.move', + 'active_ids': invoice_id.ids, + 'default_amount': amount, + 'dont_redirect_to_payments': True, + 'sponsorship_line_ids': sponsorship_line_ids.ids, + 'sponsorship_payment': True, + 'sponsorship_id': self.id, + 'sponsorship_payment_skip_compute_amount': True, + 'default_sponsorship_payment': True, + 'force_sponsorship_line_partner_id': self.sponsor_id.id, + }, + 'target': 'new', + 'type': 'ir.actions.act_window', + } + show_register_payment = fields.Boolean(string='Show Register Payment', compute='_compute_show_register_payment') + + def _compute_show_register_payment(self): + for rec in self: + sponsorship_line_ids = (rec.donations_details_lines | rec.donations_details_lines_mechanism_ids).filtered(lambda l: not l.direct_debit) + rec.show_register_payment = rec.with_context(exclude_direct_debit=True).amount_paid < sum(sponsorship_line_ids.mapped('total_donation_amount')) + + def action_reset_to_draft(self): + for rec in self: + if rec.state != 'confirmed': + raise ValidationError(_("You can only reset to draft a confirmed sponsorship.")) + move_ids = rec.journal_entry_ids.filtered(lambda l: l.move_type == 'out_invoice') + move_ids.sudo().button_draft() + self.write({'state': 'draft'}) + all_donation_lines = (self.donations_details_lines + self.donations_details_lines_mechanism_ids).filtered( + lambda r: r.display_type == False) + for line in all_donation_lines: + line.state = 'draft' + + +class AnotherSponsors(models.Model): + _name = "donate.for.another.person" + + sponsor_name = fields.Char(string="Sponsor Name") + sponsor_phone = fields.Char(string="Sponsor Phone") + sponsor_id_number = fields.Char(string="Sponsor ID Number") + sponsorship_id = fields.Many2one('takaful.sponsorship') + receive_messages = fields.Boolean(string='Receive messages?') + note = fields.Char(string='Note') + +class RefundDetailsLines(models.TransientModel): + _name = 'refund.details.lines' + _description = "Refund Destails Lines" + + refund_date = fields.Datetime(string='Refund Date') + sponsorship_id = fields.Many2one( + 'takaful.sponsorship', + string='Sponsorship', + ) + sponsorship_scheduling_line = fields.Many2one( + 'sponsorship.scheduling.line', + string='Schedule Details Lines', + ) + sponsorship_scheduling_line_ids = fields.Many2many('sponsorship.scheduling.line','refund_details_scheduling_rel','refund_id','schedule_id') + + sequence_no = fields.Char(related="sponsorship_scheduling_line.sequence_no") + + payment_details_line = fields.Many2one( + 'payment.details.lines', + string='Payment Details Lines', + ) + + sponsor_id = fields.Many2one( + 'res.partner', + string='Sponsor', + related='sponsorship_id.sponsor_id' + ) + refund_amount = fields.Float(string='Refund Amount') + currency_id = fields.Many2one('res.currency', string='Currency', + default=lambda self: self.env.company.currency_id, readonly=True) + refund_reason = fields.Many2one( + 'refund.reasons', + string='Refund Reason', + ) + payment_method_id = fields.Many2one('takaful.payment.method', string="Payment Method") + + payment_method = fields.Selection( + selection=[ + ("cash", "Cash"), + ("card", "Card"), + ("check", "Check"), + ("credit_card", "Credit Card"), + ("bank", "Bank Transfer"), + ("direct_debit", "Direct Debit") + ] + , related="payment_method_id.payment_method" + ) + journal_id = fields.Many2one( + 'account.journal', + string="Refund Account Journal", + ) + + attachment_ids = fields.Many2many('ir.attachment', 'rel_refund_details_attachment', 'refund_details_id', 'attachment_id', + string='Attachments') + + invoiced = fields.Boolean(copy=False, readonly=True) + +class PaymentDetailsLines(models.Model): + _name = "payment.details.lines" + + donation_amount = fields.Float(string='Donation Amount') + remaining_amount = fields.Float(string='Remaining Amount') + currency_id = fields.Many2one('res.currency', string='Currency', + default=lambda self: self.env.company.currency_id, readonly=True) + donation_date = fields.Date(string='Donation Date',default=lambda self: fields.Date.today(), readonly=True) + payment_date = fields.Datetime(string='Payment Date', default=fields.Datetime.now) + note = fields.Char(string='Note') + journal_id = fields.Many2one('account.journal', string="Journal") + points_of_sale = fields.Many2one('points.of.sale.custom', string="Point OF sale") + sponsorship_id = fields.Many2one('takaful.sponsorship') + sponsorship_scheduling_line_id = fields.Many2one('sponsorship.scheduling.line') + sponsorship_scheduling_line_ids = fields.Many2many('sponsorship.scheduling.line') + bank_id = fields.Many2one('res.partner.bank',string="Sponsor Bank Number", domain=lambda self: self._available_banks()) + bank_journal_id = fields.Many2one( + 'account.journal', + string="Sponsor Bank Journal", + readonly=False, + domain="[('type', '=', 'bank')]" + ) + bank_name = fields.Char( + string="Sponsor Bank Name", + related="bank_id.bank_id.name" + ) + 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') + 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) + charity_bank_id = fields.Many2one('account.journal', string="charity Bank") + bank_transfer_amount = fields.Float(string='Bank Transfer Amount') + direct_debit_amount = fields.Float(string='Direct Debit Amount') + payment_attachment = fields.Many2many('ir.attachment', 'rel_attachment_payment_details', 'payment_id','attachment_id', string='Payment Attachment') + direct_debit_start_date = fields.Date(string='Direct Debit Start Date') + direct_debit_end_date = fields.Date(string='Direct Debit End Date') + sponsorship_scheduling_ref = fields.Char('Scheduling Sequences', compute='_compute_sponsorship_scheduling_ref') + is_fully_refund = fields.Boolean(string='Is Fully Refund') + is_partial_refund = fields.Boolean(string='Is Partial Refund') + payment_method_id = fields.Many2one('takaful.payment.method', string="Payment Method") + payment_method = fields.Selection(selection=[("cash", "Cash"),("card", "Card"),("check", "Check"),("credit_card", "Credit Card"),("bank", "Bank Transfer"),("direct_debit", "Direct Debit")], related="payment_method_id.payment_method") + + def action_send_whatsapp(self): + notification = self.env['takaful.notification'].sudo().search( + [('notification_type', '=', 'partial_payment'), ('message_type_ids.tool_type', '=', 'app')], + limit=1 + ) + if not notification: + raise ValidationError(_("No notification of type 'Create Kafala' found.")) + + config = self.env['ir.config_parameter'].sudo() + account_sid = config.get_param('odex_takaful.twilio_account_sid') + auth_token = config.get_param('odex_takaful.twilio_auth_token') + from_whatsapp = config.get_param('odex_takaful.twilio_from_whatsapp') + + if not account_sid or not auth_token or not from_whatsapp: + raise ValidationError(_("Twilio configuration is missing. Please configure Twilio SID, Auth Token, and WhatsApp number in General Configurations.")) + + from_cleaned_mobile = re.sub(r'[^\d+]', '', from_whatsapp) + from_whatsapp_number = f'whatsapp:{from_cleaned_mobile}' + # Search for the notification message for 'create_kafala' + + + # Use the message from the notification + amount = self.donation_amount if hasattr(self, 'donation_amount') else 0.0 + message = notification.message.replace('[Amount]', f"{amount:.2f}") + + for partner in self: + mobile = partner.sponsorship_id.sponsor_id.mobile if partner.sponsorship_id.sponsor_id else partner.sponsorship_id.member_id.mobile + if mobile: + # Clean the number (keep + and digits only) + cleaned_mobile = re.sub(r'[^\d+]', '', mobile) + to_whatsapp_number = f'whatsapp:{cleaned_mobile}' + url = f"https://api.twilio.com/2010-04-01/Accounts/{account_sid}/Messages.json" + + payload = { + 'From': from_whatsapp_number, + 'To': to_whatsapp_number, + 'Body': message, + } + + response = requests.post( + url, + data=payload, + auth=(account_sid, auth_token) + ) + + if response.status_code != 201: + raise ValidationError(_("Failed to send WhatsApp message: %s") % response.text) + + + + def _available_banks(self): + active_model = self._context.get('active_model', False) + active_id = self._context.get('active_id', False) + bank_ids = [] + if active_id: + if active_model == "takaful.sponsorship": + bank_ids = self.env[active_model].browse(active_id).sponsor_id.bank_ids.ids + elif active_model == "sponsorship.scheduling.line": + bank_ids = self.env[active_model].browse(active_id).sponsorship_id.sponsor_id.bank_ids.ids + return [('id', 'in', bank_ids)] + + def print_report_name(self): + sponsorship_scheduling_line_id = self.sponsorship_scheduling_line_id or self.sponsorship_scheduling_line_ids + return "%s - %s" % (self.name, sponsorship_scheduling_line_id.beneficiary_id.name) + + @api.depends('sponsorship_scheduling_line_id', 'sponsorship_scheduling_line_ids') + def _compute_sponsorship_scheduling_ref(self): + for rec in self: + sponsorship_scheduling_lines = rec.sponsorship_scheduling_line_id or rec.sponsorship_scheduling_line_ids + rec.sponsorship_scheduling_ref = ', '.join(sponsorship_scheduling_lines.mapped('sequence_no')) + + @api.onchange('sponsor_account_number') + def onchange_sponsor_account_number(self): + if self.sponsor_account_number: + # Check if the value is numeric before anything else + if not self.sponsor_account_number.isdigit(): + raise ValidationError(_("The account number should contain only digits.")) + + # Check if the account number contains exactly 22 digits + if len(self.sponsor_account_number) != 22: + raise ValidationError(_("The IBAN number must contain exactly 22 digits.")) + + @api.onchange('branch_custom_id') + def _onchange_branch_custom_id(self): + domain = [] + for rec in self: + domain = [ + ('branch_custom_ids', 'in', [rec.branch_custom_id.id]) ] + return {'domain': {'points_of_sale': domain}} + + @api.model + def create(self, vals): + res = super(PaymentDetailsLines, self).create(vals) + res.create_journal_entry() + if not res.name or res.name == _('New'): + res.name = self.env['ir.sequence'].sudo().next_by_code('payment.details.sequence') or _('New') + sponsorship_lines = res.sponsorship_scheduling_line_id or res.sponsorship_scheduling_line_ids + sponsorship_lines.sudo().write({ 'status': 'paid' }) # Change the status to 'paid' + if all(res.sponsorship_id.sponsorship_scheduling_line_ids.mapped(lambda r: r.status == 'paid')): + res.sponsorship_id.sudo().write({ 'state': 'paid' }) + else: + res.sponsorship_id.sudo().write({ 'state': 'wait_pay' }) + res.action_send_whatsapp() + return res + + @api.onchange('payment_method') + def onchange_journal_id(self): + for rec in self: + # Build the dynamic domain + domain = [] + if rec.payment_method == 'cash': + cash_payment = self.env['takaful.payment.method'].search([('payment_method', '=', 'cash')], limit=1) + if cash_payment: + rec.journal_id = cash_payment.journal_id if cash_payment.journal_id else False + domain = [ + ('type','=','cash') + ] + if rec.payment_method == 'check': + domain = [ + '|',('type', '=', 'cash'),('type', '=', 'bank') + ] + return {'domain': {'journal_id': domain}} + + def create_journal_entry(self): + self.ensure_one() + payment_method_journal_id = self.journal_id.id + if not payment_method_journal_id: + raise ValidationError( + _(''' Please set Journal in Payment Details ''')) + Invoice = self.env["account.move"].sudo() + invoice_values = { + 'takaful_sponsorship_id': self.sponsorship_id.id, + 'name': self.env['ir.sequence'].next_by_code('account.move.payment.details.sequence'), + 'move_type': 'entry', + 'journal_id': int(payment_method_journal_id), + 'date': fields.Date.today(), + # 'branch_id': TODO there is no res.branch in takaful.sponsorship model + } + lines_name = _("Bail Receipts Number %s") % self.sponsorship_scheduling_ref + account_receivable_id = self.sponsorship_id.sponsor_id.property_account_receivable_id.id + if self.sponsorship_id.sponsor_or_donor_type != 'registered': + sponsorship_lines = self.sponsorship_scheduling_line_id or self.sponsorship_scheduling_line_ids + account_receivable_id = sponsorship_lines.donation_detail_linked_id.product_template_id.property_account_income_id.id + line_ids = [ + (0, 0, { + 'account_id': self.journal_id.default_account_id.id, + 'name': lines_name, + 'debit': self.donation_amount, + 'credit': 0.0, + }), + (0, 0, { + 'account_id': account_receivable_id, + 'partner_id': self.sponsorship_id.sponsor_id.id, + 'name': lines_name, + 'analytic_account_id': self.branch_custom_id.branch.analytic_account_id.id if self.sponsorship_id.sponsor_or_donor_type != 'registered' else False, + 'debit': 0.0, + 'credit': self.donation_amount, + }), + ] + invoice_values['line_ids'] = line_ids + invoice_id = Invoice.create(invoice_values) + invoice_id.action_post() + + def action_confirm(self): + """ + Logic to confirm the payment details. + """ + # Example logic: Validate the fields and mark them as confirmed + for record in self: + if record.payment_method_id.payment_method in ('direct_debit', 'bank') and not record.bank_id: + raise ValidationError("Bank is required for Direct Debit and Bank Transfer methods.") + + # Close the wizard + return {'type': 'ir.actions.act_window_close'} + + def action_refund(self): + return { + 'type': 'ir.actions.act_window', + 'name': 'Refund Wizard', + 'res_model': 'refund.wiz', + 'view_mode': 'form', + 'target': 'new', + } diff --git a/odex25_takaful/odex_takaful/models/takaful_sponsor_operation.py b/odex25_takaful/odex_takaful/models/takaful_sponsor_operation.py new file mode 100644 index 000000000..431f2e960 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/takaful_sponsor_operation.py @@ -0,0 +1,74 @@ +# -*- coding: utf-8 -*- + +from odoo import models, fields, _ +from dateutil.parser import parse + + +class TakafulSponsorOperation(models.Model): + _name = 'takaful.sponsor.operation' + # _rec_name = 'sponsor_id' + + name = fields.Char(string="Operation Name") + title = fields.Char(string="Operation Title") + sponsor_id = fields.Many2one( + 'res.partner', + string='The Sponsor', + ondelete='set null' + ) + benefit_ids = fields.Many2many( + 'grant.benefit', + string='Beneficiaries' + ) + benefit_id = fields.Many2one( + 'grant.benefit', + string='Beneficiary', + ondelete='set null' + ) + benefit_type = fields.Selection([ + ('orphan', 'Orphans'), + ('widow', 'Widows'), + ('general', 'General')], + string='Beneficiaries Type', + compute='_compute_benefit_type_value', + related=False, + readonly=True, + ) + operation_type = fields.Selection([ + ('sponsorship', 'Sponsorship'), + ('contribution', 'Needs Contribution'), + ('gift', 'Financial Gift')], + string='Operation Type', + ) + date = fields.Date(string="Date", default=fields.Date.today) + operation_on = fields.Datetime(string="Operation Time", default=fields.Datetime.now) + month = fields.Integer(string="The Month", compute='_compute_period_filter') + origin_id = fields.Integer(readonly=True) + period_code = fields.Char(string="Period Code", compute='_compute_period_filter') + amount = fields.Float(string="Amount") + currency_id = fields.Many2one('res.currency', string='Currency', + default=lambda self: self.env.company.currency_id, readonly=True) + + def _compute_period_filter(self): + """ Extract period code from date """ + for rec in self: + if rec.date: + date = parse(str(rec.date)).date() + rec.period_code = date.strftime("%Y_%m") + rec.month = int(date.strftime("%m")) + + def _compute_benefit_type_value(self): + for rec in self: + b_type = [] + if rec.benefit_ids: + for i in rec.benefit_ids: + b_type.append(i.benefit_type) + if rec.benefit_id: + b_type.append(rec.benefit_id.benefit_type) + if 'orphan' in b_type and 'widow' not in b_type: + rec.benefit_type = 'orphan' + if 'widow' in b_type and 'orphan' not in b_type: + rec.benefit_type = 'widow' + if 'widow' in b_type and 'orphan' in b_type: + rec.benefit_type = 'general' + if b_type == []: + rec.benefit_type = '' diff --git a/odex25_takaful/odex_takaful/models/takaful_sponsorship_cancellation_model.py b/odex25_takaful/odex_takaful/models/takaful_sponsorship_cancellation_model.py new file mode 100644 index 000000000..643bb81d0 --- /dev/null +++ b/odex25_takaful/odex_takaful/models/takaful_sponsorship_cancellation_model.py @@ -0,0 +1,110 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api, _ +from odoo import SUPERUSER_ID + + +class SponsorshipStopReason(models.Model): + _name = "sponsorship.reason.stop" + _description = "Sponsorship Stop Reason" + _order = 'sequence' + + sequence = fields.Integer(help="Determine the display order", index=True, + string='Sequence') + name = fields.Char(string='Reason', required=True) + +class SponsorshipCancellation(models.Model): + _name = 'sponsorship.cancellation' + _inherit = ['mail.thread', 'mail.activity.mixin'] + _description = "Sponsorship Cancellation" + _rec_name = "code" + + sponsorship_id = fields.Many2one("takaful.sponsorship", string="Sponsorship") + code = fields.Char(string="Sponsorship Number", related="sponsorship_id.code",store=True) + sponsor_id = fields.Many2one(string="The Sponsor", related="sponsorship_id.sponsor_id",store=True) + create_date = fields.Date(string='Create Date', readonly=True, default=fields.Date.today) + confirm_date = fields.Date(string='Confirm Date', readonly=True) + cancel_type = fields.Selection([ + ('user', 'Manually'), + ('sys', 'Automatically'), + ], string='Cancellation Type', default="user", readonly=True) + cancel_user_id = fields.Many2one('res.users', 'Cancelled By', readonly=True) + confirm_user_id = fields.Many2one('res.users', 'Confirmed By', readonly=True) + reason_id = fields.Many2one('sponsorship.reason.stop', string='Cancellation Reason') + note = fields.Text(string='Comment') + + state = fields.Selection([ + ('draft', 'Draft'), + ('cancel', 'Cancelled'), + ], string='state', default="draft") + + + # @api.multi + def do_cancel_action(self): + """Confirm cancellation for Sponsorship""" + for rec in self: + if rec.sponsorship_id: + rec.confirm_user_id = self.env.uid or SUPERUSER_ID + rec.confirm_date = fields.Date.today() + rec.state = "cancel" + + # Send SMS and Email Notifications + canceled_template = self.env['takaful.message.template'].sudo().search( + [('template_name', '=', 'sponsorship_canceled')], limit=1) + + subject = canceled_template.title + message = canceled_template.body + partner_id = rec.sponsor_id + user_id = self.env['res.users'].sudo().search([('partner_id', '=', partner_id.id)], limit=1) + + push = self.env['takaful.push.notification'].sudo().create({ + 'user_id': user_id.id, + 'title': subject, + 'body': message, + }) + + push.sudo().send_sms_notification() + push.sudo().send_email_notification() + + month_count = 0 + residual_amount = 0 + + # Get other open invoices + open_invoices = self.env['account.move'].sudo().search([('state', '=', 'open'), ('operation_id', '=', rec.sponsorship_id.id), ('operation_type', '=', 'sponsorship')]) + for inv in open_invoices: + # Get residual amount + month_count += 1 + residual_amount += inv.residual_company_signed + # Enable Removing for journal_id + if inv.journal_id: + inv.journal_id.sudo().write({"update_posted": True,}) + + inv.sudo().action_cancel() + + rec.sponsorship_id.journal_entry_ids.button_draft() + rec.sponsorship_id.journal_entry_ids.button_cancel() + rec.sponsorship_id.state = "canceled" + rec.sponsorship_id.cancel_reason_id = self.id + + # Moving the arrears + if month_count >0 and rec.sponsorship_id.sponsorship_type =='person': + arrears_id = self.env['sponsorship.benefit.arrears'].sudo().create({ + 'sponsorship_id': rec.sponsorship_id.id, + 'benefit_id': rec.sponsorship_id.benefit_id.id, + 'sponsor_id': rec.sponsorship_id.sponsor_id.id, + 'arrears_month_number': month_count, + 'arrears_total': residual_amount, + }) + elif month_count >0 and rec.sponsorship_id.sponsorship_type =='group': + for ben in rec.sponsorship_id.benefit_ids: + arrears_id = self.env['sponsorship.benefit.arrears'].sudo().create({ + 'sponsorship_id': rec.sponsorship_id.id, + 'benefit_id': ben.id, + 'sponsor_id': rec.sponsorship_id.sponsor_id.id, + 'arrears_month_number': month_count, + 'arrears_total': rec.sponsorship_id.load_amount * month_count, + }) + + + + + diff --git a/odex25_takaful/odex_takaful/models/takaful_sponsorship_payment_model.py b/odex25_takaful/odex_takaful/models/takaful_sponsorship_payment_model.py new file mode 100644 index 000000000..6fe9d1b9c --- /dev/null +++ b/odex25_takaful/odex_takaful/models/takaful_sponsorship_payment_model.py @@ -0,0 +1,217 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api, _ +from dateutil.parser import parse +from odoo.exceptions import UserError,ValidationError, Warning + +import logging + +_logger = logging.getLogger(__name__) + + +class SponsorshipPayment(models.Model): + _name = 'sponsorship.payment' + _inherit = ['mail.thread', 'mail.activity.mixin'] + _description = "Payments for Sponsorship system in Takaful project" + _rec_name = 'code' + _order = 'date desc' + + sponsorship_id = fields.Many2one( + 'takaful.sponsorship', + string='Sponsorship' + ) + + sponsor_id = fields.Many2one( + 'res.partner', + string='Sponsor Name' + ) + code = fields.Char(string="Sponsorship Number", related="sponsorship_id.code",store=True) + + payment_month_number = fields.Integer(string="Sponsorships Number To Pay") + month_amount = fields.Float(string="Sponsorship Amount", related="sponsorship_id.contribution_value",store=True, readonly=True) + amount = fields.Float(string="Total Amount", compute="get_amount_month", store=True) + currency_id = fields.Many2one('res.currency', string='Currency', + default=lambda self: self.env.company.currency_id, readonly=True) + iban = fields.Char(string='IBAN / Account Number', tracking=True) + transfer_receipt = fields.Binary(string='Transfer Receipt') + bank_id = fields.Many2one('res.bank', string="Bank Name") + has_bank_account = fields.Boolean(string="Has Another Account?") + payment_method = fields.Char(string='Method Of Payment', store=False) + + user_id = fields.Many2one('res.users',string="Issued By", default=lambda self: self.env.user) + + state = fields.Selection([ + ('draft', 'Draft'), + ('financial', 'Financial'), + ('paid', 'Paid'), + ], string='state', default="draft", tracking=True) + + date = fields.Date('Date', readonly=True,default=fields.Date.today()) + invoice_ids = fields.Many2many('account.move', string="Invoices") + is_invoiced = fields.Boolean(string='Is Invoiced?', compute='check_is_invoiced') + + def check_is_invoiced(self): + for rec in self: + if rec.invoice_ids and rec.state == "financial": + total_paid = 0 + for invoice in rec.invoice_ids: + if invoice.state == 'paid': + payments = self.env['account.payment'].sudo().search([('invoice_ids', 'in', [invoice.id])]) + # if len(payments) > 0: + for payment in payments: + total_paid += payment.amount + + if total_paid >0 and total_paid >= rec.amount: + rec.is_invoiced = True + rec.state = "paid" + else: + rec.is_invoiced = False + + elif rec.invoice_ids and rec.state == "paid": + rec.is_invoiced = True + + else: + rec.is_invoiced = False + + @api.onchange('sponsor_id') + def onchange_sponsor_id(self): + res = {} + sponsorships = self.env['takaful.sponsorship'].sudo().search([('sponsor_id', '=', self.sponsor_id.id)]) + sponsorships_ids = [] + for record in sponsorships: + sponsorships_ids.append(record.id) + + res['domain'] = {'sponsorship_id': [('id', 'in', sponsorships_ids)]} + return res + + @api.onchange('has_bank_account', 'payment_method') + def onchange_bank_account(self): + for rec in self: + if rec.payment_method and rec.payment_method != "cash" and not rec.has_bank_account: + self.bank_id = self.sponsor_id.bank_id.id + self.iban = self.sponsor_id.iban + else: + self.bank_id = None + self.iban = '' + + # @api.constrains('month_amount') + # def check_month_amount(self): + # if int(self.month_amount) <= 0: + # raise ValidationError( + # _(u'Month Amount Is Invalid')) + + @api.constrains('payment_month_number') + def check_payment_month_number(self): + if int(self.month_amount) <= 0: + raise ValidationError( + _(u'Payment Month Number should be at least for one month')) + + @api.depends('month_amount', 'payment_month_number') + def get_amount_month(self): + for rec in self: + rec.amount = rec.month_amount * rec.payment_month_number + + def action_pay(self): + # Check for already sponsored beneficiaries only for sponsorship records + + count = 0 + invoices = [] + if self.sponsorship_id.state in ['confirmed','wait_pay','progress' , 'to_cancel']: + if self.sponsorship_id.next_due_date: + next_date = parse(str(self.sponsorship_id.next_due_date)).date() + while (count < self.payment_month_number): + count +=1 + invoice_id = self.sponsorship_id.sudo().create_next_invoice(next_date) + invoices.append(invoice_id.id) + try: + next_date = next_date.replace(month=(next_date.month +1)) + except Exception as e: + next_date = next_date.replace(year=(next_date.year +1), month=1) + + # Update invoices Ids + for _id in invoices: + self.write({'invoice_ids': [(4, _id)]}) + + self.state = 'financial' + self.sponsorship_id.sudo().donations_details_lines_mechanism_ids.filtered(lambda line: line.benefit_id).write({'state': 'active'}) + self.sponsorship_id.sudo().donations_details_lines_mechanism_ids.filtered(lambda line: not line.benefit_id).write({'state': 'waiting'}) + all_lines = self.sponsorship_id.sudo().donations_details_lines_mechanism_ids + self.sponsorship_id.sudo().donations_details_lines_ids + payment_method_ids = all_lines.mapped('payment_method_id') + invoice_id = self.env['account.move'].search([('takaful_sponsorship_id', '=', self.sponsorship_id.id)], limit=1) + if invoice_id and payment_method_ids and invoice_id.state == 'posted': + receivable_lines = invoice_id.line_ids.filtered( + lambda l: l.account_id.account_type == 'asset_receivable' and not l.reconciled + ) + + if not receivable_lines: + _logger.warning(f"No receivable lines found for invoice {invoice_id.name}") + return + + for payment_method_id in payment_method_ids: + + if not payment_method_id.journal_id: + continue + + lines_with_method = all_lines.filtered(lambda l: l.payment_method_id == payment_method_id) + payment_amount = sum(lines_with_method.mapped('donation_amount')) + + if payment_amount <= 0: + continue + + payment_method_line = self.env['account.payment.method.line'].search([ + ('journal_id', '=', payment_method_id.journal_id.id), + ('payment_type', '=', 'inbound') + ], limit=1) + + if not payment_method_line: + _logger.warning( + f"No inbound payment method found for journal {payment_method_id.journal_id.name}. " + f"Skipping payment creation for payment method {payment_method_id.name}" + ) + continue + + payment_register_vals = { + 'payment_date': fields.Date.today(), + 'amount': payment_amount, + 'journal_id': payment_method_id.journal_id.id, + 'payment_method_line_id': payment_method_line.id, + 'communication': f"{self.sponsorship_id.code} - {payment_method_id.name}", + } + + if payment_method_id.bank_id: + payment_register_vals['partner_bank_id'] = payment_method_id.bank_id.id + + payment_register = self.env['account.payment.register'].with_context( + active_model='account.move', + active_ids=[invoice_id.id] + ).create(payment_register_vals) + + payment_register.action_create_payments() + + + # @api.multi + def open_account_invoice_action(self): + """Open Sponsorship Payments Entries""" + domain = [] + if self.invoice_ids: + domain = [('id', 'in', self.invoice_ids.ids)] + + if self.is_invoiced is True: + self.state ="paid" + + context = dict(self.env.context or {}) + context["create"] = False + context["edit"] = False + flags = {'initial_mode': 'readonly'} # default is 'edit' + return { + 'name': _('Financial'), + 'domain': domain, + 'view_type': 'form', + 'res_model': 'account.move', + 'view_mode': 'tree,form', + 'type': 'ir.actions.act_window', + 'flags': flags, + 'context': context, + } + + + diff --git a/odex25_takaful/odex_takaful/reports/__init__.py b/odex25_takaful/odex_takaful/reports/__init__.py new file mode 100644 index 000000000..1e17cf25d --- /dev/null +++ b/odex25_takaful/odex_takaful/reports/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- +from . import takaful_reports +from . import month_payment_report \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/reports/month_payment_report.py b/odex25_takaful/odex_takaful/reports/month_payment_report.py new file mode 100644 index 000000000..2fa9396a5 --- /dev/null +++ b/odex25_takaful/odex_takaful/reports/month_payment_report.py @@ -0,0 +1,177 @@ +# -*- coding: utf-8 -*- + +from odoo import api, fields, models, tools, _ +from odoo.exceptions import ValidationError, UserError + +from datetime import datetime, timedelta, date +from odoo.tools import DEFAULT_SERVER_DATE_FORMAT +from dateutil.parser import parse + +class BenefitREP(models.AbstractModel): + _name = 'report.odex_takaful.benefit_payment_report_pdf' + + def get_result(self, data=None): + form = data + domain = [] + if form['benefit_ids']: + domain += [('benefit_id', 'in', form['benefit_ids'])] + if form['date_from'] and form['date_to']: + domain = [('month_id.date', '>=', form['date_from']), ('month_id.date', '<=', form['date_to'])] + payment = self.env['month.payment.line'].sudo().search(domain) + return payment + + @api.model + def get_report_values(self, docids, data=None): + record = self.get_result(data) + date_to, date_from = '', '' + if data['date_from'] and data['date_to']: + date_from = data['date_from'] + date_to = data['date_to'] + if not record: + raise ValidationError(_("Sorry, there are no results for this selection !")) + return { + 'date_from': date_from, + 'date_to': date_to, + 'docs': record, + } + + +class BenefitMonth(models.AbstractModel): + _name = 'report.odex_takaful.benefit_month_payment_report_pdf' + + def get_result(self, data=None): + form = data + domain = [] + if form['benefit_ids']: + domain += [('benefit_id', 'in', form['benefit_ids'])] + if form['date_from'] and form['date_to']: + domain += [('month_id.date', '>=', form['date_from']), ('month_id.date', '<=', form['date_to'])] + + payment = self.env['month.payment.line'].sudo().search(domain) + month_payment = payment.mapped('month_id') + li = [] + for y in month_payment: + date = parse(str(y.date)) + li.append({'name': y.name , 'code': y.code, 'month_payment': date.strftime("%m-%Y"), 'payment': payment.filtered(lambda r: r.month_id == y)}) + return li + + @api.model + def get_report_values(self, docids, data=None): + record = self.get_result(data) + # if record.get('data'): + # gender = record.get('gender').title() + # record.update({'gender': _(gender)}) + date_to, date_from = '', '' + if data['date_from'] and data['date_to']: + date_from = data['date_from'] + date_to = data['date_to'] + if not record: + raise ValidationError(_("Sorry, there are no results for this selection !")) + return { + 'date_from': date_from, + 'date_to': date_to, + 'docs': record, + } + + +class MonthReportXlsx(models.AbstractModel): + _name = "report.odex_takaful.benefit_month_payment_report_xlsx" + _inherit = 'report.report_xlsx.abstract' + + @api.model + def generate_xlsx_report(self, workbook, data, objs): + docs = objs + sheet = workbook.add_worksheet(_('Bank Sheet')) + if self.env.user.lang != 'en_US': + sheet.right_to_left() + format0 = workbook.add_format( + {'bottom': True, 'bg_color': '#b8bcbf', 'right': True, 'left': True, 'top': True, 'align': 'center', }) + format1 = workbook.add_format({'bottom': True, 'right': True, 'left': True, 'top': True, 'align': 'center', }) + format2 = workbook.add_format( + {'font_size': 14, 'bottom': True, 'right': True, 'left': True, 'top': True, 'align': 'center', + 'bold': True, 'bg_color': '#0f80d6', 'font_color': 'white'}) + for doc in docs: + + format2.set_align('center') + sheet.merge_range('A9:L9', + (_("Month Payment Sheet")) + " - " + doc.name + " / " + doc.code, format2) + sheet.set_column('B:D', 15) + sheet.set_column('E:F', 10) + row = 10 + clm = 0 + labels = [(_("#")), (_("Benefit Name")), (_("Benefit Type")), (_("Benefit ID Number")), (_("Birth Date")), + (_("Sponsorship Number")), (_("The Sponsor")), + (_("Amount")), (_("Iban")), (_("Bank Name")), (_("Responsible Name")), (_("Responsible ID Number"))] + + for res in labels: + sheet.write(row, clm, res, format0) + clm += 1 + row = 11 + seq = 0 + for rec in doc.line_ids: + seq += 1 + clm = 0 + sheet.write(row, clm, seq, format1) + sheet.write(row, clm + 1, rec.benefit_id.name, format1) + sheet.write(row, clm + 2, rec.benefit_id.benefit_type, format1) + sheet.write(row, clm + 3, rec.benefit_id.id_number, format1) + sheet.write(row, clm + 4, rec.benefit_id.birth_date, format1) + sheet.write(row, clm + 5, rec.s_code, format1) + sheet.write(row, clm + 6, rec.sponsor_id.name, format1) + sheet.write(row, clm + 7, rec.amount, format1) + sheet.write(row, clm + 8, rec.benefit_id.iban, format1) + sheet.write(row, clm + 9, rec.benefit_id.bank_id.name, format1) + sheet.write(row, clm + 10, rec.responsible_id.name, format1) + sheet.write(row, clm + 11, rec.responsible_id.id_number, format1) + + row += 1 + row += 3 + + +class BankSheetReportXlsx(models.AbstractModel): + _name = "report.odex_takaful.benefit_month_payment_bank_sheet" + _inherit = 'report.report_xlsx.abstract' + + @api.model + def generate_xlsx_report(self, workbook, data, objs): + docs = objs + sheet = workbook.add_worksheet('Bank Sheet') + if self.env.user.lang != 'en_US': + sheet.right_to_left() + format0 = workbook.add_format( + {'bottom': True, 'bg_color': '#b8bcbf', 'right': True, 'left': True, 'top': True, 'align': 'center', }) + format1 = workbook.add_format({'bottom': True, 'right': True, 'left': True, 'top': True, 'align': 'center', }) + format2 = workbook.add_format( + {'font_size': 14, 'bottom': True, 'right': True, 'left': True, 'top': True, 'align': 'center', + 'bold': True, 'bg_color': '#0f80d6', 'font_color': 'white'}) + for doc in docs: + + format2.set_align('center') + sheet.merge_range('A9:F9', + (_("Bank Sheet")) + " - " + doc.name + " / " + doc.code, format2) + sheet.set_column('B:D', 15) + sheet.set_column('E:F', 10) + row = 9 + clm = 0 + labels = [(_("#")), (_("Bank Name")), (_("Account Number")), (_("Amount")), + (_("Benefit Name")), (_("Benefit ID Number")), (_("Responsible Name")), (_("Responsible ID Number"))] + + for res in labels: + sheet.write(row, clm, res, format0) + clm += 1 + row = 10 + seq = 0 + for rec in doc.line_ids: + seq += 1 + clm = 0 + sheet.write(row, clm, seq, format1) + sheet.write(row, clm + 1, rec.benefit_id.bank_id.name, format1) + sheet.write(row, clm + 2, rec.benefit_id.iban, format1) + sheet.write(row, clm + 3, rec.amount, format1) + sheet.write(row, clm + 4, rec.benefit_id.name, format1) + sheet.write(row, clm + 5, rec.benefit_id.id_number, format1) + sheet.write(row, clm + 6, rec.responsible_id.name, format1) + sheet.write(row, clm + 7, rec.responsible_id.id_number, format1) + + row += 1 + row += 3 diff --git a/odex25_takaful/odex_takaful/reports/month_payment_template.xml b/odex25_takaful/odex_takaful/reports/month_payment_template.xml new file mode 100644 index 000000000..ccbdf7bcb --- /dev/null +++ b/odex25_takaful/odex_takaful/reports/month_payment_template.xml @@ -0,0 +1,369 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/reports/payment_details_lines_reports.xml b/odex25_takaful/odex_takaful/reports/payment_details_lines_reports.xml new file mode 100644 index 000000000..166471876 --- /dev/null +++ b/odex25_takaful/odex_takaful/reports/payment_details_lines_reports.xml @@ -0,0 +1,75 @@ + + + + + + + + diff --git a/odex25_takaful/odex_takaful/reports/takaful_reports.py b/odex25_takaful/odex_takaful/reports/takaful_reports.py new file mode 100644 index 000000000..6970c5418 --- /dev/null +++ b/odex25_takaful/odex_takaful/reports/takaful_reports.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- + +from odoo import api, models, fields, _ + +class ReportMakfuleen(models.AbstractModel): + _name = 'report.odex_takaful.makfuleen_report_pdf' + + @api.model + def get_report_values(self, docids, data=None): + selected_id = data.get('sponsor_id', False) + domain = [('sponsor_id', '=', selected_id)] + records = self.env['takaful.sponsorship'].sudo().search(domain) + + return { + 'docs': records, + 'name': data.get('name', ""), + } + + +class ReportKafalatPayment(models.AbstractModel): + _name = 'report.odex_takaful.kafalat_payment_report_pdf' + + + @api.model + def get_report_values(self, docids, data=None): + + sponsor_id = data.get('sponsor_id', False) + overdue_sponsorships = self.env['takaful.sponsorship'].sudo().search([('sponsor_id','=', sponsor_id), ('has_delay','=', False), ('state','in', ['wait_pay','progress' , 'to_cancel'])]) + + overdue_amount = sum(overdue_sponsorships.mapped('overdue_amount')) or 0 + + return { + 'docs': overdue_sponsorships or [], + 'name': data.get('name', ""), + 'overdue_amount': overdue_amount, + 'overdue_count': len(overdue_sponsorships), + } + + +class ReportKafalatCancel(models.AbstractModel): + _name = 'report.odex_takaful.kafalat_cancel_report_pdf' + + + @api.model + def get_report_values(self, docids, data=None): + start_date = data.get('start_date', False) + end_date = data.get('end_date', False) + + + if start_date and end_date: + canceled_kafalat = self.env['sponsorship.cancellation'].sudo().search([ + ('confirm_date', '>=', start_date), + ('confirm_date', '<=', end_date), + ('state', '=', 'cancel'), + ]) + + else: + canceled_kafalat = [] + + return { + 'docs': canceled_kafalat, + 'cancel_count': len(canceled_kafalat), + 'start_date': start_date, + 'end_date': end_date, + } + diff --git a/odex25_takaful/odex_takaful/reports/transfer_deduction_report.xml b/odex25_takaful/odex_takaful/reports/transfer_deduction_report.xml new file mode 100644 index 000000000..019f427b9 --- /dev/null +++ b/odex25_takaful/odex_takaful/reports/transfer_deduction_report.xml @@ -0,0 +1,33 @@ + + + + + Transfer Deduction Report Landscape + + A4 + 0 + 0 + Landscape + 40 + 25 + 7 + 7 + + 30 + 120 + + + + Transfer and Deduction Report (PDF) + transfer.deduction.wizard + qweb-pdf + odex_takaful.report_transfer_deduction_document + odex_takaful.report_transfer_deduction_document + + (object.sponsorship_creation_date and ('Transfer Deduction Report - %s' % (object.sponsorship_creation_date.strftime('%Y-%m-%d'))) or 'Transfer Deduction Report') + + + + + + \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/reports/transfer_deduction_report_templates.xml b/odex25_takaful/odex_takaful/reports/transfer_deduction_report_templates.xml new file mode 100644 index 000000000..1d9247189 --- /dev/null +++ b/odex25_takaful/odex_takaful/reports/transfer_deduction_report_templates.xml @@ -0,0 +1,102 @@ + + + + \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/security/ir.model.access.csv b/odex25_takaful/odex_takaful/security/ir.model.access.csv new file mode 100644 index 000000000..2c2d827b1 --- /dev/null +++ b/odex25_takaful/odex_takaful/security/ir.model.access.csv @@ -0,0 +1,57 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_sponsorship_payment_user,Full access on sponsorship.payment to Payment User,model_sponsorship_payment,group_kufula_user,1,1,1,1 +access_month_payment_full,Full access on month.payment to Month Payment Manager,model_month_payment,odex_takaful.group_kufula_user,1,1,1,1 +access_takaful_message_template,Full access on takaful.message.template,model_takaful_message_template,odex_takaful.group_kufula_user,1,1,1,1 +access_sponsorship_cancellation,Full access on sponsorship.cancellation,model_sponsorship_cancellation,odex_takaful.group_kufula_user,1,1,1,1 +access_takaful_contribution,Full access on takaful.contribution,model_takaful_contribution,odex_takaful.group_kufula_user,1,1,1,1 +access_takaful_push_notification,Full access on takaful.push.notification,model_takaful_push_notification,odex_takaful.group_kufula_user,1,1,1,1 +access_month_payment_line,Full access on month.payment.line,model_month_payment_line,odex_takaful.group_kufula_user,1,1,1,1 +access_sponsorship_benefit_arrears,Full access on sponsorship.benefit.arrears,model_sponsorship_benefit_arrears,odex_takaful.group_kufula_user,1,1,1,1 +access_sponsorship_reason_stop,Full access on sponsorship.reason.stop,model_sponsorship_reason_stop,odex_takaful.group_kufula_user,1,1,1,1 +access_donate_for_another_person,access_donate_for_another_person,model_donate_for_another_person,odex_takaful.group_kufula_user,1,1,1,1 +access_donations_items,access_donations_items,model_donations_items,odex_takaful.group_kufula_user,1,1,1,1 +access_replacement_reasons,access_replacement_reasons,model_replacement_reasons,odex_takaful.group_orphan_replacement,1,1,1,1 +access_replacement_process,access_replacement_process,model_replacement_process,odex_takaful.group_orphan_replacement,1,1,1,0 +access_takaful_notification,access_takaful_notification,model_takaful_notification,,1,1,1,1 +access_sponsorship_states,access_sponsorship_states,model_sponsorship_states,,1,1,1,1 + + +access_replacement_wiz,access_replacement_wiz,model_replacement_wiz,,1,1,1,1 +access_donations_details_lines,access_donations_details_lines,model_donations_details_lines,odex_takaful.group_kufula_user,1,1,1,1 +access_refund_details_lines,access_refund_details_lines,model_refund_details_lines,odex_takaful.group_kufula_user,1,1,1,1 +access_points_of_sale_custom,access_points_of_sale_custom,model_points_of_sale_custom,odex_takaful.group_kufula_user,1,1,1,1 +access_payment_details_lines,access_payment_details_lines,model_payment_details_lines,odex_takaful.group_kufula_user,1,1,1,1 +access_sponsorship_scheduling_line,access_sponsorship_scheduling_line,model_sponsorship_scheduling_line,odex_takaful.group_kufula_user,1,0,0,0 +access_refund_reasons,access_refund_reasons,model_refund_reasons,odex_takaful.group_kufula_user,1,1,1,1 +access_takaful_sponsorship_user,Full access on takaful.sponsorship to Sponsorship User,model_takaful_sponsorship,group_kufula_user,1,1,1,1 +access_res_partner_user,Access on res.pfartner to Sponsorship User,base.model_res_partner,group_kufula_user,1,1,0,0 +access_res_users_user,Access on res.users to Sponsorship User,base.model_res_users,group_kufula_user,1,1,0,0 +access_grant_benefit_invoice,Full access on grant.benefit.invoice to Month Payment Manager,model_grant_benefit_invoice,base.group_user,1,1,1,1 +access_refund_wiz,access_refund_wiz,model_refund_wiz,,1,1,1,1 +access_add_details_wiz,access_add_details_wiz,model_add_details_wiz,,1,1,1,1 +access_preferred_communication,access_preferred_communication,model_preferred_communication,,1,1,1,1 +access_takaful_payment_method,access_takaful_payment_method,model_takaful_payment_method,,1,1,1,1 +access_replacement_line_method,access_takaful_replacement_line,model_replacement_line,,1,1,1,1 +access_replacement_process_line_method,access_takaful_replacement_process_line,model_replacement_process_line,,1,1,1,1 + + +access_transfer_deduction_wizard,transfer.deduction.wizard.access,model_transfer_deduction_wizard,base.group_user,1,1,1,1 +access_account_payment_register_donation_officer,account_payment_register_donation_officer,account.model_account_payment_register,odex_takaful.donation_officer_group,1,1,1,0 +access_product_template_donation_officer,product_template_donation_officer,product.model_product_template,odex_takaful.donation_officer_group,1,1,1,0 +access_product_product_donation_officer,product_product_donation_officer,product.model_product_product,odex_takaful.donation_officer_group,1,1,1,0 + +access_group_kufula_user_account_payment,access_group_kufula_user_account_payment,account.model_account_payment,odex_takaful.group_kufula_user,1,1,1,0 +access_group_kufula_user_account_partial_reconcile,access_group_kufula_user_account_partial_reconcile,account.model_account_partial_reconcile,odex_takaful.group_kufula_user,1,1,1,0 +access_group_kufula_user_account_full_reconcile,access_group_kufula_user_account_full_reconcile,account.model_account_full_reconcile,odex_takaful.group_kufula_user,1,1,1,0 +access_donation_extension_wizard,donation.extension.wizard.access,model_donation_extension_wizard,base.group_user,1,1,1,1 +access_donation_extension_history,donation.extension.history.access,model_donation_extension_history,odex_takaful.group_kufula_user,1,1,1,0 +access_donation_extension_wizard_line,donation.extension.wizard.line.access,model_donation_extension_wizard_line,odex_takaful.group_kufula_user,1,1,1,0 +access_donation_replacement_log,donation.replacement.log.access,model_donation_replacement_log,odex_takaful.group_kufula_user,1,1,1,0 +access_replace_sponsor_wizard,replace.sponsor.wizard.access,model_replace_sponsor_wizard,odex_takaful.group_replace_sponsor,1,1,1,1 +access_add_benefit_wizard,add.benefit.wizard.access,model_add_benefit_wizard,odex_takaful.group_kufula_user,1,1,1,1 +access_extension_payment_wizard_line,extension.payment.wizard.line.access,model_extension_payment_wizard_line,odex_takaful.group_kufula_user,1,1,1,1 +access_group_kufula_user_product_template,access_group_kufula_user_product_template,product.model_product_template,odex_takaful.group_kufula_user,1,1,0,0 +access_group_kufula_user_account_move,access_group_kufula_user_account_move,account.model_account_move,odex_takaful.group_kufula_user,1,1,1,0 +access_group_kufula_user_sale_order,access_group_kufula_user_sale_order,sale.model_sale_order,odex_takaful.group_kufula_user,1,1,1,0 +access_group_kufula_user_grant_benefit,access_group_kufula_user_grant_benefit,odex_benefit.model_grant_benefit,odex_takaful.group_kufula_user,1,1,1,0 +access_group_kufula_user_res_partner,access_group_kufula_user_res_partner,base.model_res_partner,odex_takaful.group_kufula_user,1,1,1,0 diff --git a/odex25_takaful/odex_takaful/security/security_data.xml b/odex25_takaful/odex_takaful/security/security_data.xml new file mode 100644 index 000000000..d53169341 --- /dev/null +++ b/odex25_takaful/odex_takaful/security/security_data.xml @@ -0,0 +1,312 @@ + + + + + Kufula System + Helps you manage Kafleen and Kafalat in kufula System + 3 + + + + + + Make Sponsorship Payments + + Can Make Payments For Sponsorships? + + + + Recieve Sponsorship Payments + + Can Recieve Payments For Sponsorships? + + + + Sponsor Account + + Is this user a Sponsor? + + + + Can Activate Inactive Sponsors + + Can make Sponsor active again? + + + + Refund Approval + + Can make Approval for refund? + + + + Orphan Replacement + + Orphan Replacement + + + + Replace Sponsor + + Can Replace Sponsor on Donation Lines + + + + Show Donation Item Product + + Can Show Donation Item Product? + + + + + + + + + + + + + + + + + + + + Kufula User + + + + + Donations Officer + + + + + Donations Officer can only see his donations or his branch sponsors + + + [ + ('record_type', 'in', [False, 'donation']), + ('create_uid', '=', user.id) + ] + + + + + + + + + Sponsorships Officer + + + + + Sponsorships Officer can only see his sponsorships or his branch sponsors + + + [ + ('record_type', 'in', [False, 'sponsorship']), + ('create_uid', '=', user.id) + ] + + + + + + + + + Branch Manager + + + + + Branch Manager can only see all his branch sponsorships and donations + + + [('branch_custom_id.branch.manager_id.user_id', 'in', [user.id, False])] + + + + + + + + Sponsorship System Manager + + + + + + Sponsorship General Restriction + + + + + + Responsible Users can access related Sponsorships + + + [('create_uid','=',user.id)] + + + + + + + + Users can access related Donations Details Lines + + + [('create_uid','=',user.id)] + + + + + + + + Sponsorship System Manager can see everything and settings + + + [(1, '=', 1)] + + + + + + + + + Beneficiary - Department Access + + Limits beneficiary records to user's department + + + + Sponsor - Department Access + + Limits sponsor records to user's department + + + + Grant Benefit - Department Based Access + + + [('branch_custom_id.branch', 'child_of', user.employee_id.department_id.id)] + + + + + + + + + Family Member - Department Based Access + + + [('benefit_id.branch_custom_id.branch', 'child_of', + user.employee_id.department_id.id)] + + + + + + + + + + + + + Sponsorship Marketer can see his employees + + + + ['|', '|', ('user_id','=',user.id), ('department_id.manager_id.user_id','=', user.id), ('parent_id.user_id','=', user.id)] + + + + + + + + + + diff --git a/odex25_takaful/odex_takaful/static/description/icon.png b/odex25_takaful/odex_takaful/static/description/icon.png new file mode 100644 index 000000000..d18f5bcd4 Binary files /dev/null and b/odex25_takaful/odex_takaful/static/description/icon.png differ diff --git a/odex25_takaful/odex_takaful/static/src/js/catalog_kanban_dynamic_button.js b/odex25_takaful/odex_takaful/static/src/js/catalog_kanban_dynamic_button.js new file mode 100644 index 000000000..79b984e00 --- /dev/null +++ b/odex25_takaful/odex_takaful/static/src/js/catalog_kanban_dynamic_button.js @@ -0,0 +1,25 @@ +odoo.define('odex_takaful.CustomKanbanRecord', function (require) { + "use strict"; + + const KanbanRecord = require('web.KanbanRecord'); + + const CustomKanbanRecord = KanbanRecord.extend({ + events: _.extend({}, KanbanRecord.prototype.events, { + 'click .oe_dynamic_button': '_onClickDynamicButton', + }), + + /** + * Hide the button when clicked + * + * @private + * @param {MouseEvent} ev + */ + _onClickDynamicButton: function (ev) { + ev.preventDefault(); + ev.stopPropagation(); + $(ev.currentTarget).hide(); // Hide the button + }, + }); + + return CustomKanbanRecord; +}); \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/static/src/js/donation_catalog_button.js b/odex25_takaful/odex_takaful/static/src/js/donation_catalog_button.js new file mode 100644 index 000000000..be72f6e64 --- /dev/null +++ b/odex25_takaful/odex_takaful/static/src/js/donation_catalog_button.js @@ -0,0 +1,92 @@ +odoo.define('odex_takaful.custom_dialog', function (require) { + "use strict"; + + const AbstractAction = require('web.AbstractAction'); + const Dialog = require('web.Dialog'); + const core = require('web.core'); + const _t = core._t; + const ActionManager = require('web.ActionManager'); + + ActionManager.include({ + //---------------------------------------------------------------------- + // Public + //---------------------------------------------------------------------- + + /** + * Returns the action of the controller currently opened in a dialog, + * i.e. a target='new' action, if any. + * + * @returns {Object|null} + */ + getCurrentActionInDialog: function () { + if (this.currentDialogController) { + return this.actions[this.currentDialogController.actionID]; + } + return null; + }, + /** + * Returns the controller currently opened in a dialog, if any. + * + * @returns {Object|null} + */ + getCurrentControllerInDialog: function () { + return this.currentDialogController; + }, + }); + + Dialog.include({ + /** + * @override + */ + open: function () { + var self = this; + this.opened(function () { + setTimeout(function () { + var parent = self.getParent(); + + if (parent instanceof ActionManager) { + + var action = parent.getCurrentActionInDialog(); + if (action) { + if (action.context) { + let context = action.context; + if (context.action_code) { + if (context.action_code === 'donation_items') { + + if (self.$footer) { + const closeBtn = $(' + + + + + + + + + + + + family.member.form.inherit.add.replaced + family.member + + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/views/donation_extension_history_views.xml b/odex25_takaful/odex_takaful/views/donation_extension_history_views.xml new file mode 100644 index 000000000..a8bdfcec4 --- /dev/null +++ b/odex25_takaful/odex_takaful/views/donation_extension_history_views.xml @@ -0,0 +1,81 @@ + + + + + + donation.extension.history.tree + donation.extension.history + + + + + + + + + + + + + + + + + + + donation.extension.history.form + donation.extension.history + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Extension History + donation.extension.history + tree,form + +

+ No extension history found +

+

+ Extension history will appear here when donations are extended. +

+
+
+ + + +
+
diff --git a/odex25_takaful/odex_takaful/views/donation_item_views.xml b/odex25_takaful/odex_takaful/views/donation_item_views.xml new file mode 100644 index 000000000..d204422e5 --- /dev/null +++ b/odex25_takaful/odex_takaful/views/donation_item_views.xml @@ -0,0 +1,74 @@ + + + + product.product.view.kanban + donations.items + + + + + + + + +
+
+ +
+
+
+
+ + + +
+ +
+ + +
+
+
    +
  • + Amount : + + +
  • + +
+
+
+ + + + + +
+
+
+
+
+
+
+
+
+ +
\ No newline at end of file diff --git a/odex25_takaful/odex_takaful/views/donation_replacement_log_views.xml b/odex25_takaful/odex_takaful/views/donation_replacement_log_views.xml new file mode 100644 index 000000000..4e83e6710 --- /dev/null +++ b/odex25_takaful/odex_takaful/views/donation_replacement_log_views.xml @@ -0,0 +1,68 @@ + + + + + + donation.replacement.log.tree + donation.replacement.log + + + + + + + + + + + + + + + + + + donation.replacement.log.form + donation.replacement.log + +
+ + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Replacement Log + donation.replacement.log + tree,form + +

+ No extension history found +

+

+ Replacement Log will appear here when Benefit donations are replaced. +

+
+
+
+
diff --git a/odex25_takaful/odex_takaful/views/donations_details_lines.xml b/odex25_takaful/odex_takaful/views/donations_details_lines.xml new file mode 100644 index 000000000..ff32a550c --- /dev/null +++ b/odex25_takaful/odex_takaful/views/donations_details_lines.xml @@ -0,0 +1,485 @@ + + + + + donations.details.lines.view.search + donations.details.lines + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + donations.details.lines.view.tree + donations.details.lines + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+ +
+
+ +
+
+
+ + + + + + + +
+
+ + + + product.template.tree.sponsorship + product.template + + +
+
+ + + +
+
+
+ + + odex.takaful.product.template.form.view + product.template + + + + + + + + +
\ No newline at end of file diff --git a/odex25_takaful/odex_takaful/views/replacement_process_views.xml b/odex25_takaful/odex_takaful/views/replacement_process_views.xml new file mode 100644 index 000000000..2d771e4bc --- /dev/null +++ b/odex25_takaful/odex_takaful/views/replacement_process_views.xml @@ -0,0 +1,100 @@ + + + + replacement.process.tree + replacement.process + + + + + + + + + + + + + + + + + + replacement.process.form + replacement.process + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+ + + + Replacement Processes + replacement.process + tree,form + +

+ Create your first Replacement Process +

+
+
+ + + + + + + + + +
diff --git a/odex25_takaful/odex_takaful/views/replacement_reasons_views.xml b/odex25_takaful/odex_takaful/views/replacement_reasons_views.xml new file mode 100644 index 000000000..ebef63b4d --- /dev/null +++ b/odex25_takaful/odex_takaful/views/replacement_reasons_views.xml @@ -0,0 +1,38 @@ + + + + + replacement.reasons.tree + replacement.reasons + + + + + + + + + + replacement.reasons.form + replacement.reasons + +
+ + + + + +
+
+
+ + + + Replacement Reasons + replacement.reasons + tree,form + + + + +
\ No newline at end of file diff --git a/odex25_takaful/odex_takaful/views/reports_actions.xml b/odex25_takaful/odex_takaful/views/reports_actions.xml new file mode 100644 index 000000000..05c8a13fb --- /dev/null +++ b/odex25_takaful/odex_takaful/views/reports_actions.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/views/reports_paperformats.xml b/odex25_takaful/odex_takaful/views/reports_paperformats.xml new file mode 100644 index 000000000..d7e14f13a --- /dev/null +++ b/odex25_takaful/odex_takaful/views/reports_paperformats.xml @@ -0,0 +1,28 @@ + + + + + + + Takaful Paper Format + + A4 + 0 + 0 + Portrait + 50 + 40 + 7 + 7 + + 50 + 110 + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/views/reports_templates.xml b/odex25_takaful/odex_takaful/views/reports_templates.xml new file mode 100644 index 000000000..34b71e763 --- /dev/null +++ b/odex25_takaful/odex_takaful/views/reports_templates.xml @@ -0,0 +1,307 @@ + + + + + + + + + + + + + + diff --git a/odex25_takaful/odex_takaful/views/res_config_settings.xml b/odex25_takaful/odex_takaful/views/res_config_settings.xml new file mode 100644 index 000000000..323dacbe4 --- /dev/null +++ b/odex25_takaful/odex_takaful/views/res_config_settings.xml @@ -0,0 +1,136 @@ + + + + + takaful.res.config.settings.view.form + res.config.settings + + + + +

Sponsorship Restriction Period

+
+
+
+
+
+
+
+
+ +

Faal Kheer Partner

+
+
+
+
+
+
+ +

Whatsapp API Integration

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +

Refund Cancel Time

+
+
+
+
+
+
+ +

SMS Templates

+
+
+
+
+
+
+
+
+
+
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/odex25_takaful/odex_takaful/views/res_partner_bank.xml b/odex25_takaful/odex_takaful/views/res_partner_bank.xml new file mode 100644 index 000000000..07122d8ca --- /dev/null +++ b/odex25_takaful/odex_takaful/views/res_partner_bank.xml @@ -0,0 +1,25 @@ + + + + + res.partner.bank.view.form.quick.create + res.partner.bank + +
+ + + + + + + + + + + + +
+
+
+ +
diff --git a/odex25_takaful/odex_takaful/views/res_users_inherit.xml b/odex25_takaful/odex_takaful/views/res_users_inherit.xml new file mode 100644 index 000000000..d9e033a63 --- /dev/null +++ b/odex25_takaful/odex_takaful/views/res_users_inherit.xml @@ -0,0 +1,21 @@ + + + + res_users_inherit_EXP + res.users + + + + + + + + + + + + + + + + diff --git a/odex25_takaful/odex_takaful/views/sponsorship_cancellation_view.xml b/odex25_takaful/odex_takaful/views/sponsorship_cancellation_view.xml new file mode 100644 index 000000000..ad613a26c --- /dev/null +++ b/odex25_takaful/odex_takaful/views/sponsorship_cancellation_view.xml @@ -0,0 +1,94 @@ + + + + Sponsorship Reason Tree + sponsorship.reason.stop + + + + + + + + + + Sponsorship Reason + sponsorship.reason.stop + tree + + + + sponsorship.cancellation.form + sponsorship.cancellation + +
+
+ +
+ + + + + + + + + + + + + + + + +
+ + +
+
+
+
+ + sponsorship.cancellation.tree + sponsorship.cancellation + + + + + + + + + + + + + + sponsorship.cancellation.search + sponsorship.cancellation + + + + + + + + + + + + Sponsorship Cancellation + sponsorship.cancellation + + tree,form + +

Create the Sponsorship Cancellation +

+
+
+ +
+
diff --git a/odex25_takaful/odex_takaful/views/sponsorship_payment_view.xml b/odex25_takaful/odex_takaful/views/sponsorship_payment_view.xml new file mode 100644 index 000000000..5c0e5ba24 --- /dev/null +++ b/odex25_takaful/odex_takaful/views/sponsorship_payment_view.xml @@ -0,0 +1,101 @@ + + + + sponsorship.payment.form + sponsorship.payment + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+ + sponsorship.payment.tree + sponsorship.payment + + + + + + + + + + + + + sponsorship.payment.search + sponsorship.payment + + + + + + + + + + + Sponsorship Payment + sponsorship.payment + + tree,form + +

Create the Sponsorship Payment +

+
+
+ +
+
diff --git a/odex25_takaful/odex_takaful/views/sponsorship_scheduling_line.xml b/odex25_takaful/odex_takaful/views/sponsorship_scheduling_line.xml new file mode 100644 index 000000000..46fa66114 --- /dev/null +++ b/odex25_takaful/odex_takaful/views/sponsorship_scheduling_line.xml @@ -0,0 +1,87 @@ + + + + + + sponsorship.scheduling.line.tree + sponsorship.scheduling.line + + + + + + + + + + + + + + + +
+

+ + +

+

+ +

+
+ + + + + + + + + + + +
+ + +
+ +
+
+ + month.payment.tree + month.payment + + + + + + + + + + month.payment.search + month.payment + + + + + + + + + + + + + month.payment.line.form + month.payment.line + + +
+ +
+

+ + +

+ + + + + + + + + + + + + + + + +
+
+ +
+
+
+ + month.payment.line.tree + month.payment.line + + + + + + + + + + + + + + + month.payment.line.search + month.payment.line + + + + + + + + + + + + + + + + + Month Payment + month.payment + + tree,form + +

Create a Month Payment +

+
+
+ + + + Benefit Month Payment + month.payment.line + + tree,form + +

Create the Month Payment Line +

+
+
+ + +
diff --git a/odex25_takaful/odex_takaful/views/takaful_notification.xml b/odex25_takaful/odex_takaful/views/takaful_notification.xml new file mode 100644 index 000000000..d75e6ef30 --- /dev/null +++ b/odex25_takaful/odex_takaful/views/takaful_notification.xml @@ -0,0 +1,46 @@ + + + + takaful.notification.form.inherit + takaful.notification + + + + + + + + + + + + + + + + + + + + + + + + + + + + takaful.notification.tree.inherit + takaful.notification + + + + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/views/takaful_payment_method.xml b/odex25_takaful/odex_takaful/views/takaful_payment_method.xml new file mode 100644 index 000000000..083d93698 --- /dev/null +++ b/odex25_takaful/odex_takaful/views/takaful_payment_method.xml @@ -0,0 +1,41 @@ + + + + takaful.payment.method.form + takaful.payment.method + +
+ + + + + + + +
+
+
+ + + takaful.payment.method.tree + takaful.payment.method + + + + + + + + + + + Takaful Payment Method + takaful.payment.method + tree,form + + + +
diff --git a/odex25_takaful/odex_takaful/views/takaful_push_notification_view.xml b/odex25_takaful/odex_takaful/views/takaful_push_notification_view.xml new file mode 100644 index 000000000..c306f08e9 --- /dev/null +++ b/odex25_takaful/odex_takaful/views/takaful_push_notification_view.xml @@ -0,0 +1,111 @@ + + + + + + takaful.push.notification.form + takaful.push.notification + +
+ + + + + + + + + + + +
+
+
+ + + + takaful.push.notification.tree + takaful.push.notification + + + + + + + + + + + + + + + takaful.push.notification.search + takaful.push.notification + + + + + + + + + + + + + + Message Template Form + takaful.message.template + +
+ + + + + + + +
+
+
+ + + + Messages Templates List + takaful.message.template + + + + + + + + + + + + Notification Message + takaful.push.notification + + tree,form + +

No Notification Messege +

+
+
+ + + + Message Template + takaful.message.template + + tree,form + +

No Message Template +

+
+
+ +
+
diff --git a/odex25_takaful/odex_takaful/views/takaful_sponorship_view.xml b/odex25_takaful/odex_takaful/views/takaful_sponorship_view.xml new file mode 100644 index 000000000..0a48459e1 --- /dev/null +++ b/odex25_takaful/odex_takaful/views/takaful_sponorship_view.xml @@ -0,0 +1,829 @@ + + + + + + + كفالة + service + sponsorship + + 300.0 + + + + + grant.benefit.tree + grant.benefit + + + + + + + + + + + takaful.sponsorship.form + takaful.sponsorship + +
+
+ + + + + + +
+ +
+ + + + + + +
+ + + + + +
+
+
+ + تبرع +
+
+ + كفالة +
+
+ + + + +
+ + +
+
+
+ + غير مشروط +
+
+ + مشروط +
+
+ + + +
+ + +
+ + أدخل بيانات المتبرع ثم حدد تفاصيل التبرع +
+ +
+ + أدخل بيانات الكافل ثم انتقل لإضافة تفاصيل الكفالة +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ +

+

+ +

+
+ + +
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Contact image + + Delivery + Invoice + + Logo + Avatar + + +
+
+ +
+ +
+
+ +
+
+
+ + +
+ + +
+
Phone: + +
+
Mobile: + +
+
+
+
+
+
+
+
+ +
+
+
+
+
+ + +
+ +
+
+ + + + The Sponsor + res.partner + tree,form + [('is_sponsor_portal', '=', True), ('company_type', '=', 'person')] + + { + 'default_company_type': 'person', + 'default_is_sponsor_portal': True, + 'default_is_donor': True, + 'sponsor_contact': True + } + + + + + + form + + + + + + + tree + + + + + + active.sponsors.count.pivot + res.partner + + + + + + + + + Active Sponsors Count + ir.actions.server + + code + + action = model.show_active_sponsor_report_report() + + + + + + Make Active + + + + code + records.on_activate_sponsor_multi() + + +
diff --git a/odex25_takaful/odex_takaful/wizards/__init__.py b/odex25_takaful/odex_takaful/wizards/__init__.py new file mode 100644 index 000000000..4ae4ee2e6 --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/__init__.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- + +from . import takaful_reports_wizards +from . import benefit_month_payment_wiz +from . import refund_payment_wizard +from . import add_details_wizard +from . import orphan_replacement_wizard +from . import transfer_deduction_wizard +from . import donation_extension_wizard +from . import replace_sponsor_wizard +from . import add_benefit_wizard +from . import account_payment_register diff --git a/odex25_takaful/odex_takaful/wizards/account_payment_register.py b/odex25_takaful/odex_takaful/wizards/account_payment_register.py new file mode 100644 index 000000000..f3dab7a0f --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/account_payment_register.py @@ -0,0 +1,213 @@ +from odoo import api, fields, models, _ + +import logging + +_logger = logging.getLogger(__name__) + + +class AccountRegisterPayment(models.TransientModel): + _inherit = 'account.payment.register' + + @api.model + def _default_payment_method_id(self): + payment_method = self.env['takaful.payment.method'].sudo().search( + [('payment_method', '=', 'cash')], + limit=1 + ) + return payment_method.id if payment_method else False + + takaful_sponsorship_id = fields.Many2one('takaful.sponsorship') + takaful_payment_method_id = fields.Many2one('takaful.payment.method', string="Payment Method", required=True, default=_default_payment_method_id) + takaful_payment_method = fields.Selection([ + ("cash", "Cash"), + ("bank", "Bank Transfer"), + ("direct_debit", "Direct Debit"), + ("check", "Check"), + ("network", "Network"), + ], + compute="_compute_takaful_payment_method", string="Payment Method") + is_refund_sponsorship = fields.Boolean(string='Is Refund Sponsorship') + 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' , 'الماكينة') + 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) + + + @api.onchange("machine_id") + def onchange_machine_id(self): + for rec in self: + if rec.machine_id: + rec.journal_id = rec.machine_id.journal_id + @api.onchange("takaful_payment_method_id") + def onchange_takaful_payment_method_id(self): + for rec in self: + if rec.takaful_payment_method_id and rec.takaful_payment_method_id.journal_id: + rec.journal_id = rec.takaful_payment_method_id.journal_id.id + payment_method = rec.takaful_payment_method_id.payment_method + j_type = "" + if payment_method == "cash": + j_type = "cash" + elif payment_method in ("bank", "check","network"): + j_type = "bank" + if j_type: + return {"domain": {"journal_id": [("type", "=", j_type)]}} + + + @api.depends('source_amount', 'source_amount_currency', 'source_currency_id', 'company_id', 'currency_id', 'payment_date') + def _compute_amount(self): + if self.env.context.get('sponsorship_payment_skip_compute_amount'): + self.amount = self.amount + else: + super(AccountRegisterPayment, self)._compute_amount() + + @api.depends('takaful_payment_method_id') + def _compute_takaful_payment_method(self): + for rec in self: + if rec.takaful_payment_method_id: + if rec.takaful_payment_method_id.payment_method in ["cash", "direct_debit", "check", "network"]: + rec.takaful_payment_method = rec.takaful_payment_method_id.payment_method + else: + rec.takaful_payment_method = "bank" + else: + rec.takaful_payment_method = "cash" + + + def _create_payments(self): + sponsorship_line_ids = self.env.context.get('sponsorship_line_ids') + sponsorship_lines = self.env['donations.details.lines'].browse(sponsorship_line_ids).filtered(lambda r: r.display_type == False) + sponsorship = self.env['takaful.sponsorship'].browse(self.env.context.get('sponsorship_id')) + payments = super(AccountRegisterPayment, self)._create_payments() + if sponsorship_lines: + + for line in sponsorship_lines: + state = '' + if line.record_type == 'sponsorship': + if not (line.benefit_id | line.benefit_ids): + state = 'waiting' + elif line.sponsorship_duration == 'temporary': + state = 'active' + else: + state = 'paid' + elif line.record_type == 'donation': + if line.donation_mechanism == 'with_conditions': + state = 'active' + else: + state = 'paid' + line.write({'state': state}) + if self.env.context.get('schedule_line_payment'): + schedule_line = self.env['sponsorship.scheduling.line'].browse(self.env.context.get('schedule_line_id')) + schedule_line.sudo().write({'status': 'paid'}) + all_schedule_lines_paid = schedule_line.donation_detail_linked_id.sponsorship_scheduling_line_ids.filtered( + lambda l: l.status == 'paid') + if len(all_schedule_lines_paid) == len( + schedule_line.donation_detail_linked_id.sponsorship_scheduling_line_ids): + schedule_line.donation_detail_linked_id.state = 'paid' + if sponsorship.record_type == 'donation' and sponsorship.donation_mechanism == 'with_conditions': + benefit_journal_id = self.env.company.kafala_benefit_journal_id.id + donation_line = schedule_line.donation_detail_linked_id + family_id = donation_line.family_id + + bill_values = { + 'takaful_sponsorship_id': sponsorship.id, + 'name': self.env['ir.sequence'].next_by_code('account.move.accrsp'), + 'move_type': 'in_invoice', + 'journal_id': benefit_journal_id, + 'date': fields.Date.today(), + 'invoice_date': fields.Date.today(), + 'partner_id': family_id.partner_id.id, + 'invoice_line_ids': [(0, 0, { + 'product_id': donation_line.product_id.id, + 'price_unit': schedule_line.amount, + 'quantity': 1, + 'name': _("Benefit Number %s %s") % (donation_line.sequence_no, f"Cheque Number: {self.check_number} Cheque Due Date: {self.check_due_date}" if self.takaful_payment_method == 'check' else " "), + 'analytic_account_id': sponsorship.branch_custom_id.branch.analytic_account_id.id, + })] + } + + bill_id = self.env['account.move'].sudo().create(bill_values) + for line in bill_id.invoice_line_ids: + line.account_id = line._get_computed_account() + taxes = line._get_computed_taxes() + if taxes and line.move_id.fiscal_position_id: + taxes = line.move_id.fiscal_position_id.map_tax(taxes, partner=line.partner_id) + line.tax_ids = taxes + line.product_uom_id = line._get_computed_uom() + bill_id.action_post() + for line in sponsorship_lines: + if line.record_type != 'sponsorship': + continue + if line.sponsorship_type == 'group': + line.benefit_ids.write({ + 'sponsor_related_id': line.sponsorship_mechanism_id.sponsor_id.id, + 'sponsorship_id': line.sponsorship_mechanism_id.id, + 'sponsorship_end_date': line.end_date if line.end_date else False, + 'kafala_status': 'have_kafala', + }) + if line.sponsorship_type == 'person': + line.benefit_id.write({ + 'sponsor_related_id': line.sponsorship_mechanism_id.sponsor_id.id, + 'sponsorship_id': line.sponsorship_mechanism_id.id, + 'sponsorship_end_date': line.end_date if line.end_date else False, + 'kafala_status': 'have_kafala', + }) + line.sponsorship_mechanism_id.sponsor_id.sudo().is_sponsor_portal = True + if self.env.context.get('is_direct_debit'): + payments.write({'direct_debit': True}) + payments.move_id.write({ + 'takaful_sponsorship_id': sponsorship.id + }) + + if self.transaction_file_attachment: + self.env['ir.attachment'].sudo().create({ + 'name': f'{"/".join(sponsorship_lines.mapped("sequence_no"))} - {self.takaful_payment_method}', + 'datas': self.transaction_file_attachment, + 'res_model': 'account.payment', + 'res_id': payments[0].id, + 'type': 'binary', + }) + + + return payments + + @api.model + def _get_line_batch_key(self, line): + res = super(AccountRegisterPayment, self)._get_line_batch_key(line) + if self.env.context.get('force_sponsorship_line_partner_id'): + res['partner_id'] = self.env.context.get('force_sponsorship_line_partner_id') + return res + + def _create_payment_vals_from_wizard(self): + res = super(AccountRegisterPayment, self)._create_payment_vals_from_wizard() + if self.env.context.get('force_sponsorship_line_partner_id'): + res['partner_id'] = self.env.context.get('force_sponsorship_line_partner_id') + return res + + @api.model + def _get_batch_available_partner_banks(self, batch_result, journal): + sponsorship_line_ids = self.env.context.get('sponsorship_line_ids') + sponsorship_lines = self.env['donations.details.lines'].browse(sponsorship_line_ids).filtered(lambda r: r.display_type == False) + + if sponsorship_lines: + return sponsorship_lines.sponsor_id.bank_ids + return super(AccountRegisterPayment, self)._get_batch_available_partner_banks(batch_result, journal) + + def action_create_payments(self): + res = super(AccountRegisterPayment, self).action_create_payments() + + if self.env.context.get('dont_redirect_to_payments'): + return { + 'type': 'ir.actions.client', + 'tag': 'display_notification', + 'params': { + 'title': _('Success'), + 'message': _('Payment registered successfully'), + 'type': 'success', + 'sticky': False, + 'next': {'type': 'ir.actions.act_window_close'} + }, + } + + return res diff --git a/odex25_takaful/odex_takaful/wizards/account_payment_register.xml b/odex25_takaful/odex_takaful/wizards/account_payment_register.xml new file mode 100644 index 000000000..1c8d4870a --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/account_payment_register.xml @@ -0,0 +1,130 @@ + + + + + + account.payment.register.inherit.form + account.payment.register + + + + + + + + + + {'readonly':[('is_refund_sponsorship','=',True)]} + Association Journal + + + + context.get('sponsorship_payment') + + + + context.get('sponsorship_payment') + + + + context.get('sponsorship_payment') + + + + context.get('sponsorship_payment') + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/odex25_takaful/odex_takaful/wizards/add_benefit_wizard.py b/odex25_takaful/odex_takaful/wizards/add_benefit_wizard.py new file mode 100644 index 000000000..7bc65ca65 --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/add_benefit_wizard.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError +import logging + +_logger = logging.getLogger(__name__) + +class AddBenefitWizard(models.TransientModel): + _name = 'add.benefit.wizard' + _description = "Add Benefit" + + donation_detail_id = fields.Many2one( + 'donations.details.lines', + string='Donation Detail', + readonly=True + ) + members_domain_ids = fields.Many2many('family.member', related='donation_detail_id.members_domain_ids') + + benefit_id = fields.Many2one('family.member', string='Beneficiary Name', ondelete='restrict', + domain="[('id', 'in', members_domain_ids)]",required = True, tracking=True) + + def action_add_benefit(self): + """ + Add Benefit on the donation detail line and post a message to the chatter + """ + self.ensure_one() + + if not self.donation_detail_id: + raise ValidationError(_("No donation detail line found.")) + + if not self.benefit_id: + raise ValidationError(_("Please select a Benefit.")) + + donation_line = self.donation_detail_id + new_benefit_name = self.benefit_id.name + + # Get the sponsorship record (could be sponsorship_id or sponsorship_mechanism_id) + sponsorship = donation_line.sponsorship_id or donation_line.sponsorship_mechanism_id + + if not sponsorship: + raise ValidationError(_("No sponsorship found for this donation detail line.")) + + # Update the Benefit on the donation detail line + donation_line.write({ + 'benefit_id': self.benefit_id.id, + 'benefit_ids': [(6, 0, [self.benefit_id.id])], + }) + (donation_line.benefit_id | donation_line.benefit_ids).sudo().write({ + 'sponsor_related_id': donation_line.sponsor_id.id, + 'kafala_status': 'have_kafala' + }) + + # Post message to the donation detail line chatter + message_body = _( + "Add Benefit: %s" + ) % (new_benefit_name) + + donation_line.message_post( + body=message_body, + subject=_("Add Benefit"), + message_type='notification', + ) + + _logger.info( + "Add Benefit on donation line : %s", + new_benefit_name + ) + + return { + 'type': 'ir.actions.client', + 'tag': 'display_notification', + 'params': { + 'title': _('Success'), + 'message': _('Benefit has been successfully %s') % ( + new_benefit_name + ), + 'type': 'success', + 'sticky': False, + 'next': {'type': 'ir.actions.act_window_close'} + } + } + + def action_cancel(self): + """ + Cancel the wizard + """ + return {'type': 'ir.actions.act_window_close'} + diff --git a/odex25_takaful/odex_takaful/wizards/add_benefit_wizard.xml b/odex25_takaful/odex_takaful/wizards/add_benefit_wizard.xml new file mode 100644 index 000000000..1dce4c1e0 --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/add_benefit_wizard.xml @@ -0,0 +1,27 @@ + + + + + add.benefit.wizard.form + add.benefit.wizard + +
+ + + + + + + + + + +
+
+
+
+
+
+
diff --git a/odex25_takaful/odex_takaful/wizards/add_details_wizard.py b/odex25_takaful/odex_takaful/wizards/add_details_wizard.py new file mode 100644 index 000000000..fab510c48 --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/add_details_wizard.py @@ -0,0 +1,20 @@ +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError, UserError + + +class AddDetailsWiz(models.TransientModel): + _name = 'add.details.wiz' + _description = "Refund Wizard" + + payment_method_id = fields.Many2one('takaful.payment.method', string="Payment Method", required=True) + + + def add_details(self): + active_id = self.env.context.get('active_id') + if active_id: + donation_id = self.env['donations.items'].browse(active_id) + donation_id.payment_method_id = self.payment_method_id.id + + + + diff --git a/odex25_takaful/odex_takaful/wizards/add_details_wizard.xml b/odex25_takaful/odex_takaful/wizards/add_details_wizard.xml new file mode 100644 index 000000000..4a96153a1 --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/add_details_wizard.xml @@ -0,0 +1,24 @@ + + + + + add.details.form + add.details.wiz + +
+ + + + +
+
+
+
+ +
+
+
+
diff --git a/odex25_takaful/odex_takaful/wizards/benefit_month_payment_wiz.py b/odex25_takaful/odex_takaful/wizards/benefit_month_payment_wiz.py new file mode 100644 index 000000000..65facc224 --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/benefit_month_payment_wiz.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Expert (LCT, Life Connection Technology) +# Copyright (C) 2020-2021 LCT +# +############################################################################## +from odoo.exceptions import ValidationError +from odoo import models, fields, api, _ + + +class BenefitWiz(models.TransientModel): + _name = 'benefit.wiz' + _description = "Benefit Wizard Report" + + date_from = fields.Date(string='Date From') + date_to = fields.Date(string='Date To') + benefit_ids = fields.Many2many('grant.benefit',string="Benefits") + report_type = fields.Selection(selection=[('benefit','Benefits Payment'), + ('benefit_month','Benefits Month Payments'), + ]) + + @api.constrains('date_from','date_to') + def check_date(self): + for rec in self: + if rec.date_from and rec.date_to: + if rec.date_from>rec.date_to: + raise ValidationError(_("Date To Should Be Greater Than Date From")) + + def print_report(self): + data ={'date_from':self.date_from,'date_to':self.date_to, + 'report_type':self.report_type, + 'benefit_ids':self.benefit_ids.ids if self.benefit_ids else False, + } + if self.report_type == 'benefit': + return self.env.ref('odex_takaful.benefit_payment_report_pdf_act').report_action(self, data=data) + elif self.report_type == 'benefit_month': + return self.env.ref('odex_takaful.benefit_month_payment_report_pdf_act').report_action(self, data=data) + elif self.report_type == 'benefit_month_share': + return self.env.ref('odex_takaful.benefit_month_payment_share_report_pdf_act').report_action(self, data=data) + \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/wizards/benefit_month_payment_wiz_view.xml b/odex25_takaful/odex_takaful/wizards/benefit_month_payment_wiz_view.xml new file mode 100644 index 000000000..42fcb677b --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/benefit_month_payment_wiz_view.xml @@ -0,0 +1,48 @@ + + + + + + + + + Benefits Month Report + ir.actions.act_window + benefit.wiz + + form + {'default_report_type':'benefit_month'} + new + + + + + \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/wizards/donation_extension_wizard.py b/odex25_takaful/odex_takaful/wizards/donation_extension_wizard.py new file mode 100644 index 000000000..cccd3ac65 --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/donation_extension_wizard.py @@ -0,0 +1,483 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError +from dateutil.relativedelta import relativedelta +import logging +from odoo.tools import float_compare + + +_logger = logging.getLogger(__name__) + +class DonationExtensionWizard(models.TransientModel): + _name = 'donation.extension.wizard' + _description = "Donation Extension Wizard" + + line_ids = fields.One2many( + 'donation.extension.wizard.line', + 'wizard_id', + string='Lines', + required=True, + default=lambda self: self._compute_line_ids(), + ) + + payment_line_ids = fields.One2many( + 'extension.payment.wizard.line', + 'wizard_id', + string='Payments', + ) + + months = fields.Integer( + string='Extension Months', + required=True, + default=1, + help='Number of months to extend' + ) + + is_different_payment = fields.Boolean(string='Is Different Payment') + total_extension_amount = fields.Float( + string='Total Extension Amount', + compute='_compute_total_extension_amount', + store=True, + ) + + + + @api.depends('line_ids.total_donation_amount') + def _compute_total_extension_amount(self): + for rec in self: + rec.total_extension_amount = sum(line.total_donation_amount for line in rec.line_ids if line.direct_debit == False) + + @api.constrains('is_different_payment', 'payment_line_ids') + def _check_payment_sum_when_different(self): + for rec in self: + if not rec.is_different_payment: + sum_payments = sum(line.payment_amount for line in rec.payment_line_ids) + if float_compare(sum_payments, rec.total_extension_amount, precision_digits=2) != 0: + raise ValidationError(_("Total payment amounts (%s) must equal total extension amount (%s).") % + (sum_payments, rec.total_extension_amount)) + + def _compute_line_ids(self): + extension_line_ids = [(5,)] + donation_detail_ids = self.env['donations.details.lines'].browse(self.env.context.get('donation_detail_ids')) + for line in donation_detail_ids: + if not (line.record_type == 'donation' and line.direct_debit) and line.record_type != 'sponsorship': + raise ValidationError(_("Only donation with direct debit or sponsorship can be extended. Line: %s") % line.name) + if line.end_date and line.end_date < fields.Date.context_today(line): + raise ValidationError(_("Only active donations with end date in the future can be extended. Line: %s") % line.name) + if line.state != 'active': + raise ValidationError(_("Only active donations can be extended. Line: %s") % line.name) + extension_line_ids.append((0, 0, { + 'donation_line_id': line.id, + 'current_end_date': line.end_date, + })) + return extension_line_ids + + @api.constrains('months') + def _check_months(self): + for rec in self: + if rec.months <= 0: + raise ValidationError(_("Extension months must be greater than 0.")) + + @api.onchange('payment_line_ids', 'total_extension_amount') + def _compute_lines(self): + remaining = self.total_extension_amount + + for line in self.payment_line_ids: + + if not line.payment_amount: + line.payment_amount = remaining + + remaining -= line.payment_amount + + line.remaining = remaining if remaining > 0 else 0 + + def action_extend(self): + """ + Extend the donation detail line with new amount and months + """ + invoice_ids = self.env['account.move'] + donation_line_ids = self.env['donations.details.lines'] + for line in self.line_ids: + result = line._extend() + if result: + invoice_ids += result[0] + donation_line_ids += result[1] + + if invoice_ids and not self.is_different_payment: + invoices = invoice_ids.filtered( + lambda inv: inv.state == 'posted' and inv.move_type in ('out_invoice', 'out_refund')) + if not invoices: + return + + residual_map = {inv.id: float(inv.amount_residual) for inv in invoices} + + invoices = invoices.sorted(key=lambda r: r.invoice_date or r.date or fields.Date.context_today(self)) + + for pay_line in self.payment_line_ids: + remaining = float(pay_line.payment_amount or 0.0) + if float_compare(remaining, 0.0, precision_digits=2) <= 0: + continue + + candidate_invoices = invoices.filtered(lambda inv: inv.partner_id == pay_line.partner_id) + + if not candidate_invoices: + candidate_invoices = invoices + + for inv in candidate_invoices: + if float_compare(remaining, 0.0, precision_digits=2) <= 0: + break + + inv_res = residual_map.get(inv.id, 0.0) + if float_compare(inv_res, 0.0, precision_digits=2) <= 0: + continue + + pay_amount = min(remaining, inv_res) + + payment_register_vals = { + 'payment_type': 'inbound', + 'partner_type': 'customer', + 'partner_id': inv.partner_id.id, + 'amount': pay_amount, + 'journal_id': pay_line.journal_id.id, + # 'payment_method_id': pay_line.payment_method.id, + 'communication': _("Extension Payment for %s") % inv.name, + 'transaction_file_attachment': pay_line.payment_file_attachment, + + } + + ctx = { + 'active_model': 'account.move', + 'active_ids': [inv.id], + 'dont_redirect_to_payments': True, + 'sponsorship_line_ids': donation_line_ids.ids, + 'sponsorship_payment': True, + 'default_sponsorship_payment': True, + } + + payment_register = self.env['account.payment.register'].sudo().with_context(ctx).new( + payment_register_vals) + payments = payment_register.action_create_payments() + + inv_sudo = inv.sudo() + inv_sudo.invalidate_cache(['amount_residual']) + new_residual = float(inv_sudo.amount_residual or 0.0) + residual_map[inv.id] = new_residual + + remaining = remaining - pay_amount + + + + return { + 'type': 'ir.actions.client', + 'tag': 'display_notification', + 'params': { + 'title': _('Success'), + 'message': _('Donation has been extended for %s month(s).') % ( + self.months, + ), + 'type': 'success', + 'sticky': False, + 'next': {'type': 'ir.actions.act_window_close'} + } + } + + def action_cancel(self): + """ + Cancel the wizard + """ + return {'type': 'ir.actions.act_window_close'} + +class ExtensionPaymentWizardLine(models.TransientModel): + _name = 'extension.payment.wizard.line' + _description = "Extension Payment Wizard Line" + + @api.model + def _default_journal_id(self): + journal_id = self.env.company.sponsorship_direct_debit_journal_id.id + return journal_id if journal_id else False + @api.model + def _default_payment_method_id(self): + payment_method = self.env['takaful.payment.method'].sudo().search( + [('payment_method', '=', 'cash')], + limit=1 + ) + return payment_method.id if payment_method else False + + + wizard_id = fields.Many2one('donation.extension.wizard', string='Wizard', required=True) + donation_line_ids = fields.Many2many('donations.details.lines') + payment_method = fields.Many2one('takaful.payment.method', string="Payment Method", required=True, default=_default_payment_method_id) + partner_bank_id = fields.Many2one("res.partner.bank", string="Partner Bank", domain="[('partner_id', '=', partner_id)]") + payment_file_attachment = fields.Binary(string='Payment Attachment', attachment=True) + journal_id = fields.Many2one('account.journal', string="Journal", domain="[('type','=','bank')]", + default=_default_journal_id) + check_number = fields.Char(string='Check Number') + check_due_date = fields.Date(string='Check Due Date') + payment_amount = fields.Float(string='Payment Amount', + help="Amount to be paid for this line (when different payments used).", + default=0.0) + remaining = fields.Float(string="Remaining", readonly=True) + + currency_id = fields.Many2one('res.currency', string='Currency', + default=lambda self: self.env.company.currency_id, readonly=True) + payment_method_type= fields.Selection(related='payment_method.payment_method') + partner_id = fields.Many2one( + 'res.partner', + compute='_compute_partner_id', + store=True + ) + + @api.onchange('payment_method') + def _onchange_payment_method(self): + if self.wizard_id and not self.donation_line_ids: + self.donation_line_ids = self.wizard_id.line_ids.mapped('donation_line_id').ids + + + @api.depends('donation_line_ids') + def _compute_partner_id(self): + for rec in self: + first_line = rec.donation_line_ids[:1] + rec.partner_id = first_line.sponsor_id.id if first_line else False + + @api.onchange("payment_method") + def onchange_payment_method(self): + for rec in self: + if rec.payment_method and rec.payment_method.journal_id: + rec.journal_id = rec.payment_method.journal_id.id + payment_method = rec.payment_method.payment_method + j_type = "" + if payment_method == "cash": + j_type = "cash" + elif payment_method in ("bank", "check", "network"): + j_type = "bank" + if j_type: + return {"domain": {"journal_id": [("type", "=", j_type)]}} + + +class DonationExtensionWizardLine(models.TransientModel): + _name = 'donation.extension.wizard.line' + _description = "Donation Extension Wizard Line" + + @api.model + def _default_journal_id(self): + journal_id = self.env.company.sponsorship_direct_debit_journal_id.id + return journal_id if journal_id else False + + wizard_id = fields.Many2one('donation.extension.wizard', string='Wizard', required=True) + donation_line_id = fields.Many2one('donations.details.lines', string='Donation Detail', required=True, readonly=True) + donation_qty = fields.Float(compute='_compute_donation_qty', store=True) + direct_debit = fields.Boolean() + total_months_amount = fields.Float( + string='Total Months Amount', + compute='_compute_total_months_amount', + store=True, + readonly=True, + help='Total amount for the extension period' + ) + + total_donation_amount = fields.Float( + string='Total Extension Amount', + compute='_compute_total_donation_amount', + store=True, + readonly=True, + help='Total extension amount (amount × months)' + ) + currency_id = fields.Many2one('res.currency', string='Currency', + default=lambda self: self.env.company.currency_id, readonly=True) + + current_end_date = fields.Date( + string='Current End Date', + readonly=True + ) + + new_end_date = fields.Date( + string='New End Date', + compute='_compute_new_end_date', + readonly=True + ) + direct_debit_partner_bank_id = fields.Many2one("res.partner.bank", string="Direct Debit Partner Bank", domain="[('partner_id', '=', partner_id)]") + debit_payment_file_attachment = fields.Binary(string='Debit Payment Attachment', attachment=True) + debit_payment_attachment_file_name = fields.Char('Debit Payment File Name', required=False) + journal_id = fields.Many2one('account.journal', string="Journal",domain="[('type','=','bank')]", default=_default_journal_id) + + # related + record_type = fields.Selection(related='donation_line_id.record_type') + sponsorship_type = fields.Selection(related='donation_line_id.sponsorship_type') + donation_amount = fields.Float(related='donation_line_id.donation_amount', store=True) + benefits_count = fields.Integer(related='donation_line_id.benefits_count') + sponsorship_id = fields.Many2one(related='donation_line_id.sponsorship_id') + fixed_value = fields.Boolean(related='donation_line_id.fixed_value') + donation_mechanism = fields.Selection(related='donation_line_id.donation_mechanism') + months = fields.Integer(related='wizard_id.months') + partner_id = fields.Many2one(related='donation_line_id.sponsor_id') + + @api.depends('benefits_count', 'donation_amount', 'months', 'donation_qty', 'record_type', 'sponsorship_type') + def _compute_total_donation_amount(self): + for rec in self: + if rec.record_type == 'donation': + if rec.sponsorship_id.donation_mechanism == 'without_conditions': + rec.total_donation_amount = rec.donation_amount * rec.donation_qty + else: + rec.total_donation_amount = rec.total_months_amount + else: + rec.total_donation_amount = rec.total_months_amount * rec.benefits_count + + @api.depends('donation_amount', 'months') + def _compute_total_months_amount(self): + for rec in self: + rec.total_months_amount = rec.donation_amount * rec.months + + @api.depends('current_end_date', 'months') + def _compute_new_end_date(self): + for rec in self: + if rec.current_end_date and rec.months: + rec.new_end_date = rec.current_end_date + relativedelta(months=rec.months) + else: + rec.new_end_date = False + + @api.depends('donation_line_id') + def _compute_donation_qty(self): + for rec in self: + rec.donation_qty = rec.donation_line_id.donation_qty + + def _extend(self): + self.ensure_one() + + if not self.donation_line_id: + raise ValidationError(_("No donation detail line selected.")) + + # Update the donation detail line + new_end_date = self.current_end_date + relativedelta(months=self.months) + old_end_date = self.current_end_date + + # Update end date + donation_line_new_vals = { + 'end_date': new_end_date, + 'payment_month_count': self.donation_line_id.payment_month_count + self.months, + } + if self.direct_debit: + donation_line_new_vals.update({ + 'direct_debit': self.direct_debit, + 'direct_debit_partner_bank_id': self.direct_debit_partner_bank_id.id, + 'journal_id': self.journal_id.id, + 'debit_payment_file_attachment': self.debit_payment_file_attachment, + 'debit_payment_attachment_file_name': self.debit_payment_attachment_file_name, + }) + self.donation_line_id.write(donation_line_new_vals) + + benefit_ids = self.donation_line_id.benefit_ids | self.donation_line_id.benefit_id + benefit_ids.write({ + 'sponsorship_end_date': new_end_date, + 'kafala_status': 'have_kafala', + }) + + # Create new scheduling lines for the extension period + if self.direct_debit: + self._create_extension_scheduling_lines() + + # Create invoice for the extension + invoice_id = self._create_extension_invoice() + + # Create extension history record + self.env['donation.extension.history'].create({ + 'donation_detail_id': self.donation_line_id.id, + 'sponsorship_id': self.donation_line_id.sponsorship_id.id or self.donation_line_id.sponsorship_mechanism_id.id, + 'extension_amount': self.total_donation_amount, + 'extension_months': self.months, + 'old_end_date': old_end_date, + 'new_end_date': new_end_date, + 'invoice_id': invoice_id.id if invoice_id else False, + 'old_direct_debit': self.donation_line_id.direct_debit, + 'new_direct_debit': self.direct_debit, + + }) + + if not self.direct_debit: + return invoice_id, self.donation_line_id + + + return False + + + def _create_extension_scheduling_lines(self): + """ + Create scheduling lines for the extension period + """ + self.ensure_one() + + donation_line = self.donation_line_id + start_date = self.current_end_date + relativedelta(months=1) + + # Distribute total amount across months + base_amount, remainder = divmod(self.total_donation_amount, self.months) + base_amount = float(base_amount) + + for month in range(self.months): + scheduled_date = start_date + relativedelta(months=month) + month_year = scheduled_date.strftime("%m/%Y") + # Distribute remainder across first months + amount = base_amount + 1 if month < remainder else base_amount + # Format the amount to 2 decimal places for better representation + amount = round(amount, 2) + # Create scheduling line + self.env['sponsorship.scheduling.line'].sudo().create({ + 'sponsorship_id': donation_line.sponsorship_id.id or donation_line.sponsorship_mechanism_id.id, + 'donation_detail_linked_id': donation_line.id, + 'beneficiary_id': donation_line.benefit_id.id if donation_line.benefit_id else False, + 'month_year': month_year, + 'scheduled_date': scheduled_date, + 'amount': amount, + 'status': 'unpaid', + }) + + def _create_extension_invoice(self): + """ + Create invoice for the extension amount + """ + self.ensure_one() + + donation_line = self.donation_line_id + sponsorship = donation_line.sponsorship_id or donation_line.sponsorship_mechanism_id + + # Get journal from settings + sudoConf = self.env['ir.config_parameter'].sudo() + kafala_journal_id = sudoConf.get_param('odex_takaful_base.kafala_journal_id', default=False) + + if not kafala_journal_id: + _logger.error('Please set income journal in settings (kafala_journal_id Payment Journal)') + + # Prepare invoice + Invoice = self.env["account.move"].sudo() + invoice_values = { + 'takaful_sponsorship_id': sponsorship.id, + 'name': self.env['ir.sequence'].next_by_code('account.move.accrsp'), + 'move_type': 'out_invoice', + 'journal_id': int(kafala_journal_id), + 'date': fields.Date.today(), + 'partner_id': sponsorship.sponsor_id.id, + 'invoice_line_ids': [(0, 0, { + 'product_id': donation_line.product_id.id, + 'price_unit': self.total_donation_amount, + 'quantity': 1, + 'name': _("Extension - %s - %s month(s)") % (donation_line.sequence_no, self.months), + 'analytic_account_id': sponsorship.branch_custom_id.branch.analytic_account_id.id if sponsorship.branch_custom_id and sponsorship.branch_custom_id.branch else False, + })], + } + + # Create invoice + invoice_id = Invoice.create(invoice_values) + + # Set computed fields for invoice lines + for line in invoice_id.invoice_line_ids: + line.account_id = line._get_computed_account() + taxes = line._get_computed_taxes() + if taxes and line.move_id.fiscal_position_id: + taxes = line.move_id.fiscal_position_id.map_tax(taxes, partner=line.partner_id) + line.tax_ids = taxes + line.product_uom_id = line._get_computed_uom() + + # Post the invoice + invoice_id.action_post() + + return invoice_id + \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/wizards/donation_extension_wizard.xml b/odex25_takaful/odex_takaful/wizards/donation_extension_wizard.xml new file mode 100644 index 000000000..94087a2e9 --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/donation_extension_wizard.xml @@ -0,0 +1,153 @@ + + + + + donation.extension.wizard.form + donation.extension.wizard + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
diff --git a/odex25_takaful/odex_takaful/wizards/orphan_replacement_wizard.py b/odex25_takaful/odex_takaful/wizards/orphan_replacement_wizard.py new file mode 100644 index 000000000..9dc7162d6 --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/orphan_replacement_wizard.py @@ -0,0 +1,356 @@ +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError, UserError +from odoo.osv import expression + + +class ReplacementLine(models.TransientModel): + _name = 'replacement.line' + _description = 'Replacement Line' + + wiz_id = fields.Many2one('replacement.wiz', string="Wizard") + members_domain_ids = fields.Many2many(comodel_name='family.member',relation='family_member_replacement_line_rel',column1='replacement_line_id', column2='family_member_id', compute='compute_domain_ids', store=True) + from_benefit_id = fields.Many2one('family.member', string="From Benefit") + to_benefit_id = fields.Many2one('family.member', string="To Benefit", domain="[('id', 'in',members_domain_ids)]") + from_benefit_ids = fields.Many2many('family.member', 'replacement_from_benefit_rel', 'line_id', 'benefit_id', + string="From Benefits (Group)") + to_benefit_ids = fields.Many2many('family.member', 'replacement_to_benefit_rel', 'line_id', 'benefit_id', + string="To Benefits (Group)", domain="[('id', 'in',members_domain_ids)]") + sponsorship_type = fields.Selection([('person', 'Individual'), ('group', 'Group')], string='Sponsorship Type') + + @api.onchange('wiz_id.gender', 'wiz_id.age_category_id', 'wiz_id.education_status', 'wiz_id.education_level_id', 'wiz_id.family_ids') + def compute_domain_ids(self): + for rec in self: + rec.members_domain_ids = [(6, 0, [])] + active_id = rec.env.context.get('active_id') + if active_id: + sponsorship_id = rec.env['takaful.sponsorship'].browse(active_id) + if sponsorship_id: + current_sponsorship_benefits = list(set( + sponsorship_id.donations_details_lines.mapped('benefit_id').ids + + sponsorship_id.donations_details_lines.mapped('benefit_ids').ids + + sponsorship_id.donations_details_lines_mechanism_ids.mapped('benefit_id').ids + + sponsorship_id.donations_details_lines_mechanism_ids.mapped('benefit_ids').ids + )) + + domain = [('benefit_id', 'in', rec.wiz_id.family_ids.ids), ('member_status', '=', 'benefit')] + + all_lines = rec.env['donations.details.lines'].sudo().search( + ['|', ('sponsorship_id', '!=', False), ('sponsorship_mechanism_id', '!=', False)]) + + running_sponsorships = all_lines.sudo().filtered( + lambda line: line.sponsorship_id.state in ('confirmed', 'wait_pay', 'under_refund', 'under_replacement', + 'replacement_done') or line.sponsorship_mechanism_id.state in ( + 'confirmed', 'wait_pay', 'under_refund', 'under_replacement', 'replacement_done') + ) + + benefit_ids = running_sponsorships.mapped('benefit_id').ids + running_sponsorships.mapped('benefit_ids').ids + + if rec.wiz_id.gender: + if rec.wiz_id.gender == 'male': + domain.append(('relationn.relation_type', 'in', ['son', 'other relation'])) + elif rec.wiz_id.gender == 'female': + domain.append(('relationn.relation_type', 'in', + ['daughter', 'mother', 'replacement_mother', 'other relation'])) + + if rec.wiz_id.age_category_id: + domain.append(('age', '<=', rec.wiz_id.age_category_id.max_age)) + domain.append(('age', '>=', rec.wiz_id.age_category_id.min_age)) + if rec.wiz_id.education_status: + domain.append(('education_status', '=', rec.wiz_id.education_status)) + if rec.wiz_id.education_level_id: + domain.append(('education_levels', '=', rec.wiz_id.education_level_id.id)) + if benefit_ids: + domain.append(('id', 'not in', benefit_ids)) + if current_sponsorship_benefits: + domain.append(('id', 'not in', current_sponsorship_benefits)) + + members = rec.env['family.member'].sudo().search(domain) + rec.members_domain_ids = [(6, 0, members.ids)] + + +class ReplacementWiz(models.TransientModel): + _name = 'replacement.wiz' + _description = "Replace Wizard" + + family_domain_ids = fields.Many2many('family.member', compute='_compute_family_domain_ids') + old_family_id = fields.Many2one('grant.benefit', string='Old Family',readonly=True) + new_family_id = fields.Many2one('grant.benefit', string='New Family',domain="[('id', 'in', family_domain_ids)]" ) + old_members_id = fields.Many2one('family.member',string="Old Benefit", readonly=True) + members_domain_ids = fields.Many2many('family.member', compute='_compute_members_domain_ids') + new_members_id = fields.Many2one('family.member', string="New Benefit", domain="[('id', 'in', members_domain_ids)]") + record_type = fields.Selection([('sponsorship', 'Sponsorship'),('donation', 'Donation')]) + sponsorship_id = fields.Many2one('donations.details.lines', string="Sponsorship") + family_ids = fields.Many2many('grant.benefit', 'benefit_replacement_rel', 'replacement_id', 'family_id', + string='Families') + members_ids = fields.Many2many('family.member', 'member_replacement_rel', 'replacement_id', 'member_id', + string="Family Members") + replacement_reason_id = fields.Many2one('replacement.reasons', string="Replacement Reason") + branch_id = fields.Many2one('branch.settings', string="Branch") + branch_ids = fields.Many2many('branch.settings', string="Branch") + gender = fields.Selection(selection=[('male', 'Male'), ('female', 'Female')], string="Gender") + family_category_ids = fields.Many2many('benefit.category', string="Family Category") + age_category_id = fields.Many2one('age.category', string='Age Category') + education_level_id = fields.Many2one("education.level", string='Education Level') + education_status = fields.Selection(string='Education Status', + selection=[('educated', 'educated'), ('illiterate', 'illiterate'), + ('under_study_age', 'Under Study Age')]) + replacement_line_ids = fields.One2many('replacement.line', 'wiz_id', string="Replacement Lines") + + @api.depends('old_family_id') + def _compute_family_domain_ids(self): + for rec in self: + domain = [] + if rec.record_type == 'donation': + domain = [ + '|', + ('state', '=', 'second_approve'), + '&', + ('state', 'in', ('waiting_approve', 'first_approve')), + ('action_type', '=', 'suspended'), + ('id', '!=',rec.old_family_id.id),] + family = self.env['grant.benefit'].sudo().search(domain) + + rec.family_domain_ids = [(6, 0, family.ids)] if family else False + + @api.depends('old_members_id') + def _compute_members_domain_ids(self): + for rec in self: + domain = [] + if rec.record_type == 'sponsorship': + domain = [ + '|', + ('state', '=', 'second_approve'), + '&', + ('state', 'in', ('waiting_approve', 'first_approve')), + ('action_type', '=', 'suspended'), + ('id', '!=',rec.old_members_id.id),] + + domain = expression.AND([domain, [ + ('member_status', '=', 'benefit'), + ('sponsor_related_id', '=', False), + ('general_restriction', '=', False) + ]]) + # if rec.old_members_id.relationn.relation_type in ['mother','replacement_mother']: + # domain = expression.AND([domain, [ + # ('relationn.relation_type', 'in', ['mother', 'replacement_mother']) + # ]]) + # elif rec.old_members_id.relationn.relation_type in ['son','daughter']: + # domain = expression.AND([domain, [ + # ('relationn.relation_type', 'in', ['son', 'daughter']) + # ]]) + if 1 <= rec.old_members_id.age <= 6: + domain = expression.AND([domain, [ + ('age', '>=',1) + ]]) + domain = expression.AND([domain, [ + ('age', '<=', 6) + ]]) + elif 7 <= rec.old_members_id.age <= 10: + domain = expression.AND([domain, [ + ('age', '>=',7) + ]]) + domain = expression.AND([domain, [ + ('age', '<=', 10) + ]]) + elif 11 <= rec.old_members_id.age <= 15: + domain = expression.AND([domain, [ + ('age', '>=',11) + ]]) + domain = expression.AND([domain, [ + ('age', '<=', 15) + ]]) + elif 16 <= rec.old_members_id.age <= 18: + domain = expression.AND([domain, [ + ('age', '>=',16) + ]]) + domain = expression.AND([domain, [ + ('age', '<=', 18) + ]]) + elif rec.old_members_id.age > 18: + domain = expression.AND([domain, [ + ('age', '>',18) + ]]) + + + members = self.env['family.member'].sudo().search(domain) + + rec.members_domain_ids = members if members else self.env['family.member'].sudo().browse() + + + + @api.onchange('branch_id', 'family_category_ids', 'replacement_line_ids.members_domain_ids') + def _onchange_filter_family_ids(self): + active_id = self.env.context.get('active_id') + if active_id: + sponsorship_id = self.env['takaful.sponsorship'].browse(active_id) + if sponsorship_id: + current_sponsorship_benefits = list(set( + sponsorship_id.donations_details_lines.mapped('benefit_id').ids + + sponsorship_id.donations_details_lines.mapped('benefit_ids').ids + + sponsorship_id.donations_details_lines_mechanism_ids.mapped('benefit_id').ids + + sponsorship_id.donations_details_lines_mechanism_ids.mapped('benefit_ids').ids + )) + + domain = ['|', ('state', '=', 'second_approve'), '&', ('state', '=', 'waiting_approve'),('action_type', '=', 'suspended')] + if self.branch_id: + domain.append(('branch_custom_id', '=', self.branch_id.id)) + if self.family_category_ids: + domain.append(('benefit_category_id', '=', self.family_category_ids.ids)) + + + # return family which have at least one member of these + member_domain = [('member_status', '=', 'benefit')] + + all_lines = self.env['donations.details.lines'].sudo().search( + ['|', ('sponsorship_id', '!=', False), ('sponsorship_mechanism_id', '!=', False)]) + + running_sponsorships = all_lines.sudo().filtered( + lambda line: line.sponsorship_id.state in ('confirmed', 'wait_pay', 'under_refund', 'under_replacement', + 'replacement_done') or line.sponsorship_mechanism_id.state in ( + 'confirmed', 'wait_pay', 'under_refund', 'under_replacement', 'replacement_done') + ) + + benefit_ids = running_sponsorships.mapped('benefit_id').ids + running_sponsorships.mapped('benefit_ids').ids + + if self.gender: + if self.gender == 'male': + member_domain.append(('relationn.relation_type', 'in', ['son', 'other relation'])) + elif self.gender == 'female': + member_domain.append(('relationn.relation_type', 'in', + ['daughter', 'mother', 'replacement_mother', 'other relation'])) + + if self.age_category_id: + member_domain.append(('age', '<=', self.age_category_id.max_age)) + member_domain.append(('age', '>=', self.age_category_id.min_age)) + if self.education_status: + member_domain.append(('education_status', '=', self.education_status)) + if self.education_level_id: + member_domain.append(('education_levels', '=', self.education_level_id.id)) + if benefit_ids: + member_domain.append(('id', 'not in', benefit_ids)) + if current_sponsorship_benefits: + member_domain.append(('id', 'not in', current_sponsorship_benefits)) + + members = self.env['family.member'].sudo().search(member_domain) + + if members: + domain.append(('member_ids.id', 'in', members.ids)) + + return {'domain': {'family_ids': domain}} + + @api.onchange('family_ids', 'branch_id') + def _onchange_family_ids(self): + if self.family_ids and not self.branch_id: + raise ValidationError( + _("Select Branch First !")) + if self.family_ids and self.branch_id: + for rec in self.family_ids: + if rec.branch_custom_id.id != self.branch_id.id: + raise ValidationError( + _("The selected Families Doesn't belong to Selected Branch .")) + + @api.onchange('gender', 'age_category_id', 'education_status', 'education_level_id', 'family_ids') + def onchange_filters(self): + for rec in self.replacement_line_ids: + rec.compute_domain_ids() + if rec.to_benefit_id and rec.to_benefit_id not in rec.members_domain_ids: + rec.to_benefit_id = False + + if rec.to_benefit_ids: + invalid_ids = rec.to_benefit_ids.filtered(lambda b: b not in rec.members_domain_ids) + if invalid_ids: + rec.to_benefit_ids = [(5, 0, 0)] + rec.compute_domain_ids() + + def replacement_benefit_action(self): + + self.ensure_one() + + if not self.sponsorship_id: + raise UserError(_("Please determine sponsorship.")) + + donation_line = self.sponsorship_id + old_benefit = new_benefit = False + + try: + if self.record_type == "donation": + donation_line.sudo().write({ + 'family_id': self.new_family_id.id + }) + old_benefit = self.old_family_id.name + new_benefit = self.new_family_id.name + + elif self.record_type == "sponsorship": + state = donation_line.state + if donation_line.state == 'replace': + state = 'active' + + donation_line.sudo().write({ + 'state': state, + 'benefit_id': self.new_members_id.id, + 'benefit_ids': [(6, 0, [self.new_members_id.id])] + }) + self.old_members_id.sudo().write({ + 'sponsor_related_id': False, + 'kafala_status': 'have_not_kafala' + }) + self.new_members_id.sudo().write({ + 'sponsor_related_id': donation_line.sponsor_id.id, + 'kafala_status': 'have_kafala' + }) + + old_benefit = self.old_members_id.name + new_benefit = self.new_members_id.name + + else: + raise UserError(_("type of record not determine.")) + + self.env['donation.replacement.log'].create({ + 'user_id': self.env.user.id, + 'donation_detail_id': donation_line.id, + 'old_benefit': old_benefit or '', + 'new_benefit': new_benefit or '', + 'record_type': donation_line.record_type, + 'replacement_reason_id': self.replacement_reason_id.id, + }) + + except Exception as e: + raise UserError(_("Error in replacement:\n%s") % str(e)) + + + # def replacement_action(self): + # active_id = self.env.context.get('active_id') + # if active_id: + # sponsorship_id = self.env['takaful.sponsorship'].browse(active_id) + # if sponsorship_id: + # sponsorship_id.sudo().write({'state': 'under_replacement'}) + # replacement = self.env['replacement.process'].create({ + # 'user_id': self.env.user.id, + # 'sponsorship_id': sponsorship_id.id, + # 'branch_id': self.branch_id.id, + # 'sponsor_donor_type': sponsorship_id.sponsor_donor_type or sponsorship_id.sponsor_or_donor_type, + # 'registered_type': sponsorship_id.registered_type, + # 'record_type': sponsorship_id.record_type, + # 'sponsor_id': sponsorship_id.sponsor_id.id, + # 'replacement_reason_id': self.replacement_reason_id.id, + # + # }) + # if self.replacement_line_ids: + # for line in self.replacement_line_ids: + # if len(line.from_benefit_ids) != len(line.to_benefit_ids): + # raise ValidationError( + # _("You must select the same number of beneficiaries in the from benefits group (%s) to the to benefits group (%s)" % ( + # ", ".join(line.from_benefit_ids.mapped('name')), + # ", ".join(line.to_benefit_ids.mapped('name'))))) + # self.env['replacement.process.line'].create({ + # 'from_benefit_id': line.from_benefit_id.id, + # 'to_benefit_id': line.to_benefit_id.id, + # 'from_benefit_ids': [(6, 0, line.from_benefit_ids.ids)], + # 'to_benefit_ids': [(6, 0, line.to_benefit_ids.ids)], + # 'sponsorship_type': line.sponsorship_type, + # 'members_domain_ids': [(6, 0, line.members_domain_ids.ids)], + # 'process_id': replacement.id, + # + # }) + # + # sponsorship_id.replacement_id = replacement.id diff --git a/odex25_takaful/odex_takaful/wizards/orphan_replacement_wizard.xml b/odex25_takaful/odex_takaful/wizards/orphan_replacement_wizard.xml new file mode 100644 index 000000000..0d165b631 --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/orphan_replacement_wizard.xml @@ -0,0 +1,84 @@ + + + + replacement.wiz.form + replacement.wiz + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ + + + replacement.wiz.tree + replacement.wiz + + + + + + + + + + + + Replacement Wizard + replacement.wiz + form + new + + +
diff --git a/odex25_takaful/odex_takaful/wizards/refund_payment_wizard.py b/odex25_takaful/odex_takaful/wizards/refund_payment_wizard.py new file mode 100644 index 000000000..c222a8e05 --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/refund_payment_wizard.py @@ -0,0 +1,220 @@ +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError, UserError + + +class RefundWiz(models.TransientModel): + _name = 'refund.wiz' + _description = "Refund Wizard" + + def _default_sponsorship(self): + sponsorship_id = self.env['sponsorship.scheduling.line'].browse(int(self._context.get('active_id'))).sponsorship_id.id + return sponsorship_id + + def _default_journal_id(self): + params = self.env['res.config.settings'].get_values() + journal_id = params['kafala_journal_id'] + return journal_id + + def _default_sponsorship_scheduling_line(self): + sponsorship_scheduling_line = self.env['sponsorship.scheduling.line'].browse(int(self._context.get('active_id'))).id + return sponsorship_scheduling_line + + def _default_payment_details_line(self): + payment_details_line = self.env['payment.details.lines'].search(['|',('sponsorship_scheduling_line_id', '=', self._context.get('active_id')),('sponsorship_scheduling_line_ids', 'in', self._context.get('active_id'))]).id + return payment_details_line + + def _default_refund_amount(self): + sponsorship_scheduling_line_id = self.env['sponsorship.scheduling.line'].browse(int(self._context.get('active_id'))) + refund_amount = sponsorship_scheduling_line_id.amount - sponsorship_scheduling_line_id.refunded_amount + return refund_amount + + def _default_payment_method(self): + sponsorship_scheduling_line = self.env['sponsorship.scheduling.line'].browse(int(self._context.get('active_id'))).id + payment_method = self.env['payment.details.lines'].search([('sponsorship_scheduling_line_id', '=', sponsorship_scheduling_line)]).payment_method + return payment_method + + refund_date = fields.Datetime(string='Refund Date', default=fields.Datetime.now) + sponsorship_id = fields.Many2one( + 'takaful.sponsorship', + string='Sponsorship', + default=_default_sponsorship + ) + sponsorship_scheduling_line = fields.Many2one( + 'sponsorship.scheduling.line', + string='Schedule Details Lines', + default=_default_sponsorship_scheduling_line + ) + payment_details_line = fields.Many2one( + 'payment.details.lines', + string='Payment Details Lines', + default=_default_payment_details_line + ) + + sponsor_id = fields.Many2one( + 'res.partner', + string='Sponsor', + related='sponsorship_id.sponsor_id' + ) + refund_amount = fields.Float(string='Refund Amount', default=_default_refund_amount) + refund_reason = fields.Many2one( + 'refund.reasons', + string='Refund Reason', + required=True + ) + payment_method_id = fields.Many2one('takaful.payment.method', string="Payment Method", required=True, default="_default_payment_method") + + payment_method = fields.Selection( + selection=[ + ("cash", "Cash"), + ("card", "Card"), + ("check", "Check"), + ("credit_card", "Credit Card"), + ("bank_transfer", "Bank Transfer"), + ("direct_debit", "Direct Debit") + ] + , related="payment_method_id.payment_method" + ) + journal_id = fields.Many2one( + 'account.journal', + string="Refund Account Journal", + default=_default_journal_id + ) + + attachment_ids = fields.Many2many('ir.attachment', 'rel_refund_wiz_attachment', 'refund_id','attachment_id', string='Attachments') + + + def action_refund(self): + if not self.attachment_ids: + raise ValidationError(_("Refund Attachment is required.")) + active_model = self.env.context.get('active_model', False) + if active_model == 'sponsorship.scheduling.line': + self.action_refund_line() + elif active_model == 'takaful.sponsorship': + self.action_refund_all() + + def action_refund_line(self): + invoice_lines = [] + refund_lines_data = [] + refund_lines_data.append((0, 0, { + 'refund_date': self.refund_date, + 'refund_amount': self.refund_amount, + 'refund_reason': self.refund_reason.id, + 'payment_method_id': self.payment_method_id.id, + 'journal_id': self.journal_id.id, + 'attachment_ids': [(6, 0, self.attachment_ids.ids)], + 'sponsor_id': self.sponsor_id.id, + 'sponsorship_scheduling_line': self.sponsorship_scheduling_line.id, + 'payment_details_line': self.payment_details_line.id, + + })) + self.sponsorship_id.write({'refund_details_lines_ids': refund_lines_data}) + if self.payment_method_id.payment_method in ('cash', 'card','check','credit_card'): + self.sponsorship_id.state = 'approve_refund' + + elif self.payment_method_id.payment_method in ('bank_transfer', 'direct_debit'): + unpaid_invoice_exists = self.env['account.move'].search([('takaful_sponsorship_id','=',self.sponsorship_id.id),('move_type','=','out_refund'),('payment_state','!=','paid')]) + if unpaid_invoice_exists: + raise ValidationError(_("You have Refund invoice not paid")) + + # Check if product exists from donation item + product_template = self.sponsorship_scheduling_line.donation_detail_linked_id.product_template_id + product = self.sponsorship_scheduling_line.donation_detail_linked_id.product_id # Directly linked product + + if not product: + # If no product_id exists in product_template, check if a product with the same name exists + product = self.env['product.product'].search([('name', '=', product_template.name)], limit=1) + + if not product: + # Create new product if it doesn't exist + product = self.env['product.product'].create({ + 'name': product_template.name, + 'type': 'service' # Setting type to service + }) + + + invoice_lines.append((0, 0, { + 'product_id': product.id, + 'account_id': self.sponsorship_scheduling_line.donation_detail_linked_id.product_template_id.property_account_income_id.id, + # The same account for all lines + 'quantity': 1, # Qty is 1 + # The same analytic account + 'takaful_sponsorship_id': self.sponsorship_id.id, + 'price_unit': self.refund_amount, + 'analytic_account_id': self.sponsorship_id.branch_custom_id.branch.analytic_account_id.id + })) + + Partner = self.env['res.partner'].sudo() + partner_id = self.sponsor_id or Partner.search([('name', '=', 'Cash Customer')], limit=1) + if not partner_id: + partner_id = Partner.create({ + 'company_type': 'person', + 'name': 'Cash Customer' + }) + invoice = self.env['account.move'].create({ + 'move_type': 'out_refund', # Refund Invoice + 'partner_id': partner_id.id, + 'invoice_date': fields.Date.today(), + 'invoice_line_ids': invoice_lines, + 'takaful_sponsorship_id': self.sponsorship_id.id, + 'is_refund_sponsorship': True, + 'sponsorship_scheduling_line': self.sponsorship_scheduling_line.id, + 'payment_details_line': self.payment_details_line.id, + }) + invoice.action_post() + self.sponsorship_id.write({'state': 'under_refund'}) + return invoice + + def action_refund_all(self): + active_id = self.env.context.get('active_id') + if active_id: + sponsorship_id = self.env['takaful.sponsorship'].browse(active_id) + refund_lines_data = [] + for rec in sponsorship_id.payment_details_lines: + refund_lines_data.append((0, 0, { + 'refund_date': self.refund_date, + 'refund_amount': self.refund_amount, + 'refund_reason': self.refund_reason.id, + 'payment_method_id': self.payment_method_id.id, + 'journal_id': self.journal_id.id, + 'attachment_ids': [(6, 0, self.attachment_ids.ids)], + 'sponsor_id': self.sponsor_id.id, + 'sponsorship_scheduling_line_ids': [(6, 0, rec.sponsorship_scheduling_line_ids.ids)], + 'payment_details_line': rec.id, + + })) + + sponsorship_id.write({'refund_details_lines_ids': refund_lines_data}) + if self.payment_method_id.payment_method in ('cash', 'card','check','credit_card'): + sponsorship_id.write({'state': 'approve_refund'}) + + elif self.payment_method_id.payment_method in ('bank_transfer', 'direct_debit'): + sponsorship_id.create_refund_invoice() + sponsorship_id.write({'state': 'under_refund'}) + + + + def action_cancel(self): + pass + + + @api.constrains('refund_amount') + def _check_refund_amount(self): + for rec in self: + active_id = self.env.context.get('active_id') + if active_id: + sponsorship_id = self.env['takaful.sponsorship'].browse(active_id) + active_model = self.env.context.get('active_model', False) + if active_model == 'sponsorship.scheduling.line': + remaining_amount = self.sponsorship_scheduling_line.amount - self.sponsorship_scheduling_line.refunded_amount + elif active_model == 'takaful.sponsorship': + amount = sum(sponsorship_id.sponsorship_scheduling_line_ids.mapped( + 'amount')) if sponsorship_id.sponsorship_scheduling_line_ids else 0.0 + refunded_amount = sum(sponsorship_id.sponsorship_scheduling_line_ids.mapped( + 'refunded_amount')) if sponsorship_id.sponsorship_scheduling_line_ids else 0.0 + + remaining_amount = amount - refunded_amount + if rec.refund_amount > remaining_amount: + raise UserError( + _("Refund Amount should be less or equal %s") % remaining_amount + ) + diff --git a/odex25_takaful/odex_takaful/wizards/refund_payment_wizard.xml b/odex25_takaful/odex_takaful/wizards/refund_payment_wizard.xml new file mode 100644 index 000000000..25489a734 --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/refund_payment_wizard.xml @@ -0,0 +1,36 @@ + + + + + refund.wiz.form + refund.wiz + +
+ + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+
+
diff --git a/odex25_takaful/odex_takaful/wizards/replace_sponsor_wizard.py b/odex25_takaful/odex_takaful/wizards/replace_sponsor_wizard.py new file mode 100644 index 000000000..28fe515c1 --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/replace_sponsor_wizard.py @@ -0,0 +1,140 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError +import logging + +_logger = logging.getLogger(__name__) + +class ReplaceSponsorWizard(models.TransientModel): + _name = 'replace.sponsor.wizard' + _description = "Replace Sponsor Wizard" + + donation_detail_id = fields.Many2one( + 'donations.details.lines', + string='Donation Detail', + readonly=True + ) + + old_sponsor_id = fields.Many2one( + 'res.partner', + string='Current Sponsor', + readonly=True, + compute='_compute_old_sponsor_id' + ) + + new_sponsor_id = fields.Many2one( + 'res.partner', + domain="[('id', '!=', old_sponsor_id)]", + string='New Sponsor', + required=True, + ) + + reason = fields.Text( + string='Reason for Replacement', + required=True, + ) + + @api.depends('donation_detail_id') + def _compute_old_sponsor_id(self): + for rec in self: + if rec.donation_detail_id: + rec.old_sponsor_id = rec.donation_detail_id.sponsor_id + else: + rec.old_sponsor_id = False + + @api.model + def default_get(self, fields_list): + res = super(ReplaceSponsorWizard, self).default_get(fields_list) + + # Get the active donation detail line from context + active_id = self.env.context.get('active_id') + active_model = self.env.context.get('active_model') + + if active_model == 'donations.details.lines' and active_id: + donation_line = self.env['donations.details.lines'].browse(active_id) + res['donation_detail_id'] = donation_line.id + + return res + + def action_replace_sponsor(self): + """ + Replace the sponsor on the donation detail line and post a message to the chatter + """ + self.ensure_one() + + if not self.donation_detail_id: + raise ValidationError(_("No donation detail line found.")) + + if not self.new_sponsor_id: + raise ValidationError(_("Please select a new sponsor.")) + + if not self.reason: + raise ValidationError(_("Please provide a reason for the replacement.")) + + donation_line = self.donation_detail_id + old_sponsor_name = donation_line.sponsor_id.name if donation_line.sponsor_id else _('None') + new_sponsor_name = self.new_sponsor_id.name + + # Get the sponsorship record (could be sponsorship_id or sponsorship_mechanism_id) + sponsorship = donation_line.sponsorship_id or donation_line.sponsorship_mechanism_id + + if not sponsorship: + raise ValidationError(_("No sponsorship found for this donation detail line.")) + + # Update the sponsor on the sponsorship + donation_line.write({ + 'sponsor_id': self.new_sponsor_id.id + }) + (donation_line.benefit_id | donation_line.benefit_ids).sudo().write({'sponsor_related_id': self.new_sponsor_id.id}) + + # Post message to the donation detail line chatter + message_body = _( + "Sponsor Replacement
" + "Previous Sponsor: %s
" + "New Sponsor: %s
" + "Reason: %s" + ) % (old_sponsor_name, new_sponsor_name, self.reason) + + donation_line.message_post( + body=message_body, + subject=_("Sponsor Replaced"), + message_type='notification', + ) + + # Also post to the sponsorship chatter + message_body += _("
Line Number: %s") % donation_line.sequence_no + sponsorship.message_post( + body=message_body, + subject=_("Sponsor Replaced"), + message_type='notification', + ) + + _logger.info( + "Sponsor replaced on donation line %s from %s to %s. Reason: %s", + donation_line.sequence_no, + old_sponsor_name, + new_sponsor_name, + self.reason + ) + + return { + 'type': 'ir.actions.client', + 'tag': 'display_notification', + 'params': { + 'title': _('Success'), + 'message': _('Sponsor has been successfully replaced from %s to %s') % ( + old_sponsor_name, + new_sponsor_name + ), + 'type': 'success', + 'sticky': False, + 'next': {'type': 'ir.actions.act_window_close'} + } + } + + def action_cancel(self): + """ + Cancel the wizard + """ + return {'type': 'ir.actions.act_window_close'} + diff --git a/odex25_takaful/odex_takaful/wizards/replace_sponsor_wizard.xml b/odex25_takaful/odex_takaful/wizards/replace_sponsor_wizard.xml new file mode 100644 index 000000000..a47a3619a --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/replace_sponsor_wizard.xml @@ -0,0 +1,30 @@ + + + + + replace.sponsor.wizard.form + replace.sponsor.wizard + +
+ + + + + + + + + + + + +
+
+
+
+
+
+
diff --git a/odex25_takaful/odex_takaful/wizards/takaful_reports_wizards.py b/odex25_takaful/odex_takaful/wizards/takaful_reports_wizards.py new file mode 100644 index 000000000..8ceeea72b --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/takaful_reports_wizards.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +from odoo import api, models, fields, _ + + +class MakfuleenReprtWizard(models.TransientModel): + _name = 'takaful.wizard.report.makfuleen' + _description = "Makfuleen Report For Selected Sponsor(s)" + + sponsor_id = fields.Many2one( + 'res.partner', + string='Sponsor Name' + ) + + # @api.multi + def create_makfuleen_wizard_report(self): + """ Method to print Makfuleen report """ + context = dict(self.env.context or {}) + context['sponsor_id'] = self.sponsor_id.id + context['name'] = self.sponsor_id.name + return self.env.ref('odex_takaful.makfuleen_report_pdf_act').report_action(self, data=context) + + +class KafalatPaymentReprtWizard(models.TransientModel): + _name = 'takaful.wizard.report.kafalat.payment' + _description = "Kafalat Payment Report" + + sponsor_id = fields.Many2one( + 'res.partner', + string='Sponsor Name' + ) + + # @api.multi + def create_kafalat_payment_wizard_report(self): + """ Method to print Kafalat Payment report """ + context = dict(self.env.context or {}) + context['sponsor_id'] = self.sponsor_id.id + context['name'] = self.sponsor_id.name + + return self.env.ref('odex_takaful.kafalat_payment_report_pdf_act').report_action(self, data=context) + + +class KafalatCancelReprtWizard(models.TransientModel): + _name = 'takaful.wizard.report.kafalat.cancel' + _description = "Kafalat Cancel Report" + + from_date = fields.Date(string="From Date") + to_date = fields.Date(string="To Date") + + # @api.multi + def create_kafalat_cancel_wizard_report(self): + """ Method to print Kafalat Cancel report """ + context = dict(self.env.context or {}) + context['start_date'] = self.from_date + context['end_date'] = self.to_date + + return self.env.ref('odex_takaful.kafalat_cancel_report_pdf_act').report_action(self, data=context) diff --git a/odex25_takaful/odex_takaful/wizards/takaful_reports_wizards.xml b/odex25_takaful/odex_takaful/wizards/takaful_reports_wizards.xml new file mode 100644 index 000000000..946058cc1 --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/takaful_reports_wizards.xml @@ -0,0 +1,83 @@ + + + + Makfuleen Report Wizard + takaful.wizard.report.makfuleen + +
+ + + + +
+
+
+
+
+ + + Makfuleen Report Wizard Window + ir.actions.act_window + takaful.wizard.report.makfuleen + form + + new + + + + + Kafalat Payment Report Wizard + takaful.wizard.report.kafalat.payment + +
+ + + + +
+
+
+
+
+ + + Kafalat Payment Report Wizard Window + ir.actions.act_window + takaful.wizard.report.kafalat.payment + form + + new + + + + + Canceled Kafalat Report Wizard + takaful.wizard.report.kafalat.cancel + +
+ + + + + +
+
+
+
+
+ + + Canceled Kafalat Report Wizard Window + ir.actions.act_window + takaful.wizard.report.kafalat.cancel + form + + new + +
diff --git a/odex25_takaful/odex_takaful/wizards/transfer_deduction_wizard.py b/odex25_takaful/odex_takaful/wizards/transfer_deduction_wizard.py new file mode 100644 index 000000000..b0dd99a69 --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/transfer_deduction_wizard.py @@ -0,0 +1,349 @@ +import base64 +import io +from odoo import models, fields, api, _ +from odoo.exceptions import UserError + +try: + import xlsxwriter +except ImportError: + xlsxwriter = None + + +class TransferDeductionWizard(models.TransientModel): + _name = 'transfer.deduction.wizard' + _description = 'Transfer and Deduction Report Wizard' + + start_date = fields.Date(string="Start Date") + end_date = fields.Date(string="End Date") + payment_method_id = fields.Many2one( + 'takaful.payment.method', + string="Payment Method", + domain="[('payment_method', 'in', ['bank', 'direct_debit'])]" + ) + sponsor_ids = fields.Many2many( + 'res.partner', + string="Sponsors" + ) + branch_ids = fields.Many2many( + 'branch.settings', + string="Branches", + compute='_compute_branch_ids', + readonly=False, + store=True + ) + benefit_member_ids = fields.Many2many( + 'family.member', + string="Benefit Members" + ) + + @api.depends('sponsor_ids', 'sponsor_ids.branch_custom_id') + def _compute_branch_ids(self): + for rec in self: + if rec.sponsor_ids: + branch_ids_to_set = rec.sponsor_ids.filtered(lambda s: s.branch_custom_id).mapped('branch_custom_id.id') + rec.branch_ids = [(6, 0, branch_ids_to_set)] + else: + if not rec.env.context.get('keep_branches'): + rec.branch_ids = [(5, 0, 0)] + + def _get_data_domain(self): + domain = [] + if self.start_date: + domain.append(('sponsorship_id.sponsorship_creation_date', '>=', self.start_date)) + if self.end_date: + domain.append(('sponsorship_id.sponsorship_creation_date', '<=', self.end_date)) + + if self.sponsor_ids: + domain.append(('sponsorship_id.sponsor_id', 'in', self.sponsor_ids.ids)) + elif self.branch_ids: + domain.append(('sponsorship_id.branch_custom_id', 'in', self.branch_ids.ids)) + + return domain + + + def _get_sponsorship_scheduling_lines_data(self): + self.ensure_one() + + pdl_domain = self._get_data_domain() + initial_pdls = self.env['payment.details.lines'].sudo().search(pdl_domain) + if not self.env.user.has_group("odex_takaful.sponsorship_system_manager_group"): + initial_pdls = initial_pdls.filtered(lambda r: self.env.user.id in r.sponsorship_id.sponsor_id.responsible_user_ids.ids) + + if not initial_pdls: + return [] + + sponsorship_lines_from_pdls = self.env['sponsorship.scheduling.line'] + if initial_pdls.filtered(lambda r: hasattr(r, 'sponsorship_scheduling_line_id')): + sponsorship_lines_from_pdls |= initial_pdls.mapped('sponsorship_scheduling_line_id') + if initial_pdls.filtered(lambda r: hasattr(r, 'sponsorship_scheduling_line_ids')): + for pdl_with_multiple_ssl in initial_pdls.filtered(lambda r: hasattr(r, 'sponsorship_scheduling_line_ids') and r.sponsorship_scheduling_line_ids): + sponsorship_lines_from_pdls |= pdl_with_multiple_ssl.sponsorship_scheduling_line_ids + + # if sponsorship_lines_from_pdls: + # sponsorship_lines_from_pdls.mapped('beneficiary_id') + # sponsorship_ids = sponsorship_lines_from_pdls.mapped('sponsorship_id').sudo() + # if sponsorship_ids: + # sponsorship_ids.mapped('sponsor_id.name') + # sponsorship_ids.mapped('sponsor_id.mobile') + # sponsorship_ids.mapped('sponsor_id.branch_custom_id') + # sponsorship_ids.mapped('create_uid') + # sponsorship_ids.mapped('branch_custom_id') + + # donation_details_ids = sponsorship_lines_from_pdls.mapped('donation_detail_linked_id') + # if donation_details_ids: + # donation_details_ids.mapped('payment_method_id') + + # if initial_pdls: + # initial_pdls.mapped('bank_id') + # initial_pdls.mapped('charity_bank_id') + + processed_lines_data = [] + + for pdl in initial_pdls: + current_ssls_for_this_pdl = self.env['sponsorship.scheduling.line'] + if hasattr(pdl, 'sponsorship_scheduling_line_id') and pdl.sponsorship_scheduling_line_id: + current_ssls_for_this_pdl |= pdl.sponsorship_scheduling_line_id + if hasattr(pdl, 'sponsorship_scheduling_line_ids') and pdl.sponsorship_scheduling_line_ids: + current_ssls_for_this_pdl |= pdl.sponsorship_scheduling_line_ids + + if not current_ssls_for_this_pdl: + continue + + for ssl_record in current_ssls_for_this_pdl: + payment_method_match = True + if self.payment_method_id: + donation_detail = ssl_record.donation_detail_linked_id + if donation_detail and hasattr(donation_detail, 'payment_method_id') and donation_detail.payment_method_id: + payment_method_match = (donation_detail.payment_method_id == self.payment_method_id) + else: + payment_method_match = False + + benefit_member_match = True + if self.benefit_member_ids: + if ssl_record.beneficiary_id: + benefit_member_match = (ssl_record.beneficiary_id in self.benefit_member_ids) + else: + benefit_member_match = False + + if payment_method_match and benefit_member_match: + sponsor = ssl_record.sponsorship_id.sponsor_id + sponsorship = ssl_record.sponsorship_id + donation_detail = ssl_record.donation_detail_linked_id + + data_item = { + 'scheduling_line_id': ssl_record.id, + 'pdl_id': pdl.id, + + 'sponsor_name': sponsor.name if sponsor else '', + 'sponsor_mobile': sponsor.mobile if sponsor else '', + 'sponsorship_create_uid_name': sponsorship.create_uid.name if sponsorship and sponsorship.create_uid else '', + 'sponsorship_create_uid_branch_name': sponsor.create_uid.employee_id.branch_name.name if sponsor and sponsor.create_uid.employee_id.branch_name else '', + 'sponsorship_branch_name': sponsorship.branch_custom_id.name if sponsorship and sponsorship.branch_custom_id else '', + 'beneficiary_name': ssl_record.beneficiary_id.name if ssl_record.beneficiary_id else '', + 'sponsorship_create_date': sponsorship.sponsorship_creation_date if sponsorship else None, + 'sponsorship_sequence_no': sponsorship.code if sponsorship else '', + + 'bank_name': pdl.bank_id.bank_name if pdl.bank_id else '', + 'charity_bank_name': pdl.charity_bank_id.name if pdl.charity_bank_id else '', + 'sponsor_account_number': f'SA{pdl.sponsor_account_number}' if pdl.sponsor_account_number else '', + + 'donation_name': donation_detail.product_template_id.name if donation_detail and donation_detail.product_template_id else '', + 'payment_method_name': donation_detail.payment_method_id.name if donation_detail and donation_detail.payment_method_id else '', + 'donation_type': donation_detail.donation_type if donation_detail and hasattr(donation_detail, 'donation_type') else '', + 'direct_debit_start_date': pdl.direct_debit_start_date, + 'direct_debit_end_date': pdl.direct_debit_end_date, + 'donation_date': pdl.donation_date, + 'amount': donation_detail.donation_amount if donation_detail else 0.0, + 'total_amount': sponsorship.total_sponsorship_amount + } + if donation_detail and hasattr(donation_detail, 'donation_type') and donation_detail.donation_type: + field_definition = donation_detail._fields.get('donation_type') + if field_definition and isinstance(field_definition, fields.Selection): + selection_options = field_definition._description_selection(donation_detail.env) + translated_selection_dict = dict(selection_options) + data_item['donation_type'] = translated_selection_dict.get(donation_detail.donation_type, str(donation_detail.donation_type)) + else: + data_item['donation_type'] = str(donation_detail.donation_type) if donation_detail.donation_type else '' + elif donation_detail and hasattr(donation_detail, 'donation_type') and not donation_detail.donation_type: + data_item['donation_type'] = '' + else: + data_item['donation_type'] = '' + + processed_lines_data.append(data_item) + + final_data = [] + seen_ssl_ids = set() + for item in processed_lines_data: + if item['scheduling_line_id'] not in seen_ssl_ids: + final_data.append(item) + seen_ssl_ids.add(item['scheduling_line_id']) + return final_data + + def _get_report_context_data(self): + self.ensure_one() + sponsorship_lines_details = self._get_sponsorship_scheduling_lines_data() + + criteria_data = { + 'start_date': self.start_date.strftime('%Y-%m-%d') if self.start_date else _('N/A'), + 'end_date': self.end_date.strftime('%Y-%m-%d') if self.end_date else _('N/A'), + 'payment_method_name': self.payment_method_id.name if self.payment_method_id else _('All'), + 'sponsor_names': ', '.join(self.sponsor_ids.mapped('name')) if self.sponsor_ids else _('All'), + 'branch_names': ', '.join(self.branch_ids.mapped('name')) if self.branch_ids else _('All'), + 'benefit_member_names': ', '.join(self.benefit_member_ids.mapped('name')) if self.benefit_member_ids else _('All') + } + + return { + 'report_title': _('Transfer and Deduction Report'), + 'sponsorship_lines_details': sponsorship_lines_details, + 'criteria': criteria_data, + } + + def action_print_pdf(self): + self.ensure_one() + report_data_for_template = self._get_report_context_data() + action_ref_str = 'odex_takaful.action_report_transfer_deduction_pdf' + try: + report_action = self.env.ref(action_ref_str) + except ValueError: + raise UserError(_("Report action '%s' not found.", action_ref_str)) + if not report_action or report_action.report_type != 'qweb-pdf': + raise UserError(_("Report action '%s' is not a valid QWeb-PDF report.", action_ref_str)) + return report_action.report_action(self, data={ 'data': report_data_for_template }) + + def action_print_excel(self): + self.ensure_one() + if not xlsxwriter: + raise UserError(_("The library 'xlsxwriter' is not installed. Please install it: pip install xlsxwriter")) + + report_context = self._get_report_context_data() + sponsorship_lines_details = report_context.get('sponsorship_lines_details', []) + criteria = report_context.get('criteria', {}) + + output = io.BytesIO() + workbook = xlsxwriter.Workbook(output, {'in_memory': True, 'remove_timezone': True}) # Added remove_timezone + worksheet = workbook.add_worksheet(_("Report Data")) + + # Formats + title_format = workbook.add_format({'bold': True, 'font_size': 14, 'align': 'center', 'valign': 'vcenter'}) + header_format = workbook.add_format({'bold': True, 'bg_color': '#D3D3D3', 'border': 1, 'align': 'center', 'valign': 'vcenter', 'text_wrap': True}) + cell_format = workbook.add_format({'border': 1, 'valign': 'top'}) + date_cell_format = workbook.add_format({'border': 1, 'valign': 'top', 'num_format': 'yyyy-mm-dd'}) + amount_cell_format = workbook.add_format({'border': 1, 'valign': 'top', 'num_format': '#,##0.00'}) # Standard currency format + section_header_format = workbook.add_format({'bold': True, 'font_size': 12, 'bg_color': '#E0E0E0', 'border': 1, 'align': 'center'}) + + worksheet.set_landscape() + worksheet.set_paper(9) # A4 + + current_row = 0 + worksheet.merge_range(current_row, 0, current_row, 16, report_context.get('report_title', _('Report')), title_format) # Increased colspan + worksheet.set_row(current_row, 30) + current_row += 2 # Skip a row + + # --- Criteria Section --- (Assuming 4 criteria per row, 2 columns for label, 2 for value) + worksheet.merge_range(current_row, 0, current_row, 7, _("Selected Criteria"), section_header_format) + current_row += 1 + + criteria_col_widths = [20, 30, 20, 30] # Label, Value, Label, Value + for i, width in enumerate(criteria_col_widths): + worksheet.set_column(i, i, width) + + criteria_pairs = [ + (_("Start Date"), criteria.get('start_date')), + (_("Payment Method"), criteria.get('payment_method_name')), + (_("End Date"), criteria.get('end_date')), + (_("Branches"), criteria.get('branch_names')), + (_("Sponsors"), criteria.get('sponsor_names')), + (_("Benefit Members"), criteria.get('benefit_member_names')), + ] + + pair_idx = 0 + while pair_idx < len(criteria_pairs): + # First pair in the row + worksheet.write(current_row, 0, criteria_pairs[pair_idx][0], header_format) + worksheet.write(current_row, 1, criteria_pairs[pair_idx][1], cell_format) + if pair_idx + 1 < len(criteria_pairs): + # Second pair in the row + worksheet.write(current_row, 2, criteria_pairs[pair_idx+1][0], header_format) + worksheet.write(current_row, 3, criteria_pairs[pair_idx+1][1], cell_format) + current_row += 1 + pair_idx += 2 + current_row += 1 + + + # --- Data Section --- + num_data_columns = 17 # Number of headers below + worksheet.merge_range(current_row, 0, current_row, num_data_columns -1, _("Sponsorship Details"), section_header_format) + current_row += 1 + + data_headers = [ + _("Sponsor"), _("Sponsor Mobile"), _("Sponsorship Creator"), _("Sponsor Branch"), + _("Sponsorship Branch"), _("Beneficiary"), _("Sponsorship Creation Date"), + _("Sponsorship Number"), _("Sponsor Bank"), _("Charity Bank"), + _("Sponsor Account Number"), _("Payment Method"), _("Donation Type"), + _("Direct Debit Start"), _("Direct Debit End"), _("Donation Date"), _("Amount") + ] + # Approximate column widths (adjust as needed for best fit) + col_widths_data = [ + 20, 15, 20, 15, # Sponsor, Mobile, Creator, Sponsor Branch + 15, 25, 15, # Sponsorship Branch, Beneficiary, Sponsorship Create Date + 15, 20, 20, # Sponsorship No, Sponsor Bank, Charity Bank + 20, 15, 15, # Sponsor Acc No, Payment Method, Donation Type + 15, 15, 15, 12 # DD Start, DD End, Donation Date, Amount + ] + + for i, width in enumerate(col_widths_data): + worksheet.set_column(i, i, width) + + for col, header_text in enumerate(data_headers): + worksheet.write(current_row, col, header_text, header_format) + current_row += 1 + + if sponsorship_lines_details: + for item_data in sponsorship_lines_details: + col = 0 + worksheet.write(current_row, col, item_data.get('sponsor_name'), cell_format); col += 1 + worksheet.write(current_row, col, item_data.get('sponsor_mobile'), cell_format); col += 1 + worksheet.write(current_row, col, item_data.get('sponsorship_create_uid_name'), cell_format); col += 1 + worksheet.write(current_row, col, item_data.get('sponsor_branch_name'), cell_format); col += 1 + worksheet.write(current_row, col, item_data.get('sponsorship_branch_name'), cell_format); col += 1 + worksheet.write(current_row, col, item_data.get('beneficiary_name'), cell_format); col += 1 + worksheet.write(current_row, col, item_data.get('sponsorship_create_date'), date_cell_format if item_data.get('sponsorship_create_date') else cell_format); col += 1 + worksheet.write(current_row, col, item_data.get('sponsorship_sequence_no'), cell_format); col += 1 + worksheet.write(current_row, col, item_data.get('bank_name'), cell_format); col += 1 + worksheet.write(current_row, col, item_data.get('charity_bank_name'), cell_format); col += 1 + worksheet.write(current_row, col, item_data.get('sponsor_account_number'), cell_format); col += 1 + worksheet.write(current_row, col, item_data.get('payment_method_name'), cell_format); col += 1 + worksheet.write(current_row, col, item_data.get('donation_type'), cell_format); col += 1 + worksheet.write(current_row, col, item_data.get('direct_debit_start_date'), date_cell_format if item_data.get('direct_debit_start_date') else cell_format); col += 1 + worksheet.write(current_row, col, item_data.get('direct_debit_end_date'), date_cell_format if item_data.get('direct_debit_end_date') else cell_format); col += 1 + worksheet.write(current_row, col, item_data.get('donation_date'), date_cell_format if item_data.get('donation_date') else cell_format); col += 1 + worksheet.write(current_row, col, item_data.get('amount'), amount_cell_format); col += 1 + current_row += 1 + else: + worksheet.merge_range(current_row, 0, current_row, len(data_headers)-1, _("No data found for the selected criteria."), cell_format) + current_row +=1 + + # Footer for total lines + worksheet.merge_range(current_row, 0, current_row, 2, _("Total lines found: %s") % len(sponsorship_lines_details), cell_format) + + + workbook.close() + output.seek(0) + excel_file = base64.b64encode(output.read()) + output.close() + + attachment_name = _('Transfer_Deduction_Report_%(date)s.xlsx') % {'date': fields.Date.context_today(self).strftime('%Y%m%d')} + attachment = self.env['ir.attachment'].create({ + 'name': attachment_name, + 'datas': excel_file, + 'mimetype': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'type': 'binary', + 'res_model': self._name, + 'res_id': self.id, + }) + + return { + 'type': 'ir.actions.act_url', + 'url': f'/web/content/{attachment.id}?download=true', + 'target': 'self', + } \ No newline at end of file diff --git a/odex25_takaful/odex_takaful/wizards/transfer_deduction_wizard_views.xml b/odex25_takaful/odex_takaful/wizards/transfer_deduction_wizard_views.xml new file mode 100644 index 000000000..614d712b6 --- /dev/null +++ b/odex25_takaful/odex_takaful/wizards/transfer_deduction_wizard_views.xml @@ -0,0 +1,45 @@ + + + + + transfer.deduction.wizard.form + transfer.deduction.wizard + +
+ + + + + + + + + + + + +
+
+
+
+
+ + + Transfer and Deduction Report + transfer.deduction.wizard + form + new + + + +
+
\ No newline at end of file diff --git a/odex25_takaful/odex_takaful_base/__init__.py b/odex25_takaful/odex_takaful_base/__init__.py new file mode 100644 index 000000000..daa2c3ffd --- /dev/null +++ b/odex25_takaful/odex_takaful_base/__init__.py @@ -0,0 +1,2 @@ +from . import models +# from . import wizard diff --git a/odex25_takaful/odex_takaful_base/__manifest__.py b/odex25_takaful/odex_takaful_base/__manifest__.py new file mode 100644 index 000000000..6a4df4d77 --- /dev/null +++ b/odex25_takaful/odex_takaful_base/__manifest__.py @@ -0,0 +1,19 @@ +{ + 'name': 'Odex Takaful Base', + 'version': '11.0', + 'category': 'Odex25-Takaful/Odex25-Takaful', + 'author': "Expert Co. Ltd.", + 'website': "http://www.exp-sa.com", + 'summary': 'Base module for Takaful project', + 'depends': ['mail','account'], + 'data': [ + 'security/takaful_security.xml', + 'security/ir.model.access.csv', + 'views/takaful_notification_view.xml', + 'views/takaful_config_settings_view.xml', + # 'views/menu_security_customization.xml' + ], + # 'installable': True, + # 'application': True, + # 'auto_install': False, +} diff --git a/odex25_takaful/odex_takaful_base/controllers/__init__.py b/odex25_takaful/odex_takaful_base/controllers/__init__.py new file mode 100644 index 000000000..457bae27e --- /dev/null +++ b/odex25_takaful/odex_takaful_base/controllers/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import controllers \ No newline at end of file diff --git a/odex25_takaful/odex_takaful_base/controllers/controllers.py b/odex25_takaful/odex_takaful_base/controllers/controllers.py new file mode 100644 index 000000000..a03a61b6f --- /dev/null +++ b/odex25_takaful/odex_takaful_base/controllers/controllers.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# from odoo import http + +# class OdexTakafulBase(http.Controller): +# @http.route('/odex_takaful_base/odex_takaful_base/', auth='public') +# def index(self, **kw): +# return "Hello, world" + +# @http.route('/odex_takaful_base/odex_takaful_base/objects/', auth='public') +# def list(self, **kw): +# return http.request.render('odex_takaful_base.listing', { +# 'root': '/odex_takaful_base/odex_takaful_base', +# 'objects': http.request.env['odex_takaful_base.odex_takaful_base'].search([]), +# }) + +# @http.route('/odex_takaful_base/odex_takaful_base/objects//', auth='public') +# def object(self, obj, **kw): +# return http.request.render('odex_takaful_base.object', { +# 'object': obj +# }) \ No newline at end of file diff --git a/odex25_takaful/odex_takaful_base/i18n/ar_001.po b/odex25_takaful/odex_takaful_base/i18n/ar_001.po new file mode 100644 index 000000000..9f0b60829 --- /dev/null +++ b/odex25_takaful/odex_takaful_base/i18n/ar_001.po @@ -0,0 +1,27 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * odex_takaful_base +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-05-05 12:30+0000\n" +"PO-Revision-Date: 2025-05-05 12:30+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + + +#. module: odex_takaful_base +#: model:ir.model.fields.selection,name:odex_takaful_base.selection__takaful_notification__notification_type__before_finish +msgid "Before Finish" +msgstr "قبل تاريخ إنتهاء الكفالة" + +#. module: odex_takaful_base +#: model:ir.model.fields.selection,name:odex_takaful_base.selection__takaful_notification__notification_type__before_cancel +msgid "Before Cancel" +msgstr "قبل الإلغاء" diff --git a/odex25_takaful/odex_takaful_base/models/__init__.py b/odex25_takaful/odex_takaful_base/models/__init__.py new file mode 100644 index 000000000..387f0e492 --- /dev/null +++ b/odex25_takaful/odex_takaful_base/models/__init__.py @@ -0,0 +1,2 @@ +from . import takaful_notification +from . import takaful_config_settings diff --git a/odex25_takaful/odex_takaful_base/models/takaful_config_settings.py b/odex25_takaful/odex_takaful_base/models/takaful_config_settings.py new file mode 100644 index 000000000..c7be6104c --- /dev/null +++ b/odex25_takaful/odex_takaful_base/models/takaful_config_settings.py @@ -0,0 +1,104 @@ +# Customize settings for Takaful configrations. + +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError +from ast import literal_eval + +class ResCompany(models.Model): + _inherit = 'res.company' + + kafala_benefit_account_id = fields.Many2one('account.account', string="From Account") + kafala_benefit_bank_account_id = fields.Many2one('account.account', string="To Bank Account") + kafala_benefit_journal_id = fields.Many2one('account.journal', string="Payment Journal") + sponsorship_direct_debit_journal_id = fields.Many2one('account.journal', string="Direct Debit Payment Journal") + + orphan_account_id = fields.Many2one('account.account', string="Orphans Account") + widow_account_id = fields.Many2one('account.account', string="Widows Account") + gift_account_id = fields.Many2one('account.account', string="Gifts Account") + need_account_id = fields.Many2one('account.account', string="Needs Account") + + +class TakafulConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + min_kafala = fields.Integer(string='Minimum Kafala Value') + cancel_kafala = fields.Integer(string='Kafala Cancellation After') + new_kafala = fields.Selection([ + ('first', 'Show Only First Name'), + ('always', 'Show Name Always')], + string='New Kafala' + ) + notification_ids = fields.Many2many( + 'takaful.notification', + string='Notifications' + ) + allowed_pay_days = fields.Integer(string='Delayed Kafala After') + + kafala_journal_id = fields.Many2one( + 'account.journal', + string="Sponsorships Account Journal", + ) + # Payment for benefit + kafala_benefit_account_id = fields.Many2one(related='company_id.kafala_benefit_account_id', string="From Account",readonly=False) + kafala_benefit_bank_account_id = fields.Many2one(related='company_id.kafala_benefit_bank_account_id', string="To Bank Account",readonly=False) + kafala_benefit_journal_id = fields.Many2one(related='company_id.kafala_benefit_journal_id', string="Payment Journal",readonly=False) + sponsorship_direct_debit_journal_id = fields.Many2one(related='company_id.sponsorship_direct_debit_journal_id', string="Direct Debit Payment Journal",readonly=False) + + # Takaful Recivable Accounts + orphan_account_id = fields.Many2one(related='company_id.orphan_account_id', string="Orphans Account", readonly=False) + widow_account_id = fields.Many2one(related='company_id.widow_account_id', string="Widows Account",readonly=False) + gift_account_id = fields.Many2one(related='company_id.gift_account_id', string="Gifts Account",readonly=False) + need_account_id = fields.Many2one(related='company_id.need_account_id', string="Needs Account",readonly=False) + + @api.constrains('notification_ids') + def check_notification_ids(self): + if self.notification_ids: + only_allowed = [] + for rec in self.notification_ids: + if rec.notification_type in only_allowed: + raise ValidationError(_(u'There Are Repeatations in Notification Type')) + + only_allowed.append(rec.notification_type) + + # @api.multi + def set_values(self): + super(TakafulConfigSettings, self).set_values() + sudoConf = self.env['ir.config_parameter'].sudo() + + sudoConf.set_param('odex_takaful_base.min_kafala', self.min_kafala) + sudoConf.set_param('odex_takaful_base.allowed_pay_days', self.allowed_pay_days) + sudoConf.set_param('odex_takaful_base.kafala_journal_id', self.kafala_journal_id.id) + sudoConf.set_param('odex_takaful_base.cancel_kafala', self.cancel_kafala) + sudoConf.set_param('odex_takaful_base.new_kafala', self.new_kafala) + sudoConf.set_param('odex_takaful_base.notification_ids', self.notification_ids.ids) + + @api.model + def get_values(self): + res = super(TakafulConfigSettings, self).get_values() + sudoConf = self.env['ir.config_parameter'].sudo() + + min_kafala = sudoConf.get_param('odex_takaful_base.min_kafala') + allowed_pay_days = sudoConf.get_param('odex_takaful_base.allowed_pay_days') + kafala_journal_id = sudoConf.get_param('odex_takaful_base.kafala_journal_id', default=False) + + new_kafala = sudoConf.get_param('odex_takaful_base.new_kafala') + cancel_kafala = sudoConf.get_param('odex_takaful_base.cancel_kafala') + notifications = sudoConf.get_param('odex_takaful_base.notification_ids') + + if notifications: + notification_ids = [(6, 0, literal_eval(notifications))] + else: + notification_ids = None + + res.update( + { + 'min_kafala': int(min_kafala), + 'allowed_pay_days': int(allowed_pay_days), + 'cancel_kafala': int(cancel_kafala), + 'new_kafala': new_kafala, + 'kafala_journal_id': int(kafala_journal_id) if kafala_journal_id else False, + 'notification_ids': notification_ids + } + ) + + return res diff --git a/odex25_takaful/odex_takaful_base/models/takaful_notification.py b/odex25_takaful/odex_takaful_base/models/takaful_notification.py new file mode 100644 index 000000000..68d75346b --- /dev/null +++ b/odex25_takaful/odex_takaful_base/models/takaful_notification.py @@ -0,0 +1,45 @@ + +# This part for creating Takaful notifications +from odoo import models, fields, api, _ +from odoo.exceptions import UserError + +class TakafulMessageType(models.Model): + _name = 'takaful.message.type' + _inherit = ['mail.thread'] + _description = "This is related to message types of notifications for Takaful Settings" + + name = fields.Char( + string='Title', + help='Abbreviated title for the chosen tool type', + required=True + ) + tool_type = fields.Selection([ + ('sms', 'SMS'), + ('app', 'Application'), + ('email', 'Email')], + string='Tool Type', + required=True, + tracking=True + ) + +class TakafulNotification(models.Model): + _name = 'takaful.notification' + _inherit = ['mail.thread'] + _description = "Notifications for Takaful Settings" + # _rec_name = 'name' + + duration = fields.Integer(string='Duration in Days', help='Please enter duration as days') + notification_type = fields.Selection([ + ('before_finish', 'Before Finish'), + ('before_cancel', 'Before Cancel'), + ], + string='Notification Type', + default='before_finish', + tracking=True + ) + + message_type_ids = fields.Many2many( + 'takaful.message.type', + string='Message Type', + required=True + ) diff --git a/odex25_takaful/odex_takaful_base/security/ir.model.access.csv b/odex25_takaful/odex_takaful_base/security/ir.model.access.csv new file mode 100644 index 000000000..0034fbb7a --- /dev/null +++ b/odex25_takaful/odex_takaful_base/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_takaful_notification,takaful.notification,model_takaful_notification,,1,1,1,1 +access_takaful_message_type,takaful.message.type,model_takaful_message_type,,1,1,1,1 diff --git a/odex25_takaful/odex_takaful_base/security/takaful_security.xml b/odex25_takaful/odex_takaful_base/security/takaful_security.xml new file mode 100644 index 000000000..3395b5599 --- /dev/null +++ b/odex25_takaful/odex_takaful_base/security/takaful_security.xml @@ -0,0 +1,23 @@ + + + + Kufula System Configruation + Helps you manage configruations for Kufula System + 2 + + + + Officer + + + + + + Administrator + + + + + + + diff --git a/odex25_takaful/odex_takaful_base/static/description/icon.png b/odex25_takaful/odex_takaful_base/static/description/icon.png new file mode 100644 index 000000000..1c4a3e1b5 Binary files /dev/null and b/odex25_takaful/odex_takaful_base/static/description/icon.png differ diff --git a/odex25_takaful/odex_takaful_base/views/takaful_config_settings_view.xml b/odex25_takaful/odex_takaful_base/views/takaful_config_settings_view.xml new file mode 100644 index 000000000..e619f6c7f --- /dev/null +++ b/odex25_takaful/odex_takaful_base/views/takaful_config_settings_view.xml @@ -0,0 +1,174 @@ + + + + + takaful.res.config.settings.view.form + res.config.settings + + + +
+ +

Kafaleen System

+ +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ + +
+ + + + + + + + + + + +
+
+
+ +
+ + +

Kafalat Income/Revenue Accounts

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +

Benefit Monthly Payments

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+ + + kafalat.system.takaful.settings.action + res.config.settings + + form + inline + {'module' : 'odex_takaful_base'} + + + +
\ No newline at end of file diff --git a/odex25_takaful/odex_takaful_base/views/takaful_notification_view.xml b/odex25_takaful/odex_takaful_base/views/takaful_notification_view.xml new file mode 100644 index 000000000..14a061bcd --- /dev/null +++ b/odex25_takaful/odex_takaful_base/views/takaful_notification_view.xml @@ -0,0 +1,101 @@ + + + + + + + takaful_notification.form + takaful.notification + +
+ + + + + + + + + + + + +
+ + +
+
+
+
+ + + takaful_notification.tree + takaful.notification + + + + + + + + + + + + + takaful.message.type.form + takaful.message.type + +
+ + + + + + +
+ + +
+
+
+
+ + + takaful.message.type.tree + takaful.message.type + + + + + + + + + + + Takaful Notifications + takaful.notification + tree,form + + + + Takaful Message Types + takaful.message.type + tree,form + + + + + +
diff --git a/odex25_takaful/odex_takaful_base/wizard/__init__.py b/odex25_takaful/odex_takaful_base/wizard/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/odex25_takaful/odex_takaful_custom/__init__.py b/odex25_takaful/odex_takaful_custom/__init__.py new file mode 100644 index 000000000..7c378d646 --- /dev/null +++ b/odex25_takaful/odex_takaful_custom/__init__.py @@ -0,0 +1,3 @@ +from . import models + + diff --git a/odex25_takaful/odex_takaful_custom/__manifest__.py b/odex25_takaful/odex_takaful_custom/__manifest__.py new file mode 100644 index 000000000..03ad9ca2c --- /dev/null +++ b/odex25_takaful/odex_takaful_custom/__manifest__.py @@ -0,0 +1,19 @@ +{ + 'name': 'Odex Takaful Custom', + 'version': '11.0', + 'category': 'Odex25-Takaful/Odex25-Takaful', + 'author': "Expert Co. Ltd.", + 'website': "http://www.exp-sa.com", + 'summary': 'This module for Takaful project', + 'depends': [ + 'odex_takaful' + ], + 'data': [ + 'security/groups.xml', + 'views/account_voucher_inherit.xml', + 'views/account_tax_inherit.xml' + ], + # 'installable': True, + # 'application': True, + # 'auto_install': False, +} diff --git a/odex25_takaful/odex_takaful_custom/i18n/ar_001.po b/odex25_takaful/odex_takaful_custom/i18n/ar_001.po new file mode 100644 index 000000000..59105a63d --- /dev/null +++ b/odex25_takaful/odex_takaful_custom/i18n/ar_001.po @@ -0,0 +1,122 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * odex_takaful_custom +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-02-07 21:31+0000\n" +"PO-Revision-Date: 2023-02-07 21:31+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: odex_takaful_custom +#: model:ir.ui.view,arch_db:odex_takaful_custom.account_voucher_inherit +#: model:res.groups,name:odex_takaful_custom.group_accountant +msgid "Accountant" +msgstr "المحاسب" + +#. module: odex_takaful_custom +#: model:ir.model,name:odex_takaful_custom.model_account_voucher +msgid "Accounting Voucher" +msgstr "السند المحاسبي" + +#. module: odex_takaful_custom +#: model:ir.ui.view,arch_db:odex_takaful_custom.account_voucher_inherit +#: model:res.groups,name:odex_takaful_custom.group_cashier +msgid "Cashier" +msgstr "أمين الصندوق" + +#. module: odex_takaful_custom +#: model:ir.ui.view,arch_db:odex_takaful_custom.account_voucher_inherit +msgid "Done" +msgstr "تم" + +#. module: odex_takaful_custom +#: model:ir.ui.view,arch_db:odex_takaful_custom.account_voucher_inherit +msgid "Representative Action" +msgstr "ممثل مجلس الإدارة" + +#. module: odex_takaful_custom +#: model:ir.ui.view,arch_db:odex_takaful_custom.account_voucher_inherit +msgid "financial manager" +msgstr "مدير الإدارة المالية" + +#. module: account_voucher +#: selection:account.voucher,state:0 +#: model:ir.ui.view,arch_db:account_voucher.view_voucher_filter +#: model:ir.ui.view,arch_db:account_voucher.view_voucher_filter_sale +#: model:ir.ui.view,arch_db:account_voucher.view_voucher_filter_vendor +msgid "Draft" +msgstr "المحاسب" + +#. module: account_voucher +#: selection:account.voucher,state:0 +#: model:ir.ui.view,arch_db:account_voucher.view_voucher_filter +#: model:ir.ui.view,arch_db:account_voucher.view_voucher_filter_sale +#: model:ir.ui.view,arch_db:account_voucher.view_voucher_filter_vendor +msgid "Posted" +msgstr "أمين الصندوق" + +#. module: account_voucher +#: selection:account.voucher,state:0 +msgid "Pro-forma" +msgstr "مدير الإدارة المالية" + +#. module: account_voucher +#: selection:account.voucher,state:0 +#: model:ir.ui.view,arch_db:account_voucher.view_voucher_filter +#: model:ir.ui.view,arch_db:account_voucher.view_voucher_filter_sale +#: model:ir.ui.view,arch_db:account_voucher.view_voucher_filter_vendor +msgid "Board Representative" +msgstr "ممثل مجلس الإدارة" + +#. module: account_voucher +#: selection:account.voucher,state:0 +#: model:ir.ui.view,arch_db:account_voucher.view_voucher_filter +#: model:ir.ui.view,arch_db:account_voucher.view_voucher_filter_sale +#: model:ir.ui.view,arch_db:account_voucher.view_voucher_filter_vendor +msgid "Done" +msgstr "تم" + +#. module: odex_takaful_custom +#: model:res.groups,name:odex_takaful_custom.group_financial_dep_manager +msgid "Financial Department Manager" +msgstr "مدير الإدارة المالية" + +#. module: odex_takaful_custom +#: model:res.groups,name:odex_takaful_custom.group_board_representative +msgid "Board Representative" +msgstr "ممثل مجلس الإدارة" + + +#. module: account_voucher +#: model:ir.actions.act_window,name:account_voucher.action_purchase_receipt +#: model:ir.ui.menu,name:account_voucher.menu_action_purchase_receipt +msgid "Purchase Receipts" +msgstr "إيصالات المدفوعات" + +#. module: odex_takaful_custom +#: model:ir.ui.view,arch_db:odex_takaful_custom.account_svoucher_inherit +msgid "Tax Amount Custom" +msgstr "قيمة نسبة المشاريع" + +#. module: odex_takaful_custom +#: model:ir.ui.view,arch_db:odex_takaful_custom.account_svoucher_inherit +msgid "Tax Custom" +msgstr "نسبة المشاريع" + +#. module: odex_takaful_custom +#: model:ir.ui.view,arch_db:odex_takaful_custom.account_svoucher_inherit +msgid "Review" +msgstr "مراجعة" + +#. module: odex_takaful_custom +#: model:ir.model.fields,field_description:odex_takaful_custom.field_account_tax_projects_percentage +msgid "Projects Percentage" +msgstr "نسبة المشاريع" \ No newline at end of file diff --git a/odex25_takaful/odex_takaful_custom/models/__init__.py b/odex25_takaful/odex_takaful_custom/models/__init__.py new file mode 100644 index 000000000..fd5f0b15c --- /dev/null +++ b/odex25_takaful/odex_takaful_custom/models/__init__.py @@ -0,0 +1,5 @@ +from . import account_voucher +from . import account_tax_inherit +from . import account_tax_report_inherit + + diff --git a/odex25_takaful/odex_takaful_custom/models/account_tax_inherit.py b/odex25_takaful/odex_takaful_custom/models/account_tax_inherit.py new file mode 100644 index 000000000..d9fcfa790 --- /dev/null +++ b/odex25_takaful/odex_takaful_custom/models/account_tax_inherit.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api, _ + + + +class AccountTaxInherit(models.Model): + _inherit = "account.tax" + + projects_percentage = fields.Boolean(string='Projects Percentage') + + + + + diff --git a/odex25_takaful/odex_takaful_custom/models/account_tax_report_inherit.py b/odex25_takaful/odex_takaful_custom/models/account_tax_report_inherit.py new file mode 100644 index 000000000..0af49ae21 --- /dev/null +++ b/odex25_takaful/odex_takaful_custom/models/account_tax_report_inherit.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +from odoo import api, models, _ + + +class ReportTaxInherit(models.AbstractModel): + _inherit = 'report.account.report_tax' + + @api.model + def get_lines(self, options): + taxes = {} + for tax in self.env['account.tax'].search([('type_tax_use', '!=', 'none'),('projects_percentage', '=', False)]): + if tax.children_tax_ids: + for child in tax.children_tax_ids: + if child.type_tax_use != 'none': + continue + taxes[child.id] = {'tax': 0, 'net': 0, 'name': child.name, 'type': tax.type_tax_use} + else: + taxes[tax.id] = {'tax': 0, 'net': 0, 'name': tax.name, 'type': tax.type_tax_use} + self.with_context(date_from=options['date_from'], date_to=options['date_to'], strict_range=True)._compute_from_amls(options, taxes) + groups = dict((tp, []) for tp in ['sale', 'purchase']) + for tax in taxes.values(): + if tax['tax']: + groups[tax['type']].append(tax) + return groups diff --git a/odex25_takaful/odex_takaful_custom/models/account_voucher.py b/odex25_takaful/odex_takaful_custom/models/account_voucher.py new file mode 100644 index 000000000..8b751aea5 --- /dev/null +++ b/odex25_takaful/odex_takaful_custom/models/account_voucher.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api, _ + + + +class AccountVoucherInherit(models.Model): + _inherit = "account.voucher" + + state = fields.Selection(selection_add=[('board representative','Board Representative'),('done','Done')]) + + def board_representative_action(self): + self.state = 'board representative' + # + def action_done(self): + self.write({'state': 'done'}) + # + def proforma_action(self): + self.write({'state': 'proforma'}) + + + # @api.multi + # @api.depends('tax_correction', 'line_ids.price_subtotal') + # def _compute_total(self): + # tax_calculation_rounding_method = self.env.user.company_id.tax_calculation_rounding_method + # for voucher in self: + # total = 0 + # tax_amount = 0 + # tax_lines_vals_merged = {} + # for line in voucher.line_ids: + # if line.tax_ids: + # tax_info = line.tax_ids.compute_all(line.price_unit, voucher.currency_id, line.quantity, + # line.product_id, voucher.partner_id) + # if tax_calculation_rounding_method == 'round_globally': + # total += tax_info.get('total_excluded', 0.0) + # for t in tax_info.get('taxes', False): + # key = ( + # t['id'], + # t['account_id'], + # ) + # if key not in tax_lines_vals_merged: + # tax_lines_vals_merged[key] = t.get('amount', 0.0) + # else: + # tax_lines_vals_merged[key] += t.get('amount', 0.0) + # else: + # total += tax_info.get('total_included', 0.0) + # tax_amount += sum([t.get('amount', 0.0) for t in tax_info.get('taxes', False)]) + # elif line.tax_ids_custom: + # tax_info = line.tax_ids_custom.compute_all(line.price_unit, voucher.currency_id, line.quantity, + # line.product_id, voucher.partner_id) + # if tax_calculation_rounding_method == 'round_globally': + # total += tax_info.get('total_excluded', 0.0) + # for t in tax_info.get('taxes', False): + # key = ( + # t['id'], + # t['account_id'], + # ) + # if key not in tax_lines_vals_merged: + # tax_lines_vals_merged[key] = t.get('amount', 0.0) + # else: + # tax_lines_vals_merged[key] += t.get('amount', 0.0) + # else: + # total += tax_info.get('total_included', 0.0) + # tax_amount += sum([t.get('amount', 0.0) for t in tax_info.get('taxes', False)]) + # if tax_calculation_rounding_method == 'round_globally': + # tax_amount = sum([voucher.currency_id.round(t) for t in tax_lines_vals_merged.values()]) + # voucher.amount = total + tax_amount + voucher.tax_correction + # else: + # voucher.amount = total + voucher.tax_correction + # voucher.tax_amount = tax_amount + + + +class AccountVoucherLineInherit(models.Model): + _inherit = "account.voucher.line" + + # tax_ids_custom = fields.Many2many('account.tax', string='Tax Custom', help="Only for tax excluded from price") + + # @api.one + # @api.depends('price_unit', 'tax_ids','tax_ids_custom', 'quantity', 'product_id', 'voucher_id.currency_id') + # def _compute_subtotal(self): + # self.price_subtotal = self.quantity * self.price_unit + # if self.tax_ids: + # taxes = self.tax_ids.compute_all(self.price_unit, self.voucher_id.currency_id, self.quantity, + # product=self.product_id, partner=self.voucher_id.partner_id) + # self.price_subtotal = taxes['total_excluded'] + # elif self.tax_ids_custom: + # taxes_custom = self.tax_ids_custom.compute_all(self.price_unit, self.voucher_id.currency_id, self.quantity, + # product=self.product_id, partner=self.voucher_id.partner_id) + # self.price_subtotal = taxes_custom['total_excluded'] + + + + + + diff --git a/odex25_takaful/odex_takaful_custom/security/groups.xml b/odex25_takaful/odex_takaful_custom/security/groups.xml new file mode 100644 index 000000000..b3c267e98 --- /dev/null +++ b/odex25_takaful/odex_takaful_custom/security/groups.xml @@ -0,0 +1,23 @@ + + + + Accountant + + + + + Financial Department Manager + + + + + Cashier + + + + + Board Representative + + + + diff --git a/odex25_takaful/odex_takaful_custom/views/account_tax_inherit.xml b/odex25_takaful/odex_takaful_custom/views/account_tax_inherit.xml new file mode 100644 index 000000000..ec8a33166 --- /dev/null +++ b/odex25_takaful/odex_takaful_custom/views/account_tax_inherit.xml @@ -0,0 +1,14 @@ + + + + + account.tax.form.inherit + account.tax + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/odex_takaful_custom/views/account_voucher_inherit.xml b/odex25_takaful/odex_takaful_custom/views/account_voucher_inherit.xml new file mode 100644 index 000000000..f2cdd2fef --- /dev/null +++ b/odex25_takaful/odex_takaful_custom/views/account_voucher_inherit.xml @@ -0,0 +1,68 @@ + + + + + account.voucher.form.inherit + account.voucher + + + + draft,posted + + + Tax Custom + [('projects_percentage','=',True)] + + + Tax Amount Custom + + + + + + + +
+ ` + $('.notifications.details .wrapper').html(html); + } + else { + console.log(data.msg); + } + }, + error: function (jqXHR, textStatus, errorThrown) { + console.log(textStatus + ': ' + errorThrown); + } +}); + +$(".notifications.details").on("click", ".delete_noti", () => { + $.ajax({ + url: `/portal/sponsor/notify/delete/${myId}`, + type: 'GET', + dataType: 'json', + success: function (data) { + console.log(data); + var message = data.msg ; + if (data.status) { + $('.delete_feedback').append(` ${message} `); + setTimeout(function () { + window.location.href = `/notifications`; + }, 3000); + } + else { + $('.delete_feedback').append(` ${message} `); + } + }, + error: function (err) { + $('.delete_feedback').append(` ${err.msg} `); + } + }); +}) \ No newline at end of file diff --git a/odex25_takaful/takaful_portal_sponsor/static/js/notifications.js b/odex25_takaful/takaful_portal_sponsor/static/js/notifications.js new file mode 100644 index 000000000..281d13dce --- /dev/null +++ b/odex25_takaful/takaful_portal_sponsor/static/js/notifications.js @@ -0,0 +1,179 @@ +var currentPage = 1; +var next +var prev + + +const urlSearchParams = new URLSearchParams(window.location.search); +var is_read = urlSearchParams.get("is_read"); + +if(is_read =='no'){ + $("#unread_toggler").prop('checked', true); +} + +function updateButtons(nxt, prv) { + $('#benefits-next').attr('disabled', (nxt == null)); + $('#benefits-prev').attr('disabled', (prv == null)); +} + +//load read notifiacrions +if (is_read == 'yes') { + function loadNotifications(page) { + $.ajax({ + url: `/portal/sponsor/notifications/page/${page}?is_read=yes`, + type: 'GET', + dataType: 'json', + success: function (data) { + console.log(data); + notif = data.results; + let myPage = data.next_page; + console.log(myPage); + var html = ''; + if (data.status) { + notif.forEach((element, i) => { + html += + ` +
+
+ ${element.title} +
+

+ ${element.body} +

+ + ${element.sent_on} + +
+ ` + }); + $('.all_notifs').html(html); + + next = data.next_page; + prev = (currentPage > 1) ? currentPage - 1 : null; + currentPage = page; + console.log(next, prev); + $('#notif-next').attr('disabled', (next == null)); + $('#notif-prev').attr('disabled', (prev == null)); + } + else { + console.log(data.msg); + } + }, + error: function (jqXHR, textStatus, errorThrown) { + console.log(textStatus + ': ' + errorThrown); + } + }); + } +} +//load all notifications +else if (is_read == 'no') { + + function loadNotifications(page) { + $.ajax({ + url: `/portal/sponsor/notifications/page/${page}?is_read=no`, + type: 'GET', + dataType: 'json', + success: function (data) { + console.log(data); + notif = data.results; + let myPage = data.next_page; + console.log(myPage); + var html = ''; + if (data.status) { + notif.forEach((element, i) => { + html += + ` + +
+ ${element.title} +
+

+ ${element.body} +

+ + ${element.sent_on} + +
+ ` + }); + $('.all_notifs').html(html); + + next = data.next_page; + prev = (currentPage > 1) ? currentPage - 1 : null; + currentPage = page; + console.log(next, prev); + $('#notif-next').attr('disabled', (next == null)); + $('#notif-prev').attr('disabled', (prev == null)); + } + else { + console.log(data.msg); + } + }, + error: function (jqXHR, textStatus, errorThrown) { + console.log(textStatus + ': ' + errorThrown); + } + }); + } + +} else { + function loadNotifications(page) { + $.ajax({ + url: `/portal/sponsor/notifications/page/${page}`, + type: 'GET', + dataType: 'json', + success: function (data) { + console.log(data); + notif = data.results; + let myPage = data.next_page; + console.log(myPage); + var html = ''; + if (data.status) { + notif.forEach((element, i) => { + html += + ` + +
+ ${element.title} +
+

+ ${element.body} +

+ + ${element.sent_on} + +
+ ` + }); + $('.all_notifs').html(html); + + next = data.next_page; + prev = (currentPage > 1) ? currentPage - 1 : null; + currentPage = page; + console.log(next, prev); + $('#notif-next').attr('disabled', (next == null)); + $('#notif-prev').attr('disabled', (prev == null)); + } + else { + console.log(data.msg); + } + }, + error: function (jqXHR, textStatus, errorThrown) { + console.log(textStatus + ': ' + errorThrown); + } + }); + } +} + + + + +$(document).ready(function () { + loadNotifications(1); + $('#notif-prev').click(function () { + loadNotifications(currentPage - 1); + updateButtons(next, prev) + }); + $('#notif-next').click(function () { + loadNotifications(currentPage + 1); + updateButtons(next, prev) + }); +}); \ No newline at end of file diff --git a/odex25_takaful/takaful_portal_sponsor/static/js/notifications_settings.js b/odex25_takaful/takaful_portal_sponsor/static/js/notifications_settings.js new file mode 100644 index 000000000..397a74dac --- /dev/null +++ b/odex25_takaful/takaful_portal_sponsor/static/js/notifications_settings.js @@ -0,0 +1,69 @@ +$(document).ready(function () { + $.ajax({ + url: '/portal/sponsor/notify_setting', + type: 'GET', + dataType: 'json', + processData: false, + success: function (data) { + settings = data.notify_setting; + console.log(settings); + if (data.status) { + $('input[name="notify_by_app"]').prop('checked', settings.notify_by_app); + $('input[name="notify_by_sms"]').prop('checked', settings.notify_by_sms); + $('input[name="notify_month_day"]').val(settings.notify_month_day); + $('input[name="notify_pay_by_app"]').prop('checked', settings.notify_pay_by_app); + $('input[name="notify_pay_by_sms"]').prop('checked', settings.notify_pay_by_sms); + $(".notifications_update_feedback").text(data.msg).addClass('alert alert-success') + + } + else { + console.log(data.msg); + $(".notifications_update_feedback").text(data.msg).addClass('alert alert-danger') + } + }, + error: function (error) { + $(".notifications_update_feedback").text(error.msg).addClass('alert alert-danger') + } + }); + + var settings_data = {} + + // Add event listener to input fields to detect changes + $('input[type="checkbox"]').change(function () { + settings_data = { + notify_by_app: $('input[name="notify_by_app"]').prop('checked'), + notify_by_sms: $('input[name="notify_by_sms"]').prop('checked'), + notify_month_day: $('input[name="notify_month_day"]').val(), + notify_pay_by_app: $('input[name="notify_pay_by_app"]').prop('checked'), + notify_pay_by_sms: $('input[name="notify_pay_by_sms"]').prop('checked'), + } + }); + + // Add event listener to save button to trigger AJAX request + $('#notifications_update_form').on("submit", (e) => { + e.preventDefault(); + $.ajax({ + url: '/portal/sponsor/notify_setting/update', + type: 'POST', + data: settings_data, + dataType: 'json', + success: function (response) { + if (response.status) { + console.log(response); + $(".notifications_update_feedback").show() + $(".notifications_update_feedback").text(response.msg) + } else { + $(".notifications_update_feedback").show() + $(".notifications_update_feedback").text(response.msg) + } + }, + error: function (error) { + $(".notifications_update_feedback").show() + $(".notifications_update_feedback").text(error.msg) + } + }); + + }); +}) + + diff --git a/odex25_takaful/takaful_portal_sponsor/static/js/orphan_widows_needs.js b/odex25_takaful/takaful_portal_sponsor/static/js/orphan_widows_needs.js new file mode 100644 index 000000000..3df142e6f --- /dev/null +++ b/odex25_takaful/takaful_portal_sponsor/static/js/orphan_widows_needs.js @@ -0,0 +1,74 @@ +$(document).ready(function () { + var currentPage = 1; + var benefitType = 'orphan'; // Default value + var nextorphan + var prev + var next + + function orphan_widows_needs(page) { + $.ajax({ + url: '/portal/sys/benefits/page/' + page, + type: 'GET', + data: { benefit_type: benefitType }, + dataType: 'json', + success: function (data) { + results = data.results; + console.log(results); + var html = ''; + if (data.status) { + results.forEach((element, i) => { + console.log(element); + html += + ` + + ${i + 1} + ${element.first_name} + ${element.gender} + ${element.age} + ${element.city_id} + ${element.benefit_type} + ${element.benefit_needs_percent} % + + + + + ` + }); + $('.orphan_widows_needs tbody').html(html); + next = data.next_page; + prev = (currentPage > 1) ? currentPage - 1 : null; + currentPage = page; + } + else { + console.log(data.msg); + } + }, + error: function (jqXHR, textStatus, errorThrown) { + console.log(textStatus + ': ' + errorThrown); + } + }); + } + orphan_widows_needs(1); + function updateButtons(next, prev) { + $('#benefits-next').attr('disabled', (next == null)); + $('#benefits-prev').attr('disabled', (prev == null)); + } + + $('#benefit-type').change(function () { + benefitType = $(this).val(); + $('.financial_donation tbody tr').data("type", benefitType) + orphan_widows_needs(1); + + }); + $('#benefits-prev').click(function () { + orphan_widows_needs(currentPage - 1); + updateButtons(next, prev) + + }); + $('#benefits-next').click(function () { + orphan_widows_needs(currentPage + 1); + updateButtons(next, prev) + }); +}) \ No newline at end of file diff --git a/odex25_takaful/takaful_portal_sponsor/static/js/profile.js b/odex25_takaful/takaful_portal_sponsor/static/js/profile.js new file mode 100644 index 000000000..d00a8adb5 --- /dev/null +++ b/odex25_takaful/takaful_portal_sponsor/static/js/profile.js @@ -0,0 +1,101 @@ +$(document).ready(function () { + + + + const getProfileData = () => { + let url = "/portal/sponsor/profile"; + fetch(url) + .then(response => response.json()) + .then(res => { + data = res.sponsor; + console.log(data); + const dataObject = { + name: data.name, + gender: data.gender, + id_number: data.id_number, + mobile: data.mobile, + email: data.email, + city_id: data.city_id, + company_type: data.company_type, + bank_entity_name: data.bank_entity_name, + account_number: data.account_number, + iban: data.iban, + bank_name: data.bank_id, + } + //general information inputs values + $("input[name=name]").val(dataObject.name); + $("input[name=id_number]").val(dataObject.id_number); + $("input[name=mobile]").val(dataObject.mobile); + $("input[name=email]").val(dataObject.email); + $('#city_id option[value="' + dataObject.city_id + '"]').prop('selected', true); + $("input[name=company_type]").val(dataObject.company_type); + if (dataObject.gender == 'male') { + $('#gender-male').prop('checked', true) + $('#gender-female').prop('checked', false) + } else { + $('#gender-female').prop('checked', true) + $('#gender-male').prop('checked', false) + } + $("input[name=bank_entity_name]").val(dataObject.bank_entity_name); + $("input[name=account_number]").val(dataObject.account_number); + $("input[name=iban]").val(dataObject.iban); + $('#bank_id option[value="' + dataObject.bank_id + '"]').prop('selected', true); + }) + .catch(err => { + console.log(err); + }) + } + getProfileData(); + + //profile update values + let update_profile = "/portal/sponsor/profile/update"; + const form = $('.sponsor_profile_form') + const updateHandler = () => { + form.on('submit', function (e) { + var formData = $(this).serialize(); + console.log(formData); + e.preventDefault(); + $.ajax({ + method: 'PUT', + url: update_profile, + data: { + mobile: $("input[name=mobile]").val(), + city_id: $("#city_id").val(), + account_number: $("input[name=account_number]").val(), + iban: $("input[name=iban]").val(), + bank_id: $("#bank_id").val(), + bank_entity_name: $("input[name=bank_entity_name]").val(), + }, + dataType: "json", + success: function (response) { + if (response !== undefined && response !== null) { + if (response.status) { + console.log(response.data); + $('.success_res').show(); + $('.error_res').hide(); + $('.success_res').html(` ${response.msg} `); + setTimeout(function () { + $('.success_res').hide(); + }, 3000); + } else { + $('.error_res').show(); + $('.success_res').hide(); + $('.error_res').html(` ${response.msg} `); + setTimeout(function () { + $('.success_res').hide(); + }, 6000); + } + } + }, + error: function (error) { + $('.success_res').hide(); + $('.error_res').show(); + $('.error_res').html(` ${error.msg} `); + } + }); + return false; + } + ); + } + updateHandler(); +}) \ No newline at end of file diff --git a/odex25_takaful/takaful_portal_sponsor/static/js/select2.min.js b/odex25_takaful/takaful_portal_sponsor/static/js/select2.min.js new file mode 100644 index 000000000..e42142643 --- /dev/null +++ b/odex25_takaful/takaful_portal_sponsor/static/js/select2.min.js @@ -0,0 +1,2 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ +!function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),n(t),t}:n(jQuery)}(function(u){var e=function(){if(u&&u.fn&&u.fn.select2&&u.fn.select2.amd)var e=u.fn.select2.amd;var t,n,r,h,o,s,f,g,m,v,y,_,i,a,b;function w(e,t){return i.call(e,t)}function l(e,t){var n,r,i,o,s,a,l,c,u,d,p,h=t&&t.split("/"),f=y.map,g=f&&f["*"]||{};if(e){for(s=(e=e.split("/")).length-1,y.nodeIdCompat&&b.test(e[s])&&(e[s]=e[s].replace(b,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),u=0;u":">",'"':""","'":"'","/":"/"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})},i.appendMany=function(e,t){if("1.7"===o.fn.jquery.substr(0,3)){var n=o();o.map(t,function(e){n=n.add(e)}),t=n}e.append(t)},i.__cache={};var n=0;return i.GetUniqueElementId=function(e){var t=e.getAttribute("data-select2-id");return null==t&&(e.id?(t=e.id,e.setAttribute("data-select2-id",t)):(e.setAttribute("data-select2-id",++n),t=n.toString())),t},i.StoreData=function(e,t,n){var r=i.GetUniqueElementId(e);i.__cache[r]||(i.__cache[r]={}),i.__cache[r][t]=n},i.GetData=function(e,t){var n=i.GetUniqueElementId(e);return t?i.__cache[n]&&null!=i.__cache[n][t]?i.__cache[n][t]:o(e).data(t):i.__cache[n]},i.RemoveData=function(e){var t=i.GetUniqueElementId(e);null!=i.__cache[t]&&delete i.__cache[t],e.removeAttribute("data-select2-id")},i}),e.define("select2/results",["jquery","./utils"],function(h,f){function r(e,t,n){this.$element=e,this.data=n,this.options=t,r.__super__.constructor.call(this)}return f.Extend(r,f.Observable),r.prototype.render=function(){var e=h('
    ');return this.options.get("multiple")&&e.attr("aria-multiselectable","true"),this.$results=e},r.prototype.clear=function(){this.$results.empty()},r.prototype.displayMessage=function(e){var t=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var n=h(''),r=this.options.get("translations").get(e.message);n.append(t(r(e.args))),n[0].className+=" select2-results__message",this.$results.append(n)},r.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},r.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n",{class:"select2-results__options select2-results__options--nested"});p.append(l),s.append(a),s.append(p)}else this.template(e,t);return f.StoreData(t,"data",e),t},r.prototype.bind=function(t,e){var l=this,n=t.id+"-results";this.$results.attr("id",n),t.on("results:all",function(e){l.clear(),l.append(e.data),t.isOpen()&&(l.setClasses(),l.highlightFirstItem())}),t.on("results:append",function(e){l.append(e.data),t.isOpen()&&l.setClasses()}),t.on("query",function(e){l.hideMessages(),l.showLoading(e)}),t.on("select",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("unselect",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("open",function(){l.$results.attr("aria-expanded","true"),l.$results.attr("aria-hidden","false"),l.setClasses(),l.ensureHighlightVisible()}),t.on("close",function(){l.$results.attr("aria-expanded","false"),l.$results.attr("aria-hidden","true"),l.$results.removeAttr("aria-activedescendant")}),t.on("results:toggle",function(){var e=l.getHighlightedResults();0!==e.length&&e.trigger("mouseup")}),t.on("results:select",function(){var e=l.getHighlightedResults();if(0!==e.length){var t=f.GetData(e[0],"data");"true"==e.attr("aria-selected")?l.trigger("close",{}):l.trigger("select",{data:t})}}),t.on("results:previous",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e);if(!(n<=0)){var r=n-1;0===e.length&&(r=0);var i=t.eq(r);i.trigger("mouseenter");var o=l.$results.offset().top,s=i.offset().top,a=l.$results.scrollTop()+(s-o);0===r?l.$results.scrollTop(0):s-o<0&&l.$results.scrollTop(a)}}),t.on("results:next",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e)+1;if(!(n>=t.length)){var r=t.eq(n);r.trigger("mouseenter");var i=l.$results.offset().top+l.$results.outerHeight(!1),o=r.offset().top+r.outerHeight(!1),s=l.$results.scrollTop()+o-i;0===n?l.$results.scrollTop(0):ithis.$results.outerHeight()||o<0)&&this.$results.scrollTop(i)}},r.prototype.template=function(e,t){var n=this.options.get("templateResult"),r=this.options.get("escapeMarkup"),i=n(e,t);null==i?t.style.display="none":"string"==typeof i?t.innerHTML=r(i):h(t).append(i)},r}),e.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),e.define("select2/selection/base",["jquery","../utils","../keys"],function(n,r,i){function o(e,t){this.$element=e,this.options=t,o.__super__.constructor.call(this)}return r.Extend(o,r.Observable),o.prototype.render=function(){var e=n('');return this._tabindex=0,null!=r.GetData(this.$element[0],"old-tabindex")?this._tabindex=r.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),e.attr("title",this.$element.attr("title")),e.attr("tabindex",this._tabindex),e.attr("aria-disabled","false"),this.$selection=e},o.prototype.bind=function(e,t){var n=this,r=e.id+"-results";this.container=e,this.$selection.on("focus",function(e){n.trigger("focus",e)}),this.$selection.on("blur",function(e){n._handleBlur(e)}),this.$selection.on("keydown",function(e){n.trigger("keypress",e),e.which===i.SPACE&&e.preventDefault()}),e.on("results:focus",function(e){n.$selection.attr("aria-activedescendant",e.data._resultId)}),e.on("selection:update",function(e){n.update(e.data)}),e.on("open",function(){n.$selection.attr("aria-expanded","true"),n.$selection.attr("aria-owns",r),n._attachCloseHandler(e)}),e.on("close",function(){n.$selection.attr("aria-expanded","false"),n.$selection.removeAttr("aria-activedescendant"),n.$selection.removeAttr("aria-owns"),n.$selection.trigger("focus"),n._detachCloseHandler(e)}),e.on("enable",function(){n.$selection.attr("tabindex",n._tabindex),n.$selection.attr("aria-disabled","false")}),e.on("disable",function(){n.$selection.attr("tabindex","-1"),n.$selection.attr("aria-disabled","true")})},o.prototype._handleBlur=function(e){var t=this;window.setTimeout(function(){document.activeElement==t.$selection[0]||n.contains(t.$selection[0],document.activeElement)||t.trigger("blur",e)},1)},o.prototype._attachCloseHandler=function(e){n(document.body).on("mousedown.select2."+e.id,function(e){var t=n(e.target).closest(".select2");n(".select2.select2-container--open").each(function(){this!=t[0]&&r.GetData(this,"element").select2("close")})})},o.prototype._detachCloseHandler=function(e){n(document.body).off("mousedown.select2."+e.id)},o.prototype.position=function(e,t){t.find(".selection").append(e)},o.prototype.destroy=function(){this._detachCloseHandler(this.container)},o.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},o.prototype.isEnabled=function(){return!this.isDisabled()},o.prototype.isDisabled=function(){return this.options.get("disabled")},o}),e.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(e,t,n,r){function i(){i.__super__.constructor.apply(this,arguments)}return n.Extend(i,t),i.prototype.render=function(){var e=i.__super__.render.call(this);return e.addClass("select2-selection--single"),e.html(''),e},i.prototype.bind=function(t,e){var n=this;i.__super__.bind.apply(this,arguments);var r=t.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",r).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",r),this.$selection.on("mousedown",function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})}),this.$selection.on("focus",function(e){}),this.$selection.on("blur",function(e){}),t.on("focus",function(e){t.isOpen()||n.$selection.trigger("focus")})},i.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},i.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},i.prototype.selectionContainer=function(){return e("")},i.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(".select2-selection__rendered"),r=this.display(t,n);n.empty().append(r);var i=t.title||t.text;i?n.attr("title",i):n.removeAttr("title")}else this.clear()},i}),e.define("select2/selection/multiple",["jquery","./base","../utils"],function(i,e,l){function n(e,t){n.__super__.constructor.apply(this,arguments)}return l.Extend(n,e),n.prototype.render=function(){var e=n.__super__.render.call(this);return e.addClass("select2-selection--multiple"),e.html('
      '),e},n.prototype.bind=function(e,t){var r=this;n.__super__.bind.apply(this,arguments),this.$selection.on("click",function(e){r.trigger("toggle",{originalEvent:e})}),this.$selection.on("click",".select2-selection__choice__remove",function(e){if(!r.isDisabled()){var t=i(this).parent(),n=l.GetData(t[0],"data");r.trigger("unselect",{originalEvent:e,data:n})}})},n.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},n.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},n.prototype.selectionContainer=function(){return i('
    • ×
    • ')},n.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],n=0;n×');a.StoreData(r[0],"data",t),this.$selection.find(".select2-selection__rendered").prepend(r)}},e}),e.define("select2/selection/search",["jquery","../utils","../keys"],function(r,a,l){function e(e,t,n){e.call(this,t,n)}return e.prototype.render=function(e){var t=r('');this.$searchContainer=t,this.$search=t.find("input");var n=e.call(this);return this._transferTabIndex(),n},e.prototype.bind=function(e,t,n){var r=this,i=t.id+"-results";e.call(this,t,n),t.on("open",function(){r.$search.attr("aria-controls",i),r.$search.trigger("focus")}),t.on("close",function(){r.$search.val(""),r.$search.removeAttr("aria-controls"),r.$search.removeAttr("aria-activedescendant"),r.$search.trigger("focus")}),t.on("enable",function(){r.$search.prop("disabled",!1),r._transferTabIndex()}),t.on("disable",function(){r.$search.prop("disabled",!0)}),t.on("focus",function(e){r.$search.trigger("focus")}),t.on("results:focus",function(e){e.data._resultId?r.$search.attr("aria-activedescendant",e.data._resultId):r.$search.removeAttr("aria-activedescendant")}),this.$selection.on("focusin",".select2-search--inline",function(e){r.trigger("focus",e)}),this.$selection.on("focusout",".select2-search--inline",function(e){r._handleBlur(e)}),this.$selection.on("keydown",".select2-search--inline",function(e){if(e.stopPropagation(),r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented(),e.which===l.BACKSPACE&&""===r.$search.val()){var t=r.$searchContainer.prev(".select2-selection__choice");if(0this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define("select2/data/maximumSelectionLength",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("select",function(){r._checkIfMaximumSelected()})},e.prototype.query=function(e,t,n){var r=this;this._checkIfMaximumSelected(function(){e.call(r,t,n)})},e.prototype._checkIfMaximumSelected=function(e,n){var r=this;this.current(function(e){var t=null!=e?e.length:0;0=r.maximumSelectionLength?r.trigger("results:message",{message:"maximumSelected",args:{maximum:r.maximumSelectionLength}}):n&&n()})},e}),e.define("select2/dropdown",["jquery","./utils"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('');return e.attr("dir",this.options.get("dir")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),e.define("select2/dropdown/search",["jquery","../utils"],function(o,e){function t(){}return t.prototype.render=function(e){var t=e.call(this),n=o('');return this.$searchContainer=n,this.$search=n.find("input"),t.prepend(n),t},t.prototype.bind=function(e,t,n){var r=this,i=t.id+"-results";e.call(this,t,n),this.$search.on("keydown",function(e){r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on("input",function(e){o(this).off("keyup")}),this.$search.on("keyup input",function(e){r.handleSearch(e)}),t.on("open",function(){r.$search.attr("tabindex",0),r.$search.attr("aria-controls",i),r.$search.trigger("focus"),window.setTimeout(function(){r.$search.trigger("focus")},0)}),t.on("close",function(){r.$search.attr("tabindex",-1),r.$search.removeAttr("aria-controls"),r.$search.removeAttr("aria-activedescendant"),r.$search.val(""),r.$search.trigger("blur")}),t.on("focus",function(){t.isOpen()||r.$search.trigger("focus")}),t.on("results:all",function(e){null!=e.query.term&&""!==e.query.term||(r.showSearch(e)?r.$searchContainer.removeClass("select2-search--hide"):r.$searchContainer.addClass("select2-search--hide"))}),t.on("results:focus",function(e){e.data._resultId?r.$search.attr("aria-activedescendant",e.data._resultId):r.$search.removeAttr("aria-activedescendant")})},t.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},t.prototype.showSearch=function(e,t){return!0},t}),e.define("select2/dropdown/hidePlaceholder",[],function(){function e(e,t,n,r){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,r)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),r=t.length-1;0<=r;r--){var i=t[r];this.placeholder.id===i.id&&n.splice(r,1)}return n},e}),e.define("select2/dropdown/infiniteScroll",["jquery"],function(n){function e(e,t,n,r){this.lastParams={},e.call(this,t,n,r),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("query",function(e){r.lastParams=e,r.loading=!0}),t.on("query:append",function(e){r.lastParams=e,r.loading=!0}),this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},e.prototype.loadMoreIfNeeded=function(){var e=n.contains(document.documentElement,this.$loadingMore[0]);if(!this.loading&&e){var t=this.$results.offset().top+this.$results.outerHeight(!1);this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=t+50&&this.loadMore()}},e.prototype.loadMore=function(){this.loading=!0;var e=n.extend({},{page:1},this.lastParams);e.page++,this.trigger("query:append",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=n('
    • '),t=this.options.get("translations").get("loadingMore");return e.html(t(this.lastParams)),e},e}),e.define("select2/dropdown/attachBody",["jquery","../utils"],function(f,a){function e(e,t,n){this.$dropdownParent=f(n.get("dropdownParent")||document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("open",function(){r._showDropdown(),r._attachPositioningHandler(t),r._bindContainerResultHandlers(t)}),t.on("close",function(){r._hideDropdown(),r._detachPositioningHandler(t)}),this.$dropdownContainer.on("mousedown",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t.removeClass("select2"),t.addClass("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=f(""),n=e.call(this);return t.append(n),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._bindContainerResultHandlers=function(e,t){if(!this._containerResultsHandlersBound){var n=this;t.on("results:all",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:append",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:message",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("select",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("unselect",function(){n._positionDropdown(),n._resizeDropdown()}),this._containerResultsHandlersBound=!0}},e.prototype._attachPositioningHandler=function(e,t){var n=this,r="scroll.select2."+t.id,i="resize.select2."+t.id,o="orientationchange.select2."+t.id,s=this.$container.parents().filter(a.hasScroll);s.each(function(){a.StoreData(this,"select2-scroll-position",{x:f(this).scrollLeft(),y:f(this).scrollTop()})}),s.on(r,function(e){var t=a.GetData(this,"select2-scroll-position");f(this).scrollTop(t.y)}),f(window).on(r+" "+i+" "+o,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n="scroll.select2."+t.id,r="resize.select2."+t.id,i="orientationchange.select2."+t.id;this.$container.parents().filter(a.hasScroll).off(n),f(window).off(n+" "+r+" "+i)},e.prototype._positionDropdown=function(){var e=f(window),t=this.$dropdown.hasClass("select2-dropdown--above"),n=this.$dropdown.hasClass("select2-dropdown--below"),r=null,i=this.$container.offset();i.bottom=i.top+this.$container.outerHeight(!1);var o={height:this.$container.outerHeight(!1)};o.top=i.top,o.bottom=i.top+o.height;var s=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=ai.bottom+s,d={left:i.left,top:o.bottom},p=this.$dropdownParent;"static"===p.css("position")&&(p=p.offsetParent());var h={top:0,left:0};(f.contains(document.body,p[0])||p[0].isConnected)&&(h=p.offset()),d.top-=h.top,d.left-=h.left,t||n||(r="below"),u||!c||t?!c&&u&&t&&(r="below"):r="above",("above"==r||t&&"below"!==r)&&(d.top=o.top-h.top-s),null!=r&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+r),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+r)),this.$dropdownContainer.css(d)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),e.define("select2/dropdown/minimumResultsForSearch",[],function(){function e(e,t,n,r){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,r)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,r=0;r');return e.attr("dir",this.options.get("dir")),this.$container=e,this.$container.addClass("select2-container--"+this.options.get("theme")),u.StoreData(e[0],"element",this.$element),e},d}),e.define("jquery-mousewheel",["jquery"],function(e){return e}),e.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],function(i,e,o,t,s){if(null==i.fn.select2){var a=["open","close","destroy"];i.fn.select2=function(t){if("object"==typeof(t=t||{}))return this.each(function(){var e=i.extend(!0,{},t);new o(i(this),e)}),this;if("string"!=typeof t)throw new Error("Invalid arguments for Select2: "+t);var n,r=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=s.GetData(this,"select2");null==e&&window.console&&console.error&&console.error("The select2('"+t+"') method was called on an element that is not using Select2."),n=e[t].apply(e,r)}),-1 ${response.msg}

      `); + setTimeout(function () { + $('.gitf_feedback').hide(); + location.reload(); + }, 3000); + } else { + $('.gitf_feedback').show(); + $('.gitf_feedback').html(`

      ${response.msg}

      `); + setTimeout(function () { + $('.gitf_feedback').hide(); + // location.reload(); + }, 3000); + } + }, + error: function (err) { + $('.new_app').append(`

      يوجد مشكلة !!

      `) + } + }); + }); +}) \ No newline at end of file diff --git a/odex25_takaful/takaful_portal_sponsor/static/js/sponsorship_creation.js b/odex25_takaful/takaful_portal_sponsor/static/js/sponsorship_creation.js new file mode 100644 index 000000000..4dba7344b --- /dev/null +++ b/odex25_takaful/takaful_portal_sponsor/static/js/sponsorship_creation.js @@ -0,0 +1,102 @@ +$(document).ready(function () { + $(".widow_type").hide() + const urlSearchParams = new URLSearchParams(window.location.search); + const benefit_type = urlSearchParams.get("benefit_type"); + console.log(benefit_type); + const benefit_id = urlSearchParams.get("benefit_id"); + let benefit_type_input = $("#benefit_type_sponsorship") + let benefit_id_input = $("#benefit_id_sponsorship") + benefit_type_input.val(benefit_type); + benefit_id_input.val(benefit_id); + if (benefit_type_input.val() == 'orphan') { + $(".widow_type").hide() + } + else { + $(".widow_type").show() + } + + + $('#orphan_ids').on('change', function () { + var selectedOptions = $('#orphan_ids option:selected'); + $('#selected_options').empty(); // Clear the previous content + selectedOptions.each(function () { + var fullName = $(this).text().trim(); + var firstName = fullName.split(' ')[0]; + var spanElement = ` ${firstName} ` + $('#selected_options').append(spanElement); + }); + }); + + $(document).on('click', '.remove_btn', function () { + $(this).parent('span').remove(); + }); + + //show and hide gifter data depend on is_gift input + $('.gifter_data').hide(); + $('input[name="is_gift"]').change(function () { + if ($(this).val() === 'yes') { + $('.gifter_data').show(); + } else if ($(this).val() === 'no') { + + $('.gifter_data').hide(); + } + }); + $('.months_num').hide(); + $('#sponsorship_duration').change(function () { + if ($(this).val() === 'permanent') { + $('.months_num').hide(); + } else { + $('.months_num').show(); + } + }); + $('#months_number').on('input', function () { + var input1 = $(this).val(); + var input2 = $('#month_amount').val(); + $('#kafala_total').val(input1 * input2) + }); + + $('input[name="with_orphan"]').change(function () { + if ($(this).val() === 'yes') { + $('.isOrphan').show(); + } else if ($(this).val() === 'no') { + $('.isOrphan').hide(); + } + }); + + + let sponsorships_api = "/portal/sponsor/sponsorships/create/"; + $('form#single_sponsorship_form').on('submit', function (evt) { + evt.preventDefault(); + var form_data = $(this).serialize(); + $.ajax({ + type: "POST", + url: sponsorships_api, + data: form_data, + dataType: 'json', + processData: false, + success: function (response) { + console.log(response); + if (response.status === true) { + $('.sponsorship_creation_feedback').show(); + $('.sponsorship_creation_feedback').html(`

      ${response.msg}

      `); + setTimeout(function () { + $('.sponsorship_creation_feedback').hide(); + // location.reload(); + $('#SingleKafala').modal('hide'); + + }, 3000); + } else { + $('.sponsorship_creation_feedback').show(); + $('.sponsorship_creation_feedback').html(`

      ${response.msg}

      `); + setTimeout(function () { + // $('.sponsorship_creation_feedback').hide(); + // location.reload(); + }, 3000); + } + }, + error: function (err) { + $('.sponsorship_creation_feedback').append(`

      يوجد مشكلة !!

      `) + } + }); + }); +}); diff --git a/odex25_takaful/takaful_portal_sponsor/static/js/sponsorship_gift.js b/odex25_takaful/takaful_portal_sponsor/static/js/sponsorship_gift.js new file mode 100644 index 000000000..7baa0e15d --- /dev/null +++ b/odex25_takaful/takaful_portal_sponsor/static/js/sponsorship_gift.js @@ -0,0 +1,40 @@ +$(document).ready(function () { + const urlSearchParams = new URLSearchParams(window.location.search); + const benefit_id = urlSearchParams.get("benefit_id"); + $("#benefit_id").val(benefit_id); + let payment = "/portal/sponsor/paying_demo/save"; + $('form#gifter_form').on('submit', function (evt) { + evt.preventDefault(); + var form_data = $(this).serialize(); + $.ajax({ + type: "POST", + url: payment, + data: form_data, + dataType:'json', + processData: false, + success: function (response) { + console.log(response); + console.log(response.status); + console.log(response.msg); + if (response.status === true) { + $('.gitf_feedback').show(); + $('.gitf_feedback').html(`

      ${response.msg}

      `); + setTimeout(function () { + $('.gitf_feedback').hide(); + // location.reload(); + }, 3000); + } else { + $('.gitf_feedback').show(); + $('.gitf_feedback').html(`

      ${response.msg}

      `); + setTimeout(function () { + $('.gitf_feedback').hide(); + // location.reload(); + }, 3000); + } + }, + error: function (err) { + $('.new_app').html(`

      ${err.msg}

      `) + } + }); + }); +}) \ No newline at end of file diff --git a/odex25_takaful/takaful_portal_sponsor/static/js/sponsorship_needs_details.js b/odex25_takaful/takaful_portal_sponsor/static/js/sponsorship_needs_details.js new file mode 100644 index 000000000..97faffbdd --- /dev/null +++ b/odex25_takaful/takaful_portal_sponsor/static/js/sponsorship_needs_details.js @@ -0,0 +1,155 @@ +$(document).ready(function () { + const urlSearchParams = new URLSearchParams(window.location.search); + const benefit_type = urlSearchParams.get("benefit_type"); + const benefit_id = urlSearchParams.get("benefit_id"); + // benefit details + $.ajax({ + url: `/portal/sponsor/benefit/info?benefit_type=${benefit_type}&benefit_id=${benefit_id}`, + type: 'GET', + dataType: 'json', + success: function (data) { + result = data.benefit; + if(benefit_type == 'widow'){ + windowOrphans = result.orphan_ids + } + console.log(result); + var html = ''; + if (data.status) { + console.log(result); + html += + ` +
      +
      +
      + document + بيانات اليتيم +
      +
      +
        +
      • +
        الاسم
        + ${result.name} +
      • +
      • +
        الجنس
        + ${result.gender} +
      • +
      • +
        السن
        + ${result.age} +
      • +
      • +
        المدينة
        + ${result.city_id} +
      • +
      • +
        رقم اليتيم
        + ${result.number} +
      • +
      • +
        نوع الحالة
        + ${result.benefit_type} +
      • +
      +
      +
      +
      +
      + file + بيانات شخصية و إجتماعية +
      +
      +
        +
      • +
        العائل الحالي
        + ${result.responsible} +
      • +
      • +
        حالة السكن
        + ${result.housing_status} +
      • +
      • +
        التعليم
        + ${result.education_status} +
      • +
      • +
        المرحلة الدراسية
        + ${result.education_level} +
      • +
      • +
        الصف الدراسي
        + ${result.class_room} +
      • +
      • +
        الحالة الصحية
        + ${result.health_status} +
      • +
      • +
        كم يحفظ من القران
        + ${result.quran_parts} +
      • +
      +
      +
      +
      +
      +
      +
      + document + احتياجات اليتيم +
      +
      +
        +
      • +
        نسبة الإحتياج
        + ${result.benefit_needs_percent} % +
      • +
      • +
        احتياجات طارئة
        + ${result.benefit_available_need} +
      • +
      • +
        متأخرات مالية
        + ${result.benefit_arrears_value} +
      • +
      • +
        الاحتياج الشهري
        + ${result.benefit_total_need} +
      • +
      +
      +
      +
      + ` + $('.makfoul_data .need_sponsorship_details').html(html); + $("#gift_modal #name, #contribution_modal #name, #SingleKafala #name").val(result.name) + $("#gift_modal #number, #contribution_modal #number, #SingleKafala #number").val(result.number) + $("#gift_modal #benefit_type, #contribution_modal #benefit_type, #SingleKafala #benefit_type").val(result.benefit_type) + $(".need_sponsorship_name").append( ` اليتيم ${result.name} ` ) + $('#SingleKafala #month_amount').val(result.benefit_total_need) + + windowOrphans.forEach((element, i) => { + $('#orphan_ids').append( + + ` + + ` + ) + + }); + } + else { + console.log(data.msg); + } + }, + error: function (error) { + console.log(error); + } + }); +}) \ No newline at end of file diff --git a/odex25_takaful/takaful_portal_sponsor/static/js/sponsorships_needs.js b/odex25_takaful/takaful_portal_sponsor/static/js/sponsorships_needs.js new file mode 100644 index 000000000..3d36650ca --- /dev/null +++ b/odex25_takaful/takaful_portal_sponsor/static/js/sponsorships_needs.js @@ -0,0 +1,74 @@ + +$(document).ready(function () { + var currentPage = 1; + var benefitType = 'orphan'; // Default value + var prev + var next + function loadNeedSponsorships(page) { + $.ajax({ + url: '/portal/sys/benefits/page/' + page, + type: 'GET', + data: { benefit_type: benefitType }, + dataType: 'json', + success: function (data) { + results = data.results; + console.log(results); + var html = ''; + if (data.status) { + results.forEach((element, i) => { + html += + ` + + ${i + 1} + ${element.first_name} + ${element.gender} + ${element.age} + ${element.city_id} + ${element.benefit_type} + ${element.benefit_needs_percent} % + + + + + ` + $('#benefit_ids').append(``) + }); + $('.need_sponsorship tbody').html(html); + next = data.next_page; + prev = (currentPage > 1) ? currentPage - 1 : null; + currentPage = page; + + } + else { + console.log(data.msg); + } + }, + error: function (error) { + console.log(error); + } + }); + } + loadNeedSponsorships(1); + function updateButtons(next, prev) { + $('#benefits-next').attr('disabled', (next == null)); + $('#benefits-prev').attr('disabled', (prev == null)); + } + + $('#benefit-type').change(function () { + benefitType = $(this).val(); + $('.financial_donation tbody tr #benefit_dtls').data("type", benefitType) + loadNeedSponsorships(1); + }); + $('#benefits-prev').click(function () { + loadNeedSponsorships(currentPage - 1); + updateButtons(next, prev) + + }); + $('#benefits-next').click(function () { + loadNeedSponsorships(currentPage + 1); + updateButtons(next, prev) + }); + +}) \ No newline at end of file diff --git a/odex25_takaful/takaful_portal_sponsor/static/js/sponsorships_pay.js b/odex25_takaful/takaful_portal_sponsor/static/js/sponsorships_pay.js new file mode 100644 index 000000000..bb07849d5 --- /dev/null +++ b/odex25_takaful/takaful_portal_sponsor/static/js/sponsorships_pay.js @@ -0,0 +1,75 @@ +$(document).ready(function () { + var currentPage = 1; + var benefitType = 'orphan'; // Default value + var prev + function sponsorshipPay(page) { + $.ajax({ + url: '/portal/sponsor/sponsorships/page/' + page, + type: 'GET', + data: { benefit_type: benefitType }, + dataType: 'json', + success: function (data) { + results = data.results; + const filteredData = results.filter(item => item.month_count == 0); + console.log(filteredData); + var html = ''; + if (data.status) { + filteredData.forEach((element, i) => { + html += + ` + + ${i + 1} + ${element.benefit_id.name} + ${element.benefit_id.gender} + ${element.benefit_id.age} + ${element.benefit_id.city_id} + ${element.benefit_id.benefit_type} + ${element.benefit_id.benefit_needs_percent} % + ${element.benefit_id.benefit_arrears_value} + ${element.start_date} + +
      + بحاجة للتجديد + سداد +
      + + + + ` + }); + $('.sponsorships_pay tbody').html(html); + next = data.next_page; + prev = (currentPage > 1) ? currentPage - 1 : null; + currentPage = page; + } + else { + console.log(data.msg); + } + }, + error: function (jqXHR, textStatus, errorThrown) { + console.log(textStatus + ': ' + errorThrown); + } + }); + } + sponsorshipPay(1); + sponsorshipsCancelation(1) + function updateButtons(next, prev) { + $('#benefits-next').attr('disabled', (next == null)); + $('#benefits-prev').attr('disabled', (prev == null)); + } + $('#benefit-type').change(function () { + benefitType = $(this).val(); + $('.financial_donation tbody tr').data("type", benefitType) + sponsorshipPay(1); + }); + $('#benefits-prev').click(function () { + sponsorshipPay(currentPage - 1); + updateButtons(next, prev) + + }); + $('#benefits-next').click(function () { + sponsorshipPay(currentPage + 1); + updateButtons(next, prev) + }); + +}); \ No newline at end of file diff --git a/odex25_takaful/takaful_portal_sponsor/static/libs/bootstrap3/bootstrap-theme.min.css b/odex25_takaful/takaful_portal_sponsor/static/libs/bootstrap3/bootstrap-theme.min.css new file mode 100644 index 000000000..69cc8f2ae --- /dev/null +++ b/odex25_takaful/takaful_portal_sponsor/static/libs/bootstrap3/bootstrap-theme.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:100% -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:100% -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:100% -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:100% -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:100% -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:100% -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-webkit-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} +/*# sourceMappingURL=bootstrap-theme.min.css.map */ \ No newline at end of file diff --git a/odex25_takaful/takaful_portal_sponsor/static/libs/bootstrap3/bootstrap.js b/odex25_takaful/takaful_portal_sponsor/static/libs/bootstrap3/bootstrap.js new file mode 100644 index 000000000..01fbbcbaa --- /dev/null +++ b/odex25_takaful/takaful_portal_sponsor/static/libs/bootstrap3/bootstrap.js @@ -0,0 +1,2363 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the MIT license + */ + +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery') +} + ++function ($) { + 'use strict'; + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 2)) { + throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3') + } +}(jQuery); + +/* ======================================================================== + * Bootstrap: transition.js v3.3.6 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.3.6 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.3.6' + + Alert.TRANSITION_DURATION = 150 + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.3.6 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.3.6' + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state += 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked')) changed = false + $parent.find('.active').removeClass('active') + this.$element.addClass('active') + } else if ($input.prop('type') == 'checkbox') { + if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false + this.$element.toggleClass('active') + } + $input.prop('checked', this.$element.hasClass('active')) + if (changed) $input.trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + this.$element.toggleClass('active') + } + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document) + .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + Plugin.call($btn, 'toggle') + if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault() + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.3.6 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = null + this.sliding = null + this.interval = null + this.$active = null + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.3.6' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var activeIndex = this.getItemIndex(active) + var willWrap = (direction == 'prev' && activeIndex === 0) + || (direction == 'next' && activeIndex == (this.$items.length - 1)) + if (willWrap && !this.options.wrap) return active + var delta = direction == 'prev' ? -1 : 1 + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var that = this + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.3.6 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + + '[data-toggle="collapse"][data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.6' + + Collapse.TRANSITION_DURATION = 350 + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var activesData + var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 + this.$element + .trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var $this = $(this) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + + Plugin.call($target, option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.6 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.3.6' + + function getParent($this) { + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = selector && $(selector) + + return $parent && $parent.length ? $parent : $this.parent() + } + + function clearMenus(e) { + if (e && e.which === 3) return + $(backdrop).remove() + $(toggle).each(function () { + var $this = $(this) + var $parent = getParent($this) + var relatedTarget = { relatedTarget: this } + + if (!$parent.hasClass('open')) return + + if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return + + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this.attr('aria-expanded', 'false') + $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) + }) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $(document.createElement('div')) + .addClass('dropdown-backdrop') + .insertAfter($(this)) + .on('click', clearMenus) + } + + var relatedTarget = { relatedTarget: this } + $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this + .trigger('focus') + .attr('aria-expanded', 'true') + + $parent + .toggleClass('open') + .trigger($.Event('shown.bs.dropdown', relatedTarget)) + } + + return false + } + + Dropdown.prototype.keydown = function (e) { + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return + + var $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + if (!isActive && e.which != 27 || isActive && e.which == 27) { + if (e.which == 27) $parent.find(toggle).trigger('focus') + return $this.trigger('click') + } + + var desc = ' li:not(.disabled):visible a' + var $items = $parent.find('.dropdown-menu' + desc) + + if (!$items.length) return + + var index = $items.index(e.target) + + if (e.which == 38 && index > 0) index-- // up + if (e.which == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items.eq(index).trigger('focus') + } + + + // DROPDOWN PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.dropdown') + + if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.dropdown + + $.fn.dropdown = Plugin + $.fn.dropdown.Constructor = Dropdown + + + // DROPDOWN NO CONFLICT + // ==================== + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + $(document) + .on('click.bs.dropdown.data-api', clearMenus) + .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) + .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: modal.js v3.3.6 + * http://getbootstrap.com/javascript/#modals + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // MODAL CLASS DEFINITION + // ====================== + + var Modal = function (element, options) { + this.options = options + this.$body = $(document.body) + this.$element = $(element) + this.$dialog = this.$element.find('.modal-dialog') + this.$backdrop = null + this.isShown = null + this.originalBodyPad = null + this.scrollbarWidth = 0 + this.ignoreBackdropClick = false + + if (this.options.remote) { + this.$element + .find('.modal-content') + .load(this.options.remote, $.proxy(function () { + this.$element.trigger('loaded.bs.modal') + }, this)) + } + } + + Modal.VERSION = '3.3.6' + + Modal.TRANSITION_DURATION = 300 + Modal.BACKDROP_TRANSITION_DURATION = 150 + + Modal.DEFAULTS = { + backdrop: true, + keyboard: true, + show: true + } + + Modal.prototype.toggle = function (_relatedTarget) { + return this.isShown ? this.hide() : this.show(_relatedTarget) + } + + Modal.prototype.show = function (_relatedTarget) { + var that = this + var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.checkScrollbar() + this.setScrollbar() + this.$body.addClass('modal-open') + + this.escape() + this.resize() + + this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) + + this.$dialog.on('mousedown.dismiss.bs.modal', function () { + that.$element.one('mouseup.dismiss.bs.modal', function (e) { + if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true + }) + }) + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(that.$body) // don't move modals dom position + } + + that.$element + .show() + .scrollTop(0) + + that.adjustDialog() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + that.enforceFocus() + + var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) + + transition ? + that.$dialog // wait for modal to slide in + .one('bsTransitionEnd', function () { + that.$element.trigger('focus').trigger(e) + }) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + that.$element.trigger('focus').trigger(e) + }) + } + + Modal.prototype.hide = function (e) { + if (e) e.preventDefault() + + e = $.Event('hide.bs.modal') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + this.resize() + + $(document).off('focusin.bs.modal') + + this.$element + .removeClass('in') + .off('click.dismiss.bs.modal') + .off('mouseup.dismiss.bs.modal') + + this.$dialog.off('mousedown.dismiss.bs.modal') + + $.support.transition && this.$element.hasClass('fade') ? + this.$element + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + this.hideModal() + } + + Modal.prototype.enforceFocus = function () { + $(document) + .off('focusin.bs.modal') // guard against infinite focus loop + .on('focusin.bs.modal', $.proxy(function (e) { + if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { + this.$element.trigger('focus') + } + }, this)) + } + + Modal.prototype.escape = function () { + if (this.isShown && this.options.keyboard) { + this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { + e.which == 27 && this.hide() + }, this)) + } else if (!this.isShown) { + this.$element.off('keydown.dismiss.bs.modal') + } + } + + Modal.prototype.resize = function () { + if (this.isShown) { + $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) + } else { + $(window).off('resize.bs.modal') + } + } + + Modal.prototype.hideModal = function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.$body.removeClass('modal-open') + that.resetAdjustments() + that.resetScrollbar() + that.$element.trigger('hidden.bs.modal') + }) + } + + Modal.prototype.removeBackdrop = function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + Modal.prototype.backdrop = function (callback) { + var that = this + var animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $(document.createElement('div')) + .addClass('modal-backdrop ' + animate) + .appendTo(this.$body) + + this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { + if (this.ignoreBackdropClick) { + this.ignoreBackdropClick = false + return + } + if (e.target !== e.currentTarget) return + this.options.backdrop == 'static' + ? this.$element[0].focus() + : this.hide() + }, this)) + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + if (!callback) return + + doAnimate ? + this.$backdrop + .one('bsTransitionEnd', callback) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + var callbackRemove = function () { + that.removeBackdrop() + callback && callback() + } + $.support.transition && this.$element.hasClass('fade') ? + this.$backdrop + .one('bsTransitionEnd', callbackRemove) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callbackRemove() + + } else if (callback) { + callback() + } + } + + // these following methods are used to handle overflowing modals + + Modal.prototype.handleUpdate = function () { + this.adjustDialog() + } + + Modal.prototype.adjustDialog = function () { + var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight + + this.$element.css({ + paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', + paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' + }) + } + + Modal.prototype.resetAdjustments = function () { + this.$element.css({ + paddingLeft: '', + paddingRight: '' + }) + } + + Modal.prototype.checkScrollbar = function () { + var fullWindowWidth = window.innerWidth + if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect() + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) + } + this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth + this.scrollbarWidth = this.measureScrollbar() + } + + Modal.prototype.setScrollbar = function () { + var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) + this.originalBodyPad = document.body.style.paddingRight || '' + if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) + } + + Modal.prototype.resetScrollbar = function () { + this.$body.css('padding-right', this.originalBodyPad) + } + + Modal.prototype.measureScrollbar = function () { // thx walsh + var scrollDiv = document.createElement('div') + scrollDiv.className = 'modal-scrollbar-measure' + this.$body.append(scrollDiv) + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth + this.$body[0].removeChild(scrollDiv) + return scrollbarWidth + } + + + // MODAL PLUGIN DEFINITION + // ======================= + + function Plugin(option, _relatedTarget) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.modal') + var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option](_relatedTarget) + else if (options.show) data.show(_relatedTarget) + }) + } + + var old = $.fn.modal + + $.fn.modal = Plugin + $.fn.modal.Constructor = Modal + + + // MODAL NO CONFLICT + // ================= + + $.fn.modal.noConflict = function () { + $.fn.modal = old + return this + } + + + // MODAL DATA-API + // ============== + + $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { + var $this = $(this) + var href = $this.attr('href') + var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 + var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) + + if ($this.is('a')) e.preventDefault() + + $target.one('show.bs.modal', function (showEvent) { + if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown + $target.one('hidden.bs.modal', function () { + $this.is(':visible') && $this.trigger('focus') + }) + }) + Plugin.call($target, option, this) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tooltip.js v3.3.6 + * http://getbootstrap.com/javascript/#tooltip + * Inspired by the original jQuery.tipsy by Jason Frame + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TOOLTIP PUBLIC CLASS DEFINITION + // =============================== + + var Tooltip = function (element, options) { + this.type = null + this.options = null + this.enabled = null + this.timeout = null + this.hoverState = null + this.$element = null + this.inState = null + + this.init('tooltip', element, options) + } + + Tooltip.VERSION = '3.3.6' + + Tooltip.TRANSITION_DURATION = 150 + + Tooltip.DEFAULTS = { + animation: true, + placement: 'top', + selector: false, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + container: false, + viewport: { + selector: 'body', + padding: 0 + } + } + + Tooltip.prototype.init = function (type, element, options) { + this.enabled = true + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) + this.inState = { click: false, hover: false, focus: false } + + if (this.$element[0] instanceof document.constructor && !this.options.selector) { + throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') + } + + var triggers = this.options.trigger.split(' ') + + for (var i = triggers.length; i--;) { + var trigger = triggers[i] + + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' + var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' + + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + Tooltip.prototype.getDefaults = function () { + return Tooltip.DEFAULTS + } + + Tooltip.prototype.getOptions = function (options) { + options = $.extend({}, this.getDefaults(), this.$element.data(), options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay, + hide: options.delay + } + } + + return options + } + + Tooltip.prototype.getDelegateOptions = function () { + var options = {} + var defaults = this.getDefaults() + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }) + + return options + } + + Tooltip.prototype.enter = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true + } + + if (self.tip().hasClass('in') || self.hoverState == 'in') { + self.hoverState = 'in' + return + } + + clearTimeout(self.timeout) + + self.hoverState = 'in' + + if (!self.options.delay || !self.options.delay.show) return self.show() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + Tooltip.prototype.isInStateTrue = function () { + for (var key in this.inState) { + if (this.inState[key]) return true + } + + return false + } + + Tooltip.prototype.leave = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false + } + + if (self.isInStateTrue()) return + + clearTimeout(self.timeout) + + self.hoverState = 'out' + + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + Tooltip.prototype.show = function () { + var e = $.Event('show.bs.' + this.type) + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + + var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) + if (e.isDefaultPrevented() || !inDom) return + var that = this + + var $tip = this.tip() + + var tipId = this.getUID(this.type) + + this.setContent() + $tip.attr('id', tipId) + this.$element.attr('aria-describedby', tipId) + + if (this.options.animation) $tip.addClass('fade') + + var placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + var autoToken = /\s?auto?\s?/i + var autoPlace = autoToken.test(placement) + if (autoPlace) placement = placement.replace(autoToken, '') || 'top' + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + .addClass(placement) + .data('bs.' + this.type, this) + + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + this.$element.trigger('inserted.bs.' + this.type) + + var pos = this.getPosition() + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (autoPlace) { + var orgPlacement = placement + var viewportDim = this.getPosition(this.$viewport) + + placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : + placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : + placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : + placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : + placement + + $tip + .removeClass(orgPlacement) + .addClass(placement) + } + + var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) + + this.applyPlacement(calculatedOffset, placement) + + var complete = function () { + var prevHoverState = that.hoverState + that.$element.trigger('shown.bs.' + that.type) + that.hoverState = null + + if (prevHoverState == 'out') that.leave(that) + } + + $.support.transition && this.$tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + } + } + + Tooltip.prototype.applyPlacement = function (offset, placement) { + var $tip = this.tip() + var width = $tip[0].offsetWidth + var height = $tip[0].offsetHeight + + // manually read margins because getBoundingClientRect includes difference + var marginTop = parseInt($tip.css('margin-top'), 10) + var marginLeft = parseInt($tip.css('margin-left'), 10) + + // we must check for NaN for ie 8/9 + if (isNaN(marginTop)) marginTop = 0 + if (isNaN(marginLeft)) marginLeft = 0 + + offset.top += marginTop + offset.left += marginLeft + + // $.fn.offset doesn't round pixel values + // so we use setOffset directly with our own function B-0 + $.offset.setOffset($tip[0], $.extend({ + using: function (props) { + $tip.css({ + top: Math.round(props.top), + left: Math.round(props.left) + }) + } + }, offset), 0) + + $tip.addClass('in') + + // check to see if placing tip in new offset caused the tip to resize itself + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + offset.top = offset.top + height - actualHeight + } + + var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) + + if (delta.left) offset.left += delta.left + else offset.top += delta.top + + var isVertical = /top|bottom/.test(placement) + var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight + var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' + + $tip.offset(offset) + this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) + } + + Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { + this.arrow() + .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') + .css(isVertical ? 'top' : 'left', '') + } + + Tooltip.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + Tooltip.prototype.hide = function (callback) { + var that = this + var $tip = $(this.$tip) + var e = $.Event('hide.bs.' + this.type) + + function complete() { + if (that.hoverState != 'in') $tip.detach() + that.$element + .removeAttr('aria-describedby') + .trigger('hidden.bs.' + that.type) + callback && callback() + } + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + $.support.transition && $tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + + this.hoverState = null + + return this + } + + Tooltip.prototype.fixTitle = function () { + var $e = this.$element + if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + Tooltip.prototype.hasContent = function () { + return this.getTitle() + } + + Tooltip.prototype.getPosition = function ($element) { + $element = $element || this.$element + + var el = $element[0] + var isBody = el.tagName == 'BODY' + + var elRect = el.getBoundingClientRect() + if (elRect.width == null) { + // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 + elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) + } + var elOffset = isBody ? { top: 0, left: 0 } : $element.offset() + var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } + var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null + + return $.extend({}, elRect, scroll, outerDims, elOffset) + } + + Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { + return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : + /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } + + } + + Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { + var delta = { top: 0, left: 0 } + if (!this.$viewport) return delta + + var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 + var viewportDimensions = this.getPosition(this.$viewport) + + if (/right|left/.test(placement)) { + var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll + var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight + if (topEdgeOffset < viewportDimensions.top) { // top overflow + delta.top = viewportDimensions.top - topEdgeOffset + } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow + delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset + } + } else { + var leftEdgeOffset = pos.left - viewportPadding + var rightEdgeOffset = pos.left + viewportPadding + actualWidth + if (leftEdgeOffset < viewportDimensions.left) { // left overflow + delta.left = viewportDimensions.left - leftEdgeOffset + } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow + delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset + } + } + + return delta + } + + Tooltip.prototype.getTitle = function () { + var title + var $e = this.$element + var o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + Tooltip.prototype.getUID = function (prefix) { + do prefix += ~~(Math.random() * 1000000) + while (document.getElementById(prefix)) + return prefix + } + + Tooltip.prototype.tip = function () { + if (!this.$tip) { + this.$tip = $(this.options.template) + if (this.$tip.length != 1) { + throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') + } + } + return this.$tip + } + + Tooltip.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) + } + + Tooltip.prototype.enable = function () { + this.enabled = true + } + + Tooltip.prototype.disable = function () { + this.enabled = false + } + + Tooltip.prototype.toggleEnabled = function () { + this.enabled = !this.enabled + } + + Tooltip.prototype.toggle = function (e) { + var self = this + if (e) { + self = $(e.currentTarget).data('bs.' + this.type) + if (!self) { + self = new this.constructor(e.currentTarget, this.getDelegateOptions()) + $(e.currentTarget).data('bs.' + this.type, self) + } + } + + if (e) { + self.inState.click = !self.inState.click + if (self.isInStateTrue()) self.enter(self) + else self.leave(self) + } else { + self.tip().hasClass('in') ? self.leave(self) : self.enter(self) + } + } + + Tooltip.prototype.destroy = function () { + var that = this + clearTimeout(this.timeout) + this.hide(function () { + that.$element.off('.' + that.type).removeData('bs.' + that.type) + if (that.$tip) { + that.$tip.detach() + } + that.$tip = null + that.$arrow = null + that.$viewport = null + }) + } + + + // TOOLTIP PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tooltip') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tooltip + + $.fn.tooltip = Plugin + $.fn.tooltip.Constructor = Tooltip + + + // TOOLTIP NO CONFLICT + // =================== + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: popover.js v3.3.6 + * http://getbootstrap.com/javascript/#popovers + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // POPOVER PUBLIC CLASS DEFINITION + // =============================== + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') + + Popover.VERSION = '3.3.6' + + Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }) + + + // NOTE: POPOVER EXTENDS tooltip.js + // ================================ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) + + Popover.prototype.constructor = Popover + + Popover.prototype.getDefaults = function () { + return Popover.DEFAULTS + } + + Popover.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + var content = this.getContent() + + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) + $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events + this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' + ](content) + + $tip.removeClass('fade top bottom left right in') + + // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do + // this manually by checking the contents. + if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() + } + + Popover.prototype.hasContent = function () { + return this.getTitle() || this.getContent() + } + + Popover.prototype.getContent = function () { + var $e = this.$element + var o = this.options + + return $e.attr('data-content') + || (typeof o.content == 'function' ? + o.content.call($e[0]) : + o.content) + } + + Popover.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.arrow')) + } + + + // POPOVER PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.popover') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.popover + + $.fn.popover = Plugin + $.fn.popover.Constructor = Popover + + + // POPOVER NO CONFLICT + // =================== + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: scrollspy.js v3.3.6 + * http://getbootstrap.com/javascript/#scrollspy + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + function ScrollSpy(element, options) { + this.$body = $(document.body) + this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + this.selector = (this.options.target || '') + ' .nav li > a' + this.offsets = [] + this.targets = [] + this.activeTarget = null + this.scrollHeight = 0 + + this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) + this.refresh() + this.process() + } + + ScrollSpy.VERSION = '3.3.6' + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.getScrollHeight = function () { + return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) + } + + ScrollSpy.prototype.refresh = function () { + var that = this + var offsetMethod = 'offset' + var offsetBase = 0 + + this.offsets = [] + this.targets = [] + this.scrollHeight = this.getScrollHeight() + + if (!$.isWindow(this.$scrollElement[0])) { + offsetMethod = 'position' + offsetBase = this.$scrollElement.scrollTop() + } + + this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(href) + + return ($href + && $href.length + && $href.is(':visible') + && [[$href[offsetMethod]().top + offsetBase, href]]) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + that.offsets.push(this[0]) + that.targets.push(this[1]) + }) + } + + ScrollSpy.prototype.process = function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.getScrollHeight() + var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if (this.scrollHeight != scrollHeight) { + this.refresh() + } + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) + } + + if (activeTarget && scrollTop < offsets[0]) { + this.activeTarget = null + return this.clear() + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) + && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function (target) { + this.activeTarget = target + + this.clear() + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.bs.scrollspy') + } + + ScrollSpy.prototype.clear = function () { + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.scrollspy') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.scrollspy + + $.fn.scrollspy = Plugin + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load.bs.scrollspy.data-api', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + Plugin.call($spy, $spy.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tab.js v3.3.6 + * http://getbootstrap.com/javascript/#tabs + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TAB CLASS DEFINITION + // ==================== + + var Tab = function (element) { + // jscs:disable requireDollarBeforejQueryAssignment + this.element = $(element) + // jscs:enable requireDollarBeforejQueryAssignment + } + + Tab.VERSION = '3.3.6' + + Tab.TRANSITION_DURATION = 150 + + Tab.prototype.show = function () { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.data('target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + if ($this.parent('li').hasClass('active')) return + + var $previous = $ul.find('.active:last a') + var hideEvent = $.Event('hide.bs.tab', { + relatedTarget: $this[0] + }) + var showEvent = $.Event('show.bs.tab', { + relatedTarget: $previous[0] + }) + + $previous.trigger(hideEvent) + $this.trigger(showEvent) + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return + + var $target = $(selector) + + this.activate($this.closest('li'), $ul) + this.activate($target, $target.parent(), function () { + $previous.trigger({ + type: 'hidden.bs.tab', + relatedTarget: $this[0] + }) + $this.trigger({ + type: 'shown.bs.tab', + relatedTarget: $previous[0] + }) + }) + } + + Tab.prototype.activate = function (element, container, callback) { + var $active = container.find('> .active') + var transition = callback + && $.support.transition + && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', false) + + element + .addClass('active') + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if (element.parent('.dropdown-menu').length) { + element + .closest('li.dropdown') + .addClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + } + + callback && callback() + } + + $active.length && transition ? + $active + .one('bsTransitionEnd', next) + .emulateTransitionEnd(Tab.TRANSITION_DURATION) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tab') + + if (!data) $this.data('bs.tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tab + + $.fn.tab = Plugin + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + var clickHandler = function (e) { + e.preventDefault() + Plugin.call($(this), 'show') + } + + $(document) + .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) + .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: affix.js v3.3.6 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + + this.$target = $(this.options.target) + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) + + this.$element = $(element) + this.affixed = null + this.unpin = null + this.pinnedOffset = null + + this.checkPosition() + } + + Affix.VERSION = '3.3.6' + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0, + target: window + } + + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var targetHeight = this.$target.height() + + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false + + if (this.affixed == 'bottom') { + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' + } + + var initializing = this.affixed == null + var colliderTop = initializing ? scrollTop : position.top + var colliderHeight = initializing ? targetHeight : height + + if (offsetTop != null && scrollTop <= offsetTop) return 'top' + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' + + return false + } + + Affix.prototype.getPinnedOffset = function () { + if (this.pinnedOffset) return this.pinnedOffset + this.$element.removeClass(Affix.RESET).addClass('affix') + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + return (this.pinnedOffset = position.top - scrollTop) + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var height = this.$element.height() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + var scrollHeight = Math.max($(document).height(), $(document.body).height()) + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) + + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) + + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') + + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.affix + + $.fn.affix = Plugin + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + +}(jQuery); diff --git a/odex25_takaful/takaful_portal_sponsor/static/libs/bootstrap3/bootstrap.min.css b/odex25_takaful/takaful_portal_sponsor/static/libs/bootstrap3/bootstrap.min.css new file mode 100644 index 000000000..6a8dab392 --- /dev/null +++ b/odex25_takaful/takaful_portal_sponsor/static/libs/bootstrap3/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e054"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e052"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e058"}.glyphicon-indent-right:before{content:"\e057"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e080"}.glyphicon-chevron-right:before{content:"\e079"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e092"}.glyphicon-arrow-right:before{content:"\e091"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e128"}.glyphicon-hand-left:before{content:"\e127"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e132"}.glyphicon-circle-arrow-left:before{content:"\e131"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e249"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e247"}.glyphicon-triangle-right:before{content:"\e251"}.glyphicon-triangle-left:before{content:"\e250"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e258"}.glyphicon-menu-right:before{content:"\e257"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:right}.text-right{text-align:left}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-right:0;list-style:none}.list-inline{padding-right:0;margin-right:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-right:0}@media (min-width:768px){.dl-horizontal dt{float:right;width:160px;overflow:hidden;clear:right;text-align:left;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-right:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-right:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:0;padding-left:15px;text-align:left;border-right:0;border-left:5px solid #eee}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:right}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{left:100%}.col-xs-pull-11{left:91.66666667%}.col-xs-pull-10{left:83.33333333%}.col-xs-pull-9{left:75%}.col-xs-pull-8{left:66.66666667%}.col-xs-pull-7{left:58.33333333%}.col-xs-pull-6{left:50%}.col-xs-pull-5{left:41.66666667%}.col-xs-pull-4{left:33.33333333%}.col-xs-pull-3{left:25%}.col-xs-pull-2{left:16.66666667%}.col-xs-pull-1{left:8.33333333%}.col-xs-pull-0{left:auto}.col-xs-push-12{right:100%}.col-xs-push-11{right:91.66666667%}.col-xs-push-10{right:83.33333333%}.col-xs-push-9{right:75%}.col-xs-push-8{right:66.66666667%}.col-xs-push-7{right:58.33333333%}.col-xs-push-6{right:50%}.col-xs-push-5{right:41.66666667%}.col-xs-push-4{right:33.33333333%}.col-xs-push-3{right:25%}.col-xs-push-2{right:16.66666667%}.col-xs-push-1{right:8.33333333%}.col-xs-push-0{right:auto}.col-xs-offset-12{margin-right:100%}.col-xs-offset-11{margin-right:91.66666667%}.col-xs-offset-10{margin-right:83.33333333%}.col-xs-offset-9{margin-right:75%}.col-xs-offset-8{margin-right:66.66666667%}.col-xs-offset-7{margin-right:58.33333333%}.col-xs-offset-6{margin-right:50%}.col-xs-offset-5{margin-right:41.66666667%}.col-xs-offset-4{margin-right:33.33333333%}.col-xs-offset-3{margin-right:25%}.col-xs-offset-2{margin-right:16.66666667%}.col-xs-offset-1{margin-right:8.33333333%}.col-xs-offset-0{margin-right:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:right}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{left:100%}.col-sm-pull-11{left:91.66666667%}.col-sm-pull-10{left:83.33333333%}.col-sm-pull-9{left:75%}.col-sm-pull-8{left:66.66666667%}.col-sm-pull-7{left:58.33333333%}.col-sm-pull-6{left:50%}.col-sm-pull-5{left:41.66666667%}.col-sm-pull-4{left:33.33333333%}.col-sm-pull-3{left:25%}.col-sm-pull-2{left:16.66666667%}.col-sm-pull-1{left:8.33333333%}.col-sm-pull-0{left:auto}.col-sm-push-12{right:100%}.col-sm-push-11{right:91.66666667%}.col-sm-push-10{right:83.33333333%}.col-sm-push-9{right:75%}.col-sm-push-8{right:66.66666667%}.col-sm-push-7{right:58.33333333%}.col-sm-push-6{right:50%}.col-sm-push-5{right:41.66666667%}.col-sm-push-4{right:33.33333333%}.col-sm-push-3{right:25%}.col-sm-push-2{right:16.66666667%}.col-sm-push-1{right:8.33333333%}.col-sm-push-0{right:auto}.col-sm-offset-12{margin-right:100%}.col-sm-offset-11{margin-right:91.66666667%}.col-sm-offset-10{margin-right:83.33333333%}.col-sm-offset-9{margin-right:75%}.col-sm-offset-8{margin-right:66.66666667%}.col-sm-offset-7{margin-right:58.33333333%}.col-sm-offset-6{margin-right:50%}.col-sm-offset-5{margin-right:41.66666667%}.col-sm-offset-4{margin-right:33.33333333%}.col-sm-offset-3{margin-right:25%}.col-sm-offset-2{margin-right:16.66666667%}.col-sm-offset-1{margin-right:8.33333333%}.col-sm-offset-0{margin-right:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:right}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{left:100%}.col-md-pull-11{left:91.66666667%}.col-md-pull-10{left:83.33333333%}.col-md-pull-9{left:75%}.col-md-pull-8{left:66.66666667%}.col-md-pull-7{left:58.33333333%}.col-md-pull-6{left:50%}.col-md-pull-5{left:41.66666667%}.col-md-pull-4{left:33.33333333%}.col-md-pull-3{left:25%}.col-md-pull-2{left:16.66666667%}.col-md-pull-1{left:8.33333333%}.col-md-pull-0{left:auto}.col-md-push-12{right:100%}.col-md-push-11{right:91.66666667%}.col-md-push-10{right:83.33333333%}.col-md-push-9{right:75%}.col-md-push-8{right:66.66666667%}.col-md-push-7{right:58.33333333%}.col-md-push-6{right:50%}.col-md-push-5{right:41.66666667%}.col-md-push-4{right:33.33333333%}.col-md-push-3{right:25%}.col-md-push-2{right:16.66666667%}.col-md-push-1{right:8.33333333%}.col-md-push-0{right:auto}.col-md-offset-12{margin-right:100%}.col-md-offset-11{margin-right:91.66666667%}.col-md-offset-10{margin-right:83.33333333%}.col-md-offset-9{margin-right:75%}.col-md-offset-8{margin-right:66.66666667%}.col-md-offset-7{margin-right:58.33333333%}.col-md-offset-6{margin-right:50%}.col-md-offset-5{margin-right:41.66666667%}.col-md-offset-4{margin-right:33.33333333%}.col-md-offset-3{margin-right:25%}.col-md-offset-2{margin-right:16.66666667%}.col-md-offset-1{margin-right:8.33333333%}.col-md-offset-0{margin-right:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:right}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{left:100%}.col-lg-pull-11{left:91.66666667%}.col-lg-pull-10{left:83.33333333%}.col-lg-pull-9{left:75%}.col-lg-pull-8{left:66.66666667%}.col-lg-pull-7{left:58.33333333%}.col-lg-pull-6{left:50%}.col-lg-pull-5{left:41.66666667%}.col-lg-pull-4{left:33.33333333%}.col-lg-pull-3{left:25%}.col-lg-pull-2{left:16.66666667%}.col-lg-pull-1{left:8.33333333%}.col-lg-pull-0{left:auto}.col-lg-push-12{right:100%}.col-lg-push-11{right:91.66666667%}.col-lg-push-10{right:83.33333333%}.col-lg-push-9{right:75%}.col-lg-push-8{right:66.66666667%}.col-lg-push-7{right:58.33333333%}.col-lg-push-6{right:50%}.col-lg-push-5{right:41.66666667%}.col-lg-push-4{right:33.33333333%}.col-lg-push-3{right:25%}.col-lg-push-2{right:16.66666667%}.col-lg-push-1{right:8.33333333%}.col-lg-push-0{right:auto}.col-lg-offset-12{margin-right:100%}.col-lg-offset-11{margin-right:91.66666667%}.col-lg-offset-10{margin-right:83.33333333%}.col-lg-offset-9{margin-right:75%}.col-lg-offset-8{margin-right:66.66666667%}.col-lg-offset-7{margin-right:58.33333333%}.col-lg-offset-6{margin-right:50%}.col-lg-offset-5{margin-right:41.66666667%}.col-lg-offset-4{margin-right:33.33333333%}.col-lg-offset-3{margin-right:25%}.col-lg-offset-2{margin-right:16.66666667%}.col-lg-offset-1{margin-right:8.33333333%}.col-lg-offset-0{margin-right:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:right}th{text-align:right}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-right:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-left:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-right:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-right:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-right:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-right:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-left:42.5px}.form-control-feedback{position:absolute;top:0;left:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-right:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-right:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:left}}.form-horizontal .has-feedback .form-control-feedback{left:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-right:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;right:0;z-index:1000;display:none;float:right;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:right;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:auto;left:0}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:auto;left:0}.dropdown-menu-left{right:0;left:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:auto;left:0}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:auto;left:0}.navbar-right .dropdown-menu-left{right:0;left:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:right}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-right:-1px}.btn-toolbar{margin-right:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:right}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-right:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-right:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group{float:right}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-right:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-right:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{right:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:right;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:first-child{border-left:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:last-child{border-right:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-right:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-left:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-right:-1px}.nav{padding-right:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:right;margin-bottom:-1px}.nav-tabs>li>a{margin-left:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;right:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-left:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:right}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-right:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-right:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;right:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-left:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:right}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:right;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-right:-15px}}.navbar-toggle{position:relative;float:left;padding:9px 10px;margin-top:8px;margin-bottom:8px;margin-left:15px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 25px 5px 15px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:right;margin:0}.navbar-nav>li{float:right}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-right:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-right:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:right;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:right!important}.navbar-right{float:left!important;margin-left:-15px}.navbar-right~.navbar-right{margin-left:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-right:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:right;padding:6px 12px;margin-right:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-right:0;border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pager{padding-right:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:left}.pager .previous>a,.pager .previous>span{float:right}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:left}.list-group-item>.badge+.badge{margin-left:5px}.nav-pills>li>a>.badge{margin-right:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-left:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;left:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:100% 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:100% 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:100% 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:right;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-webkit-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-webkit-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-webkit-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-webkit-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-webkit-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-right:10px}.media-left,.media>.pull-left{padding-left:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-right:0;list-style:none}.list-group{padding-right:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:right}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-left-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-right:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-left:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;right:0;bottom:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:left;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:left;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-right:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-right:-1px}.modal-footer .btn-block+.btn-block{margin-right:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:right;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-right:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-right:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{right:50%;bottom:0;margin-right:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.left .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.bottom .tooltip-arrow{top:0;right:50%;margin-right:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;right:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:right;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-right:10px}.popover.bottom{margin-top:10px}.popover.left{margin-right:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{right:50%;bottom:-11px;margin-right:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-right:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.popover.bottom>.arrow{top:-11px;right:50%;margin-right:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-right:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.left>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out right;-o-transition:.6s ease-in-out right;transition:.6s ease-in-out right}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{right:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{right:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{right:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{right:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{right:100%}.carousel-inner>.prev{right:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{right:0}.carousel-inner>.active.left{right:-100%}.carousel-inner>.active.right{right:100%}.carousel-control{position:absolute;top:0;right:0;bottom:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:auto;left:0;background-image:-webkit-linear-gradient(right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{right:50%;margin-right:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;right:50%;bottom:10px;z-index:15;width:60%;padding-right:0;margin-right:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-right:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-left:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:left!important}.pull-left{float:right!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/odex25_takaful/takaful_portal_sponsor/static/libs/bootstrap3/bootstrap.min.js b/odex25_takaful/takaful_portal_sponsor/static/libs/bootstrap3/bootstrap.min.js new file mode 100644 index 000000000..e79c06513 --- /dev/null +++ b/odex25_takaful/takaful_portal_sponsor/static/libs/bootstrap3/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.6",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.6",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.6",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.6",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
      ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.6",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.6",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.6",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/odex25_takaful/takaful_portal_sponsor/static/libs/bootstrap3/jquery.min.js b/odex25_takaful/takaful_portal_sponsor/static/libs/bootstrap3/jquery.min.js new file mode 100644 index 000000000..b0ecaddee --- /dev/null +++ b/odex25_takaful/takaful_portal_sponsor/static/libs/bootstrap3/jquery.min.js @@ -0,0 +1,5 @@ +/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0; +}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML="
      a",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,""],legend:[1,"
      ","
      "],area:[1,"",""],param:[1,"",""],thead:[1,"","
      "],tr:[2,"","
      "],col:[2,"","
      "],td:[3,"","
      "],_default:l.htmlSerialize?[0,"",""]:[1,"X
      ","
      "]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?""!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("' ); + html.attr( 'height', height ); + html.attr( 'width', width ); + if (video.type === 'youtube') { + html.attr( 'src', '//www.youtube.com/embed/' + video.id + '?autoplay=1&rel=0&v=' + video.id ); + } else if (video.type === 'vimeo') { + html.attr( 'src', '//player.vimeo.com/video/' + video.id + '?autoplay=1' ); + } else if (video.type === 'vzaar') { + html.attr( 'src', '//view.vzaar.com/' + video.id + '/player?autoplay=true' ); + } + + iframe = $(html).wrap( '
      ' ).insertAfter(item.find('.owl-video')); + + this._playing = item.addClass('owl-video-playing'); + }; + + /** + * Checks whether an video is currently in full screen mode or not. + * @todo Bad style because looks like a readonly method but changes members. + * @protected + * @returns {Boolean} + */ + Video.prototype.isInFullScreen = function() { + var element = document.fullscreenElement || document.mozFullScreenElement || + document.webkitFullscreenElement; + + return element && $(element).parent().hasClass('owl-video-frame'); + }; + + /** + * Destroys the plugin. + */ + Video.prototype.destroy = function() { + var handler, property; + + this._core.$element.off('click.owl.video'); + + for (handler in this._handlers) { + this._core.$element.off(handler, this._handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.Video = Video; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Animate Plugin + * @version 2.3.4 + * @author Bartosz Wojciechowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the animate plugin. + * @class The Navigation Plugin + * @param {Owl} scope - The Owl Carousel + */ + var Animate = function(scope) { + this.core = scope; + this.core.options = $.extend({}, Animate.Defaults, this.core.options); + this.swapping = true; + this.previous = undefined; + this.next = undefined; + + this.handlers = { + 'change.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name == 'position') { + this.previous = this.core.current(); + this.next = e.property.value; + } + }, this), + 'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) { + if (e.namespace) { + this.swapping = e.type == 'translated'; + } + }, this), + 'translate.owl.carousel': $.proxy(function(e) { + if (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) { + this.swap(); + } + }, this) + }; + + this.core.$element.on(this.handlers); + }; + + /** + * Default options. + * @public + */ + Animate.Defaults = { + animateOut: false, + animateIn: false + }; + + /** + * Toggles the animation classes whenever an translations starts. + * @protected + * @returns {Boolean|undefined} + */ + Animate.prototype.swap = function() { + + if (this.core.settings.items !== 1) { + return; + } + + if (!$.support.animation || !$.support.transition) { + return; + } + + this.core.speed(0); + + var left, + clear = $.proxy(this.clear, this), + previous = this.core.$stage.children().eq(this.previous), + next = this.core.$stage.children().eq(this.next), + incoming = this.core.settings.animateIn, + outgoing = this.core.settings.animateOut; + + if (this.core.current() === this.previous) { + return; + } + + if (outgoing) { + left = this.core.coordinates(this.previous) - this.core.coordinates(this.next); + previous.one($.support.animation.end, clear) + .css( { 'left': left + 'px' } ) + .addClass('animated owl-animated-out') + .addClass(outgoing); + } + + if (incoming) { + next.one($.support.animation.end, clear) + .addClass('animated owl-animated-in') + .addClass(incoming); + } + }; + + Animate.prototype.clear = function(e) { + $(e.target).css( { 'left': '' } ) + .removeClass('animated owl-animated-out owl-animated-in') + .removeClass(this.core.settings.animateIn) + .removeClass(this.core.settings.animateOut); + this.core.onTransitionEnd(); + }; + + /** + * Destroys the plugin. + * @public + */ + Animate.prototype.destroy = function() { + var handler, property; + + for (handler in this.handlers) { + this.core.$element.off(handler, this.handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.Animate = Animate; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Autoplay Plugin + * @version 2.3.4 + * @author Bartosz Wojciechowski + * @author Artus Kolanowski + * @author David Deutsch + * @author Tom De Caluwé + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the autoplay plugin. + * @class The Autoplay Plugin + * @param {Owl} scope - The Owl Carousel + */ + var Autoplay = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * The autoplay timeout id. + * @type {Number} + */ + this._call = null; + + /** + * Depending on the state of the plugin, this variable contains either + * the start time of the timer or the current timer value if it's + * paused. Since we start in a paused state we initialize the timer + * value. + * @type {Number} + */ + this._time = 0; + + /** + * Stores the timeout currently used. + * @type {Number} + */ + this._timeout = 0; + + /** + * Indicates whenever the autoplay is paused. + * @type {Boolean} + */ + this._paused = true; + + /** + * All event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'changed.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name === 'settings') { + if (this._core.settings.autoplay) { + this.play(); + } else { + this.stop(); + } + } else if (e.namespace && e.property.name === 'position' && this._paused) { + // Reset the timer. This code is triggered when the position + // of the carousel was changed through user interaction. + this._time = 0; + } + }, this), + 'initialized.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.autoplay) { + this.play(); + } + }, this), + 'play.owl.autoplay': $.proxy(function(e, t, s) { + if (e.namespace) { + this.play(t, s); + } + }, this), + 'stop.owl.autoplay': $.proxy(function(e) { + if (e.namespace) { + this.stop(); + } + }, this), + 'mouseover.owl.autoplay': $.proxy(function() { + if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { + this.pause(); + } + }, this), + 'mouseleave.owl.autoplay': $.proxy(function() { + if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { + this.play(); + } + }, this), + 'touchstart.owl.core': $.proxy(function() { + if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { + this.pause(); + } + }, this), + 'touchend.owl.core': $.proxy(function() { + if (this._core.settings.autoplayHoverPause) { + this.play(); + } + }, this) + }; + + // register event handlers + this._core.$element.on(this._handlers); + + // set default options + this._core.options = $.extend({}, Autoplay.Defaults, this._core.options); + }; + + /** + * Default options. + * @public + */ + Autoplay.Defaults = { + autoplay: false, + autoplayTimeout: 5000, + autoplayHoverPause: false, + autoplaySpeed: false + }; + + /** + * Transition to the next slide and set a timeout for the next transition. + * @private + * @param {Number} [speed] - The animation speed for the animations. + */ + Autoplay.prototype._next = function(speed) { + this._call = window.setTimeout( + $.proxy(this._next, this, speed), + this._timeout * (Math.round(this.read() / this._timeout) + 1) - this.read() + ); + + if (this._core.is('interacting') || document.hidden) { + return; + } + this._core.next(speed || this._core.settings.autoplaySpeed); + } + + /** + * Reads the current timer value when the timer is playing. + * @public + */ + Autoplay.prototype.read = function() { + return new Date().getTime() - this._time; + }; + + /** + * Starts the autoplay. + * @public + * @param {Number} [timeout] - The interval before the next animation starts. + * @param {Number} [speed] - The animation speed for the animations. + */ + Autoplay.prototype.play = function(timeout, speed) { + var elapsed; + + if (!this._core.is('rotating')) { + this._core.enter('rotating'); + } + + timeout = timeout || this._core.settings.autoplayTimeout; + + // Calculate the elapsed time since the last transition. If the carousel + // wasn't playing this calculation will yield zero. + elapsed = Math.min(this._time % (this._timeout || timeout), timeout); + + if (this._paused) { + // Start the clock. + this._time = this.read(); + this._paused = false; + } else { + // Clear the active timeout to allow replacement. + window.clearTimeout(this._call); + } + + // Adjust the origin of the timer to match the new timeout value. + this._time += this.read() % timeout - elapsed; + + this._timeout = timeout; + this._call = window.setTimeout($.proxy(this._next, this, speed), timeout - elapsed); + }; + + /** + * Stops the autoplay. + * @public + */ + Autoplay.prototype.stop = function() { + if (this._core.is('rotating')) { + // Reset the clock. + this._time = 0; + this._paused = true; + + window.clearTimeout(this._call); + this._core.leave('rotating'); + } + }; + + /** + * Pauses the autoplay. + * @public + */ + Autoplay.prototype.pause = function() { + if (this._core.is('rotating') && !this._paused) { + // Pause the clock. + this._time = this.read(); + this._paused = true; + + window.clearTimeout(this._call); + } + }; + + /** + * Destroys the plugin. + */ + Autoplay.prototype.destroy = function() { + var handler, property; + + this.stop(); + + for (handler in this._handlers) { + this._core.$element.off(handler, this._handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Navigation Plugin + * @version 2.3.4 + * @author Artus Kolanowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + 'use strict'; + + /** + * Creates the navigation plugin. + * @class The Navigation Plugin + * @param {Owl} carousel - The Owl Carousel. + */ + var Navigation = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * Indicates whether the plugin is initialized or not. + * @protected + * @type {Boolean} + */ + this._initialized = false; + + /** + * The current paging indexes. + * @protected + * @type {Array} + */ + this._pages = []; + + /** + * All DOM elements of the user interface. + * @protected + * @type {Object} + */ + this._controls = {}; + + /** + * Markup for an indicator. + * @protected + * @type {Array.} + */ + this._templates = []; + + /** + * The carousel element. + * @type {jQuery} + */ + this.$element = this._core.$element; + + /** + * Overridden methods of the carousel. + * @protected + * @type {Object} + */ + this._overrides = { + next: this._core.next, + prev: this._core.prev, + to: this._core.to + }; + + /** + * All event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'prepared.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.dotsData) { + this._templates.push('
      ' + + $(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + '
      '); + } + }, this), + 'added.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.dotsData) { + this._templates.splice(e.position, 0, this._templates.pop()); + } + }, this), + 'remove.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.dotsData) { + this._templates.splice(e.position, 1); + } + }, this), + 'changed.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name == 'position') { + this.draw(); + } + }, this), + 'initialized.owl.carousel': $.proxy(function(e) { + if (e.namespace && !this._initialized) { + this._core.trigger('initialize', null, 'navigation'); + this.initialize(); + this.update(); + this.draw(); + this._initialized = true; + this._core.trigger('initialized', null, 'navigation'); + } + }, this), + 'refreshed.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._initialized) { + this._core.trigger('refresh', null, 'navigation'); + this.update(); + this.draw(); + this._core.trigger('refreshed', null, 'navigation'); + } + }, this) + }; + + // set default options + this._core.options = $.extend({}, Navigation.Defaults, this._core.options); + + // register event handlers + this.$element.on(this._handlers); + }; + + /** + * Default options. + * @public + * @todo Rename `slideBy` to `navBy` + */ + Navigation.Defaults = { + nav: false, + navText: [ + '', + '' + ], + navSpeed: false, + navElement: 'button type="button" role="presentation"', + navContainer: false, + navContainerClass: 'owl-nav', + navClass: [ + 'owl-prev', + 'owl-next' + ], + slideBy: 1, + dotClass: 'owl-dot', + dotsClass: 'owl-dots', + dots: true, + dotsEach: false, + dotsData: false, + dotsSpeed: false, + dotsContainer: false + }; + + /** + * Initializes the layout of the plugin and extends the carousel. + * @protected + */ + Navigation.prototype.initialize = function() { + var override, + settings = this._core.settings; + + // create DOM structure for relative navigation + this._controls.$relative = (settings.navContainer ? $(settings.navContainer) + : $('
      ').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled'); + + this._controls.$previous = $('<' + settings.navElement + '>') + .addClass(settings.navClass[0]) + .html(settings.navText[0]) + .prependTo(this._controls.$relative) + .on('click', $.proxy(function(e) { + this.prev(settings.navSpeed); + }, this)); + this._controls.$next = $('<' + settings.navElement + '>') + .addClass(settings.navClass[1]) + .html(settings.navText[1]) + .appendTo(this._controls.$relative) + .on('click', $.proxy(function(e) { + this.next(settings.navSpeed); + }, this)); + + // create DOM structure for absolute navigation + if (!settings.dotsData) { + this._templates = [ $('

      '; + var removeButton = $(removeBtn); + $(addto).after(newInput); + $(addRemove).after(removeButton); + $("#fielda" + next_exp).attr('data-source', $(addto).attr('data-source')); + $("#count").val(next_exp); + + $('.remove-me').click(function (e) { + e.preventDefault(); + var fieldNum = this.id.charAt(this.id.length - 1); + var fieldID = "#fielda" + fieldNum; + $(this).remove(); + $(fieldID).remove(); + }); + }); + + + //@naresh action dynamic childs + var nextedu = 0; + $("#add-more").click(function (e) { + e.preventDefault(); + var addto = "#field" + nextedu; + var addRemove = "#field" + (nextedu); + nextedu = nextedu + 1; + var newIn = '









      '; + var newInput = $(newIn); + + var removeBtn = '
      '; + var removeButton = $(removeBtn); + $(addto).after(newInput); + $(addRemove).after(removeButton); + $("#field" + nextedu).attr('data-source', $(addto).attr('data-source')); + $("#count").val(nextedu); + + $('.remove-me').click(function (e) { + e.preventDefault(); + var fieldNum = this.id.charAt(this.id.length - 1); + var fieldID = "#field" + fieldNum; + $(this).remove(); + $(fieldID).remove(); + }); + }); + + +}); diff --git a/odex25_takaful/takaful_website/static/src/js/verification_code.js b/odex25_takaful/takaful_website/static/src/js/verification_code.js new file mode 100644 index 000000000..78a2d0163 --- /dev/null +++ b/odex25_takaful/takaful_website/static/src/js/verification_code.js @@ -0,0 +1,50 @@ +$(document).ready(function () { + + $(function () { + 'use strict'; + + var body = $('body #section-confirm'); + + + function goToNextInput(e) { + var key = e.which, + t = $(e.target), + sib = t.next('input'); + + if (key != 9 && (key < 48 || key > 57)) { + e.preventDefault(); + return false; + } + + if (key === 9) { + return true; + } + + if (!sib || !sib.length) { + sib = body.find('input').eq(0); + } + sib.select().focus(); + } + + function onKeyDown(e) { + var key = e.which; + + if (key === 9 || (key >= 48 && key <= 57)) { + return true; + } + + e.preventDefault(); + return false; + } + + function onFocus(e) { + $(e.target).select(); + } + + body.on('keyup', 'input', goToNextInput); + body.on('keydown', 'input', onKeyDown); + body.on('click', 'input', onFocus); + + }) + +}); \ No newline at end of file diff --git a/odex25_takaful/takaful_website/static/src/libs/datatables/css/datatables.min.css b/odex25_takaful/takaful_website/static/src/libs/datatables/css/datatables.min.css new file mode 100644 index 000000000..88a2b2357 --- /dev/null +++ b/odex25_takaful/takaful_website/static/src/libs/datatables/css/datatables.min.css @@ -0,0 +1,18 @@ +/* + * This combined file was created by the DataTables downloader builder: + * https://datatables.net/download + * + * To rebuild or modify this file with the latest versions of the included + * software please visit: + * https://datatables.net/download/#bs4/dt-1.12.1/r-2.3.0 + * + * Included libraries: + * DataTables 1.12.1, Responsive 2.3.0 + */ + +table.dataTable td.dt-control{text-align:center;cursor:pointer}table.dataTable td.dt-control:before{height:1em;width:1em;margin-top:-9px;display:inline-block;color:white;border:.15em solid white;border-radius:1em;box-shadow:0 0 .2em #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:"Courier New",Courier,monospace;line-height:1em;content:"+";background-color:#31b131}table.dataTable tr.dt-hasChild td.dt-control:before{content:"-";background-color:#d33333}table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting_asc_disabled,table.dataTable thead>tr>th.sorting_desc_disabled,table.dataTable thead>tr>td.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting_asc_disabled,table.dataTable thead>tr>td.sorting_desc_disabled{cursor:pointer;position:relative;padding-right:26px}table.dataTable thead>tr>th.sorting:before,table.dataTable thead>tr>th.sorting:after,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_asc:after,table.dataTable thead>tr>th.sorting_desc:before,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_asc_disabled:after,table.dataTable thead>tr>th.sorting_desc_disabled:before,table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting:before,table.dataTable thead>tr>td.sorting:after,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_asc:after,table.dataTable thead>tr>td.sorting_desc:before,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_asc_disabled:after,table.dataTable thead>tr>td.sorting_desc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:after{position:absolute;display:block;opacity:.125;right:10px;line-height:9px;font-size:.9em}table.dataTable thead>tr>th.sorting:before,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_desc:before,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_desc_disabled:before,table.dataTable thead>tr>td.sorting:before,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_desc:before,table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:before{bottom:50%;content:"▴"}table.dataTable thead>tr>th.sorting:after,table.dataTable thead>tr>th.sorting_asc:after,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>th.sorting_asc_disabled:after,table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting:after,table.dataTable thead>tr>td.sorting_asc:after,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc_disabled:after,table.dataTable thead>tr>td.sorting_desc_disabled:after{top:50%;content:"▾"}table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_desc:after{opacity:.6}table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting_asc_disabled:before{display:none}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}div.dataTables_scrollBody table.dataTable thead>tr>th:before,div.dataTables_scrollBody table.dataTable thead>tr>th:after,div.dataTables_scrollBody table.dataTable thead>tr>td:before,div.dataTables_scrollBody table.dataTable thead>tr>td:after{display:none}div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:2px}div.dataTables_processing>div:last-child{position:relative;width:80px;height:15px;margin:1em auto}div.dataTables_processing>div:last-child>div{position:absolute;top:0;width:13px;height:13px;border-radius:50%;background:rgba(2, 117, 216, 0.9);animation-timing-function:cubic-bezier(0, 1, 1, 0)}div.dataTables_processing>div:last-child>div:nth-child(1){left:8px;animation:datatables-loader-1 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(2){left:8px;animation:datatables-loader-2 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(3){left:32px;animation:datatables-loader-2 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(4){left:56px;animation:datatables-loader-3 .6s infinite}@keyframes datatables-loader-1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes datatables-loader-3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes datatables-loader-2{0%{transform:translate(0, 0)}100%{transform:translate(24px, 0)}}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th,table.dataTable thead td,table.dataTable tfoot th,table.dataTable tfoot td{text-align:left}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important;border-spacing:0}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.table-striped>tbody>tr:nth-of-type(2n+1){background-color:transparent}table.dataTable>tbody>tr{background-color:transparent}table.dataTable>tbody>tr.selected>*{box-shadow:inset 0 0 0 9999px rgba(2, 117, 216, 0.9);color:white}table.dataTable.table-striped>tbody>tr.odd>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.05)}table.dataTable.table-striped>tbody>tr.odd.selected>*{box-shadow:inset 0 0 0 9999px rgba(2, 117, 216, 0.95)}table.dataTable.table-hover>tbody>tr:hover>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.075)}table.dataTable.table-hover>tbody>tr.selected:hover>*{box-shadow:inset 0 0 0 9999px rgba(2, 117, 216, 0.975)}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:auto;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:.85em}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody>table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody>table>thead .sorting:before,div.dataTables_scrollBody>table>thead .sorting_asc:before,div.dataTables_scrollBody>table>thead .sorting_desc:before,div.dataTables_scrollBody>table>thead .sorting:after,div.dataTables_scrollBody>table>thead .sorting_asc:after,div.dataTables_scrollBody>table>thead .sorting_desc:after{display:none}div.dataTables_scrollBody>table>tbody tr:first-child th,div.dataTables_scrollBody>table>tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:center !important}}table.dataTable.table-sm>thead>tr>th:not(.sorting_disabled){padding-right:20px}table.table-bordered.dataTable{border-right-width:0}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:1px}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:last-child{padding-right:0} + + +table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control{position:relative;padding-left:30px;cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control:before{top:50%;left:5px;height:1em;width:1em;margin-top:-9px;display:block;position:absolute;color:white;border:.15em solid white;border-radius:1em;box-shadow:0 0 .2em #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:"Courier New",Courier,monospace;line-height:1em;content:"+";background-color:#0275d8}table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th.dtr-control:before{content:"-";background-color:#d33333}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th.dtr-control{padding-left:27px}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td.dtr-control:before,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th.dtr-control:before{left:4px;height:14px;width:14px;border-radius:14px;line-height:14px;text-indent:3px}table.dataTable.dtr-column>tbody>tr>td.dtr-control,table.dataTable.dtr-column>tbody>tr>th.dtr-control,table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.dtr-control:before,table.dataTable.dtr-column>tbody>tr>th.dtr-control:before,table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{top:50%;left:50%;height:.8em;width:.8em;margin-top:-0.5em;margin-left:-0.5em;display:block;position:absolute;color:white;border:.15em solid white;border-radius:1em;box-shadow:0 0 .2em #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:"Courier New",Courier,monospace;line-height:1em;content:"+";background-color:#0275d8}table.dataTable.dtr-column>tbody>tr.parent td.dtr-control:before,table.dataTable.dtr-column>tbody>tr.parent th.dtr-control:before,table.dataTable.dtr-column>tbody>tr.parent td.control:before,table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:"-";background-color:#d33333}table.dataTable>tbody>tr.child{padding:.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:.5em;box-shadow:0 12px 30px rgba(0, 0, 0, 0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0, 0, 0, 0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}div.dtr-bs-modal table.table tr:first-child td{border-top:none} + + diff --git a/odex25_takaful/takaful_website/static/src/libs/datatables/js/dataTables.responsive.min.js b/odex25_takaful/takaful_website/static/src/libs/datatables/js/dataTables.responsive.min.js new file mode 100644 index 000000000..cf8e0f34f --- /dev/null +++ b/odex25_takaful/takaful_website/static/src/libs/datatables/js/dataTables.responsive.min.js @@ -0,0 +1,48 @@ +/*! + SpryMedia Ltd. + + This source file is free software, available under the following license: + MIT license - http://datatables.net/license/mit + + This source file is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. + + For details please refer to: http://www.datatables.net + Responsive 2.3.0 + 2014-2022 SpryMedia Ltd - datatables.net/license +*/ +var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(b,k,m){b instanceof String&&(b=String(b));for(var n=b.length,p=0;ptd, >th", +f).each(function(e){e=c.column.index("toData",e);!1===a.s.current[e]&&b(this).css("display","none")})});c.on("destroy.dtr",function(){c.off(".dtr");b(c.table().body()).off(".dtr");b(k).off("resize.dtr orientationchange.dtr");c.cells(".dtr-control").nodes().to$().removeClass("dtr-control");b.each(a.s.current,function(f,l){!1===l&&a._setColumnVis(f,!0)})});this.c.breakpoints.sort(function(f,l){return f.widthl.width?-1:0});this._classLogic();this._resizeAuto();d=this.c.details;!1!== +d.type&&(a._detailsInit(),c.on("column-visibility.dtr",function(){a._timer&&clearTimeout(a._timer);a._timer=setTimeout(function(){a._timer=null;a._classLogic();a._resizeAuto();a._resize(!0);a._redrawChildren()},100)}),c.on("draw.dtr",function(){a._redrawChildren()}),b(c.table().node()).addClass("dtr-"+d.type));c.on("column-reorder.dtr",function(f,l,h){a._classLogic();a._resizeAuto();a._resize(!0)});c.on("column-sizing.dtr",function(){a._resizeAuto();a._resize()});c.on("column-calc.dt",function(f, +l){f=a.s.current;for(var h=0;hh-d[q].minWidth?(r=!0,l[q]=!1):l[q]=!0,h-=d[q].minWidth)}f=!1;e=0;for(g=d.length;e=q&&f(h,c[e].name);else if("not-"===r)for(e=0,r=c.length;eg?c.columns().eq(0).length+ +g:g;if(c.cell(this).index().column!==l)return}l=c.row(b(this).closest("tr"));"click"===f.type?a._detailsDisplay(l,!1):"mousedown"===f.type?b(this).css("outline","none"):"mouseup"===f.type&&b(this).trigger("blur").css("outline","")}})},_detailsObj:function(a){var c=this,d=this.s.dt;return b.map(this.s.columns,function(g,f){if(!g.never&&!g.control)return g=d.settings()[0].aoColumns[f],{className:g.sClass,columnIndex:f,data:d.cell(a,f).render(c.c.orthogonal),hidden:d.column(f).visible()&&!c.s.current[f], +rowIndex:a,title:null!==g.sTitle?g.sTitle:b(d.column(f).header()).text()}})},_find:function(a){for(var c=this.c.breakpoints,d=0,g=c.length;d").append(h).appendTo(f)}b("
      ").append(l).appendTo(g);"inline"===this.c.details.type&&b(d).addClass("dtr-inline collapsed");b(d).find("[name]").removeAttr("name");b(d).css("position", +"relative");d=b("
      ").css({width:1,height:1,overflow:"hidden",clear:"both"}).append(d);d.insertBefore(a.table().node());l.each(function(e){e=a.column.index("fromVisible",e);c[e].minWidth=this.offsetWidth||0});d.remove()}},_responsiveOnlyHidden:function(){var a=this.s.dt;return b.map(this.s.current,function(c,d){return!1===a.column(d).visible()?!0:c})},_setColumnVis:function(a,c){var d=this.s.dt,g=c?"":"none";b(d.column(a).header()).css("display",g).toggleClass("dtr-hidden",!c);b(d.column(a).footer()).css("display", +g).toggleClass("dtr-hidden",!c);d.column(a).nodes().to$().css("display",g).toggleClass("dtr-hidden",!c);b.isEmptyObject(A)||d.cells(null,a).indexes().each(function(f){y(d,f.row,f.column)})},_tabIndexes:function(){var a=this.s.dt,c=a.cells({page:"current"}).nodes().to$(),d=a.settings()[0],g=this.c.details.target;c.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]");"number"===typeof g?a.cells(null,g,{page:"current"}).nodes().to$().attr("tabIndex",d.iTabIndex).data("dtr-keyboard",1):("td:first-child, th:first-child"=== +g&&(g=">td:first-child, >th:first-child"),b(g,a.rows({page:"current"}).nodes()).attr("tabIndex",d.iTabIndex).data("dtr-keyboard",1))}});u.breakpoints=[{name:"desktop",width:Infinity},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}];u.display={childRow:function(a,c,d){if(c){if(b(a.node()).hasClass("parent"))return a.child(d(),"child").show(),!0}else{if(a.child.isShown())return a.child(!1),b(a.node()).removeClass("parent"),!1;a.child(d(), +"child").show();b(a.node()).addClass("parent");return!0}},childRowImmediate:function(a,c,d){if(!c&&a.child.isShown()||!a.responsive.hasHidden())return a.child(!1),b(a.node()).removeClass("parent"),!1;a.child(d(),"child").show();b(a.node()).addClass("parent");return!0},modal:function(a){return function(c,d,g){if(d)b("div.dtr-modal-content").empty().append(g());else{var f=function(){l.remove();b(m).off("keypress.dtr")},l=b('
      ').append(b('
      ').append(b('
      ').append(g())).append(b('
      ×
      ').click(function(){f()}))).append(b('
      ').click(function(){f()})).appendTo("body"); +b(m).on("keyup.dtr",function(h){27===h.keyCode&&(h.stopPropagation(),f())})}a&&a.header&&b("div.dtr-modal-content").prepend("

      "+a.header(c)+"

      ")}}};var A={};u.renderer={listHiddenNodes:function(){return function(a,c,d){var g=b('
        '),f=!1;b.each(d,function(l,h){h.hidden&&(b("
      • '+ +h.title+"
      • ").append(b('').append(p(a,h.rowIndex,h.columnIndex))).appendTo(g),f=!0)});return f?g:!1}},listHidden:function(){return function(a,c,d){return(a=b.map(d,function(g){var f=g.className?'class="'+g.className+'"':"";return g.hidden?"
      • '+g.title+' '+g.data+"
      • ":""}).join(""))?b('
          ').append(a):!1}},tableAll:function(a){a=b.extend({tableClass:""},a);return function(c,d,g){c=b.map(g,function(f){return"
      "}).join("");return b('
      '+f.title+": "+f.data+"
      ').append(c)}}};u.defaults={breakpoints:u.breakpoints,auto:!0,details:{display:u.display.childRow,renderer:u.renderer.listHidden(), +target:0,type:"inline"},orthogonal:"display"};var C=b.fn.dataTable.Api;C.register("responsive()",function(){return this});C.register("responsive.index()",function(a){a=b(a);return{column:a.data("dtr-index"),row:a.parent().data("dtr-index")}});C.register("responsive.rebuild()",function(){return this.iterator("table",function(a){a._responsive&&a._responsive._classLogic()})});C.register("responsive.recalc()",function(){return this.iterator("table",function(a){a._responsive&&(a._responsive._resizeAuto(), +a._responsive._resize())})});C.register("responsive.hasHidden()",function(){var a=this.context[0];return a._responsive?-1!==b.inArray(!1,a._responsive._responsiveOnlyHidden()):!1});C.registerPlural("columns().responsiveHidden()","column().responsiveHidden()",function(){return this.iterator("column",function(a,c){return a._responsive?a._responsive._responsiveOnlyHidden()[c]:!1},1)});u.version="2.3.0";b.fn.dataTable.Responsive=u;b.fn.DataTable.Responsive=u;b(m).on("preInit.dt.dtr",function(a,c,d){"dt"=== +a.namespace&&(b(c.nTable).hasClass("responsive")||b(c.nTable).hasClass("dt-responsive")||c.oInit.responsive||z.defaults.responsive)&&(a=c.oInit.responsive,!1!==a&&new u(c,b.isPlainObject(a)?a:{}))});return u}); diff --git a/odex25_takaful/takaful_website/static/src/libs/datatables/js/datatables.min.js b/odex25_takaful/takaful_website/static/src/libs/datatables/js/datatables.min.js new file mode 100644 index 000000000..890cef9b0 --- /dev/null +++ b/odex25_takaful/takaful_website/static/src/libs/datatables/js/datatables.min.js @@ -0,0 +1,359 @@ +/* + * This combined file was created by the DataTables downloader builder: + * https://datatables.net/download + * + * To rebuild or modify this file with the latest versions of the included + * software please visit: + * https://datatables.net/download/#bs4/dt-1.12.1/r-2.3.0 + * + * Included libraries: + * DataTables 1.12.1, Responsive 2.3.0 + */ + +/*! + SpryMedia Ltd. + + This source file is free software, available under the following license: + MIT license - http://datatables.net/license + + This source file is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. + + For details please refer to: http://www.datatables.net + DataTables 1.12.1 + ©2008-2022 SpryMedia Ltd - datatables.net/license +*/ +var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(l,y,A){l instanceof String&&(l=String(l));for(var q=l.length,E=0;E").css({position:"fixed",top:0,left:-1*l(y).scrollLeft(),height:1, +width:1,overflow:"hidden"}).append(l("
      ").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(l("
      ").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}l.extend(a.oBrowser,u.__browser);a.oScroll.iBarWidth=u.__browser.barWidth} +function Gb(a,b,c,d,e,h){var f=!1;if(c!==q){var g=c;f=!0}for(;d!==e;)a.hasOwnProperty(d)&&(g=f?b(g,a[d],d,a):a[d],f=!0,d+=h);return g}function cb(a,b){var c=u.defaults.column,d=a.aoColumns.length;c=l.extend({},u.models.oColumn,c,{nTh:b?b:A.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=l.extend({},u.models.oSearch,c[d]);Ia(a,d,l(b).data())}function Ia(a,b,c){b=a.aoColumns[b]; +var d=a.oClasses,e=l(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var h=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);h&&(b.sWidthOrig=h[1])}c!==q&&null!==c&&(Eb(c),P(u.defaults.column,c,!0),c.mDataProp===q||c.mData||(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),c.sClass&&e.addClass(c.sClass),h=b.sClass,l.extend(b,c),Y(b,c,"sWidth","sWidthOrig"),h!==b.sClass&&(b.sClass=h+" "+b.sClass),c.iDataSort!==q&&(b.aDataSort=[c.iDataSort]), +Y(b,c,"aDataSort"));var f=b.mData,g=ma(f),k=b.mRender?ma(b.mRender):null;c=function(m){return"string"===typeof m&&-1!==m.indexOf("@")};b._bAttrSrc=l.isPlainObject(f)&&(c(f.sort)||c(f.type)||c(f.filter));b._setter=null;b.fnGetData=function(m,n,p){var t=g(m,n,q,p);return k&&n?k(t,n,m,p):t};b.fnSetData=function(m,n,p){return ha(f)(m,n,p)};"number"!==typeof f&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==l.inArray("asc",b.asSorting);c=-1!==l.inArray("desc", +b.asSorting);b.bSortable&&(a||c)?a&&!c?(b.sSortingClass=d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI):(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI="")}function sa(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;db(a);for(var c=0,d=b.length;cm[n])d(g.length+m[n],k);else if("string"===typeof m[n]){var p=0;for(f=g.length;pb&&a[e]--; -1!=d&&c===q&&a.splice(d,1)}function va(a,b,c,d){var e=a.aoData[b],h,f=function(k,m){for(;k.childNodes.length;)k.removeChild(k.firstChild);k.innerHTML=T(a,b,m,"display")};if("dom"!==c&&(c&&"auto"!==c||"dom"!==e.src)){var g=e.anCells;if(g)if(d!==q)f(g[d],d);else for(c=0,h=g.length;c").appendTo(d));var k=0;for(b=g.length;k=a.fnRecordsDisplay()?0:d,a.iInitDisplayStart=-1);c=F(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==l.inArray(!1,c))V(a,!1);else{c=[];var e=0;d=a.asStripeClasses;var h=d.length,f=a.oLanguage,g="ssp"==Q(a),k=a.aiDisplay,m=a._iDisplayStart,n=a.fnDisplayEnd();a.bDrawing=!0;if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,V(a,!1);else if(!g)a.iDraw++;else if(!a.bDestroying&&!b){Kb(a);return}if(0!==k.length)for(b=g?a.aoData.length:n,f=g?0:m;f",{"class":h?d[0]:""}).append(l("
      ").insertAfter(H));r.nTBody=fa[0];H=t.children("tfoot");0===H.length&&0").appendTo(t));0===H.length||0===H.children().length?t.addClass(C.sNoFooter):0/g,Dc=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,Ec=/(\/|\.|\*|\+|\?|\||\(|\)|\[|\]|\{|\}|\\|\$|\^|\-)/g,vb=/['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,aa=function(a){return a&&!0!==a&&"-"!== +a?!1:!0},nc=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},oc=function(a,b){xb[b]||(xb[b]=new RegExp(ob(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(xb[b],"."):a},yb=function(a,b,c){var d="string"===typeof a;if(aa(a))return!0;b&&d&&(a=oc(a,b));c&&d&&(a=a.replace(vb,""));return!isNaN(parseFloat(a))&&isFinite(a)},pc=function(a,b,c){return aa(a)?!0:aa(a)||"string"===typeof a?yb(a.replace(Ya,""),b,c)?!0:null:null},U=function(a,b,c){var d=[],e=0,h=a.length; +if(c!==q)for(;ea.length)){var b=a.slice().sort();for(var c=b[0], +d=1,e=b.length;d")[0],Bc=Sa.textContent!==q,Cc=/<.*?>/g,mb=u.util.throttle,tc=[],N=Array.prototype,Fc=function(a){var b,c=u.settings,d=l.map(c,function(h,f){return h.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase()){var e= +l.inArray(a,d);return-1!==e?[c[e]]:null}if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?b=l(a):a instanceof l&&(b=a)}else return[];if(b)return b.map(function(h){e=l.inArray(this,d);return-1!==e?c[e]:null}).toArray()};var B=function(a,b){if(!(this instanceof B))return new B(a,b);var c=[],d=function(f){(f=Fc(f))&&c.push.apply(c,f)};if(Array.isArray(a))for(var e=0,h=a.length;ea?new B(b[a],this[a]):null},filter:function(a){var b=[];if(N.filter)b=N.filter.call(this,a,this);else for(var c=0,d=this.length;c").addClass(g),l("td",k).addClass(g).html(f)[0].colSpan=na(a),e.push(k[0]))};h(c,d);b._details&&b._details.detach();b._details=l(e);b._detailsShow&&b._details.insertAfter(b.nTr)},wc=u.util.throttle(function(a){Da(a[0])}, +500),Cb=function(a,b){var c=a.context;c.length&&(a=c[0].aoData[b!==q?b:a[0]])&&a._details&&(a._details.remove(),a._detailsShow=q,a._details=q,l(a.nTr).removeClass("dt-hasChild"),wc(c))},xc=function(a,b){var c=a.context;if(c.length&&a.length){var d=c[0].aoData[a[0]];d._details&&((d._detailsShow=b)?(d._details.insertAfter(d.nTr),l(d.nTr).addClass("dt-hasChild")):(d._details.detach(),l(d.nTr).removeClass("dt-hasChild")),F(c[0],null,"childRow",[b,a.row(a[0])]),Ic(c[0]),wc(c))}},Ic=function(a){var b=new B(a), +c=a.aoData;b.off("draw.dt.DT_details column-sizing.dt.DT_details destroy.dt.DT_details");0g){var n=l.map(d,function(p,t){return p.bVisible?t:null});return[n[n.length+g]]}return[ta(a,g)];case "name":return l.map(e,function(p,t){return p===m[1]?t:null});default:return[]}if(f.nodeName&&f._DT_CellIndex)return[f._DT_CellIndex.column];g=l(h).filter(f).map(function(){return l.inArray(this,h)}).toArray();if(g.length||!f.nodeName)return g; +g=l(f).closest("*[data-dt-column]");return g.length?[g.data("dt-column")]:[]},a,c)};z("columns()",function(a,b){a===q?a="":l.isPlainObject(a)&&(b=a,a="");b=Ab(b);var c=this.iterator("table",function(d){return Kc(d,a,b)},1);c.selector.cols=a;c.selector.opts=b;return c});J("columns().header()","column().header()",function(a,b){return this.iterator("column",function(c,d){return c.aoColumns[d].nTh},1)});J("columns().footer()","column().footer()",function(a,b){return this.iterator("column",function(c, +d){return c.aoColumns[d].nTf},1)});J("columns().data()","column().data()",function(){return this.iterator("column-rows",yc,1)});J("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});J("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,h){return Fa(b.aoData,h,"search"===a?"_aFilterData":"_aSortData",c)},1)});J("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows", +function(a,b,c,d,e){return Fa(a.aoData,e,"anCells",b)},1)});J("columns().visible()","column().visible()",function(a,b){var c=this,d=this.iterator("column",function(e,h){if(a===q)return e.aoColumns[h].bVisible;var f=e.aoColumns,g=f[h],k=e.aoData,m;if(a!==q&&g.bVisible!==a){if(a){var n=l.inArray(!0,U(f,"bVisible"),h+1);f=0;for(m=k.length;fd;return!0};u.isDataTable=u.fnIsDataTable=function(a){var b=l(a).get(0),c=!1;if(a instanceof u.Api)return!0;l.each(u.settings,function(d,e){d=e.nScrollHead?l("table",e.nScrollHead)[0]:null;var h=e.nScrollFoot? +l("table",e.nScrollFoot)[0]:null;if(e.nTable===b||d===b||h===b)c=!0});return c};u.tables=u.fnTables=function(a){var b=!1;l.isPlainObject(a)&&(b=a.api,a=a.visible);var c=l.map(u.settings,function(d){if(!a||a&&l(d.nTable).is(":visible"))return d.nTable});return b?new B(c):c};u.camelToHungarian=P;z("$()",function(a,b){b=this.rows(b).nodes();b=l(b);return l([].concat(b.filter(a).toArray(),b.find(a).toArray()))});l.each(["on","one","off"],function(a,b){z(b+"()",function(){var c=Array.prototype.slice.call(arguments); +c[0]=l.map(c[0].split(/\s/),function(e){return e.match(/\.dt\b/)?e:e+".dt"}).join(" ");var d=l(this.tables().nodes());d[b].apply(d,c);return this})});z("clear()",function(){return this.iterator("table",function(a){Ma(a)})});z("settings()",function(){return new B(this.context,this.context)});z("init()",function(){var a=this.context;return a.length?a[0].oInit:null});z("data()",function(){return this.iterator("table",function(a){return U(a.aoData,"_aData")}).flatten()});z("destroy()",function(a){a=a|| +!1;return this.iterator("table",function(b){var c=b.oClasses,d=b.nTable,e=b.nTBody,h=b.nTHead,f=b.nTFoot,g=l(d);e=l(e);var k=l(b.nTableWrapper),m=l.map(b.aoData,function(p){return p.nTr}),n;b.bDestroying=!0;F(b,"aoDestroyCallback","destroy",[b]);a||(new B(b)).columns().visible(!0);k.off(".DT").find(":not(tbody *)").off(".DT");l(y).off(".DT-"+b.sInstance);d!=h.parentNode&&(g.children("thead").detach(),g.append(h));f&&d!=f.parentNode&&(g.children("tfoot").detach(),g.append(f));b.aaSorting=[];b.aaSortingFixed= +[];Va(b);l(m).removeClass(b.asStripeClasses.join(" "));l("th, td",h).removeClass(c.sSortable+" "+c.sSortableAsc+" "+c.sSortableDesc+" "+c.sSortableNone);e.children().detach();e.append(m);h=b.nTableWrapper.parentNode;f=a?"remove":"detach";g[f]();k[f]();!a&&h&&(h.insertBefore(d,b.nTableReinsertBefore),g.css("width",b.sDestroyWidth).removeClass(c.sTable),(n=b.asDestroyStripes.length)&&e.children().each(function(p){l(this).addClass(b.asDestroyStripes[p%n])}));c=l.inArray(b,u.settings);-1!==c&&u.settings.splice(c, +1)})});l.each(["column","row","cell"],function(a,b){z(b+"s().every()",function(c){var d=this.selector.opts,e=this;return this.iterator(b,function(h,f,g,k,m){c.call(e[b](f,"cell"===b?g:d,"cell"===b?d:q),f,g,k,m)})})});z("i18n()",function(a,b,c){var d=this.context[0];a=ma(a)(d.oLanguage);a===q&&(a=b);c!==q&&l.isPlainObject(a)&&(a=a[c]!==q?a[c]:a._);return a.replace("%d",c)});u.version="1.12.1";u.settings=[];u.models={};u.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0,"return":!1}; +u.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};u.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null, +sWidth:null,sWidthOrig:null};u.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g, +this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){return{}}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+ +a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries", +sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:l.extend({},u.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};E(u.defaults); +u.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};E(u.defaults.column);u.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null, +bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[], +aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,jqXHR:null,json:q,oAjaxData:q,fnServerData:null,aoServerParams:[],sServerMethod:null, +fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==Q(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==Q(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+ +a,d=this.aiDisplay.length,e=this.oFeatures,h=e.bPaginate;return e.bServerSide?!1===h||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!h||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};u.ext=M={buttons:{},classes:{},build:"bs4/dt-1.12.1/r-2.3.0",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[], +search:{},order:{}},_unique:0,fnVersionCheck:u.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:u.version};l.extend(M,{afnFiltering:M.search,aTypes:M.type.detect,ofnSearch:M.type.search,oSort:M.type.order,afnSortData:M.order,aoFeatures:M.feature,oApi:M.internal,oStdClasses:M.classes,oPagination:M.pager});l.extend(u.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty", +sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_desc_disabled",sSortableDesc:"sorting_asc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner", +sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var ic=u.ext.pager;l.extend(ic,{simple:function(a,b){return["previous","next"]},full:function(a,b){return["first","previous","next","last"]},numbers:function(a,b){return[Ea(a,b)]},simple_numbers:function(a,b){return["previous", +Ea(a,b),"next"]},full_numbers:function(a,b){return["first","previous",Ea(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",Ea(a,b),"last"]},_numbers:Ea,numbers_length:7});l.extend(!0,u.ext.renderer,{pageButton:{_:function(a,b,c,d,e,h){var f=a.oClasses,g=a.oLanguage.oPaginate,k=a.oLanguage.oAria.paginate||{},m,n,p=0,t=function(x,w){var r,C=f.sPageButtonDisabled,G=function(I){Ta(a,I.data.action,!0)};var ba=0;for(r=w.length;ba").appendTo(x);t(O,L)}else{m=null;n=L;O=a.iTabIndex;switch(L){case "ellipsis":x.append('');break;case "first":m=g.sFirst;0===e&&(O=-1,n+=" "+C);break;case "previous":m=g.sPrevious;0===e&&(O=-1,n+=" "+C);break;case "next":m=g.sNext;if(0===h||e===h-1)O=-1,n+=" "+C;break;case "last":m=g.sLast;if(0===h||e===h-1)O=-1,n+=" "+C;break;default:m=a.fnFormatNumber(L+1),n=e===L?f.sPageButtonActive:""}null!==m&&(O=l("",{"class":f.sPageButton+" "+n,"aria-controls":a.sTableId, +"aria-label":k[L],"data-dt-idx":p,tabindex:O,id:0===c&&"string"===typeof L?a.sTableId+"_"+L:null}).html(m).appendTo(x),sb(O,{action:L},G),p++)}}};try{var v=l(b).find(A.activeElement).data("dt-idx")}catch(x){}t(l(b).empty(),d);v!==q&&l(b).find("[data-dt-idx="+v+"]").trigger("focus")}}});l.extend(u.ext.type.detect,[function(a,b){b=b.oLanguage.sDecimal;return yb(a,b)?"num"+b:null},function(a,b){if(a&&!(a instanceof Date)&&!Dc.test(a))return null;b=Date.parse(a);return null!==b&&!isNaN(b)||aa(a)?"date": +null},function(a,b){b=b.oLanguage.sDecimal;return yb(a,b,!0)?"num-fmt"+b:null},function(a,b){b=b.oLanguage.sDecimal;return pc(a,b)?"html-num"+b:null},function(a,b){b=b.oLanguage.sDecimal;return pc(a,b,!0)?"html-num-fmt"+b:null},function(a,b){return aa(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);l.extend(u.ext.type.search,{html:function(a){return aa(a)?a:"string"===typeof a?a.replace(mc," ").replace(Ya,""):""},string:function(a){return aa(a)?a:"string"===typeof a?a.replace(mc," "): +a}});var Xa=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=oc(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};l.extend(M.type.order,{"date-pre":function(a){a=Date.parse(a);return isNaN(a)?-Infinity:a},"html-pre":function(a){return aa(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return aa(a)?"":"string"===typeof a?a.toLowerCase():a.toString?a.toString():""},"string-asc":function(a,b){return ab?1:0},"string-desc":function(a, +b){return ab?-1:0}});bb("");l.extend(!0,u.ext.renderer,{header:{_:function(a,b,c,d){l(a.nTable).on("order.dt.DT",function(e,h,f,g){a===h&&(e=c.idx,b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass("asc"==g[e]?d.sSortAsc:"desc"==g[e]?d.sSortDesc:c.sSortingClass))})},jqueryui:function(a,b,c,d){l("
      ").addClass(d.sSortJUIWrapper).append(b.contents()).append(l("").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);l(a.nTable).on("order.dt.DT",function(e,h,f,g){a===h&&(e=c.idx, +b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass("asc"==g[e]?d.sSortAsc:"desc"==g[e]?d.sSortDesc:c.sSortingClass),b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass("asc"==g[e]?d.sSortJUIAsc:"desc"==g[e]?d.sSortJUIDesc:c.sSortingClassJUI))})}}});var $a=function(a){Array.isArray(a)&&(a=a.join(","));return"string"===typeof a?a.replace(/&/g,"&").replace(//g,">").replace(/"/g, +"""):a},kc=!1,zc=",",Ac=".";if(Intl)try{for(var Ha=(new Intl.NumberFormat).formatToParts(100000.1),ra=0;rah?"-":"",g=parseFloat(h);if(isNaN(g))return $a(h);g=g.toFixed(c);h=Math.abs(g);g=parseInt(h,10);h=c?b+(h-g).toFixed(c).substring(2):"";0===g&&0===parseFloat(h)&&(f="");return f+(d||"")+g.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+h+(e||"")}}},text:function(){return{display:$a,filter:$a}}}; +l.extend(u.ext.internal,{_fnExternApiFunc:lc,_fnBuildAjax:Qa,_fnAjaxUpdate:Kb,_fnAjaxParameters:Tb,_fnAjaxUpdateDraw:Ub,_fnAjaxDataSrc:za,_fnAddColumn:cb,_fnColumnOptions:Ia,_fnAdjustColumnSizing:sa,_fnVisibleToColumnIndex:ta,_fnColumnIndexToVisible:ua,_fnVisbleColumns:na,_fnGetColumns:Ka,_fnColumnTypes:eb,_fnApplyColumnDefs:Hb,_fnHungarianMap:E,_fnCamelToHungarian:P,_fnLanguageCompat:la,_fnBrowserDetect:Fb,_fnAddData:ia,_fnAddTr:La,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==q?b._DT_RowIndex: +null},_fnNodeToColumnIndex:function(a,b,c){return l.inArray(c,a.aoData[b].anCells)},_fnGetCellData:T,_fnSetCellData:Ib,_fnSplitObjNotation:hb,_fnGetObjectDataFn:ma,_fnSetObjectDataFn:ha,_fnGetDataMaster:ib,_fnClearTable:Ma,_fnDeleteIndex:Na,_fnInvalidate:va,_fnGetRowElements:gb,_fnCreateTr:fb,_fnBuildHead:Jb,_fnDrawHead:xa,_fnDraw:ja,_fnReDraw:ka,_fnAddOptionsHtml:Mb,_fnDetectHeader:wa,_fnGetUniqueThs:Pa,_fnFeatureHtmlFilter:Ob,_fnFilterComplete:ya,_fnFilterCustom:Xb,_fnFilterColumn:Wb,_fnFilter:Vb, +_fnFilterCreateSearch:nb,_fnEscapeRegex:ob,_fnFilterData:Yb,_fnFeatureHtmlInfo:Rb,_fnUpdateInfo:ac,_fnInfoMacros:bc,_fnInitialise:Aa,_fnInitComplete:Ra,_fnLengthChange:pb,_fnFeatureHtmlLength:Nb,_fnFeatureHtmlPaginate:Sb,_fnPageChange:Ta,_fnFeatureHtmlProcessing:Pb,_fnProcessingDisplay:V,_fnFeatureHtmlTable:Qb,_fnScrollDraw:Ja,_fnApplyToChildren:da,_fnCalculateColumnWidths:db,_fnThrottle:mb,_fnConvertToWidth:cc,_fnGetWidestNode:dc,_fnGetMaxLenString:ec,_fnStringToCss:K,_fnSortFlatten:oa,_fnSort:Lb, +_fnSortAria:gc,_fnSortListener:rb,_fnSortAttachListener:kb,_fnSortingClasses:Va,_fnSortData:fc,_fnSaveState:Da,_fnLoadState:hc,_fnImplementState:tb,_fnSettingsFromNode:Wa,_fnLog:ea,_fnMap:Y,_fnBindAction:sb,_fnCallbackReg:R,_fnCallbackFire:F,_fnLengthOverflow:qb,_fnRenderer:lb,_fnDataSource:Q,_fnRowAttributes:jb,_fnExtend:ub,_fnCalculateEnd:function(){}});l.fn.dataTable=u;u.$=l;l.fn.dataTableSettings=u.settings;l.fn.dataTableExt=u.ext;l.fn.DataTable=function(a){return l(this).dataTable(a).api()}; +l.each(u,function(a,b){l.fn.DataTable[a]=b});return u}); + + +/*! + DataTables Bootstrap 4 integration + ©2011-2017 SpryMedia Ltd - datatables.net/license +*/ +var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var e=a.length,d=0;d<'col-sm-12 col-md-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-12'p>>", +renderer:"bootstrap"});a.extend(d.ext.classes,{sWrapper:"dataTables_wrapper dt-bootstrap4",sFilterInput:"form-control form-control-sm",sLengthSelect:"custom-select custom-select-sm form-control form-control-sm",sProcessing:"dataTables_processing card",sPageButton:"paginate_button page-item"});d.ext.renderer.pageButton.bootstrap=function(f,l,A,B,m,t){var u=new d.Api(f),C=f.oClasses,n=f.oLanguage.oPaginate,D=f.oLanguage.oAria.paginate||{},h,k,v=0,y=function(q,w){var x,E=function(p){p.preventDefault(); +a(p.currentTarget).hasClass("disabled")||u.page()==p.data.action||u.page(p.data.action).draw("page")};var r=0;for(x=w.length;r",{"class":C.sPageButton+" "+k,id:0===A&&"string"===typeof g?f.sTableId+"_"+g:null}).append(a("",{href:"#","aria-controls":f.sTableId,"aria-label":D[g],"data-dt-idx":v,tabindex:f.iTabIndex,"class":"page-link"}).html(h)).appendTo(q);f.oApi._fnBindAction(F,{action:g},E);v++}}}};try{var z=a(l).find(c.activeElement).data("dt-idx")}catch(q){}y(a(l).empty().html('
        ').children("ul"),B);z!==e&&a(l).find("[data-dt-idx="+z+"]").trigger("focus")};return d}); + + +/*! + SpryMedia Ltd. + + This source file is free software, available under the following license: + MIT license - http://datatables.net/license/mit + + This source file is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. + + For details please refer to: http://www.datatables.net + Responsive 2.3.0 + 2014-2022 SpryMedia Ltd - datatables.net/license +*/ +var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(b,k,m){b instanceof String&&(b=String(b));for(var n=b.length,p=0;ptd, >th", +f).each(function(e){e=c.column.index("toData",e);!1===a.s.current[e]&&b(this).css("display","none")})});c.on("destroy.dtr",function(){c.off(".dtr");b(c.table().body()).off(".dtr");b(k).off("resize.dtr orientationchange.dtr");c.cells(".dtr-control").nodes().to$().removeClass("dtr-control");b.each(a.s.current,function(f,l){!1===l&&a._setColumnVis(f,!0)})});this.c.breakpoints.sort(function(f,l){return f.widthl.width?-1:0});this._classLogic();this._resizeAuto();d=this.c.details;!1!== +d.type&&(a._detailsInit(),c.on("column-visibility.dtr",function(){a._timer&&clearTimeout(a._timer);a._timer=setTimeout(function(){a._timer=null;a._classLogic();a._resizeAuto();a._resize(!0);a._redrawChildren()},100)}),c.on("draw.dtr",function(){a._redrawChildren()}),b(c.table().node()).addClass("dtr-"+d.type));c.on("column-reorder.dtr",function(f,l,h){a._classLogic();a._resizeAuto();a._resize(!0)});c.on("column-sizing.dtr",function(){a._resizeAuto();a._resize()});c.on("column-calc.dt",function(f, +l){f=a.s.current;for(var h=0;hh-d[q].minWidth?(r=!0,l[q]=!1):l[q]=!0,h-=d[q].minWidth)}f=!1;e=0;for(g=d.length;e=q&&f(h,c[e].name);else if("not-"===r)for(e=0,r=c.length;eg?c.columns().eq(0).length+ +g:g;if(c.cell(this).index().column!==l)return}l=c.row(b(this).closest("tr"));"click"===f.type?a._detailsDisplay(l,!1):"mousedown"===f.type?b(this).css("outline","none"):"mouseup"===f.type&&b(this).trigger("blur").css("outline","")}})},_detailsObj:function(a){var c=this,d=this.s.dt;return b.map(this.s.columns,function(g,f){if(!g.never&&!g.control)return g=d.settings()[0].aoColumns[f],{className:g.sClass,columnIndex:f,data:d.cell(a,f).render(c.c.orthogonal),hidden:d.column(f).visible()&&!c.s.current[f], +rowIndex:a,title:null!==g.sTitle?g.sTitle:b(d.column(f).header()).text()}})},_find:function(a){for(var c=this.c.breakpoints,d=0,g=c.length;d").append(h).appendTo(f)}b("
      ").append(l).appendTo(g);"inline"===this.c.details.type&&b(d).addClass("dtr-inline collapsed");b(d).find("[name]").removeAttr("name");b(d).css("position", +"relative");d=b("
      ").css({width:1,height:1,overflow:"hidden",clear:"both"}).append(d);d.insertBefore(a.table().node());l.each(function(e){e=a.column.index("fromVisible",e);c[e].minWidth=this.offsetWidth||0});d.remove()}},_responsiveOnlyHidden:function(){var a=this.s.dt;return b.map(this.s.current,function(c,d){return!1===a.column(d).visible()?!0:c})},_setColumnVis:function(a,c){var d=this.s.dt,g=c?"":"none";b(d.column(a).header()).css("display",g).toggleClass("dtr-hidden",!c);b(d.column(a).footer()).css("display", +g).toggleClass("dtr-hidden",!c);d.column(a).nodes().to$().css("display",g).toggleClass("dtr-hidden",!c);b.isEmptyObject(A)||d.cells(null,a).indexes().each(function(f){y(d,f.row,f.column)})},_tabIndexes:function(){var a=this.s.dt,c=a.cells({page:"current"}).nodes().to$(),d=a.settings()[0],g=this.c.details.target;c.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]");"number"===typeof g?a.cells(null,g,{page:"current"}).nodes().to$().attr("tabIndex",d.iTabIndex).data("dtr-keyboard",1):("td:first-child, th:first-child"=== +g&&(g=">td:first-child, >th:first-child"),b(g,a.rows({page:"current"}).nodes()).attr("tabIndex",d.iTabIndex).data("dtr-keyboard",1))}});u.breakpoints=[{name:"desktop",width:Infinity},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}];u.display={childRow:function(a,c,d){if(c){if(b(a.node()).hasClass("parent"))return a.child(d(),"child").show(),!0}else{if(a.child.isShown())return a.child(!1),b(a.node()).removeClass("parent"),!1;a.child(d(), +"child").show();b(a.node()).addClass("parent");return!0}},childRowImmediate:function(a,c,d){if(!c&&a.child.isShown()||!a.responsive.hasHidden())return a.child(!1),b(a.node()).removeClass("parent"),!1;a.child(d(),"child").show();b(a.node()).addClass("parent");return!0},modal:function(a){return function(c,d,g){if(d)b("div.dtr-modal-content").empty().append(g());else{var f=function(){l.remove();b(m).off("keypress.dtr")},l=b('
      ').append(b('
      ').append(b('
      ').append(g())).append(b('
      ×
      ').click(function(){f()}))).append(b('
      ').click(function(){f()})).appendTo("body"); +b(m).on("keyup.dtr",function(h){27===h.keyCode&&(h.stopPropagation(),f())})}a&&a.header&&b("div.dtr-modal-content").prepend("

      "+a.header(c)+"

      ")}}};var A={};u.renderer={listHiddenNodes:function(){return function(a,c,d){var g=b('
        '),f=!1;b.each(d,function(l,h){h.hidden&&(b("
      • '+ +h.title+"
      • ").append(b('').append(p(a,h.rowIndex,h.columnIndex))).appendTo(g),f=!0)});return f?g:!1}},listHidden:function(){return function(a,c,d){return(a=b.map(d,function(g){var f=g.className?'class="'+g.className+'"':"";return g.hidden?"
      • '+g.title+' '+g.data+"
      • ":""}).join(""))?b('
          ').append(a):!1}},tableAll:function(a){a=b.extend({tableClass:""},a);return function(c,d,g){c=b.map(g,function(f){return"
      "}).join("");return b('
      ",{valign:"top",colSpan:na(a),"class":a.oClasses.sRowEmpty}).html(e))[0];F(a,"aoHeaderCallback","header",[l(a.nTHead).children("tr")[0], +ib(a),m,n,k]);F(a,"aoFooterCallback","footer",[l(a.nTFoot).children("tr")[0],ib(a),m,n,k]);d=l(a.nTBody);d.children().detach();d.append(l(c));F(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function ka(a,b){var c=a.oFeatures,d=c.bFilter;c.bSort&&Lb(a);d?ya(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;ja(a);a._drawHold=!1}function Mb(a){var b=a.oClasses,c=l(a.nTable);c=l("
      ").insertBefore(c);var d=a.oFeatures, +e=l("
      ",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var h=a.sDom.split(""),f,g,k,m,n,p,t=0;t")[0];m=h[t+1];if("'"==m||'"'==m){n="";for(p=2;h[t+p]!=m;)n+=h[t+p],p++;"H"==n?n=b.sJUIHeader:"F"==n&&(n=b.sJUIFooter);-1!=n.indexOf(".")?(m=n.split("."),k.id=m[0].substr(1,m[0].length-1),k.className=m[1]):"#"==n.charAt(0)?k.id=n.substr(1, +n.length-1):k.className=n;t+=p}e.append(k);e=l(k)}else if(">"==g)e=e.parent();else if("l"==g&&d.bPaginate&&d.bLengthChange)f=Nb(a);else if("f"==g&&d.bFilter)f=Ob(a);else if("r"==g&&d.bProcessing)f=Pb(a);else if("t"==g)f=Qb(a);else if("i"==g&&d.bInfo)f=Rb(a);else if("p"==g&&d.bPaginate)f=Sb(a);else if(0!==u.ext.feature.length)for(k=u.ext.feature,p=0,m=k.length;p',g=d.sSearch;g=g.match(/_INPUT_/)?g.replace("_INPUT_",f):g+f;b=l("
      ",{id:h.f?null:c+"_filter","class":b.sFilter}).append(l("
      ").addClass(b.sLength);a.aanFeatures.l||(k[0].id=c+"_length");k.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));l("select",k).val(a._iDisplayLength).on("change.DT",function(m){pb(a,l(this).val());ja(a)});l(a.nTable).on("length.dt.DT",function(m,n,p){a===n&&l("select",k).val(p)});return k[0]}function Sb(a){var b=a.sPaginationType,c=u.ext.pager[b],d="function"===typeof c,e=function(f){ja(f)};b=l("
      ").addClass(a.oClasses.sPaging+ +b)[0];var h=a.aanFeatures;d||c.fnInit(a,b,e);h.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(f){if(d){var g=f._iDisplayStart,k=f._iDisplayLength,m=f.fnRecordsDisplay(),n=-1===k;g=n?0:Math.ceil(g/k);k=n?1:Math.ceil(m/k);m=c(g,k);var p;n=0;for(p=h.p.length;nh&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e",{id:a.aanFeatures.r?null:a.sTableId+"_processing","class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).append("
      ").insertBefore(a.nTable)[0]}function V(a, +b){a.oFeatures.bProcessing&&l(a.aanFeatures.r).css("display",b?"block":"none");F(a,null,"processing",[a,b])}function Qb(a){var b=l(a.nTable),c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,h=a.oClasses,f=b.children("caption"),g=f.length?f[0]._captionSide:null,k=l(b[0].cloneNode(!1)),m=l(b[0].cloneNode(!1)),n=b.children("tfoot");n.length||(n=null);k=l("
      ",{"class":h.sScrollWrapper}).append(l("
      ",{"class":h.sScrollHead}).css({overflow:"hidden",position:"relative",border:0, +width:d?d?K(d):null:"100%"}).append(l("
      ",{"class":h.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(k.removeAttr("id").css("margin-left",0).append("top"===g?f:null).append(b.children("thead"))))).append(l("
      ",{"class":h.sScrollBody}).css({position:"relative",overflow:"auto",width:d?K(d):null}).append(b));n&&k.append(l("
      ",{"class":h.sScrollFoot}).css({overflow:"hidden",border:0,width:d?d?K(d):null:"100%"}).append(l("
      ",{"class":h.sScrollFootInner}).append(m.removeAttr("id").css("margin-left", +0).append("bottom"===g?f:null).append(b.children("tfoot")))));b=k.children();var p=b[0];h=b[1];var t=n?b[2]:null;if(d)l(h).on("scroll.DT",function(v){v=this.scrollLeft;p.scrollLeft=v;n&&(t.scrollLeft=v)});l(h).css("max-height",e);c.bCollapse||l(h).css("height",e);a.nScrollHead=p;a.nScrollBody=h;a.nScrollFoot=t;a.aoDrawCallback.push({fn:Ja,sName:"scrolling"});return k[0]}function Ja(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY;b=b.iBarWidth;var h=l(a.nScrollHead),f=h[0].style,g=h.children("div"),k= +g[0].style,m=g.children("table");g=a.nScrollBody;var n=l(g),p=g.style,t=l(a.nScrollFoot).children("div"),v=t.children("table"),x=l(a.nTHead),w=l(a.nTable),r=w[0],C=r.style,G=a.nTFoot?l(a.nTFoot):null,ba=a.oBrowser,L=ba.bScrollOversize;U(a.aoColumns,"nTh");var O=[],I=[],H=[],fa=[],Z,Ba=function(D){D=D.style;D.paddingTop="0";D.paddingBottom="0";D.borderTopWidth="0";D.borderBottomWidth="0";D.height=0};var X=g.scrollHeight>g.clientHeight;if(a.scrollBarVis!==X&&a.scrollBarVis!==q)a.scrollBarVis=X,sa(a); +else{a.scrollBarVis=X;w.children("thead, tfoot").remove();if(G){X=G.clone().prependTo(w);var ca=G.find("tr");var Ca=X.find("tr");X.find("[id]").removeAttr("id")}var Ua=x.clone().prependTo(w);x=x.find("tr");X=Ua.find("tr");Ua.find("th, td").removeAttr("tabindex");Ua.find("[id]").removeAttr("id");c||(p.width="100%",h[0].style.width="100%");l.each(Pa(a,Ua),function(D,W){Z=ta(a,D);W.style.width=a.aoColumns[Z].sWidth});G&&da(function(D){D.style.width=""},Ca);h=w.outerWidth();""===c?(C.width="100%",L&& +(w.find("tbody").height()>g.offsetHeight||"scroll"==n.css("overflow-y"))&&(C.width=K(w.outerWidth()-b)),h=w.outerWidth()):""!==d&&(C.width=K(d),h=w.outerWidth());da(Ba,X);da(function(D){var W=y.getComputedStyle?y.getComputedStyle(D).width:K(l(D).width());H.push(D.innerHTML);O.push(W)},X);da(function(D,W){D.style.width=O[W]},x);l(X).css("height",0);G&&(da(Ba,Ca),da(function(D){fa.push(D.innerHTML);I.push(K(l(D).css("width")))},Ca),da(function(D,W){D.style.width=I[W]},ca),l(Ca).height(0));da(function(D, +W){D.innerHTML='
      '+H[W]+"
      ";D.childNodes[0].style.height="0";D.childNodes[0].style.overflow="hidden";D.style.width=O[W]},X);G&&da(function(D,W){D.innerHTML='
      '+fa[W]+"
      ";D.childNodes[0].style.height="0";D.childNodes[0].style.overflow="hidden";D.style.width=I[W]},Ca);Math.round(w.outerWidth())g.offsetHeight||"scroll"==n.css("overflow-y")?h+b:h,L&&(g.scrollHeight>g.offsetHeight||"scroll"==n.css("overflow-y"))&& +(C.width=K(ca-b)),""!==c&&""===d||ea(a,1,"Possible column misalignment",6)):ca="100%";p.width=K(ca);f.width=K(ca);G&&(a.nScrollFoot.style.width=K(ca));!e&&L&&(p.height=K(r.offsetHeight+b));c=w.outerWidth();m[0].style.width=K(c);k.width=K(c);d=w.height()>g.clientHeight||"scroll"==n.css("overflow-y");e="padding"+(ba.bScrollbarLeft?"Left":"Right");k[e]=d?b+"px":"0px";G&&(v[0].style.width=K(c),t[0].style.width=K(c),t[0].style[e]=d?b+"px":"0px");w.children("colgroup").insertBefore(w.children("thead")); +n.trigger("scroll");!a.bSorted&&!a.bFiltered||a._drawHold||(g.scrollTop=0)}}function da(a,b,c){for(var d=0,e=0,h=b.length,f,g;e").appendTo(g.find("tbody"));g.find("thead, tfoot").remove();g.append(l(a.nTHead).clone()).append(l(a.nTFoot).clone());g.find("tfoot th, tfoot td").css("width","");m=Pa(a,g.find("thead")[0]); +for(v=0;v").css({width:w.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(v=0;v").css(h||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(g).appendTo(p);h&&f?g.width(f):h? +(g.css("width","auto"),g.removeAttr("width"),g.width()").css("width",K(a)).appendTo(b||A.body);b=a[0].offsetWidth;a.remove();return b}function dc(a,b){var c=ec(a,b);if(0>c)return null;var d=a.aoData[c];return d.nTr?d.anCells[b]:l("
      ").html(T(a,c,b,"display"))[0]}function ec(a,b){for(var c,d=-1,e=-1,h=0,f=a.aoData.length;hd&&(d=c.length,e=h);return e}function K(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function oa(a){var b= +[],c=a.aoColumns;var d=a.aaSortingFixed;var e=l.isPlainObject(d);var h=[];var f=function(n){n.length&&!Array.isArray(n[0])?h.push(n):l.merge(h,n)};Array.isArray(d)&&f(d);e&&d.pre&&f(d.pre);f(a.aaSorting);e&&d.post&&f(d.post);for(a=0;aG?1:0;if(0!==C)return"asc"===r.dir?C:-C}C=c[n];G=c[p];return CG?1:0}):f.sort(function(n,p){var t,v=g.length, +x=e[n]._aSortData,w=e[p]._aSortData;for(t=0;tG?1:0})}a.bSorted=!0}function gc(a){var b=a.aoColumns,c=oa(a);a=a.oLanguage.oAria;for(var d=0,e=b.length;d/g,"");var k=h.nTh;k.removeAttribute("aria-sort");h.bSortable&&(0e?e+1:3))}e=0;for(h=d.length;ee?e+1:3))}a.aLastSort=d}function fc(a,b){var c=a.aoColumns[b],d=u.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,ua(a,b)));for(var h,f=u.ext.type.order[c.sType+"-pre"],g=0,k=a.aoData.length;g=e.length?[0,m[1]]:m)}));b.search!==q&&l.extend(a.oPreviousSearch,$b(b.search));if(b.columns){f=0;for(d=b.columns.length;f=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function lb(a,b){a=a.renderer;var c=u.ext.renderer[b]; +return l.isPlainObject(a)&&a[b]?c[a[b]]||c._:"string"===typeof a?c[a]||c._:c._}function Q(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Ea(a,b){var c=ic.numbers_length,d=Math.floor(c/2);b<=c?a=pa(0,b):a<=d?(a=pa(0,c-2),a.push("ellipsis"),a.push(b-1)):(a>=b-1-d?a=pa(b-(c-2),b):(a=pa(a-d+2,a+d-1),a.push("ellipsis"),a.push(b-1)),a.splice(0,0,"ellipsis"),a.splice(0,0,0));a.DT_el="span";return a}function bb(a){l.each({num:function(b){return Xa(b,a)},"num-fmt":function(b){return Xa(b, +a,vb)},"html-num":function(b){return Xa(b,a,Ya)},"html-num-fmt":function(b){return Xa(b,a,Ya,vb)}},function(b,c){M.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(M.type.search[b+a]=M.type.search.html)})}function jc(a,b,c,d,e){return y.moment?a[b](e):y.luxon?a[c](e):d?a[d](e):a}function Za(a,b,c){if(y.moment){var d=y.moment.utc(a,b,c,!0);if(!d.isValid())return null}else if(y.luxon){d=b?y.luxon.DateTime.fromFormat(a,b):y.luxon.DateTime.fromISO(a);if(!d.isValid)return null;d.setLocale(c)}else b?(kc|| +alert("DataTables warning: Formatted date without Moment.js or Luxon - https://datatables.net/tn/17"),kc=!0):d=new Date(a);return d}function wb(a){return function(b,c,d,e){0===arguments.length?(d="en",b=c=null):1===arguments.length?(d="en",c=b,b=null):2===arguments.length&&(d=c,c=b,b=null);var h="datetime-"+c;u.ext.type.order[h]||(u.ext.type.detect.unshift(function(f){return f===h?h:!1}),u.ext.type.order[h+"-asc"]=function(f,g){f=f.valueOf();g=g.valueOf();return f===g?0:fg?-1:1});return function(f,g){if(null===f||f===q)"--now"===e?(f=new Date,f=new Date(Date.UTC(f.getFullYear(),f.getMonth(),f.getDate(),f.getHours(),f.getMinutes(),f.getSeconds()))):f="";if("type"===g)return h;if(""===f)return"sort"!==g?"":Za("0000-01-01 00:00:00",null,d);if(null!==c&&b===c&&"sort"!==g&&"type"!==g&&!(f instanceof Date))return f;var k=Za(f,b,d);if(null===k)return f;if("sort"===g)return k;f=null===c?jc(k,"toDate","toJSDate", +"")[a]():jc(k,"format","toFormat","toISOString",c);return"display"===g?$a(f):f}}}function lc(a){return function(){var b=[Wa(this[u.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return u.ext.internal[a].apply(this,b)}}var u=function(a,b){if(this instanceof u)return l(a).DataTable(b);b=a;this.$=function(f,g){return this.api(!0).$(f,g)};this._=function(f,g){return this.api(!0).rows(f,g).data()};this.api=function(f){return f?new B(Wa(this[M.iApiIndex])):new B(this)};this.fnAddData=function(f, +g){var k=this.api(!0);f=Array.isArray(f)&&(Array.isArray(f[0])||l.isPlainObject(f[0]))?k.rows.add(f):k.row.add(f);(g===q||g)&&k.draw();return f.flatten().toArray()};this.fnAdjustColumnSizing=function(f){var g=this.api(!0).columns.adjust(),k=g.settings()[0],m=k.oScroll;f===q||f?g.draw(!1):(""!==m.sX||""!==m.sY)&&Ja(k)};this.fnClearTable=function(f){var g=this.api(!0).clear();(f===q||f)&&g.draw()};this.fnClose=function(f){this.api(!0).row(f).child.hide()};this.fnDeleteRow=function(f,g,k){var m=this.api(!0); +f=m.rows(f);var n=f.settings()[0],p=n.aoData[f[0][0]];f.remove();g&&g.call(this,n,p);(k===q||k)&&m.draw();return p};this.fnDestroy=function(f){this.api(!0).destroy(f)};this.fnDraw=function(f){this.api(!0).draw(f)};this.fnFilter=function(f,g,k,m,n,p){n=this.api(!0);null===g||g===q?n.search(f,k,m,p):n.column(g).search(f,k,m,p);n.draw()};this.fnGetData=function(f,g){var k=this.api(!0);if(f!==q){var m=f.nodeName?f.nodeName.toLowerCase():"";return g!==q||"td"==m||"th"==m?k.cell(f,g).data():k.row(f).data()|| +null}return k.data().toArray()};this.fnGetNodes=function(f){var g=this.api(!0);return f!==q?g.row(f).node():g.rows().nodes().flatten().toArray()};this.fnGetPosition=function(f){var g=this.api(!0),k=f.nodeName.toUpperCase();return"TR"==k?g.row(f).index():"TD"==k||"TH"==k?(f=g.cell(f).index(),[f.row,f.columnVisible,f.column]):null};this.fnIsOpen=function(f){return this.api(!0).row(f).child.isShown()};this.fnOpen=function(f,g,k){return this.api(!0).row(f).child(g,k).show().child()[0]};this.fnPageChange= +function(f,g){f=this.api(!0).page(f);(g===q||g)&&f.draw(!1)};this.fnSetColumnVis=function(f,g,k){f=this.api(!0).column(f).visible(g);(k===q||k)&&f.columns.adjust().draw()};this.fnSettings=function(){return Wa(this[M.iApiIndex])};this.fnSort=function(f){this.api(!0).order(f).draw()};this.fnSortListener=function(f,g,k){this.api(!0).order.listener(f,g,k)};this.fnUpdate=function(f,g,k,m,n){var p=this.api(!0);k===q||null===k?p.row(g).data(f):p.cell(g,k).data(f);(n===q||n)&&p.columns.adjust();(m===q||m)&& +p.draw();return 0};this.fnVersionCheck=M.fnVersionCheck;var c=this,d=b===q,e=this.length;d&&(b={});this.oApi=this.internal=M.internal;for(var h in u.ext.internal)h&&(this[h]=lc(h));this.each(function(){var f={},g=1").appendTo(t));r.nTHead=H[0];var fa=t.children("tbody");0===fa.length&&(fa=l("
      '+f.title+": "+f.data+"
      ').append(c)}}};u.defaults={breakpoints:u.breakpoints,auto:!0,details:{display:u.display.childRow,renderer:u.renderer.listHidden(), +target:0,type:"inline"},orthogonal:"display"};var C=b.fn.dataTable.Api;C.register("responsive()",function(){return this});C.register("responsive.index()",function(a){a=b(a);return{column:a.data("dtr-index"),row:a.parent().data("dtr-index")}});C.register("responsive.rebuild()",function(){return this.iterator("table",function(a){a._responsive&&a._responsive._classLogic()})});C.register("responsive.recalc()",function(){return this.iterator("table",function(a){a._responsive&&(a._responsive._resizeAuto(), +a._responsive._resize())})});C.register("responsive.hasHidden()",function(){var a=this.context[0];return a._responsive?-1!==b.inArray(!1,a._responsive._responsiveOnlyHidden()):!1});C.registerPlural("columns().responsiveHidden()","column().responsiveHidden()",function(){return this.iterator("column",function(a,c){return a._responsive?a._responsive._responsiveOnlyHidden()[c]:!1},1)});u.version="2.3.0";b.fn.dataTable.Responsive=u;b.fn.DataTable.Responsive=u;b(m).on("preInit.dt.dtr",function(a,c,d){"dt"=== +a.namespace&&(b(c.nTable).hasClass("responsive")||b(c.nTable).hasClass("dt-responsive")||c.oInit.responsive||z.defaults.responsive)&&(a=c.oInit.responsive,!1!==a&&new u(c,b.isPlainObject(a)?a:{}))});return u}); + + +/*! Bootstrap 4 integration for DataTables' Responsive + * ©2016 SpryMedia Ltd - datatables.net/license + */ + +(function( factory ){ + if ( typeof define === 'function' && define.amd ) { + // AMD + define( ['jquery', 'datatables.net-bs4', 'datatables.net-responsive'], function ( $ ) { + return factory( $, window, document ); + } ); + } + else if ( typeof exports === 'object' ) { + // CommonJS + module.exports = function (root, $) { + if ( ! root ) { + root = window; + } + + if ( ! $ || ! $.fn.dataTable ) { + $ = require('datatables.net-bs4')(root, $).$; + } + + if ( ! $.fn.dataTable.Responsive ) { + require('datatables.net-responsive')(root, $); + } + + return factory( $, root, root.document ); + }; + } + else { + // Browser + factory( jQuery, window, document ); + } +}(function( $, window, document, undefined ) { +'use strict'; +var DataTable = $.fn.dataTable; + + +var _display = DataTable.Responsive.display; +var _original = _display.modal; +var _modal = $( + '
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      الرقمالاسمالجنسالسنالمدينةنوع الحالة نسبة الاحتياجمتأخرات مالية تاريخ بدء الكفالة حالة الكفالة
      2أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 +
      + بحاجة للتجديد + cancel الغاء + +
      +
      4أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 +
      + بحاجة للتجديد + cancel الغاء + +
      + +
      2أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 +
      + سارية + cancel الغاء + +
      +
      2أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 +
      + سارية + cancel الغاء + +
      +
      + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/css/bootstrap.min.css b/odex25_takaful/takaful_website_template/css/bootstrap.min.css new file mode 100644 index 000000000..6561b6f4c --- /dev/null +++ b/odex25_takaful/takaful_website_template/css/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark td,.table-dark th,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-append>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,.8);border-radius:.2rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#28a745}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{background-color:#71dd8a}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,.25)}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label::before,.was-validated .custom-file-input:valid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,.8);border-radius:.2rem}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#dc3545}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{background-color:#efa2a9}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,.25)}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label::before,.was-validated .custom-file-input:invalid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled).active,.btn:not(:disabled):not(.disabled):active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;background-color:transparent}.btn-link:hover{color:#0056b3;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link.focus,.btn-link:focus{text-decoration:underline;border-color:transparent;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}.dropdown,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file:focus,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control{margin-left:-1px}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:active~.custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.075),0 0 5px rgba(128,189,255,.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:focus~.custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-header,.card-group>.card:first-child .card-img-top{border-top-right-radius:0}.card-group>.card:first-child .card-footer,.card-group>.card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-header,.card-group>.card:last-child .card-img-top{border-top-left-radius:0}.card-group>.card:last-child .card-footer,.card-group>.card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-header,.card-group>.card:only-child .card-img-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-footer,.card-group>.card:only-child .card-img-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:focus,.badge-info[href]:hover{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-webkit-box;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width .6s ease}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.show .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top] .arrow,.bs-popover-top .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-top .arrow::before{border-width:.5rem .5rem 0}.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::before{bottom:0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-top .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right] .arrow,.bs-popover-right .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-right .arrow::before{border-width:.5rem .5rem .5rem 0}.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::before{left:0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-right .arrow::after{left:1px;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom] .arrow,.bs-popover-bottom .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-bottom .arrow::before{border-width:0 .5rem .5rem .5rem}.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::before{top:0;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-bottom .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left] .arrow,.bs-popover-left .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-left .arrow::before{border-width:.5rem 0 .5rem .5rem}.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::before{right:0;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-left .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-circle{border-radius:50%!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0062cc!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#545b62!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#1d2124!important}.text-muted{color:#6c757d!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/css/bootstrap_3.min.css b/odex25_takaful/takaful_website_template/css/bootstrap_3.min.css new file mode 100644 index 000000000..5b96335ff --- /dev/null +++ b/odex25_takaful/takaful_website_template/css/bootstrap_3.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.4.1 (https://getbootstrap.com/) + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:"Glyphicons Halflings";src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format("embedded-opentype"),url(../fonts/glyphicons-halflings-regular.woff2) format("woff2"),url(../fonts/glyphicons-halflings-regular.woff) format("woff"),url(../fonts/glyphicons-halflings-regular.ttf) format("truetype"),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:"Glyphicons Halflings";font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:"\2014 \00A0"}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:""}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:"\00A0 \2014"}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.row-no-gutters{margin-right:0;margin-left:0}.row-no-gutters [class*=col-]{padding-right:0;padding-left:0}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);opacity:.65;-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;background-image:none;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;background-image:none;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;background-image:none;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;background-image:none;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;background-image:none;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-right:-15px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:14px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover>.arrow{border-width:11px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;filter:alpha(opacity=90);opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:"\2039"}.carousel-control .icon-next:before{content:"\203a"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/css/datatables.min.css b/odex25_takaful/takaful_website_template/css/datatables.min.css new file mode 100644 index 000000000..88a2b2357 --- /dev/null +++ b/odex25_takaful/takaful_website_template/css/datatables.min.css @@ -0,0 +1,18 @@ +/* + * This combined file was created by the DataTables downloader builder: + * https://datatables.net/download + * + * To rebuild or modify this file with the latest versions of the included + * software please visit: + * https://datatables.net/download/#bs4/dt-1.12.1/r-2.3.0 + * + * Included libraries: + * DataTables 1.12.1, Responsive 2.3.0 + */ + +table.dataTable td.dt-control{text-align:center;cursor:pointer}table.dataTable td.dt-control:before{height:1em;width:1em;margin-top:-9px;display:inline-block;color:white;border:.15em solid white;border-radius:1em;box-shadow:0 0 .2em #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:"Courier New",Courier,monospace;line-height:1em;content:"+";background-color:#31b131}table.dataTable tr.dt-hasChild td.dt-control:before{content:"-";background-color:#d33333}table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting_asc_disabled,table.dataTable thead>tr>th.sorting_desc_disabled,table.dataTable thead>tr>td.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting_asc_disabled,table.dataTable thead>tr>td.sorting_desc_disabled{cursor:pointer;position:relative;padding-right:26px}table.dataTable thead>tr>th.sorting:before,table.dataTable thead>tr>th.sorting:after,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_asc:after,table.dataTable thead>tr>th.sorting_desc:before,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_asc_disabled:after,table.dataTable thead>tr>th.sorting_desc_disabled:before,table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting:before,table.dataTable thead>tr>td.sorting:after,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_asc:after,table.dataTable thead>tr>td.sorting_desc:before,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_asc_disabled:after,table.dataTable thead>tr>td.sorting_desc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:after{position:absolute;display:block;opacity:.125;right:10px;line-height:9px;font-size:.9em}table.dataTable thead>tr>th.sorting:before,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_desc:before,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_desc_disabled:before,table.dataTable thead>tr>td.sorting:before,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_desc:before,table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:before{bottom:50%;content:"▴"}table.dataTable thead>tr>th.sorting:after,table.dataTable thead>tr>th.sorting_asc:after,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>th.sorting_asc_disabled:after,table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting:after,table.dataTable thead>tr>td.sorting_asc:after,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc_disabled:after,table.dataTable thead>tr>td.sorting_desc_disabled:after{top:50%;content:"▾"}table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_desc:after{opacity:.6}table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting_asc_disabled:before{display:none}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}div.dataTables_scrollBody table.dataTable thead>tr>th:before,div.dataTables_scrollBody table.dataTable thead>tr>th:after,div.dataTables_scrollBody table.dataTable thead>tr>td:before,div.dataTables_scrollBody table.dataTable thead>tr>td:after{display:none}div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:2px}div.dataTables_processing>div:last-child{position:relative;width:80px;height:15px;margin:1em auto}div.dataTables_processing>div:last-child>div{position:absolute;top:0;width:13px;height:13px;border-radius:50%;background:rgba(2, 117, 216, 0.9);animation-timing-function:cubic-bezier(0, 1, 1, 0)}div.dataTables_processing>div:last-child>div:nth-child(1){left:8px;animation:datatables-loader-1 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(2){left:8px;animation:datatables-loader-2 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(3){left:32px;animation:datatables-loader-2 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(4){left:56px;animation:datatables-loader-3 .6s infinite}@keyframes datatables-loader-1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes datatables-loader-3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes datatables-loader-2{0%{transform:translate(0, 0)}100%{transform:translate(24px, 0)}}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th,table.dataTable thead td,table.dataTable tfoot th,table.dataTable tfoot td{text-align:left}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important;border-spacing:0}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.table-striped>tbody>tr:nth-of-type(2n+1){background-color:transparent}table.dataTable>tbody>tr{background-color:transparent}table.dataTable>tbody>tr.selected>*{box-shadow:inset 0 0 0 9999px rgba(2, 117, 216, 0.9);color:white}table.dataTable.table-striped>tbody>tr.odd>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.05)}table.dataTable.table-striped>tbody>tr.odd.selected>*{box-shadow:inset 0 0 0 9999px rgba(2, 117, 216, 0.95)}table.dataTable.table-hover>tbody>tr:hover>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.075)}table.dataTable.table-hover>tbody>tr.selected:hover>*{box-shadow:inset 0 0 0 9999px rgba(2, 117, 216, 0.975)}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:auto;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:.85em}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody>table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody>table>thead .sorting:before,div.dataTables_scrollBody>table>thead .sorting_asc:before,div.dataTables_scrollBody>table>thead .sorting_desc:before,div.dataTables_scrollBody>table>thead .sorting:after,div.dataTables_scrollBody>table>thead .sorting_asc:after,div.dataTables_scrollBody>table>thead .sorting_desc:after{display:none}div.dataTables_scrollBody>table>tbody tr:first-child th,div.dataTables_scrollBody>table>tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:center !important}}table.dataTable.table-sm>thead>tr>th:not(.sorting_disabled){padding-right:20px}table.table-bordered.dataTable{border-right-width:0}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:1px}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:last-child{padding-right:0} + + +table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control{position:relative;padding-left:30px;cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control:before{top:50%;left:5px;height:1em;width:1em;margin-top:-9px;display:block;position:absolute;color:white;border:.15em solid white;border-radius:1em;box-shadow:0 0 .2em #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:"Courier New",Courier,monospace;line-height:1em;content:"+";background-color:#0275d8}table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th.dtr-control:before{content:"-";background-color:#d33333}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th.dtr-control{padding-left:27px}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td.dtr-control:before,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th.dtr-control:before{left:4px;height:14px;width:14px;border-radius:14px;line-height:14px;text-indent:3px}table.dataTable.dtr-column>tbody>tr>td.dtr-control,table.dataTable.dtr-column>tbody>tr>th.dtr-control,table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.dtr-control:before,table.dataTable.dtr-column>tbody>tr>th.dtr-control:before,table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{top:50%;left:50%;height:.8em;width:.8em;margin-top:-0.5em;margin-left:-0.5em;display:block;position:absolute;color:white;border:.15em solid white;border-radius:1em;box-shadow:0 0 .2em #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:"Courier New",Courier,monospace;line-height:1em;content:"+";background-color:#0275d8}table.dataTable.dtr-column>tbody>tr.parent td.dtr-control:before,table.dataTable.dtr-column>tbody>tr.parent th.dtr-control:before,table.dataTable.dtr-column>tbody>tr.parent td.control:before,table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:"-";background-color:#d33333}table.dataTable>tbody>tr.child{padding:.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:.5em;box-shadow:0 12px 30px rgba(0, 0, 0, 0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0, 0, 0, 0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}div.dtr-bs-modal table.table tr:first-child td{border-top:none} + + diff --git a/odex25_takaful/takaful_website_template/css/fontawesome-all.min.css b/odex25_takaful/takaful_website_template/css/fontawesome-all.min.css new file mode 100644 index 000000000..2bab37a18 --- /dev/null +++ b/odex25_takaful/takaful_website_template/css/fontawesome-all.min.css @@ -0,0 +1,5 @@ +/*! + * Font Awesome Free 5.0.6 by @fontawesome - http://fontawesome.com + * License - http://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:a 2s infinite linear;animation:a 2s infinite linear}.fa-pulse{-webkit-animation:a 1s infinite steps(8);animation:a 1s infinite steps(8)}@-webkit-keyframes a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-aws:before{content:"\f375"}.fa-backward:before{content:"\f04a"}.fa-balance-scale:before{content:"\f24e"}.fa-ban:before{content:"\f05e"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bicycle:before{content:"\f206"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blind:before{content:"\f29d"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-bowling-ball:before{content:"\f436"}.fa-braille:before{content:"\f2a1"}.fa-briefcase:before{content:"\f0b1"}.fa-btc:before{content:"\f15a"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-car:before{content:"\f1b9"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-certificate:before{content:"\f0a3"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-square:before{content:"\f14a"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-clipboard:before{content:"\f328"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comments:before{content:"\f086"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-credit-card:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crosshairs:before{content:"\f05b"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-deviantart:before{content:"\f1bd"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dollar-sign:before{content:"\f155"}.fa-dot-circle:before{content:"\f192"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drupal:before{content:"\f1a9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-excel:before{content:"\f1c3"}.fa-file-image:before{content:"\f1c5"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fire:before{content:"\f06d"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-order:before{content:"\f2b0"}.fa-firstdraft:before{content:"\f3a1"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frown:before{content:"\f119"}.fa-futbol:before{content:"\f1e3"}.fa-gamepad:before{content:"\f11b"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-gift:before{content:"\f06b"}.fa-git:before{content:"\f1d3"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-martini:before{content:"\f000"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-handshake:before{content:"\f2b5"}.fa-hashtag:before{content:"\f292"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-heart:before{content:"\f004"}.fa-heartbeat:before{content:"\f21e"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hospital:before{content:"\f0f8"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-internet-explorer:before{content:"\f26b"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-jenkins:before{content:"\f3b6"}.fa-joget:before{content:"\f3b7"}.fa-joomla:before{content:"\f1aa"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-key:before{content:"\f084"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-korvue:before{content:"\f42f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-male:before{content:"\f183"}.fa-map:before{content:"\f279"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-maxcdn:before{content:"\f136"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-meh:before{content:"\f11a"}.fa-mercury:before{content:"\f223"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-moon:before{content:"\f186"}.fa-motorcycle:before{content:"\f21c"}.fa-mouse-pointer:before{content:"\f245"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nintendo-switch:before{content:"\f418"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-paint-brush:before{content:"\f1fc"}.fa-palfed:before{content:"\f3d8"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-paragraph:before{content:"\f1dd"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-percent:before{content:"\f295"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phone:before{content:"\f095"}.fa-phone-square:before{content:"\f098"}.fa-phone-volume:before{content:"\f2a0"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-plane:before{content:"\f072"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-print:before{content:"\f02f"}.fa-product-hunt:before{content:"\f288"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-random:before{content:"\f074"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-rebel:before{content:"\f1d0"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-rendact:before{content:"\f3e4"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-resolving:before{content:"\f3e7"}.fa-retweet:before{content:"\f079"}.fa-road:before{content:"\f018"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-rupee-sign:before{content:"\f156"}.fa-safari:before{content:"\f267"}.fa-sass:before{content:"\f41e"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-scribd:before{content:"\f28a"}.fa-search:before{content:"\f002"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shower:before{content:"\f2cc"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowflake:before{content:"\f2dc"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-spinner:before{content:"\f110"}.fa-spotify:before{content:"\f1bc"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-star:before{content:"\f005"}.fa-star-half:before{content:"\f089"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-strava:before{content:"\f428"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-trademark:before{content:"\f25c"}.fa-train:before{content:"\f238"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-circle:before{content:"\f2bd"}.fa-user-md:before{content:"\f0f0"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vuejs:before{content:"\f41f"}.fa-weibo:before{content:"\f18a"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wrench:before{content:"\f0ad"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900} \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/css/navBar.css b/odex25_takaful/takaful_website_template/css/navBar.css new file mode 100644 index 000000000..f0bc4c6cd --- /dev/null +++ b/odex25_takaful/takaful_website_template/css/navBar.css @@ -0,0 +1 @@ +/*# sourceMappingURL=navBar.css.map */ \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/css/navBar.css.map b/odex25_takaful/takaful_website_template/css/navBar.css.map new file mode 100644 index 000000000..2b9475204 --- /dev/null +++ b/odex25_takaful/takaful_website_template/css/navBar.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"navBar.css"} \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/css/responsive.bootstrap4.min.css b/odex25_takaful/takaful_website_template/css/responsive.bootstrap4.min.css new file mode 100644 index 000000000..28959af13 --- /dev/null +++ b/odex25_takaful/takaful_website_template/css/responsive.bootstrap4.min.css @@ -0,0 +1 @@ +table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control{position:relative;padding-left:30px;cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control:before{top:50%;left:5px;height:1em;width:1em;margin-top:-9px;display:block;position:absolute;color:white;border:.15em solid white;border-radius:1em;box-shadow:0 0 .2em #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:"Courier New",Courier,monospace;line-height:1em;content:"+";background-color:#0275d8}table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th.dtr-control:before{content:"-";background-color:#d33333}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th.dtr-control{padding-left:27px}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td.dtr-control:before,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th.dtr-control:before{left:4px;height:14px;width:14px;border-radius:14px;line-height:14px;text-indent:3px}table.dataTable.dtr-column>tbody>tr>td.dtr-control,table.dataTable.dtr-column>tbody>tr>th.dtr-control,table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.dtr-control:before,table.dataTable.dtr-column>tbody>tr>th.dtr-control:before,table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{top:50%;left:50%;height:.8em;width:.8em;margin-top:-0.5em;margin-left:-0.5em;display:block;position:absolute;color:white;border:.15em solid white;border-radius:1em;box-shadow:0 0 .2em #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:"Courier New",Courier,monospace;line-height:1em;content:"+";background-color:#0275d8}table.dataTable.dtr-column>tbody>tr.parent td.dtr-control:before,table.dataTable.dtr-column>tbody>tr.parent th.dtr-control:before,table.dataTable.dtr-column>tbody>tr.parent td.control:before,table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:"-";background-color:#d33333}table.dataTable>tbody>tr.child{padding:.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:.5em;box-shadow:0 12px 30px rgba(0, 0, 0, 0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0, 0, 0, 0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}div.dtr-bs-modal table.table tr:first-child td{border-top:none} diff --git a/odex25_takaful/takaful_website_template/css/style.css b/odex25_takaful/takaful_website_template/css/style.css new file mode 100644 index 000000000..5e2edc16e --- /dev/null +++ b/odex25_takaful/takaful_website_template/css/style.css @@ -0,0 +1,1339 @@ +@font-face { + font-family: "Changa-Bold"; + src: url("../fonts/changa/ArbFONTS-Changa-Bold.ttf"); + font-weight: bold; +} +@font-face { + font-family: "Changa-Regular"; + src: url("../fonts/changa/ArbFONTS-Changa-Regular.ttf"); + font-weight: 400; +} +@font-face { + font-family: "Changa-Medium"; + src: url("../fonts/changa/ArbFONTS-Changa-Medium.ttf"); + font-weight: 500; +} +@font-face { + font-family: "Changa-SemiBold"; + src: url("../fonts/changa/ArbFONTS-Changa-SemiBold.ttf"); + font-weight: 600; +} +/*global bootstrap classes */ +.align-items-center { + align-items: center; +} + +.d-flex { + display: flex; +} + +.row { + display: flex; + flex-wrap: wrap; +} + +.d-flex { + display: flex; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.flex-column { + flex-direction: column; +} + +.position-relative { + position: relative; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} + +.dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; +} + +/* global rules */ +body { + font-family: "Changa-Regular"; + text-align: start; + background-color: #f5f5f5; + box-sizing: border-box; +} + +.navbar * { + float: none !important; +} + +.container::before, +.navbar::before { + display: none; +} + +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-footer:before, +.modal-footer:after { + display: none; +} + +@media (max-width: 991px) { + .navbar .collapse.navbar-collapse { + display: none !important; + } + .navbar .navbar-collapse.collapse.in { + display: block !important; + } +} +.custom-select { + height: auto; + padding: 8px; + border-radius: 4px; + border: 1px solid #ccc; + box-shadow: none; + outline: none; + background: #fff url("/takaful_website/static/img/dropdown.png") no-repeat left 1rem center; + background-size: 10px; + font-size: 13px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.form-group label { + font-weight: 600; + font-size: 14px; +} +.form-group input { + display: block; + width: 100%; + padding: 7px; + border-radius: 4px; + border: 1px solid #ccc; + box-shadow: none !important; + outline: none !important; +} +.form-group input::-moz-placeholder { + font-size: 13px; + color: #515151; +} +.form-group input::placeholder { + font-size: 13px; + color: #515151; +} + +.gender { + background-color: #EAEEF4 !important; + justify-content: space-around; + padding: 6px 0px; + height: 44px; +} +.gender input { + width: 16px; + height: 16px; + margin-inline-end: 7px; +} + +.add_wrapper button { + background-color: #355692 !important; + border-color: #355692 !important; + outline: none !important; + box-shadow: none !important; +} + +.attach_wrapper { + position: relative; +} +.attach_wrapper input[type=file] { + position: relative; + z-index: 10; + opacity: 0; +} +.attach_wrapper input[type=text] { + position: absolute; + top: 0; + right: 0; +} +.attach_wrapper img { + position: absolute; + top: 0; + left: 0; +} + +@media (min-width: 1200px) { + .container { + max-width: 1200px; + } +} +.heading { + color: #091C3F; + position: relative; + font-family: "Changa-SemiBold"; + width: -moz-fit-content; + width: fit-content; + margin-bottom: 16px; + font-size: 24px; + line-height: 24px; + padding-bottom: 14px; +} +.heading::after { + content: ""; + position: absolute; + bottom: 0; + right: 0; + width: 49px; + height: 4px; + background-color: #355692; + border-radius: 10px; +} + +.sadad_link { + background-color: #355692; + border-radius: 8px; + padding: 4px 14px; + color: #fff; + text-decoration: none; + margin-inline-start: 8px; +} + +.cancel_link { + background-color: #DC3A08; + padding: 4px 8px; + color: #fff; + border-radius: 8px; + margin-inline-start: 8px; +} + +.padding_top { + padding-top: 141px; +} + +.breadcrumb { + padding: 0; + margin-bottom: 24px; + background-color: transparent; +} + +.breadcrumb-item + .breadcrumb-item::before { + content: ""; + background-image: url(../imgs/bread_arrow.png); + width: 25px; + height: 25px; + background-repeat: no-repeat; + background-position: center; +} + +.breadcrumb-item a { + font-size: 12px; + color: #88898A; + font-family: "Changa-Bold"; +} + +.breadcrumb-item.active { + display: flex; + align-items: center; + color: #091C3F; + font-family: "Changa-Bold"; + font-size: 12px; +} + +.breadcrumb-item { + display: flex; + align-items: center; +} + +/*benefits */ +/*benefits */ +.benifits_wrapper { + margin-top: 130px; + overflow: hidden; +} +.benifits_wrapper .stepper_header { + background-color: #869ABE; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16); + border-radius: 16px 16px 0 0; + padding: 32px 64px; + justify-content: space-between; +} +@media (max-width: 575px) { + .benifits_wrapper .stepper_header { + padding: 24px 16px; + } +} +.benifits_wrapper .stepper_header .step { + position: relative; + width: 20%; +} +@media (max-width: 991px) { + .benifits_wrapper .stepper_header .step { + width: 50%; + flex-direction: row !important; + margin-bottom: 16px; + } + .benifits_wrapper .stepper_header .step:last-of-type { + margin: 0; + } +} +.benifits_wrapper .stepper_header .step img { + position: relative; + z-index: 2; + background-color: #869ABE; + width: 40px; + height: 40px; + padding: 4px; +} +@media (max-width: 991px) { + .benifits_wrapper .stepper_header .step img { + margin-inline-end: 6px; + } +} +@media (max-width: 575px) { + .benifits_wrapper .stepper_header .step img { + width: 30px; + height: 30px; + } +} +.benifits_wrapper .stepper_header .step::after { + content: ""; + position: absolute; + top: 32%; + left: -55%; + width: 100%; + height: 2px; + border: 1px dashed #677898; +} +@media (max-width: 991px) { + .benifits_wrapper .stepper_header .step::after { + display: none; + } +} +.benifits_wrapper .stepper_header .step .step_content { + background-color: #869ABE; + width: -moz-fit-content; + width: fit-content; + padding: 0px 24px; + position: relative; + z-index: 2; + color: #677898; + font-family: "Changa-Bold"; + text-align: center; +} +@media (max-width: 991px) { + .benifits_wrapper .stepper_header .step .step_content { + padding: 0; + text-align: start; + } +} +@media (max-width: 575px) { + .benifits_wrapper .stepper_header .step .step_content { + font-size: 13px; + } +} +.benifits_wrapper .stepper_header .step:last-of-type::after { + display: none; +} +.benifits_wrapper .stepper_header .step.active::after { + border: 1px dashed #fff; +} +.benifits_wrapper .stepper_header .step.active .step_content { + color: #fff; +} +.benifits_wrapper .user_reg_form { + padding-top: 64px; + background-color: #fff; + border-radius: 0 0 16px 16px; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16); + margin-bottom: 32px; + padding-bottom: 6px; +} +.benifits_wrapper .user_reg_form .form_wrapper { + width: 75%; + margin: auto; + padding: 24px 0; +} +.benifits_wrapper .user_reg_form .form_wrapper h5 { + font-weight: 600; + font-size: 14px; + margin-bottom: 24px; +} +.benifits_wrapper .user_reg_form .form_wrapper form .form-group { + display: flex; + flex-direction: column; +} +.benifits_wrapper .user_reg_form .form_wrapper form .form-group label { + font-weight: 600; + font-size: 14px; +} +.benifits_wrapper .user_reg_form .form_wrapper form .form-group .input-group-prepend { + position: absolute; + top: 10px; + right: 10px; +} +.benifits_wrapper .user_reg_form .form_wrapper form .form-group .input-group-prepend .input-group-text { + background-color: transparent; + box-shadow: none; + border: none; + padding: 0; + border-left: 1px solid #ccc; + border-radius: 0; + direction: ltr; + padding-inline-start: 10px; + font-size: 13px; +} +.benifits_wrapper .user_reg_form .form_wrapper form .form-group #basic-url { + padding-inline-start: 58px !important; +} +.benifits_wrapper .user_reg_form .form_wrapper form .form-group #basic-url, +.benifits_wrapper .user_reg_form .form_wrapper form .form-group input { + display: block; + width: 100%; + padding: 8px; + border-radius: 4px; + border: 1px solid #ccc; + box-shadow: none; + outline: none; +} +.benifits_wrapper .user_reg_form .form_wrapper form .form-group #basic-url::-moz-placeholder, .benifits_wrapper .user_reg_form .form_wrapper form .form-group input::-moz-placeholder { + font-size: 13px; + color: #515151; +} +.benifits_wrapper .user_reg_form .form_wrapper form .form-group #basic-url::placeholder, +.benifits_wrapper .user_reg_form .form_wrapper form .form-group input::placeholder { + font-size: 13px; + color: #515151; +} +.benifits_wrapper .user_reg_form .form_wrapper form .form-group .gender { + background-color: rgba(53, 86, 146, 0.6); + justify-content: space-around; + padding: 6px 0px; +} +.benifits_wrapper .user_reg_form .form_wrapper form .form-group .gender input { + width: 16px; + height: 16px; + margin-inline-end: 7px; +} +.benifits_wrapper .user_reg_form .form_wrapper form .submit button { + width: 100%; + border: none; + background-color: #355692; + color: #fff; + padding: 8px; + border-radius: 4px; +} +.benifits_wrapper .user_reg_form .form_wrapper form .login { + text-align: center; +} +.benifits_wrapper .user_reg_form .form_wrapper form .login a { + font-weight: 600; + text-decoration: underline; +} + +#form { + max-width: 100%; + margin: 25px auto 0; + direction: ltr; +} +#form input { + margin: 0 5px; + text-align: center; + line-height: 80px; + font-size: 50px; + border: solid 1px #ccc; + box-shadow: 0 0 5px #ccc inset; + outline: none; + width: 25%; + transition: all 0.2s ease-in-out; + border-radius: 4px; + margin-bottom: 24px; +} +#form input:focus { + border-color: #869ABE; + box-shadow: 0 0 5px #869ABE inset; +} +#form input::-moz-selection { + background: transparent; +} +#form input::selection { + background: transparent; +} +#form button { + margin: 30px 0 50px; + width: 100%; + padding: 6px; + background-color: #355692; + border: none; + text-transform: uppercase; +} +#form button.close { + border: solid 2px; + border-radius: 30px; + line-height: 19px; + font-size: 120%; + width: 22px; + position: absolute; + right: 5px; + top: 5px; +} + +.code_wrapper { + width: 700px; + margin: auto; + max-width: 100%; + padding: 0 15px; +} +.code_wrapper h6 { + font-weight: bold; + margin-bottom: 16px; +} +.code_wrapper p { + color: #ccc; +} +.code_wrapper a { + font-weight: 600; + text-decoration: underline; + color: #355692; +} +.code_wrapper .resend { + direction: rtl; +} +.code_wrapper .resend a { + text-decoration: underline; + font-weight: 600; + color: #355692; +} +.code_wrapper .resend span { + color: #ccc; + font-weight: 600; +} + +/*user_data_form*/ +.user_data_form { + /*error class */ +} +.user_data_form legend { + display: flex; + align-items: center; + font-size: 12px; + font-weight: 600; + margin-bottom: 24px; +} +.user_data_form legend .step_number { + display: flex; + align-items: center; +} +.user_data_form legend .step_number span.active { + background-color: #869ABE; + border-radius: 50%; + width: 20px; + height: 20px; + display: flex; + align-items: center; + justify-content: center; + color: #fff; + margin-inline-end: 6px; +} +.user_data_form legend .step_number span.total { + border: 1px solid #869ABE; + border-radius: 50%; + width: 20px; + height: 20px; + display: flex; + align-items: center; + justify-content: center; + color: #869ABE; + margin: 0px 6px; +} +.user_data_form .btn-primary.next { + display: block; + color: #fff; + background-color: #355692; +} +.user_data_form .form-group.has-error .help-block { + color: #f00; +} +.user_data_form .form-group.has-error input { + border-color: #f00; +} + +/*wizard */ +.step_field { + display: none; +} + +.step_field.active { + display: block; +} + +/*Navigation Bar */ +.navbar { + background-color: #355692; + position: fixed; + top: 0; + width: 100%; + z-index: 999; + padding: 17px 0; +} +.navbar .navbar-brand { + padding: 0; + margin: 0; +} +@media (max-width: 1200px) { + .navbar .navbar-brand img { + width: 80px; + } +} +.navbar .navbar-nav { + padding-inline-start: 40px; + display: flex; + align-items: center; +} +@media (max-width: 1200px) { + .navbar .navbar-nav { + padding-inline-start: 24px; + } +} +.navbar .navbar-nav .nav-item .dropdown-menu { + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16); + border-radius: 8px 0 8px 8px; + padding: 0; + text-align: start; + width: 216px; + left: auto; + border: none; + overflow: hidden; +} +.navbar .navbar-nav .nav-item .dropdown-menu .dropdown-item { + padding: 8px 40px; + font-size: 14px; + color: #091C3F; + font-family: "Changa-Medium"; + transition: 0.2s all ease-in-out; +} +.navbar .navbar-nav .nav-item .dropdown-menu .dropdown-item:first-child { + padding-top: 22px; +} +.navbar .navbar-nav .nav-item .dropdown-menu .dropdown-item:last-child { + padding-bottom: 16px; +} +.navbar .navbar-nav .nav-item .dropdown-menu .dropdown-item:hover { + background-color: #E1E6EF; + color: #355692; +} +.navbar .navbar-nav .nav-item .dropdown-toggle::after { + border: none; + background-image: url("/takaful_website/static/img/arrow_down.png"); + width: 19px; + height: 8px; + background-repeat: no-repeat; + display: flex; + align-items: center; + justify-content: center; + line-height: 20px; +} +.navbar .navbar-nav .nav-item .nav-link { + color: #fff !important; + line-height: 20px; + display: flex; + align-items: center; + padding-right: 8px; + padding-left: 8px; + font-family: "Changa-Medium"; + font-size: 16px; + outline: none; +} +@media (max-width: 1200px) { + .navbar .navbar-nav .nav-item .nav-link { + padding-right: 8px; + padding-left: 8px; + font-size: 14px; + } +} +.navbar .nav_actions .search { + margin-inline-end: 30px; +} +@media (max-width: 1200px) { + .navbar .nav_actions .search { + margin-inline-end: 24px; + } + .navbar .nav_actions .search img { + width: 51px; + } +} +.navbar .nav_actions .login a { + color: #fff; + text-decoration: none; +} +@media (max-width: 1200px) { + .navbar .nav_actions .login a { + font-size: 14px; + } +} +.navbar .nav_actions .separator { + margin: 0 16px; +} + +/*slider*/ +.slider { + margin-top: 95px; +} +.slider .carousel .carousel-caption { + position: absolute; + right: auto; + bottom: auto; + left: 50%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + top: 50%; + transform: translate(-50%, -50%); +} +.slider .carousel .carousel-caption h5 { + font-size: 40px; + font-family: "Changa-SemiBold"; + margin-bottom: 56px; + line-height: 24px; +} +.slider .carousel .carousel-caption p { + margin-bottom: 32px; + font-size: 20px; + line-height: 30px; + font-family: "Changa-SemiBold"; +} +.slider .carousel .carousel-caption a { + padding: 12px 90px; + background-color: #355692; + display: inline-flex; + align-items: center; + color: #fff; + border-radius: 4px; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16); +} +.slider .carousel .carousel-caption a span { + margin-inline-end: 16px; + font-size: 20px; + font-family: "Changa-SemiBold"; +} +.slider .carousel .carousel-control-next, +.slider .carousel .carousel-control-prev { + opacity: 1; +} + +.step_field .next { + width: 100%; + border: none; + background-color: #355692; + color: #fff; + padding: 8px; + border-radius: 4px; + display: block; + margin-bottom: 32px; +} + +.character_row { + display: flex; +} +.character_row .char_img { + padding: 0 15px; +} +.character_row .char_img img { + width: 100%; +} +.character_row .char_img h5 { + font-size: 16px; + text-align: center; + margin-top: 6px; +} + +/*my guarantees*/ +.guarantee_header .departments .box { + margin-inline-end: 32px; + width: 109px; + text-decoration: none; +} +.guarantee_header .departments .box .img { + background-color: #E1E5EB; + border-radius: 16px; + margin-bottom: 14px; + width: 109px; + height: 109px; + display: flex; + align-items: center; + justify-content: center; + padding: 0; +} +.guarantee_header .departments .box h5 { + color: #091C3F; + font-size: 14px; + font-family: "Changa-SemiBold"; +} +.guarantee_header .departments .box.active .img { + background-color: #B2C0D9; + border: 2px solid #3F6CBF; +} +.guarantee_header .departments .box.active h5 { + color: #3F6CBF; + font-family: "Changa-Medium"; +} +@media (max-width: 1200px) { + .guarantee_header .departments { + flex-wrap: wrap; + } + .guarantee_header .departments .box { + margin-bottom: 16px; + } +} +@media (max-width: 575px) { + .guarantee_header .departments { + justify-content: space-between; + } + .guarantee_header .departments .box { + margin-inline-end: 0; + } +} + +/*my data */ +.my_data { + padding: 45px 0; +} + +/*data table customization */ +.dataTables_length, +#table_id_filter { + display: none; +} + +#table_id { + border-radius: 16px 16px; + overflow: hidden; +} +#table_id thead tr { + background-color: #eee; +} +#table_id thead tr th { + padding: 24px 4px; + text-align: center; + color: #88898A; + font-size: 15px; + font-family: "Changa-SemiBold"; +} +#table_id tbody { + text-align: center; + background-color: #fff; +} +#table_id tbody tr td { + padding: 22px 8px; + border-left: 1px solid #DEDEDE; + border-bottom: 1px solid #dedede; + font-size: 14px; + font-weight: 600; + color: #040C1B; +} +#table_id tbody tr .active_td span { + background-color: rgba(194, 238, 150, 0.62); + padding: 4px 8px; + font-family: "Changa-Regular"; + border-radius: 8px; + display: block; + color: #318800; +} +#table_id tbody tr .cancel_td span { + background-color: #F9C9C9; + padding: 4px 8px; + font-family: "Changa-Regular"; + border-radius: 8px; + display: block; + color: #BC0909; +} +#table_id tbody tr .expired_td span { + background-color: #FFDDA3; + padding: 4px; + font-family: "Changa-Regular"; + border-radius: 8px; + display: block; + color: #D58700; +} +#table_id tbody tr.canceled { + background-color: #FFE8E8; +} +#table_id tbody tr.expired { + background-color: #FFFAF0; +} + +.dataTables_info { + display: none; +} + +#table_id_previous a, +#table_id_next a { + background-color: transparent; + border: none; +} + +.page-link { + background-color: transparent; + border: none; + color: #C6C6C6; + font-family: "Changa-SemiBold"; + box-shadow: none !important; +} + +.page-item.active .page-link { + background-color: transparent; + border: none; + color: #091C3F; + font-family: "Changa-SemiBold"; +} + +.pagination { + justify-content: center !important; + margin-top: 26px !important; + padding: 0; + flex-direction: row-reverse; + align-items: center; +} + +/*sadad*/ +.sadad tr.expired { + background-color: #fff !important; +} +/*kafala_modal*/ +.kafala_modal .modal-dialog { + max-width: 620px; +} +.kafala_modal .modal-dialog .modal-content { + padding: 46px 58px 40px; +} +@media (max-width: 575px) { + .kafala_modal .modal-dialog .modal-content { + padding: 50px 0px 40px; + } +} +.kafala_modal .modal-dialog .modal-content .modal-header { + border: none; +} +.kafala_modal .modal-dialog .modal-content .modal-header .heading { + font-size: 20px; +} +@media (max-width: 575px) { + .kafala_modal .modal-dialog .modal-content .modal-header .heading { + font-size: 16px; + } +} +.kafala_modal .modal-dialog .modal-content .modal-header .heading::after { + width: 105px; +} +@media (max-width: 575px) { + .kafala_modal .modal-dialog .modal-content .modal-header .heading::after { + width: 80px; + } +} +.kafala_modal .modal-dialog .modal-content .modal-header .close { + position: absolute; + top: 23px; + right: 23px; + outline: none; +} +.kafala_modal .modal-dialog .modal-content .modal-body { + padding: 0 16px; +} +.kafala_modal .modal-dialog .modal-content .modal-body form .form-group label { + font-family: "Changa-Medium"; + color: #3B3B3B; +} +.kafala_modal .modal-dialog .modal-content .modal-body form .form-group input, +.kafala_modal .modal-dialog .modal-content .modal-body form .form-group select { + color: #AAB0BB; + font-family: "Changa-SemiBold"; + font-size: 14px; +} +.kafala_modal .modal-dialog .modal-content .modal-body form .form-group input::-moz-placeholder, .kafala_modal .modal-dialog .modal-content .modal-body form .form-group select::-moz-placeholder { + color: #AAB0BB; +} +.kafala_modal .modal-dialog .modal-content .modal-body form .form-group input::placeholder, +.kafala_modal .modal-dialog .modal-content .modal-body form .form-group select::placeholder { + color: #AAB0BB; +} +.kafala_modal .modal-dialog .modal-content .modal-footer { + padding: 0 16px; + border: none; + margin-top: 8px; +} +.kafala_modal .modal-dialog .modal-content .modal-footer button.btn { + display: block; + width: 100%; + background-color: #355692; + border-color: #355692; + color: #fff; + font-family: "Changa-SemiBold"; +} + +.cancel_kafala .active_td span, +.cancel_kafala .expired_td span { + width: 50%; +} + +/*makfoul_data*/ +.makfoul_data .data_wrapper { + border-radius: 8px 8px 0 0; + overflow: hidden; +} +@media (max-width: 767px) { + .makfoul_data .data_wrapper { + flex-wrap: wrap; + } +} +.makfoul_data .right_part, +.makfoul_data .left_part { + flex-basis: 50%; + max-width: 100%; +} +@media (max-width: 767px) { + .makfoul_data .right_part, + .makfoul_data .left_part { + flex-basis: 100%; + } +} +.makfoul_data .right_part .header, +.makfoul_data .left_part .header { + padding: 24px 32px; + background-color: #99AAC8; + color: #fff; +} +.makfoul_data .right_part .header img, +.makfoul_data .left_part .header img { + width: 17px; + height: 22px; + margin-inline-end: 12px; +} +.makfoul_data .right_part .header span, +.makfoul_data .left_part .header span { + font-size: 18px; + font-family: "Changa-SemiBold"; +} +.makfoul_data .right_part .data_content, +.makfoul_data .left_part .data_content { + padding: 16px 32px; +} +.makfoul_data .right_part .data_content ul li, +.makfoul_data .left_part .data_content ul li { + margin-bottom: 12px; + display: flex; + align-items: center; +} +.makfoul_data .right_part .data_content ul li h5, +.makfoul_data .left_part .data_content ul li h5 { + flex-basis: 40%; + font-size: 18px; + color: #88898A; + font-family: "Changa-SemiBold"; + margin: 0; +} +.makfoul_data .right_part .data_content ul li span, +.makfoul_data .left_part .data_content ul li span { + flex-basis: 60%; + font-family: "Changa-SemiBold"; + color: #040C1B; +} +.makfoul_data .actions a { + background-color: #355692; + color: #fff; + padding: 10px; + border-radius: 4px; + margin-bottom: 16px; +} +.makfoul_data .actions a img { + margin-inline-end: 10px; +} +.makfoul_data .actions a span { + font-family: "Changa-SemiBold"; +} +.makfoul_data .actions .cancel_btn { + background-color: transparent; + border: 1px solid #DC3A08; + color: #DC3A08; +} + +.payments_data .payment_done { + background-color: #D9F4BE; + border-radius: 8px; + line-height: 24px; + color: #318800; + border-color: #D9F4BE; +} + +.late_payments_data .payment_cancel { + background-color: transparent; + border: 1px solid #DC3A08; + color: #DC3A08; +} + +/*notification_wrapper*/ +.benifits_wrapper .notification_wrapper { + padding-top: 48px; + border-radius: 16px; +} + +.form_wrapper form.notification_form .form-group { + align-items: center; +} +.form_wrapper form.notification_form .form-group input[type=checkbox] { + width: auto; + margin-inline-end: 8px; +} +.form_wrapper form.notification_form .form-group label { + margin: 0; + font-weight: normal !important; +} + +.specify_char { + width: 900px; + direction: rtl; +} +.specify_char .main_link { + display: block; + color: #fff; + background-color: #355692; +} +.specify_char h6 { + color: #AAB0BB; + font-family: "Changa-SemiBold"; + margin-bottom: 40px; +} + +/*profile_wrapper*/ +.profile_wrapper { + padding: 32px 0; +} +.profile_wrapper .profile_header { + overflow: auto; + border: none; + padding: 24px 0; +} +.profile_wrapper .profile_header .nav-item { + margin: 0; + display: inline-flex; +} +@media (max-width: 991px) { + .profile_wrapper .profile_header .nav-item { + margin-bottom: 16px; + } +} +.profile_wrapper .profile_header a { + background-color: #fff; + border-radius: 16px; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16); + color: #AAB0BB; + font-family: "Changa-Medium"; + line-height: 30px; + margin-inline-end: 8px; + padding: 8px 16px; + text-decoration: none !important; +} +.profile_wrapper .profile_header a.active { + background-color: #355692; + color: #fff; +} +.profile_wrapper .tab-content .tab-pane { + background-color: #fff; + padding: 24px 40px 64px 40px; + border-radius: 16px; +} +@media (max-width: 575px) { + .profile_wrapper .tab-content .tab-pane { + padding: 24px 15px 24px 15px; + } +} +.profile_wrapper .tab-content .tab-pane form { + width: 700px; + max-width: 100%; +} +.profile_wrapper .tab-content #benefits_data { + background-color: transparent; + padding: 0; + position: relative; +} +.profile_wrapper .tab-content #benefits_data .add_bnf { + padding: 6px 32px; + background-color: #355692; + display: inline-block; + border-radius: 4px; + color: #fff; + position: absolute; + left: 0; + top: -67px; + line-height: 30px; +} + +.date_cell { + width: 60%; +} +@media (max-width: 991px) { + .date_cell { + width: auto; + } +} + +.pick_date img { + position: absolute; + left: 15px; + top: 9px; + height: 20px; +} +.pick_date .date_input { + position: absolute; + top: 0; + z-index: 10; + display: flex; + flex-direction: row-reverse; + text-align: right; + opacity: 0; +} + +/*zakat_wrapper*/ +.zakat_wrapper { + padding: 40px; + background-color: #fff; + border-radius: 16px; +} +.zakat_wrapper .zakat_content { + padding: 16px 40px; + border: 1px solid #DBDBDB; + background-color: #F8F8F8; + border-radius: 8px; + margin-bottom: 24px; +} +.zakat_wrapper h5 { + font-size: 20px; + color: #040C1B; + font-family: "Changa-Medium"; +} +.zakat_wrapper li { + margin-bottom: 6px; + display: flex; + align-items: center; +} +.zakat_wrapper li img { + margin-inline-end: 10px; +} +.zakat_wrapper li span { + color: #88898A; +} +.zakat_wrapper .add_food { + line-height: 30px; + font-family: "Changa-Medium"; + background-color: #355692; + padding: 6px 40px; + color: #fff; + display: inline-block; + margin-bottom: 40px; + border-radius: 4px; +} +.zakat_wrapper .add_food img { + margin-inline-end: 12px; +} + +/*urgent_needs_form*/ +.urgent_needs_form { + width: 850px !important; + max-width: 100%; +} + +/* FOOTER */ +footer { + background-color: #fff; + padding-top: 40px; + padding-bottom: 30px; + padding-right: 0; + padding-left: 0; +} + +footer .footer-desc { + padding-right: 0; +} + +footer .footer-desc p { + margin-top: 20px; +} + +footer .footer-bottom { + border-top: 1px solid #355692; + display: flex; + align-items: center; + justify-content: center; + padding-top: 20px; + margin-top: 20px; +} + +footer .footer-links ul li { + margin-bottom: 15px; +} + +footer .footer-links ul li a { + color: #000; +} + +footer .footer-links h3 { + font-size: 18px; + margin-top: 0; +} + +footer .footer-bottom img { + margin-left: 10px; +} + +footer .footer-bottom img:last-child { + margin-left: 0; +} + +footer .footer-copyright { + margin-top: 20px; +} + +footer .footer-copyright p { + text-align: center; + font-size: 10px; +}/*# sourceMappingURL=style.css.map */ \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/css/style.css.map b/odex25_takaful/takaful_website_template/css/style.css.map new file mode 100644 index 000000000..23c56d930 --- /dev/null +++ b/odex25_takaful/takaful_website_template/css/style.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["style.scss","style.css"],"names":[],"mappings":"AAAA;EACE,0BAAA;EACA,oDAAA;EACA,iBAAA;ACCF;ADEA;EACE,6BAAA;EACA,uDAAA;EACA,gBAAA;ACAF;ADGA;EACE,4BAAA;EACA,sDAAA;EACA,gBAAA;ACDF;ADIA;EACE,8BAAA;EACA,wDAAA;EACA,gBAAA;ACFF;ADeA,4BAAA;AAEA;EACE,mBAAA;ACdF;;ADiBA;EACE,aAAA;ACdF;;ADiBA;EACE,aAAA;EACA,eAAA;ACdF;;ADiBA;EACE,aAAA;ACdF;;ADiBA;EACE,eAAA;ACdF;;ADiBA;EACE,sBAAA;ACdF;;ADiBA;EACE,kBAAA;ACdF;;ADiBA;EACE,2BAAA;ACdF;;ADiBA;EACE,8BAAA;ACdF;;ADgBA;EACE,cAAA;EACA,WAAA;EACA,uBAAA;EACA,WAAA;EACA,gBAAA;EACA,cAAA;EACA,mBAAA;EACA,mBAAA;EACA,6BAAA;EACA,SAAA;ACbF;;ADiBA,iBAAA;AAEA;EACE,6BAjEI;EAkEJ,iBAAA;EAEA,yBAAA;EACA,sBAAA;AChBF;;ADmBA;EACE,sBAAA;AChBF;;ADmBA;;EAEE,aAAA;AChBF;;ADmBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BE,aAAA;AChBF;;ADmBA;EACE;IACI,wBAAA;EChBJ;EDmBA;IACI,yBAAA;ECjBJ;AACF;ADoBA;EACE,YAAA;EACA,YAAA;EACA,kBAAA;EACA,sBAAA;EACA,gBAAA;EACA,aAAA;EACA,2FAAA;EACA,qBAAA;EACA,eAAA;EACA,wBAAA;EACA,qBAAA;EACA,gBAAA;AClBF;;ADsBE;EACI,gBAAA;EACA,eAAA;ACnBN;ADsBE;EACI,cAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,sBAAA;EACA,2BAAA;EACA,wBAAA;ACpBN;ADsBM;EACI,eAAA;EACA,cAAA;ACpBV;ADkBM;EACI,eAAA;EACA,cAAA;ACpBV;;ADyBA;EACE,oCAAA;EACA,6BAAA;EACA,gBAAA;EACA,YAAA;ACtBF;ADwBE;EACI,WAAA;EACA,YAAA;EACA,sBAAA;ACtBN;;AD2BE;EACI,oCAAA;EACA,gCAAA;EACA,wBAAA;EACA,2BAAA;ACxBN;;AD4BA;EACE,kBAAA;ACzBF;AD2BE;EACI,kBAAA;EACA,WAAA;EACA,UAAA;ACzBN;AD4BE;EACI,kBAAA;EACA,MAAA;EACA,QAAA;AC1BN;AD6BE;EACI,kBAAA;EACA,MAAA;EACA,OAAA;AC3BN;;AD+BA;EACE;IACI,iBAAA;EC5BJ;AACF;AD+BA;EACE,cA/MS;EAgNT,kBAAA;EACA,8BApNS;EAsNT,uBAAA;EACA,kBAAA;EACA,mBAAA;EACA,eAAA;EACA,iBAAA;EACA,oBAAA;AC7BF;AD+BE;EACI,WAAA;EACA,kBAAA;EACA,SAAA;EACA,QAAA;EACA,WAAA;EACA,WAAA;EACA,yBAlOM;EAmON,mBAAA;AC7BN;;ADiCA;EACE,yBAxOU;EAyOV,kBAAA;EACA,iBAAA;EACA,WAAA;EACA,qBAAA;EACA,wBAAA;AC9BF;;ADiCA;EACE,yBAAA;EACA,gBAAA;EACA,WAAA;EACA,kBAAA;EACA,wBAAA;AC9BF;;ADiCA;EACE,kBAAA;AC9BF;;ADiCA;EACE,UAAA;EACA,mBAAA;EACA,6BAAA;AC9BF;;ADiCA;EACE,WAAA;EACA,8CAAA;EACA,WAAA;EACA,YAAA;EACA,4BAAA;EACA,2BAAA;AC9BF;;ADiCA;EACE,eAAA;EACA,cAAA;EACA,0BA/QK;ACiPP;;ADiCA;EACE,aAAA;EACA,mBAAA;EACA,cAnRS;EAoRT,0BAtRK;EAuRL,eAAA;AC9BF;;ADiCA;EACE,aAAA;EACA,mBAAA;AC9BF;;ADkCA,YAAA;AAEA,YAAA;AACA;EACE,iBAAA;EACA,gBAAA;AChCF;ADkCE;EACI,yBAAA;EACA,yCAAA;EACA,4BAAA;EACA,kBAAA;EACA,8BAAA;AChCN;ADkCM;EAPJ;IAQQ,kBAAA;EC/BR;AACF;ADiCM;EACI,kBAAA;EACA,UAAA;AC/BV;ADiCU;EAJJ;IAKQ,UAAA;IACA,8BAAA;IACA,mBAAA;EC9BZ;EDgCY;IACI,SAAA;EC9BhB;AACF;ADiCU;EACI,kBAAA;EACA,UAAA;EACA,yBAAA;EACA,WAAA;EACA,YAAA;EACA,YAAA;AC/Bd;ADiCc;EARJ;IASQ,sBAAA;EC9BhB;AACF;ADgCc;EAZJ;IAaQ,WAAA;IACA,YAAA;EC7BhB;AACF;ADgCU;EACI,WAAA;EACA,kBAAA;EACA,QAAA;EACA,UAAA;EACA,WAAA;EACA,WAAA;EACA,0BAAA;AC9Bd;ADgCc;EATJ;IAUQ,aAAA;EC7BhB;AACF;ADgCU;EACI,yBAAA;EACA,uBAAA;EAAA,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,UAAA;EACA,cAAA;EACA,0BAvWP;EAwWO,kBAAA;AC9Bd;ADgCc;EAVJ;IAWQ,UAAA;IACA,iBAAA;EC7BhB;AACF;AD+Bc;EAfJ;IAgBQ,eAAA;EC5BhB;AACF;ADiCU;EACI,aAAA;AC/Bd;AD0CU;EACI,uBAAA;ACxCd;AD2CU;EACI,WAAA;ACzCd;AD+CE;EACI,iBAAA;EACA,sBAAA;EACA,4BAAA;EACA,yCAAA;EACA,mBAAA;EACA,mBAAA;AC7CN;AD+CM;EACI,UAAA;EACA,YAAA;EACA,eAAA;AC7CV;AD+CU;EACI,gBAAA;EACA,eAAA;EACA,mBAAA;AC7Cd;ADiDc;EACI,aAAA;EACA,sBAAA;AC/ClB;ADiDkB;EACI,gBAAA;EACA,eAAA;AC/CtB;ADkDkB;EACI,kBAAA;EACA,SAAA;EACA,WAAA;AChDtB;ADkDsB;EACI,6BAAA;EACA,gBAAA;EACA,YAAA;EACA,UAAA;EACA,2BAAA;EACA,gBAAA;EACA,cAAA;EACA,0BAAA;EACA,eAAA;AChD1B;ADqDkB;EACI,qCAAA;ACnDtB;ADsDkB;;EAEI,cAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,sBAAA;EACA,gBAAA;EACA,aAAA;ACpDtB;ADsDsB;EACI,eAAA;EACA,cAAA;ACnD1B;ADiDsB;;EACI,eAAA;EACA,cAAA;ACnD1B;ADuDkB;EACI,wCAAA;EACA,6BAAA;EACA,gBAAA;ACrDtB;ADuDsB;EACI,WAAA;EACA,YAAA;EACA,sBAAA;ACrD1B;AD2DkB;EACI,WAAA;EACA,YAAA;EACA,yBAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;ACzDtB;AD8Dc;EACI,kBAAA;AC5DlB;AD8DkB;EACI,gBAAA;EACA,0BAAA;AC5DtB;;ADoEA;EACE,eAAA;EACA,mBAAA;EACA,cAAA;ACjEF;ADmEE;EACI,aAAA;EACA,kBAAA;EACA,iBAAA;EACA,eAAA;EACA,sBAAA;EACA,8BAAA;EACA,aAAA;EACA,UAAA;EACA,gCAAA;EACA,kBAAA;EACA,mBAAA;ACjEN;ADmEM;EACI,qBAAA;EACA,iCAAA;ACjEV;ADoEM;EACI,uBAAA;AClEV;ADiEM;EACI,uBAAA;AClEV;ADsEE;EACI,mBAAA;EACA,WAAA;EACA,YAAA;EACA,yBAAA;EACA,YAAA;EACA,yBAAA;ACpEN;ADwEM;EACI,iBAAA;EACA,mBAAA;EACA,iBAAA;EACA,eAAA;EACA,WAAA;EACA,kBAAA;EACA,UAAA;EACA,QAAA;ACtEV;;AD2EA;EACE,YAAA;EACA,YAAA;EACA,eAAA;EACA,eAAA;ACxEF;AD0EE;EACI,iBAAA;EACA,mBAAA;ACxEN;AD2EE;EACI,WAAA;ACzEN;AD4EE;EACI,gBAAA;EACA,0BAAA;EACA,cAAA;AC1EN;AD6EE;EACI,cAAA;AC3EN;AD6EM;EACI,0BAAA;EACA,gBAAA;EACA,cAAA;AC3EV;AD8EM;EACI,WAAA;EACA,gBAAA;AC5EV;;ADkFA,iBAAA;AAEA;EA4CE,eAAA;AC3HF;ADgFE;EACI,aAAA;EACA,mBAAA;EACA,eAAA;EACA,gBAAA;EACA,mBAAA;AC9EN;ADgFM;EACI,aAAA;EACA,mBAAA;AC9EV;ADgFU;EACI,yBAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,WAAA;EACA,sBAAA;AC9Ed;ADiFU;EACI,yBAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,cAAA;EACA,eAAA;AC/Ed;ADoFE;EACI,cAAA;EACA,WAAA;EACA,yBA1nBM;ACwiBZ;ADuFM;EACI,WAAA;ACrFV;ADwFM;EACI,kBAAA;ACtFV;;AD4FA,UAAA;AAEA;EACE,aAAA;AC1FF;;AD6FA;EACE,cAAA;AC1FF;;AD8FA,kBAAA;AAEA;EACE,yBAxpBU;EAypBV,eAAA;EACA,MAAA;EACA,WAAA;EACA,YAAA;EACA,eAAA;AC5FF;AD8FE;EACI,UAAA;EACA,SAAA;AC5FN;AD8FM;EACI;IACI,WAAA;EC5FZ;AACF;ADgGE;EACI,0BAAA;EACA,aAAA;EACA,mBAAA;AC9FN;ADgGM;EALJ;IAMQ,0BAAA;EC7FR;AACF;ADgGU;EACI,yCAAA;EACA,4BAAA;EACA,UAAA;EACA,iBAAA;EACA,YAAA;EACA,UAAA;EACA,YAAA;EACA,gBAAA;AC9Fd;ADgGc;EACI,iBAAA;EACA,eAAA;EACA,cAhsBP;EAisBO,4BArsBT;EAssBS,gCAAA;AC9FlB;ADgGkB;EACE,iBAAA;AC9FpB;ADiGkB;EACI,oBAAA;AC/FtB;ADkGkB;EACI,yBAAA;EACA,cA/sBV;AC+mBZ;ADqGU;EACI,YAAA;EACA,mEAAA;EACA,WAAA;EACA,WAAA;EACA,4BAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,iBAAA;ACnGd;ADsGU;EACI,sBAAA;EACA,iBAAA;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EACA,iBAAA;EACA,4BA1uBL;EA2uBK,eAAA;EACA,aAAA;ACpGd;ADsGc;EAXJ;IAYQ,kBAAA;IACA,iBAAA;IACA,eAAA;ECnGhB;AACF;ADyGM;EACI,uBAAA;ACvGV;ADyGU;EAHJ;IAIQ,uBAAA;ECtGZ;EDwGY;IACI,WAAA;ECtGhB;AACF;AD2GU;EACI,WAAA;EACA,qBAAA;ACzGd;AD2Gc;EAJJ;IAKQ,eAAA;ECxGhB;AACF;AD4GM;EACI,cAAA;AC1GV;;ADgHA,SAAA;AAEA;EACE,gBAAA;AC9GF;ADiHM;EACI,kBAAA;EACA,WAAA;EACA,YAAA;EACA,SAAA;EACA,WAAA;EACA,iBAAA;EACA,oBAAA;EACA,WAAA;EACA,kBAAA;EACA,QAAA;EACA,gCAAA;AC/GV;ADiHU;EACI,eAAA;EACA,8BA1yBH;EA2yBG,mBAAA;EACA,iBAAA;AC/Gd;ADkHU;EACI,mBAAA;EACA,eAAA;EACA,iBAAA;EACA,8BAnzBH;ACmsBX;ADmHU;EACI,kBAAA;EACA,yBAtzBF;EAuzBE,oBAAA;EACA,mBAAA;EACA,WAAA;EACA,kBAAA;EACA,yCAAA;ACjHd;ADmHc;EACI,uBAAA;EACA,eAAA;EACA,8BAl0BP;ACitBX;ADsHM;;EAEI,UAAA;ACpHV;;ADyHA;EACE,WAAA;EACA,YAAA;EACA,yBAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,cAAA;EACA,mBAAA;ACtHF;;ADyHA;EACE,aAAA;ACtHF;ADwHE;EACI,eAAA;ACtHN;ADwHM;EACI,WAAA;ACtHV;ADyHM;EACI,eAAA;EACA,kBAAA;EACA,eAAA;ACvHV;;AD6HA,gBAAA;AAIM;EACI,uBAAA;EACA,YAAA;EACA,qBAAA;AC7HV;AD+HU;EACI,yBAAA;EACA,mBAAA;EACA,mBAAA;EACA,YAAA;EACA,aAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,UAAA;AC7Hd;ADgIU;EACI,cA/3BH;EAg4BG,eAAA;EACA,8BAp4BH;ACswBX;ADmIU;EACI,yBAAA;EACA,yBAAA;ACjId;ADoIU;EACI,cAAA;EACA,4BAj5BL;AC+wBT;ADsIM;EArCJ;IAsCQ,eAAA;ECnIR;EDqIQ;IACI,mBAAA;ECnIZ;AACF;ADsIM;EA7CJ;IA8CQ,8BAAA;ECnIR;EDqIQ;IACI,oBAAA;ECnIZ;AACF;;ADyIA,WAAA;AAEA;EACE,eAAA;ACvIF;;AD2IA,4BAAA;AAEA;;EAEE,aAAA;ACzIF;;AD4IA;EACE,wBAAA;EACA,gBAAA;ACzIF;AD4IM;EACI,sBAAA;AC1IV;AD4IU;EACI,iBAAA;EACA,kBAAA;EACA,cAAA;EACA,eAAA;EACA,8BAl8BH;ACwzBX;AD+IE;EACI,kBAAA;EACA,sBAAA;AC7IN;ADgJU;EACI,iBAAA;EACA,8BAAA;EACA,gCAAA;EACA,eAAA;EACA,gBAAA;EACA,cAAA;AC9Id;ADiJU;EACI,2CAAA;EACA,gBAAA;EACA,6BA19BR;EA29BQ,kBAAA;EACA,cAAA;EACA,cAAA;AC/Id;ADkJU;EACI,yBAAA;EACA,gBAAA;EACA,6BAn+BR;EAo+BQ,kBAAA;EACA,cAAA;EACA,cAAA;AChJd;ADmJU;EACI,yBAAA;EACA,YAAA;EACA,6BA5+BR;EA6+BQ,kBAAA;EACA,cAAA;EACA,cAAA;ACjJd;ADqJM;EACI,yBAAA;ACnJV;ADsJM;EACI,yBAAA;ACpJV;;ADyJA;EACE,aAAA;ACtJF;;ADyJA;;EAEE,6BAAA;EACA,YAAA;ACtJF;;ADyJA;EACE,6BAAA;EACA,YAAA;EACA,cAAA;EACA,8BAzgCS;EA0gCT,2BAAA;ACtJF;;ADyJA;EACE,6BAAA;EACA,YAAA;EACA,cA7gCS;EA8gCT,8BAjhCS;AC23BX;;ADyJA;EACE,kCAAA;EACA,2BAAA;EACA,UAAA;EACA,2BAAA;EACA,mBAAA;ACtJF;;AD0JA,QAAA;AAGE;EACI,iCAAA;ACzJN;ADgKA,eAAA;AAGE;EACI,gBAAA;AChKN;ADkKM;EACI,uBAAA;AChKV;ADkKU;EAHJ;IAIQ,sBAAA;EC/JZ;AACF;ADiKU;EACI,YAAA;AC/Jd;ADiKc;EACI,eAAA;AC/JlB;ADiKkB;EAHJ;IAIQ,eAAA;EC9JpB;AACF;ADgKkB;EACI,YAAA;AC9JtB;ADgKsB;EAHJ;IAIQ,WAAA;EC7JxB;AACF;ADiKc;EACI,kBAAA;EACA,SAAA;EACA,WAAA;EACA,aAAA;AC/JlB;ADmKU;EACI,eAAA;ACjKd;ADqKsB;EACI,4BAvlCjB;EAwlCiB,cAAA;ACnK1B;ADsKsB;;EAEI,cAAA;EACA,8BA7lCf;EA8lCe,eAAA;ACpK1B;ADsK0B;EACI,cAAA;ACnK9B;ADkK0B;;EACI,cAAA;ACnK9B;AD0KU;EACI,eAAA;EACA,YAAA;EACA,eAAA;ACxKd;AD0Kc;EACI,cAAA;EACA,WAAA;EACA,yBA9mCN;EA+mCM,qBA/mCN;EAgnCM,WAAA;EACA,8BAnnCP;AC28BX;;ADiLE;;EAEI,UAAA;AC9KN;;ADmLA,eAAA;AAGE;EACI,0BAAA;EACA,gBAAA;AClLN;ADoLM;EAJJ;IAKQ,eAAA;ECjLR;AACF;ADoLE;;EAEI,eAAA;EACA,eAAA;AClLN;ADoLM;EALJ;;IAMQ,gBAAA;EChLR;AACF;ADkLM;;EACI,kBAAA;EACA,yBAAA;EACA,WAAA;AC/KV;ADiLU;;EACI,WAAA;EACA,YAAA;EACA,uBAAA;AC9Kd;ADiLU;;EACI,eAAA;EACA,8BArqCH;ACu/BX;ADkLM;;EACI,kBAAA;AC/KV;ADkLc;;EACI,mBAAA;EACA,aAAA;EACA,mBAAA;AC/KlB;ADiLkB;;EACI,eAAA;EACA,eAAA;EACA,cAAA;EACA,8BAtrCX;EAurCW,SAAA;AC9KtB;ADiLkB;;EACI,eAAA;EACA,8BA5rCX;EA6rCW,cAAA;AC9KtB;ADsLM;EACI,yBApsCE;EAqsCF,WAAA;EACA,aAAA;EACA,kBAAA;EACA,mBAAA;ACpLV;ADsLU;EACI,uBAAA;ACpLd;ADuLU;EACI,8BAjtCH;AC4hCX;ADyLM;EACI,6BAAA;EACA,yBAAA;EACA,cAAA;ACvLV;;AD+LE;EACI,yBAAA;EACA,kBAAA;EACA,iBAAA;EACA,cAAA;EACA,qBAAA;AC5LN;;ADiME;EACI,6BAAA;EACA,yBAAA;EACA,cAAA;AC9LN;;ADmMA,uBAAA;AAEA;EACE,iBAAA;EACA,mBAAA;ACjMF;;ADoMA;EACE,mBAAA;ACjMF;ADmME;EACI,WAAA;EACA,sBAAA;ACjMN;ADoME;EACI,SAAA;EACA,8BAAA;AClMN;;ADwMA;EACE,YAAA;EACA,cAAA;ACrMF;ADuME;EACI,cAAA;EACA,WAAA;EACA,yBA9wCM;ACykCZ;ADwME;EACI,cAAA;EACA,8BArxCK;EAsxCL,mBAAA;ACtMN;;AD2MA,kBAAA;AAEA;EACE,eAAA;ACzMF;AD2ME;EACI,cAAA;EACA,YAAA;EACA,eAAA;ACzMN;AD2MM;EACI,SAAA;EACA,oBAAA;ACzMV;AD2MU;EAJJ;IAKQ,mBAAA;ECxMZ;AACF;AD2MM;EACI,sBAAA;EACA,mBAAA;EACA,yCAAA;EACA,cAAA;EACA,4BApzCD;EAqzCC,iBAAA;EACA,sBAAA;EACA,iBAAA;EACA,gCAAA;ACzMV;AD4MM;EACI,yBAzzCE;EA0zCF,WAAA;AC1MV;AD+MM;EACI,sBAAA;EACA,4BAAA;EACA,mBAAA;AC7MV;AD+MU;EALJ;IAMQ,4BAAA;EC5MZ;AACF;AD8MU;EACI,YAAA;EACA,eAAA;AC5Md;ADgNM;EACI,6BAAA;EACA,UAAA;EACA,kBAAA;AC9MV;ADgNU;EACI,iBAAA;EACA,yBAr1CF;EAs1CE,qBAAA;EACA,kBAAA;EACA,WAAA;EACA,kBAAA;EACA,OAAA;EACA,UAAA;EACA,iBAAA;AC9Md;;ADoNA;EACE,UAAA;ACjNF;ADmNE;EAHF;IAIM,WAAA;EChNJ;AACF;;ADoNE;EACI,kBAAA;EACA,UAAA;EACA,QAAA;EACA,YAAA;ACjNN;ADoNE;EACI,kBAAA;EACA,MAAA;EACA,WAAA;EACA,aAAA;EACA,2BAAA;EACA,iBAAA;EACA,UAAA;AClNN;;ADwNA,gBAAA;AAEA;EACE,aAAA;EACA,sBAAA;EACA,mBAAA;ACtNF;ADwNE;EACI,kBAAA;EACA,yBAAA;EACA,yBAAA;EACA,kBAAA;EACA,mBAAA;ACtNN;ADyNE;EACI,eAAA;EACA,cAAA;EACA,4BAp5CG;AC6rCT;AD0NE;EACI,kBAAA;EACA,aAAA;EACA,mBAAA;ACxNN;AD0NM;EACI,uBAAA;ACxNV;AD4NM;EACI,cAAA;AC1NV;AD8NE;EACI,iBAAA;EACA,4BAx6CG;EAy6CH,yBAt6CM;EAu6CN,iBAAA;EACA,WAAA;EACA,qBAAA;EACA,mBAAA;EACA,kBAAA;AC5NN;AD8NM;EACI,uBAAA;AC5NV;;ADkOA,oBAAA;AAEA;EACE,uBAAA;EACA,eAAA;AChOF;;ADkOA,WAAA;AAEA;EACE,sBAAA;EACA,iBAAA;EACA,oBAAA;EACA,gBAAA;EACA,eAAA;AChOF;;ADmOA;EACE,gBAAA;AChOF;;ADqOA;EACE,gBAAA;AClOF;;ADqOA;EACE,6BAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,iBAAA;EACA,gBAAA;AClOF;;ADyOA;EACE,mBAAA;ACtOF;;ADyOA;EACE,WAAA;ACtOF;;ADyOA;EACE,eAAA;EACA,aAAA;ACtOF;;ADyOA;EACE,iBAAA;ACtOF;;ADyOA;EACE,cAAA;ACtOF;;ADyOA;EACE,gBAAA;ACtOF;;ADyOA;EACE,kBAAA;EACA,eAAA;ACtOF","file":"style.css"} \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/css/style.scss b/odex25_takaful/takaful_website_template/css/style.scss new file mode 100644 index 000000000..5cbc040e6 --- /dev/null +++ b/odex25_takaful/takaful_website_template/css/style.scss @@ -0,0 +1,1556 @@ +@font-face { + font-family: "Changa-Bold"; + src: url("../fonts/changa/ArbFONTS-Changa-Bold.ttf"); + font-weight: bold; +} + +@font-face { + font-family: "Changa-Regular"; + src: url("../fonts/changa/ArbFONTS-Changa-Regular.ttf"); + font-weight: 400; +} + +@font-face { + font-family: "Changa-Medium"; + src: url("../fonts/changa/ArbFONTS-Changa-Medium.ttf"); + font-weight: 500; +} + +@font-face { + font-family: "Changa-SemiBold"; + src: url("../fonts/changa/ArbFONTS-Changa-SemiBold.ttf"); + font-weight: 600; +} + +$reg: "Changa-Regular"; +$medium: "Changa-Medium"; +$semiBold: "Changa-SemiBold"; +$bold: "Changa-Bold"; +$mainColor: #355692; +$darkBlue: #091C3F; + + + + +/*global bootstrap classes */ + +.align-items-center { + align-items: center; +} + +.d-flex { + display: flex; +} + +.row { + display: flex; + flex-wrap: wrap; +} + +.d-flex { + display: flex; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.flex-column { + flex-direction: column; +} + +.position-relative { + position: relative; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} +.dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; +} + + +/* global rules */ + +body { + font-family: $reg; + text-align: start; +// direction: rtl; + background-color: #f5f5f5; + box-sizing: border-box; +} + +.navbar * { + float: none !important; +} + +.container::before, +.navbar::before { + display: none; +} + +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical>.btn-group:before, +.btn-group-vertical>.btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-footer:before, +.modal-footer:after { + display: none; +} + +@media(max-width:991px) { + .navbar .collapse.navbar-collapse { + display: none !important; + } + + .navbar .navbar-collapse.collapse.in { + display: block !important; + } +} + +.custom-select { + height: auto; + padding: 8px; + border-radius: 4px; + border: 1px solid #ccc; + box-shadow: none; + outline: none; + background: #fff url("/takaful_website/static/img/dropdown.png") no-repeat left 1rem center; + background-size: 10px; + font-size: 13px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none +} + +.form-group { + label { + font-weight: 600; + font-size: 14px; + } + + input { + display: block; + width: 100%; + padding: 7px; + border-radius: 4px; + border: 1px solid #ccc; + box-shadow: none !important; + outline: none !important; + + &::placeholder { + font-size: 13px; + color: #515151; + } + } +} + +.gender { + background-color: #EAEEF4 !important; + justify-content: space-around; + padding: 6px 0px; + height: 44px; + + input { + width: 16px; + height: 16px; + margin-inline-end: 7px; + } +} + +.add_wrapper { + button { + background-color: $mainColor !important; + border-color: $mainColor !important; + outline: none !important; + box-shadow: none !important; + } +} + +.attach_wrapper { + position: relative; + + input[type="file"] { + position: relative; + z-index: 10; + opacity: 0; + } + + input[type="text"] { + position: absolute; + top: 0; + right: 0; + } + + img { + position: absolute; + top: 0; + left: 0; + } +} + +@media (min-width: 1200px) { + .container { + max-width: 1200px; + } +} + +.heading { + color: $darkBlue; + position: relative; + font-family: $semiBold; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; + margin-bottom: 16px; + font-size: 24px; + line-height: 24px; + padding-bottom: 14px; + + &::after { + content: ''; + position: absolute; + bottom: 0; + right: 0; + width: 49px; + height: 4px; + background-color: $mainColor; + border-radius: 10px; + } +} + +.sadad_link { + background-color: $mainColor; + border-radius: 8px; + padding: 4px 14px; + color: #fff; + text-decoration: none; + margin-inline-start: 8px; +} + +.cancel_link { + background-color: #DC3A08; + padding: 4px 8px; + color: #fff; + border-radius: 8px; + margin-inline-start: 8px; +} + +.padding_top { + padding-top: 141px; +} + +.breadcrumb { + padding: 0; + margin-bottom: 24px; + background-color: transparent; +} + +.breadcrumb-item+.breadcrumb-item::before { + content: ''; + background-image: url(../imgs/bread_arrow.png); + width: 25px; + height: 25px; + background-repeat: no-repeat; + background-position: center; +} + +.breadcrumb-item a { + font-size: 12px; + color: #88898A; + font-family: $bold; +} + +.breadcrumb-item.active { + display: flex; + align-items: center; + color: $darkBlue; + font-family: $bold; + font-size: 12px; +} + +.breadcrumb-item { + display: flex; + align-items: center; +} + + +/*benefits */ + +/*benefits */ +.benifits_wrapper { + margin-top: 130px; + overflow: hidden; + + .stepper_header { + background-color: #869ABE; + box-shadow: 0 3px 6px rgba($color: #000000, $alpha: .16); + border-radius: 16px 16px 0 0; + padding: 32px 64px; + justify-content: space-between; + + @media(max-width:575px) { + padding: 24px 16px; + } + + .step { + position: relative; + width: 20%; + + @media(max-width:991px) { + width: 50%; + flex-direction: row !important; + margin-bottom: 16px; + + &:last-of-type { + margin: 0; + } + } + + img { + position: relative; + z-index: 2; + background-color: #869ABE; + width: 40px; + height: 40px; + padding: 4px; + + @media(max-width:991px) { + margin-inline-end: 6px; + } + + @media(max-width:575px) { + width: 30px; + height: 30px; + } + } + + &::after { + content: ''; + position: absolute; + top: 32%; + left: -55%; + width: 100%; + height: 2px; + border: 1px dashed #677898; + + @media(max-width:991px) { + display: none; + } + } + + .step_content { + background-color: #869ABE; + width: fit-content; + padding: 0px 24px; + position: relative; + z-index: 2; + color: #677898; + font-family: $bold; + text-align: center; + + @media(max-width:991px) { + padding: 0; + text-align: start; + } + + @media(max-width:575px) { + font-size: 13px; + } + } + } + + .step:last-of-type { + &::after { + display: none; + } + + .step_content { + // margin-inline-start: auto; + } + + + } + + .step.active { + &::after { + border: 1px dashed #fff; + } + + .step_content { + color: #fff; + } + } + + } + + .user_reg_form { + padding-top: 64px; + background-color: #fff; + border-radius: 0 0 16px 16px; + box-shadow: 0 3px 6px rgba($color: #000000, $alpha: .16); + margin-bottom: 32px; + padding-bottom: 6px; + + .form_wrapper { + width: 75%; + margin: auto; + padding: 24px 0; + + h5 { + font-weight: 600; + font-size: 14px; + margin-bottom: 24px; + } + + form { + .form-group { + display: flex; + flex-direction: column; + + label { + font-weight: 600; + font-size: 14px; + } + + .input-group-prepend { + position: absolute; + top: 10px; + right: 10px; + + .input-group-text { + background-color: transparent; + box-shadow: none; + border: none; + padding: 0; + border-left: 1px solid #ccc; + border-radius: 0; + direction: ltr; + padding-inline-start: 10px; + font-size: 13px; + } + + } + + #basic-url { + padding-inline-start: 58px !important; + } + + #basic-url, + input { + display: block; + width: 100%; + padding: 8px; + border-radius: 4px; + border: 1px solid #ccc; + box-shadow: none; + outline: none; + + &::placeholder { + font-size: 13px; + color: #515151; + } + } + + .gender { + background-color: #35569299; + justify-content: space-around; + padding: 6px 0px; + + input { + width: 16px; + height: 16px; + margin-inline-end: 7px; + } + } + } + + .submit { + button { + width: 100%; + border: none; + background-color: #355692; + color: #fff; + padding: 8px; + border-radius: 4px; + + } + } + + .login { + text-align: center; + + a { + font-weight: 600; + text-decoration: underline; + } + } + } + } + } +} + +#form { + max-width: 100%; + margin: 25px auto 0; + direction: ltr; + + input { + margin: 0 5px; + text-align: center; + line-height: 80px; + font-size: 50px; + border: solid 1px #ccc; + box-shadow: 0 0 5px #ccc inset; + outline: none; + width: 25%; + transition: all .2s ease-in-out; + border-radius: 4px; + margin-bottom: 24px; + + &:focus { + border-color: #869ABE; + box-shadow: 0 0 5px #869ABE inset; + } + + &::selection { + background: transparent; + } + } + + button { + margin: 30px 0 50px; + width: 100%; + padding: 6px; + background-color: #355692; + border: none; + text-transform: uppercase; + } + + button { + &.close { + border: solid 2px; + border-radius: 30px; + line-height: 19px; + font-size: 120%; + width: 22px; + position: absolute; + right: 5px; + top: 5px; + } + } +} + +.code_wrapper { + width: 700px; + margin: auto; + max-width: 100%; + padding: 0 15px; + + h6 { + font-weight: bold; + margin-bottom: 16px; + } + + p { + color: #ccc; + } + + a { + font-weight: 600; + text-decoration: underline; + color: #355692; + } + + .resend { + direction: rtl; + + a { + text-decoration: underline; + font-weight: 600; + color: #355692 + } + + span { + color: #ccc; + font-weight: 600; + } + } +} + + +/*user_data_form*/ + +.user_data_form { + legend { + display: flex; + align-items: center; + font-size: 12px; + font-weight: 600; + margin-bottom: 24px; + + .step_number { + display: flex; + align-items: center; + + span.active { + background-color: #869ABE; + border-radius: 50%; + width: 20px; + height: 20px; + display: flex; + align-items: center; + justify-content: center; + color: #fff; + margin-inline-end: 6px; + } + + span.total { + border: 1px solid #869ABE; + border-radius: 50%; + width: 20px; + height: 20px; + display: flex; + align-items: center; + justify-content: center; + color: #869ABE; + margin: 0px 6px; + } + } + } + + .btn-primary.next { + display: block; + color: #fff; + background-color: $mainColor; + } + + /*error class */ + .form-group.has-error { + .help-block { + color: #f00; + } + + input { + border-color: #f00; + } + } +} + + +/*wizard */ + +.step_field { + display: none; +} + +.step_field.active { + display: block; +} + + +/*Navigation Bar */ + +.navbar { + background-color: $mainColor; + position: fixed; + top: 0; + width: 100%; + z-index: 999; + padding: 17px 0; + + .navbar-brand { + padding: 0; + margin: 0; + + @media(max-width: 1200px) { + img { + width: 80px + } + } + } + + .navbar-nav { + padding-inline-start: 40px; + display: flex; + align-items: center; + + @media(max-width: 1200px) { + padding-inline-start: 24px; + } + + .nav-item { + .dropdown-menu { + box-shadow: 0 3px 6px rgba($color: #000000, $alpha: .16); + border-radius: 8px 0 8px 8px; + padding: 0; + text-align: start; + width: 216px; + left: auto; + border: none; + overflow: hidden; + + .dropdown-item { + padding: 8px 40px; + font-size: 14px; + color: $darkBlue; + font-family: $medium; + transition: .2s all ease-in-out; + + &:first-child { + padding-top: 22px; + } + + &:last-child { + padding-bottom: 16px; + } + + &:hover { + background-color: #E1E6EF; + color: $mainColor; + } + } + } + + .dropdown-toggle::after { + border: none; + background-image: url("/takaful_website/static/img/arrow_down.png"); + width: 19px; + height: 8px; + background-repeat: no-repeat; + display: flex; + align-items: center; + justify-content: center; + line-height: 20px; + } + + .nav-link { + color: #fff !important; + line-height: 20px; + display: flex; + align-items: center; + padding-right: 8px; + padding-left: 8px; + font-family: $medium; + font-size: 16px; + outline: none; + + @media(max-width: 1200px) { + padding-right: 8px; + padding-left: 8px; + font-size: 14px; + } + } + } + } + + .nav_actions { + .search { + margin-inline-end: 30px; + + @media(max-width: 1200px) { + margin-inline-end: 24px; + + img { + width: 51px; + } + } + } + + .login { + a { + color: #fff; + text-decoration: none; + + @media(max-width: 1200px) { + font-size: 14px; + } + } + } + + .separator { + margin: 0 16px; + } + } +} + + +/*slider*/ + +.slider { + margin-top: 95px; + + .carousel { + .carousel-caption { + position: absolute; + right: auto; + bottom: auto; + left: 50%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + top: 50%; + transform: translate(-50%, -50%); + + h5 { + font-size: 40px; + font-family: $semiBold; + margin-bottom: 56px; + line-height: 24px; + } + + p { + margin-bottom: 32px; + font-size: 20px; + line-height: 30px; + font-family: $semiBold; + } + + a { + padding: 12px 90px; + background-color: $mainColor; + display: inline-flex; + align-items: center; + color: #fff; + border-radius: 4px; + box-shadow: 0 3px 6px rgba($color: #000000, $alpha: 16%); + + span { + margin-inline-end: 16px; + font-size: 20px; + font-family: $semiBold; + } + } + } + + .carousel-control-next, + .carousel-control-prev { + opacity: 1; + } + } +} + +.step_field .next { + width: 100%; + border: none; + background-color: #355692; + color: #fff; + padding: 8px; + border-radius: 4px; + display: block; + margin-bottom: 32px; +} + +.character_row { + display: flex; + + .char_img { + padding: 0 15px; + + img { + width: 100%; + } + + h5 { + font-size: 16px; + text-align: center; + margin-top: 6px; + } + } +} + + +/*my guarantees*/ + +.guarantee_header { + .departments { + .box { + margin-inline-end: 32px; + width: 109px; + text-decoration: none; + + .img { + background-color: #E1E5EB; + border-radius: 16px; + margin-bottom: 14px; + width: 109px; + height: 109px; + display: flex; + align-items: center; + justify-content: center; + padding: 0; + } + + h5 { + color: $darkBlue; + font-size: 14px; + font-family: $semiBold; + } + } + + .box.active { + .img { + background-color: #B2C0D9; + border: 2px solid #3F6CBF; + } + + h5 { + color: #3F6CBF; + font-family: $medium; + } + } + + @media(max-width:1200px) { + flex-wrap: wrap; + + .box { + margin-bottom: 16px; + } + } + + @media(max-width:575px) { + justify-content: space-between; + + .box { + margin-inline-end: 0; + } + } + } +} + + +/*my data */ + +.my_data { + padding: 45px 0; +} + + +/*data table customization */ + +.dataTables_length, +#table_id_filter { + display: none; +} + +#table_id { + border-radius: 16px 16px; + overflow: hidden; + + thead { + tr { + background-color: #eee; + + th { + padding: 24px 4px; + text-align: center; + color: #88898A; + font-size: 15px; + font-family: $semiBold; + } + } + } + + tbody { + text-align: center; + background-color: #fff; + + tr { + td { + padding: 22px 8px; + border-left: 1px solid #DEDEDE; + border-bottom: 1px solid #dedede; + font-size: 14px; + font-weight: 600; + color: #040C1B; + } + + .active_td span { + background-color: rgba($color: #C2EE96, $alpha: 62%); + padding: 4px 8px; + font-family: $reg; + border-radius: 8px; + display: block; + color: #318800; + } + + .cancel_td span { + background-color: #F9C9C9; + padding: 4px 8px; + font-family: $reg; + border-radius: 8px; + display: block; + color: #BC0909; + } + + .expired_td span { + background-color: #FFDDA3; + padding: 4px; + font-family: $reg; + border-radius: 8px; + display: block; + color: #D58700; + } + } + + tr.canceled { + background-color: #FFE8E8; + } + + tr.expired { + background-color: #FFFAF0; + } + } +} + +.dataTables_info { + display: none; +} + +#table_id_previous a, +#table_id_next a { + background-color: transparent; + border: none; +} + +.page-link { + background-color: transparent; + border: none; + color: #C6C6C6; + font-family: $semiBold; + box-shadow: none !important; +} + +.page-item.active .page-link { + background-color: transparent; + border: none; + color: $darkBlue; + font-family: $semiBold; +} + +.pagination { + justify-content: center !important; + margin-top: 26px !important; + padding: 0; + flex-direction: row-reverse; + align-items: center; +} + + +/*sadad*/ + +.sadad { + tr.expired { + background-color: #fff !important; + + .expired_td {} + } +} + + +/*kafala_modal*/ + +.kafala_modal { + .modal-dialog { + max-width: 620px; + + .modal-content { + padding: 46px 58px 40px; + + @media(max-width: 575px) { + padding: 50px 0px 40px; + } + + .modal-header { + border: none; + + .heading { + font-size: 20px; + + @media(max-width: 575px) { + font-size: 16px; + } + + &::after { + width: 105px; + + @media(max-width: 575px) { + width: 80px; + } + } + } + + .close { + position: absolute; + top: 23px; + right: 23px; + outline: none; + } + } + + .modal-body { + padding: 0 16px; + + form { + .form-group { + label { + font-family: $medium; + color: #3B3B3B; + } + + input, + select { + color: #AAB0BB; + font-family: $semiBold; + font-size: 14px; + + &::placeholder { + color: #AAB0BB; + } + } + } + } + } + + .modal-footer { + padding: 0 16px; + border: none; + margin-top: 8px; + + button.btn { + display: block; + width: 100%; + background-color: $mainColor; + border-color: $mainColor; + color: #fff; + font-family: $semiBold; + } + } + } + } +} + +.cancel_kafala { + + .active_td span, + .expired_td span { + width: 50%; + } +} + + +/*makfoul_data*/ + +.makfoul_data { + .data_wrapper { + border-radius: 8px 8px 0 0; + overflow: hidden; + + @media(max-width: 767px) { + flex-wrap: wrap; + } + } + + .right_part, + .left_part { + flex-basis: 50%; + max-width: 100%; + + @media(max-width: 767px) { + flex-basis: 100%; + } + + .header { + padding: 24px 32px; + background-color: #99AAC8; + color: #fff; + + img { + width: 17px; + height: 22px; + margin-inline-end: 12px; + } + + span { + font-size: 18px; + font-family: $semiBold; + } + } + + .data_content { + padding: 16px 32px; + + ul { + li { + margin-bottom: 12px; + display: flex; + align-items: center; + + h5 { + flex-basis: 40%; + font-size: 18px; + color: #88898A; + font-family: $semiBold; + margin: 0; + } + + span { + flex-basis: 60%; + font-family: $semiBold; + color: #040C1B; + } + } + } + } + } + + .actions { + a { + background-color: $mainColor; + color: #fff; + padding: 10px; + border-radius: 4px; + margin-bottom: 16px; + + img { + margin-inline-end: 10px; + } + + span { + font-family: $semiBold; + } + } + + .cancel_btn { + background-color: transparent; + border: 1px solid #DC3A08; + color: #DC3A08; + } + } +} + + + +.payments_data { + .payment_done { + background-color: #D9F4BE; + border-radius: 8px; + line-height: 24px; + color: #318800; + border-color: #D9F4BE; + } +} + +.late_payments_data { + .payment_cancel { + background-color: transparent; + border: 1px solid #DC3A08; + color: #DC3A08; + + } +} + +/*notification_wrapper*/ + +.benifits_wrapper .notification_wrapper { + padding-top: 48px; + border-radius: 16px; +} + +.form_wrapper form.notification_form .form-group { + align-items: center; + + input[type="checkbox"] { + width: auto; + margin-inline-end: 8px; + } + + label { + margin: 0; + font-weight: normal !important; + } +} + + + +.specify_char { + width: 900px; + direction: rtl; + + .main_link { + display: block; + color: #fff; + background-color: $mainColor; + } + + h6 { + color: #AAB0BB; + font-family: $semiBold; + margin-bottom: 40px; + } +} + + +/*profile_wrapper*/ + +.profile_wrapper { + padding: 32px 0; + + .profile_header { + overflow: auto; + border: none; + padding: 24px 0; + + .nav-item { + margin: 0; + display: inline-flex; + + @media(max-width:991px) { + margin-bottom: 16px; + } + } + + a { + background-color: #fff; + border-radius: 16px; + box-shadow: 0 3px 6px rgba($color: #000000, $alpha: .16); + color: #AAB0BB; + font-family: $medium; + line-height: 30px; + margin-inline-end: 8px; + padding: 8px 16px; + text-decoration: none !important; + } + + a.active { + background-color: $mainColor; + color: #fff; + } + } + + .tab-content { + .tab-pane { + background-color: #fff; + padding: 24px 40px 64px 40px; + border-radius: 16px; + + @media(max-width:575px) { + padding: 24px 15px 24px 15px; + } + + form { + width: 700px; + max-width: 100%; + } + } + + #benefits_data { + background-color: transparent; + padding: 0; + position: relative; + + .add_bnf { + padding: 6px 32px; + background-color: $mainColor; + display: inline-block; + border-radius: 4px; + color: #fff; + position: absolute; + left: 0; + top: -67px; + line-height: 30px; + } + } + } +} + +.date_cell { + width: 60%; + + @media(max-width:991px) { + width: auto; + } +} + +.pick_date { + img { + position: absolute; + left: 15px; + top: 9px; + height: 20px; + } + + .date_input { + position: absolute; + top: 0; + z-index: 10; + display: flex; + flex-direction: row-reverse; + text-align: right; + opacity: 0; + } +} + + + +/*zakat_wrapper*/ + +.zakat_wrapper { + padding: 40px; + background-color: #fff; + border-radius: 16px; + + .zakat_content { + padding: 16px 40px; + border: 1px solid #DBDBDB; + background-color: #F8F8F8; + border-radius: 8px; + margin-bottom: 24px; + } + + h5 { + font-size: 20px; + color: #040C1B; + font-family: $medium; + } + + li { + margin-bottom: 6px; + display: flex; + align-items: center; + + img { + margin-inline-end: 10px; + + } + + span { + color: #88898A; + } + } + + .add_food { + line-height: 30px; + font-family: $medium; + background-color: $mainColor; + padding: 6px 40px; + color: #fff; + display: inline-block; + margin-bottom: 40px; + border-radius: 4px; + + img { + margin-inline-end: 12px; + } + } +} + + +/*urgent_needs_form*/ + +.urgent_needs_form { + width: 850px !important; + max-width: 100%; +} +/* FOOTER */ + +footer { + background-color: #fff; + padding-top: 40px; + padding-bottom: 30px; + padding-right: 0; + padding-left: 0; +} + +footer .footer-desc { + padding-right: 0; +} + +footer .footer-desc img {} + +footer .footer-desc p { + margin-top: 20px; +} + +footer .footer-bottom { + border-top: 1px solid #355692; + display: flex; + align-items: center; + justify-content: center; + padding-top: 20px; + margin-top: 20px; +} + +footer .footer-links {} + +footer .footer-links ul {} + +footer .footer-links ul li { + margin-bottom: 15px; +} + +footer .footer-links ul li a { + color: #000; +} + +footer .footer-links h3 { + font-size: 18px; + margin-top: 0; +} + +footer .footer-bottom img { + margin-left: 10px; +} + +footer .footer-bottom img:last-child { + margin-left: 0; +} + +footer .footer-copyright { + margin-top: 20px; +} + +footer .footer-copyright p { + text-align: center; + font-size: 10px; +} \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-Bold.ttf b/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-Bold.ttf new file mode 100644 index 000000000..be2b40286 Binary files /dev/null and b/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-Bold.ttf differ diff --git a/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-ExtraBold.ttf b/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-ExtraBold.ttf new file mode 100644 index 000000000..edfc2755c Binary files /dev/null and b/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-ExtraBold.ttf differ diff --git a/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-ExtraLight.ttf b/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-ExtraLight.ttf new file mode 100644 index 000000000..2ddb091d5 Binary files /dev/null and b/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-ExtraLight.ttf differ diff --git a/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-Light.ttf b/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-Light.ttf new file mode 100644 index 000000000..dea548dc1 Binary files /dev/null and b/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-Light.ttf differ diff --git a/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-Medium.ttf b/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-Medium.ttf new file mode 100644 index 000000000..fea7b6a53 Binary files /dev/null and b/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-Medium.ttf differ diff --git a/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-Regular.ttf b/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-Regular.ttf new file mode 100644 index 000000000..916528cd7 Binary files /dev/null and b/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-Regular.ttf differ diff --git a/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-SemiBold.ttf b/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-SemiBold.ttf new file mode 100644 index 000000000..be2512435 Binary files /dev/null and b/odex25_takaful/takaful_website_template/fonts/changa/ArbFONTS-Changa-SemiBold.ttf differ diff --git a/odex25_takaful/takaful_website_template/general_needs.html b/odex25_takaful/takaful_website_template/general_needs.html new file mode 100644 index 000000000..7db333176 --- /dev/null +++ b/odex25_takaful/takaful_website_template/general_needs.html @@ -0,0 +1,395 @@ + + + + + + + + Home Page | الصفحة الرئيسية + + + + + + + + + + + + + +
      +
      +

      بوابة الكافل

      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      الرقمنوع الإحتياجالمنطقة عدد المستفيدينالمبلغ نسبة اكتمال المبلغ المبلغ المتبقي
      4 كسوة الشتاء الرياض 266000 ر.س 68% 2000 ر.س + +
      4 كسوة الشتاء الرياض 266000 ر.س 68% 2000 ر.س + +
      4 كسوة الشتاء الرياض 266000 ر.س 68% 2000 ر.س + +
      4 كسوة الشتاء الرياض 266000 ر.س 68% 2000 ر.س + +
      +
      +
      +
      + + + + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/home.html b/odex25_takaful/takaful_website_template/home.html new file mode 100644 index 000000000..4b367d07d --- /dev/null +++ b/odex25_takaful/takaful_website_template/home.html @@ -0,0 +1,170 @@ + + + + + + + + Home Page | الصفحة الرئيسية + + + + + + + + + + +
      + +
      + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/imgs/1-172.png b/odex25_takaful/takaful_website_template/imgs/1-172.png new file mode 100644 index 000000000..54ebdfad7 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/1-172.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/Group 18203.png b/odex25_takaful/takaful_website_template/imgs/Group 18203.png new file mode 100644 index 000000000..275404f68 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/Group 18203.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/Gurantees/cancel.png b/odex25_takaful/takaful_website_template/imgs/Gurantees/cancel.png new file mode 100644 index 000000000..e8fe40a39 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/Gurantees/cancel.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/Gurantees/cash1.png b/odex25_takaful/takaful_website_template/imgs/Gurantees/cash1.png new file mode 100644 index 000000000..c9c586a45 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/Gurantees/cash1.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/Gurantees/cashback.png b/odex25_takaful/takaful_website_template/imgs/Gurantees/cashback.png new file mode 100644 index 000000000..865d142ec Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/Gurantees/cashback.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/Gurantees/gift.png b/odex25_takaful/takaful_website_template/imgs/Gurantees/gift.png new file mode 100644 index 000000000..c4d4f51c4 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/Gurantees/gift.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/Gurantees/kafala_gama3ya.png b/odex25_takaful/takaful_website_template/imgs/Gurantees/kafala_gama3ya.png new file mode 100644 index 000000000..bb8d87e84 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/Gurantees/kafala_gama3ya.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/Gurantees/kafalaty.png b/odex25_takaful/takaful_website_template/imgs/Gurantees/kafalaty.png new file mode 100644 index 000000000..6ce00db0b Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/Gurantees/kafalaty.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/Gurantees/trend.png b/odex25_takaful/takaful_website_template/imgs/Gurantees/trend.png new file mode 100644 index 000000000..53a9f8051 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/Gurantees/trend.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/Gurantees/yateem.png b/odex25_takaful/takaful_website_template/imgs/Gurantees/yateem.png new file mode 100644 index 000000000..8b55181de Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/Gurantees/yateem.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/Icon awesome-plus.png b/odex25_takaful/takaful_website_template/imgs/Icon awesome-plus.png new file mode 100644 index 000000000..647557373 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/Icon awesome-plus.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/Icon material-notifications-active.png b/odex25_takaful/takaful_website_template/imgs/Icon material-notifications-active.png new file mode 100644 index 000000000..ab3530031 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/Icon material-notifications-active.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/Rectangle 4056.png b/odex25_takaful/takaful_website_template/imgs/Rectangle 4056.png new file mode 100644 index 000000000..898e01072 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/Rectangle 4056.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/Rectangle 4061.png b/odex25_takaful/takaful_website_template/imgs/Rectangle 4061.png new file mode 100644 index 000000000..7d1f41de4 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/Rectangle 4061.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/XMLID_1571_.png b/odex25_takaful/takaful_website_template/imgs/XMLID_1571_.png new file mode 100644 index 000000000..e75f110c7 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/XMLID_1571_.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/XMLID_857_.png b/odex25_takaful/takaful_website_template/imgs/XMLID_857_.png new file mode 100644 index 000000000..2d293488a Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/XMLID_857_.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/arrow_down.png b/odex25_takaful/takaful_website_template/imgs/arrow_down.png new file mode 100644 index 000000000..5da163c77 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/arrow_down.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/arrow_left.png b/odex25_takaful/takaful_website_template/imgs/arrow_left.png new file mode 100644 index 000000000..9d35d8e91 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/arrow_left.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/arrow_right.png b/odex25_takaful/takaful_website_template/imgs/arrow_right.png new file mode 100644 index 000000000..f2869ec29 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/arrow_right.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/attatch.png b/odex25_takaful/takaful_website_template/imgs/attatch.png new file mode 100644 index 000000000..71951ce2f Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/attatch.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/banner.png b/odex25_takaful/takaful_website_template/imgs/banner.png new file mode 100644 index 000000000..dad69e67c Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/banner.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/bread_arrow.png b/odex25_takaful/takaful_website_template/imgs/bread_arrow.png new file mode 100644 index 000000000..68cd6e538 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/bread_arrow.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/close.png b/odex25_takaful/takaful_website_template/imgs/close.png new file mode 100644 index 000000000..21924878c Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/close.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/credit.png b/odex25_takaful/takaful_website_template/imgs/credit.png new file mode 100644 index 000000000..0c59d55a6 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/credit.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/document.png b/odex25_takaful/takaful_website_template/imgs/document.png new file mode 100644 index 000000000..7ab336f93 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/document.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/dropdown.png b/odex25_takaful/takaful_website_template/imgs/dropdown.png new file mode 100644 index 000000000..369963467 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/dropdown.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/employee.png b/odex25_takaful/takaful_website_template/imgs/employee.png new file mode 100644 index 000000000..3e75f468f Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/employee.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/file.png b/odex25_takaful/takaful_website_template/imgs/file.png new file mode 100644 index 000000000..73fd1de12 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/file.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/gift_1.png b/odex25_takaful/takaful_website_template/imgs/gift_1.png new file mode 100644 index 000000000..4fceaebad Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/gift_1.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/helping.png b/odex25_takaful/takaful_website_template/imgs/helping.png new file mode 100644 index 000000000..4b079f085 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/helping.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/late_payments.png b/odex25_takaful/takaful_website_template/imgs/late_payments.png new file mode 100644 index 000000000..f49bd1a95 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/late_payments.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/logged_user.png b/odex25_takaful/takaful_website_template/imgs/logged_user.png new file mode 100644 index 000000000..7f926ce7f Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/logged_user.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/logo.png b/odex25_takaful/takaful_website_template/imgs/logo.png new file mode 100644 index 000000000..0a465cc11 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/logo.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/logout-svgrepo-com.png b/odex25_takaful/takaful_website_template/imgs/logout-svgrepo-com.png new file mode 100644 index 000000000..5ab571cd9 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/logout-svgrepo-com.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/member.png b/odex25_takaful/takaful_website_template/imgs/member.png new file mode 100644 index 000000000..04edf0c5b Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/member.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/money-report-svgrepo-com.png b/odex25_takaful/takaful_website_template/imgs/money-report-svgrepo-com.png new file mode 100644 index 000000000..0e326fbaa Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/money-report-svgrepo-com.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/money.png b/odex25_takaful/takaful_website_template/imgs/money.png new file mode 100644 index 000000000..9b7c239ea Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/money.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/needs.png b/odex25_takaful/takaful_website_template/imgs/needs.png new file mode 100644 index 000000000..cef88b5e4 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/needs.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/next.png b/odex25_takaful/takaful_website_template/imgs/next.png new file mode 100644 index 000000000..ce6d4a802 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/next.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/payments.png b/odex25_takaful/takaful_website_template/imgs/payments.png new file mode 100644 index 000000000..5cb5ec3c1 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/payments.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/prev.png b/odex25_takaful/takaful_website_template/imgs/prev.png new file mode 100644 index 000000000..643d0ca2b Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/prev.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/red_cancel.png b/odex25_takaful/takaful_website_template/imgs/red_cancel.png new file mode 100644 index 000000000..72de171ed Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/red_cancel.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/resturant_owner.png b/odex25_takaful/takaful_website_template/imgs/resturant_owner.png new file mode 100644 index 000000000..18c4055cf Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/resturant_owner.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/search.png b/odex25_takaful/takaful_website_template/imgs/search.png new file mode 100644 index 000000000..ac446e22e Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/search.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/separator.png b/odex25_takaful/takaful_website_template/imgs/separator.png new file mode 100644 index 000000000..9a1ccdc8e Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/separator.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/settings-svgrepo-com.png b/odex25_takaful/takaful_website_template/imgs/settings-svgrepo-com.png new file mode 100644 index 000000000..fddabdfef Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/settings-svgrepo-com.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/shopping-cart.png b/odex25_takaful/takaful_website_template/imgs/shopping-cart.png new file mode 100644 index 000000000..e279a9bc2 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/shopping-cart.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/step_1_act.png b/odex25_takaful/takaful_website_template/imgs/step_1_act.png new file mode 100644 index 000000000..b03d33c59 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/step_1_act.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/step_2_act.png b/odex25_takaful/takaful_website_template/imgs/step_2_act.png new file mode 100644 index 000000000..a242e2004 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/step_2_act.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/step_2_inact.png b/odex25_takaful/takaful_website_template/imgs/step_2_inact.png new file mode 100644 index 000000000..716489bef Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/step_2_inact.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/step_3_act.png b/odex25_takaful/takaful_website_template/imgs/step_3_act.png new file mode 100644 index 000000000..762abcb4d Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/step_3_act.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/step_3_inact.png b/odex25_takaful/takaful_website_template/imgs/step_3_inact.png new file mode 100644 index 000000000..a54fc3bfb Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/step_3_inact.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/step_4_act.png b/odex25_takaful/takaful_website_template/imgs/step_4_act.png new file mode 100644 index 000000000..28bbb2213 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/step_4_act.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/step_4_inact.png b/odex25_takaful/takaful_website_template/imgs/step_4_inact.png new file mode 100644 index 000000000..a8d7631df Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/step_4_inact.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/step_5_inact.png b/odex25_takaful/takaful_website_template/imgs/step_5_inact.png new file mode 100644 index 000000000..a1fce35db Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/step_5_inact.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/trash.png b/odex25_takaful/takaful_website_template/imgs/trash.png new file mode 100644 index 000000000..26c7d9a0c Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/trash.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/user.png b/odex25_takaful/takaful_website_template/imgs/user.png new file mode 100644 index 000000000..e33d11ed6 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/user.png differ diff --git a/odex25_takaful/takaful_website_template/imgs/volanteere.png b/odex25_takaful/takaful_website_template/imgs/volanteere.png new file mode 100644 index 000000000..cb6e36b95 Binary files /dev/null and b/odex25_takaful/takaful_website_template/imgs/volanteere.png differ diff --git a/odex25_takaful/takaful_website_template/index.html b/odex25_takaful/takaful_website_template/index.html new file mode 100644 index 000000000..95bf10c0e --- /dev/null +++ b/odex25_takaful/takaful_website_template/index.html @@ -0,0 +1,135 @@ + + + + + + + + Order Process + + + + + + +
      +
      +
      +
      + 1 +
      + انشاء حساب +
      +
      +
      + 2 +
      + تأكيد الحساب +
      +
      +
      + 3 +
      + حدد شاراتك +
      +
      +
      + 4 +
      + استكمال البيانات +
      +
      +
      + 5 +
      + تم بنجاح +
      +
      +
      +
      +
      +
      قم بتعبئة البيانات التالية
      +
      +
      +
      +
      + + +
      +
      +
      +
      + +
      +
      + +966 +
      + +
      +
      +
      +
      +
      + + +
      +
      + +
      +
      + + +
      +
      + +
      +
      + +
      +
      + + +
      +
      + + +
      + +
      +
      +
      +
      +
      + + +
      +
      +
      +
      + +
      + + +
      +
      +
      +
      +
      + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/js/bootstrap.min.js b/odex25_takaful/takaful_website_template/js/bootstrap.min.js new file mode 100644 index 000000000..534d53343 --- /dev/null +++ b/odex25_takaful/takaful_website_template/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e(t.bootstrap={},t.jQuery,t.Popper)}(this,function(t,e,n){"use strict";function i(t,e){for(var n=0;n0?i:null}catch(t){return null}},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(n){t(n).trigger(e.end)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var s in n)if(Object.prototype.hasOwnProperty.call(n,s)){var r=n[s],o=e[s],a=o&&i.isElement(o)?"element":(l=o,{}.toString.call(l).match(/\s([a-zA-Z]+)/)[1].toLowerCase());if(!new RegExp(r).test(a))throw new Error(t.toUpperCase()+': Option "'+s+'" provided type "'+a+'" but expected type "'+r+'".')}var l}};return e=("undefined"==typeof window||!window.QUnit)&&{end:"transitionend"},t.fn.emulateTransitionEnd=n,i.supportsTransitionEnd()&&(t.event.special[i.TRANSITION_END]={bindType:e.end,delegateType:e.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}}),i}(e),L=(a="alert",h="."+(l="bs.alert"),c=(o=e).fn[a],u={CLOSE:"close"+h,CLOSED:"closed"+h,CLICK_DATA_API:"click"+h+".data-api"},f="alert",d="fade",_="show",g=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){t=t||this._element;var e=this._getRootElement(t);this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.removeData(this._element,l),this._element=null},e._getRootElement=function(t){var e=P.getSelectorFromElement(t),n=!1;return e&&(n=o(e)[0]),n||(n=o(t).closest("."+f)[0]),n},e._triggerCloseEvent=function(t){var e=o.Event(u.CLOSE);return o(t).trigger(e),e},e._removeElement=function(t){var e=this;o(t).removeClass(_),P.supportsTransitionEnd()&&o(t).hasClass(d)?o(t).one(P.TRANSITION_END,function(n){return e._destroyElement(t,n)}).emulateTransitionEnd(150):this._destroyElement(t)},e._destroyElement=function(t){o(t).detach().trigger(u.CLOSED).remove()},t._jQueryInterface=function(e){return this.each(function(){var n=o(this),i=n.data(l);i||(i=new t(this),n.data(l,i)),"close"===e&&i[e](this)})},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},s(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),o(document).on(u.CLICK_DATA_API,'[data-dismiss="alert"]',g._handleDismiss(new g)),o.fn[a]=g._jQueryInterface,o.fn[a].Constructor=g,o.fn[a].noConflict=function(){return o.fn[a]=c,g._jQueryInterface},g),R=(m="button",E="."+(v="bs.button"),T=".data-api",y=(p=e).fn[m],C="active",I="btn",A="focus",b='[data-toggle^="button"]',D='[data-toggle="buttons"]',S="input",w=".active",N=".btn",O={CLICK_DATA_API:"click"+E+T,FOCUS_BLUR_DATA_API:"focus"+E+T+" blur"+E+T},k=function(){function t(t){this._element=t}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=p(this._element).closest(D)[0];if(n){var i=p(this._element).find(S)[0];if(i){if("radio"===i.type)if(i.checked&&p(this._element).hasClass(C))t=!1;else{var s=p(n).find(w)[0];s&&p(s).removeClass(C)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!p(this._element).hasClass(C),p(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!p(this._element).hasClass(C)),t&&p(this._element).toggleClass(C)},e.dispose=function(){p.removeData(this._element,v),this._element=null},t._jQueryInterface=function(e){return this.each(function(){var n=p(this).data(v);n||(n=new t(this),p(this).data(v,n)),"toggle"===e&&n[e]()})},s(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),p(document).on(O.CLICK_DATA_API,b,function(t){t.preventDefault();var e=t.target;p(e).hasClass(I)||(e=p(e).closest(N)),k._jQueryInterface.call(p(e),"toggle")}).on(O.FOCUS_BLUR_DATA_API,b,function(t){var e=p(t.target).closest(N)[0];p(e).toggleClass(A,/^focus(in)?$/.test(t.type))}),p.fn[m]=k._jQueryInterface,p.fn[m].Constructor=k,p.fn[m].noConflict=function(){return p.fn[m]=y,k._jQueryInterface},k),j=function(t){var e="carousel",n="bs.carousel",i="."+n,o=t.fn[e],a={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},l={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},h="next",c="prev",u="left",f="right",d={SLIDE:"slide"+i,SLID:"slid"+i,KEYDOWN:"keydown"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i,TOUCHEND:"touchend"+i,LOAD_DATA_API:"load"+i+".data-api",CLICK_DATA_API:"click"+i+".data-api"},_="carousel",g="active",p="slide",m="carousel-item-right",v="carousel-item-left",E="carousel-item-next",T="carousel-item-prev",y={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},C=function(){function o(e,n){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this._config=this._getConfig(n),this._element=t(e)[0],this._indicatorsElement=t(this._element).find(y.INDICATORS)[0],this._addEventListeners()}var C=o.prototype;return C.next=function(){this._isSliding||this._slide(h)},C.nextWhenVisible=function(){!document.hidden&&t(this._element).is(":visible")&&"hidden"!==t(this._element).css("visibility")&&this.next()},C.prev=function(){this._isSliding||this._slide(c)},C.pause=function(e){e||(this._isPaused=!0),t(this._element).find(y.NEXT_PREV)[0]&&P.supportsTransitionEnd()&&(P.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},C.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},C.to=function(e){var n=this;this._activeElement=t(this._element).find(y.ACTIVE_ITEM)[0];var i=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0))if(this._isSliding)t(this._element).one(d.SLID,function(){return n.to(e)});else{if(i===e)return this.pause(),void this.cycle();var s=e>i?h:c;this._slide(s,this._items[e])}},C.dispose=function(){t(this._element).off(i),t.removeData(this._element,n),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},C._getConfig=function(t){return t=r({},a,t),P.typeCheckConfig(e,t,l),t},C._addEventListeners=function(){var e=this;this._config.keyboard&&t(this._element).on(d.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&(t(this._element).on(d.MOUSEENTER,function(t){return e.pause(t)}).on(d.MOUSELEAVE,function(t){return e.cycle(t)}),"ontouchstart"in document.documentElement&&t(this._element).on(d.TOUCHEND,function(){e.pause(),e.touchTimeout&&clearTimeout(e.touchTimeout),e.touchTimeout=setTimeout(function(t){return e.cycle(t)},500+e._config.interval)}))},C._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},C._getItemIndex=function(e){return this._items=t.makeArray(t(e).parent().find(y.ITEM)),this._items.indexOf(e)},C._getItemByDirection=function(t,e){var n=t===h,i=t===c,s=this._getItemIndex(e),r=this._items.length-1;if((i&&0===s||n&&s===r)&&!this._config.wrap)return e;var o=(s+(t===c?-1:1))%this._items.length;return-1===o?this._items[this._items.length-1]:this._items[o]},C._triggerSlideEvent=function(e,n){var i=this._getItemIndex(e),s=this._getItemIndex(t(this._element).find(y.ACTIVE_ITEM)[0]),r=t.Event(d.SLIDE,{relatedTarget:e,direction:n,from:s,to:i});return t(this._element).trigger(r),r},C._setActiveIndicatorElement=function(e){if(this._indicatorsElement){t(this._indicatorsElement).find(y.ACTIVE).removeClass(g);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&t(n).addClass(g)}},C._slide=function(e,n){var i,s,r,o=this,a=t(this._element).find(y.ACTIVE_ITEM)[0],l=this._getItemIndex(a),c=n||a&&this._getItemByDirection(e,a),_=this._getItemIndex(c),C=Boolean(this._interval);if(e===h?(i=v,s=E,r=u):(i=m,s=T,r=f),c&&t(c).hasClass(g))this._isSliding=!1;else if(!this._triggerSlideEvent(c,r).isDefaultPrevented()&&a&&c){this._isSliding=!0,C&&this.pause(),this._setActiveIndicatorElement(c);var I=t.Event(d.SLID,{relatedTarget:c,direction:r,from:l,to:_});P.supportsTransitionEnd()&&t(this._element).hasClass(p)?(t(c).addClass(s),P.reflow(c),t(a).addClass(i),t(c).addClass(i),t(a).one(P.TRANSITION_END,function(){t(c).removeClass(i+" "+s).addClass(g),t(a).removeClass(g+" "+s+" "+i),o._isSliding=!1,setTimeout(function(){return t(o._element).trigger(I)},0)}).emulateTransitionEnd(600)):(t(a).removeClass(g),t(c).addClass(g),this._isSliding=!1,t(this._element).trigger(I)),C&&this.cycle()}},o._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),s=r({},a,t(this).data());"object"==typeof e&&(s=r({},s,e));var l="string"==typeof e?e:s.slide;if(i||(i=new o(this,s),t(this).data(n,i)),"number"==typeof e)i.to(e);else if("string"==typeof l){if("undefined"==typeof i[l])throw new TypeError('No method named "'+l+'"');i[l]()}else s.interval&&(i.pause(),i.cycle())})},o._dataApiClickHandler=function(e){var i=P.getSelectorFromElement(this);if(i){var s=t(i)[0];if(s&&t(s).hasClass(_)){var a=r({},t(s).data(),t(this).data()),l=this.getAttribute("data-slide-to");l&&(a.interval=!1),o._jQueryInterface.call(t(s),a),l&&t(s).data(n).to(l),e.preventDefault()}}},s(o,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),o}();return t(document).on(d.CLICK_DATA_API,y.DATA_SLIDE,C._dataApiClickHandler),t(window).on(d.LOAD_DATA_API,function(){t(y.DATA_RIDE).each(function(){var e=t(this);C._jQueryInterface.call(e,e.data())})}),t.fn[e]=C._jQueryInterface,t.fn[e].Constructor=C,t.fn[e].noConflict=function(){return t.fn[e]=o,C._jQueryInterface},C}(e),H=function(t){var e="collapse",n="bs.collapse",i="."+n,o=t.fn[e],a={toggle:!0,parent:""},l={toggle:"boolean",parent:"(string|element)"},h={SHOW:"show"+i,SHOWN:"shown"+i,HIDE:"hide"+i,HIDDEN:"hidden"+i,CLICK_DATA_API:"click"+i+".data-api"},c="show",u="collapse",f="collapsing",d="collapsed",_="width",g="height",p={ACTIVES:".show, .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},m=function(){function i(e,n){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(n),this._triggerArray=t.makeArray(t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var i=t(p.DATA_TOGGLE),s=0;s0&&(this._selector=o,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var o=i.prototype;return o.toggle=function(){t(this._element).hasClass(c)?this.hide():this.show()},o.show=function(){var e,s,r=this;if(!this._isTransitioning&&!t(this._element).hasClass(c)&&(this._parent&&0===(e=t.makeArray(t(this._parent).find(p.ACTIVES).filter('[data-parent="'+this._config.parent+'"]'))).length&&(e=null),!(e&&(s=t(e).not(this._selector).data(n))&&s._isTransitioning))){var o=t.Event(h.SHOW);if(t(this._element).trigger(o),!o.isDefaultPrevented()){e&&(i._jQueryInterface.call(t(e).not(this._selector),"hide"),s||t(e).data(n,null));var a=this._getDimension();t(this._element).removeClass(u).addClass(f),this._element.style[a]=0,this._triggerArray.length>0&&t(this._triggerArray).removeClass(d).attr("aria-expanded",!0),this.setTransitioning(!0);var l=function(){t(r._element).removeClass(f).addClass(u).addClass(c),r._element.style[a]="",r.setTransitioning(!1),t(r._element).trigger(h.SHOWN)};if(P.supportsTransitionEnd()){var _="scroll"+(a[0].toUpperCase()+a.slice(1));t(this._element).one(P.TRANSITION_END,l).emulateTransitionEnd(600),this._element.style[a]=this._element[_]+"px"}else l()}}},o.hide=function(){var e=this;if(!this._isTransitioning&&t(this._element).hasClass(c)){var n=t.Event(h.HIDE);if(t(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension();if(this._element.style[i]=this._element.getBoundingClientRect()[i]+"px",P.reflow(this._element),t(this._element).addClass(f).removeClass(u).removeClass(c),this._triggerArray.length>0)for(var s=0;s0&&t(n).toggleClass(d,!i).attr("aria-expanded",i)}},i._getTargetFromElement=function(e){var n=P.getSelectorFromElement(e);return n?t(n)[0]:null},i._jQueryInterface=function(e){return this.each(function(){var s=t(this),o=s.data(n),l=r({},a,s.data(),"object"==typeof e&&e);if(!o&&l.toggle&&/show|hide/.test(e)&&(l.toggle=!1),o||(o=new i(this,l),s.data(n,o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),i}();return t(document).on(h.CLICK_DATA_API,p.DATA_TOGGLE,function(e){"A"===e.currentTarget.tagName&&e.preventDefault();var i=t(this),s=P.getSelectorFromElement(this);t(s).each(function(){var e=t(this),s=e.data(n)?"toggle":i.data();m._jQueryInterface.call(e,s)})}),t.fn[e]=m._jQueryInterface,t.fn[e].Constructor=m,t.fn[e].noConflict=function(){return t.fn[e]=o,m._jQueryInterface},m}(e),W=function(t){var e="dropdown",i="bs.dropdown",o="."+i,a=".data-api",l=t.fn[e],h=new RegExp("38|40|27"),c={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,CLICK:"click"+o,CLICK_DATA_API:"click"+o+a,KEYDOWN_DATA_API:"keydown"+o+a,KEYUP_DATA_API:"keyup"+o+a},u="disabled",f="show",d="dropup",_="dropright",g="dropleft",p="dropdown-menu-right",m="dropdown-menu-left",v="position-static",E='[data-toggle="dropdown"]',T=".dropdown form",y=".dropdown-menu",C=".navbar-nav",I=".dropdown-menu .dropdown-item:not(.disabled)",A="top-start",b="top-end",D="bottom-start",S="bottom-end",w="right-start",N="left-start",O={offset:0,flip:!0,boundary:"scrollParent"},k={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)"},L=function(){function a(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var l=a.prototype;return l.toggle=function(){if(!this._element.disabled&&!t(this._element).hasClass(u)){var e=a._getParentFromElement(this._element),i=t(this._menu).hasClass(f);if(a._clearMenus(),!i){var s={relatedTarget:this._element},r=t.Event(c.SHOW,s);if(t(e).trigger(r),!r.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof n)throw new TypeError("Bootstrap dropdown require Popper.js (https://popper.js.org)");var o=this._element;t(e).hasClass(d)&&(t(this._menu).hasClass(m)||t(this._menu).hasClass(p))&&(o=e),"scrollParent"!==this._config.boundary&&t(e).addClass(v),this._popper=new n(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===t(e).closest(C).length&&t("body").children().on("mouseover",null,t.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),t(this._menu).toggleClass(f),t(e).toggleClass(f).trigger(t.Event(c.SHOWN,s))}}}},l.dispose=function(){t.removeData(this._element,i),t(this._element).off(o),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},l.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},l._addEventListeners=function(){var e=this;t(this._element).on(c.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},l._getConfig=function(n){return n=r({},this.constructor.Default,t(this._element).data(),n),P.typeCheckConfig(e,n,this.constructor.DefaultType),n},l._getMenuElement=function(){if(!this._menu){var e=a._getParentFromElement(this._element);this._menu=t(e).find(y)[0]}return this._menu},l._getPlacement=function(){var e=t(this._element).parent(),n=D;return e.hasClass(d)?(n=A,t(this._menu).hasClass(p)&&(n=b)):e.hasClass(_)?n=w:e.hasClass(g)?n=N:t(this._menu).hasClass(p)&&(n=S),n},l._detectNavbar=function(){return t(this._element).closest(".navbar").length>0},l._getPopperConfig=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t._config.offset(e.offsets)||{}),e}:e.offset=this._config.offset,{placement:this._getPlacement(),modifiers:{offset:e,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}}},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(i);if(n||(n=new a(this,"object"==typeof e?e:null),t(this).data(i,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},a._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=t.makeArray(t(E)),s=0;s0&&r--,40===e.which&&rdocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},p._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},p._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
      ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},f="show",d="out",_={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,INSERTED:"inserted"+o,CLICK:"click"+o,FOCUSIN:"focusin"+o,FOCUSOUT:"focusout"+o,MOUSEENTER:"mouseenter"+o,MOUSELEAVE:"mouseleave"+o},g="fade",p="show",m=".tooltip-inner",v=".arrow",E="hover",T="focus",y="click",C="manual",I=function(){function a(t,e){if("undefined"==typeof n)throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var I=a.prototype;return I.enable=function(){this._isEnabled=!0},I.disable=function(){this._isEnabled=!1},I.toggleEnabled=function(){this._isEnabled=!this._isEnabled},I.toggle=function(e){if(this._isEnabled)if(e){var n=this.constructor.DATA_KEY,i=t(e.currentTarget).data(n);i||(i=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(t(this.getTipElement()).hasClass(p))return void this._leave(null,this);this._enter(null,this)}},I.dispose=function(){clearTimeout(this._timeout),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),t(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&t(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,null!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},I.show=function(){var e=this;if("none"===t(this.element).css("display"))throw new Error("Please use show on visible elements");var i=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){t(this.element).trigger(i);var s=t.contains(this.element.ownerDocument.documentElement,this.element);if(i.isDefaultPrevented()||!s)return;var r=this.getTipElement(),o=P.getUID(this.constructor.NAME);r.setAttribute("id",o),this.element.setAttribute("aria-describedby",o),this.setContent(),this.config.animation&&t(r).addClass(g);var l="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,h=this._getAttachment(l);this.addAttachmentClass(h);var c=!1===this.config.container?document.body:t(this.config.container);t(r).data(this.constructor.DATA_KEY,this),t.contains(this.element.ownerDocument.documentElement,this.tip)||t(r).appendTo(c),t(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new n(this.element,r,{placement:h,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:v},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),t(r).addClass(p),"ontouchstart"in document.documentElement&&t("body").children().on("mouseover",null,t.noop);var u=function(){e.config.animation&&e._fixTransition();var n=e._hoverState;e._hoverState=null,t(e.element).trigger(e.constructor.Event.SHOWN),n===d&&e._leave(null,e)};P.supportsTransitionEnd()&&t(this.tip).hasClass(g)?t(this.tip).one(P.TRANSITION_END,u).emulateTransitionEnd(a._TRANSITION_DURATION):u()}},I.hide=function(e){var n=this,i=this.getTipElement(),s=t.Event(this.constructor.Event.HIDE),r=function(){n._hoverState!==f&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),t(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),e&&e()};t(this.element).trigger(s),s.isDefaultPrevented()||(t(i).removeClass(p),"ontouchstart"in document.documentElement&&t("body").children().off("mouseover",null,t.noop),this._activeTrigger[y]=!1,this._activeTrigger[T]=!1,this._activeTrigger[E]=!1,P.supportsTransitionEnd()&&t(this.tip).hasClass(g)?t(i).one(P.TRANSITION_END,r).emulateTransitionEnd(150):r(),this._hoverState="")},I.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},I.isWithContent=function(){return Boolean(this.getTitle())},I.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-tooltip-"+e)},I.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},I.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(m),this.getTitle()),e.removeClass(g+" "+p)},I.setElementContent=function(e,n){var i=this.config.html;"object"==typeof n&&(n.nodeType||n.jquery)?i?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text()):e[i?"html":"text"](n)},I.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},I._getAttachment=function(t){return c[t.toUpperCase()]},I._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach(function(n){if("click"===n)t(e.element).on(e.constructor.Event.CLICK,e.config.selector,function(t){return e.toggle(t)});else if(n!==C){var i=n===E?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,s=n===E?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;t(e.element).on(i,e.config.selector,function(t){return e._enter(t)}).on(s,e.config.selector,function(t){return e._leave(t)})}t(e.element).closest(".modal").on("hide.bs.modal",function(){return e.hide()})}),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},I._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},I._enter=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusin"===e.type?T:E]=!0),t(n.getTipElement()).hasClass(p)||n._hoverState===f?n._hoverState=f:(clearTimeout(n._timeout),n._hoverState=f,n.config.delay&&n.config.delay.show?n._timeout=setTimeout(function(){n._hoverState===f&&n.show()},n.config.delay.show):n.show())},I._leave=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusout"===e.type?T:E]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState=d,n.config.delay&&n.config.delay.hide?n._timeout=setTimeout(function(){n._hoverState===d&&n.hide()},n.config.delay.hide):n.hide())},I._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},I._getConfig=function(n){return"number"==typeof(n=r({},this.constructor.Default,t(this.element).data(),n)).delay&&(n.delay={show:n.delay,hide:n.delay}),"number"==typeof n.title&&(n.title=n.title.toString()),"number"==typeof n.content&&(n.content=n.content.toString()),P.typeCheckConfig(e,n,this.constructor.DefaultType),n},I._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},I._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(l);null!==n&&n.length>0&&e.removeClass(n.join(""))},I._handlePopperPlacementChange=function(t){this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},I._fixTransition=function(){var e=this.getTipElement(),n=this.config.animation;null===e.getAttribute("x-placement")&&(t(e).removeClass(g),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(i),s="object"==typeof e&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new a(this,s),t(this).data(i,n)),"string"==typeof e)){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return u}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return i}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return o}},{key:"DefaultType",get:function(){return h}}]),a}();return t.fn[e]=I._jQueryInterface,t.fn[e].Constructor=I,t.fn[e].noConflict=function(){return t.fn[e]=a,I._jQueryInterface},I}(e),x=function(t){var e="popover",n="bs.popover",i="."+n,o=t.fn[e],a=new RegExp("(^|\\s)bs-popover\\S+","g"),l=r({},U.Default,{placement:"right",trigger:"click",content:"",template:''}),h=r({},U.DefaultType,{content:"(string|element|function)"}),c="fade",u="show",f=".popover-header",d=".popover-body",_={HIDE:"hide"+i,HIDDEN:"hidden"+i,SHOW:"show"+i,SHOWN:"shown"+i,INSERTED:"inserted"+i,CLICK:"click"+i,FOCUSIN:"focusin"+i,FOCUSOUT:"focusout"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i},g=function(r){var o,g;function p(){return r.apply(this,arguments)||this}g=r,(o=p).prototype=Object.create(g.prototype),o.prototype.constructor=o,o.__proto__=g;var m=p.prototype;return m.isWithContent=function(){return this.getTitle()||this._getContent()},m.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-popover-"+e)},m.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},m.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(f),this.getTitle());var n=this._getContent();"function"==typeof n&&(n=n.call(this.element)),this.setElementContent(e.find(d),n),e.removeClass(c+" "+u)},m._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},m._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(a);null!==n&&n.length>0&&e.removeClass(n.join(""))},p._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),s="object"==typeof e?e:null;if((i||!/destroy|hide/.test(e))&&(i||(i=new p(this,s),t(this).data(n,i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}})},s(p,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return l}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return n}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return i}},{key:"DefaultType",get:function(){return h}}]),p}(U);return t.fn[e]=g._jQueryInterface,t.fn[e].Constructor=g,t.fn[e].noConflict=function(){return t.fn[e]=o,g._jQueryInterface},g}(e),K=function(t){var e="scrollspy",n="bs.scrollspy",i="."+n,o=t.fn[e],a={offset:10,method:"auto",target:""},l={offset:"number",method:"string",target:"(string|element)"},h={ACTIVATE:"activate"+i,SCROLL:"scroll"+i,LOAD_DATA_API:"load"+i+".data-api"},c="dropdown-item",u="active",f={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",NAV_ITEMS:".nav-item",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},d="offset",_="position",g=function(){function o(e,n){var i=this;this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(n),this._selector=this._config.target+" "+f.NAV_LINKS+","+this._config.target+" "+f.LIST_ITEMS+","+this._config.target+" "+f.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,t(this._scrollElement).on(h.SCROLL,function(t){return i._process(t)}),this.refresh(),this._process()}var g=o.prototype;return g.refresh=function(){var e=this,n=this._scrollElement===this._scrollElement.window?d:_,i="auto"===this._config.method?n:this._config.method,s=i===_?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),t.makeArray(t(this._selector)).map(function(e){var n,r=P.getSelectorFromElement(e);if(r&&(n=t(r)[0]),n){var o=n.getBoundingClientRect();if(o.width||o.height)return[t(n)[i]().top+s,r]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},g.dispose=function(){t.removeData(this._element,n),t(this._scrollElement).off(i),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},g._getConfig=function(n){if("string"!=typeof(n=r({},a,n)).target){var i=t(n.target).attr("id");i||(i=P.getUID(e),t(n.target).attr("id",i)),n.target="#"+i}return P.typeCheckConfig(e,n,l),n},g._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},g._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},g._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},g._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var s=this._offsets.length;s--;){this._activeTarget!==this._targets[s]&&t>=this._offsets[s]&&("undefined"==typeof this._offsets[s+1]||t=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(e),t.Util=P,t.Alert=L,t.Button=R,t.Carousel=j,t.Collapse=H,t.Dropdown=W,t.Modal=M,t.Popover=x,t.Scrollspy=K,t.Tab=V,t.Tooltip=U,Object.defineProperty(t,"__esModule",{value:!0})}); +//# sourceMappingURL=bootstrap.min.js.map \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/js/bootstrap_3.min.js b/odex25_takaful/takaful_website_template/js/bootstrap_3.min.js new file mode 100644 index 000000000..eb0a8b410 --- /dev/null +++ b/odex25_takaful/takaful_website_template/js/bootstrap_3.min.js @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.4.1 (https://getbootstrap.com/) + * Copyright 2011-2019 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");!function(t){"use strict";var e=jQuery.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||3this.$items.length-1||t<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){e.to(t)}):i==t?this.pause().cycle():this.slide(idocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},s.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},s.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth
      ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0},sanitize:!0,sanitizeFn:null,whiteList:t},m.prototype.init=function(t,e,i){if(this.enabled=!0,this.type=t,this.$element=g(e),this.options=this.getOptions(i),this.$viewport=this.options.viewport&&g(document).find(g.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var o=this.options.trigger.split(" "),n=o.length;n--;){var s=o[n];if("click"==s)this.$element.on("click."+this.type,this.options.selector,g.proxy(this.toggle,this));else if("manual"!=s){var a="hover"==s?"mouseenter":"focusin",r="hover"==s?"mouseleave":"focusout";this.$element.on(a+"."+this.type,this.options.selector,g.proxy(this.enter,this)),this.$element.on(r+"."+this.type,this.options.selector,g.proxy(this.leave,this))}}this.options.selector?this._options=g.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},m.prototype.getDefaults=function(){return m.DEFAULTS},m.prototype.getOptions=function(t){var e=this.$element.data();for(var i in e)e.hasOwnProperty(i)&&-1!==g.inArray(i,o)&&delete e[i];return(t=g.extend({},this.getDefaults(),e,t)).delay&&"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),t.sanitize&&(t.template=n(t.template,t.whiteList,t.sanitizeFn)),t},m.prototype.getDelegateOptions=function(){var i={},o=this.getDefaults();return this._options&&g.each(this._options,function(t,e){o[t]!=e&&(i[t]=e)}),i},m.prototype.enter=function(t){var e=t instanceof this.constructor?t:g(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e)),t instanceof g.Event&&(e.inState["focusin"==t.type?"focus":"hover"]=!0),e.tip().hasClass("in")||"in"==e.hoverState)e.hoverState="in";else{if(clearTimeout(e.timeout),e.hoverState="in",!e.options.delay||!e.options.delay.show)return e.show();e.timeout=setTimeout(function(){"in"==e.hoverState&&e.show()},e.options.delay.show)}},m.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},m.prototype.leave=function(t){var e=t instanceof this.constructor?t:g(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e)),t instanceof g.Event&&(e.inState["focusout"==t.type?"focus":"hover"]=!1),!e.isInStateTrue()){if(clearTimeout(e.timeout),e.hoverState="out",!e.options.delay||!e.options.delay.hide)return e.hide();e.timeout=setTimeout(function(){"out"==e.hoverState&&e.hide()},e.options.delay.hide)}},m.prototype.show=function(){var t=g.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(t);var e=g.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(t.isDefaultPrevented()||!e)return;var i=this,o=this.tip(),n=this.getUID(this.type);this.setContent(),o.attr("id",n),this.$element.attr("aria-describedby",n),this.options.animation&&o.addClass("fade");var s="function"==typeof this.options.placement?this.options.placement.call(this,o[0],this.$element[0]):this.options.placement,a=/\s?auto?\s?/i,r=a.test(s);r&&(s=s.replace(a,"")||"top"),o.detach().css({top:0,left:0,display:"block"}).addClass(s).data("bs."+this.type,this),this.options.container?o.appendTo(g(document).find(this.options.container)):o.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var l=this.getPosition(),h=o[0].offsetWidth,d=o[0].offsetHeight;if(r){var p=s,c=this.getPosition(this.$viewport);s="bottom"==s&&l.bottom+d>c.bottom?"top":"top"==s&&l.top-dc.width?"left":"left"==s&&l.left-ha.top+a.height&&(n.top=a.top+a.height-l)}else{var h=e.left-s,d=e.left+s+i;ha.right&&(n.left=a.left+a.width-d)}return n},m.prototype.getTitle=function(){var t=this.$element,e=this.options;return t.attr("data-original-title")||("function"==typeof e.title?e.title.call(t[0]):e.title)},m.prototype.getUID=function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},m.prototype.tip=function(){if(!this.$tip&&(this.$tip=g(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},m.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},m.prototype.enable=function(){this.enabled=!0},m.prototype.disable=function(){this.enabled=!1},m.prototype.toggleEnabled=function(){this.enabled=!this.enabled},m.prototype.toggle=function(t){var e=this;t&&((e=g(t.currentTarget).data("bs."+this.type))||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e))),t?(e.inState.click=!e.inState.click,e.isInStateTrue()?e.enter(e):e.leave(e)):e.tip().hasClass("in")?e.leave(e):e.enter(e)},m.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide(function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null,t.$element=null})},m.prototype.sanitizeHtml=function(t){return n(t,this.options.whiteList,this.options.sanitizeFn)};var e=g.fn.tooltip;g.fn.tooltip=function i(o){return this.each(function(){var t=g(this),e=t.data("bs.tooltip"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.tooltip",e=new m(this,i)),"string"==typeof o&&e[o]())})},g.fn.tooltip.Constructor=m,g.fn.tooltip.noConflict=function(){return g.fn.tooltip=e,this}}(jQuery),function(n){"use strict";var s=function(t,e){this.init("popover",t,e)};if(!n.fn.tooltip)throw new Error("Popover requires tooltip.js");s.VERSION="3.4.1",s.DEFAULTS=n.extend({},n.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),((s.prototype=n.extend({},n.fn.tooltip.Constructor.prototype)).constructor=s).prototype.getDefaults=function(){return s.DEFAULTS},s.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),i=this.getContent();if(this.options.html){var o=typeof i;this.options.sanitize&&(e=this.sanitizeHtml(e),"string"===o&&(i=this.sanitizeHtml(i))),t.find(".popover-title").html(e),t.find(".popover-content").children().detach().end()["string"===o?"html":"append"](i)}else t.find(".popover-title").text(e),t.find(".popover-content").children().detach().end().text(i);t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},s.prototype.hasContent=function(){return this.getTitle()||this.getContent()},s.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},s.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var t=n.fn.popover;n.fn.popover=function e(o){return this.each(function(){var t=n(this),e=t.data("bs.popover"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.popover",e=new s(this,i)),"string"==typeof o&&e[o]())})},n.fn.popover.Constructor=s,n.fn.popover.noConflict=function(){return n.fn.popover=t,this}}(jQuery),function(s){"use strict";function n(t,e){this.$body=s(document.body),this.$scrollElement=s(t).is(document.body)?s(window):s(t),this.options=s.extend({},n.DEFAULTS,e),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",s.proxy(this.process,this)),this.refresh(),this.process()}function e(o){return this.each(function(){var t=s(this),e=t.data("bs.scrollspy"),i="object"==typeof o&&o;e||t.data("bs.scrollspy",e=new n(this,i)),"string"==typeof o&&e[o]()})}n.VERSION="3.4.1",n.DEFAULTS={offset:10},n.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},n.prototype.refresh=function(){var t=this,o="offset",n=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),s.isWindow(this.$scrollElement[0])||(o="position",n=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var t=s(this),e=t.data("target")||t.attr("href"),i=/^#./.test(e)&&s(e);return i&&i.length&&i.is(":visible")&&[[i[o]().top+n,e]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},n.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,i=this.getScrollHeight(),o=this.options.offset+i-this.$scrollElement.height(),n=this.offsets,s=this.targets,a=this.activeTarget;if(this.scrollHeight!=i&&this.refresh(),o<=e)return a!=(t=s[s.length-1])&&this.activate(t);if(a&&e=n[t]&&(n[t+1]===undefined||e .active"),n=i&&r.support.transition&&(o.length&&o.hasClass("fade")||!!e.find("> .fade").length);function s(){o.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),t.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),n?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu").length&&t.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),i&&i()}o.length&&n?o.one("bsTransitionEnd",s).emulateTransitionEnd(a.TRANSITION_DURATION):s(),o.removeClass("in")};var t=r.fn.tab;r.fn.tab=e,r.fn.tab.Constructor=a,r.fn.tab.noConflict=function(){return r.fn.tab=t,this};var i=function(t){t.preventDefault(),e.call(r(this),"show")};r(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',i).on("click.bs.tab.data-api",'[data-toggle="pill"]',i)}(jQuery),function(l){"use strict";var h=function(t,e){this.options=l.extend({},h.DEFAULTS,e);var i=this.options.target===h.DEFAULTS.target?l(this.options.target):l(document).find(this.options.target);this.$target=i.on("scroll.bs.affix.data-api",l.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",l.proxy(this.checkPositionWithEventLoop,this)),this.$element=l(t),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};function i(o){return this.each(function(){var t=l(this),e=t.data("bs.affix"),i="object"==typeof o&&o;e||t.data("bs.affix",e=new h(this,i)),"string"==typeof o&&e[o]()})}h.VERSION="3.4.1",h.RESET="affix affix-top affix-bottom",h.DEFAULTS={offset:0,target:window},h.prototype.getState=function(t,e,i,o){var n=this.$target.scrollTop(),s=this.$element.offset(),a=this.$target.height();if(null!=i&&"top"==this.affixed)return ntd, >th", +f).each(function(e){e=c.column.index("toData",e);!1===a.s.current[e]&&b(this).css("display","none")})});c.on("destroy.dtr",function(){c.off(".dtr");b(c.table().body()).off(".dtr");b(k).off("resize.dtr orientationchange.dtr");c.cells(".dtr-control").nodes().to$().removeClass("dtr-control");b.each(a.s.current,function(f,l){!1===l&&a._setColumnVis(f,!0)})});this.c.breakpoints.sort(function(f,l){return f.widthl.width?-1:0});this._classLogic();this._resizeAuto();d=this.c.details;!1!== +d.type&&(a._detailsInit(),c.on("column-visibility.dtr",function(){a._timer&&clearTimeout(a._timer);a._timer=setTimeout(function(){a._timer=null;a._classLogic();a._resizeAuto();a._resize(!0);a._redrawChildren()},100)}),c.on("draw.dtr",function(){a._redrawChildren()}),b(c.table().node()).addClass("dtr-"+d.type));c.on("column-reorder.dtr",function(f,l,h){a._classLogic();a._resizeAuto();a._resize(!0)});c.on("column-sizing.dtr",function(){a._resizeAuto();a._resize()});c.on("column-calc.dt",function(f, +l){f=a.s.current;for(var h=0;hh-d[q].minWidth?(r=!0,l[q]=!1):l[q]=!0,h-=d[q].minWidth)}f=!1;e=0;for(g=d.length;e=q&&f(h,c[e].name);else if("not-"===r)for(e=0,r=c.length;eg?c.columns().eq(0).length+ +g:g;if(c.cell(this).index().column!==l)return}l=c.row(b(this).closest("tr"));"click"===f.type?a._detailsDisplay(l,!1):"mousedown"===f.type?b(this).css("outline","none"):"mouseup"===f.type&&b(this).trigger("blur").css("outline","")}})},_detailsObj:function(a){var c=this,d=this.s.dt;return b.map(this.s.columns,function(g,f){if(!g.never&&!g.control)return g=d.settings()[0].aoColumns[f],{className:g.sClass,columnIndex:f,data:d.cell(a,f).render(c.c.orthogonal),hidden:d.column(f).visible()&&!c.s.current[f], +rowIndex:a,title:null!==g.sTitle?g.sTitle:b(d.column(f).header()).text()}})},_find:function(a){for(var c=this.c.breakpoints,d=0,g=c.length;d").append(h).appendTo(f)}b("").append(l).appendTo(g);"inline"===this.c.details.type&&b(d).addClass("dtr-inline collapsed");b(d).find("[name]").removeAttr("name");b(d).css("position", +"relative");d=b("
      ").css({width:1,height:1,overflow:"hidden",clear:"both"}).append(d);d.insertBefore(a.table().node());l.each(function(e){e=a.column.index("fromVisible",e);c[e].minWidth=this.offsetWidth||0});d.remove()}},_responsiveOnlyHidden:function(){var a=this.s.dt;return b.map(this.s.current,function(c,d){return!1===a.column(d).visible()?!0:c})},_setColumnVis:function(a,c){var d=this.s.dt,g=c?"":"none";b(d.column(a).header()).css("display",g).toggleClass("dtr-hidden",!c);b(d.column(a).footer()).css("display", +g).toggleClass("dtr-hidden",!c);d.column(a).nodes().to$().css("display",g).toggleClass("dtr-hidden",!c);b.isEmptyObject(A)||d.cells(null,a).indexes().each(function(f){y(d,f.row,f.column)})},_tabIndexes:function(){var a=this.s.dt,c=a.cells({page:"current"}).nodes().to$(),d=a.settings()[0],g=this.c.details.target;c.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]");"number"===typeof g?a.cells(null,g,{page:"current"}).nodes().to$().attr("tabIndex",d.iTabIndex).data("dtr-keyboard",1):("td:first-child, th:first-child"=== +g&&(g=">td:first-child, >th:first-child"),b(g,a.rows({page:"current"}).nodes()).attr("tabIndex",d.iTabIndex).data("dtr-keyboard",1))}});u.breakpoints=[{name:"desktop",width:Infinity},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}];u.display={childRow:function(a,c,d){if(c){if(b(a.node()).hasClass("parent"))return a.child(d(),"child").show(),!0}else{if(a.child.isShown())return a.child(!1),b(a.node()).removeClass("parent"),!1;a.child(d(), +"child").show();b(a.node()).addClass("parent");return!0}},childRowImmediate:function(a,c,d){if(!c&&a.child.isShown()||!a.responsive.hasHidden())return a.child(!1),b(a.node()).removeClass("parent"),!1;a.child(d(),"child").show();b(a.node()).addClass("parent");return!0},modal:function(a){return function(c,d,g){if(d)b("div.dtr-modal-content").empty().append(g());else{var f=function(){l.remove();b(m).off("keypress.dtr")},l=b('
      ').append(b('
      ').append(b('
      ').append(g())).append(b('
      ×
      ').click(function(){f()}))).append(b('
      ').click(function(){f()})).appendTo("body"); +b(m).on("keyup.dtr",function(h){27===h.keyCode&&(h.stopPropagation(),f())})}a&&a.header&&b("div.dtr-modal-content").prepend("

      "+a.header(c)+"

      ")}}};var A={};u.renderer={listHiddenNodes:function(){return function(a,c,d){var g=b('
        '),f=!1;b.each(d,function(l,h){h.hidden&&(b("
      • '+ +h.title+"
      • ").append(b('').append(p(a,h.rowIndex,h.columnIndex))).appendTo(g),f=!0)});return f?g:!1}},listHidden:function(){return function(a,c,d){return(a=b.map(d,function(g){var f=g.className?'class="'+g.className+'"':"";return g.hidden?"
      • '+g.title+' '+g.data+"
      • ":""}).join(""))?b('
          ').append(a):!1}},tableAll:function(a){a=b.extend({tableClass:""},a);return function(c,d,g){c=b.map(g,function(f){return"'+f.title+": "+f.data+""}).join("");return b('').append(c)}}};u.defaults={breakpoints:u.breakpoints,auto:!0,details:{display:u.display.childRow,renderer:u.renderer.listHidden(), +target:0,type:"inline"},orthogonal:"display"};var C=b.fn.dataTable.Api;C.register("responsive()",function(){return this});C.register("responsive.index()",function(a){a=b(a);return{column:a.data("dtr-index"),row:a.parent().data("dtr-index")}});C.register("responsive.rebuild()",function(){return this.iterator("table",function(a){a._responsive&&a._responsive._classLogic()})});C.register("responsive.recalc()",function(){return this.iterator("table",function(a){a._responsive&&(a._responsive._resizeAuto(), +a._responsive._resize())})});C.register("responsive.hasHidden()",function(){var a=this.context[0];return a._responsive?-1!==b.inArray(!1,a._responsive._responsiveOnlyHidden()):!1});C.registerPlural("columns().responsiveHidden()","column().responsiveHidden()",function(){return this.iterator("column",function(a,c){return a._responsive?a._responsive._responsiveOnlyHidden()[c]:!1},1)});u.version="2.3.0";b.fn.dataTable.Responsive=u;b.fn.DataTable.Responsive=u;b(m).on("preInit.dt.dtr",function(a,c,d){"dt"=== +a.namespace&&(b(c.nTable).hasClass("responsive")||b(c.nTable).hasClass("dt-responsive")||c.oInit.responsive||z.defaults.responsive)&&(a=c.oInit.responsive,!1!==a&&new u(c,b.isPlainObject(a)?a:{}))});return u}); diff --git a/odex25_takaful/takaful_website_template/js/datatables.min.js b/odex25_takaful/takaful_website_template/js/datatables.min.js new file mode 100644 index 000000000..890cef9b0 --- /dev/null +++ b/odex25_takaful/takaful_website_template/js/datatables.min.js @@ -0,0 +1,359 @@ +/* + * This combined file was created by the DataTables downloader builder: + * https://datatables.net/download + * + * To rebuild or modify this file with the latest versions of the included + * software please visit: + * https://datatables.net/download/#bs4/dt-1.12.1/r-2.3.0 + * + * Included libraries: + * DataTables 1.12.1, Responsive 2.3.0 + */ + +/*! + SpryMedia Ltd. + + This source file is free software, available under the following license: + MIT license - http://datatables.net/license + + This source file is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. + + For details please refer to: http://www.datatables.net + DataTables 1.12.1 + ©2008-2022 SpryMedia Ltd - datatables.net/license +*/ +var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(l,y,A){l instanceof String&&(l=String(l));for(var q=l.length,E=0;E").css({position:"fixed",top:0,left:-1*l(y).scrollLeft(),height:1, +width:1,overflow:"hidden"}).append(l("
          ").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(l("
          ").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}l.extend(a.oBrowser,u.__browser);a.oScroll.iBarWidth=u.__browser.barWidth} +function Gb(a,b,c,d,e,h){var f=!1;if(c!==q){var g=c;f=!0}for(;d!==e;)a.hasOwnProperty(d)&&(g=f?b(g,a[d],d,a):a[d],f=!0,d+=h);return g}function cb(a,b){var c=u.defaults.column,d=a.aoColumns.length;c=l.extend({},u.models.oColumn,c,{nTh:b?b:A.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=l.extend({},u.models.oSearch,c[d]);Ia(a,d,l(b).data())}function Ia(a,b,c){b=a.aoColumns[b]; +var d=a.oClasses,e=l(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var h=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);h&&(b.sWidthOrig=h[1])}c!==q&&null!==c&&(Eb(c),P(u.defaults.column,c,!0),c.mDataProp===q||c.mData||(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),c.sClass&&e.addClass(c.sClass),h=b.sClass,l.extend(b,c),Y(b,c,"sWidth","sWidthOrig"),h!==b.sClass&&(b.sClass=h+" "+b.sClass),c.iDataSort!==q&&(b.aDataSort=[c.iDataSort]), +Y(b,c,"aDataSort"));var f=b.mData,g=ma(f),k=b.mRender?ma(b.mRender):null;c=function(m){return"string"===typeof m&&-1!==m.indexOf("@")};b._bAttrSrc=l.isPlainObject(f)&&(c(f.sort)||c(f.type)||c(f.filter));b._setter=null;b.fnGetData=function(m,n,p){var t=g(m,n,q,p);return k&&n?k(t,n,m,p):t};b.fnSetData=function(m,n,p){return ha(f)(m,n,p)};"number"!==typeof f&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==l.inArray("asc",b.asSorting);c=-1!==l.inArray("desc", +b.asSorting);b.bSortable&&(a||c)?a&&!c?(b.sSortingClass=d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI):(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI="")}function sa(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;db(a);for(var c=0,d=b.length;cm[n])d(g.length+m[n],k);else if("string"===typeof m[n]){var p=0;for(f=g.length;pb&&a[e]--; -1!=d&&c===q&&a.splice(d,1)}function va(a,b,c,d){var e=a.aoData[b],h,f=function(k,m){for(;k.childNodes.length;)k.removeChild(k.firstChild);k.innerHTML=T(a,b,m,"display")};if("dom"!==c&&(c&&"auto"!==c||"dom"!==e.src)){var g=e.anCells;if(g)if(d!==q)f(g[d],d);else for(c=0,h=g.length;c").appendTo(d));var k=0;for(b=g.length;k=a.fnRecordsDisplay()?0:d,a.iInitDisplayStart=-1);c=F(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==l.inArray(!1,c))V(a,!1);else{c=[];var e=0;d=a.asStripeClasses;var h=d.length,f=a.oLanguage,g="ssp"==Q(a),k=a.aiDisplay,m=a._iDisplayStart,n=a.fnDisplayEnd();a.bDrawing=!0;if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,V(a,!1);else if(!g)a.iDraw++;else if(!a.bDestroying&&!b){Kb(a);return}if(0!==k.length)for(b=g?a.aoData.length:n,f=g?0:m;f",{"class":h?d[0]:""}).append(l("
          ").insertAfter(H));r.nTBody=fa[0];H=t.children("tfoot");0===H.length&&0").appendTo(t));0===H.length||0===H.children().length?t.addClass(C.sNoFooter):0/g,Dc=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,Ec=/(\/|\.|\*|\+|\?|\||\(|\)|\[|\]|\{|\}|\\|\$|\^|\-)/g,vb=/['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,aa=function(a){return a&&!0!==a&&"-"!== +a?!1:!0},nc=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},oc=function(a,b){xb[b]||(xb[b]=new RegExp(ob(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(xb[b],"."):a},yb=function(a,b,c){var d="string"===typeof a;if(aa(a))return!0;b&&d&&(a=oc(a,b));c&&d&&(a=a.replace(vb,""));return!isNaN(parseFloat(a))&&isFinite(a)},pc=function(a,b,c){return aa(a)?!0:aa(a)||"string"===typeof a?yb(a.replace(Ya,""),b,c)?!0:null:null},U=function(a,b,c){var d=[],e=0,h=a.length; +if(c!==q)for(;ea.length)){var b=a.slice().sort();for(var c=b[0], +d=1,e=b.length;d")[0],Bc=Sa.textContent!==q,Cc=/<.*?>/g,mb=u.util.throttle,tc=[],N=Array.prototype,Fc=function(a){var b,c=u.settings,d=l.map(c,function(h,f){return h.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase()){var e= +l.inArray(a,d);return-1!==e?[c[e]]:null}if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?b=l(a):a instanceof l&&(b=a)}else return[];if(b)return b.map(function(h){e=l.inArray(this,d);return-1!==e?c[e]:null}).toArray()};var B=function(a,b){if(!(this instanceof B))return new B(a,b);var c=[],d=function(f){(f=Fc(f))&&c.push.apply(c,f)};if(Array.isArray(a))for(var e=0,h=a.length;ea?new B(b[a],this[a]):null},filter:function(a){var b=[];if(N.filter)b=N.filter.call(this,a,this);else for(var c=0,d=this.length;c").addClass(g),l("td",k).addClass(g).html(f)[0].colSpan=na(a),e.push(k[0]))};h(c,d);b._details&&b._details.detach();b._details=l(e);b._detailsShow&&b._details.insertAfter(b.nTr)},wc=u.util.throttle(function(a){Da(a[0])}, +500),Cb=function(a,b){var c=a.context;c.length&&(a=c[0].aoData[b!==q?b:a[0]])&&a._details&&(a._details.remove(),a._detailsShow=q,a._details=q,l(a.nTr).removeClass("dt-hasChild"),wc(c))},xc=function(a,b){var c=a.context;if(c.length&&a.length){var d=c[0].aoData[a[0]];d._details&&((d._detailsShow=b)?(d._details.insertAfter(d.nTr),l(d.nTr).addClass("dt-hasChild")):(d._details.detach(),l(d.nTr).removeClass("dt-hasChild")),F(c[0],null,"childRow",[b,a.row(a[0])]),Ic(c[0]),wc(c))}},Ic=function(a){var b=new B(a), +c=a.aoData;b.off("draw.dt.DT_details column-sizing.dt.DT_details destroy.dt.DT_details");0g){var n=l.map(d,function(p,t){return p.bVisible?t:null});return[n[n.length+g]]}return[ta(a,g)];case "name":return l.map(e,function(p,t){return p===m[1]?t:null});default:return[]}if(f.nodeName&&f._DT_CellIndex)return[f._DT_CellIndex.column];g=l(h).filter(f).map(function(){return l.inArray(this,h)}).toArray();if(g.length||!f.nodeName)return g; +g=l(f).closest("*[data-dt-column]");return g.length?[g.data("dt-column")]:[]},a,c)};z("columns()",function(a,b){a===q?a="":l.isPlainObject(a)&&(b=a,a="");b=Ab(b);var c=this.iterator("table",function(d){return Kc(d,a,b)},1);c.selector.cols=a;c.selector.opts=b;return c});J("columns().header()","column().header()",function(a,b){return this.iterator("column",function(c,d){return c.aoColumns[d].nTh},1)});J("columns().footer()","column().footer()",function(a,b){return this.iterator("column",function(c, +d){return c.aoColumns[d].nTf},1)});J("columns().data()","column().data()",function(){return this.iterator("column-rows",yc,1)});J("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});J("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,h){return Fa(b.aoData,h,"search"===a?"_aFilterData":"_aSortData",c)},1)});J("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows", +function(a,b,c,d,e){return Fa(a.aoData,e,"anCells",b)},1)});J("columns().visible()","column().visible()",function(a,b){var c=this,d=this.iterator("column",function(e,h){if(a===q)return e.aoColumns[h].bVisible;var f=e.aoColumns,g=f[h],k=e.aoData,m;if(a!==q&&g.bVisible!==a){if(a){var n=l.inArray(!0,U(f,"bVisible"),h+1);f=0;for(m=k.length;fd;return!0};u.isDataTable=u.fnIsDataTable=function(a){var b=l(a).get(0),c=!1;if(a instanceof u.Api)return!0;l.each(u.settings,function(d,e){d=e.nScrollHead?l("table",e.nScrollHead)[0]:null;var h=e.nScrollFoot? +l("table",e.nScrollFoot)[0]:null;if(e.nTable===b||d===b||h===b)c=!0});return c};u.tables=u.fnTables=function(a){var b=!1;l.isPlainObject(a)&&(b=a.api,a=a.visible);var c=l.map(u.settings,function(d){if(!a||a&&l(d.nTable).is(":visible"))return d.nTable});return b?new B(c):c};u.camelToHungarian=P;z("$()",function(a,b){b=this.rows(b).nodes();b=l(b);return l([].concat(b.filter(a).toArray(),b.find(a).toArray()))});l.each(["on","one","off"],function(a,b){z(b+"()",function(){var c=Array.prototype.slice.call(arguments); +c[0]=l.map(c[0].split(/\s/),function(e){return e.match(/\.dt\b/)?e:e+".dt"}).join(" ");var d=l(this.tables().nodes());d[b].apply(d,c);return this})});z("clear()",function(){return this.iterator("table",function(a){Ma(a)})});z("settings()",function(){return new B(this.context,this.context)});z("init()",function(){var a=this.context;return a.length?a[0].oInit:null});z("data()",function(){return this.iterator("table",function(a){return U(a.aoData,"_aData")}).flatten()});z("destroy()",function(a){a=a|| +!1;return this.iterator("table",function(b){var c=b.oClasses,d=b.nTable,e=b.nTBody,h=b.nTHead,f=b.nTFoot,g=l(d);e=l(e);var k=l(b.nTableWrapper),m=l.map(b.aoData,function(p){return p.nTr}),n;b.bDestroying=!0;F(b,"aoDestroyCallback","destroy",[b]);a||(new B(b)).columns().visible(!0);k.off(".DT").find(":not(tbody *)").off(".DT");l(y).off(".DT-"+b.sInstance);d!=h.parentNode&&(g.children("thead").detach(),g.append(h));f&&d!=f.parentNode&&(g.children("tfoot").detach(),g.append(f));b.aaSorting=[];b.aaSortingFixed= +[];Va(b);l(m).removeClass(b.asStripeClasses.join(" "));l("th, td",h).removeClass(c.sSortable+" "+c.sSortableAsc+" "+c.sSortableDesc+" "+c.sSortableNone);e.children().detach();e.append(m);h=b.nTableWrapper.parentNode;f=a?"remove":"detach";g[f]();k[f]();!a&&h&&(h.insertBefore(d,b.nTableReinsertBefore),g.css("width",b.sDestroyWidth).removeClass(c.sTable),(n=b.asDestroyStripes.length)&&e.children().each(function(p){l(this).addClass(b.asDestroyStripes[p%n])}));c=l.inArray(b,u.settings);-1!==c&&u.settings.splice(c, +1)})});l.each(["column","row","cell"],function(a,b){z(b+"s().every()",function(c){var d=this.selector.opts,e=this;return this.iterator(b,function(h,f,g,k,m){c.call(e[b](f,"cell"===b?g:d,"cell"===b?d:q),f,g,k,m)})})});z("i18n()",function(a,b,c){var d=this.context[0];a=ma(a)(d.oLanguage);a===q&&(a=b);c!==q&&l.isPlainObject(a)&&(a=a[c]!==q?a[c]:a._);return a.replace("%d",c)});u.version="1.12.1";u.settings=[];u.models={};u.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0,"return":!1}; +u.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};u.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null, +sWidth:null,sWidthOrig:null};u.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g, +this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){return{}}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+ +a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries", +sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:l.extend({},u.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};E(u.defaults); +u.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};E(u.defaults.column);u.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null, +bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[], +aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,jqXHR:null,json:q,oAjaxData:q,fnServerData:null,aoServerParams:[],sServerMethod:null, +fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==Q(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==Q(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+ +a,d=this.aiDisplay.length,e=this.oFeatures,h=e.bPaginate;return e.bServerSide?!1===h||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!h||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};u.ext=M={buttons:{},classes:{},build:"bs4/dt-1.12.1/r-2.3.0",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[], +search:{},order:{}},_unique:0,fnVersionCheck:u.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:u.version};l.extend(M,{afnFiltering:M.search,aTypes:M.type.detect,ofnSearch:M.type.search,oSort:M.type.order,afnSortData:M.order,aoFeatures:M.feature,oApi:M.internal,oStdClasses:M.classes,oPagination:M.pager});l.extend(u.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty", +sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_desc_disabled",sSortableDesc:"sorting_asc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner", +sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var ic=u.ext.pager;l.extend(ic,{simple:function(a,b){return["previous","next"]},full:function(a,b){return["first","previous","next","last"]},numbers:function(a,b){return[Ea(a,b)]},simple_numbers:function(a,b){return["previous", +Ea(a,b),"next"]},full_numbers:function(a,b){return["first","previous",Ea(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",Ea(a,b),"last"]},_numbers:Ea,numbers_length:7});l.extend(!0,u.ext.renderer,{pageButton:{_:function(a,b,c,d,e,h){var f=a.oClasses,g=a.oLanguage.oPaginate,k=a.oLanguage.oAria.paginate||{},m,n,p=0,t=function(x,w){var r,C=f.sPageButtonDisabled,G=function(I){Ta(a,I.data.action,!0)};var ba=0;for(r=w.length;ba").appendTo(x);t(O,L)}else{m=null;n=L;O=a.iTabIndex;switch(L){case "ellipsis":x.append('');break;case "first":m=g.sFirst;0===e&&(O=-1,n+=" "+C);break;case "previous":m=g.sPrevious;0===e&&(O=-1,n+=" "+C);break;case "next":m=g.sNext;if(0===h||e===h-1)O=-1,n+=" "+C;break;case "last":m=g.sLast;if(0===h||e===h-1)O=-1,n+=" "+C;break;default:m=a.fnFormatNumber(L+1),n=e===L?f.sPageButtonActive:""}null!==m&&(O=l("",{"class":f.sPageButton+" "+n,"aria-controls":a.sTableId, +"aria-label":k[L],"data-dt-idx":p,tabindex:O,id:0===c&&"string"===typeof L?a.sTableId+"_"+L:null}).html(m).appendTo(x),sb(O,{action:L},G),p++)}}};try{var v=l(b).find(A.activeElement).data("dt-idx")}catch(x){}t(l(b).empty(),d);v!==q&&l(b).find("[data-dt-idx="+v+"]").trigger("focus")}}});l.extend(u.ext.type.detect,[function(a,b){b=b.oLanguage.sDecimal;return yb(a,b)?"num"+b:null},function(a,b){if(a&&!(a instanceof Date)&&!Dc.test(a))return null;b=Date.parse(a);return null!==b&&!isNaN(b)||aa(a)?"date": +null},function(a,b){b=b.oLanguage.sDecimal;return yb(a,b,!0)?"num-fmt"+b:null},function(a,b){b=b.oLanguage.sDecimal;return pc(a,b)?"html-num"+b:null},function(a,b){b=b.oLanguage.sDecimal;return pc(a,b,!0)?"html-num-fmt"+b:null},function(a,b){return aa(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);l.extend(u.ext.type.search,{html:function(a){return aa(a)?a:"string"===typeof a?a.replace(mc," ").replace(Ya,""):""},string:function(a){return aa(a)?a:"string"===typeof a?a.replace(mc," "): +a}});var Xa=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=oc(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};l.extend(M.type.order,{"date-pre":function(a){a=Date.parse(a);return isNaN(a)?-Infinity:a},"html-pre":function(a){return aa(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return aa(a)?"":"string"===typeof a?a.toLowerCase():a.toString?a.toString():""},"string-asc":function(a,b){return ab?1:0},"string-desc":function(a, +b){return ab?-1:0}});bb("");l.extend(!0,u.ext.renderer,{header:{_:function(a,b,c,d){l(a.nTable).on("order.dt.DT",function(e,h,f,g){a===h&&(e=c.idx,b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass("asc"==g[e]?d.sSortAsc:"desc"==g[e]?d.sSortDesc:c.sSortingClass))})},jqueryui:function(a,b,c,d){l("
          ").addClass(d.sSortJUIWrapper).append(b.contents()).append(l("").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);l(a.nTable).on("order.dt.DT",function(e,h,f,g){a===h&&(e=c.idx, +b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass("asc"==g[e]?d.sSortAsc:"desc"==g[e]?d.sSortDesc:c.sSortingClass),b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass("asc"==g[e]?d.sSortJUIAsc:"desc"==g[e]?d.sSortJUIDesc:c.sSortingClassJUI))})}}});var $a=function(a){Array.isArray(a)&&(a=a.join(","));return"string"===typeof a?a.replace(/&/g,"&").replace(//g,">").replace(/"/g, +"""):a},kc=!1,zc=",",Ac=".";if(Intl)try{for(var Ha=(new Intl.NumberFormat).formatToParts(100000.1),ra=0;rah?"-":"",g=parseFloat(h);if(isNaN(g))return $a(h);g=g.toFixed(c);h=Math.abs(g);g=parseInt(h,10);h=c?b+(h-g).toFixed(c).substring(2):"";0===g&&0===parseFloat(h)&&(f="");return f+(d||"")+g.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+h+(e||"")}}},text:function(){return{display:$a,filter:$a}}}; +l.extend(u.ext.internal,{_fnExternApiFunc:lc,_fnBuildAjax:Qa,_fnAjaxUpdate:Kb,_fnAjaxParameters:Tb,_fnAjaxUpdateDraw:Ub,_fnAjaxDataSrc:za,_fnAddColumn:cb,_fnColumnOptions:Ia,_fnAdjustColumnSizing:sa,_fnVisibleToColumnIndex:ta,_fnColumnIndexToVisible:ua,_fnVisbleColumns:na,_fnGetColumns:Ka,_fnColumnTypes:eb,_fnApplyColumnDefs:Hb,_fnHungarianMap:E,_fnCamelToHungarian:P,_fnLanguageCompat:la,_fnBrowserDetect:Fb,_fnAddData:ia,_fnAddTr:La,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==q?b._DT_RowIndex: +null},_fnNodeToColumnIndex:function(a,b,c){return l.inArray(c,a.aoData[b].anCells)},_fnGetCellData:T,_fnSetCellData:Ib,_fnSplitObjNotation:hb,_fnGetObjectDataFn:ma,_fnSetObjectDataFn:ha,_fnGetDataMaster:ib,_fnClearTable:Ma,_fnDeleteIndex:Na,_fnInvalidate:va,_fnGetRowElements:gb,_fnCreateTr:fb,_fnBuildHead:Jb,_fnDrawHead:xa,_fnDraw:ja,_fnReDraw:ka,_fnAddOptionsHtml:Mb,_fnDetectHeader:wa,_fnGetUniqueThs:Pa,_fnFeatureHtmlFilter:Ob,_fnFilterComplete:ya,_fnFilterCustom:Xb,_fnFilterColumn:Wb,_fnFilter:Vb, +_fnFilterCreateSearch:nb,_fnEscapeRegex:ob,_fnFilterData:Yb,_fnFeatureHtmlInfo:Rb,_fnUpdateInfo:ac,_fnInfoMacros:bc,_fnInitialise:Aa,_fnInitComplete:Ra,_fnLengthChange:pb,_fnFeatureHtmlLength:Nb,_fnFeatureHtmlPaginate:Sb,_fnPageChange:Ta,_fnFeatureHtmlProcessing:Pb,_fnProcessingDisplay:V,_fnFeatureHtmlTable:Qb,_fnScrollDraw:Ja,_fnApplyToChildren:da,_fnCalculateColumnWidths:db,_fnThrottle:mb,_fnConvertToWidth:cc,_fnGetWidestNode:dc,_fnGetMaxLenString:ec,_fnStringToCss:K,_fnSortFlatten:oa,_fnSort:Lb, +_fnSortAria:gc,_fnSortListener:rb,_fnSortAttachListener:kb,_fnSortingClasses:Va,_fnSortData:fc,_fnSaveState:Da,_fnLoadState:hc,_fnImplementState:tb,_fnSettingsFromNode:Wa,_fnLog:ea,_fnMap:Y,_fnBindAction:sb,_fnCallbackReg:R,_fnCallbackFire:F,_fnLengthOverflow:qb,_fnRenderer:lb,_fnDataSource:Q,_fnRowAttributes:jb,_fnExtend:ub,_fnCalculateEnd:function(){}});l.fn.dataTable=u;u.$=l;l.fn.dataTableSettings=u.settings;l.fn.dataTableExt=u.ext;l.fn.DataTable=function(a){return l(this).dataTable(a).api()}; +l.each(u,function(a,b){l.fn.DataTable[a]=b});return u}); + + +/*! + DataTables Bootstrap 4 integration + ©2011-2017 SpryMedia Ltd - datatables.net/license +*/ +var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var e=a.length,d=0;d<'col-sm-12 col-md-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-12'p>>", +renderer:"bootstrap"});a.extend(d.ext.classes,{sWrapper:"dataTables_wrapper dt-bootstrap4",sFilterInput:"form-control form-control-sm",sLengthSelect:"custom-select custom-select-sm form-control form-control-sm",sProcessing:"dataTables_processing card",sPageButton:"paginate_button page-item"});d.ext.renderer.pageButton.bootstrap=function(f,l,A,B,m,t){var u=new d.Api(f),C=f.oClasses,n=f.oLanguage.oPaginate,D=f.oLanguage.oAria.paginate||{},h,k,v=0,y=function(q,w){var x,E=function(p){p.preventDefault(); +a(p.currentTarget).hasClass("disabled")||u.page()==p.data.action||u.page(p.data.action).draw("page")};var r=0;for(x=w.length;r",{"class":C.sPageButton+" "+k,id:0===A&&"string"===typeof g?f.sTableId+"_"+g:null}).append(a("",{href:"#","aria-controls":f.sTableId,"aria-label":D[g],"data-dt-idx":v,tabindex:f.iTabIndex,"class":"page-link"}).html(h)).appendTo(q);f.oApi._fnBindAction(F,{action:g},E);v++}}}};try{var z=a(l).find(c.activeElement).data("dt-idx")}catch(q){}y(a(l).empty().html('
            ').children("ul"),B);z!==e&&a(l).find("[data-dt-idx="+z+"]").trigger("focus")};return d}); + + +/*! + SpryMedia Ltd. + + This source file is free software, available under the following license: + MIT license - http://datatables.net/license/mit + + This source file is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. + + For details please refer to: http://www.datatables.net + Responsive 2.3.0 + 2014-2022 SpryMedia Ltd - datatables.net/license +*/ +var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(b,k,m){b instanceof String&&(b=String(b));for(var n=b.length,p=0;ptd, >th", +f).each(function(e){e=c.column.index("toData",e);!1===a.s.current[e]&&b(this).css("display","none")})});c.on("destroy.dtr",function(){c.off(".dtr");b(c.table().body()).off(".dtr");b(k).off("resize.dtr orientationchange.dtr");c.cells(".dtr-control").nodes().to$().removeClass("dtr-control");b.each(a.s.current,function(f,l){!1===l&&a._setColumnVis(f,!0)})});this.c.breakpoints.sort(function(f,l){return f.widthl.width?-1:0});this._classLogic();this._resizeAuto();d=this.c.details;!1!== +d.type&&(a._detailsInit(),c.on("column-visibility.dtr",function(){a._timer&&clearTimeout(a._timer);a._timer=setTimeout(function(){a._timer=null;a._classLogic();a._resizeAuto();a._resize(!0);a._redrawChildren()},100)}),c.on("draw.dtr",function(){a._redrawChildren()}),b(c.table().node()).addClass("dtr-"+d.type));c.on("column-reorder.dtr",function(f,l,h){a._classLogic();a._resizeAuto();a._resize(!0)});c.on("column-sizing.dtr",function(){a._resizeAuto();a._resize()});c.on("column-calc.dt",function(f, +l){f=a.s.current;for(var h=0;hh-d[q].minWidth?(r=!0,l[q]=!1):l[q]=!0,h-=d[q].minWidth)}f=!1;e=0;for(g=d.length;e=q&&f(h,c[e].name);else if("not-"===r)for(e=0,r=c.length;eg?c.columns().eq(0).length+ +g:g;if(c.cell(this).index().column!==l)return}l=c.row(b(this).closest("tr"));"click"===f.type?a._detailsDisplay(l,!1):"mousedown"===f.type?b(this).css("outline","none"):"mouseup"===f.type&&b(this).trigger("blur").css("outline","")}})},_detailsObj:function(a){var c=this,d=this.s.dt;return b.map(this.s.columns,function(g,f){if(!g.never&&!g.control)return g=d.settings()[0].aoColumns[f],{className:g.sClass,columnIndex:f,data:d.cell(a,f).render(c.c.orthogonal),hidden:d.column(f).visible()&&!c.s.current[f], +rowIndex:a,title:null!==g.sTitle?g.sTitle:b(d.column(f).header()).text()}})},_find:function(a){for(var c=this.c.breakpoints,d=0,g=c.length;d").append(h).appendTo(f)}b("
          ").append(l).appendTo(g);"inline"===this.c.details.type&&b(d).addClass("dtr-inline collapsed");b(d).find("[name]").removeAttr("name");b(d).css("position", +"relative");d=b("
          ").css({width:1,height:1,overflow:"hidden",clear:"both"}).append(d);d.insertBefore(a.table().node());l.each(function(e){e=a.column.index("fromVisible",e);c[e].minWidth=this.offsetWidth||0});d.remove()}},_responsiveOnlyHidden:function(){var a=this.s.dt;return b.map(this.s.current,function(c,d){return!1===a.column(d).visible()?!0:c})},_setColumnVis:function(a,c){var d=this.s.dt,g=c?"":"none";b(d.column(a).header()).css("display",g).toggleClass("dtr-hidden",!c);b(d.column(a).footer()).css("display", +g).toggleClass("dtr-hidden",!c);d.column(a).nodes().to$().css("display",g).toggleClass("dtr-hidden",!c);b.isEmptyObject(A)||d.cells(null,a).indexes().each(function(f){y(d,f.row,f.column)})},_tabIndexes:function(){var a=this.s.dt,c=a.cells({page:"current"}).nodes().to$(),d=a.settings()[0],g=this.c.details.target;c.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]");"number"===typeof g?a.cells(null,g,{page:"current"}).nodes().to$().attr("tabIndex",d.iTabIndex).data("dtr-keyboard",1):("td:first-child, th:first-child"=== +g&&(g=">td:first-child, >th:first-child"),b(g,a.rows({page:"current"}).nodes()).attr("tabIndex",d.iTabIndex).data("dtr-keyboard",1))}});u.breakpoints=[{name:"desktop",width:Infinity},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}];u.display={childRow:function(a,c,d){if(c){if(b(a.node()).hasClass("parent"))return a.child(d(),"child").show(),!0}else{if(a.child.isShown())return a.child(!1),b(a.node()).removeClass("parent"),!1;a.child(d(), +"child").show();b(a.node()).addClass("parent");return!0}},childRowImmediate:function(a,c,d){if(!c&&a.child.isShown()||!a.responsive.hasHidden())return a.child(!1),b(a.node()).removeClass("parent"),!1;a.child(d(),"child").show();b(a.node()).addClass("parent");return!0},modal:function(a){return function(c,d,g){if(d)b("div.dtr-modal-content").empty().append(g());else{var f=function(){l.remove();b(m).off("keypress.dtr")},l=b('
          ').append(b('
          ').append(b('
          ').append(g())).append(b('
          ×
          ').click(function(){f()}))).append(b('
          ').click(function(){f()})).appendTo("body"); +b(m).on("keyup.dtr",function(h){27===h.keyCode&&(h.stopPropagation(),f())})}a&&a.header&&b("div.dtr-modal-content").prepend("

          "+a.header(c)+"

          ")}}};var A={};u.renderer={listHiddenNodes:function(){return function(a,c,d){var g=b('
            '),f=!1;b.each(d,function(l,h){h.hidden&&(b("
          • '+ +h.title+"
          • ").append(b('').append(p(a,h.rowIndex,h.columnIndex))).appendTo(g),f=!0)});return f?g:!1}},listHidden:function(){return function(a,c,d){return(a=b.map(d,function(g){var f=g.className?'class="'+g.className+'"':"";return g.hidden?"
          • '+g.title+' '+g.data+"
          • ":""}).join(""))?b('
              ').append(a):!1}},tableAll:function(a){a=b.extend({tableClass:""},a);return function(c,d,g){c=b.map(g,function(f){return"
          "}).join("");return b('
          ",{valign:"top",colSpan:na(a),"class":a.oClasses.sRowEmpty}).html(e))[0];F(a,"aoHeaderCallback","header",[l(a.nTHead).children("tr")[0], +ib(a),m,n,k]);F(a,"aoFooterCallback","footer",[l(a.nTFoot).children("tr")[0],ib(a),m,n,k]);d=l(a.nTBody);d.children().detach();d.append(l(c));F(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function ka(a,b){var c=a.oFeatures,d=c.bFilter;c.bSort&&Lb(a);d?ya(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;ja(a);a._drawHold=!1}function Mb(a){var b=a.oClasses,c=l(a.nTable);c=l("
          ").insertBefore(c);var d=a.oFeatures, +e=l("
          ",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var h=a.sDom.split(""),f,g,k,m,n,p,t=0;t")[0];m=h[t+1];if("'"==m||'"'==m){n="";for(p=2;h[t+p]!=m;)n+=h[t+p],p++;"H"==n?n=b.sJUIHeader:"F"==n&&(n=b.sJUIFooter);-1!=n.indexOf(".")?(m=n.split("."),k.id=m[0].substr(1,m[0].length-1),k.className=m[1]):"#"==n.charAt(0)?k.id=n.substr(1, +n.length-1):k.className=n;t+=p}e.append(k);e=l(k)}else if(">"==g)e=e.parent();else if("l"==g&&d.bPaginate&&d.bLengthChange)f=Nb(a);else if("f"==g&&d.bFilter)f=Ob(a);else if("r"==g&&d.bProcessing)f=Pb(a);else if("t"==g)f=Qb(a);else if("i"==g&&d.bInfo)f=Rb(a);else if("p"==g&&d.bPaginate)f=Sb(a);else if(0!==u.ext.feature.length)for(k=u.ext.feature,p=0,m=k.length;p',g=d.sSearch;g=g.match(/_INPUT_/)?g.replace("_INPUT_",f):g+f;b=l("
          ",{id:h.f?null:c+"_filter","class":b.sFilter}).append(l("
          ").addClass(b.sLength);a.aanFeatures.l||(k[0].id=c+"_length");k.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));l("select",k).val(a._iDisplayLength).on("change.DT",function(m){pb(a,l(this).val());ja(a)});l(a.nTable).on("length.dt.DT",function(m,n,p){a===n&&l("select",k).val(p)});return k[0]}function Sb(a){var b=a.sPaginationType,c=u.ext.pager[b],d="function"===typeof c,e=function(f){ja(f)};b=l("
          ").addClass(a.oClasses.sPaging+ +b)[0];var h=a.aanFeatures;d||c.fnInit(a,b,e);h.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(f){if(d){var g=f._iDisplayStart,k=f._iDisplayLength,m=f.fnRecordsDisplay(),n=-1===k;g=n?0:Math.ceil(g/k);k=n?1:Math.ceil(m/k);m=c(g,k);var p;n=0;for(p=h.p.length;nh&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e",{id:a.aanFeatures.r?null:a.sTableId+"_processing","class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).append("
          ").insertBefore(a.nTable)[0]}function V(a, +b){a.oFeatures.bProcessing&&l(a.aanFeatures.r).css("display",b?"block":"none");F(a,null,"processing",[a,b])}function Qb(a){var b=l(a.nTable),c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,h=a.oClasses,f=b.children("caption"),g=f.length?f[0]._captionSide:null,k=l(b[0].cloneNode(!1)),m=l(b[0].cloneNode(!1)),n=b.children("tfoot");n.length||(n=null);k=l("
          ",{"class":h.sScrollWrapper}).append(l("
          ",{"class":h.sScrollHead}).css({overflow:"hidden",position:"relative",border:0, +width:d?d?K(d):null:"100%"}).append(l("
          ",{"class":h.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(k.removeAttr("id").css("margin-left",0).append("top"===g?f:null).append(b.children("thead"))))).append(l("
          ",{"class":h.sScrollBody}).css({position:"relative",overflow:"auto",width:d?K(d):null}).append(b));n&&k.append(l("
          ",{"class":h.sScrollFoot}).css({overflow:"hidden",border:0,width:d?d?K(d):null:"100%"}).append(l("
          ",{"class":h.sScrollFootInner}).append(m.removeAttr("id").css("margin-left", +0).append("bottom"===g?f:null).append(b.children("tfoot")))));b=k.children();var p=b[0];h=b[1];var t=n?b[2]:null;if(d)l(h).on("scroll.DT",function(v){v=this.scrollLeft;p.scrollLeft=v;n&&(t.scrollLeft=v)});l(h).css("max-height",e);c.bCollapse||l(h).css("height",e);a.nScrollHead=p;a.nScrollBody=h;a.nScrollFoot=t;a.aoDrawCallback.push({fn:Ja,sName:"scrolling"});return k[0]}function Ja(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY;b=b.iBarWidth;var h=l(a.nScrollHead),f=h[0].style,g=h.children("div"),k= +g[0].style,m=g.children("table");g=a.nScrollBody;var n=l(g),p=g.style,t=l(a.nScrollFoot).children("div"),v=t.children("table"),x=l(a.nTHead),w=l(a.nTable),r=w[0],C=r.style,G=a.nTFoot?l(a.nTFoot):null,ba=a.oBrowser,L=ba.bScrollOversize;U(a.aoColumns,"nTh");var O=[],I=[],H=[],fa=[],Z,Ba=function(D){D=D.style;D.paddingTop="0";D.paddingBottom="0";D.borderTopWidth="0";D.borderBottomWidth="0";D.height=0};var X=g.scrollHeight>g.clientHeight;if(a.scrollBarVis!==X&&a.scrollBarVis!==q)a.scrollBarVis=X,sa(a); +else{a.scrollBarVis=X;w.children("thead, tfoot").remove();if(G){X=G.clone().prependTo(w);var ca=G.find("tr");var Ca=X.find("tr");X.find("[id]").removeAttr("id")}var Ua=x.clone().prependTo(w);x=x.find("tr");X=Ua.find("tr");Ua.find("th, td").removeAttr("tabindex");Ua.find("[id]").removeAttr("id");c||(p.width="100%",h[0].style.width="100%");l.each(Pa(a,Ua),function(D,W){Z=ta(a,D);W.style.width=a.aoColumns[Z].sWidth});G&&da(function(D){D.style.width=""},Ca);h=w.outerWidth();""===c?(C.width="100%",L&& +(w.find("tbody").height()>g.offsetHeight||"scroll"==n.css("overflow-y"))&&(C.width=K(w.outerWidth()-b)),h=w.outerWidth()):""!==d&&(C.width=K(d),h=w.outerWidth());da(Ba,X);da(function(D){var W=y.getComputedStyle?y.getComputedStyle(D).width:K(l(D).width());H.push(D.innerHTML);O.push(W)},X);da(function(D,W){D.style.width=O[W]},x);l(X).css("height",0);G&&(da(Ba,Ca),da(function(D){fa.push(D.innerHTML);I.push(K(l(D).css("width")))},Ca),da(function(D,W){D.style.width=I[W]},ca),l(Ca).height(0));da(function(D, +W){D.innerHTML='
          '+H[W]+"
          ";D.childNodes[0].style.height="0";D.childNodes[0].style.overflow="hidden";D.style.width=O[W]},X);G&&da(function(D,W){D.innerHTML='
          '+fa[W]+"
          ";D.childNodes[0].style.height="0";D.childNodes[0].style.overflow="hidden";D.style.width=I[W]},Ca);Math.round(w.outerWidth())g.offsetHeight||"scroll"==n.css("overflow-y")?h+b:h,L&&(g.scrollHeight>g.offsetHeight||"scroll"==n.css("overflow-y"))&& +(C.width=K(ca-b)),""!==c&&""===d||ea(a,1,"Possible column misalignment",6)):ca="100%";p.width=K(ca);f.width=K(ca);G&&(a.nScrollFoot.style.width=K(ca));!e&&L&&(p.height=K(r.offsetHeight+b));c=w.outerWidth();m[0].style.width=K(c);k.width=K(c);d=w.height()>g.clientHeight||"scroll"==n.css("overflow-y");e="padding"+(ba.bScrollbarLeft?"Left":"Right");k[e]=d?b+"px":"0px";G&&(v[0].style.width=K(c),t[0].style.width=K(c),t[0].style[e]=d?b+"px":"0px");w.children("colgroup").insertBefore(w.children("thead")); +n.trigger("scroll");!a.bSorted&&!a.bFiltered||a._drawHold||(g.scrollTop=0)}}function da(a,b,c){for(var d=0,e=0,h=b.length,f,g;e").appendTo(g.find("tbody"));g.find("thead, tfoot").remove();g.append(l(a.nTHead).clone()).append(l(a.nTFoot).clone());g.find("tfoot th, tfoot td").css("width","");m=Pa(a,g.find("thead")[0]); +for(v=0;v").css({width:w.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(v=0;v").css(h||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(g).appendTo(p);h&&f?g.width(f):h? +(g.css("width","auto"),g.removeAttr("width"),g.width()").css("width",K(a)).appendTo(b||A.body);b=a[0].offsetWidth;a.remove();return b}function dc(a,b){var c=ec(a,b);if(0>c)return null;var d=a.aoData[c];return d.nTr?d.anCells[b]:l("
          ").html(T(a,c,b,"display"))[0]}function ec(a,b){for(var c,d=-1,e=-1,h=0,f=a.aoData.length;hd&&(d=c.length,e=h);return e}function K(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function oa(a){var b= +[],c=a.aoColumns;var d=a.aaSortingFixed;var e=l.isPlainObject(d);var h=[];var f=function(n){n.length&&!Array.isArray(n[0])?h.push(n):l.merge(h,n)};Array.isArray(d)&&f(d);e&&d.pre&&f(d.pre);f(a.aaSorting);e&&d.post&&f(d.post);for(a=0;aG?1:0;if(0!==C)return"asc"===r.dir?C:-C}C=c[n];G=c[p];return CG?1:0}):f.sort(function(n,p){var t,v=g.length, +x=e[n]._aSortData,w=e[p]._aSortData;for(t=0;tG?1:0})}a.bSorted=!0}function gc(a){var b=a.aoColumns,c=oa(a);a=a.oLanguage.oAria;for(var d=0,e=b.length;d/g,"");var k=h.nTh;k.removeAttribute("aria-sort");h.bSortable&&(0e?e+1:3))}e=0;for(h=d.length;ee?e+1:3))}a.aLastSort=d}function fc(a,b){var c=a.aoColumns[b],d=u.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,ua(a,b)));for(var h,f=u.ext.type.order[c.sType+"-pre"],g=0,k=a.aoData.length;g=e.length?[0,m[1]]:m)}));b.search!==q&&l.extend(a.oPreviousSearch,$b(b.search));if(b.columns){f=0;for(d=b.columns.length;f=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function lb(a,b){a=a.renderer;var c=u.ext.renderer[b]; +return l.isPlainObject(a)&&a[b]?c[a[b]]||c._:"string"===typeof a?c[a]||c._:c._}function Q(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Ea(a,b){var c=ic.numbers_length,d=Math.floor(c/2);b<=c?a=pa(0,b):a<=d?(a=pa(0,c-2),a.push("ellipsis"),a.push(b-1)):(a>=b-1-d?a=pa(b-(c-2),b):(a=pa(a-d+2,a+d-1),a.push("ellipsis"),a.push(b-1)),a.splice(0,0,"ellipsis"),a.splice(0,0,0));a.DT_el="span";return a}function bb(a){l.each({num:function(b){return Xa(b,a)},"num-fmt":function(b){return Xa(b, +a,vb)},"html-num":function(b){return Xa(b,a,Ya)},"html-num-fmt":function(b){return Xa(b,a,Ya,vb)}},function(b,c){M.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(M.type.search[b+a]=M.type.search.html)})}function jc(a,b,c,d,e){return y.moment?a[b](e):y.luxon?a[c](e):d?a[d](e):a}function Za(a,b,c){if(y.moment){var d=y.moment.utc(a,b,c,!0);if(!d.isValid())return null}else if(y.luxon){d=b?y.luxon.DateTime.fromFormat(a,b):y.luxon.DateTime.fromISO(a);if(!d.isValid)return null;d.setLocale(c)}else b?(kc|| +alert("DataTables warning: Formatted date without Moment.js or Luxon - https://datatables.net/tn/17"),kc=!0):d=new Date(a);return d}function wb(a){return function(b,c,d,e){0===arguments.length?(d="en",b=c=null):1===arguments.length?(d="en",c=b,b=null):2===arguments.length&&(d=c,c=b,b=null);var h="datetime-"+c;u.ext.type.order[h]||(u.ext.type.detect.unshift(function(f){return f===h?h:!1}),u.ext.type.order[h+"-asc"]=function(f,g){f=f.valueOf();g=g.valueOf();return f===g?0:fg?-1:1});return function(f,g){if(null===f||f===q)"--now"===e?(f=new Date,f=new Date(Date.UTC(f.getFullYear(),f.getMonth(),f.getDate(),f.getHours(),f.getMinutes(),f.getSeconds()))):f="";if("type"===g)return h;if(""===f)return"sort"!==g?"":Za("0000-01-01 00:00:00",null,d);if(null!==c&&b===c&&"sort"!==g&&"type"!==g&&!(f instanceof Date))return f;var k=Za(f,b,d);if(null===k)return f;if("sort"===g)return k;f=null===c?jc(k,"toDate","toJSDate", +"")[a]():jc(k,"format","toFormat","toISOString",c);return"display"===g?$a(f):f}}}function lc(a){return function(){var b=[Wa(this[u.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return u.ext.internal[a].apply(this,b)}}var u=function(a,b){if(this instanceof u)return l(a).DataTable(b);b=a;this.$=function(f,g){return this.api(!0).$(f,g)};this._=function(f,g){return this.api(!0).rows(f,g).data()};this.api=function(f){return f?new B(Wa(this[M.iApiIndex])):new B(this)};this.fnAddData=function(f, +g){var k=this.api(!0);f=Array.isArray(f)&&(Array.isArray(f[0])||l.isPlainObject(f[0]))?k.rows.add(f):k.row.add(f);(g===q||g)&&k.draw();return f.flatten().toArray()};this.fnAdjustColumnSizing=function(f){var g=this.api(!0).columns.adjust(),k=g.settings()[0],m=k.oScroll;f===q||f?g.draw(!1):(""!==m.sX||""!==m.sY)&&Ja(k)};this.fnClearTable=function(f){var g=this.api(!0).clear();(f===q||f)&&g.draw()};this.fnClose=function(f){this.api(!0).row(f).child.hide()};this.fnDeleteRow=function(f,g,k){var m=this.api(!0); +f=m.rows(f);var n=f.settings()[0],p=n.aoData[f[0][0]];f.remove();g&&g.call(this,n,p);(k===q||k)&&m.draw();return p};this.fnDestroy=function(f){this.api(!0).destroy(f)};this.fnDraw=function(f){this.api(!0).draw(f)};this.fnFilter=function(f,g,k,m,n,p){n=this.api(!0);null===g||g===q?n.search(f,k,m,p):n.column(g).search(f,k,m,p);n.draw()};this.fnGetData=function(f,g){var k=this.api(!0);if(f!==q){var m=f.nodeName?f.nodeName.toLowerCase():"";return g!==q||"td"==m||"th"==m?k.cell(f,g).data():k.row(f).data()|| +null}return k.data().toArray()};this.fnGetNodes=function(f){var g=this.api(!0);return f!==q?g.row(f).node():g.rows().nodes().flatten().toArray()};this.fnGetPosition=function(f){var g=this.api(!0),k=f.nodeName.toUpperCase();return"TR"==k?g.row(f).index():"TD"==k||"TH"==k?(f=g.cell(f).index(),[f.row,f.columnVisible,f.column]):null};this.fnIsOpen=function(f){return this.api(!0).row(f).child.isShown()};this.fnOpen=function(f,g,k){return this.api(!0).row(f).child(g,k).show().child()[0]};this.fnPageChange= +function(f,g){f=this.api(!0).page(f);(g===q||g)&&f.draw(!1)};this.fnSetColumnVis=function(f,g,k){f=this.api(!0).column(f).visible(g);(k===q||k)&&f.columns.adjust().draw()};this.fnSettings=function(){return Wa(this[M.iApiIndex])};this.fnSort=function(f){this.api(!0).order(f).draw()};this.fnSortListener=function(f,g,k){this.api(!0).order.listener(f,g,k)};this.fnUpdate=function(f,g,k,m,n){var p=this.api(!0);k===q||null===k?p.row(g).data(f):p.cell(g,k).data(f);(n===q||n)&&p.columns.adjust();(m===q||m)&& +p.draw();return 0};this.fnVersionCheck=M.fnVersionCheck;var c=this,d=b===q,e=this.length;d&&(b={});this.oApi=this.internal=M.internal;for(var h in u.ext.internal)h&&(this[h]=lc(h));this.each(function(){var f={},g=1").appendTo(t));r.nTHead=H[0];var fa=t.children("tbody");0===fa.length&&(fa=l("
          '+f.title+": "+f.data+"
          ').append(c)}}};u.defaults={breakpoints:u.breakpoints,auto:!0,details:{display:u.display.childRow,renderer:u.renderer.listHidden(), +target:0,type:"inline"},orthogonal:"display"};var C=b.fn.dataTable.Api;C.register("responsive()",function(){return this});C.register("responsive.index()",function(a){a=b(a);return{column:a.data("dtr-index"),row:a.parent().data("dtr-index")}});C.register("responsive.rebuild()",function(){return this.iterator("table",function(a){a._responsive&&a._responsive._classLogic()})});C.register("responsive.recalc()",function(){return this.iterator("table",function(a){a._responsive&&(a._responsive._resizeAuto(), +a._responsive._resize())})});C.register("responsive.hasHidden()",function(){var a=this.context[0];return a._responsive?-1!==b.inArray(!1,a._responsive._responsiveOnlyHidden()):!1});C.registerPlural("columns().responsiveHidden()","column().responsiveHidden()",function(){return this.iterator("column",function(a,c){return a._responsive?a._responsive._responsiveOnlyHidden()[c]:!1},1)});u.version="2.3.0";b.fn.dataTable.Responsive=u;b.fn.DataTable.Responsive=u;b(m).on("preInit.dt.dtr",function(a,c,d){"dt"=== +a.namespace&&(b(c.nTable).hasClass("responsive")||b(c.nTable).hasClass("dt-responsive")||c.oInit.responsive||z.defaults.responsive)&&(a=c.oInit.responsive,!1!==a&&new u(c,b.isPlainObject(a)?a:{}))});return u}); + + +/*! Bootstrap 4 integration for DataTables' Responsive + * ©2016 SpryMedia Ltd - datatables.net/license + */ + +(function( factory ){ + if ( typeof define === 'function' && define.amd ) { + // AMD + define( ['jquery', 'datatables.net-bs4', 'datatables.net-responsive'], function ( $ ) { + return factory( $, window, document ); + } ); + } + else if ( typeof exports === 'object' ) { + // CommonJS + module.exports = function (root, $) { + if ( ! root ) { + root = window; + } + + if ( ! $ || ! $.fn.dataTable ) { + $ = require('datatables.net-bs4')(root, $).$; + } + + if ( ! $.fn.dataTable.Responsive ) { + require('datatables.net-responsive')(root, $); + } + + return factory( $, root, root.document ); + }; + } + else { + // Browser + factory( jQuery, window, document ); + } +}(function( $, window, document, undefined ) { +'use strict'; +var DataTable = $.fn.dataTable; + + +var _display = DataTable.Responsive.display; +var _original = _display.modal; +var _modal = $( + '
          ","
          "],col:[2,"","
          "],tr:[2,"","
          "],td:[3,"","
          "],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b), +null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(" + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/kafalaty_notification.html b/odex25_takaful/takaful_website_template/kafalaty_notification.html new file mode 100644 index 000000000..726bfed6b --- /dev/null +++ b/odex25_takaful/takaful_website_template/kafalaty_notification.html @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + +
          +
          +

          الاعدادات

          + +
          +
          + +
          +
          +
          +
          +
          اعدادات شهادات كفالاتى
          +
          + + +
          +
          + + +
          +
          + + +
          +
          +
          +
          +
          + +
          + +
          +
          +
          +
          +
          + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/late_payments.html b/odex25_takaful/takaful_website_template/late_payments.html new file mode 100644 index 000000000..3826cc83a --- /dev/null +++ b/odex25_takaful/takaful_website_template/late_payments.html @@ -0,0 +1,395 @@ + + + + + + + + Home Page | الصفحة الرئيسية + + + + + + + + + + + + + +
          +
          +

          السجل المالي

          + + + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          الرقمالاسمرقم الكفالة نوع المستفيد تاريخ بدء لكفالة قيمة الكفالة مدة التأخير
          4أحمد عبد الله محمد2564830يتيم 22/10/2022350 ر.س 20 يوم + +
          4أحمد عبد الله محمد2564830يتيم 22/10/2022350 ر.س 20 يوم + +
          4أحمد عبد الله محمد2564830يتيم 22/10/2022350 ر.س 20 يوم + +
          4أحمد عبد الله محمد2564830يتيم 22/10/2022350 ر.س 20 يوم + +
          +
          +
          +
          + + + + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/makfoul_details.html b/odex25_takaful/takaful_website_template/makfoul_details.html new file mode 100644 index 000000000..ee4bf2fa1 --- /dev/null +++ b/odex25_takaful/takaful_website_template/makfoul_details.html @@ -0,0 +1,304 @@ + + + + + + + + Home Page | الصفحة الرئيسية + + + + + + + + + + + + + +
          +
          +

          كفالاتي

          + +
          +
          +
          +
          +
          +
          + document + بيانات المكفول +
          +
          +
            +
          • +
            الاسم
            + احمد عبدالله محمد +
          • +
          • +
            الجنس
            + ذكر +
          • +
          • +
            السن
            + 10 +
          • +
          • +
            المدينة
            + الرياض +
          • +
          • +
            رقم اليتيم
            + 510 +
          • +
          • +
            نوع الحالة
            + يتيم الابوين +
          • +
          + +
          + +
          +
          +
          + file + بيانات شخصية و إجتماعية +
          +
          +
            +
          • +
            العائل الحالي
            + الأخ +
          • +
          • +
            حالة السكن
            + ايجار +
          • +
          • +
            التعليم
            + جيد +
          • +
          • +
            المرحلة الدراسية
            + الابتدائية +
          • +
          • +
            رقم اليتيم
            + 510 +
          • +
          • +
            نوع الحالة
            + يتيم الابوين +
          • +
          + +
          + +
          +
          +
          +
          +
          + document + بيانات المكفول +
          +
          +
            +
          • +
            الاسم
            + احمد عبدالله محمد +
          • +
          • +
            الجنس
            + ذكر +
          • +
          • +
            السن
            + 10 +
          • +
          • +
            المدينة
            + الرياض +
          • +
          • +
            رقم اليتيم
            + 510 +
          • +
          • +
            نوع الحالة
            + يتيم الابوين +
          • +
          + +
          + +
          +
          +
          + file + بيانات شخصية و إجتماعية +
          +
          +
            +
          • +
            العائل الحالي
            + الأخ +
          • +
          • +
            حالة السكن
            + ايجار +
          • +
          • +
            التعليم
            + جيد +
          • +
          • +
            المرحلة الدراسية
            + الابتدائية +
          • +
          • +
            رقم اليتيم
            + 510 +
          • +
          • +
            نوع الحالة
            + يتيم الابوين +
          • +
          + +
          + +
          +
          +
          + +
          +
          +
          +
          + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/my_guarantees.html b/odex25_takaful/takaful_website_template/my_guarantees.html new file mode 100644 index 000000000..8992cd523 --- /dev/null +++ b/odex25_takaful/takaful_website_template/my_guarantees.html @@ -0,0 +1,538 @@ + + + + + + + + Home Page | الصفحة الرئيسية + + + + + + + + + + + + + +
          +
          +

          بوابة الكافل

          + + + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          الرقمالاسمالجنسالسنالمدينةنوع الحالة نسبة الاحتياجمتأخرات مالية تاريخ بدء الكفالة حالة الكفالة
          2أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 سارية
          3أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 ملغية
          4أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 بحاجة للتجديد
          5أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022سارية
          1أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022سارية
          2أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 سارية
          3أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 ملغية
          4أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 بحاجة للتجديد
          5أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022سارية
          1أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022سارية
          2أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 سارية
          3أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 ملغية
          4أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 بحاجة للتجديد
          5أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022سارية
          1أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022سارية
          +
          +
          +
          + + + + + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/need_kafala.html b/odex25_takaful/takaful_website_template/need_kafala.html new file mode 100644 index 000000000..666a0b9ed --- /dev/null +++ b/odex25_takaful/takaful_website_template/need_kafala.html @@ -0,0 +1,395 @@ + + + + + + + + Home Page | الصفحة الرئيسية + + + + + + + + + + + + + +
          +
          +

          بوابة الكافل

          + + + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          الرقمالاسمالجنسالسنالمدينةنوع المستفيد نسبة الاحتياج
          4أحمد عبد الله محمدذكر26الرياضالرياضيتيم + +
          4أحمد عبد الله محمدذكر26الرياضالرياضيتيم + +
          4أحمد عبد الله محمدذكر26الرياضالرياضيتيم + +
          4أحمد عبد الله محمدذكر26الرياضالرياضيتيم + +
          +
          +
          +
          + + + + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/need_kafala_details.html b/odex25_takaful/takaful_website_template/need_kafala_details.html new file mode 100644 index 000000000..9ecb48bc3 --- /dev/null +++ b/odex25_takaful/takaful_website_template/need_kafala_details.html @@ -0,0 +1,477 @@ + + + + + + + + Home Page | الصفحة الرئيسية + + + + + + + + + + + + + +
          +
          +

          بحاجة الى كفالة

          + +
          +
          +
          +
          +
          +
          + document + بيانات اليتيم +
          +
          +
            +
          • +
            الاسم
            + احمد عبدالله محمد +
          • +
          • +
            الجنس
            + ذكر +
          • +
          • +
            السن
            + 10 +
          • +
          • +
            المدينة
            + الرياض +
          • +
          • +
            رقم اليتيم
            + 510 +
          • +
          • +
            نوع الحالة
            + يتيم الابوين +
          • +
          + +
          + +
          +
          +
          + file + بيانات شخصية و إجتماعية +
          +
          +
            +
          • +
            العائل الحالي
            + الأخ +
          • +
          • +
            حالة السكن
            + ايجار +
          • +
          • +
            التعليم
            + جيد +
          • +
          • +
            المرحلة الدراسية
            + الابتدائية +
          • +
          • +
            رقم اليتيم
            + 510 +
          • +
          • +
            نوع الحالة
            + يتيم الابوين +
          • +
          + +
          + +
          +
          +
          +
          +
          + document + بيانات المكفول +
          +
          +
            +
          • +
            الاسم
            + احمد عبدالله محمد +
          • +
          • +
            الجنس
            + ذكر +
          • +
          • +
            السن
            + 10 +
          • +
          • +
            المدينة
            + الرياض +
          • +
          • +
            رقم اليتيم
            + 510 +
          • +
          • +
            نوع الحالة
            + يتيم الابوين +
          • +
          + +
          + +
          + +
          +
          + +
          +
          +
          +
          + + + + + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/notification_setting.html b/odex25_takaful/takaful_website_template/notification_setting.html new file mode 100644 index 000000000..ac7482cfe --- /dev/null +++ b/odex25_takaful/takaful_website_template/notification_setting.html @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + +
          +
          +

          الاعدادات

          + +
          +
          + +
          +
          +
          +
          +
          التنبيهات الشهرية
          +
          + + +
          +
          + + +
          +
          +
          +
          +
          +
          يوم التنبيه من كل شهر
          +
          + +
          +
          +
          +
          +
          +
          التذكير بإقتراب موعد سداد الكفالة
          +
          + + +
          +
          + + +
          +
          +
          +
          +
          + +
          + +
          +
          +
          +
          +
          + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/notifications.html b/odex25_takaful/takaful_website_template/notifications.html new file mode 100644 index 000000000..ac7482cfe --- /dev/null +++ b/odex25_takaful/takaful_website_template/notifications.html @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + +
          +
          +

          الاعدادات

          + +
          +
          + +
          +
          +
          +
          +
          التنبيهات الشهرية
          +
          + + +
          +
          + + +
          +
          +
          +
          +
          +
          يوم التنبيه من كل شهر
          +
          + +
          +
          +
          +
          +
          +
          التذكير بإقتراب موعد سداد الكفالة
          +
          + + +
          +
          + + +
          +
          +
          +
          +
          + +
          + +
          +
          +
          +
          +
          + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/orphan_needs.html b/odex25_takaful/takaful_website_template/orphan_needs.html new file mode 100644 index 000000000..a32f5665b --- /dev/null +++ b/odex25_takaful/takaful_website_template/orphan_needs.html @@ -0,0 +1,395 @@ + + + + + + + + Home Page | الصفحة الرئيسية + + + + + + + + + + + + + +
          +
          +

          بوابة الكافل

          + + + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          الرقمالاسمالجنسالسنالمدينةنوع المستفيد نسبة الاحتياج
          4أحمد عبد الله محمدذكر26الرياضالرياضيتيم + +
          4أحمد عبد الله محمدذكر26الرياضالرياضيتيم + +
          4أحمد عبد الله محمدذكر26الرياضالرياضيتيم + +
          4أحمد عبد الله محمدذكر26الرياضالرياضيتيم + +
          +
          +
          +
          + + + + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/payments.html b/odex25_takaful/takaful_website_template/payments.html new file mode 100644 index 000000000..3c5520e2d --- /dev/null +++ b/odex25_takaful/takaful_website_template/payments.html @@ -0,0 +1,391 @@ + + + + + + + + Home Page | الصفحة الرئيسية + + + + + + + + + + + + + +
          +
          +

          السجل المالي

          + + + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          الرقمالاسمرقم الكفالة نوع المستفيد تاريخ بدء لكفالة قيمة الكفالة مدة التأخير
          4أحمد عبد الله محمد2564830يتيم 22/10/2022350 ر.س 20 يوم + +
          4أحمد عبد الله محمد2564830يتيم 22/10/2022350 ر.س 20 يوم + +
          4أحمد عبد الله محمد2564830يتيم 22/10/2022350 ر.س 20 يوم + +
          4أحمد عبد الله محمد2564830يتيم 22/10/2022350 ر.س 20 يوم + +
          +
          +
          +
          + + + + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/sadad.html b/odex25_takaful/takaful_website_template/sadad.html new file mode 100644 index 000000000..0d0862873 --- /dev/null +++ b/odex25_takaful/takaful_website_template/sadad.html @@ -0,0 +1,522 @@ + + + + + + + + Home Page | الصفحة الرئيسية + + + + + + + + + + + + + +
          +
          +

          بوابة الكافل

          + + + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          الرقمالاسمالجنسالسنالمدينةنوع الحالة نسبة الاحتياجمتأخرات مالية تاريخ بدء الكفالة حالة الكفالة
          4أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 +
          + بحاجة للتجديد + سداد +
          +
          4أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 +
          + بحاجة للتجديد + سداد +
          +
          4أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 +
          + بحاجة للتجديد + سداد +
          +
          4أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 +
          + بحاجة للتجديد + سداد +
          +
          4أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 +
          + بحاجة للتجديد + سداد +
          +
          4أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 +
          + بحاجة للتجديد + سداد +
          +
          4أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 +
          + بحاجة للتجديد + سداد +
          +
          4أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 +
          + بحاجة للتجديد + سداد +
          +
          4أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 +
          + بحاجة للتجديد + سداد +
          +
          4أحمد عبد الله محمدذكر26الرياضيتيم الأبوين 95%500 ر.س03-02-2022 +
          + بحاجة للتجديد + سداد +
          +
          +
          +
          +
          + + + + + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/specify_character.html b/odex25_takaful/takaful_website_template/specify_character.html new file mode 100644 index 000000000..9b429b3f5 --- /dev/null +++ b/odex25_takaful/takaful_website_template/specify_character.html @@ -0,0 +1,110 @@ + + + + + + + + Order Process + + + + + + +
          +
          +
          +
          + 1 +
          + انشاء حساب +
          +
          +
          + 2 +
          + تأكيد الحساب +
          +
          +
          + 3 +
          + حدد شاراتك +
          +
          +
          + 4 +
          + استكمال البيانات +
          +
          +
          + 5 +
          + تم بنجاح +
          +
          +
          +
          +
          +
          من فضلك حدد شاراتك ( نوع حسابك ) ، مثال : هل أنت متطوع ؟
          +
          +
          +
          +
          + kafel + +
          +
          كافل
          +
          +
          +
          + employee + +
          +
          موظف
          +
          +
          +
          + member + +
          +
          عضو مجلس
          +
          +
          +
          + resturant_owner + +
          +
          صاحب مطعم
          +
          +
          +
          + volunteer + +
          +
          متطوع
          +
          +
          +

          +
          +
          +
          +
          +
          + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/user_data.html b/odex25_takaful/takaful_website_template/user_data.html new file mode 100644 index 000000000..df386f8c7 --- /dev/null +++ b/odex25_takaful/takaful_website_template/user_data.html @@ -0,0 +1,1203 @@ + + + + + + + + Order Process + + + + + + + + + +
          +
          +
          +
          + 1 +
          + انشاء حساب +
          +
          +
          + 2 +
          + تأكيد الحساب +
          +
          +
          + 3 +
          + حدد شاراتك +
          +
          +
          + 4 +
          + استكمال البيانات +
          +
          +
          + 5 +
          + تم بنجاح +
          +
          +
          +
          +
          +
          + + +
          + +
          + 1 + من + 10 + +
          + من فضلك قم بتعبئة (بيانات العائل الرئيسي ) +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + + + attach +
          +
          +
          + +
          + +
          +
          +
          + + +
          +
          + +
          + +
          +
          +
          + +
          + + + attach +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + + + attach +
          +
          +
          +

          +
          + + + +
          + +
          + 2 + من + 10 + +
          + من فضلك قم بتعبئة (بيانات السكن ) +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + + +
          +
          + +
          + +
          +
          +
          + +
          + + + attach +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + + + attach +
          +
          +
          + +
          + +
          +
          +
          + +
          + + + attach +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          +

          +
          + + +
          + +
          + 3 + من + 10 + +
          + من فضلك قم بتعبئة ( بيانات التابع للمستفيد) +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          +
          + + +
          +
          + + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + + +
          +
          + +
          + +
          +
          +
          + +
          + + + attach +
          +
          +
          + +
          +
          + + +
          +
          + + +
          + +
          +
          +
          + +
          +
          + + +
          +
          + + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          +

          +
          + +
          + +
          + 4 + من + 10 + +
          + من فضلك قم بتعبئة ( بيانات المصروفات ) +
          +
          +
          + +
          + + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          + + + من فضلك قم بتعبئة ( بيانات المصروفات العلاجية) + +
          + +
          + + +
          +
          +
          + +
          + +
          +
          +
          + + +
          +
          + + +
          +
          + + +
          + +
          +

          +
          + + +
          + +
          + 5 + من + 10 + +
          + من فضلك قم بتعبئة ( بيانات مصروفات المواصلات ) +
          +
          +
          + +
          + + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          + + + من فضلك قم بتعبئة (بيانات مصروفات الديون) + +
          + +
          + + +
          +
          +
          + +
          + +
          +
          +
          + + +
          +
          + + +
          +
          + +
          + +
          +
          +
          + + +
          +
          + + +
          + +
          + +
          + + + attach +
          +
          +
          + + +
          +
          +

          +
          + +
          + +
          + 6 + من + 10 + +
          + من فضلك قم بتعبئة (بيانات مصروفات الجوائح ) +
          +
          +
          + +
          + + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + + + attach +
          +
          + + من فضلك قم بتعبئة (بيانات مصروفات المعيشية ) + +
          + +
          + + +
          +
          +
          + +
          + +
          +
          +
          + +
          +
          + + +
          +
          + + +
          +
          +
          +
          + +
          + +
          +
          +
          +

          +
          + +
          + +
          + 7 + من + 10 + +
          + من فضلك قم بتعبئة (بيانات مصروفات الجوائح ) +
          +
          +
          + +
          +
          + + +
          +
          + + +
          +
          +
          +
          + +
          + + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          + + من فضلك قم بتعبئة ( بياناتك بالجهة التعليمية ) + +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + + + attach +
          +
          +
          + +
          + +
          +
          +
          + +
          + + + attach +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + + + attach +
          +
          +
          + +
          + + + attach +
          +
          +
          + +
          + +
          +
          +
          + +
          +
          + + +
          +
          + + +
          +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          +
          + + +
          +
          + + +
          +
          +
          +
          + +
          + +
          +
          +
          +

          +
          + +
          + +
          + 8 + من + 10 + +
          + من فضلك قم بتعبئة ( بيانات مصروفات الملابس ) +
          +
          +
          + +
          + + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          + + + من فضلك قم بتعبئة ( بيانات مقاسات الملابس والاحذية ) + +
          + +
          + + +
          +
          +
          + +
          + +
          +
          + + من فضلك قم بتعبئة ( البيانات الصحية ) + + +
          + +
          +
          + + +
          +
          + + +
          +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          +
          + + +
          +
          + + +
          +
          + +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + + + attach +
          +
          +
          + +
          +
          + + +
          +
          + + +
          +
          + +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + + + attach +
          +
          +
          + +
          + +
          +
          +
          +

          +
          + +
          +
          +
          + + +
          +
          + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/verification_code.html b/odex25_takaful/takaful_website_template/verification_code.html new file mode 100644 index 000000000..4fab6f778 --- /dev/null +++ b/odex25_takaful/takaful_website_template/verification_code.html @@ -0,0 +1,81 @@ + + + + + + + + Order Process + + + + + + +
          +
          +
          +
          + 1 +
          + انشاء حساب +
          +
          +
          + 2 +
          + تأكيد الحساب +
          +
          +
          + 3 +
          + حدد شاراتك +
          +
          +
          + 4 +
          + استكمال البيانات +
          +
          +
          + 5 +
          + تم بنجاح +
          +
          +
          +
          +
          +
          من فضلك ادخل رمز التأكيد المكون من 4 أرقام
          +

          قم بادخال الرقم الذي تم ارساله على هاتفك المحمول

          + تعديل الرقم ؟ +
          +
          + + + + +
          +
          + اعادة ارسال الرمز + انتظر 45 ثانية +
          + +
          +
          +
          + + +
          +
          + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template/webfonts/fa-brands-400.eot b/odex25_takaful/takaful_website_template/webfonts/fa-brands-400.eot new file mode 100644 index 000000000..d05ea581f Binary files /dev/null and b/odex25_takaful/takaful_website_template/webfonts/fa-brands-400.eot differ diff --git a/odex25_takaful/takaful_website_template/webfonts/fa-brands-400.svg b/odex25_takaful/takaful_website_template/webfonts/fa-brands-400.svg new file mode 100644 index 000000000..4e48a4669 --- /dev/null +++ b/odex25_takaful/takaful_website_template/webfonts/fa-brands-400.svg @@ -0,0 +1,3717 @@ + + + + +Created by FontForge 20201107 at Tue Mar 16 10:15:04 2021 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/odex25_takaful/takaful_website_template/webfonts/fa-brands-400.ttf b/odex25_takaful/takaful_website_template/webfonts/fa-brands-400.ttf new file mode 100644 index 000000000..fc567cd2f Binary files /dev/null and b/odex25_takaful/takaful_website_template/webfonts/fa-brands-400.ttf differ diff --git a/odex25_takaful/takaful_website_template/webfonts/fa-brands-400.woff b/odex25_takaful/takaful_website_template/webfonts/fa-brands-400.woff new file mode 100644 index 000000000..db70e73e4 Binary files /dev/null and b/odex25_takaful/takaful_website_template/webfonts/fa-brands-400.woff differ diff --git a/odex25_takaful/takaful_website_template/webfonts/fa-brands-400.woff2 b/odex25_takaful/takaful_website_template/webfonts/fa-brands-400.woff2 new file mode 100644 index 000000000..b8a8f656e Binary files /dev/null and b/odex25_takaful/takaful_website_template/webfonts/fa-brands-400.woff2 differ diff --git a/odex25_takaful/takaful_website_template/webfonts/fa-regular-400.eot b/odex25_takaful/takaful_website_template/webfonts/fa-regular-400.eot new file mode 100644 index 000000000..fae180dac Binary files /dev/null and b/odex25_takaful/takaful_website_template/webfonts/fa-regular-400.eot differ diff --git a/odex25_takaful/takaful_website_template/webfonts/fa-regular-400.svg b/odex25_takaful/takaful_website_template/webfonts/fa-regular-400.svg new file mode 100644 index 000000000..9dba8c340 --- /dev/null +++ b/odex25_takaful/takaful_website_template/webfonts/fa-regular-400.svg @@ -0,0 +1,801 @@ + + + + +Created by FontForge 20201107 at Tue Mar 16 10:15:04 2021 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/odex25_takaful/takaful_website_template/webfonts/fa-regular-400.ttf b/odex25_takaful/takaful_website_template/webfonts/fa-regular-400.ttf new file mode 100644 index 000000000..d1ac9ba11 Binary files /dev/null and b/odex25_takaful/takaful_website_template/webfonts/fa-regular-400.ttf differ diff --git a/odex25_takaful/takaful_website_template/webfonts/fa-regular-400.woff b/odex25_takaful/takaful_website_template/webfonts/fa-regular-400.woff new file mode 100644 index 000000000..e9f54b13d Binary files /dev/null and b/odex25_takaful/takaful_website_template/webfonts/fa-regular-400.woff differ diff --git a/odex25_takaful/takaful_website_template/webfonts/fa-regular-400.woff2 b/odex25_takaful/takaful_website_template/webfonts/fa-regular-400.woff2 new file mode 100644 index 000000000..9df490e8c Binary files /dev/null and b/odex25_takaful/takaful_website_template/webfonts/fa-regular-400.woff2 differ diff --git a/odex25_takaful/takaful_website_template/webfonts/fa-solid-900.eot b/odex25_takaful/takaful_website_template/webfonts/fa-solid-900.eot new file mode 100644 index 000000000..afe315244 Binary files /dev/null and b/odex25_takaful/takaful_website_template/webfonts/fa-solid-900.eot differ diff --git a/odex25_takaful/takaful_website_template/webfonts/fa-solid-900.svg b/odex25_takaful/takaful_website_template/webfonts/fa-solid-900.svg new file mode 100644 index 000000000..dce459d0e --- /dev/null +++ b/odex25_takaful/takaful_website_template/webfonts/fa-solid-900.svg @@ -0,0 +1,5034 @@ + + + + +Created by FontForge 20201107 at Tue Mar 16 10:15:04 2021 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/odex25_takaful/takaful_website_template/webfonts/fa-solid-900.ttf b/odex25_takaful/takaful_website_template/webfonts/fa-solid-900.ttf new file mode 100644 index 000000000..f33e81629 Binary files /dev/null and b/odex25_takaful/takaful_website_template/webfonts/fa-solid-900.ttf differ diff --git a/odex25_takaful/takaful_website_template/webfonts/fa-solid-900.woff b/odex25_takaful/takaful_website_template/webfonts/fa-solid-900.woff new file mode 100644 index 000000000..73c1a4d5d Binary files /dev/null and b/odex25_takaful/takaful_website_template/webfonts/fa-solid-900.woff differ diff --git a/odex25_takaful/takaful_website_template/webfonts/fa-solid-900.woff2 b/odex25_takaful/takaful_website_template/webfonts/fa-solid-900.woff2 new file mode 100644 index 000000000..dc52d954d Binary files /dev/null and b/odex25_takaful/takaful_website_template/webfonts/fa-solid-900.woff2 differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/css/footer.css b/odex25_takaful/takaful_website_template_b3/assets/css/footer.css new file mode 100644 index 000000000..53851554d --- /dev/null +++ b/odex25_takaful/takaful_website_template_b3/assets/css/footer.css @@ -0,0 +1,62 @@ +/* FOOTER */ +footer{ + background-color: #fff; + padding-top: 40px; + padding-bottom: 30px; + padding-right: 0; + padding-left: 0; +} + +footer .footer-desc{ + padding-right: 0; +} + +footer .footer-desc img{ + +} + +footer .footer-desc p{ + margin-top: 20px; +} +footer .footer-bottom{ + border-top: 1px solid #355692; + display: flex; + align-items: center; + justify-content: center; + padding-top: 20px; + margin-top: 20px; +} + +footer .footer-links { + +} +footer .footer-links ul{ + +} + +footer .footer-links ul li{ + margin-bottom: 15px; +} + +footer .footer-links ul li a{ + color: #000; +} + +footer .footer-links h3{ + font-size: 18px; + margin-top: 0; +} + +footer .footer-bottom img{ + margin-left: 10px; +} +footer .footer-bottom img:last-child{ + margin-left: 0; +} +footer .footer-copyright{ + margin-top: 20px; +} +footer .footer-copyright p{ + text-align: center; + font-size: 10px; +} \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template_b3/assets/css/header.css b/odex25_takaful/takaful_website_template_b3/assets/css/header.css new file mode 100644 index 000000000..9e0483434 --- /dev/null +++ b/odex25_takaful/takaful_website_template_b3/assets/css/header.css @@ -0,0 +1,113 @@ +/* Fonts */ +@font-face { + font-family: "Changa-Bold"; + src: url("../fonts/changa/ArbFONTS-Changa-Bold.ttf"); + font-weight: bold; +} + +@font-face { + font-family: "Changa-Regular"; + src: url("../fonts/changa/ArbFONTS-Changa-Regular.ttf"); + font-weight: 400; +} + +@font-face { + font-family: "Changa-Medium"; + src: url("../fonts/changa/ArbFONTS-Changa-Medium.ttf"); + font-weight: 500; +} + +@font-face { + font-family: "Changa-SemiBold"; + src: url("../fonts/changa/ArbFONTS-Changa-SemiBold.ttf"); + font-weight: 600; +} +/* GLOBAL */ +body{ + font-family: "Changa-Regular"; + background-color: #f5f5f5; +} +/* NAVBAR */ +.navbar { + padding: 20px 0; + background: #355692 !important; + border: none; + border-radius: 0; + margin: 0; +} + +.navbar ul {} + +.navbar ul li a { + color: #fff !important; + font-size: 16px; +} + +.navbar-default .navbar-nav>a:hover { + background-color: transparent; +} +.navbar-default .navbar-nav li.dropdown > a::after{ + content: "\F0140"; + font-family: "Material Design Icons"; + margin-right: 2px; +} + +.navbar-default .navbar-nav>.active>a { + background: transparent; + box-shadow: none; +} + +.navbar-default .navbar-nav>.active>a, +.navbar-default .navbar-nav>.active>a:focus, +.navbar-default .navbar-nav>.active>a:hover { + background-color: transparent; +} + +.navbar-default .navbar-nav>li>a:focus, +.navbar-default .navbar-nav>li>a:hover { + background-color: transparent; +} + +.navbar-default .navbar-nav>.open>a, +.navbar-default .navbar-nav>.open>a:focus, +.navbar-default .navbar-nav>.open>a:hover { + background-color: transparent; +} + +.navbar-collapse.collapse{ + display: flex!important; + align-items: center; + justify-content:space-between; + padding: 0; +} +.navbar-collapse.collapse ul.nav:first-child{ + margin-right: 40px; +} +ul.nav:first-child li{ + padding: 10px 15px; +} +/* */ +.d-flex { + display: -webkit-box!important; + display: -ms-flexbox!important; + display: flex!important; +} +.flex-wrap { + -ms-flex-wrap: wrap!important; + flex-wrap: wrap!important; +} +.align-items-center { + -webkit-box-align: center!important; + -ms-flex-align: center!important; + align-items: center!important; +} +.flex-column { + -webkit-box-orient: vertical!important; + -webkit-box-direction: normal!important; + -ms-flex-direction: column!important; + flex-direction: column!important; +} + +.mb-4, .my-4 { + margin-bottom: 1.5rem!important; +} \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template_b3/assets/css/profile.css b/odex25_takaful/takaful_website_template_b3/assets/css/profile.css new file mode 100644 index 000000000..a05ae6011 --- /dev/null +++ b/odex25_takaful/takaful_website_template_b3/assets/css/profile.css @@ -0,0 +1,125 @@ +.profile-section{ + +} + +.profile-section .section-header{ + padding: 0; + padding-top: 50px; +} + +.profile-section .section-header h3{ + color: #355692; + font-weight: 500; + padding: 0; + margin: 0; + padding-bottom: 20px; + position: relative; +} +.profile-section .section-header h3::after{ + content: ""; + width: 150px; + height: 5px; + background-color: #355692; + border-radius: 10px; + position: absolute; + bottom: 5px; + right: 0; +} +.profile-section .section-header ul{ + margin-top: 20px; + margin-bottom: 40px; +} +.profile-section .section-header ul li{ + color: #999; +} +.profile-section .section-header ul li:last-child{ + color: #222; + padding: 0; +} +.profile-section .section-header ul li::after{ + content: "\F0141"; + font-family: "Material Design Icons"; + margin-right: 2px; +} + +.profile-section .section-header ul li:last-child::after{ + content: ""; +} + +.profile-section .section-body{ + min-height: 200px; + background-color: #fff; + border-radius: 20px; + margin-bottom: 50px; + padding: 50px 0; +} + +.profile-section .section-body form button.btn{ + background-color: #355692; +} +.profile-section .section-body form input, +.profile-section .section-body form select +{ + border-color: #dfdfdf; +} + +.profile-section .section-body form > .col-md-6:nth-child(even){ + padding-right: 0; +} + +.profile-section .section-body form > .col-md-6:nth-child(odd){ + padding-left: 0; +} + +.profile-section .section-body form > .col-md-12{ + padding: 0; +} + +.profile-section .section-body .gender { + display: flex; + justify-content: space-around; + background-color: #eaeef4; + padding: 7px 0; + border-radius: 5px; +} + +.profile-section .section-body .gender label{ + margin-bottom: 0; + margin-right: 5px; + font-weight: 100; + color: #355692; +} + +.profile-section .section-body input[type=checkbox], +.profile-section .section-body input[type=radio]{ + margin: 0; +} + +.profile-section .section-body .upload-pp{ + display: flex; + justify-content: center; + margin-bottom: 50px; +} +.profile-section .section-body .upload-pp .pp-view{ + height: 120px; + width: 120px; + border-radius: 100%; + background-color: #c5d3ec; + display:relative; +} +.profile-section .section-body .upload-pp .pp-view .upload-btn{ + height: 40px; + width: 40px; + position: absolute; + border-radius: 100%; + bottom: 0; + background-color: #fff; + box-shadow: 0 10px 20px rgba(165, 165, 165, 0.19), 0 6px 6px rgba(165, 165, 165,0.23); + display: flex; + align-items: center; + justify-content: center; +} +.profile-section .section-body .upload-pp .pp-view .upload-btn i { + font-size: 20px; + color: #3f6cbf; +} \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template_b3/assets/css/registration.css b/odex25_takaful/takaful_website_template_b3/assets/css/registration.css new file mode 100644 index 000000000..69aade77d --- /dev/null +++ b/odex25_takaful/takaful_website_template_b3/assets/css/registration.css @@ -0,0 +1,527 @@ +/*benefits */ +.registration-section { + padding: 100px 0; + position: relative; + display: flex; +} + +.steper-content .steper-step-content{ + display: none; +} + +.steper-content .steper-step-content.active{ + display: block; +} + +.benifits_wrapper { + margin-top: 0; +} + +.benifits_wrapper .stepper_header { + background-color: #869ABE; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16); + border-radius: 16px 16px 0 0; + padding: 32px 64px; + justify-content: center; +} + +@media (max-width: 575px) { + .benifits_wrapper .stepper_header { + padding: 24px 16px; + } +} + +.benifits_wrapper .stepper_header .step { + position: relative; + width: 20%; +} + +@media (max-width: 991px) { + .benifits_wrapper .stepper_header .step { + width: 50%; + flex-direction: row !important; + margin-bottom: 16px; + } + + .benifits_wrapper .stepper_header .step:last-of-type { + margin: 0; + } +} + +.benifits_wrapper .stepper_header .step img { + position: relative; + z-index: 2; + background-color: #869ABE; + width: 40px; + height: 40px; + padding: 4px; +} + +.benifits_wrapper .stepper_header .step.completed .step_content{ + color: #fff; +} + +@media (max-width: 991px) { + .benifits_wrapper .stepper_header .step img { + -webkit-margin-end: 6px; + margin-inline-end: 6px; + } +} + +@media (max-width: 575px) { + .benifits_wrapper .stepper_header .step img { + width: 30px; + height: 30px; + } +} + +.benifits_wrapper .stepper_header .step:first-child:before { + display: none; +} + +.benifits_wrapper .stepper_header .step.completed::before{ + border-color: #fff; +} +.benifits_wrapper .stepper_header .step::before { + content: ""; + position: absolute; + top: 32%; + right: -55%; + width: 100%; + height: 2px; + border: 1px dashed #677898; +} + +@media (max-width: 991px) { + .benifits_wrapper .stepper_header .step::after { + display: none; + } +} + +.benifits_wrapper .stepper_header .step .step_content { + background-color: #869ABE; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; + padding: 0px 24px; + position: relative; + z-index: 2; + color: #677898; + font-family: "Changa-Bold"; + text-align: center; +} + +@media (max-width: 991px) { + .benifits_wrapper .stepper_header .step .step_content { + padding: 0; + text-align: start; + } +} + +@media (max-width: 575px) { + .benifits_wrapper .stepper_header .step .step_content { + font-size: 13px; + } +} + +.benifits_wrapper .stepper_header .step:last-of-type::after { + display: none; +} + +.benifits_wrapper .stepper_header .step.active::before { + border: 1px dashed #fff; +} + +.benifits_wrapper .stepper_header .step.active .step_content { + color: #fff; +} + +.benifits_wrapper .user_reg_form { + padding-top: 60px; + padding-bottom: 60px; + background-color: #fff; + border-radius: 0 0 16px 16px; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16); + margin-bottom: 30px; +} + +.benifits_wrapper .user_reg_form .form_wrapper { + /* width: 75%; + margin: auto; + padding: 24px 0; */ +} + +.benifits_wrapper .user_reg_form .form_wrapper h5 { + font-weight: 600; + font-size: 14px; + margin-bottom: 24px; + color: #888; +} + +.benifits_wrapper .user_reg_form .form_wrapper form .form-group { + display: flex; + flex-direction: column; + margin-bottom: 30px; +} + +.benifits_wrapper .user_reg_form .form_wrapper form .form-group label { + font-weight: 600; + font-size: 14px; +} + +.benifits_wrapper .user_reg_form .form_wrapper form .form-group .input-group-prepend { + position: absolute; + top: 10px; + right: 10px; +} + +.benifits_wrapper .user_reg_form .form_wrapper form .form-group .input-group-prepend .input-group-text { + background-color: transparent; + box-shadow: none; + border: none; + padding: 0; + border-left: 1px solid #ccc; + border-radius: 0; + direction: ltr; + -webkit-padding-start: 10px; + padding-inline-start: 10px; + font-size: 13px; +} + +.benifits_wrapper .user_reg_form .form_wrapper form .form-group #basic-url { + -webkit-padding-start: 58px !important; + padding-inline-start: 58px !important; +} + +.benifits_wrapper .user_reg_form .form_wrapper form .form-group #basic-url, +.benifits_wrapper .user_reg_form .form_wrapper form .form-group input { + display: block; + width: 100%; + padding: 8px; + border-radius: 4px; + border: 1px solid #ccc; + box-shadow: none; + outline: none; +} + +.benifits_wrapper .user_reg_form .form_wrapper form .form-group #basic-url::-moz-placeholder, +.benifits_wrapper .user_reg_form .form_wrapper form .form-group input::-moz-placeholder { + font-size: 13px; + color: #515151; +} + +.benifits_wrapper .user_reg_form .form_wrapper form .form-group #basic-url:-ms-input-placeholder, +.benifits_wrapper .user_reg_form .form_wrapper form .form-group input:-ms-input-placeholder { + font-size: 13px; + color: #515151; +} + +.benifits_wrapper .user_reg_form .form_wrapper form .form-group #basic-url::placeholder, +.benifits_wrapper .user_reg_form .form_wrapper form .form-group input::placeholder { + font-size: 13px; + color: #515151; +} + +.benifits_wrapper .user_reg_form .form_wrapper form .form-group .gender { + background-color: rgba(53, 86, 146, 0.6); + justify-content: space-around; + padding: 6px 0px; +} + +.benifits_wrapper .user_reg_form .form_wrapper form .form-group .gender input { + width: 16px; + height: 16px; + -webkit-margin-end: 7px; + margin-inline-end: 7px; +} + +.benifits_wrapper .user_reg_form .form_wrapper form .submit button { + width: 100%; + border: none; + background-color: #355692; + color: #fff; + padding: 8px; + border-radius: 4px; + font-size: 16px; +} + +.benifits_wrapper .user_reg_form .form_wrapper form .login { + text-align: center; + margin-top: 20px; +} + +.benifits_wrapper .user_reg_form .form_wrapper form .login a { + font-weight: 600; + text-decoration: underline; +} + +#form { + max-width: 100%; + margin: 25px auto 0; + direction: ltr; +} + +#form input { + margin: 0 5px; + text-align: center; + line-height: 80px; + font-size: 50px; + border: solid 1px #ccc; + /* box-shadow: 0 0 5px #ccc inset; */ + outline: none; + width: 25%; + transition: all 0.2s ease-in-out; + border-radius: 4px; + margin-bottom: 24px; +} + +#form input:focus { + border-color: #869ABE; + box-shadow: 0 0 5px #869ABE inset; +} + +#form input::-moz-selection { + background: transparent; +} + +#form input::selection { + background: transparent; +} + +#form button { + margin: 30px 0 50px; + width: 100%; + padding: 6px; + background: #355692; + border: none; + text-transform: uppercase; +} + +#form button.close { + border: solid 2px; + border-radius: 30px; + line-height: 19px; + font-size: 120%; + width: 22px; + position: absolute; + right: 5px; + top: 5px; +} + +/* */ +.code_wrapper { + /* width: 700px; */ + /* margin: auto; */ + max-width: 100%; + padding: 0 15px; +} + +.code_wrapper h6 { + font-weight: bold; + margin-bottom: 16px; +} + +.code_wrapper p { + color: #ccc; +} + +.code_wrapper a { + font-weight: 600; + /* text-decoration: underline; */ + color: #355692; +} + +.code_wrapper .resend { + /* direction: rtl; */ +} + +.code_wrapper .resend a { + text-decoration: underline; + font-weight: 600; + color: #355692; +} + +.code_wrapper .resend span { + color: #ccc; + font-weight: 600; +} + +/* */ +.specify_char { + /* width: 900px; */ + /* direction: rtl; */ +} + +.character_row { + display: flex; + flex-direction: row-reverse; + text-align: start; + justify-content: space-between; +} + +@media (max-width: 991px) { + .character_row { + flex-wrap: wrap; + justify-content: flex-start; + } +} + +@media (max-width: 991px) { + .character_row .char_img { + margin-bottom: 16px; + -webkit-margin-end: 16px; + margin-inline-end: 16px; + } +} + +.character_row .char_img .specify_img { + position: relative; + border-radius: 12px; + width: 140px; + height: 140px; + display: flex; + align-items: center; + justify-content: center; + border: 2px solid transparent; +} + +@media (max-width: 425px) { + .character_row .char_img .specify_img { + width: 110px; + height: 110px; + } +} + +.character_row .char_img .specify_img input { + position: absolute; + margin: 0 !important; + right: 10px; + top: 10px; + width: 20px !important; + z-index: 11; + height: 20px; +} + +@media (max-width: 425px) { + .character_row .char_img .specify_img input { + width: 15px !important; + height: 15px !important; + } +} + +.character_row .char_img img { + width: 100%; + height: 100%; +} + +.character_row .char_img h5 { + font-size: 16px; + text-align: center; + margin-top: 6px; + font-family: "Changa-SemiBold"; + color: #AAB0BB; +} + +.character_row .char_img.active .specify_img { + border: 2px solid #295DBC; +} + +.character_row .char_img.active h5 { + color: #355692; +} + +.specify_char { + /* width: 900px; */ + /* direction: rtl; */ +} + +.specify_char .main_link { + display: block; + width: 100%; + border: none; + background: #355692; + color: #fff; + padding: 8px; + border-radius: 4px; + font-size: 16px; +} + +.specify_char h6 { + color: #AAB0BB; + font-family: "Changa-SemiBold"; + margin-bottom: 40px; +} + +select.form-control{ + padding: 2px 12px; +} + +.step-loader{ + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(255, 255, 255, 0.8); + z-index: 100; + display: none; + align-items: center; + justify-content: center; +} +.step-loader.show{ + display: flex; +} +.step-loader p{ + text-align: center; +} + +.loader { + width: 48px; + height: 48px; + border: 3px dotted rgb(66, 66, 66); + border-style: solid solid dotted dotted; + border-radius: 50%; + display: inline-block; + position: relative; + box-sizing: border-box; + animation: rotation 2s linear infinite; + } + .loader::after { + content: ''; + box-sizing: border-box; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; + border: 3px dotted #355692; + border-style: solid solid dotted; + width: 24px; + height: 24px; + border-radius: 50%; + animation: rotationBack 1s linear infinite; + transform-origin: center center; + } + + @keyframes rotation { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } + } + @keyframes rotationBack { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(-360deg); + } + } + + + #id_attach,#photo_attach,#resume_attach{ + display: none; + } \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template_b3/assets/css/style.css b/odex25_takaful/takaful_website_template_b3/assets/css/style.css new file mode 100644 index 000000000..4900d4c66 --- /dev/null +++ b/odex25_takaful/takaful_website_template_b3/assets/css/style.css @@ -0,0 +1,425 @@ +/* SLIDER SECTION */ +#slider-section { + +} + +.main-slider{ + padding: 0; +} +.main-slider .item{ + min-height: 700px; + background: #355692; + display: flex; + align-items: center; +} +.main-slider .item .item-content{ + text-align: center; +} +.main-slider .item h2{ + font-size: 40px; + margin-top: 0; + text-align: center; + margin-bottom: 56px; + line-height: 24px; + color: #fff; + font-weight: bold; +} +.main-slider .item p{ + text-align: center; + margin-bottom: 32px; + font-size: 20px; + line-height: 30px; + color: #fff; + font-weight: bold; +} + +.main-slider .item a{ + padding: 12px 90px; + background: #355692; + border: none; + display: inline-flex; + align-items: center; + color: #fff; + border-radius: 4px; + font-size: 20px; + box-shadow: 0 3px 6px rgb(0 0 0 / 16%); +} +.main-slider.owl-carousel .owl-nav{ + position: absolute; + top: calc(50% - 52px); + display: flex; + width: 100%; + align-items: center; + justify-content: space-between; + padding: 0 100px; +} +.main-slider.owl-carousel .owl-dots{ + width: 100%; + position: absolute; + bottom: 20px; +} + +.main-slider.owl-theme .owl-dots .owl-dot span{ + margin: 5px 4px; +} +.main-slider.owl-theme .owl-dots .owl-dot.active span, .main-slider.owl-theme .owl-dots .owl-dot:hover span{ + background: #355692; +} +.main-slider.owl-theme .owl-dots .owl-dot:last-child span{ + width: 30px; +} +.main-slider.owl-carousel .owl-nav button.owl-prev, +.main-slider.owl-carousel .owl-nav button.owl-next{ + background-color: rgba(255, 255, 255, 0.295); + width: 52px; + height: 52px; + border-radius: 6px; +} + +.main-slider.owl-carousel .owl-nav button.owl-prev i, +.main-slider.owl-carousel .owl-nav button.owl-next i{ + font-size: 30px; + color: #fff; +} + +/* SERVICES SECTION */ +#services-section{ + padding: 80px 0; +} +#services-section .section-head{ + text-align: center; + padding-bottom: 50px; +} +#services-section .section-head h2{ + position: relative; + margin-bottom: 30px; + padding-bottom: 20px; + margin-top: 0; +} +#services-section .section-head h2::after{ + content: ""; + width: 50px; + height: 5px; + background-color: #355692; + border-radius: 10px; + position: absolute; + bottom: 0; + right: 46%; +} +#services-section .section-head p { + color: #666; + font-size: 16px; + padding: 0 100px; + line-height: 30px; +} + +#services-section .service-item{ + padding: 0 25px; +} +#services-section .service-item .item-content{ + height: 220px; + border-radius: 20px; + background: url(../img/service-1.png) no-repeat center/cover; + overflow: hidden; +} +#services-section .service-item .item-content h3{ + position: absolute; + bottom: 0; + right: 0; + width: 100%; + background: rgb(53,86,146); + background: linear-gradient(0deg, rgba(53,86,146,0.8715861344537815) 55%, rgba(30,52,92,0.6558998599439776) 100%); + margin: 0; + text-align: center; + min-height: 60px; + display: flex; + align-items: center; + justify-content: center; + color: #fff; + font-weight: 500; +} + +.service-items{ + padding-top: 50px; + padding-bottom: 50px; +} +.service-items::before{ + content: ""; + position: absolute; + height: 320px; + width: 75%; + border: 3px dashed #bbb; + border-spacing: 10px; + border-radius: 20px; + top: 0; + right: 12.5%; +} + + +/* NEWS SECTION */ +#news-section{ + padding: 80px 0; + background-color: #fff; +} +#news-section .section-head{ + text-align: center; + padding-bottom: 50px; +} +#news-section .section-head h2{ + position: relative; + margin-bottom: 30px; + padding-bottom: 20px; + margin-top: 0; +} +#news-section .section-head h2::after{ + content: ""; + width: 50px; + height: 5px; + background-color: #355692; + border-radius: 10px; + position: absolute; + bottom: 0; + right: 45%; +} +#news-section .section-head p { + color: #666; + font-size: 16px; + padding: 0 100px; + line-height: 30px; +} + +#news-section .news-slider{ + padding-top: 50px; + padding-bottom: 50px; + overflow: hidden; +} +#news-section .news-slider .item{ + height: 250px; + /* width: 360px; */ + background-color: #355692; + border-radius: 20px; + overflow: hidden!important; + position: relative; + opacity:0.4; + transition:.4s ease all; + margin:0 10px; + transform:scale(.8); +} +#news-section .news-slider .center{ + width: 400px; +} +#news-section .news-slider .center .item{ + opacity:1; + transform:scale(1); +} +#news-section .news-slider .item .item-content{ + border-radius: 20px; + height: 100%; + background: rgb(0,0,0); + background: linear-gradient(0deg, rgba(0,0,0,0.8995973389355743) 0%, rgba(0,0,0,0) 100%); +} +#news-section .news-slider .owl-item.center.active .item{ + height: 300px; + width: 400px; + background-color: #355692; +} + +#news-section .news-slider.owl-carousel .owl-stage{ + display: flex; + align-items: center; +} +#news-section .news-slider .item .item-content{ + +} +#news-section .news-item{ + padding: 0 25px; +} +#news-section .news-item .item-content{ + height: 220px; + border-radius: 20px; + background: url(../img/news-1.png) no-repeat center/cover; + overflow: hidden; +} + +#news-section .news-item .item-content h3{ + position: absolute; + bottom: 0; + right: 0; + width: 100%; + background: rgb(53,86,146); + background: linear-gradient(0deg, rgba(53,86,146,0.8715861344537815) 55%, rgba(30,52,92,0.6558998599439776) 100%); + margin: 0; + text-align: center; + min-height: 60px; + display: flex; + align-items: center; + justify-content: center; + color: #fff; + font-weight: 500; +} + +#news-section .owl-carousel .owl-nav{ + position: absolute; + top: calc(50% - 26px); + display: flex; + width: 100%; + align-items: center; + justify-content: space-between; + padding: 0; + margin-top: 0; +} +#news-section .owl-carousel .owl-dots{ + width: 100%; + position: absolute; + bottom: 10px; +} + +#news-section .owl-theme .owl-dots .owl-dot span{ + margin: 5px 4px; +} +#news-section .owl-theme .owl-dots .owl-dot.active span, #news-section .owl-theme .owl-dots .owl-dot:hover span{ + background: #355692; +} +#news-section .owl-theme .owl-dots .owl-dot:last-child span{ + width: 30px; +} +#news-section .owl-carousel .owl-nav button.owl-prev, +#news-section .owl-carousel .owl-nav button.owl-next{ + background-color: #355692; + width: 52px; + height: 52px; + border-radius: 20px; +} + +#news-section .owl-carousel .owl-nav button.owl-prev i, +#news-section .owl-carousel .owl-nav button.owl-next i{ + font-size: 30px; + color: #fff; +} + +/* Ads */ +#ads-section { + padding: 120px 0; +} +#ads-section .section-text{ + padding: 0; +} +#ads-section .section-text p{ + margin-bottom: 30px; + font-size: 18px; +} +#ads-section .section-card{ + height: 300px; + background-color: #355692; + border-radius: 15px; +} +#ads-section .section-card .section-card-a{ + padding-right: 100px; + height: 100%; + display: flex; + align-items: center; + padding-left: 150px; + color: #fff; +} +#ads-section .section-card .section-card-a h4{ + font-size: 20px; + font-weight: bold; + margin-bottom: 40px; + position: relative; +} +#ads-section .section-card .section-card-a h4::after{ + content: ""; + width: 100px; + height: 4px; + background-color: #fff; + border-radius: 10px; + position: absolute; + bottom: -20px; + right: 0; +} +#ads-section .section-card .section-card-a p{ + font-size: 18px; +} +#ads-section .section-card .section-card-b{ + +} +#ads-section .section-card .section-card-b .ads-banner{ + height: 500px; + width: 100%; + background-color: #fff; + position: absolute; + top: -115px; + left: 100px; + border-radius: 20px; +} + +/* Parteners */ + + +#parteners-section{ + padding-bottom: 50px; +} + +#parteners-section .section-head{ + padding-bottom: 50px; + padding-left: 0; + padding-right: 0; +} +#parteners-section .section-head h2{ + position: relative; + margin-bottom: 30px; + padding-bottom: 20px; + margin-top: 0; +} +#parteners-section .section-head h2::after{ + content: ""; + width: 50px; + height: 5px; + background-color: #355692; + border-radius: 10px; + position: absolute; + bottom: 0; + right: 0; +} +#parteners-section .section-head p { + color: #666; + font-size: 16px; + line-height: 30px; +} +#parteners-section .section-content{ + background-color: #dbdfe5; + border-radius: 10px; + padding: 50px 0; +} +#parteners-section .section-content .parteners-logo-slider{ + padding: 0; +} +#parteners-section .section-content .parteners-logo-slider .item{ + display: flex; + align-items: center; + justify-content: center; + background-color: #fff; + height: 150px; + border-radius: 20px; +} +#parteners-section .section-content .parteners-logo-slider .item img{ + height: 100px; + width: auto; +} +#parteners-section .owl-carousel .owl-dots{ + width: 100%; + position: absolute; + bottom: -40px; +} +#parteners-section .owl-carousel .owl-dots.disabled{ + display: block; +} +#parteners-section .owl-theme .owl-dots .owl-dot span{ + margin: 5px 4px; +} +#parteners-section .owl-theme .owl-dots .owl-dot.active span, #parteners-section .owl-theme .owl-dots .owl-dot:hover span{ + background: #355692; +} +#parteners-section .owl-theme .owl-dots .owl-dot:last-child span{ + width: 30px; +} diff --git a/odex25_takaful/takaful_website_template_b3/assets/css/tasks.css b/odex25_takaful/takaful_website_template_b3/assets/css/tasks.css new file mode 100644 index 000000000..e586b6cf2 --- /dev/null +++ b/odex25_takaful/takaful_website_template_b3/assets/css/tasks.css @@ -0,0 +1,216 @@ +.task-section{ + +} + +.task-section .section-header{ + padding: 0; + padding-top: 50px; +} + +.task-section .section-header h3{ + color: #355692; + font-weight: 500; + padding: 0; + margin: 0; + padding-bottom: 20px; + position: relative; +} +.task-section .section-header h3::after{ + content: ""; + width: 150px; + height: 5px; + background-color: #355692; + border-radius: 10px; + position: absolute; + bottom: 5px; + right: 0; +} +.task-section .section-header ul{ + margin-top: 20px; + margin-bottom: 40px; +} +.task-section .section-header ul li{ + color: #999; +} +.task-section .section-header ul li:last-child{ + color: #222; + padding: 0; +} +.task-section .section-header ul li::after{ + content: "\F0141"; + font-family: "Material Design Icons"; + margin-right: 2px; +} + +.task-section .section-header ul li:last-child::after{ + content: ""; +} + +.task-section .section-body{ + min-height: 200px; + background-color: #fff; + border-radius: 20px; + margin-bottom: 50px; + padding: 50px 0; +} + +.task-section .section-body.list{ + padding: 30px 30px; +} +/* Empty */ +.task-section .section-body.empty{ + height: 500px; + display: flex; + align-items: center; + justify-content: center; +} + +.task-section .section-body.empty p{ + text-align: center; + color: #888; + padding-top: 20px; + padding-bottom: 20px; +} +.task-section .section-body.empty button.btn{ + background-color: #355692; + font-size: 16px; + min-width: 400px; +} +.task-section .section-body.empty button.btn i{ + font-size: 22px; + margin-left: 10px; +} +#taskModal .modal-header{ + border: none; +} +#taskModal .modal-header .close{ + float: right; +} +#taskModal .modal-header .close i{ + font-size: 26px; + color: #355692; +} +#taskModal .modal-body{ + padding-left: 100px; + padding-right: 100px; + padding-bottom: 30px; +} +#taskModal .modal-body .modal-body-head{ + padding-bottom: 20px; +} +#taskModal .modal-body .modal-body-head h3{ + color: #355692; + font-weight: 500; + padding: 0; + margin: 0; + padding-bottom: 20px; + position: relative; + font-size: 20px; +} +#taskModal .modal-body .modal-body-head h3::after{ + content: ""; + width: 110px; + height: 5px; + background-color: #355692; + border-radius: 10px; + position: absolute; + bottom: 3px; + right: 0; +} +#taskModal .modal-body form button.btn{ + background-color: #355692; + font-size: 16px; + min-width: 400px; +} +#taskModal .modal-body form button.btn i{ + font-size: 22px; + margin-left: 10px; +} +/* List Task */ +.task-section .section-body .fitler-toolbar{ + display: flex; + justify-content: space-between; + padding-bottom: 20px; +} + +.task-section .section-body .fitler-toolbar > ul { + display: flex; +} + +.task-section .section-body .fitler-toolbar > ul > li{ + color: #bcbcbc; + display: inline-flex; + font-size: 16px; +} +.task-section .section-body .fitler-toolbar > ul > li > i { + font-size: 18px; + margin-left: 3px; + color: #8f8f8f; +} +.task-section .section-body .fitler-toolbar > ul > li:first-child{ + margin-left: 10px; +} +.task-section .section-body .fitler-toolbar > ul > li a{ + text-decoration: none; + color: #355692; +} +.task-section .section-body .fitler-toolbar > ul > li div{ + margin-right: 5px; +} +.task-section .section-body .fitler-toolbar p { + font-size: 16px; + color: #8f8f8f; +} +.task-section .section-body .body-content{ + +} +.task-section .section-body .body-content{ + +} +.task-section .section-body .body-content .content-item-container{ + padding-bottom: 30px; +} +.task-section .section-body .body-content .content-item-container:nth-child(odd){ + padding-right: 0; + padding-left: 30px; +} +.task-section .section-body .body-content .content-item-container:nth-child(even){ + padding-left: 0; + padding-right: 30px; +} +.task-section .section-body .body-content .content-item-container .content-item{ + background-color: #f8f8f8; + border: 1px solid #ddd; + border-radius: 10px; + padding: 20px 30px; +} +.task-section .section-body .body-content .content-item-container .content-item h4{ + color: #444; + font-size: 22px; + margin-top: 0; +} +.task-section .section-body .body-content .content-item-container .content-item ul{ + +} +.task-section .section-body .body-content .content-item-container .content-item ul li{ + color: #969696; + margin-bottom: 10px; +} +.task-section .section-body .body-content .content-item-container .content-item ul li i{ + color: #969696; + font-size: 18px; +} +.task-section .section-body .body-content .content-item-container .content-item ul li span.vol{ + color: rgb(2, 170, 2); +} +.task-section .section-body .body-content .content-item-container .content-item ul li span.time{ + margin-right: 5px; + color: #3574d3; +} +.task-section .section-body .body-content .content-item-container .content-item a.btn{ + background-color: #355692; + font-size: 16px; + min-width: 150px; + border: none; + margin-top: 10px; +} \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-Bold.ttf b/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-Bold.ttf new file mode 100644 index 000000000..be2b40286 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-Bold.ttf differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-ExtraBold.ttf b/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-ExtraBold.ttf new file mode 100644 index 000000000..edfc2755c Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-ExtraBold.ttf differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-ExtraLight.ttf b/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-ExtraLight.ttf new file mode 100644 index 000000000..2ddb091d5 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-ExtraLight.ttf differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-Light.ttf b/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-Light.ttf new file mode 100644 index 000000000..dea548dc1 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-Light.ttf differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-Medium.ttf b/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-Medium.ttf new file mode 100644 index 000000000..fea7b6a53 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-Medium.ttf differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-Regular.ttf b/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-Regular.ttf new file mode 100644 index 000000000..916528cd7 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-Regular.ttf differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-SemiBold.ttf b/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-SemiBold.ttf new file mode 100644 index 000000000..be2512435 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/fonts/changa/ArbFONTS-Changa-SemiBold.ttf differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/Group 18203.png b/odex25_takaful/takaful_website_template_b3/assets/img/Group 18203.png new file mode 100644 index 000000000..275404f68 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/Group 18203.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/cancel.png b/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/cancel.png new file mode 100644 index 000000000..e8fe40a39 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/cancel.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/cash1.png b/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/cash1.png new file mode 100644 index 000000000..c9c586a45 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/cash1.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/cashback.png b/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/cashback.png new file mode 100644 index 000000000..865d142ec Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/cashback.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/gift.png b/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/gift.png new file mode 100644 index 000000000..c4d4f51c4 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/gift.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/kafala_gama3ya.png b/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/kafala_gama3ya.png new file mode 100644 index 000000000..bb8d87e84 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/kafala_gama3ya.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/kafalaty.png b/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/kafalaty.png new file mode 100644 index 000000000..6ce00db0b Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/kafalaty.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/trend.png b/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/trend.png new file mode 100644 index 000000000..53a9f8051 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/trend.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/yateem.png b/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/yateem.png new file mode 100644 index 000000000..8b55181de Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/Gurantees/yateem.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/Icon awesome-plus.png b/odex25_takaful/takaful_website_template_b3/assets/img/Icon awesome-plus.png new file mode 100644 index 000000000..647557373 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/Icon awesome-plus.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/Icon material-notifications-active.png b/odex25_takaful/takaful_website_template_b3/assets/img/Icon material-notifications-active.png new file mode 100644 index 000000000..ab3530031 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/Icon material-notifications-active.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/Rectangle 4056.png b/odex25_takaful/takaful_website_template_b3/assets/img/Rectangle 4056.png new file mode 100644 index 000000000..898e01072 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/Rectangle 4056.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/Rectangle 4061.png b/odex25_takaful/takaful_website_template_b3/assets/img/Rectangle 4061.png new file mode 100644 index 000000000..7d1f41de4 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/Rectangle 4061.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/XMLID_1571_.png b/odex25_takaful/takaful_website_template_b3/assets/img/XMLID_1571_.png new file mode 100644 index 000000000..e75f110c7 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/XMLID_1571_.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/XMLID_857_.png b/odex25_takaful/takaful_website_template_b3/assets/img/XMLID_857_.png new file mode 100644 index 000000000..2d293488a Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/XMLID_857_.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/arrow_down.png b/odex25_takaful/takaful_website_template_b3/assets/img/arrow_down.png new file mode 100644 index 000000000..5da163c77 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/arrow_down.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/arrow_left.png b/odex25_takaful/takaful_website_template_b3/assets/img/arrow_left.png new file mode 100644 index 000000000..9d35d8e91 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/arrow_left.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/arrow_right.png b/odex25_takaful/takaful_website_template_b3/assets/img/arrow_right.png new file mode 100644 index 000000000..f2869ec29 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/arrow_right.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/attatch.png b/odex25_takaful/takaful_website_template_b3/assets/img/attatch.png new file mode 100644 index 000000000..71951ce2f Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/attatch.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/banner.png b/odex25_takaful/takaful_website_template_b3/assets/img/banner.png new file mode 100644 index 000000000..dad69e67c Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/banner.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/bread_arrow.png b/odex25_takaful/takaful_website_template_b3/assets/img/bread_arrow.png new file mode 100644 index 000000000..68cd6e538 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/bread_arrow.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/close.png b/odex25_takaful/takaful_website_template_b3/assets/img/close.png new file mode 100644 index 000000000..21924878c Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/close.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/credit.png b/odex25_takaful/takaful_website_template_b3/assets/img/credit.png new file mode 100644 index 000000000..0c59d55a6 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/credit.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/document.png b/odex25_takaful/takaful_website_template_b3/assets/img/document.png new file mode 100644 index 000000000..7ab336f93 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/document.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/dropdown.png b/odex25_takaful/takaful_website_template_b3/assets/img/dropdown.png new file mode 100644 index 000000000..369963467 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/dropdown.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/employee.png b/odex25_takaful/takaful_website_template_b3/assets/img/employee.png new file mode 100644 index 000000000..3e75f468f Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/employee.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/file.png b/odex25_takaful/takaful_website_template_b3/assets/img/file.png new file mode 100644 index 000000000..73fd1de12 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/file.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/footer-logo.png b/odex25_takaful/takaful_website_template_b3/assets/img/footer-logo.png new file mode 100644 index 000000000..dced3506f Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/footer-logo.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/gift_1.png b/odex25_takaful/takaful_website_template_b3/assets/img/gift_1.png new file mode 100644 index 000000000..4fceaebad Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/gift_1.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/helping.png b/odex25_takaful/takaful_website_template_b3/assets/img/helping.png new file mode 100644 index 000000000..4b079f085 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/helping.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/late_payments.png b/odex25_takaful/takaful_website_template_b3/assets/img/late_payments.png new file mode 100644 index 000000000..f49bd1a95 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/late_payments.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/logged_user.png b/odex25_takaful/takaful_website_template_b3/assets/img/logged_user.png new file mode 100644 index 000000000..7f926ce7f Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/logged_user.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/logo.png b/odex25_takaful/takaful_website_template_b3/assets/img/logo.png new file mode 100644 index 000000000..0a465cc11 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/logo.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/logout-svgrepo-com.png b/odex25_takaful/takaful_website_template_b3/assets/img/logout-svgrepo-com.png new file mode 100644 index 000000000..5ab571cd9 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/logout-svgrepo-com.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/mastercard.png b/odex25_takaful/takaful_website_template_b3/assets/img/mastercard.png new file mode 100644 index 000000000..59fe75cfd Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/mastercard.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/member.png b/odex25_takaful/takaful_website_template_b3/assets/img/member.png new file mode 100644 index 000000000..04edf0c5b Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/member.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/money-report-svgrepo-com.png b/odex25_takaful/takaful_website_template_b3/assets/img/money-report-svgrepo-com.png new file mode 100644 index 000000000..0e326fbaa Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/money-report-svgrepo-com.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/money.png b/odex25_takaful/takaful_website_template_b3/assets/img/money.png new file mode 100644 index 000000000..9b7c239ea Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/money.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/needs.png b/odex25_takaful/takaful_website_template_b3/assets/img/needs.png new file mode 100644 index 000000000..cef88b5e4 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/needs.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/next.png b/odex25_takaful/takaful_website_template_b3/assets/img/next.png new file mode 100644 index 000000000..ce6d4a802 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/next.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/payments.png b/odex25_takaful/takaful_website_template_b3/assets/img/payments.png new file mode 100644 index 000000000..5cb5ec3c1 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/payments.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/paypal.png b/odex25_takaful/takaful_website_template_b3/assets/img/paypal.png new file mode 100644 index 000000000..916b4c989 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/paypal.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/prev.png b/odex25_takaful/takaful_website_template_b3/assets/img/prev.png new file mode 100644 index 000000000..643d0ca2b Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/prev.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/red_cancel.png b/odex25_takaful/takaful_website_template_b3/assets/img/red_cancel.png new file mode 100644 index 000000000..72de171ed Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/red_cancel.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/resturant_owner.png b/odex25_takaful/takaful_website_template_b3/assets/img/resturant_owner.png new file mode 100644 index 000000000..18c4055cf Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/resturant_owner.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/search.png b/odex25_takaful/takaful_website_template_b3/assets/img/search.png new file mode 100644 index 000000000..ac446e22e Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/search.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/separator.png b/odex25_takaful/takaful_website_template_b3/assets/img/separator.png new file mode 100644 index 000000000..9a1ccdc8e Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/separator.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/service-1.png b/odex25_takaful/takaful_website_template_b3/assets/img/service-1.png new file mode 100644 index 000000000..54ebdfad7 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/service-1.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/settings-svgrepo-com.png b/odex25_takaful/takaful_website_template_b3/assets/img/settings-svgrepo-com.png new file mode 100644 index 000000000..fddabdfef Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/settings-svgrepo-com.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/shopping-cart.png b/odex25_takaful/takaful_website_template_b3/assets/img/shopping-cart.png new file mode 100644 index 000000000..e279a9bc2 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/shopping-cart.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/step_1_act.png b/odex25_takaful/takaful_website_template_b3/assets/img/step_1_act.png new file mode 100644 index 000000000..b03d33c59 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/step_1_act.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/step_2_act.png b/odex25_takaful/takaful_website_template_b3/assets/img/step_2_act.png new file mode 100644 index 000000000..a242e2004 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/step_2_act.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/step_2_inact.png b/odex25_takaful/takaful_website_template_b3/assets/img/step_2_inact.png new file mode 100644 index 000000000..716489bef Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/step_2_inact.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/step_3_act.png b/odex25_takaful/takaful_website_template_b3/assets/img/step_3_act.png new file mode 100644 index 000000000..762abcb4d Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/step_3_act.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/step_3_inact.png b/odex25_takaful/takaful_website_template_b3/assets/img/step_3_inact.png new file mode 100644 index 000000000..a54fc3bfb Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/step_3_inact.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/step_4_act.png b/odex25_takaful/takaful_website_template_b3/assets/img/step_4_act.png new file mode 100644 index 000000000..28bbb2213 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/step_4_act.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/step_4_inact.png b/odex25_takaful/takaful_website_template_b3/assets/img/step_4_inact.png new file mode 100644 index 000000000..a8d7631df Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/step_4_inact.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/step_5_inact.png b/odex25_takaful/takaful_website_template_b3/assets/img/step_5_inact.png new file mode 100644 index 000000000..a1fce35db Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/step_5_inact.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/trash.png b/odex25_takaful/takaful_website_template_b3/assets/img/trash.png new file mode 100644 index 000000000..26c7d9a0c Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/trash.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/user.png b/odex25_takaful/takaful_website_template_b3/assets/img/user.png new file mode 100644 index 000000000..e33d11ed6 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/user.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/visa.png b/odex25_takaful/takaful_website_template_b3/assets/img/visa.png new file mode 100644 index 000000000..e8e92c426 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/visa.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/img/volanteere.png b/odex25_takaful/takaful_website_template_b3/assets/img/volanteere.png new file mode 100644 index 000000000..cb6e36b95 Binary files /dev/null and b/odex25_takaful/takaful_website_template_b3/assets/img/volanteere.png differ diff --git a/odex25_takaful/takaful_website_template_b3/assets/js/complete-registration.js b/odex25_takaful/takaful_website_template_b3/assets/js/complete-registration.js new file mode 100644 index 000000000..34876b773 --- /dev/null +++ b/odex25_takaful/takaful_website_template_b3/assets/js/complete-registration.js @@ -0,0 +1,45 @@ +$(document).ready(function () { + + $('button[data-toggle="browse-file"]').on('click',function () { + let selector = $(this).data('target'); + $(selector).click(); + }); + + $('form#submit-account').on('submit',function () { + Registration.submitRegistration(); + return false; + }); +}); + +let Registration = new Object({ + url: '', + submitRegistration: function () { + $.ajax({ + url: '/portal/create_account', + type: "POST", + dataType: "json", + beforeSend: function () { + // $('.search-loading-layer').addClass('active'); + }, + success: function (response) { + if(response !== undefined && response !== null){ + parent.popular = response.content; + } + }, + error: function (error) { + console.log(error); + } + }); + }, + submitVerificationCode: function () { + + }, + goToComplelte: function () { + let $active = $('.step.active'); + $active.addClass('completed'); + $('.step').removeClass('active'); + $('.step[data-taget="#section-done"]').addClass('active'); + $('.steper-step-content').removeClass('active'); + $('.steper-step-content#section-done').addClass('active'); + } +}); \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template_b3/assets/js/home.js b/odex25_takaful/takaful_website_template_b3/assets/js/home.js new file mode 100644 index 000000000..1ec20e340 --- /dev/null +++ b/odex25_takaful/takaful_website_template_b3/assets/js/home.js @@ -0,0 +1,87 @@ +$(document).ready(function () { + $('.main-slider').owlCarousel({ + loop: true, + margin: 0, + nav: true, + dots: true, + rtl: true, + navText: ['', ''], + responsive: { + 0: { + items: 1 + }, + 600: { + items: 1 + }, + 1000: { + items: 1 + } + } + }); + + $('.news-slider').owlCarousel({ + loop: true, + nav: false, + items: 1, + lazyLoad: true, + rtl: true, + nav: true, + center: true, + navText: ['', ''], + responsive: { + 0: { + items: 1, + stagePadding: 60 + }, + 600: { + items: 1, + stagePadding: 100 + }, + 1000: { + items: 1, + stagePadding: 200 + }, + 1200: { + items: 1, + stagePadding: 150 + }, + 1400: { + items: 1, + stagePadding: 300 + }, + 1600: { + items: 1, + stagePadding: 350 + }, + 1800: { + items: 1, + stagePadding: 400 + } + } + }); + + + + $('.parteners-logo-slider').owlCarousel({ + loop: true, + nav: false, + dots: true, + autoplay: true, + items: 1, + margin: 50, + lazyLoad: true, + rtl: true, + center: true, + responsive: { + 0: { + items: 1, + }, + 600: { + items: 3, + }, + 1000: { + items: 6, + }, + } + }); +}); \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template_b3/assets/js/registration.js b/odex25_takaful/takaful_website_template_b3/assets/js/registration.js new file mode 100644 index 000000000..235cadc55 --- /dev/null +++ b/odex25_takaful/takaful_website_template_b3/assets/js/registration.js @@ -0,0 +1,79 @@ +$(document).ready(function () { + // load lists data + Registration.loadCities('#city_id'); + $('#next-step-button').on('click',function () { + console.log(this); + let $active = $('.step.active'); + $active.addClass('completed'); + $('.step').removeClass('active'); + $('.step[data-taget="#section-account"]').addClass('active'); + $('.steper-step-content').removeClass('active'); + $('.steper-step-content#section-account').addClass('active'); + }); + + $('form#registartionForm').on('submit',function () { + let data = $(this).serialize(); + console.log("Form Data:",data); + Registration.submitRegistration(data); + return false; + }); +}); + +let Registration = new Object({ + url: 'http://46.101.130.111:8075/portal/create_account', + citiesURL: '', + citiesList: [], + submitRegistration: function (data) { + let parent = this; + $.ajax({ + url: parent.url, + type: "POST", + dataType: "json", + data: data, + beforeSend: function () { + // $('.search-loading-layer').addClass('active'); + }, + success: function (response) { + if(response !== undefined && response !== null){ + parent.popular = response.content; + } + }, + error: function (error) { + console.log(error); + } + }); + }, + submitVerificationCode: function () { + + }, + loadCities: function (selector) { + let parent = this; + $.ajax({ + url: parent.citiesURL, + type: "GET", + dataType: "json", + beforeSend: function () { + // $('.search-loading-layer').addClass('active'); + }, + success: function (response) { + if(response !== undefined && response !== null){ + parent.citiesList = response.cities; + $.foreach(response.cities,function (index) { + $(selector).append(``); + }) + } + }, + error: function (error) { + console.log(error); + } + }); + }, + goToAccountActivation: function () { + let $active = $('.step.active'); + $active.addClass('completed'); + $('.step').removeClass('active'); + $('.step[data-taget="#section-confirm"]').addClass('active'); + $('.steper-step-content').removeClass('active'); + $('.steper-step-content#section-confirm').addClass('active'); + } +}); \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template_b3/complete-registration.html b/odex25_takaful/takaful_website_template_b3/complete-registration.html new file mode 100644 index 000000000..32a73b8ba --- /dev/null +++ b/odex25_takaful/takaful_website_template_b3/complete-registration.html @@ -0,0 +1,334 @@ + + + + + + + + تكافل | إستكمال بياناتك + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + +
          +
          +
          +
          +
          +
          +
          + 1 +
          + إستكمل بياناتك +
          +
          +
          + 2 +
          + تم بنجاح +
          +
          +
          +
          + +
          +
          +
          قم بتعبئة البيانات التالية
          +
          +
          + +
          +
          + + +
          +
          + +
          +
          + + +
          +
          + +
          +
          + + +
          +
          + +
          +
          + + +
          +
          + +
          +
          + + +
          +
          + +
          +
          + + +
          +
          + +
          +
          + + +
          +
          + +
          +
          + + +
          +
          + +
          +
          + +
          + + + + + +
          +
          +
          + +
          +
          + +
          + + + + + +
          +
          +
          + +
          +
          + +
          + + + + + +
          +
          +
          + +
          + +
          +
          +
          + + + +
          +
          +
          +


          جاري إنشاء الحساب ...

          +
          + + +
          +
          +
          قم بتعبئة البيانات التالية
          + +
          +


          جاري إنشاء الحساب ...

          +
          + +
          +
          +
          +
          +
          + +
          + + + + + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template_b3/index.html b/odex25_takaful/takaful_website_template_b3/index.html new file mode 100644 index 000000000..f79e7a128 --- /dev/null +++ b/odex25_takaful/takaful_website_template_b3/index.html @@ -0,0 +1,324 @@ + + + + + + + + تكافل | الصفحة الرئيسية + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + +
          +
          +
          +
          + +
          +
          +
          + +
          +
          +
          +
          +

          خدماتنا

          +

          أطلقت جمعية تكافل مشاريع لكفالة الأيتام تطبيقاً لسنة نبينا الكريم حيث قال: (أنا وكافل اليتيم + في الجنة هكذا و أشار بالسبابة والوسطى،وفرق بينهما شيئاً)

          +
          +
          +
          +
          +

          كفالة اليتيم

          +
          +
          +
          +
          +

          أوقف نخلة

          +
          +
          +
          +
          +

          مشاريع منوعة

          +
          +
          +
          +
          +

          تبرع اﻵن

          +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +

          آخر الأخبار

          +

          لا يخفى على الجميع أهمية ومكانة المدينة المنورة في نفوس جميع المسلمين من كل بقاع العالم، + ورغبتهم السكنى فيها، أو الصدقة وعمل الخير فيها، مروراً بالأمنيات أن يكون لهم أصلاً فيها، من + هنا انطلقت فكرة مشروع "نخيل اليتامى" المشروع الذي سيحقق للملايين من المسلمين رغبتهم

          +
          +
          + +
          +
          +
          +
          + +
          +
          +
          +
          +

          شاركنا الأجر في خدمة أيتام مدينة المصطفى صلى الله عليه و سلم

          +
          +
          +
          +
          +

          تبرع بالرسائل النصية

          +

          للتبرع بـ 12 ريال شهرياً 40 هلله يومياً أرسل 1 إلى 5084، للتبرع مرة واحدة بـ 10 ريال أرسل رسالة فارغة إلى 5084.

          +
          +
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +

          شركاؤنا

          +

          نحن نحترم ونشكر كل شركاؤنا الموثوقون الدائمون ونقدر خدماتهم

          +
          +
          + +
          +
          +
          +
          + +
          + + + + + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template_b3/profile.html b/odex25_takaful/takaful_website_template_b3/profile.html new file mode 100644 index 000000000..a699080a9 --- /dev/null +++ b/odex25_takaful/takaful_website_template_b3/profile.html @@ -0,0 +1,303 @@ + + + + + + + + تكافل | الصفحة الرئيسية + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + +
          + +
          +
          +
          +
          +
          +

          اعدادات الملف الشخصي

          +
            +
          • الإعدادات
          • +
          • الملف الشخصي
          • +
          +
          +
          +
          + +
          +
          +
          +
          + +
          +
          +
          +
          +
          + + +
          +
          + +
          +
          + + +
          +
          + +
          +
          + + +
          +
          + +
          +
          + + +
          +
          + +
          +
          + +
          + +966 + +
          +
          +
          + +
          +
          + + +
          +
          + +
          +
          + + +
          +
          + +
          +
          + +
          +
          + + +
          +
          + + +
          +
          +
          +
          + +
          +
          + + +
          +
          + +
          +
          + + +
          +
          + +
          + +
          +
          +
          +
          +
          +
          +
          +
          + +
          + + + + + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template_b3/registration.html b/odex25_takaful/takaful_website_template_b3/registration.html new file mode 100644 index 000000000..aa599f66d --- /dev/null +++ b/odex25_takaful/takaful_website_template_b3/registration.html @@ -0,0 +1,385 @@ + + + + + + + + تكافل | إنشاء حساب جديد + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + +
          +
          +
          +
          +
          +
          +
          + 1 +
          + حدد شاراتك +
          +
          +
          + 2 +
          + انشاء حساب +
          +
          +
          + 3 +
          + تأكيد الحساب +
          +
          +
          +
          + +
          +
          +
          من فضلك حدد شاراتك ( نوع حسابك ) ، مثال : هل أنت متطوع ؟
          +
          +
          +
          +
          + kafel + +
          +
          كافل
          +
          +
          +
          + employee + +
          +
          موظف
          +
          +
          +
          + member + +
          +
          عضو مجلس
          +
          +
          +
          + resturant_owner + +
          +
          صاحب مطعم
          +
          +
          +
          + volunteer + +
          +
          متطوع
          +
          +
          +
          + +
          +
          +
          +
          + + +
          +
          +
          قم بتعبئة البيانات التالية
          +
          +
          + +
          +
          + + +
          +
          + +
          +
          + + +
          +
          + +
          +
          + + +
          +
          + +
          +
          + + +
          +
          + +
          +
          + +
          +
          + +966 +
          + +
          +
          +
          + +
          +
          + + +
          +
          + +
          +
          + + +
          +
          + +
          +
          + +
          +
          + + +
          +
          + + +
          +
          +
          +
          + +
          +
          + + +
          +
          + +
          +
          + + + +
          + + +
          +
          +


          جاري إنشاء الحساب ...

          +
          + + +
          +
          +
          من فضلك ادخل رمز التأكيد المكون من 4 أرقام
          +

          قم بادخال الرقم الذي تم ارساله على هاتفك المحمول

          + تعديل الرقم ؟ +
          +
          + + + + +
          +
          + اعادة ارسال الرمز + انتظر 45 ثانية +
          + +
          +
          +
          + +
          +
          +
          +
          +
          + +
          + + + + + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template_b3/tasks-empty.html b/odex25_takaful/takaful_website_template_b3/tasks-empty.html new file mode 100644 index 000000000..2722716c3 --- /dev/null +++ b/odex25_takaful/takaful_website_template_b3/tasks-empty.html @@ -0,0 +1,243 @@ + + + + + + + + تكافل | الصفحة الرئيسية + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + +
          + +
          +
          +
          +
          +
          +

          تسجيل المهمات

          +
            +
          • الإعدادات
          • +
          • تسجيل المهمات
          • +
          +
          +
          +
          + +

          ليس لديك مهمات مسجلة

          + +
          +
          +
          +
          +
          +
          + + + +
          + + + + + + + + + + + + + \ No newline at end of file diff --git a/odex25_takaful/takaful_website_template_b3/tasks.html b/odex25_takaful/takaful_website_template_b3/tasks.html new file mode 100644 index 000000000..790243444 --- /dev/null +++ b/odex25_takaful/takaful_website_template_b3/tasks.html @@ -0,0 +1,379 @@ + + + + + + + + تكافل | الصفحة الرئيسية + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + +
          + +
          +
          +
          +
          +
          +

          تسجيل المهمات

          +
            +
          • الإعدادات
          • +
          • تسجيل المهمات
          • +
          +
          +
          +
          + +

          (12مهمة)

          +
          +
          +
          +
          +

          فرصة المعلم

          +
            +
          • + + 10 متطوعين +
          • +
          • + + عدد الساعات 90ساعة +
          • +
          • + + مهمة تعليم يتيم +
          • +
          + المزيد +
          +
          +
          +
          +

          فرصة المعلم

          +
            +
          • + + 10 متطوعين +
          • +
          • + + عدد الساعات 90ساعة +
          • +
          • + + مهمة تعليم يتيم +
          • +
          + المزيد +
          +
          +
          +
          +

          فرصة المعلم

          +
            +
          • + + 10 متطوعين +
          • +
          • + + عدد الساعات 90ساعة +
          • +
          • + + مهمة تعليم يتيم +
          • +
          + المزيد +
          +
          +
          +
          +

          فرصة المعلم

          +
            +
          • + + 10 متطوعين +
          • +
          • + + عدد الساعات 90ساعة +
          • +
          • + + مهمة تعليم يتيم +
          • +
          + المزيد +
          +
          +
          +
          +

          فرصة المعلم

          +
            +
          • + + 10 متطوعين +
          • +
          • + + عدد الساعات 90ساعة +
          • +
          • + + مهمة تعليم يتيم +
          • +
          + المزيد +
          +
          +
          +
          +

          فرصة المعلم

          +
            +
          • + + 10 متطوعين +
          • +
          • + + عدد الساعات 90ساعة +
          • +
          • + + مهمة تعليم يتيم +
          • +
          + المزيد +
          +
          +
          +
          + +
          +
          +
          +
          +
          +
          + +
          + + + + + + + + + + + + + \ No newline at end of file