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_grant_benefit__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"
|
||||
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.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.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_search
|
||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_family_bank_report_wizard_form
|
||||
|
|
@ -3187,6 +3189,7 @@ msgid "Configuration"
|
|||
msgstr "إعدادات ملف الأسرة"
|
||||
|
||||
#. 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_search
|
||||
#: 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_visits_types__name
|
||||
#: 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.family_member_form
|
||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.grant_benefit_form
|
||||
|
|
@ -14419,6 +14423,11 @@ msgstr "أمر الصرف"
|
|||
msgid "Payment Order"
|
||||
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
|
||||
#: 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
|
||||
|
|
@ -14694,6 +14703,7 @@ msgstr "هل أنت متأكد أنك تريد الإرجاع للاخصائي؟
|
|||
#. module: odex_benefit
|
||||
#: 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_return_reason_wizard
|
||||
#, python-format
|
||||
msgid "Return Reason Wizard"
|
||||
msgstr "سبب الإرجاع"
|
||||
|
|
@ -14701,9 +14711,16 @@ msgstr "سبب الإرجاع"
|
|||
#. 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_suspend_reason__is_return_reason
|
||||
#: model:ir.model.fields,field_description:odex_benefit.field_return_reason_wizard__return_reason_id
|
||||
msgid "Return Reason"
|
||||
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
|
||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_entity_return_reason_wizard_form
|
||||
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.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_service_request__payment_order_ids
|
||||
#: model_terms:ir.ui.view,arch_db:odex_benefit.service_request_form
|
||||
#, python-format
|
||||
msgid "Payment Orders"
|
||||
msgstr "أوامر صرف الخدمات"
|
||||
|
|
@ -17255,3 +17274,92 @@ msgid ""
|
|||
msgstr ""
|
||||
"<i class=\"fa fa-calculator text-success\" style=\"font-size: 20px; margin-bottom: 4px;\"/>\n"
|
||||
" <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'
|
||||
_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_reject_reason = fields.Boolean(string="Reject 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)
|
||||
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):
|
||||
_name = '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',
|
||||
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')
|
||||
def _compute_payment_move_state(self):
|
||||
|
|
@ -148,6 +157,29 @@ class ConfirmBenefitExpense(models.Model):
|
|||
}
|
||||
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):
|
||||
for rec in self:
|
||||
if rec.state != 'draft':
|
||||
|
|
@ -160,6 +192,9 @@ class ConfirmBenefitExpense(models.Model):
|
|||
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."))
|
||||
|
||||
if rec.is_return_calculation:
|
||||
rec._calculate_return_lines()
|
||||
else:
|
||||
rec.benefit_expense_line_ids.unlink()
|
||||
lines = []
|
||||
for fam in families:
|
||||
|
|
@ -181,11 +216,28 @@ class ConfirmBenefitExpense(models.Model):
|
|||
raise UserError(_("You can only recalculate when status is 'Calculated'."))
|
||||
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):
|
||||
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)
|
||||
if rec.is_return_calculation:
|
||||
domain = [
|
||||
('start_date', '<=', rec.end_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))
|
||||
|
||||
return_lines = Line.search(domain)
|
||||
rec.line_domain_ids = return_lines
|
||||
rec.family_domain_ids = return_lines.mapped('family_id')
|
||||
else:
|
||||
# Define base domain for family selection
|
||||
|
||||
base_domain = ['|', ('state', '=', 'second_approve'), '&',
|
||||
('state', 'in', ('waiting_approve', 'first_approve')), ('action_type', '=', 'suspended')]
|
||||
if rec.branch_custom_ids:
|
||||
|
|
@ -206,6 +258,7 @@ class ConfirmBenefitExpense(models.Model):
|
|||
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')
|
||||
def _onchange_branch_custom_ids(self):
|
||||
|
|
@ -320,6 +373,7 @@ class ConfirmBenefitExpense(models.Model):
|
|||
})
|
||||
rec.payment_order_id = payment_order
|
||||
|
||||
if not rec.is_return_calculation:
|
||||
# Create Vendor Bill for Meal Card Invoice(othaime)
|
||||
account_id = validation_setting.meal_expense_account_id
|
||||
invoice_lines = []
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ class BenefitExpenseLine(models.Model):
|
|||
|
||||
confirm_expense_id = fields.Many2one(comodel_name='confirm.benefit.expense', string='Confirm Benefit Expense',
|
||||
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)
|
||||
branch_id = fields.Many2one(comodel_name='branch.settings', string='Branch')
|
||||
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', )
|
||||
end_date = fields.Date(string='End Date', )
|
||||
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')
|
||||
def _compute_total_family_expenses(self):
|
||||
for rec in self:
|
||||
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 stdnum.au.acn import to_abn
|
||||
from odoo.exceptions import ValidationError,UserError
|
||||
from odoo.exceptions import ValidationError, UserError
|
||||
|
||||
|
||||
class PaymentOrders(models.Model):
|
||||
|
|
@ -22,7 +22,10 @@ class PaymentOrders(models.Model):
|
|||
compute='_compute_service_type_id',
|
||||
inverse='_inverse_service_type_id',
|
||||
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',
|
||||
string='Benefit Expense Lines')
|
||||
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'
|
||||
|
||||
def create_entry(self):
|
||||
#todo add invoice type to the move
|
||||
for rec in self:
|
||||
if not rec.journal_id:
|
||||
raise UserError(_("Please select a journal before creating the entry."))
|
||||
|
|
@ -233,7 +235,7 @@ class PaymentOrders(models.Model):
|
|||
'credit': 0.0,
|
||||
}
|
||||
)
|
||||
total_credit += request.aid_amount
|
||||
total_credit += request.requested_service_amount
|
||||
elif self.type == 'benefit_expense':
|
||||
validation_setting = self.env["family.validation.setting"].search([], limit=1)
|
||||
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_ids = fields.One2many('home.maintenance.items', 'service_request_id',
|
||||
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?')
|
||||
aid_amount = fields.Float(string='Aid Amount', compute='_get_aid_amount')
|
||||
# Fields for alternative house
|
||||
|
|
@ -172,6 +176,7 @@ class ServiceRequest(models.Model):
|
|||
('projects_department', 'Waiting Projects Department'),
|
||||
('gm_assistant', 'Waiting Assistant General Manager'),
|
||||
('accounting_approve', 'Accounting Approve'),
|
||||
('return_to_bank', 'Return to Bank'),
|
||||
('approval_of_beneficiary_services', 'Approval of beneficiary services'),
|
||||
('send_request_to_supplier', 'Send Request To Supplier'),
|
||||
('family_received_device', 'Family Received Device'),
|
||||
|
|
@ -220,6 +225,15 @@ class ServiceRequest(models.Model):
|
|||
('waiting', 'Waiting Payment'),
|
||||
('done', 'Done Payment'), ], copy=False, compute="_compute_payment_order_state", store=True)
|
||||
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')
|
||||
def _compute_payment_order_state(self):
|
||||
|
|
@ -229,6 +243,7 @@ class ServiceRequest(models.Model):
|
|||
if rec.payment_order_id.state == "done":
|
||||
payment_order_state = "done"
|
||||
rec.service_approval_date = fields.Datetime.now()
|
||||
if rec.state == 'accounting_approve':
|
||||
rec.state = 'send_request_to_supplier'
|
||||
rec.is_payment_order_done = True
|
||||
else:
|
||||
|
|
@ -241,6 +256,24 @@ class ServiceRequest(models.Model):
|
|||
payment_order_state = "waiting"
|
||||
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')
|
||||
def _get_money_for_payment_is_appearance(self):
|
||||
for rec in self:
|
||||
|
|
@ -1016,12 +1049,17 @@ class ServiceRequest(models.Model):
|
|||
"• Not be linked to any payment order"
|
||||
) % names)
|
||||
|
||||
self.env['payment.orders'].create({
|
||||
payment_order = self.env['payment.orders'].create({
|
||||
'state': 'draft',
|
||||
'accountant_id': service_cats.accountant_id.id,
|
||||
'service_requests_ids': [(6, 0, self.ids)],
|
||||
'type': 'services',
|
||||
})
|
||||
self.write({
|
||||
'payment_order_ids': [(4, payment_order.id)],
|
||||
'payment_order_id': payment_order.id,
|
||||
})
|
||||
|
||||
elif service_cats.payment_method == "invoice":
|
||||
invalid_records = self.filtered(
|
||||
lambda r: r.state != 'accounting_approve'
|
||||
|
|
@ -1061,7 +1099,7 @@ class ServiceRequest(models.Model):
|
|||
def _get_total_move_lines(self):
|
||||
for rec in self:
|
||||
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":
|
||||
moves = self.vendor_bill
|
||||
|
||||
|
|
@ -1069,7 +1107,7 @@ class ServiceRequest(models.Model):
|
|||
|
||||
def action_open_related_move_records(self):
|
||||
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":
|
||||
moves = self.vendor_bill.ids
|
||||
|
||||
|
|
@ -1078,5 +1116,19 @@ class ServiceRequest(models.Model):
|
|||
'type': 'ir.actions.act_window',
|
||||
'res_model': 'account.move',
|
||||
'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},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -168,3 +168,5 @@ access_grant_benefit_account_move_line,access_grant_benefit_account_move_line,mo
|
|||
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_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>
|
||||
</field>
|
||||
</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">
|
||||
<field name="name">The Domestic Labor</field>
|
||||
<field name="res_model">domestic.labor</field>
|
||||
|
|
@ -1048,48 +1057,16 @@
|
|||
<menuitem id="seasonal_service_menu" name="Seasonal Services"
|
||||
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="benefit_need_menu" name="Benefit Need" sequence="1"-->
|
||||
<!-- parent="odex_benefit.benefit_services" action="benefit_need_action"/>-->
|
||||
<!-- <menuitem id="benefit_zkat_main_menu" name="Benefit Zkat" sequence="2"-->
|
||||
<!-- parent="odex_benefit.benefit_services"/>-->
|
||||
<!-- <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 id="benefit_zkat_menu" name="Benefit Zkat" sequence="2"-->
|
||||
<!-- parent="odex_benefit.benefit_zkat_main_menu" action="benefit_zkat_action"/>-->
|
||||
<!-- <menuitem id="food_basket_main_menu" name="Benefit Food Basket" sequence="3"-->
|
||||
<!-- 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"/>-->
|
||||
<menuitem name="Others"
|
||||
id="menu_accounting_others"
|
||||
parent="account.menu_finance_configuration"
|
||||
sequence="15"
|
||||
/>
|
||||
<menuitem name="Return Reasons"
|
||||
id="menu_return_reason"
|
||||
parent="menu_accounting_others"
|
||||
action="return_reason_action"
|
||||
/>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -1417,5 +1417,30 @@
|
|||
</tree>
|
||||
</field>
|
||||
</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>
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@
|
|||
<field name="family_monthly_clotting"/>
|
||||
<field name="family_monthly_othaime"/>
|
||||
<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"/>
|
||||
</tree>
|
||||
</field>
|
||||
|
|
@ -38,6 +40,8 @@
|
|||
<field name="meal_card"/>
|
||||
<field name="benefit_member_count"/>
|
||||
<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>
|
||||
<field name="family_monthly_income"/>
|
||||
|
|
|
|||
|
|
@ -121,6 +121,8 @@
|
|||
<field name="end_date"
|
||||
attrs="{'readonly':[('state', '!=', 'draft')]}"/>
|
||||
</div>
|
||||
<field name="is_return_calculation" widget="boolean_toggle"
|
||||
attrs="{'readonly':[('state', '!=', 'draft')]}"/>
|
||||
<field name="branch_custom_ids" required="1"
|
||||
widget="many2many_tags" attrs="{'readonly':[('state', '!=', 'draft')]}"
|
||||
/>
|
||||
|
|
@ -138,6 +140,7 @@
|
|||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="currency_id" invisible="1" groups="base.group_multi_currency"/>
|
||||
<field name="available_payment_method_line_ids" invisible="1"/>
|
||||
<field name="line_domain_ids" invisible="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<!-- Notebook with Families page -->
|
||||
|
|
@ -257,11 +260,13 @@
|
|||
attrs="{'column_invisible': [('parent.cloth_expense', '!=', True)]}"/>
|
||||
<field name="total_family_expenses"/>
|
||||
<field name="payment_order_id" invisible="1"/>
|
||||
<field name="is_return" optional="hide"/>
|
||||
<field name="return_reason_id" optional="hide"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<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">
|
||||
<!-- Family Count -->
|
||||
<div class="col-4">
|
||||
|
|
@ -348,6 +353,27 @@
|
|||
</tree>
|
||||
</field>
|
||||
</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>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
|
|
|
|||
|
|
@ -80,8 +80,7 @@
|
|||
<notebook>
|
||||
<page string="Services Requests"
|
||||
attrs="{'invisible':[('type','not in',['seasonal_services','services'])]}">
|
||||
<field name="service_requests_ids" widget="one2many_list"
|
||||
readonly="1">
|
||||
<field name="service_requests_ids" readonly="1">
|
||||
<tree>
|
||||
<field name="family_id"/>
|
||||
<field name="benefit_type" optional="hidden"/>
|
||||
|
|
@ -98,6 +97,13 @@
|
|||
decoration-danger="state in ['refused']"
|
||||
decoration-info="state in ['first_approve','waiting_approve']"
|
||||
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>
|
||||
</field>
|
||||
</page>
|
||||
|
|
@ -131,6 +137,14 @@
|
|||
<field name="family_monthly_clotting"/>
|
||||
<field name="total_family_expenses"/>
|
||||
<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>
|
||||
</field>
|
||||
</page>
|
||||
|
|
|
|||
|
|
@ -112,6 +112,11 @@
|
|||
states="accounting_approve"
|
||||
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"
|
||||
string="Send Request To Supplier" class="oe_highlight"
|
||||
confirm="Are you sure you want to approve ?"
|
||||
|
|
@ -163,6 +168,13 @@
|
|||
</header>
|
||||
<sheet>
|
||||
<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"
|
||||
class="oe_stat_button"
|
||||
icon="fa-file-text-o"
|
||||
|
|
@ -170,6 +182,7 @@
|
|||
<field name="total_moves" widget="statinfo" string="Total Moves"/>
|
||||
</button>
|
||||
</div>
|
||||
<field name="payment_order_ids" invisible="1"/>
|
||||
<field name="is_payment_order_done" invisible="1"/>
|
||||
<field name="payment_order_state" invisible="1"/>
|
||||
<widget name="web_ribbon" title="Payment Done" bg_color="bg-success"
|
||||
|
|
@ -282,6 +295,8 @@
|
|||
<group>
|
||||
<field name="description"
|
||||
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)]}"
|
||||
readonly="1"/>
|
||||
<field name="specialist_note" attrs="{'invisible': [('return_reason', '=', False)]}"/>
|
||||
|
|
|
|||
|
|
@ -14,3 +14,24 @@ class ReasonForReturnWizard(models.TransientModel):
|
|||
'return_reason': record.reason,
|
||||
'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>
|
||||
</field>
|
||||
</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>
|
||||
|
|
|
|||
|
|
@ -243,6 +243,11 @@ msgstr "<strong>تاريخ الدفع:</strong>"
|
|||
msgid "<strong>Payment Method:</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
|
||||
#: model_terms:ir.ui.view,arch_db:odex_takaful.report_transfer_deduction_document
|
||||
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)
|
||||
benefit_status = fields.Selection(related='benefit_id.member_status')
|
||||
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_due_date = fields.Date(string="Cheque Due Date")
|
||||
# cheque_file_attachment = fields.Binary(string='Cheque Attachment', attachment=True)
|
||||
|
|
@ -881,6 +909,20 @@ class DonationsDetailsLines(models.Model):
|
|||
if sponsorship and len(sponsorship) == 1:
|
||||
message = _("Benefit IDs changed in a donation item:<br/>%s") % "<br/>".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
|
||||
|
|
|
|||
|
|
@ -281,6 +281,14 @@ class ResPartner(models.Model):
|
|||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -61,11 +61,12 @@
|
|||
<field name="name">donations.details.lines.view.tree</field>
|
||||
<field name="model">donations.details.lines</field>
|
||||
<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="direct_debit" invisible="1" />
|
||||
<field name="sequence_no" />
|
||||
<field name="sponsor_id" />
|
||||
|
||||
<field name="sponsor_phone" widget="phone"/>
|
||||
<field name="donation_type" optional="show"/>
|
||||
<field name="sponsorship_duration" optional="hide"/>
|
||||
|
|
@ -84,6 +85,8 @@
|
|||
<field name="benefit_id" optional="hide" />
|
||||
<field name="sponsorship_creation_date" />
|
||||
<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"
|
||||
decoration-muted="state == 'draft'"
|
||||
decoration-warning="state == 'waiting'"
|
||||
|
|
@ -179,6 +182,7 @@
|
|||
<group>
|
||||
<group string="Donation Information">
|
||||
<field name="ages" invisible="1" />
|
||||
<field name="waiting_date" widget="date" />
|
||||
<field name="donation_type" invisible="1"/>
|
||||
<field name="donation_types"
|
||||
attrs="{'invisible': [('donation_type', '!=', 'donation')], 'readonly': [('parent_state', '!=', 'draft')]}" />
|
||||
|
|
@ -362,16 +366,18 @@
|
|||
<field name="name">Donations Details Lines waiting</field>
|
||||
<field name="res_model">donations.details.lines</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="context">{'create': False, 'delete': False, 'search_default_filter_waiting': 1}</field>
|
||||
<field name="context">{'create': False, 'delete': False}</field>
|
||||
</record>
|
||||
|
||||
<record id="donations_details_lines_replace_action" model="ir.actions.act_window">
|
||||
<field name="name">Donations Details Lines Replacement</field>
|
||||
<field name="res_model">donations.details.lines</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="context">{'create': False, 'delete': False, 'search_default_filter_replace': 1}</field>
|
||||
<field name="context">{'create': False, 'delete': False}</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -13,11 +13,13 @@
|
|||
<menuitem id="donations_details_lines_app_menu" parent="kafalat_main_menu"
|
||||
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"
|
||||
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 -->
|
||||
<!-- START OF THE BLOCK -->
|
||||
|
|
|
|||
|
|
@ -514,6 +514,7 @@
|
|||
<group>
|
||||
<group>
|
||||
<field name="ages" invisible="1"/>
|
||||
<field name="waiting_date" invisible="1" widget="date"/>
|
||||
<field name="family_id"
|
||||
attrs="{'invisible': [('sponsorship_type','=','group'), ('parent.record_type','=','sponsorship')],
|
||||
'readonly': ['|', ('sponsorship_type', '!=', 'group'), ('parent.record_type','!=','donation')],
|
||||
|
|
|
|||
|
|
@ -90,11 +90,11 @@
|
|||
</div>
|
||||
</group>
|
||||
<group>
|
||||
<field name="kafel_id" readonly="1"/>
|
||||
<field name="kafel_id" readonly="1" invisible="1"/>
|
||||
</group>
|
||||
<group name="group_top">
|
||||
<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="gender" attrs="{'required': [('company_type', '=', 'person')],'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_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:
|
||||
|
|
@ -49,6 +55,7 @@ class AccountRegisterPayment(models.TransientModel):
|
|||
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'):
|
||||
|
|
@ -67,6 +74,7 @@ class AccountRegisterPayment(models.TransientModel):
|
|||
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)
|
||||
|
|
|
|||
|
|
@ -51,6 +51,71 @@
|
|||
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"/>
|
||||
</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">-->
|
||||
<!-- <button name="action_register_all_lines"-->
|
||||
<!-- type="object"-->
|
||||
|
|
|
|||
Loading…
Reference in New Issue