Skip to content
Extraits de code Groupes Projets
Valider fab92b84 rédigé par jordan-filament's avatar jordan-filament
Parcourir les fichiers

[update] change rules for scop_partner_staff validation

parent b5361b2b
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -49,6 +49,7 @@ repos: ...@@ -49,6 +49,7 @@ repos:
rev: 20.8b1 rev: 20.8b1
hooks: hooks:
- id: black - id: black
additional_dependencies: ["click==8.0.4"]
- repo: https://github.com/pre-commit/mirrors-prettier - repo: https://github.com/pre-commit/mirrors-prettier
rev: v2.1.2 rev: v2.1.2
hooks: hooks:
......
...@@ -139,47 +139,67 @@ class ScopPartnerStaff(models.Model): ...@@ -139,47 +139,67 @@ class ScopPartnerStaff(models.Model):
# ------------------------------------------------------ # ------------------------------------------------------
# Contrains # Contrains
# ------------------------------------------------------ # ------------------------------------------------------
@api.constrains("staff_count", "staff_shareholder_count", "staff_average") @api.constrains(
"cooperative_form_id",
"type_entry",
"staff_count",
"staff_shareholder_count",
"staff_average",
)
def _check_staff(self): def _check_staff(self):
""" """
Interdit de créer une ligne à 0 sauf lorsque Règles spécifiques pour les effectifs
cette ligne vient de la liste ministère
ou si ligne associés / ETP pour les SCIC
ou si ligne ETP pour les 'tracked naf'
""" """
if self.type_entry not in ( scic = self.env.ref("cgscop_partner.form_scic").id
"questionnaire", scop = self.env.ref("cgscop_partner.form_scop").id
"questionnaire_inscription",
): def check_staff_shareholder():
if ( # Effectif total >= effectif sociétaires
self.cooperative_form_id.id if self.staff_shareholder_count > 0:
== self.env.ref("cgscop_partner.form_scic").id if not self.staff_count >= self.staff_shareholder_count:
):
if self.staff_count == 0:
raise ValidationError( raise ValidationError(
_( _(
"La colonne Effectif (EF) doit être renseignée" "L'effectif total doit être supérieur ou égal au "
" et supérieurs à 0." "nombre de sociétaires salariés"
) )
) )
elif self.is_partner_in_tracked_naf:
if self.staff_count == 0 or self.staff_shareholder_count == 0: def check_staff_average():
if self.staff_average > 0:
if not self.staff_count >= self.staff_average:
raise ValidationError( raise ValidationError(
_( _(
"Les colonnes Effectif (EF) et Nb Sociétaires Salarié" "L'effectif total doit être supérieur ou égal au "
" doivent être renseignés et supérieurs à 0." "nombre d'équivalent temps plein"
) )
) )
else:
if ( # Les règles ne s'appliquent pas pour les entrées LM / Questionnaire
self.staff_shareholder_count == 0 if self.type_entry not in ("questionnaire", "questionnaire_inscription"):
or self.cooperative_form_id == 0 # Règles pour les SCIC
or self.staff_average == 0 if self.cooperative_form_id.id == scic:
): check_staff_shareholder()
check_staff_average()
# Règles pour les SCOP
elif self.cooperative_form_id.id == scop:
# Effectif total non nul
if self.staff_count == 0:
raise ValidationError(
_(
"L'effectif total doit être supérieur ou égal à 0 "
"pour cette copérative de type SCOP"
)
)
check_staff_shareholder()
check_staff_average()
# Règles sprécifiques pour les NAF suivis
if self.is_partner_in_tracked_naf:
if self.staff_average == 0:
raise ValidationError( raise ValidationError(
_( _(
"Tous les effectifs doivent" "Le nombre d'équivalent temps plein doit être "
" être renseignés et supérieurs à 0." "renseigné pour cette coopérative"
) )
) )
......
...@@ -1555,7 +1555,7 @@ ...@@ -1555,7 +1555,7 @@
/> />
<field <field
name="staff_shareholder_count" name="staff_shareholder_count"
attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))], 'required':[('cooperative_form_id', '!=', %(cgscop_partner.form_scic)d)]}" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))]}"
/> />
<field <field
name="staff_shareholder_total" name="staff_shareholder_total"
...@@ -1563,7 +1563,7 @@ ...@@ -1563,7 +1563,7 @@
/> />
<field <field
name="staff_average" name="staff_average"
attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))], 'required':[('is_partner_in_tracked_naf', '!=', True), ('cooperative_form_id', '!=', %(cgscop_partner.form_scic)d)]}" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))], 'required':[('is_partner_in_tracked_naf', '=', True)]}"
/> />
<field name="comment" /> <field name="comment" />
<field name="user_id" readonly="1" /> <field name="user_id" readonly="1" />
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
/> />
<field <field
name="staff_shareholder_count" name="staff_shareholder_count"
attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))], 'required':[('cooperative_form_id', '!=', %(cgscop_partner.form_scic)d)]}" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))]}"
/> />
<field <field
name="staff_shareholder_total" name="staff_shareholder_total"
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
/> />
<field <field
name="staff_average" name="staff_average"
attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))], 'required':[('is_partner_in_tracked_naf', '!=', True)]}" attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription'))], 'required':[('is_partner_in_tracked_naf', '=', True)]}"
/> />
</group> </group>
<group name="staff_stats"> <group name="staff_stats">
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter