Skip to content

Commit

Permalink
redirection vers l'étape suivante si une étape a déjà été enregistrée
Browse files Browse the repository at this point in the history
  • Loading branch information
sblondon committed Oct 18, 2024
1 parent ebcec6e commit 2bb6981
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 2 deletions.
68 changes: 68 additions & 0 deletions impact/reglementations/tests/test_csrd_reglementation.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from conftest import CODE_SE
from entreprises.models import CaracteristiquesAnnuelles
from habilitations.models import attach_user_to_entreprise
from reglementations.models import RapportCSRD
from reglementations.views.base import ReglementationStatus
from reglementations.views.csrd import CSRDReglementation

Expand Down Expand Up @@ -2141,3 +2142,70 @@ def test_calcule_etat_si_soumis_en_2026_car_exercice_comptable_different_annee_c
"Vous devez publier le Rapport de Durabilité en même temps que le rapport de gestion."
)
assert reglementation.prochaine_echeance == 2026


def test_calcule_etat_avec_CSRD_initialisée(entreprise_factory, alice):
entreprise = entreprise_factory(
categorie_juridique_sirene=CODE_SA,
code_pays_etranger_sirene=None,
est_cotee=False,
appartient_groupe=False,
effectif=CaracteristiquesAnnuelles.EFFECTIF_MOINS_DE_10,
tranche_bilan=CaracteristiquesAnnuelles.BILAN_MOINS_DE_450K,
tranche_chiffre_affaires=CaracteristiquesAnnuelles.CA_MOINS_DE_900K,
)
habilitation = attach_user_to_entreprise(alice, entreprise, "Présidente")
RapportCSRD.objects.create(
entreprise=entreprise,
proprietaire=alice,
annee=date.today().year,
)

reglementation = CSRDReglementation.calculate_status(
entreprise.dernieres_caracteristiques_qualifiantes, alice
)

assert (
reglementation.primary_action.title
== "Accéder à l'espace Rapport de Durabilité"
)
assert reglementation.primary_action.url == reverse(
"reglementations:gestion_csrd",
kwargs={
"siren": entreprise.siren,
"etape": 1,
},
)


def test_calcule_etat_avec_CSRD_et_étapes_validées(entreprise_factory, alice):
entreprise = entreprise_factory(
categorie_juridique_sirene=CODE_SA,
code_pays_etranger_sirene=None,
est_cotee=False,
appartient_groupe=False,
effectif=CaracteristiquesAnnuelles.EFFECTIF_MOINS_DE_10,
tranche_bilan=CaracteristiquesAnnuelles.BILAN_MOINS_DE_450K,
tranche_chiffre_affaires=CaracteristiquesAnnuelles.CA_MOINS_DE_900K,
)
habilitation = attach_user_to_entreprise(alice, entreprise, "Présidente")
DEJA_VALIDEE = 2
RapportCSRD.objects.create(
entreprise=entreprise,
proprietaire=alice,
annee=date.today().year,
etape_validee=DEJA_VALIDEE,
)

reglementation = CSRDReglementation.calculate_status(
entreprise.dernieres_caracteristiques_qualifiantes, alice
)

assert reglementation.primary_action.title == "Reprendre ma CSRD"
assert reglementation.primary_action.url == reverse(
"reglementations:gestion_csrd",
kwargs={
"siren": entreprise.siren,
"etape": DEJA_VALIDEE + 1,
},
)
29 changes: 27 additions & 2 deletions impact/reglementations/views/csrd.py
Original file line number Diff line number Diff line change
Expand Up @@ -310,15 +310,28 @@ def calculate_status(
) -> ReglementationStatus:
if reglementation_status := super().calculate_status(caracteristiques, user):
return reglementation_status

rapport = rapport_csrd(
entreprise=caracteristiques.entreprise,
user=user,
annee=datetime.today().year,
)
if rapport and rapport.etape_validee:
etape_suivante = rapport.etape_validee + 1
label_gestion_csrd = "Reprendre ma CSRD"
else:
etape_suivante = 1
label_gestion_csrd = "Accéder à l'espace Rapport de Durabilité"

primary_action = ReglementationAction(
reverse_lazy(
"reglementations:gestion_csrd",
kwargs={
"siren": caracteristiques.entreprise.siren,
"etape": 1,
"etape": etape_suivante,
},
),
"Accéder à l'espace Rapport de Durabilité",
label_gestion_csrd,
)
if annee := cls.est_soumis_a_partir_de_l_exercice(caracteristiques):
premiere_annee_publication = (
Expand Down Expand Up @@ -448,6 +461,18 @@ def est_grand_groupe(cls, caracteristiques: CaracteristiquesAnnuelles) -> bool:
)


def rapport_csrd(user, entreprise, annee):
try:
habilitation = user.habilitation_set.get(entreprise=entreprise)
return RapportCSRD.objects.get(
entreprise=entreprise,
proprietaire=None if habilitation.is_confirmed else user,
annee=annee,
)
except ObjectDoesNotExist:
pass


@login_required
def guide_csrd(request, siren=None, phase=0, etape=0, sous_etape=0):
if not siren:
Expand Down

0 comments on commit 2bb6981

Please sign in to comment.