[IMP] odex_benefit: IMP benefit

This commit is contained in:
younes 2025-11-11 13:50:46 +01:00
parent 0ced8d2a5a
commit 229e30ffcd
6 changed files with 47 additions and 50 deletions

View File

@ -16513,7 +16513,6 @@ msgstr "إعادة حساب"
#. module: odex_benefit
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_form
#: model_terms:ir.ui.view,arch_db:odex_benefit.view_family_bank_report_wizard_form
msgid "Family Monthly Expense"
msgstr "المصروف الشهري للأسر"
@ -16602,17 +16601,6 @@ msgstr "تقرير البنك للأسر"
msgid "Family Bank Report (Excel)"
msgstr "تقرير البنك للأسر (إكسل)"
#. module: odex_benefit
#: model:ir.model.fields,field_description:odex_benefit.field_family_bank_report_wizard__move_ids
msgid "Monthly Expenses"
msgstr "المصروفات الشهرية"
#. module: odex_benefit
#: code:addons/odex_benefit/wizards/family_bank_report_wizard.py:0
#, python-format
msgid "Please select at least one Monthly Expense."
msgstr "يرجى اختيار مصروف شهري واحد على الأقل."
#. module: odex_benefit
#: code:addons/odex_benefit/wizards/family_bank_report_wizard.py:0
#, python-format
@ -17073,4 +17061,13 @@ msgstr "إجمالي المبلغ"
#: code:addons/odex_benefit/models/payment_order.py:0
#, python-format
msgid "Please select a journal before creating the entry."
msgstr "يرجى اختيار دفتر اليومية قبل إنشاء القيد."
msgstr "يرجى اختيار دفتر اليومية قبل إنشاء القيد."
#. module: odex_benefit
#: model:ir.actions.act_window,name:odex_benefit.action_payment_orders
#: model:ir.model,name:odex_benefit.model_payment_orders
#: model:ir.ui.menu,name:odex_benefit.menu_payment_orders
#: model_terms:ir.ui.view,arch_db:odex_benefit.payment_orders_form
#: model_terms:ir.ui.view,arch_db:odex_benefit.payment_orders_tree
msgid "Payment Orders"
msgstr "أوامر صرف الخدمات"

View File

@ -441,7 +441,6 @@ class ConfirmBenefitExpense(models.Model):
}
invoice = self.env['account.move'].create(invoice_vals)
invoice.action_post()
rec.move_id = invoice
return True

View File

@ -1035,6 +1035,7 @@ class ServiceRequest(models.Model):
'analytic_account_id': rec.family_id.branch_family_id.branch.analytic_account_id.id,
'quantity': rec.requested_quantity,
'price_unit': rec.requested_service_amount,
'benefit_family_id': rec.family_id.id,
})
line_ids.append(invoice_line)
vendor_bill = self.env['account.move'].create({

View File

@ -13,8 +13,6 @@ class FamilyBankReportXlsx(models.AbstractModel):
@api.model
def generate_xlsx_report(self, workbook, data, objs):
sheet = workbook.add_worksheet(_('Family Bank Report'))
if self.env.user.lang != 'en_US':
sheet.right_to_left()
header_format = workbook.add_format({
'bold': True,
@ -77,12 +75,6 @@ class FamilyBankReportXlsx(models.AbstractModel):
total_amount += line['transfer_amount']
row += 1
sheet.merge_range(row + 1, 0, row + 1, 2, "Total" + " / " + "الإجمالي", bold)
sheet.write_number(row + 1, 3, total_amount, bold)
sheet.write(row + 1, 4, "", bold)
sheet.write(row + 1, 5, "SAR", bold)
sheet.set_column('A:A', 25)
sheet.set_column('B:B', 25)
sheet.set_column('C:C', 30)

View File

@ -4,6 +4,7 @@ from odoo import models, fields, api, _
from odoo.exceptions import UserError
from odoo.tools import date_utils
class FamilyBankReportWizard(models.TransientModel):
_name = 'family.bank.report.wizard'
_description = 'Family Bank Report'
@ -18,39 +19,46 @@ class FamilyBankReportWizard(models.TransientModel):
default=lambda self: date_utils.end_of(fields.Date.today(), 'month'),
required=True
)
move_ids = fields.Many2many(comodel_name='account.move',
string="Monthly Expenses", required=True,
domain="[('state', '=', 'posted'),('date','>=', start_date),('date','<=', end_date),('line_ids.benefit_family_id', '!=', False)]"
)
payment_order_ids = fields.Many2many(comodel_name='payment.orders',
string="Payment Orders", required=True,
domain="[('state', '=', 'waiting_deposit'),('payment_order_date','>=', start_date),('payment_order_date','<=', end_date)]")
def action_print_bank_report(self):
if not self.move_ids:
raise UserError(_("Please select at least one Monthly Expense."))
lines_data = []
for move in self.move_ids:
if not self.payment_order_ids:
raise UserError(_("Please select at least one Payment Order."))
moves = self.payment_order_ids.mapped('move_id')
if not moves:
raise UserError(_("Selected Payment Orders do not reference any posted moves."))
grouped = {}
for move in moves:
for line in move.line_ids.filtered(lambda l: l.debit > 0 and l.benefit_family_id):
family = line.benefit_family_id
beneficiary_name = ''
beneficiary_id = ''
if family.is_family_member:
beneficiary_name = family.family_member_id.name
beneficiary_id = family.family_member_id.member_id_number
else:
beneficiary_name = family.acc_holder_name
beneficiary_id = family.acc_holder_id_number
lines_data.append({
'bank_name': family.bank_id.name or '',
'account_number': 'SA' + family.acc_number or '',
'beneficiary_name': beneficiary_name,
'transfer_amount': line.debit or 0.0,
'beneficiary_id': beneficiary_id,
'currency': 'SAR',
'family_code': family.code or '',
'purpose': 'Others',
})
key = family.id
if key not in grouped:
if family.is_family_member and family.family_member_id:
beneficiary_name = family.family_member_id.name or ''
beneficiary_id = getattr(family.family_member_id, 'member_id_number', '') or ''
else:
beneficiary_name = family.acc_holder_name or ''
beneficiary_id = family.acc_holder_id_number or ''
grouped[key] = {
'bank_name': (family.bank_id.name or ''),
'account_number': 'SA' + (family.acc_number or ''),
'beneficiary_name': beneficiary_name,
'beneficiary_id': beneficiary_id,
'transfer_amount': 0.0,
'currency': 'SAR',
'family_code': family.code or '',
'purpose': 'Others',
}
grouped[key]['transfer_amount'] += float(line.debit or 0.0)
lines_data = list(grouped.values())
if not lines_data:
raise UserError(_("No debit lines with family information found."))
datas = {
'start_date': self.start_date,
'end_date': self.end_date,

View File

@ -16,8 +16,8 @@
</group>
</group>
<notebook>
<page string="Family Monthly Expense">
<field name="move_ids" options="{'no_create': True}"/>
<page string="Payment Orders">
<field name="payment_order_ids" options="{'no_create': True}"/>
</page>
</notebook>
</sheet>