[IMP] odex_benefit: IMP benefit

This commit is contained in:
younes 2026-01-25 12:48:03 +01:00
parent e99af09efe
commit 03a5119483
4 changed files with 68 additions and 49 deletions

View File

@ -18644,18 +18644,3 @@ msgid ""
"requests: %s, Current request: %s, Total: %s)"
msgstr "الجهاز '%s': لا يمكنك طلب أكثر من %s وحدة خلال %s %s. (الطلبات السابقة: %s، الطلب الحالي: %s، المجموع: %s)"
#. module: odex_benefit
#: code:addons/odex_benefit/models/service_request.py:0
#, python-format
msgid ""
"Cannot create invoice: the following requests have no electrical device lines:\n"
"%s\n"
"All selected requests must contain at least one device line."
msgstr "لا يمكن إنشاء الفاتورة: الطلبات التالية لا تحتوي على أجهزة كهربائية:\n"
#. module: odex_benefit
#: code:addons/odex_benefit/models/service_request.py:0
#, python-format
msgid "No invoice lines could be created."
msgstr "لم يتم إنشاء أي بنود في الفاتورة."

View File

@ -1276,47 +1276,70 @@ class ServiceRequest(models.Model):
"• Not be linked to any invoice"
) % names)
empty_requests = self.filtered(lambda r: not r.electrical_device_line_ids)
if empty_requests:
names = ", ".join(empty_requests.mapped('name'))
raise UserError(_(
"Cannot create invoice: the following requests have no electrical device lines:\n%s\n"
"All selected requests must contain at least one device line."
) % names)
for rec in self:
line_ids = []
for line in rec.electrical_device_line_ids:
invoice_line_vals = {
'name': rec.name or _('Electrical Device Line'),
'product_id': line.product_id.id or False,
'account_id': line.device_id.account_id.id or False,
'analytic_account_id': (
rec.family_id.branch_family_id.branch.analytic_account_id.id
if rec.family_id.branch_family_id
and rec.family_id.branch_family_id.branch
and rec.family_id.branch_family_id.branch.analytic_account_id
else False
),
'quantity': line.quantity,
'price_unit': line.unit_price,
'benefit_family_id': rec.family_id.id,
}
line_ids.append((0, 0, invoice_line_vals))
if not line_ids:
raise UserError(_("No invoice lines could be created."))
invoice_lines = rec._prepare_invoice_lines()
if not invoice_lines:
raise UserError(_(
"Cannot create invoice for request '%s': No invoice lines could be created."
) % rec.name)
vendor_bill = self.env['account.move'].create({
'move_type': 'in_invoice',
'partner_id': rec.service_producer_id.id,
'partner_shipping_id': rec.family_id.partner_id.id,
'journal_id': validation_setting.journal_id.id,
# 'accountant_id': self.accountant_id.id,
'invoice_line_ids': line_ids,
'invoice_line_ids': invoice_lines,
'ref': rec.name or False,
})
rec.vendor_bill = vendor_bill
def _prepare_invoice_lines(self):
self.ensure_one()
line_ids = []
if self.service_type == 'electrical_devices':
if not self.electrical_device_line_ids:
return line_ids
for line in self.electrical_device_line_ids:
line_ids.append((0, 0, {
'name': self.name or _('Electrical Device Line'),
'product_id': line.product_id.id or False,
'account_id': line.device_id.account_id.id or False,
'analytic_account_id': self._get_analytic_account_id(),
'quantity': line.quantity,
'price_unit': line.unit_price,
'benefit_family_id': self.family_id.id,
}))
else:
description_parts = []
if self.family_id and self.family_id.name:
description_parts.append(self.family_id.name)
if self.description:
description_parts.append(self.description)
if self.name:
description_parts.append(self.name)
line_name = '/'.join(description_parts) if description_parts else _('Service')
line_ids.append((0, 0, {
'name': line_name,
'account_id': self.account_id.id or False,
'analytic_account_id': self._get_analytic_account_id(),
'quantity': self.service_qty or 1,
'price_unit': self.requested_service_amount,
'benefit_family_id': self.family_id.id,
}))
return line_ids
def _get_analytic_account_id(self):
self.ensure_one()
if (self.family_id.branch_family_id and
self.family_id.branch_family_id.branch and
self.family_id.branch_family_id.branch.analytic_account_id):
return self.family_id.branch_family_id.branch.analytic_account_id.id
return False
def _get_total_move_lines(self):
for rec in self:
if self.service_cat.payment_method == "payment_order":

View File

@ -4,6 +4,7 @@ access_benefit_woman_commitee_record,access_benefit_record,model_grant_benefit,o
access_benefit_branch_manager_record,access_benefit_branch_manager_record,model_grant_benefit,odex_benefit.group_benefit_branch_manager,1,1,0,1
access_benefit_manager_record,access_benefit_manager_record,model_grant_benefit,odex_benefit.group_benefit_manager,1,1,1,1
access_benefit_family_services_manager,access_benefit_family_services_manager,model_grant_benefit,odex_benefit.group_family_services_manager,1,1,1,1
access_benefit_family_services_department_manager,access_benefit_family_services_department_manager,model_grant_benefit,odex_benefit.group_family_services_department_manager,1,1,1,1
access_education_status_all,education_status,model_education_status,odex_benefit.group_benefit_info,1,1,1,1
access_education_status_all_users,education_status_all_users,model_education_status,,1,0,0,0
access_weak_course_all,weak_course,model_weak_course,odex_benefit.group_benefit_info,1,1,1,1
@ -126,6 +127,8 @@ access_suspend_reason,access_suspend_reason,model_suspend_reason,,1,0,0,0
access_suspend_reason_settings,access_suspend_reason_settings,model_suspend_reason,odex_benefit.group_benefit_settings,1,1,1,1
access_suspend_reason_wizard,access_suspend_reason_wizard,model_suspend_reason_wizard,,1,1,1,1
access_expense_family_services_manager,access_expense_family_services_manager,model_confirm_benefit_expense,odex_benefit.group_family_services_manager,1,1,1,1
access_expense_family_services_department_manager,access_expense_family_services_department_manager,model_confirm_benefit_expense,odex_benefit.group_family_services_department_manager,1,1,1,1
access_expense_benefit_manager,access_expense_benefit_manager,model_confirm_benefit_expense,odex_benefit.group_benefit_manager,1,1,1,1
access_expense_researcher,access_expense_researcher,model_confirm_benefit_expense,odex_benefit.group_benefit_info,1,0,0,0
access_branch_settings,access_branch_settings,model_branch_settings,base.group_user,1,0,0,0
@ -154,6 +157,7 @@ access_exception_reason,access_exception_reason,model_exception_reason,base.grou
access_exception_reason_settings,access_exception_reason_settings,model_exception_reason,odex_benefit.group_benefit_settings,1,1,1,1
access_service_request,access_service_request,model_service_request,base.group_user,1,1,1,1
access_seasonal_service_family_services_manager,access_seasonal_service_family_services_manager,model_seasonal_service,odex_benefit.group_family_services_manager,1,1,1,1
access_seasonal_service_family_services_department_manager,access_seasonal_service_family_services_department_manager,model_seasonal_service,odex_benefit.group_family_services_department_manager,1,1,1,1
access_seasonal_service_benefit_manager,access_seasonal_service_benefit_manager,model_seasonal_service,odex_benefit.group_benefit_manager,1,1,1,1
access_seasonal_service_researcher,access_seasonal_service_researcher,model_seasonal_service,odex_benefit.group_benefit_info,1,0,0,0
access_marital_status,access_marital_status,model_marital_status,base.group_user,1,0,0,0
@ -192,6 +196,7 @@ 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,access_grant_benefit_account_move,model_account_move,odex_benefit.group_benefit_info,1,0,0,0
access_expense_line_family_services_manager,access_expense_line_family_services_manager,model_benefit_expense_line,odex_benefit.group_family_services_manager,1,1,1,1
access_expense_line_family_services_department_manager,access_expense_line_family_services_department_manager,model_benefit_expense_line,odex_benefit.group_family_services_department_manager,1,1,1,1
access_expense_line_benefit_manager,access_expense_line_benefit_manager,model_benefit_expense_line,odex_benefit.group_benefit_manager,1,1,1,1
access_expense_researcher,access_expense_researcher,model_benefit_expense_line,odex_benefit.group_benefit_info,1,1,0,0
access_expense_line_payment_accountant_accept,access_expense_line_payment_accountant_accept,model_benefit_expense_line,odex_benefit.group_benefit_payment_accountant_accept,1,1,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
4 access_benefit_branch_manager_record access_benefit_branch_manager_record model_grant_benefit odex_benefit.group_benefit_branch_manager 1 1 0 1
5 access_benefit_manager_record access_benefit_manager_record model_grant_benefit odex_benefit.group_benefit_manager 1 1 1 1
6 access_benefit_family_services_manager access_benefit_family_services_manager model_grant_benefit odex_benefit.group_family_services_manager 1 1 1 1
7 access_benefit_family_services_department_manager access_benefit_family_services_department_manager model_grant_benefit odex_benefit.group_family_services_department_manager 1 1 1 1
8 access_education_status_all education_status model_education_status odex_benefit.group_benefit_info 1 1 1 1
9 access_education_status_all_users education_status_all_users model_education_status 1 0 0 0
10 access_weak_course_all weak_course model_weak_course odex_benefit.group_benefit_info 1 1 1 1
127 access_suspend_reason_settings access_suspend_reason_settings model_suspend_reason odex_benefit.group_benefit_settings 1 1 1 1
128 access_suspend_reason_wizard access_suspend_reason_wizard model_suspend_reason_wizard 1 1 1 1
129 access_expense_family_services_manager access_expense_family_services_manager model_confirm_benefit_expense odex_benefit.group_family_services_manager 1 1 1 1
130 access_expense_family_services_department_manager access_expense_family_services_department_manager model_confirm_benefit_expense odex_benefit.group_family_services_department_manager 1 1 1 1
131 access_expense_benefit_manager access_expense_benefit_manager model_confirm_benefit_expense odex_benefit.group_benefit_manager 1 1 1 1
132 access_expense_benefit_manager access_expense_researcher access_expense_benefit_manager access_expense_researcher model_confirm_benefit_expense odex_benefit.group_benefit_manager odex_benefit.group_benefit_info 1 1 0 1 0 1 0
133 access_expense_researcher access_branch_settings access_expense_researcher access_branch_settings model_confirm_benefit_expense model_branch_settings odex_benefit.group_benefit_info base.group_user 1 0 0 0
134 access_branch_settings access_branch_benefit_settings access_branch_settings access_branch_benefit_settings model_branch_settings base.group_user odex_benefit.group_benefit_settings 1 0 1 0 1 0 1
157 access_exception_reason_settings access_service_request access_exception_reason_settings access_service_request model_exception_reason model_service_request odex_benefit.group_benefit_settings base.group_user 1 1 1 1
158 access_service_request access_seasonal_service_family_services_manager access_service_request access_seasonal_service_family_services_manager model_service_request model_seasonal_service base.group_user odex_benefit.group_family_services_manager 1 1 1 1
159 access_seasonal_service_family_services_manager access_seasonal_service_family_services_department_manager access_seasonal_service_family_services_manager access_seasonal_service_family_services_department_manager model_seasonal_service odex_benefit.group_family_services_manager odex_benefit.group_family_services_department_manager 1 1 1 1
160 access_seasonal_service_benefit_manager access_seasonal_service_benefit_manager model_seasonal_service odex_benefit.group_benefit_manager 1 1 1 1
161 access_seasonal_service_benefit_manager access_seasonal_service_researcher access_seasonal_service_benefit_manager access_seasonal_service_researcher model_seasonal_service odex_benefit.group_benefit_manager odex_benefit.group_benefit_info 1 1 0 1 0 1 0
162 access_seasonal_service_researcher access_marital_status access_seasonal_service_researcher access_marital_status model_seasonal_service model_marital_status odex_benefit.group_benefit_info base.group_user 1 0 0 0
163 access_marital_status access_marital_status_settings access_marital_status access_marital_status_settings model_marital_status base.group_user odex_benefit.group_benefit_settings 1 0 1 0 1 0 1
196 access_grant_benefit_account_move_line access_grant_benefit_account_move access_grant_benefit_account_move_line access_grant_benefit_account_move model_account_move_line model_account_move odex_benefit.group_benefit_info 1 0 0 0
197 access_grant_benefit_account_move access_expense_line_family_services_manager access_grant_benefit_account_move access_expense_line_family_services_manager model_account_move model_benefit_expense_line odex_benefit.group_benefit_info odex_benefit.group_family_services_manager 1 0 1 0 1 0 1
198 access_expense_line_family_services_manager access_expense_line_family_services_department_manager access_expense_line_family_services_manager access_expense_line_family_services_department_manager model_benefit_expense_line odex_benefit.group_family_services_manager odex_benefit.group_family_services_department_manager 1 1 1 1
199 access_expense_line_benefit_manager access_expense_line_benefit_manager model_benefit_expense_line odex_benefit.group_benefit_manager 1 1 1 1
200 access_expense_line_benefit_manager access_expense_researcher access_expense_line_benefit_manager access_expense_researcher model_benefit_expense_line odex_benefit.group_benefit_manager odex_benefit.group_benefit_info 1 1 1 0 1 0
201 access_expense_researcher access_expense_line_payment_accountant_accept access_expense_researcher access_expense_line_payment_accountant_accept model_benefit_expense_line odex_benefit.group_benefit_info odex_benefit.group_benefit_payment_accountant_accept 1 1 0 0
202 access_expense_line_payment_accountant_accept access_family_bank_report_wizard access_expense_line_payment_accountant_accept access_family_bank_report_wizard model_benefit_expense_line model_family_bank_report_wizard odex_benefit.group_benefit_payment_accountant_accept base.group_user 1 1 0 1 0 1

View File

@ -115,6 +115,12 @@
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
<record id="group_family_services_department_manager" model="res.groups">
<field name="name">Family Services Department Manager</field>
<field name="category_id" ref="module_category_benefit"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
<record id="group_service_legal_department" model="res.groups">
<field name="name">Services - Legal Department</field>
<field name="category_id" ref="module_category_benefit"/>
@ -138,7 +144,7 @@
<field name="name">Show All Benefits Profiles</field>
<field name="model_id" ref="model_grant_benefit"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_benefit_manager')),(4, ref('group_benefit_supervisor')),(4, ref('group_family_services_manager'))]"/>
<field name="groups" eval="[(4, ref('group_benefit_manager')),(4, ref('group_benefit_supervisor')),(4, ref('group_family_services_manager')),(4, ref('group_family_services_department_manager'))]"/>
<field name="active" eval="True" />
</record>
@ -171,7 +177,7 @@
<field name="name">Show All Visit Location</field>
<field name="model_id" ref="model_visit_location"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_benefit_manager')),(4, ref('group_benefit_supervisor')),(4, ref('group_family_services_manager'))]"/>
<field name="groups" eval="[(4, ref('group_benefit_manager')),(4, ref('group_benefit_supervisor')),(4, ref('group_family_services_manager')),(4, ref('group_family_services_department_manager'))]"/>
<field name="active" eval="True" />
</record>
@ -220,7 +226,7 @@
<field name="name">Show All Family Complaints</field>
<field name="model_id" ref="model_family_complaints"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_benefit_manager')),(4, ref('group_benefit_supervisor')),(4, ref('group_family_services_manager'))]"/>
<field name="groups" eval="[(4, ref('group_benefit_manager')),(4, ref('group_benefit_supervisor')),(4, ref('group_family_services_manager')),(4, ref('group_family_services_department_manager'))]"/>
<field name="active" eval="True" />
</record>
@ -300,7 +306,7 @@
<field name="name">Show All Family Members</field>
<field name="model_id" ref="model_family_member"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_benefit_manager')),(4, ref('group_benefit_supervisor')),(4, ref('group_family_services_manager'))]"/>
<field name="groups" eval="[(4, ref('group_benefit_manager')),(4, ref('group_benefit_supervisor')),(4, ref('group_family_services_manager')),(4, ref('group_family_services_department_manager'))]"/>
<field name="active" eval="True" />
</record>
@ -344,7 +350,7 @@
<field name="name">Show All Bank Return Line</field>
<field name="model_id" ref="model_benefit_expense_line"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_benefit_manager')),(4, ref('group_benefit_supervisor')),(4, ref('group_family_services_manager'))]"/>
<field name="groups" eval="[(4, ref('group_benefit_manager')),(4, ref('group_benefit_supervisor')),(4, ref('group_family_services_manager')),(4, ref('group_family_services_department_manager'))]"/>
<field name="active" eval="True" />
</record>