Commit 45fa0a2f authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

Ajout des types de champs complets textuels pour l'export CSV et documentation des champs calculés

parent ded37bb1
Loading
Loading
Loading
Loading
Loading
+57 −4
Changes for doc/activities-export.md: 57 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -15,10 +15,31 @@ Les colonnes calculées permettent de configurer des colonnes supplémentaires.

Cette configuration permet d'ajouter une colonne *Multilaboratoire* qui affichera le code du seul labo ou "Multilaboratoire" si l'activité a plusieurs laboratoires impliqués et ajoute une colonne avenant qui indique si l'activité est un avenant (en se basant sur la présente textuelle du terme avenant dans l'intitulé) : 




```php
<?php
// config/autoload/local.php
return array(
    'oscar' => [
        // ...
        'export' => [
            // ------------------------------------------------------------
            //
            // CHAMPS ICI
            //
            // ------------------------------------------------------------
        ]
    ]
);
```

#### Champ calculé : Codes labo solo ou "Multi"

```php
<?php
// config/autoload/local.php
return array(
    'oscar' => [
        // ...
@@ -31,13 +52,32 @@ return array(
                        $labos = [];
                        /** @var \Oscar\Entity\ActivityOrganization $activityOrganization */
                        foreach ($activity->getOrganizationsDeep() as $activityOrganization) {
                            if( $activityOrganization->getRole() == "Laboratoire" && !$activityOrganization->isOutOfDate() && !$activityOrganization->getOrganization()->isClose() ){
                            if( $activityOrganization->getRole() == "Laboratoire" 
                                        && !$activityOrganization->isOutOfDate() 
                                        && !$activityOrganization->getOrganization()->isClose() ){
                                $labos[] = (string)$activityOrganization->getOrganization()->getCode() ?? 'N.D';
                            }
                        }
                        return count($labos) > 1 ? "Multilaboratoire" : implode(', ', $labos);
                    }
                ],
            ]
        ]
    ]
);
```

#### Champ calculé : Nom labo solo ou "Multi"

```php
<?php
// config/autoload/local.php
return array(
    'oscar' => [
        // ...
        'export' => [
            // ...
            'computedFields' => [
                'laboratoriesNames' => [
                    'label' => 'Laboratoire actif (nom)',
                    'handler' => function( \Oscar\Entity\Activity $activity ){
@@ -51,16 +91,29 @@ return array(
                        return count($labos) > 1 ? "Multilaboratoire" : implode(', ', $labos);
                    }
                ],
            ]
        ]
    ]
);
```

#### Champ calculé : Avenant

```php
<?php
// config/autoload/local.php
return array(
    'oscar' => [
        // ...
        'export' => [
            'avenant' => [
                'label' => 'Avenant',
                'handler' => function( \Oscar\Entity\Activity $activity ){
                    return strpos(strtolower($activity->getLabel()), 'avenant') >= 0 ? "O" : "N";
                }
                ]
            ]
            ],
        ]
    ]
);
```
+1 −0
Changes for doc/index.md: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ S'adresse aux gestionnaires d'application souhaitant installer et configurer une
## Fonctionnalités optionnelles

 - [Demande d'activité](activity-request.md)
 - [Personnaliser l'export des activités](activities-export.md)

## Note de version
  - **VERSION 2.11 "MacClane"** ([Note de version](versions/version-2.11.md))
+21 −5
Changes for module/Oscar/src/Oscar/Service/ActivityTypeService.php: 21 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -69,10 +69,28 @@ class ActivityTypeService implements UseEntityManager
        } catch (\Exception $e) {

        }
        return $ids;
    }

    /**
     * Retourne la chemin Complet du type d'activité
     *
     * @param Activity $activityType
     * @return string
     */
    public function getActivityFullText($activityType)
    {
        if( $activityType == null ){
            return "";
        }

        $typeChain = $this->getActivityTypeChain($activityType);

        return $ids;
        if (count($typeChain) <= 1) {
            return "";
        } else {
            return implode(" > ", array_slice($typeChain, 1));
        }
    }

    /**
@@ -401,8 +419,7 @@ class ActivityTypeService implements UseEntityManager

        if (count($nodes) == 1) {
            return $nodes[0];
        }
        else if( count($nodes) == 0 ){
        } else if (count($nodes) == 0) {
            $root = new ActivityType();
            $root->setLft(1)
                ->setRgt(2)
@@ -412,8 +429,7 @@ class ActivityTypeService implements UseEntityManager
            $this->getEntityManager()->persist($root);
            $this->getEntityManager()->flush($root);
            return $root;
        }
        else {
        } else {
            throw new \Exception("Incohérence de l'arbre, veuillez contacter l'administrateur pour déclencher un recalcule de la hérarchie");
        }
    }
+15 −0
Changes for module/Oscar/src/Oscar/Service/ProjectGrantService.php: 15 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -113,6 +113,21 @@ class ProjectGrantService implements UseOscarConfigurationService, UseEntityMana
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    public function getActivityFull( Activity $activity )
    {
        return $this->getActivityTypeService()->getActivityTypeChain($activity->getActivityType());
    }

    /**
     * Retourne la chemin Complet du type d'activité
     *
     * @param Activity $activity
     * @return string
     */
    public function getActivityFullText( Activity $activity )
    {
        return $this->getActivityTypeService()->getActivityFullText($activity->getActivityType());
    }


    public function getTypeDocument( $typeDocumentId, $throw=false ){
+1 −1
Changes for module/Oscar/src/Oscar/Strategy/Activity/ExportDatas.php: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -209,7 +209,7 @@ class ExportDatas implements UseOscarConfigurationService, UseProjectGrantServic

                // Champs calculés
                foreach ($computed as $computedField) {
                    $computedValues[$computedField['label']] = $computedField['handler']($entity);
                    $computedValues[$computedField['label']] = $computedField['handler']($entity, $this->getProjectGrantService());
                }