diff --git a/composer.json b/composer.json index 033b3f19b..b47856954 100644 --- a/composer.json +++ b/composer.json @@ -47,7 +47,6 @@ "symfony/monolog-bundle": "^3.5", "symfony/security-bundle": "^4.4", "symfony/serializer": "^5.3", - "symfony/swiftmailer-bundle": "^3.5", "symfony/templating": "^4.4", "symfony/translation": "^4.4", "symfony/twig-bundle": "^4.4", diff --git a/phpstan-baseline-level-4.neon b/phpstan-baseline-level-4.neon index 1b7bb5a07..833a55afb 100644 --- a/phpstan-baseline-level-4.neon +++ b/phpstan-baseline-level-4.neon @@ -2631,11 +2631,6 @@ parameters: count: 2 path: src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php - - - message: "#^Call to method getRoleScopes\\(\\) on an unknown class Chill\\\\MainBundle\\\\Entity\\\\PermissionGroup\\.$#" - count: 1 - path: src/Bundle/ChillMainBundle/Security/Authorization/AuthorizationHelper.php - - message: "#^Empty array passed to foreach\\.$#" count: 1 diff --git a/src/Bundle/ChillActivityBundle/Controller/ActivityController.php b/src/Bundle/ChillActivityBundle/Controller/ActivityController.php index 798ae77b4..97678af50 100644 --- a/src/Bundle/ChillActivityBundle/Controller/ActivityController.php +++ b/src/Bundle/ChillActivityBundle/Controller/ActivityController.php @@ -41,7 +41,6 @@ use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\FormInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\Security\Core\Role\Role; use Symfony\Component\Serializer\SerializerInterface; use Symfony\Contracts\Translation\TranslatorInterface; use function array_key_exists; @@ -213,7 +212,7 @@ final class ActivityController extends AbstractController $form = $this->createForm(ActivityType::class, $entity, [ 'center' => $this->centerResolver->resolveCenters($entity)[0] ?? null, - 'role' => new Role('CHILL_ACTIVITY_UPDATE'), + 'role' => 'CHILL_ACTIVITY_UPDATE', 'activityType' => $entity->getActivityType(), 'accompanyingPeriod' => $accompanyingPeriod, ]); @@ -442,7 +441,7 @@ final class ActivityController extends AbstractController $form = $this->createForm(ActivityType::class, $entity, [ 'center' => $this->centerResolver->resolveCenters($entity)[0] ?? null, - 'role' => new Role('CHILL_ACTIVITY_CREATE'), + 'role' => 'CHILL_ACTIVITY_CREATE', 'activityType' => $entity->getActivityType(), 'accompanyingPeriod' => $accompanyingPeriod, ]); diff --git a/src/Bundle/ChillActivityBundle/Service/DocGenerator/ListActivitiesByAccompanyingPeriodContext.php b/src/Bundle/ChillActivityBundle/Service/DocGenerator/ListActivitiesByAccompanyingPeriodContext.php index 266fadfee..b2272dd7b 100644 --- a/src/Bundle/ChillActivityBundle/Service/DocGenerator/ListActivitiesByAccompanyingPeriodContext.php +++ b/src/Bundle/ChillActivityBundle/Service/DocGenerator/ListActivitiesByAccompanyingPeriodContext.php @@ -120,7 +120,6 @@ class ListActivitiesByAccompanyingPeriodContext implements public function contextGenerationDataDenormalize(DocGeneratorTemplate $template, $entity, array $data): array { - $denormalized = $this->accompanyingPeriodContext->contextGenerationDataDenormalize($template, $entity, $data); foreach (['myActivitiesOnly', 'myWorksOnly'] as $k) { diff --git a/src/Bundle/ChillActivityBundle/translations/messages.fr.yml b/src/Bundle/ChillActivityBundle/translations/messages.fr.yml index b64635f69..042fccc69 100644 --- a/src/Bundle/ChillActivityBundle/translations/messages.fr.yml +++ b/src/Bundle/ChillActivityBundle/translations/messages.fr.yml @@ -106,6 +106,9 @@ CHILL_ACTIVITY_SEE_DETAILS: Voir le détail des échanges CHILL_ACTIVITY_DELETE: Supprimer un échange CHILL_ACTIVITY_STATS: Statistique des échanges CHILL_ACTIVITY_LIST: Liste des échanges +CHILL_ACTIVITY_CREATE_PERSON: Créer un échange lié à un usager +CHILL_ACTIVITY_CREATE_ACCOMPANYING_COURSE: Créer un échange lié à un parcours +CHILL_ACTIVITY_FULL: Voir les détails, créer, supprimer et mettre à jour un échange # admin Activities: Échanges @@ -116,7 +119,7 @@ Activity type configuration: Configuration des catégories d'échanges Activity Reasons: Sujets d'un échange Activity Reasons Category: Catégories de sujet d'échanges Activity Types Categories: Catégories des types d'échange -Activity Presences: Presences aux échanges +Activity Presences: Présences aux échanges Associated activity reason category is inactive: La catégorie de sujet attachée est inactive @@ -124,13 +127,13 @@ Associated activity reason category is inactive: La catégorie de sujet attaché crud: activity_type: title_new: Nouveau type d'échange - title_edit: Edition d'un type d'activité + title_edit: Édition d'un type d'échange activity_type_category: - title_new: Nouvelle catégorie de type d'activité - title_edit: Edition d'une catégorie de type d'activité + title_new: Nouvelle catégorie de type d'échange + title_edit: Édition d'une catégorie de type d'échange activity_presence: - title_new: Nouvelle Présence aux activités - title_edit: Edition d'une Présence aux activités + title_new: Nouvelle présence aux échanges + title_edit: Édition d'une présence aux échanges # activity reason admin ActivityReason list: Liste des sujets @@ -139,7 +142,7 @@ Active: Actif Category: Catégorie ActivityReason creation: Nouveau sujet ActivityReason edit: Modification d'un sujet -ActivityReason: Sujet d'activité +ActivityReason: Sujet d'échange The entity is inactive and won't be proposed: Le sujet est inactif et ne sera pas proposé The entity is active and will be proposed: Le sujet est actif et sera proposé @@ -148,17 +151,17 @@ ActivityReasonCategory list: Catégories de sujets Create a new activity category reason: Créer une nouvelle catégorie ActivityReasonCategory creation: Nouvelle catégorie de sujet ActivityReasonCategory edit: Modification d'une catégorie de sujet -ActivityReasonCategory: Catégorie de sujet d'activité +ActivityReasonCategory: Catégorie de sujet d'échange ActivityReasonCategory is active and will be proposed: La catégorie est active et sera proposée ActivityReasonCategory is inactive and won't be proposed: La catégorie est inactive et ne sera pas proposée #activity presence admin -ActivityPresence list: Liste des Présences aux activités -Create a new activity presence: Créer une nouvelle "Présence aux activités" +ActivityPresence list: Liste des présences aux échanges +Create a new activity presence: Créer une nouvelle "Présence aux échanges" # activity type type admin -ActivityType list: Types d'activités -Create a new activity type: Créer un nouveau type d'activité +ActivityType list: Types d'échanges +Create a new activity type: Créer un nouveau type d'échange Persons visible: Visibilité du champ Usagers Persons label: Libellé du champ Usagers User visible: Visibilité du champ Utilisateur @@ -197,135 +200,135 @@ Documents visible: Visibilité du champ Documents Documents label: Libellé du champ Documents # activity type category admin -ActivityTypeCategory list: Liste des catégories des types d'activité -Create a new activity type category: Créer une nouvelle catégorie de type d'activité +ActivityTypeCategory list: Liste des catégories des types d'échange +Create a new activity type category: Créer une nouvelle catégorie de type d'échange # activity delete -Remove activity: Supprimer une activité -Are you sure you want to remove the activity about "%name%" ?: Êtes-vous sûr de vouloir supprimer une activité qui concerne "%name%" ? -The activity has been successfully removed.: L'activité a été supprimée. +Remove activity: Supprimer un échange +Are you sure you want to remove the activity about "%name%" ?: Êtes-vous sûr de vouloir supprimer un échange qui concerne "%name%" ? +The activity has been successfully removed.: L'échange a été supprimé. # exports -Exports of activities linked to a person: Exports des activités liées à un usager -Number of activities linked to a person: Nombre d'activités liées à un usager -Count activities linked to a person: Nombre d'activités -Count activities linked to a person by various parameters.: Compte le nombre d'activités enregistrées et liées à un usager en fonction de différents paramètres. -Sum activity linked to a person duration: Durée des activités -Sum activities linked to a person duration: Durée des activités liés à un usager -Sum activities linked to a person duration by various parameters.: Additionne la durée des activités en fonction de différents paramètres. -List activity linked to a person: Liste les activités -List activities linked to a person: Liste des activités liés à un usager -List activities linked to a person description: Crée la liste des activités en fonction de différents paramètres. +Exports of activities linked to a person: Exports des échanges liés à un usager +Number of activities linked to a person: Nombre d'échanges liés à un usager +Count activities linked to a person: Nombre d'échanges +Count activities linked to a person by various parameters.: Compte le nombre d'échanges enregistrés et liés à un usager en fonction de différents paramètres. +Sum activity linked to a person duration: Durée des échanges +Sum activities linked to a person duration: Durée des échanges liés à un usager +Sum activities linked to a person duration by various parameters.: Additionne la durée des échanges en fonction de différents paramètres. +List activity linked to a person: Liste les échanges +List activities linked to a person: Liste des échanges liés à un usager +List activities linked to a person description: Crée la liste des échanges en fonction de différents paramètres. -Exports of activities linked to an accompanying period: Exports des activités liées à un parcours -Number of activities linked to an accompanying period: Nombre d'activités liées à un parcours -Count activities linked to an accompanying period: Nombre d'activités -Count activities linked to an accompanying period by various parameters.: Compte le nombre d'activités enregistrées et liées à un parcours en fonction de différents paramètres. -Sum activity linked to an accompanying period duration: Somme de la durée des activités -Sum activities linked to an accompanying period duration: Somme de la durée des activités liées à un parcours -Sum activities linked to an accompanying period duration by various parameters.: Additionne la durée des activités en fonction de différents paramètres. -Sum activity linked to an accompanying period visit duration: Somme de la durée de déplacement des activités -Sum activities linked to an accompanying period visit duration: Somme de la durée de déplacement des activités liées à un parcours -Sum activities linked to an accompanying period visit duration by various parameters.: Additionne la durée de déplacement des activités en fonction de différents paramètres. -Average activity linked to an accompanying period duration: Moyenne de la durée des activités -Average activities linked to an accompanying period duration: Moyenne de la durée des activités liées à un parcours -Average activities linked to an accompanying period duration by various parameters.: Moyenne de la durée des activités en fonction de différents paramètres. -Average activity linked to an accompanying period visit duration: Moyenne de la durée de déplacement des activités -Average activities linked to an accompanying period visit duration: Moyenne de la durée de déplacement des activités liées à un parcours -Average activities linked to an accompanying period visit duration by various parameters.: Moyenne de la durée de déplacement des activités en fonction de différents paramètres. +Exports of activities linked to an accompanying period: Exports des échanges liés à un parcours +Number of activities linked to an accompanying period: Nombre d'échanges liés à un parcours +Count activities linked to an accompanying period: Nombre d'échanges +Count activities linked to an accompanying period by various parameters.: Compte le nombre d'échanges enregistrés et liées à un parcours en fonction de différents paramètres. +Sum activity linked to an accompanying period duration: Somme de la durée des échanges +Sum activities linked to an accompanying period duration: Somme de la durée des échanges liés à un parcours +Sum activities linked to an accompanying period duration by various parameters.: Additionne la durée des échanges en fonction de différents paramètres. +Sum activity linked to an accompanying period visit duration: Somme de la durée de déplacement des échanges +Sum activities linked to an accompanying period visit duration: Somme de la durée de déplacement des échanges liés à un parcours +Sum activities linked to an accompanying period visit duration by various parameters.: Additionne la durée de déplacement des échanges en fonction de différents paramètres. +Average activity linked to an accompanying period duration: Moyenne de la durée des échanges +Average activities linked to an accompanying period duration: Moyenne de la durée des échanges liés à un parcours +Average activities linked to an accompanying period duration by various parameters.: Moyenne de la durée des échanges en fonction de différents paramètres. +Average activity linked to an accompanying period visit duration: Moyenne de la durée de déplacement des échanges +Average activities linked to an accompanying period visit duration: Moyenne de la durée de déplacement des échanges liés à un parcours +Average activities linked to an accompanying period visit duration by various parameters.: Moyenne de la durée de déplacement des échanges en fonction de différents paramètres. #filters -Filter by reason: Filtrer les activités par sujet +Filter by reason: Filtrer les échanges par sujet 'Filtered by reasons: only %list%': 'Filtré par sujet: seulement %list%' -'Filtered by activity type: only %list%': "Filtré par type d'activité: uniquement %list%" -Filtered by date activity: Filtrer les activités par date -Activities after this date: Activités après cette date -Activities before this date: Activités avant cette date -"Filtered by date of activity: only between %date_from% and %date_to%": "Filtré par date de l'activité: uniquement entre %date_from% et %date_to%" -This date should be after the date given in "Implied in an activity after this date" field: Cette date devrait être postérieure à la date donnée dans le champ "activités après cette date" +'Filtered by activity type: only %list%': "Filtré par type d'échange: uniquement %list%" +Filtered by date activity: Filtrer les échanges par date +Activities after this date: Échanges après cette date +Activities before this date: Échanges avant cette date +"Filtered by date of activity: only between %date_from% and %date_to%": "Filtré par date de l'échange: uniquement entre %date_from% et %date_to%" +This date should be after the date given in "Implied in an activity after this date" field: Cette date devrait être postérieure à la date donnée dans le champ "échanges après cette date" -Filtered by person having an activity in a period: Uniquement les usagers ayant eu une activité dans la période donnée -Implied in an activity after this date: Impliqué dans une activité après cette date -Implied in an activity before this date: Impliqué dans une activité avant cette date -Filtered by person having an activity between %date_from% and %date_to% with reasons %reasons_name%: Filtré par usager associées à une activité entre %date_from% et %date_to% avec les sujets %reasons_name% -Activity reasons for those activities: Sujets de ces activités +Filtered by person having an activity in a period: Uniquement les usagers ayant eu un échange dans la période donnée +Implied in an activity after this date: Impliqué dans un échange après cette date +Implied in an activity before this date: Impliqué dans un échange avant cette date +Filtered by person having an activity between %date_from% and %date_to% with reasons %reasons_name%: Filtré par usager associées à un échange entre %date_from% et %date_to% avec les sujets %reasons_name% +Activity reasons for those activities: Sujets de ces échanges -Filter by activity type: Filtrer les activités par type +Filter by activity type: Filtrer les échanges par type -Filter activity by location: Filtrer les activités par localisation +Filter activity by location: Filtrer les échanges par localisation 'Filtered activity by location: only %locations%': "Filtré par localisation: uniquement %locations%" -Filter activity by locationtype: Filtrer les activités par type de localisation +Filter activity by locationtype: Filtrer les échanges par type de localisation 'Filtered activity by locationtype: only %types%': "Filtré par type de localisation: uniquement %types%" Accepted locationtype: Types de localisation Accepted users: TMS(s) -Filter activity by emergency: Filtrer les activités par urgence +Filter activity by emergency: Filtrer les échanges par urgence 'Filtered activity by emergency: only %emergency%': "Filtré par urgence: uniquement si %emergency%" -activity is emergency: l'activité est urgente -activity is not emergency: l'activité n'est pas urgente -Filter activity by sentreceived: Filtrer les activités par envoyé/reçu +activity is emergency: l'échange est urgent +activity is not emergency: l'échange n'est pas urgent +Filter activity by sentreceived: Filtrer les échanges par envoyé/reçu 'Filtered activity by sentreceived: only %sentreceived%': "Filtré par envoyé/reçu: uniquement %sentreceived%" Accepted sentreceived: '' -Filter activity by linked socialaction: Filtrer les activités par action liée +Filter activity by linked socialaction: Filtrer les échanges par action liée 'Filtered activity by linked socialaction: only %actions%': "Filtré par action liée: uniquement %actions%" -Filter activity by linked socialissue: Filtrer les activités par problématique liée +Filter activity by linked socialissue: Filtrer les échanges par problématique liée 'Filtered activity by linked socialissue: only %issues%': "Filtré par problématique liée: uniquement %issues%" -Filter activity by user: Filtrer les activités par créateur -Filter activity by users: Filtrer les activités par utilisateur participant -Filter activity by creator: Filtrer les activités par créateur de l'échange +Filter activity by user: Filtrer les échanges par créateur +Filter activity by users: Filtrer les échanges par utilisateur participant +Filter activity by creator: Filtrer les échanges par créateur de l'échange 'Filtered activity by user: only %users%': "Filtré par référent: uniquement %users%" 'Filtered activity by users: only %users%': "Filtré par utilisateurs participants: uniquement %users%" 'Filtered activity by creator: only %users%': "Filtré par créateur: uniquement %users%" Creators: Créateurs -Filter activity by userscope: Filtrer les activités par service du créateur +Filter activity by userscope: Filtrer les échanges par service du créateur 'Filtered activity by userscope: only %scopes%': "Filtré par service du créateur: uniquement %scopes%" Accepted userscope: Services -Filter acp which has no activity: Filtrer les parcours qui n’ont pas d’activité -Filtered acp which has no activities: Filtrer les parcours sans activité associée -Group acp by activity number: Grouper les parcours par nombre d’activité +Filter acp which has no activity: Filtrer les parcours qui n’ont pas d’échange +Filtered acp which has no activities: Filtrer les parcours sans échange associé +Group acp by activity number: Grouper les parcours par nombre d’échange #aggregators -Activity type: Type d'activité -Activity user: Utilisateur lié à l'activité +Activity type: Type d'échange +Activity user: Utilisateur lié à l'échange By reason: Par sujet By category of reason: Par catégorie de sujet Reason's level: Niveau du sujet -Group by reasons: Sujet d'activité -Aggregate by activity user: Grouper les activités par référent -Aggregate by activity users: Grouper les activités par utilisateurs participants -Aggregate by activity type: Grouper les activités par type -Aggregate by activity reason: Grouper les activités par sujet -Aggregate by users scope: Grouper les activités par service principal de l'utilisateur -Users 's scope: Service principal des utilisateurs participants à l'activité -Aggregate by users job: Grouper les activités par métier des utilisateurs participants -Users 's job: Métier des utilisateurs participants à l'activité +Group by reasons: Sujet d'échange +Aggregate by activity user: Grouper les échanges par référent +Aggregate by activity users: Grouper les échanges par utilisateurs participants +Aggregate by activity type: Grouper les échanges par type +Aggregate by activity reason: Grouper les échanges par sujet +Aggregate by users scope: Grouper les échanges par service principal de l'utilisateur +Users 's scope: Service principal des utilisateurs participants à l'échange +Aggregate by users job: Grouper les échanges par métier des utilisateurs participants +Users 's job: Métier des utilisateurs participants à l'échange -Group activity by locationtype: Grouper les activités par type de localisation -Group activity by date: Grouper les activités par date +Group activity by locationtype: Grouper les échanges par type de localisation +Group activity by date: Grouper les échanges par date Frequency: Fréquence by month: Par mois by week: Par semaine for week: Semaine by year: Par année in year: En -Group activity by creator: Grouper les activités par créateur de l'échange -Group activity by creator scope: Grouper les activités par service du créateur de l'échange -Group activity by linked thirdparties: Grouper les activités par tiers impliqué +Group activity by creator: Grouper les échanges par créateur de l'échange +Group activity by creator scope: Grouper les échanges par service du créateur de l'échange +Group activity by linked thirdparties: Grouper les échanges par tiers impliqué Accepted thirdparty: Tiers impliqué -Group activity by linked socialaction: Grouper les activités par action liée -Group activity by linked socialissue: Grouper les activités par problématique liée -Group activity by userscope: Grouper les activités par service du créateur +Group activity by linked socialaction: Grouper les échanges par action liée +Group activity by linked socialissue: Grouper les échanges par problématique liée +Group activity by userscope: Grouper les échanges par service du créateur -Last activities: Les dernières activités +Last activities: Les derniers échanges -See activity in accompanying course context: Voir l'activité dans le contexte du parcours d'accompagnement +See activity in accompanying course context: Voir l'échange dans le contexte du parcours d'accompagnement -You get notified of an activity which does not exists any more: Cette notification ne correspond pas à une activité valide. -you are not allowed to see it details: La notification fait référence à une activité à laquelle vous n'avez pas accès. -This is the minimal activity data: Activité n° +You get notified of an activity which does not exists any more: Cette notification ne correspond pas à un échange valide. +you are not allowed to see it details: La notification fait référence à un échange auquel vous n'avez pas accès. +This is the minimal activity data: Échange n° docgen: - Activity basic: Echange + Activity basic: Échange A basic context for activity: Contexte pour les échanges Accompanying period with a list of activities: Parcours d'accompagnement avec liste des échanges Accompanying period with a list of activities description: Ce contexte reprend les informations du parcours, et tous les échanges pour un parcours. Les échanges ne sont pas filtrés. @@ -341,7 +344,7 @@ export: persons ids: Identifiant des usagers persons name: Nom des usagers thirds parties: Tiers - date: Date de l'activité + date: Date de l'échange locationName: Localisation sent received: Envoyé ou reçu emergency: Urgence @@ -350,17 +353,17 @@ export: travelTime: Durée de déplacement durationTime: Durée id: Identifiant - List activities linked to an accompanying course: Liste les activités liées à un parcours en fonction de différents filtres. - List activity linked to a course: Liste des activités liées à un parcours + List activities linked to an accompanying course: Liste les échanges liés à un parcours en fonction de différents filtres. + List activity linked to a course: Liste des échanges liés à un parcours filter: activity: by_usersjob: - Filter by users job: Filtrer les activités par métier d'au moins un utilisateur participant + Filter by users job: Filtrer les échanges par métier d'au moins un utilisateur participant 'Filtered activity by users job: only %jobs%': 'Filtré par métier d''au moins un utilisateur participant: seulement %jobs%' by_usersscope: - Filter by users scope: Filtrer les activités par services d'au moins un utilisateur participant + Filter by users scope: Filtrer les échanges par services d'au moins un utilisateur participant 'Filtered activity by users scope: only %scopes%': 'Filtré par service d''au moins un utilisateur participant: seulement %scopes%' aggregator: activity: @@ -368,4 +371,4 @@ export: Sent or received: Envoyé ou reçu is sent: envoyé is received: reçu - Group activity by sentreceived: Grouper les activités par envoyé / reçu + Group activity by sentreceived: Grouper les échanges par envoyé / reçu diff --git a/src/Bundle/ChillBudgetBundle/Resources/public/page/chillbudget.scss b/src/Bundle/ChillBudgetBundle/Resources/public/page/chillbudget.scss index 20a87cce2..79f40dc76 100644 --- a/src/Bundle/ChillBudgetBundle/Resources/public/page/chillbudget.scss +++ b/src/Bundle/ChillBudgetBundle/Resources/public/page/chillbudget.scss @@ -1,39 +1,42 @@ -.subtitle { +h3.subtitle { margin-top: 1rem; margin-bottom: 1rem; padding: 1rem; + &::before { + font: normal normal normal 20px/1 ForkAwesome; + margin-right: 0.5em; + content: "\f061"; + } } -.family-title { + +$col_charge: #e03851d7; +$col_resource: #6d9e63d8; + +h4.family-title { + margin-top: 1.5rem; margin-bottom: 1rem !important; + padding-left: 0.7em; + i { + margin-right: 0.4em; + } + &.charge i { color: $col_charge; } + &.resource i { color: $col_resource; } } .budget-table th { th { color: white; } } -.budget-table { - th.charge { - background-color: #e03851d7; - } -} -.budget-table { - th.resource { - background-color: #6d9e63d8; - } -} -.budget-table { + +table.budget-table { th, td { padding: 10px; text-align: right; } - td.column-wide { - width: 20%; - } - td.column-small { - width: 15%; - &.right { - align-items: right; - } + th.charge { background-color: $col_charge; } + th.resource { background-color: $col_resource; } + td.column-fixed { + width: 9.5em; } } @@ -58,4 +61,4 @@ button[aria-expanded="true"] > span.folded, button[aria-expanded="false"] > span.unfolded { display: none; } button[aria-expanded="false"] > span.folded, -button[aria-expanded="true"] > span.unfolded { display: inline; } \ No newline at end of file +button[aria-expanded="true"] > span.unfolded { display: inline; } diff --git a/src/Bundle/ChillBudgetBundle/Resources/views/Budget/_budget.html.twig b/src/Bundle/ChillBudgetBundle/Resources/views/Budget/_budget.html.twig index 6e248bf0c..e75b83ee8 100644 --- a/src/Bundle/ChillBudgetBundle/Resources/views/Budget/_budget.html.twig +++ b/src/Bundle/ChillBudgetBundle/Resources/views/Budget/_budget.html.twig @@ -32,28 +32,21 @@ {% endif %} {% endfor %} -
{{ "There isn't any element recorded"|trans }}
-{{ "There isn't any element recorded"|trans }}
{% endif %} {% if pastCharges|length > 0 or pastResources|length > 0 %} -