[IMP] odex_benefit: IMP benefit

This commit is contained in:
younes 2025-11-10 15:55:56 +01:00
parent 1cb8da1726
commit 6159005021
7 changed files with 46 additions and 23 deletions

View File

@ -427,7 +427,7 @@ class ConfirmBenefitExpense(models.Model):
'quantity': 1,
'benefit_family_id': family.id,
'price_unit': line.family_monthly_meals,
'analytic_account_id': family.branch_custom_id.branch.analytic_account_id.id
'analytic_account_id': family.branch_family_id.branch.analytic_account_id.id
}))
invoice_vals = {
'move_type': 'in_invoice',

View File

@ -28,11 +28,4 @@ class BenefitExpenseLine(models.Model):
@api.depends('family_monthly_income', 'family_monthly_clotting', 'family_monthly_meals')
def _compute_total_family_expenses(self):
for rec in self:
total_family_expenses = 0.0
if rec.confirm_expense_id.cash_expense:
total_family_expenses += rec.family_monthly_income
if rec.confirm_expense_id.meal_expense:
total_family_expenses += rec.family_monthly_meals
if rec.confirm_expense_id.cloth_expense:
total_family_expenses += rec.family_monthly_clotting
rec.total_family_expenses = total_family_expenses
rec.total_family_expenses = rec.family_monthly_income + rec.family_monthly_meals + rec.family_monthly_clotting

View File

@ -31,6 +31,7 @@ class FamilyValidationSetting(models.Model):
meal_partner_id = fields.Many2one('res.partner', string='Meal Partner')
journal_id = fields.Many2one('account.journal', string='Journal')
payment_journal_id = fields.Many2one('account.journal', string='Payment Journal' , domain="[('type', 'in', ['cash', 'bank'])]")
account_id = fields.Many2one('account.account',string='Expenses Account')
accountant_id = fields.Many2one('res.users', string='Accountant')

View File

@ -10,7 +10,7 @@ class PaymentOrders(models.Model):
def _default_journal(self):
setting = self.env['family.validation.setting'].search([], limit=1)
return setting.journal_id.id if setting and setting.journal_id else False
return setting.payment_journal_id.id if setting and setting.journal_id else False
name = fields.Char(string="Code", copy=False, readonly=True, default=lambda x: _('New'))
ref_num = fields.Many2one('seasonal.service', string='Ref. Number', compute='_compute_ref_num')
@ -47,6 +47,20 @@ class PaymentOrders(models.Model):
],
string='Payment Order Type', required=True, default='services', )
move_id = fields.Many2one('account.move', ondelete='cascade')
total_amount = fields.Float(string="Total Amount", compute='_compute_total_amount')
company_id = fields.Many2one('res.company', string='Company', default=lambda self: self.env.company)
currency_id = fields.Many2one('res.currency', string='Currency',
related='company_id.currency_id')
@api.depends('service_requests_ids', 'benefit_expense_line_ids')
def _compute_total_amount(self):
for rec in self:
if rec.type in ['services', 'seasonal_services']:
rec.total_amount = sum(rec.service_requests_ids.mapped('requested_service_amount'))
elif rec.type == 'benefit_expense':
rec.total_amount = sum(rec.benefit_expense_line_ids.mapped('total_family_expenses'))
else:
rec.total_amount = 0.0
def action_manager_approval(self):
for rec in self:
@ -69,7 +83,7 @@ class PaymentOrders(models.Model):
'journal_id': rec.journal_id.id,
# 'payment_order_id': rec.id, # bug
'line_ids': line_ids,
'ref': f'{rec.payment_order_description}/{rec.ref_num}',
'ref': rec.name + '/' + rec.type,
}
if rec.type == "benefit_expense":
# ref1 = ", ".join(rec.benefit_expense_line_ids.mapped('name'))
@ -195,7 +209,7 @@ class PaymentOrders(models.Model):
'family_confirm_id': line.confirm_expense_id.id,
'benefit_family_id': line.family_id.id,
'partner_id': line.family_id.partner_id.id,
'analytic_account_id': line.family_id.branch_custom_id.branch.analytic_account_id.id,
'analytic_account_id': line.family_id.branch_family_id.branch.analytic_account_id.id,
'account_id': account_id,
'debit': amount,
'credit': 0.0,
@ -214,7 +228,7 @@ class PaymentOrders(models.Model):
'benefit_family_id': request.family_id.id,
'account_id': request.account_id.id,
'partner_id': request.family_id.partner_id.id,
'analytic_account_id': request.branch_custom_id.branch.analytic_account_id.id,
'analytic_account_id': request.family_id.branch_family_id.branch.analytic_account_id.id,
'debit': request.requested_service_amount,
'credit': 0.0,
}
@ -229,7 +243,7 @@ class PaymentOrders(models.Model):
lines.append({
'account_id': self.journal_id.default_account_id.id,
'name': f'{self.name}-{self.ref_num}',
'name': f'{self.name}-{self.type}',
'credit': total_credit,
'debit': 0.0,
})

View File

@ -978,6 +978,7 @@ class ServiceRequest(models.Model):
rec.state = 'draft'
def action_accounting_transfer(self):
validation_setting = self.env["family.validation.setting"].search([], limit=1)
line_ids = []
service_cats = self.mapped('service_cat')
if len(service_cats) > 1:
@ -1031,7 +1032,7 @@ class ServiceRequest(models.Model):
invoice_line = (0, 0, {
'name': f'{rec.family_id.name}/{rec.device_id.device_name}/{rec.description}/{rec.name}',
'account_id': rec.device_account_id.id,
'analytic_account_id': rec.branch_custom_id.branch.analytic_account_id.id,
'analytic_account_id': rec.family_id.branch_family_id.branch.analytic_account_id.id,
'quantity': rec.requested_quantity,
'price_unit': rec.requested_service_amount,
})
@ -1039,6 +1040,7 @@ class ServiceRequest(models.Model):
vendor_bill = self.env['account.move'].create({
'move_type': 'in_invoice',
'partner_id': self[0].service_producer_id.id,
'journal_id': validation_setting.journal_id.id,
# 'accountant_id': self.accountant_id.id,
'invoice_line_ids': line_ids,
})

View File

@ -39,6 +39,7 @@
<group>
<field name="benefit_category_ids" widget="many2many_tags"/>
<field name="journal_id"/>
<field name="payment_journal_id"/>
<field name="account_id" string="Service Payment Account"/>
<field name="accountant_id"/>
</group>

View File

@ -4,7 +4,7 @@
<field name="name">payment.orders.form</field>
<field name="model">payment.orders</field>
<field name="arch" type="xml">
<form string="Payment Orders">
<form string="Payment Orders" create="false">
<header>
<button name="action_manager_approval" type="object" states="draft"
string="Manager approval" class="oe_highlight"/>
@ -60,16 +60,20 @@
</h1>
</div>
<group>
<field name="payment_order_date"/>
<field name="payment_order_date" readonly="1"/>
<field name="type" readonly="1"/>
<field name="accountant_id"/>
<field name="journal_id"/>
</group>
<group>
<field name="payment_order_description"/>
<field name="ref_num"/>
<field name="payment_order_description" readonly="1"/>
<field name="ref_num" readonly="1"/>
<field name="is_seasonal" invisible="1"/>
<field name="move_id" attrs="{'invisible':[('move_id','=',False)]}"/>
<field name="move_id" attrs="{'invisible':[('move_id','=',False)]}" readonly="1"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="currency_id" groups="base.group_multi_currency" invisible="1"/>
<field name="total_amount" widget="monetary"
options="{'currency_field': 'currency_id'}"/>
</group>
</group>
<notebook>
@ -144,13 +148,21 @@
<field name="name">payment.orders.tree</field>
<field name="model">payment.orders</field>
<field name="arch" type="xml">
<tree string="Payment Orders">
<tree string="Payment Orders" create="false">
<field name="name" readonly="1"/>
<field name="payment_order_date"/>
<field name="accountant_id" widget="many2one_avatar_user"/>
<field name="payment_order_description"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="currency_id" groups="base.group_multi_currency" invisible="1"/>
<field name="total_amount" widget="monetary" decoration-bf="1"
options="{'currency_field': 'currency_id'}"/>
<field name="type"/>
<field name="state"/>
<field name="state"
widget="badge"
decoration-info="state == 'draft'"
decoration-warning="state not in ['draft','done']"
decoration-success="state == 'done'"
/>
</tree>
</field>
</record>