diff --git a/odex25_ensan/odex_benefit/i18n/ar_001.po b/odex25_ensan/odex_benefit/i18n/ar_001.po
index b97edafed..0503034bc 100644
--- a/odex25_ensan/odex_benefit/i18n/ar_001.po
+++ b/odex25_ensan/odex_benefit/i18n/ar_001.po
@@ -17347,11 +17347,6 @@ msgstr "يرجى اختيار سطر رجيع واحد على الأقل للح
msgid "Return Confirm"
msgstr "تأكيد الرجيع"
-#. module: odex_benefit
-#: model:ir.model.fields,field_description:odex_benefit.field_benefit_expense_line__return_calculated
-msgid "Return Already Calculated"
-msgstr "تم حساب الرجيع بالفعل"
-
#. module: odex_benefit
#: model:ir.model.fields,help:odex_benefit.field_confirm_benefit_expense__is_return_calculation
msgid ""
diff --git a/odex25_ensan/odex_benefit/models/family_expense.py b/odex25_ensan/odex_benefit/models/family_expense.py
index 3e1c56350..51ddcc36b 100644
--- a/odex25_ensan/odex_benefit/models/family_expense.py
+++ b/odex25_ensan/odex_benefit/models/family_expense.py
@@ -93,7 +93,10 @@ class ConfirmBenefitExpense(models.Model):
)
return_expense_line_ids = fields.One2many(comodel_name='benefit.expense.line', inverse_name='return_confirm_id',
string="Selected Return Lines",
- domain="[('is_return', '=', True), ('return_calculated', '=', False)]", )
+ 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):
@@ -176,7 +179,6 @@ class ConfirmBenefitExpense(models.Model):
'family_monthly_othaime': 0,
}))
self.benefit_expense_line_ids = lines
- return_lines.write({'return_calculated': True})
def action_calculate(self):
for rec in self:
@@ -221,18 +223,18 @@ class ConfirmBenefitExpense(models.Model):
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_calculated', '=', False),
- '|',
('return_confirm_id', '=', False),
- ('return_confirm_id', '=', rec.id),
- ('start_date', '>=', rec.start_date),
- ('end_date', '<=', rec.end_date),
]
if rec.branch_custom_ids:
domain.append(('branch_id', 'in', rec.branch_custom_ids.ids))
- rec.family_domain_ids = Line.search(domain).mapped('family_id')
+
+ 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
@@ -256,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):
@@ -312,7 +315,6 @@ class ConfirmBenefitExpense(models.Model):
self.payment_order_id.unlink()
self.move_id.unlink()
self.benefit_expense_line_ids.unlink()
- self.return_expense_line_ids.write({'return_calculated': False})
self.state = 'draft'
def action_open_related_move_records(self):
diff --git a/odex25_ensan/odex_benefit/models/family_expense_line.py b/odex25_ensan/odex_benefit/models/family_expense_line.py
index 8ee406463..2c533b0f3 100644
--- a/odex25_ensan/odex_benefit/models/family_expense_line.py
+++ b/odex25_ensan/odex_benefit/models/family_expense_line.py
@@ -28,7 +28,6 @@ class BenefitExpenseLine(models.Model):
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)
- return_calculated = fields.Boolean("Return Already Calculated", default=False, copy=False)
@api.depends('family_monthly_income', 'family_monthly_clotting', 'family_monthly_meals')
def _compute_total_family_expenses(self):
diff --git a/odex25_ensan/odex_benefit/models/service_request.py b/odex25_ensan/odex_benefit/models/service_request.py
index 9d9254d9a..3c3b406f4 100644
--- a/odex25_ensan/odex_benefit/models/service_request.py
+++ b/odex25_ensan/odex_benefit/models/service_request.py
@@ -124,8 +124,7 @@ class ServiceRequest(models.Model):
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', compute='_compute_payment_order', string='Payment Order',
- copy=False, store=True)
+ 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')
@@ -232,10 +231,8 @@ class ServiceRequest(models.Model):
def _compute_payment_order(self):
for rec in self:
if rec.payment_order_ids:
- rec.payment_order_id = rec.payment_order_ids.sorted('payment_order_date', reverse=True)[0]
rec.payment_order_count = len(rec.payment_order_ids)
else:
- rec.payment_order_id = False
rec.payment_order_count = 0
@api.depends('payment_order_id', 'payment_order_id.state', 'vendor_bill', 'vendor_bill.state')
@@ -246,7 +243,8 @@ class ServiceRequest(models.Model):
if rec.payment_order_id.state == "done":
payment_order_state = "done"
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
else:
payment_order_state = "waiting"
@@ -1035,9 +1033,11 @@ class ServiceRequest(models.Model):
) % cat_names)
if service_cats.payment_method == "payment_order":
- # todo ask about this condition and seasonal services
invalid_records = self.filtered(
- lambda r: r.state != 'accounting_approve')
+ lambda r: r.state != 'accounting_approve'
+ or r.payment_order_state != 'none'
+ or r.payment_order_id
+ )
if invalid_records:
names = ", ".join(invalid_records.mapped('name'))
@@ -1057,6 +1057,7 @@ class ServiceRequest(models.Model):
})
self.write({
'payment_order_ids': [(4, payment_order.id)],
+ 'payment_order_id': payment_order.id,
})
elif service_cats.payment_method == "invoice":
diff --git a/odex25_ensan/odex_benefit/views/family_expense_view.xml b/odex25_ensan/odex_benefit/views/family_expense_view.xml
index 6d22fd4f5..87a566fd8 100644
--- a/odex25_ensan/odex_benefit/views/family_expense_view.xml
+++ b/odex25_ensan/odex_benefit/views/family_expense_view.xml
@@ -140,6 +140,7 @@
+
@@ -353,7 +354,7 @@
-
diff --git a/odex25_ensan/odex_benefit/views/payment_order.xml b/odex25_ensan/odex_benefit/views/payment_order.xml
index 79fa47dad..0c64a0390 100644
--- a/odex25_ensan/odex_benefit/views/payment_order.xml
+++ b/odex25_ensan/odex_benefit/views/payment_order.xml
@@ -102,7 +102,7 @@
type="object"
string="Bank Return"
class="btn btn-danger"
- attrs="{'invisible': ['|',('return_reason_id', '!=', False),('parent.state', '!=', 'done')]}"
+ attrs="{'invisible': ['|',('state', '!=', 'accounting_approve'),('parent.state', '!=', 'waiting_deposit')]}"
/>
@@ -143,7 +143,7 @@
type="object"
string="Bank Return"
class="btn btn-danger"
- attrs="{'invisible': ['|',('is_return', '=', True),('parent.state', '!=', 'done')]}"
+ attrs="{'invisible': ['|',('is_return', '=', True),('parent.state', '!=', 'waiting_deposit')]}"
/>
diff --git a/odex25_ensan/odex_benefit/wizards/reason_for_return_wizard.py b/odex25_ensan/odex_benefit/wizards/reason_for_return_wizard.py
index ce459a2ea..ab309f447 100644
--- a/odex25_ensan/odex_benefit/wizards/reason_for_return_wizard.py
+++ b/odex25_ensan/odex_benefit/wizards/reason_for_return_wizard.py
@@ -32,5 +32,6 @@ class ReturnReasonWizard(models.TransientModel):
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'}
\ No newline at end of file