Merge branch 'dev_odex25_ensan' of https://github.com/expsa/odex25-standard-modules into partial_extend_payment
This commit is contained in:
commit
c159c7554e
|
|
@ -1140,6 +1140,7 @@ msgstr "نموذج الأنشطة"
|
||||||
#: model:ir.model.fields,field_description:odex_benefit.field_services_settings__active
|
#: model:ir.model.fields,field_description:odex_benefit.field_services_settings__active
|
||||||
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__active
|
#: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__active
|
||||||
#: model:ir.model.fields,field_description:odex_benefit.field_visits_types__active
|
#: model:ir.model.fields,field_description:odex_benefit.field_visits_types__active
|
||||||
|
#: model:ir.model.fields,field_description:odex_benefit.field_return_reason__active
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "نشط"
|
msgstr "نشط"
|
||||||
|
|
||||||
|
|
@ -2741,6 +2742,7 @@ msgstr "بإمكانه النشر "
|
||||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.benefit_zkat_form
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.benefit_zkat_form
|
||||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.generate_reports_view_form
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.generate_reports_view_form
|
||||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.receive_food_basket_form
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.receive_food_basket_form
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.return_reason_wizard_form
|
||||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_form
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_form
|
||||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_search
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_search
|
||||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_family_bank_report_wizard_form
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_family_bank_report_wizard_form
|
||||||
|
|
@ -3187,6 +3189,7 @@ msgid "Configuration"
|
||||||
msgstr "إعدادات ملف الأسرة"
|
msgstr "إعدادات ملف الأسرة"
|
||||||
|
|
||||||
#. module: odex_benefit
|
#. module: odex_benefit
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.return_reason_wizard_form
|
||||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_form
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_form
|
||||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_search
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_search
|
||||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_exchange_order_wizard_form
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_exchange_order_wizard_form
|
||||||
|
|
@ -8418,6 +8421,7 @@ msgstr "نهاية الوقت المعين للنشاط"
|
||||||
#: model:ir.model.fields,field_description:odex_benefit.field_visit_location__benefit_name
|
#: model:ir.model.fields,field_description:odex_benefit.field_visit_location__benefit_name
|
||||||
#: model:ir.model.fields,field_description:odex_benefit.field_visits_types__name
|
#: model:ir.model.fields,field_description:odex_benefit.field_visits_types__name
|
||||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.benefits_representative_view_form
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.benefits_representative_view_form
|
||||||
|
#: model:ir.model.fields,field_description:odex_benefit.field_return_reason__name
|
||||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.external_benefit_view_form
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.external_benefit_view_form
|
||||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.family_member_form
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.family_member_form
|
||||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.grant_benefit_form
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.grant_benefit_form
|
||||||
|
|
@ -14419,6 +14423,11 @@ msgstr "أمر الصرف"
|
||||||
msgid "Payment Order"
|
msgid "Payment Order"
|
||||||
msgstr "أمر الصرف"
|
msgstr "أمر الصرف"
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__payment_order_count
|
||||||
|
msgid "Number of Payment Orders"
|
||||||
|
msgstr "عدد أوامر الصرف"
|
||||||
|
|
||||||
#. module: odex_benefit
|
#. module: odex_benefit
|
||||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_form_view
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_form_view
|
||||||
#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__benefit_ids
|
#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__benefit_ids
|
||||||
|
|
@ -14694,6 +14703,7 @@ msgstr "هل أنت متأكد أنك تريد الإرجاع للاخصائي؟
|
||||||
#. module: odex_benefit
|
#. module: odex_benefit
|
||||||
#: code:addons/odex_benefit/models/benefit.py:0
|
#: code:addons/odex_benefit/models/benefit.py:0
|
||||||
#: model:ir.model,name:odex_benefit.model_entity_return_reason_wizard
|
#: model:ir.model,name:odex_benefit.model_entity_return_reason_wizard
|
||||||
|
#: model:ir.model,name:odex_benefit.model_return_reason_wizard
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Return Reason Wizard"
|
msgid "Return Reason Wizard"
|
||||||
msgstr "سبب الإرجاع"
|
msgstr "سبب الإرجاع"
|
||||||
|
|
@ -14701,9 +14711,16 @@ msgstr "سبب الإرجاع"
|
||||||
#. module: odex_benefit
|
#. module: odex_benefit
|
||||||
#: model:ir.model.fields,field_description:odex_benefit.field_entity_return_reason_wizard__suspend_reason_id
|
#: model:ir.model.fields,field_description:odex_benefit.field_entity_return_reason_wizard__suspend_reason_id
|
||||||
#: model:ir.model.fields,field_description:odex_benefit.field_suspend_reason__is_return_reason
|
#: model:ir.model.fields,field_description:odex_benefit.field_suspend_reason__is_return_reason
|
||||||
|
#: model:ir.model.fields,field_description:odex_benefit.field_return_reason_wizard__return_reason_id
|
||||||
msgid "Return Reason"
|
msgid "Return Reason"
|
||||||
msgstr "سبب الإرجاع"
|
msgstr "سبب الإرجاع"
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: model:ir.model.fields,field_description:odex_benefit.field_benefit_expense_line__return_reason_id
|
||||||
|
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__return_reason_id
|
||||||
|
msgid "Return Reason"
|
||||||
|
msgstr "سبب إرجاع البنك"
|
||||||
|
|
||||||
#. module: odex_benefit
|
#. module: odex_benefit
|
||||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_entity_return_reason_wizard_form
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_entity_return_reason_wizard_form
|
||||||
msgid "Retrun"
|
msgid "Retrun"
|
||||||
|
|
@ -17051,6 +17068,8 @@ msgstr "يرجى اختيار دفتر اليومية قبل إنشاء القي
|
||||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.payment_orders_tree
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.payment_orders_tree
|
||||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_family_bank_report_wizard_form
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_family_bank_report_wizard_form
|
||||||
#: model:ir.model.fields,field_description:odex_benefit.field_family_bank_report_wizard__payment_order_ids
|
#: model:ir.model.fields,field_description:odex_benefit.field_family_bank_report_wizard__payment_order_ids
|
||||||
|
#: model:ir.model.fields,field_description:odex_benefit.field_service_request__payment_order_ids
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.service_request_form
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Payment Orders"
|
msgid "Payment Orders"
|
||||||
msgstr "أوامر صرف الخدمات"
|
msgstr "أوامر صرف الخدمات"
|
||||||
|
|
@ -17255,3 +17274,92 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"<i class=\"fa fa-calculator text-success\" style=\"font-size: 20px; margin-bottom: 4px;\"/>\n"
|
"<i class=\"fa fa-calculator text-success\" style=\"font-size: 20px; margin-bottom: 4px;\"/>\n"
|
||||||
" <span style=\"font-size: 12px; color: #555;\">الإجمالي</span>"
|
" <span style=\"font-size: 12px; color: #555;\">الإجمالي</span>"
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: model:ir.ui.menu,name:odex_benefit.menu_accounting_others
|
||||||
|
msgid "Others"
|
||||||
|
msgstr "اخرى"
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: model:ir.actions.act_window,name:odex_benefit.return_reason_action
|
||||||
|
#: model:ir.model,name:odex_benefit.model_return_reason
|
||||||
|
#: model:ir.ui.menu,name:odex_benefit.menu_return_reason
|
||||||
|
msgid "Return Reasons"
|
||||||
|
msgstr "أسباب الإرجاع"
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: model_terms:ir.actions.act_window,help:odex_benefit.return_reason_action
|
||||||
|
msgid "Create New Return Reason"
|
||||||
|
msgstr "إنشاء سبب إرجاع جديد"
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: code:addons/odex_benefit/models/family_expense_line.py:0
|
||||||
|
#: code:addons/odex_benefit/models/service_request.py:0
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.payment_orders_form
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.return_reason_wizard_form
|
||||||
|
#, python-format
|
||||||
|
msgid "Bank Return"
|
||||||
|
msgstr "رجيع البنك"
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: model:ir.model.fields,field_description:odex_benefit.field_benefit_expense_line__is_return
|
||||||
|
msgid "Is Returned?"
|
||||||
|
msgstr "هل هو رجيع؟"
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: model:ir.model.fields,field_description:odex_benefit.field_return_reason_wizard__line_id
|
||||||
|
msgid "Line ID"
|
||||||
|
msgstr "رقم"
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: model:ir.model.fields,field_description:odex_benefit.field_return_reason_wizard__line_model
|
||||||
|
msgid "Line Model"
|
||||||
|
msgstr "النموذج"
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: model:ir.model.fields.selection,name:odex_benefit.selection__service_request__state__return_to_bank
|
||||||
|
msgid "Return to Bank"
|
||||||
|
msgstr "رجيع البنك"
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.service_request_form
|
||||||
|
msgid "Processed"
|
||||||
|
msgstr "تمت المعالجة"
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: model:ir.model.fields,field_description:odex_benefit.field_confirm_benefit_expense__is_return_calculation
|
||||||
|
msgid "Return Calculation Mode"
|
||||||
|
msgstr "حساب الرجيع"
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: model:ir.model.fields,field_description:odex_benefit.field_confirm_benefit_expense__return_expense_line_ids
|
||||||
|
msgid "Selected Return Lines"
|
||||||
|
msgstr "سطور الرجيع"
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: code:addons/odex_benefit/models/family_expense.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Please select at least one return line to calculate."
|
||||||
|
msgstr "يرجى اختيار سطر رجيع واحد على الأقل للحساب."
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: model:ir.model.fields,field_description:odex_benefit.field_benefit_expense_line__return_confirm_id
|
||||||
|
msgid "Return Confirm"
|
||||||
|
msgstr "تأكيد الرجيع"
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: model:ir.model.fields,help:odex_benefit.field_confirm_benefit_expense__is_return_calculation
|
||||||
|
msgid ""
|
||||||
|
"Enable to calculate returned amounts instead of regular monthly expense."
|
||||||
|
msgstr "تمكين لحساب المبالغ المرجعة بدلاً من المصروف الشهري العادي."
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_form
|
||||||
|
msgid "Return Lines"
|
||||||
|
msgstr "سطور الرجيع"
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: model:ir.model.fields,field_description:odex_benefit.field_confirm_benefit_expense__line_domain_ids
|
||||||
|
msgid "Return Line Domain"
|
||||||
|
msgstr "مجال سطر الرجيع"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -707,7 +707,7 @@ class SuspendReason(models.Model):
|
||||||
_name = 'suspend.reason'
|
_name = 'suspend.reason'
|
||||||
_description = "Suspend - Reason"
|
_description = "Suspend - Reason"
|
||||||
|
|
||||||
name = fields.Char(string="Name")
|
name = fields.Char(string="Name", required=True)
|
||||||
is_stop_reason = fields.Boolean(string="Stop Reason",default=False)
|
is_stop_reason = fields.Boolean(string="Stop Reason",default=False)
|
||||||
is_reject_reason = fields.Boolean(string="Reject Reason",default=False)
|
is_reject_reason = fields.Boolean(string="Reject Reason",default=False)
|
||||||
is_return_reason = fields.Boolean(string="Return Reason",default=False)
|
is_return_reason = fields.Boolean(string="Return Reason",default=False)
|
||||||
|
|
@ -715,6 +715,13 @@ class SuspendReason(models.Model):
|
||||||
is_incomplete_visit_reason = fields.Boolean(string="Incomplete Visit Reason",default=False)
|
is_incomplete_visit_reason = fields.Boolean(string="Incomplete Visit Reason",default=False)
|
||||||
active = fields.Boolean(default=True)
|
active = fields.Boolean(default=True)
|
||||||
|
|
||||||
|
class ReturnReason(models.Model):
|
||||||
|
_name = "return.reason"
|
||||||
|
_description = "Return Reasons"
|
||||||
|
|
||||||
|
name = fields.Char(string="Name", required=True)
|
||||||
|
active = fields.Boolean(string="Active", default=True)
|
||||||
|
|
||||||
class BranchSettings(models.Model):
|
class BranchSettings(models.Model):
|
||||||
_name = 'branch.settings'
|
_name = 'branch.settings'
|
||||||
_description = "Branch Settings"
|
_description = "Branch Settings"
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,15 @@ class ConfirmBenefitExpense(models.Model):
|
||||||
|
|
||||||
member_count_othaim = fields.Integer(string="Member Count (Othaim)", compute='_get_family_monthly_values',
|
member_count_othaim = fields.Integer(string="Member Count (Othaim)", compute='_get_family_monthly_values',
|
||||||
store=True, )
|
store=True, )
|
||||||
|
is_return_calculation = fields.Boolean(string="Return Calculation Mode", default=False,
|
||||||
|
help="Enable to calculate returned amounts instead of regular monthly expense."
|
||||||
|
)
|
||||||
|
return_expense_line_ids = fields.One2many(comodel_name='benefit.expense.line', inverse_name='return_confirm_id',
|
||||||
|
string="Selected Return Lines",
|
||||||
|
domain="[('is_return', '=', True)]", )
|
||||||
|
line_domain_ids = fields.Many2many(comodel_name='benefit.expense.line', compute='_compute_domain_ids',
|
||||||
|
string="Return Line Domain",
|
||||||
|
)
|
||||||
|
|
||||||
@api.depends('payment_order_id', 'payment_order_id.state', 'move_id', 'move_id.state')
|
@api.depends('payment_order_id', 'payment_order_id.state', 'move_id', 'move_id.state')
|
||||||
def _compute_payment_move_state(self):
|
def _compute_payment_move_state(self):
|
||||||
|
|
@ -148,6 +157,29 @@ class ConfirmBenefitExpense(models.Model):
|
||||||
}
|
}
|
||||||
line.write(vals)
|
line.write(vals)
|
||||||
|
|
||||||
|
def _calculate_return_lines(self):
|
||||||
|
self.ensure_one()
|
||||||
|
return_lines = self.return_expense_line_ids
|
||||||
|
if not return_lines:
|
||||||
|
raise UserError(_("Please select at least one return line to calculate."))
|
||||||
|
|
||||||
|
lines = []
|
||||||
|
for line in return_lines:
|
||||||
|
lines.append((0, 0, {
|
||||||
|
'family_id': line.family_id.id,
|
||||||
|
'branch_id': line.branch_id.id,
|
||||||
|
'family_category_id': line.family_category_id.id,
|
||||||
|
'meal_card': line.meal_card,
|
||||||
|
'benefit_member_count': line.benefit_member_count,
|
||||||
|
'start_date': self.start_date,
|
||||||
|
'end_date': self.end_date,
|
||||||
|
'family_monthly_income': line.family_monthly_income,
|
||||||
|
'family_monthly_meals': line.family_monthly_meals,
|
||||||
|
'family_monthly_clotting': line.family_monthly_clotting,
|
||||||
|
'family_monthly_othaime': 0,
|
||||||
|
}))
|
||||||
|
self.benefit_expense_line_ids = lines
|
||||||
|
|
||||||
def action_calculate(self):
|
def action_calculate(self):
|
||||||
for rec in self:
|
for rec in self:
|
||||||
if rec.state != 'draft':
|
if rec.state != 'draft':
|
||||||
|
|
@ -160,19 +192,22 @@ class ConfirmBenefitExpense(models.Model):
|
||||||
if not rec.cash_expense and not rec.meal_expense and not rec.cloth_expense:
|
if not rec.cash_expense and not rec.meal_expense and not rec.cloth_expense:
|
||||||
raise UserError(_("At least one expense type should be selected."))
|
raise UserError(_("At least one expense type should be selected."))
|
||||||
|
|
||||||
rec.benefit_expense_line_ids.unlink()
|
if rec.is_return_calculation:
|
||||||
lines = []
|
rec._calculate_return_lines()
|
||||||
for fam in families:
|
else:
|
||||||
vals = {
|
rec.benefit_expense_line_ids.unlink()
|
||||||
'confirm_expense_id': rec.id,
|
lines = []
|
||||||
'family_id': fam.id,
|
for fam in families:
|
||||||
'start_date': rec.start_date,
|
vals = {
|
||||||
'end_date': rec.end_date,
|
'confirm_expense_id': rec.id,
|
||||||
}
|
'family_id': fam.id,
|
||||||
lines.append((0, 0, vals))
|
'start_date': rec.start_date,
|
||||||
|
'end_date': rec.end_date,
|
||||||
|
}
|
||||||
|
lines.append((0, 0, vals))
|
||||||
|
|
||||||
rec.write({'benefit_expense_line_ids': lines})
|
rec.write({'benefit_expense_line_ids': lines})
|
||||||
rec._update_benefit_expense_lines()
|
rec._update_benefit_expense_lines()
|
||||||
rec.state = 'calculated'
|
rec.state = 'calculated'
|
||||||
|
|
||||||
def action_recalculate(self):
|
def action_recalculate(self):
|
||||||
|
|
@ -181,31 +216,49 @@ class ConfirmBenefitExpense(models.Model):
|
||||||
raise UserError(_("You can only recalculate when status is 'Calculated'."))
|
raise UserError(_("You can only recalculate when status is 'Calculated'."))
|
||||||
rec._update_benefit_expense_lines()
|
rec._update_benefit_expense_lines()
|
||||||
|
|
||||||
@api.depends('branch_custom_ids', 'start_date', 'end_date')
|
@api.depends('is_return_calculation', 'branch_custom_ids', 'start_date', 'end_date')
|
||||||
def _compute_domain_ids(self):
|
def _compute_domain_ids(self):
|
||||||
for rec in self:
|
for rec in self:
|
||||||
# Define base domain for family selection
|
Line = self.env['benefit.expense.line']
|
||||||
validation_setting = self.env["family.validation.setting"].search([], limit=1)
|
validation_setting = self.env["family.validation.setting"].search([], limit=1)
|
||||||
base_domain = ['|', ('state', '=', 'second_approve'), '&',
|
if rec.is_return_calculation:
|
||||||
('state', 'in', ('waiting_approve', 'first_approve')), ('action_type', '=', 'suspended')]
|
domain = [
|
||||||
if rec.branch_custom_ids:
|
|
||||||
base_domain.append(('branch_custom_id', 'in', rec.branch_custom_ids.ids))
|
|
||||||
min_income = validation_setting.benefit_category_ids.mapped('mini_income_amount')
|
|
||||||
max_income = validation_setting.benefit_category_ids.mapped('max_income_amount')
|
|
||||||
base_domain.extend([('member_income', '>=', min(min_income)), ('member_income', '<=', max(max_income))])
|
|
||||||
base_domain.extend([('benefit_category_id', '!=', False)])
|
|
||||||
if rec.start_date and rec.end_date:
|
|
||||||
conflicting_records = self.search([
|
|
||||||
('id', '!=', rec._origin.id),
|
|
||||||
('start_date', '<=', rec.end_date),
|
('start_date', '<=', rec.end_date),
|
||||||
('end_date', '>=', rec.start_date),
|
('end_date', '>=', rec.start_date),
|
||||||
])
|
('is_return', '=', True),
|
||||||
|
('return_reason_id', '!=', False),
|
||||||
|
('return_confirm_id', '=', False),
|
||||||
|
]
|
||||||
|
if rec.branch_custom_ids:
|
||||||
|
domain.append(('branch_id', 'in', rec.branch_custom_ids.ids))
|
||||||
|
|
||||||
if conflicting_records:
|
return_lines = Line.search(domain)
|
||||||
conflicting_family_ids = conflicting_records.mapped('family_ids').ids
|
rec.line_domain_ids = return_lines
|
||||||
base_domain.append(('id', 'not in', conflicting_family_ids))
|
rec.family_domain_ids = return_lines.mapped('family_id')
|
||||||
|
else:
|
||||||
|
# Define base domain for family selection
|
||||||
|
|
||||||
rec.family_domain_ids = self.env['grant.benefit'].search(base_domain)
|
base_domain = ['|', ('state', '=', 'second_approve'), '&',
|
||||||
|
('state', 'in', ('waiting_approve', 'first_approve')), ('action_type', '=', 'suspended')]
|
||||||
|
if rec.branch_custom_ids:
|
||||||
|
base_domain.append(('branch_custom_id', 'in', rec.branch_custom_ids.ids))
|
||||||
|
min_income = validation_setting.benefit_category_ids.mapped('mini_income_amount')
|
||||||
|
max_income = validation_setting.benefit_category_ids.mapped('max_income_amount')
|
||||||
|
base_domain.extend([('member_income', '>=', min(min_income)), ('member_income', '<=', max(max_income))])
|
||||||
|
base_domain.extend([('benefit_category_id', '!=', False)])
|
||||||
|
if rec.start_date and rec.end_date:
|
||||||
|
conflicting_records = self.search([
|
||||||
|
('id', '!=', rec._origin.id),
|
||||||
|
('start_date', '<=', rec.end_date),
|
||||||
|
('end_date', '>=', rec.start_date),
|
||||||
|
])
|
||||||
|
|
||||||
|
if conflicting_records:
|
||||||
|
conflicting_family_ids = conflicting_records.mapped('family_ids').ids
|
||||||
|
base_domain.append(('id', 'not in', conflicting_family_ids))
|
||||||
|
|
||||||
|
rec.family_domain_ids = self.env['grant.benefit'].search(base_domain)
|
||||||
|
rec.line_domain_ids = self.env['benefit.expense.line'].browse([])
|
||||||
|
|
||||||
@api.onchange('branch_custom_ids')
|
@api.onchange('branch_custom_ids')
|
||||||
def _onchange_branch_custom_ids(self):
|
def _onchange_branch_custom_ids(self):
|
||||||
|
|
@ -320,31 +373,32 @@ class ConfirmBenefitExpense(models.Model):
|
||||||
})
|
})
|
||||||
rec.payment_order_id = payment_order
|
rec.payment_order_id = payment_order
|
||||||
|
|
||||||
# Create Vendor Bill for Meal Card Invoice(othaime)
|
if not rec.is_return_calculation:
|
||||||
account_id = validation_setting.meal_expense_account_id
|
# Create Vendor Bill for Meal Card Invoice(othaime)
|
||||||
invoice_lines = []
|
account_id = validation_setting.meal_expense_account_id
|
||||||
for line in lines.filtered(lambda l: l.meal_card):
|
invoice_lines = []
|
||||||
family = line.family_id
|
for line in lines.filtered(lambda l: l.meal_card):
|
||||||
invoice_lines.append((0, 0, {
|
family = line.family_id
|
||||||
'name': f'{family.name}/{family.code}',
|
invoice_lines.append((0, 0, {
|
||||||
'account_id': account_id.id,
|
'name': f'{family.name}/{family.code}',
|
||||||
'quantity': 1,
|
'account_id': account_id.id,
|
||||||
'benefit_family_id': family.id,
|
'quantity': 1,
|
||||||
'price_unit': line.family_monthly_othaime,
|
'benefit_family_id': family.id,
|
||||||
'analytic_account_id': family.branch_family_id.branch.analytic_account_id.id
|
'price_unit': line.family_monthly_othaime,
|
||||||
}))
|
'analytic_account_id': family.branch_family_id.branch.analytic_account_id.id
|
||||||
invoice_vals = {
|
}))
|
||||||
'move_type': 'in_invoice',
|
invoice_vals = {
|
||||||
'partner_id': validation_setting.meal_partner_id.id,
|
'move_type': 'in_invoice',
|
||||||
'invoice_date': rec.date,
|
'partner_id': validation_setting.meal_partner_id.id,
|
||||||
'family_confirm_id': rec.id,
|
'invoice_date': rec.date,
|
||||||
'benefit_family_ids': [(6, 0, rec.benefit_expense_line_ids.mapped('family_id').ids)],
|
'family_confirm_id': rec.id,
|
||||||
'journal_id': validation_setting.journal_id.id,
|
'benefit_family_ids': [(6, 0, rec.benefit_expense_line_ids.mapped('family_id').ids)],
|
||||||
'invoice_line_ids': invoice_lines,
|
'journal_id': validation_setting.journal_id.id,
|
||||||
'ref': rec.name,
|
'invoice_line_ids': invoice_lines,
|
||||||
}
|
'ref': rec.name,
|
||||||
|
}
|
||||||
|
|
||||||
invoice = self.env['account.move'].create(invoice_vals)
|
invoice = self.env['account.move'].create(invoice_vals)
|
||||||
rec.move_id = invoice
|
rec.move_id = invoice
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ class BenefitExpenseLine(models.Model):
|
||||||
|
|
||||||
confirm_expense_id = fields.Many2one(comodel_name='confirm.benefit.expense', string='Confirm Benefit Expense',
|
confirm_expense_id = fields.Many2one(comodel_name='confirm.benefit.expense', string='Confirm Benefit Expense',
|
||||||
ondelete='cascade')
|
ondelete='cascade')
|
||||||
|
return_confirm_id = fields.Many2one('confirm.benefit.expense', string="Return Confirm", ondelete="set null", )
|
||||||
family_id = fields.Many2one(comodel_name='grant.benefit', string='Family', required=True)
|
family_id = fields.Many2one(comodel_name='grant.benefit', string='Family', required=True)
|
||||||
branch_id = fields.Many2one(comodel_name='branch.settings', string='Branch')
|
branch_id = fields.Many2one(comodel_name='branch.settings', string='Branch')
|
||||||
family_category_id = fields.Many2one(comodel_name='benefit.category', string='Family Category')
|
family_category_id = fields.Many2one(comodel_name='benefit.category', string='Family Category')
|
||||||
|
|
@ -25,8 +26,24 @@ class BenefitExpenseLine(models.Model):
|
||||||
start_date = fields.Date(string='Start Date', )
|
start_date = fields.Date(string='Start Date', )
|
||||||
end_date = fields.Date(string='End Date', )
|
end_date = fields.Date(string='End Date', )
|
||||||
payment_order_id = fields.Many2one('payment.orders', string='Payment Order', ondelete="set null", copy=False)
|
payment_order_id = fields.Many2one('payment.orders', string='Payment Order', ondelete="set null", copy=False)
|
||||||
|
return_reason_id = fields.Many2one("return.reason", string="Return Reason")
|
||||||
|
is_return = fields.Boolean(string="Is Returned?", default=False)
|
||||||
|
|
||||||
@api.depends('family_monthly_income', 'family_monthly_clotting', 'family_monthly_meals')
|
@api.depends('family_monthly_income', 'family_monthly_clotting', 'family_monthly_meals')
|
||||||
def _compute_total_family_expenses(self):
|
def _compute_total_family_expenses(self):
|
||||||
for rec in self:
|
for rec in self:
|
||||||
rec.total_family_expenses = rec.family_monthly_income + rec.family_monthly_meals + rec.family_monthly_clotting
|
rec.total_family_expenses = rec.family_monthly_income + rec.family_monthly_meals + rec.family_monthly_clotting
|
||||||
|
|
||||||
|
def action_return_bank(self):
|
||||||
|
self.ensure_one()
|
||||||
|
return {
|
||||||
|
'name': _("Bank Return"),
|
||||||
|
'type': 'ir.actions.act_window',
|
||||||
|
'res_model': 'return.reason.wizard',
|
||||||
|
'view_mode': 'form',
|
||||||
|
'target': 'new',
|
||||||
|
'context': {
|
||||||
|
'default_line_id': self.id,
|
||||||
|
'default_line_model': 'benefit.expense.line',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
from odoo import fields, models, api, _
|
from odoo import fields, models, api, _
|
||||||
from stdnum.au.acn import to_abn
|
from stdnum.au.acn import to_abn
|
||||||
from odoo.exceptions import ValidationError,UserError
|
from odoo.exceptions import ValidationError, UserError
|
||||||
|
|
||||||
|
|
||||||
class PaymentOrders(models.Model):
|
class PaymentOrders(models.Model):
|
||||||
|
|
@ -22,7 +22,10 @@ class PaymentOrders(models.Model):
|
||||||
compute='_compute_service_type_id',
|
compute='_compute_service_type_id',
|
||||||
inverse='_inverse_service_type_id',
|
inverse='_inverse_service_type_id',
|
||||||
store=True)
|
store=True)
|
||||||
service_requests_ids = fields.One2many('service.request', 'payment_order_id', string='Service Requests')
|
service_requests_ids = fields.Many2many(comodel_name='service.request',
|
||||||
|
relation='service_request_payment_order_rel',
|
||||||
|
column1='payment_order_id', column2='service_request_id',
|
||||||
|
string='Service Requests', )
|
||||||
benefit_expense_line_ids = fields.One2many('benefit.expense.line', 'payment_order_id',
|
benefit_expense_line_ids = fields.One2many('benefit.expense.line', 'payment_order_id',
|
||||||
string='Benefit Expense Lines')
|
string='Benefit Expense Lines')
|
||||||
seasonal_requests_ids = fields.One2many('seasonal.service', 'payment_order_id', string='Seasonal Requests')
|
seasonal_requests_ids = fields.One2many('seasonal.service', 'payment_order_id', string='Seasonal Requests')
|
||||||
|
|
@ -78,7 +81,6 @@ class PaymentOrders(models.Model):
|
||||||
rec.state = 'waiting_gm'
|
rec.state = 'waiting_gm'
|
||||||
|
|
||||||
def create_entry(self):
|
def create_entry(self):
|
||||||
#todo add invoice type to the move
|
|
||||||
for rec in self:
|
for rec in self:
|
||||||
if not rec.journal_id:
|
if not rec.journal_id:
|
||||||
raise UserError(_("Please select a journal before creating the entry."))
|
raise UserError(_("Please select a journal before creating the entry."))
|
||||||
|
|
@ -233,7 +235,7 @@ class PaymentOrders(models.Model):
|
||||||
'credit': 0.0,
|
'credit': 0.0,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
total_credit += request.aid_amount
|
total_credit += request.requested_service_amount
|
||||||
elif self.type == 'benefit_expense':
|
elif self.type == 'benefit_expense':
|
||||||
validation_setting = self.env["family.validation.setting"].search([], limit=1)
|
validation_setting = self.env["family.validation.setting"].search([], limit=1)
|
||||||
for line in self.benefit_expense_line_ids:
|
for line in self.benefit_expense_line_ids:
|
||||||
|
|
|
||||||
|
|
@ -121,7 +121,11 @@ class ServiceRequest(models.Model):
|
||||||
# maintenance_items_id = fields.Many2one('home.maintenance.lines', string="Maintenance Items")
|
# maintenance_items_id = fields.Many2one('home.maintenance.lines', string="Maintenance Items")
|
||||||
maintenance_items_ids = fields.One2many('home.maintenance.items', 'service_request_id',
|
maintenance_items_ids = fields.One2many('home.maintenance.items', 'service_request_id',
|
||||||
string="Maintenance Items", )
|
string="Maintenance Items", )
|
||||||
payment_order_id = fields.Many2one('payment.orders', string='Payment Order', ondelete="set null", copy=False)
|
payment_order_ids = fields.Many2many(comodel_name='payment.orders', relation='service_request_payment_order_rel',
|
||||||
|
column1='service_request_id',
|
||||||
|
column2='payment_order_id', string='Payment Orders', copy=False, )
|
||||||
|
payment_order_id = fields.Many2one('payment.orders', string='Payment Order', copy=False)
|
||||||
|
payment_order_count = fields.Integer(compute='_compute_payment_order', string='Number of Payment Orders')
|
||||||
is_payment_order_done = fields.Boolean(string='Is Payment Order Done?')
|
is_payment_order_done = fields.Boolean(string='Is Payment Order Done?')
|
||||||
aid_amount = fields.Float(string='Aid Amount', compute='_get_aid_amount')
|
aid_amount = fields.Float(string='Aid Amount', compute='_get_aid_amount')
|
||||||
# Fields for alternative house
|
# Fields for alternative house
|
||||||
|
|
@ -172,6 +176,7 @@ class ServiceRequest(models.Model):
|
||||||
('projects_department', 'Waiting Projects Department'),
|
('projects_department', 'Waiting Projects Department'),
|
||||||
('gm_assistant', 'Waiting Assistant General Manager'),
|
('gm_assistant', 'Waiting Assistant General Manager'),
|
||||||
('accounting_approve', 'Accounting Approve'),
|
('accounting_approve', 'Accounting Approve'),
|
||||||
|
('return_to_bank', 'Return to Bank'),
|
||||||
('approval_of_beneficiary_services', 'Approval of beneficiary services'),
|
('approval_of_beneficiary_services', 'Approval of beneficiary services'),
|
||||||
('send_request_to_supplier', 'Send Request To Supplier'),
|
('send_request_to_supplier', 'Send Request To Supplier'),
|
||||||
('family_received_device', 'Family Received Device'),
|
('family_received_device', 'Family Received Device'),
|
||||||
|
|
@ -220,6 +225,15 @@ class ServiceRequest(models.Model):
|
||||||
('waiting', 'Waiting Payment'),
|
('waiting', 'Waiting Payment'),
|
||||||
('done', 'Done Payment'), ], copy=False, compute="_compute_payment_order_state", store=True)
|
('done', 'Done Payment'), ], copy=False, compute="_compute_payment_order_state", store=True)
|
||||||
total_moves = fields.Integer(string="Total Move", compute='_get_total_move_lines')
|
total_moves = fields.Integer(string="Total Move", compute='_get_total_move_lines')
|
||||||
|
return_reason_id = fields.Many2one("return.reason", string="Return Reason")
|
||||||
|
|
||||||
|
@api.depends('payment_order_ids')
|
||||||
|
def _compute_payment_order(self):
|
||||||
|
for rec in self:
|
||||||
|
if rec.payment_order_ids:
|
||||||
|
rec.payment_order_count = len(rec.payment_order_ids)
|
||||||
|
else:
|
||||||
|
rec.payment_order_count = 0
|
||||||
|
|
||||||
@api.depends('payment_order_id', 'payment_order_id.state', 'vendor_bill', 'vendor_bill.state')
|
@api.depends('payment_order_id', 'payment_order_id.state', 'vendor_bill', 'vendor_bill.state')
|
||||||
def _compute_payment_order_state(self):
|
def _compute_payment_order_state(self):
|
||||||
|
|
@ -229,7 +243,8 @@ class ServiceRequest(models.Model):
|
||||||
if rec.payment_order_id.state == "done":
|
if rec.payment_order_id.state == "done":
|
||||||
payment_order_state = "done"
|
payment_order_state = "done"
|
||||||
rec.service_approval_date = fields.Datetime.now()
|
rec.service_approval_date = fields.Datetime.now()
|
||||||
rec.state = 'send_request_to_supplier'
|
if rec.state == 'accounting_approve':
|
||||||
|
rec.state = 'send_request_to_supplier'
|
||||||
rec.is_payment_order_done = True
|
rec.is_payment_order_done = True
|
||||||
else:
|
else:
|
||||||
payment_order_state = "waiting"
|
payment_order_state = "waiting"
|
||||||
|
|
@ -241,6 +256,24 @@ class ServiceRequest(models.Model):
|
||||||
payment_order_state = "waiting"
|
payment_order_state = "waiting"
|
||||||
rec.payment_order_state = payment_order_state
|
rec.payment_order_state = payment_order_state
|
||||||
|
|
||||||
|
def action_return_bank(self):
|
||||||
|
self.ensure_one()
|
||||||
|
return {
|
||||||
|
'name': _("Bank Return"),
|
||||||
|
'type': 'ir.actions.act_window',
|
||||||
|
'res_model': 'return.reason.wizard',
|
||||||
|
'view_mode': 'form',
|
||||||
|
'target': 'new',
|
||||||
|
'context': {
|
||||||
|
'default_line_id': self.id,
|
||||||
|
'default_line_model': 'service.request',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def action_processed(self):
|
||||||
|
for record in self:
|
||||||
|
record.state = 'accounting_approve'
|
||||||
|
|
||||||
@api.depends('requested_service_amount', 'service_max_amount')
|
@api.depends('requested_service_amount', 'service_max_amount')
|
||||||
def _get_money_for_payment_is_appearance(self):
|
def _get_money_for_payment_is_appearance(self):
|
||||||
for rec in self:
|
for rec in self:
|
||||||
|
|
@ -1016,12 +1049,17 @@ class ServiceRequest(models.Model):
|
||||||
"• Not be linked to any payment order"
|
"• Not be linked to any payment order"
|
||||||
) % names)
|
) % names)
|
||||||
|
|
||||||
self.env['payment.orders'].create({
|
payment_order = self.env['payment.orders'].create({
|
||||||
'state': 'draft',
|
'state': 'draft',
|
||||||
'accountant_id': service_cats.accountant_id.id,
|
'accountant_id': service_cats.accountant_id.id,
|
||||||
'service_requests_ids': [(6, 0, self.ids)],
|
'service_requests_ids': [(6, 0, self.ids)],
|
||||||
'type': 'services',
|
'type': 'services',
|
||||||
})
|
})
|
||||||
|
self.write({
|
||||||
|
'payment_order_ids': [(4, payment_order.id)],
|
||||||
|
'payment_order_id': payment_order.id,
|
||||||
|
})
|
||||||
|
|
||||||
elif service_cats.payment_method == "invoice":
|
elif service_cats.payment_method == "invoice":
|
||||||
invalid_records = self.filtered(
|
invalid_records = self.filtered(
|
||||||
lambda r: r.state != 'accounting_approve'
|
lambda r: r.state != 'accounting_approve'
|
||||||
|
|
@ -1061,7 +1099,7 @@ class ServiceRequest(models.Model):
|
||||||
def _get_total_move_lines(self):
|
def _get_total_move_lines(self):
|
||||||
for rec in self:
|
for rec in self:
|
||||||
if self.service_cat.payment_method == "payment_order":
|
if self.service_cat.payment_method == "payment_order":
|
||||||
moves = self.payment_order_id.move_id
|
moves = rec.payment_order_ids.mapped('move_id')
|
||||||
elif self.service_cat.payment_method == "invoice":
|
elif self.service_cat.payment_method == "invoice":
|
||||||
moves = self.vendor_bill
|
moves = self.vendor_bill
|
||||||
|
|
||||||
|
|
@ -1069,7 +1107,7 @@ class ServiceRequest(models.Model):
|
||||||
|
|
||||||
def action_open_related_move_records(self):
|
def action_open_related_move_records(self):
|
||||||
if self.service_cat.payment_method == "payment_order":
|
if self.service_cat.payment_method == "payment_order":
|
||||||
moves = self.payment_order_id.move_id.ids
|
moves = self.payment_order_ids.mapped('move_id')
|
||||||
elif self.service_cat.payment_method == "invoice":
|
elif self.service_cat.payment_method == "invoice":
|
||||||
moves = self.vendor_bill.ids
|
moves = self.vendor_bill.ids
|
||||||
|
|
||||||
|
|
@ -1078,5 +1116,19 @@ class ServiceRequest(models.Model):
|
||||||
'type': 'ir.actions.act_window',
|
'type': 'ir.actions.act_window',
|
||||||
'res_model': 'account.move',
|
'res_model': 'account.move',
|
||||||
'view_mode': 'tree,form',
|
'view_mode': 'tree,form',
|
||||||
'domain': [('id', 'in', moves)],
|
'domain': [('id', 'in', moves.ids)],
|
||||||
|
}
|
||||||
|
|
||||||
|
def action_open_payment_orders(self):
|
||||||
|
self.ensure_one()
|
||||||
|
if not self.payment_order_ids:
|
||||||
|
raise UserError(_("No payment orders are linked to this request."))
|
||||||
|
|
||||||
|
return {
|
||||||
|
'name': _('Payment Orders'),
|
||||||
|
'type': 'ir.actions.act_window',
|
||||||
|
'res_model': 'payment.orders',
|
||||||
|
'view_mode': 'tree,form',
|
||||||
|
'domain': [('id', 'in', self.payment_order_ids.ids)],
|
||||||
|
'context': {'create': False},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -167,4 +167,6 @@ access_survey_user_input_line_group_benefit_info,survey.user_input.line.group_be
|
||||||
access_grant_benefit_account_move_line,access_grant_benefit_account_move_line,model_account_move_line,odex_benefit.group_benefit_info,1,0,0,0
|
access_grant_benefit_account_move_line,access_grant_benefit_account_move_line,model_account_move_line,odex_benefit.group_benefit_info,1,0,0,0
|
||||||
access_grant_benefit_account_move,access_grant_benefit_account_move,model_account_move,odex_benefit.group_benefit_info,1,0,0,0
|
access_grant_benefit_account_move,access_grant_benefit_account_move,model_account_move,odex_benefit.group_benefit_info,1,0,0,0
|
||||||
access_benefit_expense_line,access_benefit_expense_line,model_benefit_expense_line,base.group_user,1,1,1,1
|
access_benefit_expense_line,access_benefit_expense_line,model_benefit_expense_line,base.group_user,1,1,1,1
|
||||||
access_family_bank_report_wizard,access_family_bank_report_wizard,model_family_bank_report_wizard,base.group_user,1,1,1,1
|
access_family_bank_report_wizard,access_family_bank_report_wizard,model_family_bank_report_wizard,base.group_user,1,1,1,1
|
||||||
|
access_return_reason,access_return_reason,model_return_reason,base.group_user,1,1,1,1
|
||||||
|
access_return_reason_wizard,access_return_reason_wizard,model_return_reason_wizard,base.group_user,1,1,1,1
|
||||||
|
|
|
@ -295,6 +295,15 @@
|
||||||
</p>
|
</p>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
<record id="return_reason_action" model="ir.actions.act_window">
|
||||||
|
<field name="name">Return Reasons</field>
|
||||||
|
<field name="res_model">return.reason</field>
|
||||||
|
<field name="view_mode">tree,form</field>
|
||||||
|
<field name="help" type="html">
|
||||||
|
<p class="oe_view_nocontent_create">Create New Return Reason
|
||||||
|
</p>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
<record model="ir.actions.act_window" id="domestic_labor_action">
|
<record model="ir.actions.act_window" id="domestic_labor_action">
|
||||||
<field name="name">The Domestic Labor</field>
|
<field name="name">The Domestic Labor</field>
|
||||||
<field name="res_model">domestic.labor</field>
|
<field name="res_model">domestic.labor</field>
|
||||||
|
|
@ -1048,48 +1057,16 @@
|
||||||
<menuitem id="seasonal_service_menu" name="Seasonal Services"
|
<menuitem id="seasonal_service_menu" name="Seasonal Services"
|
||||||
parent="odex_benefit.benefit_services" sequence="3" action="seasonal_service_action" />
|
parent="odex_benefit.benefit_services" sequence="3" action="seasonal_service_action" />
|
||||||
<menuitem id="menu_refuse_reason" name="Service Refuse Reasons" parent="menu_benefits_config_others" action="action_refuse_reason"/>
|
<menuitem id="menu_refuse_reason" name="Service Refuse Reasons" parent="menu_benefits_config_others" action="action_refuse_reason"/>
|
||||||
<!-- <menuitem id="benefit_need_menu" name="Benefit Need" sequence="1"-->
|
<menuitem name="Others"
|
||||||
<!-- parent="odex_benefit.benefit_services" action="benefit_need_action"/>-->
|
id="menu_accounting_others"
|
||||||
<!-- <menuitem id="benefit_zkat_main_menu" name="Benefit Zkat" sequence="2"-->
|
parent="account.menu_finance_configuration"
|
||||||
<!-- parent="odex_benefit.benefit_services"/>-->
|
sequence="15"
|
||||||
<!-- <menuitem id="benefit_receive_zkat_menu" name="Benefit Receive Zkat" sequence="1"-->
|
/>
|
||||||
<!-- parent="odex_benefit.benefit_zkat_main_menu" action="benefit_receive_zkat_action"/>-->
|
<menuitem name="Return Reasons"
|
||||||
<!-- <menuitem id="benefit_zkat_menu" name="Benefit Zkat" sequence="2"-->
|
id="menu_return_reason"
|
||||||
<!-- parent="odex_benefit.benefit_zkat_main_menu" action="benefit_zkat_action"/>-->
|
parent="menu_accounting_others"
|
||||||
<!-- <menuitem id="food_basket_main_menu" name="Benefit Food Basket" sequence="3"-->
|
action="return_reason_action"
|
||||||
<!-- parent="odex_benefit.benefit_services"/>-->
|
/>
|
||||||
<!-- <menuitem id="receive_food_basket_menu" name="receive Food Basket" sequence="1"-->
|
|
||||||
<!-- parent="odex_benefit.food_basket_main_menu" action="receive_food_basket_action"/>-->
|
|
||||||
<!-- <menuitem id="benefit_food_basket_menu" name="Benefit Food Basket" sequence="2"-->
|
|
||||||
<!-- parent="odex_benefit.food_basket_main_menu" action="benefit_food_basket_action"/>-->
|
|
||||||
<!-- <menuitem id="benefit_food_surplus_menu" name="Food Surplus" sequence="4"-->
|
|
||||||
<!-- parent="odex_benefit.benefit_services" action="benefit_food_surplus_action"/>-->
|
|
||||||
<!-- <menuitem id="benefit_appliances_furniture_main_menu" name="Appliances Furniture" sequence="5"-->
|
|
||||||
<!-- parent="odex_benefit.benefit_services"/>-->
|
|
||||||
<!-- <menuitem id="receive_appliances_furniture_menu" name="Receive Appliances Furniture" sequence="1"-->
|
|
||||||
<!-- parent="odex_benefit.benefit_appliances_furniture_main_menu"-->
|
|
||||||
<!-- action="receive_appliances_furniture_action"/>-->
|
|
||||||
<!-- <menuitem id="benefit_appliances_furniture_menu" name="Appliances Furniture" sequence="2"-->
|
|
||||||
<!-- parent="odex_benefit.benefit_appliances_furniture_main_menu"-->
|
|
||||||
<!-- action="benefit_appliances_furniture_action"/>-->
|
|
||||||
<!-- <menuitem id="loans_benefit_main_menu" name="Benefit Loans" sequence="6"-->
|
|
||||||
<!-- parent="odex_benefit.benefit_services"/>-->
|
|
||||||
<!-- <menuitem id="benefit_loans_menu" name="Benefit Loans" sequence="1"-->
|
|
||||||
<!-- parent="odex_benefit.loans_benefit_main_menu" action="benefit_benefit_loans_action"/>-->
|
|
||||||
<!-- <menuitem id="receive_benefit_loans_menu" name="Receive Benefit Loans" sequence="2"-->
|
|
||||||
<!-- parent="odex_benefit.loans_benefit_main_menu" action="receive_benefit_loans_action"/>-->
|
|
||||||
<!-- <menuitem id="benefit_club_menu" name="Benefit Club" sequence="7"-->
|
|
||||||
<!-- parent="odex_benefit.benefit_services" action="benefit_club_action"/>-->
|
|
||||||
<!-- <menuitem id='benefit_extra_tools' name='Extra Tools' parent='odex_benefit.benefit_services'-->
|
|
||||||
<!-- sequence="8"/>-->
|
|
||||||
|
|
||||||
<!--###########################################################-->
|
|
||||||
<!--Extra tools-->
|
|
||||||
<!--###########################################################-->
|
|
||||||
<!-- <menuitem id="food_surplus_type_menu" name="Food Surplus Type"-->
|
|
||||||
<!-- parent="benefit_extra_tools" action="food_surplus_type_action" sequence="5"/>-->
|
|
||||||
<!-- <menuitem id="benefit_programs_menu" name="benefit Club programs"-->
|
|
||||||
<!-- parent="benefit_extra_tools" action="club_programs_action" sequence="6"/>-->
|
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|
|
||||||
|
|
@ -1417,5 +1417,30 @@
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<record id="return_reason_form" model="ir.ui.view">
|
||||||
|
<field name="name">return.reason.form.view</field>
|
||||||
|
<field name="model">return.reason</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form>
|
||||||
|
<sheet>
|
||||||
|
<div class="oe_title">
|
||||||
|
<h1>
|
||||||
|
<field name="name"/>
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
</sheet>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
<record id="return_reason_tree" model="ir.ui.view">
|
||||||
|
<field name="name">return.reason.tree.view</field>
|
||||||
|
<field name="model">return.reason</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree>
|
||||||
|
<field name="name"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
</data>
|
</data>
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,8 @@
|
||||||
<field name="family_monthly_clotting"/>
|
<field name="family_monthly_clotting"/>
|
||||||
<field name="family_monthly_othaime"/>
|
<field name="family_monthly_othaime"/>
|
||||||
<field name="total_family_expenses"/>
|
<field name="total_family_expenses"/>
|
||||||
|
<field name="is_return" optional="hide"/>
|
||||||
|
<field name="return_reason_id" optional="hide"/>
|
||||||
<field name="payment_order_id" invisible="1"/>
|
<field name="payment_order_id" invisible="1"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
|
|
@ -38,6 +40,8 @@
|
||||||
<field name="meal_card"/>
|
<field name="meal_card"/>
|
||||||
<field name="benefit_member_count"/>
|
<field name="benefit_member_count"/>
|
||||||
<field name="payment_order_id" invisible="1"/>
|
<field name="payment_order_id" invisible="1"/>
|
||||||
|
<field name="is_return" attrs="{'invisible': [('is_return', '=', False)]}"/>
|
||||||
|
<field name="return_reason_id" attrs="{'invisible': [('return_reason_id', '=', False)]}"/>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<field name="family_monthly_income"/>
|
<field name="family_monthly_income"/>
|
||||||
|
|
|
||||||
|
|
@ -121,6 +121,8 @@
|
||||||
<field name="end_date"
|
<field name="end_date"
|
||||||
attrs="{'readonly':[('state', '!=', 'draft')]}"/>
|
attrs="{'readonly':[('state', '!=', 'draft')]}"/>
|
||||||
</div>
|
</div>
|
||||||
|
<field name="is_return_calculation" widget="boolean_toggle"
|
||||||
|
attrs="{'readonly':[('state', '!=', 'draft')]}"/>
|
||||||
<field name="branch_custom_ids" required="1"
|
<field name="branch_custom_ids" required="1"
|
||||||
widget="many2many_tags" attrs="{'readonly':[('state', '!=', 'draft')]}"
|
widget="many2many_tags" attrs="{'readonly':[('state', '!=', 'draft')]}"
|
||||||
/>
|
/>
|
||||||
|
|
@ -138,6 +140,7 @@
|
||||||
<field name="company_id" groups="base.group_multi_company"/>
|
<field name="company_id" groups="base.group_multi_company"/>
|
||||||
<field name="currency_id" invisible="1" groups="base.group_multi_currency"/>
|
<field name="currency_id" invisible="1" groups="base.group_multi_currency"/>
|
||||||
<field name="available_payment_method_line_ids" invisible="1"/>
|
<field name="available_payment_method_line_ids" invisible="1"/>
|
||||||
|
<field name="line_domain_ids" invisible="1"/>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<!-- Notebook with Families page -->
|
<!-- Notebook with Families page -->
|
||||||
|
|
@ -257,11 +260,13 @@
|
||||||
attrs="{'column_invisible': [('parent.cloth_expense', '!=', True)]}"/>
|
attrs="{'column_invisible': [('parent.cloth_expense', '!=', True)]}"/>
|
||||||
<field name="total_family_expenses"/>
|
<field name="total_family_expenses"/>
|
||||||
<field name="payment_order_id" invisible="1"/>
|
<field name="payment_order_id" invisible="1"/>
|
||||||
|
<field name="is_return" optional="hide"/>
|
||||||
|
<field name="return_reason_id" optional="hide"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</page>
|
</page>
|
||||||
<page string="Othaim Line"
|
<page string="Othaim Line"
|
||||||
attrs="{'invisible': ['|',('state', '=', 'draft'),('meal_expense', '=', False)]}">
|
attrs="{'invisible': ['|','|',('is_return_calculation', '=', True),('state', '=', 'draft'),('meal_expense', '=', False)]}">
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<!-- Family Count -->
|
<!-- Family Count -->
|
||||||
<div class="col-4">
|
<div class="col-4">
|
||||||
|
|
@ -348,6 +353,27 @@
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</page>
|
</page>
|
||||||
|
<page string="Return Lines" attrs="{'invisible': [('is_return_calculation', '=', False)]}">
|
||||||
|
<field name="return_expense_line_ids" widget="many2many" domain="[('id', 'in', line_domain_ids)]"
|
||||||
|
attrs="{'readonly':[('state', '!=', 'draft')]}">
|
||||||
|
<tree>
|
||||||
|
<field name="family_id"/>
|
||||||
|
<field name="branch_id"/>
|
||||||
|
<field name="meal_card"/>
|
||||||
|
<field name="benefit_member_count"/>
|
||||||
|
<field name="family_monthly_income"
|
||||||
|
attrs="{'column_invisible': [('parent.cash_expense', '!=', True)]}"/>
|
||||||
|
<field name="family_monthly_meals"
|
||||||
|
attrs="{'column_invisible': [('parent.meal_expense', '!=', True)]}"/>
|
||||||
|
<field name="family_monthly_clotting"
|
||||||
|
attrs="{'column_invisible': [('parent.cloth_expense', '!=', True)]}"/>
|
||||||
|
<field name="total_family_expenses"/>
|
||||||
|
<field name="payment_order_id" invisible="1"/>
|
||||||
|
<field name="is_return"/>
|
||||||
|
<field name="return_reason_id"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</page>
|
||||||
</notebook>
|
</notebook>
|
||||||
</sheet>
|
</sheet>
|
||||||
<div class="oe_chatter">
|
<div class="oe_chatter">
|
||||||
|
|
|
||||||
|
|
@ -80,8 +80,7 @@
|
||||||
<notebook>
|
<notebook>
|
||||||
<page string="Services Requests"
|
<page string="Services Requests"
|
||||||
attrs="{'invisible':[('type','not in',['seasonal_services','services'])]}">
|
attrs="{'invisible':[('type','not in',['seasonal_services','services'])]}">
|
||||||
<field name="service_requests_ids" widget="one2many_list"
|
<field name="service_requests_ids" readonly="1">
|
||||||
readonly="1">
|
|
||||||
<tree>
|
<tree>
|
||||||
<field name="family_id"/>
|
<field name="family_id"/>
|
||||||
<field name="benefit_type" optional="hidden"/>
|
<field name="benefit_type" optional="hidden"/>
|
||||||
|
|
@ -98,6 +97,13 @@
|
||||||
decoration-danger="state in ['refused']"
|
decoration-danger="state in ['refused']"
|
||||||
decoration-info="state in ['first_approve','waiting_approve']"
|
decoration-info="state in ['first_approve','waiting_approve']"
|
||||||
decoration-warning="state in ['researcher']"/>
|
decoration-warning="state in ['researcher']"/>
|
||||||
|
<field name="return_reason_id" optional="hide"/>
|
||||||
|
<button name="action_return_bank"
|
||||||
|
type="object"
|
||||||
|
string="Bank Return"
|
||||||
|
class="btn btn-danger"
|
||||||
|
attrs="{'invisible': ['|',('state', '!=', 'accounting_approve'),('parent.state', '!=', 'waiting_deposit')]}"
|
||||||
|
/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</page>
|
</page>
|
||||||
|
|
@ -131,6 +137,14 @@
|
||||||
<field name="family_monthly_clotting"/>
|
<field name="family_monthly_clotting"/>
|
||||||
<field name="total_family_expenses"/>
|
<field name="total_family_expenses"/>
|
||||||
<field name="payment_order_id" invisible="1"/>
|
<field name="payment_order_id" invisible="1"/>
|
||||||
|
<field name="is_return" optional="hide"/>
|
||||||
|
<field name="return_reason_id" optional="hide"/>
|
||||||
|
<button name="action_return_bank"
|
||||||
|
type="object"
|
||||||
|
string="Bank Return"
|
||||||
|
class="btn btn-danger"
|
||||||
|
attrs="{'invisible': ['|',('is_return', '=', True),('parent.state', '!=', 'waiting_deposit')]}"
|
||||||
|
/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</page>
|
</page>
|
||||||
|
|
|
||||||
|
|
@ -112,6 +112,11 @@
|
||||||
states="accounting_approve"
|
states="accounting_approve"
|
||||||
groups="odex_benefit.group_benefit_accounting_accept"
|
groups="odex_benefit.group_benefit_accounting_accept"
|
||||||
/>
|
/>
|
||||||
|
<button name="action_processed" type="object"
|
||||||
|
string="Processed" class="oe_highlight"
|
||||||
|
states="return_to_bank"
|
||||||
|
groups="odex_benefit.group_benefit_researcher"
|
||||||
|
/>
|
||||||
<button name="action_supplier_approve" type="object"
|
<button name="action_supplier_approve" type="object"
|
||||||
string="Send Request To Supplier" class="oe_highlight"
|
string="Send Request To Supplier" class="oe_highlight"
|
||||||
confirm="Are you sure you want to approve ?"
|
confirm="Are you sure you want to approve ?"
|
||||||
|
|
@ -163,6 +168,13 @@
|
||||||
</header>
|
</header>
|
||||||
<sheet>
|
<sheet>
|
||||||
<div class="oe_button_box" name="button_box">
|
<div class="oe_button_box" name="button_box">
|
||||||
|
<button name="action_open_payment_orders"
|
||||||
|
type="object"
|
||||||
|
class="oe_stat_button"
|
||||||
|
icon="fa-money"
|
||||||
|
attrs="{'invisible': [('payment_order_count', '=', 0)]}">
|
||||||
|
<field name="payment_order_count" widget="statinfo" string="Payment Orders"/>
|
||||||
|
</button>
|
||||||
<button name="action_open_related_move_records"
|
<button name="action_open_related_move_records"
|
||||||
class="oe_stat_button"
|
class="oe_stat_button"
|
||||||
icon="fa-file-text-o"
|
icon="fa-file-text-o"
|
||||||
|
|
@ -170,6 +182,7 @@
|
||||||
<field name="total_moves" widget="statinfo" string="Total Moves"/>
|
<field name="total_moves" widget="statinfo" string="Total Moves"/>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
<field name="payment_order_ids" invisible="1"/>
|
||||||
<field name="is_payment_order_done" invisible="1"/>
|
<field name="is_payment_order_done" invisible="1"/>
|
||||||
<field name="payment_order_state" invisible="1"/>
|
<field name="payment_order_state" invisible="1"/>
|
||||||
<widget name="web_ribbon" title="Payment Done" bg_color="bg-success"
|
<widget name="web_ribbon" title="Payment Done" bg_color="bg-success"
|
||||||
|
|
@ -282,6 +295,8 @@
|
||||||
<group>
|
<group>
|
||||||
<field name="description"
|
<field name="description"
|
||||||
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"/>
|
attrs="{'readonly':[('state','not in',['draft','researcher','waiting_approve'])]}"/>
|
||||||
|
<field name="return_reason_id" attrs="{'invisible': [('return_reason_id', '=', False)]}"
|
||||||
|
readonly="1"/>
|
||||||
<field name="return_reason" attrs="{'invisible': [('return_reason', '=', False)]}"
|
<field name="return_reason" attrs="{'invisible': [('return_reason', '=', False)]}"
|
||||||
readonly="1"/>
|
readonly="1"/>
|
||||||
<field name="specialist_note" attrs="{'invisible': [('return_reason', '=', False)]}"/>
|
<field name="specialist_note" attrs="{'invisible': [('return_reason', '=', False)]}"/>
|
||||||
|
|
|
||||||
|
|
@ -14,3 +14,24 @@ class ReasonForReturnWizard(models.TransientModel):
|
||||||
'return_reason': record.reason,
|
'return_reason': record.reason,
|
||||||
'state': 'researcher',
|
'state': 'researcher',
|
||||||
})
|
})
|
||||||
|
|
||||||
|
class ReturnReasonWizard(models.TransientModel):
|
||||||
|
_name = "return.reason.wizard"
|
||||||
|
_description = "Return Reason Wizard"
|
||||||
|
|
||||||
|
line_id = fields.Integer("Line ID")
|
||||||
|
line_model = fields.Char("Line Model")
|
||||||
|
return_reason_id = fields.Many2one("return.reason", string="Return Reason", required=True)
|
||||||
|
|
||||||
|
def action_confirm(self):
|
||||||
|
self.ensure_one()
|
||||||
|
|
||||||
|
record = self.env[self.line_model].browse(self.line_id)
|
||||||
|
record.return_reason_id = self.return_reason_id.id
|
||||||
|
if hasattr(record, "is_return"):
|
||||||
|
record.is_return = True
|
||||||
|
if self.line_model == "service.request" and hasattr(record, "state"):
|
||||||
|
record.state = "return_to_bank"
|
||||||
|
record.payment_order_id = False
|
||||||
|
|
||||||
|
return {'type': 'ir.actions.act_window_close'}
|
||||||
|
|
@ -14,4 +14,21 @@
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
<record id="return_reason_wizard_form" model="ir.ui.view">
|
||||||
|
<field name="name">return.reason.wizard.form</field>
|
||||||
|
<field name="model">return.reason.wizard</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form string="Bank Return">
|
||||||
|
<group>
|
||||||
|
<field name="line_id" invisible="1"/>
|
||||||
|
<field name="line_model" invisible="1"/>
|
||||||
|
<field name="return_reason_id"/>
|
||||||
|
</group>
|
||||||
|
<footer>
|
||||||
|
<button name="action_confirm" type="object" string="Confirm" class="btn btn-primary"/>
|
||||||
|
<button string="Cancel" special="cancel" class="btn btn-secondary"/>
|
||||||
|
</footer>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|
|
||||||
|
|
@ -243,6 +243,11 @@ msgstr "<strong>تاريخ الدفع:</strong>"
|
||||||
msgid "<strong>Payment Method:</strong>"
|
msgid "<strong>Payment Method:</strong>"
|
||||||
msgstr "<strong>طريقة الدفع:</strong>"
|
msgstr "<strong>طريقة الدفع:</strong>"
|
||||||
|
|
||||||
|
#. 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
|
#. module: odex_takaful
|
||||||
#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document
|
#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document
|
||||||
msgid "<strong>Payment Method</strong>"
|
msgid "<strong>Payment Method</strong>"
|
||||||
|
|
|
||||||
|
|
@ -99,6 +99,34 @@ class DonationsDetailsLines(models.Model):
|
||||||
journal_id = fields.Many2one('account.journal', string="Journal",domain="[('type','=','bank')]",default=_default_journal_id)
|
journal_id = fields.Many2one('account.journal', string="Journal",domain="[('type','=','bank')]",default=_default_journal_id)
|
||||||
benefit_status = fields.Selection(related='benefit_id.member_status')
|
benefit_status = fields.Selection(related='benefit_id.member_status')
|
||||||
ages = fields.Integer(compute='_compute_get_age_range' , store=True)
|
ages = fields.Integer(compute='_compute_get_age_range' , store=True)
|
||||||
|
waiting_date = fields.Date(
|
||||||
|
string="تاريخ الانتظار",
|
||||||
|
compute="_compute_dates",
|
||||||
|
store=True
|
||||||
|
)
|
||||||
|
|
||||||
|
replace_date = fields.Date(
|
||||||
|
string="تاريخ الاستبدال",
|
||||||
|
compute="_compute_dates",
|
||||||
|
store=True
|
||||||
|
)
|
||||||
|
|
||||||
|
@api.depends('state')
|
||||||
|
def _compute_dates(self):
|
||||||
|
"""Automatically set waiting_date or replace_date based on state."""
|
||||||
|
for rec in self:
|
||||||
|
if rec.state == 'waiting':
|
||||||
|
print(date.today())
|
||||||
|
rec.waiting_date = date.today()
|
||||||
|
rec.replace_date = False
|
||||||
|
elif rec.state == 'replace':
|
||||||
|
rec.replace_date = date.today()
|
||||||
|
rec.waiting_date = False
|
||||||
|
else:
|
||||||
|
rec.waiting_date = False
|
||||||
|
rec.replace_date = False
|
||||||
|
|
||||||
|
|
||||||
# cheque_number = fields.Integer(string="Cheque Number")
|
# cheque_number = fields.Integer(string="Cheque Number")
|
||||||
# cheque_due_date = fields.Date(string="Cheque Due Date")
|
# cheque_due_date = fields.Date(string="Cheque Due Date")
|
||||||
# cheque_file_attachment = fields.Binary(string='Cheque Attachment', attachment=True)
|
# cheque_file_attachment = fields.Binary(string='Cheque Attachment', attachment=True)
|
||||||
|
|
@ -881,6 +909,20 @@ class DonationsDetailsLines(models.Model):
|
||||||
if sponsorship and len(sponsorship) == 1:
|
if sponsorship and len(sponsorship) == 1:
|
||||||
message = _("Benefit IDs changed in a donation item:<br/>%s") % "<br/>".join(changes)
|
message = _("Benefit IDs changed in a donation item:<br/>%s") % "<br/>".join(changes)
|
||||||
sponsorship.message_post(body=message)
|
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()
|
self.onset_benefit_id()
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
|
||||||
|
|
@ -281,6 +281,14 @@ class ResPartner(models.Model):
|
||||||
if 'mobile' in vals:
|
if 'mobile' in vals:
|
||||||
self._check_phone_numbers(vals['mobile'])
|
self._check_phone_numbers(vals['mobile'])
|
||||||
vals['mobile'] = self.phone_format(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)
|
res = super(ResPartner, self).write(vals)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -61,11 +61,12 @@
|
||||||
<field name="name">donations.details.lines.view.tree</field>
|
<field name="name">donations.details.lines.view.tree</field>
|
||||||
<field name="model">donations.details.lines</field>
|
<field name="model">donations.details.lines</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<tree default_order="create_date asc" create="0" edit="0">
|
<tree default_order="create_date asc , waiting_date asc , replace_date asc" create="0" edit="0" >
|
||||||
<field name="sponsorship_scheduling_line_ids" invisible="1" />
|
<field name="sponsorship_scheduling_line_ids" invisible="1" />
|
||||||
<field name="direct_debit" invisible="1" />
|
<field name="direct_debit" invisible="1" />
|
||||||
<field name="sequence_no" />
|
<field name="sequence_no" />
|
||||||
<field name="sponsor_id" />
|
<field name="sponsor_id" />
|
||||||
|
|
||||||
<field name="sponsor_phone" widget="phone"/>
|
<field name="sponsor_phone" widget="phone"/>
|
||||||
<field name="donation_type" optional="show"/>
|
<field name="donation_type" optional="show"/>
|
||||||
<field name="sponsorship_duration" optional="hide"/>
|
<field name="sponsorship_duration" optional="hide"/>
|
||||||
|
|
@ -84,6 +85,8 @@
|
||||||
<field name="benefit_id" optional="hide" />
|
<field name="benefit_id" optional="hide" />
|
||||||
<field name="sponsorship_creation_date" />
|
<field name="sponsorship_creation_date" />
|
||||||
<field name="create_date" optional="hide"/>
|
<field name="create_date" optional="hide"/>
|
||||||
|
<field name="waiting_date" widget="date" optional="hide"/>
|
||||||
|
<field name="replace_date" widget="date" optional="hide"/>
|
||||||
<field name="state" widget="badge"
|
<field name="state" widget="badge"
|
||||||
decoration-muted="state == 'draft'"
|
decoration-muted="state == 'draft'"
|
||||||
decoration-warning="state == 'waiting'"
|
decoration-warning="state == 'waiting'"
|
||||||
|
|
@ -179,6 +182,7 @@
|
||||||
<group>
|
<group>
|
||||||
<group string="Donation Information">
|
<group string="Donation Information">
|
||||||
<field name="ages" invisible="1" />
|
<field name="ages" invisible="1" />
|
||||||
|
<field name="waiting_date" widget="date" />
|
||||||
<field name="donation_type" invisible="1"/>
|
<field name="donation_type" invisible="1"/>
|
||||||
<field name="donation_types"
|
<field name="donation_types"
|
||||||
attrs="{'invisible': [('donation_type', '!=', 'donation')], 'readonly': [('parent_state', '!=', 'draft')]}" />
|
attrs="{'invisible': [('donation_type', '!=', 'donation')], 'readonly': [('parent_state', '!=', 'draft')]}" />
|
||||||
|
|
@ -362,16 +366,18 @@
|
||||||
<field name="name">Donations Details Lines waiting</field>
|
<field name="name">Donations Details Lines waiting</field>
|
||||||
<field name="res_model">donations.details.lines</field>
|
<field name="res_model">donations.details.lines</field>
|
||||||
<field name="view_mode">tree,form</field>
|
<field name="view_mode">tree,form</field>
|
||||||
|
<field name="domain">[('state', '=', 'waiting')]</field>
|
||||||
<field name="search_view_id" ref="donations_details_lines_view_search"/>
|
<field name="search_view_id" ref="donations_details_lines_view_search"/>
|
||||||
<field name="context">{'create': False, 'delete': False, 'search_default_filter_waiting': 1}</field>
|
<field name="context">{'create': False, 'delete': False}</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="donations_details_lines_replace_action" model="ir.actions.act_window">
|
<record id="donations_details_lines_replace_action" model="ir.actions.act_window">
|
||||||
<field name="name">Donations Details Lines Replacement</field>
|
<field name="name">Donations Details Lines Replacement</field>
|
||||||
<field name="res_model">donations.details.lines</field>
|
<field name="res_model">donations.details.lines</field>
|
||||||
<field name="view_mode">tree,form</field>
|
<field name="view_mode">tree,form</field>
|
||||||
|
<field name="domain">[('state', '=', 'replace')]</field>
|
||||||
<field name="search_view_id" ref="donations_details_lines_view_search"/>
|
<field name="search_view_id" ref="donations_details_lines_view_search"/>
|
||||||
<field name="context">{'create': False, 'delete': False, 'search_default_filter_replace': 1}</field>
|
<field name="context">{'create': False, 'delete': False}</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|
|
||||||
|
|
@ -13,11 +13,13 @@
|
||||||
<menuitem id="donations_details_lines_app_menu" parent="kafalat_main_menu"
|
<menuitem id="donations_details_lines_app_menu" parent="kafalat_main_menu"
|
||||||
name="Donations Details Lines" action="donations_details_lines_action" sequence="2"/>
|
name="Donations Details Lines" action="donations_details_lines_action" sequence="2"/>
|
||||||
|
|
||||||
<menuitem id="donations_details_lines_waiting_app_menu" parent="menu_replacement_root"
|
|
||||||
name="Donations Details Lines Waiting Benefit" action="donations_details_lines_waiting_action" sequence="3"/>
|
|
||||||
|
|
||||||
<menuitem id="donations_details_lines_to_replace_app_menu" parent="menu_replacement_root"
|
<menuitem id="donations_details_lines_to_replace_app_menu" parent="menu_replacement_root"
|
||||||
name="Donations Details Lines To Replace Benefit" action="donations_details_lines_replace_action" sequence="4"/>
|
name="Donations Details Lines To Replace Benefit" action="donations_details_lines_replace_action" sequence="3"/>
|
||||||
|
|
||||||
|
<menuitem id="donations_details_lines_waiting_app_menu" parent="menu_replacement_root"
|
||||||
|
name="Donations Details Lines Waiting Benefit" action="donations_details_lines_waiting_action" sequence="4"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- TODO WE WILL USE IT LATER DON'T REMOVE THIS -->
|
<!-- TODO WE WILL USE IT LATER DON'T REMOVE THIS -->
|
||||||
<!-- START OF THE BLOCK -->
|
<!-- START OF THE BLOCK -->
|
||||||
|
|
@ -27,7 +29,7 @@
|
||||||
<menuitem id="sponsorship_cancellation_menu" name="Sponsorship Cancellation"
|
<menuitem id="sponsorship_cancellation_menu" name="Sponsorship Cancellation"
|
||||||
parent="kafalat_main_menu" action="sponsorship_cancellation_action" sequence="3" />
|
parent="kafalat_main_menu" action="sponsorship_cancellation_action" sequence="3" />
|
||||||
|
|
||||||
<menuitem id="takaful_contribution_app_menu" name="The Financial Contributions"
|
<menuitem id="takaful_contribution_app_menu" name="The Financial Contributions"
|
||||||
parent="kafalat_main_menu" action="takaful_financial_contribution_action" sequence="4"/>
|
parent="kafalat_main_menu" action="takaful_financial_contribution_action" sequence="4"/>
|
||||||
|
|
||||||
<menuitem id="takaful_push_notification_menu" name="Notifications Messages"
|
<menuitem id="takaful_push_notification_menu" name="Notifications Messages"
|
||||||
|
|
@ -141,4 +143,4 @@
|
||||||
|
|
||||||
<!-- END Kufala Settings -->
|
<!-- END Kufala Settings -->
|
||||||
|
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|
|
||||||
|
|
@ -514,6 +514,7 @@
|
||||||
<group>
|
<group>
|
||||||
<group>
|
<group>
|
||||||
<field name="ages" invisible="1"/>
|
<field name="ages" invisible="1"/>
|
||||||
|
<field name="waiting_date" invisible="1" widget="date"/>
|
||||||
<field name="family_id"
|
<field name="family_id"
|
||||||
attrs="{'invisible': [('sponsorship_type','=','group'), ('parent.record_type','=','sponsorship')],
|
attrs="{'invisible': [('sponsorship_type','=','group'), ('parent.record_type','=','sponsorship')],
|
||||||
'readonly': ['|', ('sponsorship_type', '!=', 'group'), ('parent.record_type','!=','donation')],
|
'readonly': ['|', ('sponsorship_type', '!=', 'group'), ('parent.record_type','!=','donation')],
|
||||||
|
|
|
||||||
|
|
@ -90,11 +90,11 @@
|
||||||
</div>
|
</div>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<field name="kafel_id" readonly="1"/>
|
<field name="kafel_id" readonly="1" invisible="1"/>
|
||||||
</group>
|
</group>
|
||||||
<group name="group_top">
|
<group name="group_top">
|
||||||
<group name="group_main" colspan="2">
|
<group name="group_main" colspan="2">
|
||||||
<field name="mobile" string="رقم الجوال" widget="phone" placeholder="05xxxxxxxx" attrs="{'required': [('parent_id', '=', False)]}"/>
|
<field name="mobile" string="رقم الجوال" widget="phone" placeholder="05xxxxxxxx" attrs="{'required': [('parent_id', '=', False)]}" />
|
||||||
<field name="preferred_communication" string="طريقة التواصل المفضلة" required="1"/>
|
<field name="preferred_communication" string="طريقة التواصل المفضلة" required="1"/>
|
||||||
<field name="gender" attrs="{'required': [('company_type', '=', 'person')],'invisible': [('company_type', '!=', 'person')]}"/>
|
<field name="gender" attrs="{'required': [('company_type', '=', 'person')],'invisible': [('company_type', '!=', 'person')]}"/>
|
||||||
<field name="street" attrs="{'invisible': [('company_type', '=', 'person')]}"/>
|
<field name="street" attrs="{'invisible': [('company_type', '=', 'person')]}"/>
|
||||||
|
|
|
||||||
|
|
@ -30,11 +30,17 @@ class AccountRegisterPayment(models.TransientModel):
|
||||||
transaction_file_attachment = fields.Binary(string='Transaction Attachment', attachment=False)
|
transaction_file_attachment = fields.Binary(string='Transaction Attachment', attachment=False)
|
||||||
transaction_attachment_file_name = fields.Char('Transaction File Name', required=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")
|
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_number = fields.Char(string='Check Number')
|
||||||
check_due_date = fields.Date(string='Check Due Date')
|
check_due_date = fields.Date(string='Check Due Date')
|
||||||
sponsorship_payment = fields.Boolean(string='Sponsorship Payment', default=False)
|
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")
|
@api.onchange("takaful_payment_method_id")
|
||||||
def onchange_takaful_payment_method_id(self):
|
def onchange_takaful_payment_method_id(self):
|
||||||
for rec in self:
|
for rec in self:
|
||||||
|
|
@ -48,6 +54,7 @@ class AccountRegisterPayment(models.TransientModel):
|
||||||
j_type = "bank"
|
j_type = "bank"
|
||||||
if j_type:
|
if j_type:
|
||||||
return {"domain": {"journal_id": [("type", "=", 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')
|
@api.depends('source_amount', 'source_amount_currency', 'source_currency_id', 'company_id', 'currency_id', 'payment_date')
|
||||||
def _compute_amount(self):
|
def _compute_amount(self):
|
||||||
|
|
@ -66,6 +73,7 @@ class AccountRegisterPayment(models.TransientModel):
|
||||||
rec.takaful_payment_method = "bank"
|
rec.takaful_payment_method = "bank"
|
||||||
else:
|
else:
|
||||||
rec.takaful_payment_method = "cash"
|
rec.takaful_payment_method = "cash"
|
||||||
|
|
||||||
|
|
||||||
def _create_payments(self):
|
def _create_payments(self):
|
||||||
sponsorship_line_ids = self.env.context.get('sponsorship_line_ids')
|
sponsorship_line_ids = self.env.context.get('sponsorship_line_ids')
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,71 @@
|
||||||
attrs="{'invisible': ['|', ('sponsorship_payment', '=', False), ('takaful_payment_method','not in',['bank', 'check'])], 'required': [('sponsorship_payment', '=', True), ('takaful_payment_method','=','bank')]}"/>
|
attrs="{'invisible': ['|', ('sponsorship_payment', '=', False), ('takaful_payment_method','not in',['bank', 'check'])], 'required': [('sponsorship_payment', '=', True), ('takaful_payment_method','=','bank')]}"/>
|
||||||
<field name="transaction_attachment_file_name" invisible="1"/>
|
<field name="transaction_attachment_file_name" invisible="1"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
<!--<xpath expr="//group" position="after">-->
|
||||||
|
<!-- <notebook>-->
|
||||||
|
<!-- <page string="Sub Payments" attrs="{'invisible': [('group_payment', '=', False)]}">-->
|
||||||
|
<!-- <field name="account_payment_register_ids" attrs="{'invisible': [('group_payment', '=', False)]}" nolabel="1">-->
|
||||||
|
<!-- <tree editable="bottom" delete="true" create="true">-->
|
||||||
|
<!-- <field name="sponsorship_payment" invisible="1"/>-->
|
||||||
|
<!-- <field name="takaful_payment_method" invisible="1"/>-->
|
||||||
|
<!-- <field name="available_partner_bank_ids" invisible="1"/>-->
|
||||||
|
<!-- <field name="company_id" invisible="1"/>-->
|
||||||
|
<!-- <field name="takaful_payment_method_id" options="{'no_create': True, 'no_create_edit': True}"/>-->
|
||||||
|
<!-- <field name="journal_id" string="Association Journal"/>-->
|
||||||
|
<!-- <field name="amount"/>-->
|
||||||
|
<!-- <field name="check_number"-->
|
||||||
|
<!-- attrs="{-->
|
||||||
|
<!-- 'invisible': [-->
|
||||||
|
<!-- ('takaful_payment_method','!=','check')-->
|
||||||
|
<!-- ],-->
|
||||||
|
<!-- 'required': [-->
|
||||||
|
<!-- ('takaful_payment_method','=','check')-->
|
||||||
|
<!-- ]-->
|
||||||
|
<!-- }"-->
|
||||||
|
<!-- optional="hide"/>-->
|
||||||
|
<!-- <field name="check_due_date"-->
|
||||||
|
<!-- attrs="{-->
|
||||||
|
<!-- 'invisible': [-->
|
||||||
|
<!-- ('takaful_payment_method','!=','check')-->
|
||||||
|
<!-- ],-->
|
||||||
|
<!-- 'required': [-->
|
||||||
|
<!-- ('takaful_payment_method','=','check')-->
|
||||||
|
<!-- ]-->
|
||||||
|
<!-- }"-->
|
||||||
|
<!-- optional="hide"/>-->
|
||||||
|
<!-- <field name="partner_bank_id"-->
|
||||||
|
<!-- context="{-->
|
||||||
|
<!-- 'form_view_ref': 'odex_takaful.res_partner_bank_view_form_quick_create',-->
|
||||||
|
<!-- 'default_partner_id': context.get('force_sponsorship_line_partner_id')-->
|
||||||
|
<!-- }"-->
|
||||||
|
<!-- attrs="{-->
|
||||||
|
<!-- 'required': [-->
|
||||||
|
<!-- ('takaful_payment_method','=','bank')-->
|
||||||
|
<!-- ],-->
|
||||||
|
<!-- 'invisible': [-->
|
||||||
|
<!-- ('takaful_payment_method','!=','bank')-->
|
||||||
|
<!-- ]-->
|
||||||
|
<!-- }"-->
|
||||||
|
<!-- readonly="0"-->
|
||||||
|
<!-- optional="hide"/>-->
|
||||||
|
<!-- <field name="transaction_file_attachment"-->
|
||||||
|
<!-- widget="binary"-->
|
||||||
|
<!-- filename="transaction_attachment_file_name"-->
|
||||||
|
<!-- attrs="{-->
|
||||||
|
<!-- 'invisible': [-->
|
||||||
|
<!-- ('takaful_payment_method','not in',['bank', 'check'])-->
|
||||||
|
<!-- ],-->
|
||||||
|
<!-- 'required': ['|',-->
|
||||||
|
<!-- ('takaful_payment_method','=','bank'),-->
|
||||||
|
<!-- ('takaful_payment_method','=','check')-->
|
||||||
|
<!-- ]-->
|
||||||
|
<!-- }"-->
|
||||||
|
<!-- optional="hide"/>-->
|
||||||
|
<!-- </tree>-->
|
||||||
|
<!-- </field>-->
|
||||||
|
<!-- </page>-->
|
||||||
|
<!-- </notebook>-->
|
||||||
|
<!-- </xpath>-->
|
||||||
<!-- <xpath expr="//footer/button[@name='action_create_payments']" position="after">-->
|
<!-- <xpath expr="//footer/button[@name='action_create_payments']" position="after">-->
|
||||||
<!-- <button name="action_register_all_lines"-->
|
<!-- <button name="action_register_all_lines"-->
|
||||||
<!-- type="object"-->
|
<!-- type="object"-->
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue