Skip to Content
Menu
This question has been flagged
1 Reply
2477 Views

Helle, this is my code, I want to calculate the salary final of an employee.

class Salaire(models.Model):
_name = "administration.salaire"

name = fields.Many2one('hr.employee', string="Nom employée")
date_début = fields.Date(string="Début de mois")
date_fin = fields.Date(string="Fin de mois")
heure_de_travaille = fields.Char(string="Heure du travail")
heure_supplimentaire = fields.Char(string="Heure supplimentaire")
solde_heure_supplimentaire = fields.Float(string="Solde heure supplimentaire")
congé_non_payés = fields.Char(string="Congé non payés")
solde_congé_non_payés = fields.Integer(string="Solde congé non payés")
avancement_salaire = fields.Integer(string="Avancement du salaire")
salaire_de_base = fields.Float(string="Salaire de base")
salaire_final = fields.Float(string='Salaire final', compute='_compute_salaire_final', store=True, readonly=True)

@api.depends('solde_heure_supplimentaire', 'solde_congé_non_payés', 'avancement_salaire', 'salaire_de_base')
def _compute_salaire_final(self):
for salaire in self:
delta = sum(salaire.solde_congé_non_payés, salaire.avancement_salaire)
salaire.salaire_final = sum(salaire.solde_heure_supplimentaire, salaire.salaire_de_base) - delta




<record id="salaire_form" model="ir.ui.view">
<field name="name">administration.salaire.form</field>
<field name="model">administration.salaire</field>
<field name="arch" type="xml">
<form string="Salaire">
<sheet>
<h1> nom d'employé
<field name="name"/>
</h1>
<group>
<field name="date_début"/>
<field name="date_fin"/>
<field name="heure_de_travaille"/>
</group>
<group>
<field name="heure_supplimentaire"/>
<field name="solde_heure_supplimentaire"/>
</group>
<group>
<field name="congé_non_payés"/>
<field name="solde_congé_non_payés"/>
</group>
<group>
<field name="avancement_salaire"/>
<field name="salaire_de_base"/>
</group>
<group>
<field name="salaire_final" sum="salaire.salaire_final"/>
</group>
</sheet>
</form>
</field>
</record>
Avatar
Discard
Best Answer

Hello, sum() function in python syntax is sum(iterable, start).
Iterable : Iterable can be anything list,tuples or dictionaries, but most importantly it should be numbers.
start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.

In your case i see no list required and you can simply go with the operators.

@api.depends('solde_heure_supplimentaire', 'solde_congé_non_payés', 'avancement_salaire', 'salaire_de_base')
def _compute_salaire_final(self):
for salaire in self:
    delta = salaire.solde_congé_non_payés + salaire.avancement_salaire
   salaire.salaire_final = (salaire.solde_heure_supplimentaire + salaire.salaire_de_base) - delta
Avatar
Discard