Commit ab45cd06 authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

- UP : Le fichier de l'avenant est optionnel, il reste obligatoire pour être appliqué

 - UP : Le type de modification "Date de début" a été ajouté
parent 3cdb5308
Loading
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
@@ -60,10 +60,11 @@ class ActivityAvenant
    /**
     * Nom du fichier stocké (l'emplacement du dossier est dans la configuration)
     *
     * @var string
     * @ORM\Column(type="string")
     * @var ?string
     * @var ?string
     * @ORM\Column(type="string", options={"default" : NULL}, nullable=true)
     */
    protected string $filename;
    protected ?string $filename;

    /**
     * Commentaire de l'utilisateur
@@ -119,12 +120,12 @@ class ActivityAvenant
        return $this;
    }

    public function getFilename(): string
    public function getFilename(): ?string
    {
        return $this->filename;
    }

    public function setFilename(string $filename): self
    public function setFilename(?string $filename): self
    {
        $this->filename = $filename;
        return $this;
@@ -198,4 +199,14 @@ class ActivityAvenant
        }
        return self::getStatusList()[$status];
    }

    /**
     * Retourne TRUE si l'avenant peut être appliqué.
     *
     * @return bool
     */
    public function isRelevant() :bool
    {
        return $this->getFilename() !== null && $this->getStatus() === self::STATUS_DRAFT;
    }
}
+3 −0
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@ class ActivityAvenantModification
    const TYPE_CHANGE_AMOUNT = 'changeAmount';
    const TYPE_DATE_END = 'dateEnd';

    const TYPE_DATE_START = 'dateStart';

    public static function getTypes(): array
    {
        return array(
@@ -26,6 +28,7 @@ class ActivityAvenantModification
            self::TYPE_ORGANIZATION_DEL => "Ajout d'une organisation",
            self::TYPE_CHANGE_AMOUNT => "Modification du montant",
            self::TYPE_DATE_END => "Modification de la date de fin",
            self::TYPE_DATE_START => "Modification de la date de début",
        );
    }

+19 −7
Original line number Diff line number Diff line
@@ -128,16 +128,17 @@ class ActivityAvenantsService implements
        }

        $fileUploaded = $this->uploadAvenantFile($activity);
        if (($mode == "update" && $fileUploaded)) {

        if( $fileUploaded ) {
            if( $avenant->getFilename() ) {
                $this->deleteAvenantFile($avenant->getFilename());
            }
        if ($fileUploaded) {
            $avenant->setFilename($fileUploaded);
        }

        if (($mode == "create" && !$fileUploaded)) {
            throw new OscarException("Fichier manquant");
        }
        //if (($mode == "create" && !$fileUploaded)) {
        //    throw new OscarException("Fichier manquant");
        //}

        // Modification
        foreach ($idsModification as $modificationId) {
@@ -195,6 +196,12 @@ class ActivityAvenantsService implements
            /** @var ActivityAvenantModification $modification */
            foreach ($avenant->getModifications() as $modification) {
                switch ($modification->getType()) {
                    case ActivityAvenantModification::TYPE_DATE_START:
                        $this->getLoggerService()->info($modification->getNewValue1());
                        $modification->setOldValue1($activity->getDateStartStr());
                        $activity->setDateStart($modification->getNewValue1());
                        break;

                    case ActivityAvenantModification::TYPE_DATE_END:
                        $this->getLoggerService()->info($modification->getNewValue1());
                        $modification->setOldValue1($activity->getDateEndStr());
@@ -487,6 +494,11 @@ class ActivityAvenantsService implements
                $msg = "Modification de la date de fin pour " . $moment->format('d/m/Y');
                $oldValue1 = $avenant->getActivity()->getDateEndStr();
                break;
            case ActivityAvenantModification::TYPE_DATE_START:
                $moment = Moment::fromDateTime(new \DateTime($newValue1));
                $msg = "Modification de la date de début pour " . $moment->format('d/m/Y');
                $oldValue1 = $avenant->getActivity()->getDateStartStr();
                break;
            case ActivityAvenantModification::TYPE_PERSON_DEL:
                $person = $this->getEntityManager()->getRepository(Person::class)->find($newValue1);
                $role = $this->getEntityManager()->getRepository(Role::class)->find($newValue2);
+1 −0
Original line number Diff line number Diff line
@@ -1418,6 +1418,7 @@ class ProjectGrantApiService implements
                'status' => $item->getStatus(),
                'status_text' => $item->getStatusLabel(),
                'editable' => ActivityAvenant::STATUS_DRAFT === $item->getStatus(),
                'relevant' => $item->isRelevant(),
                'modifications' => $modifications,
                'url_api' => $urlPlugin->fromRoute('avenant/api', [
                    'activity_id' => $activity->getId(),
+10 −3
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
            <li><a class="dropdown-item" href="#" @click.prevent="handlerAddChange('organizationDel')" :class="modificationsEnabled['organizationDel'] ? '' : 'disabled'">Suppression d'une organisation</a></li>
            <li><a class="dropdown-item" href="#" @click.prevent="handlerAddChange('changeAmount')" :class="modificationsEnabled['changeAmount'] ? '' : 'disabled'">Modification du montant</a></li>
            <li><a class="dropdown-item" href="#" @click.prevent="handlerAddChange('dateEnd')" :class="modificationsEnabled['dateEnd'] ? '' : 'disabled'">Modification de la date de fin</a></li>
            <li><a class="dropdown-item" href="#" @click.prevent="handlerAddChange('dateStart')" :class="modificationsEnabled['dateStart'] ? '' : 'disabled'">Modification de la date de début</a></li>
          </ul>
        </div>
        <section class="modifications unsaved">
@@ -37,6 +38,10 @@
              <span class="text"> Date de fin : </span>
              <span><Datepicker v-model="change.value1"/></span>
            </div>
            <div v-else-if="change.type === 'dateStart'">
              <span class="text"> Date de début : </span>
              <span><Datepicker v-model="change.value1"/></span>
            </div>
            <!-- EDITION changeAmount : Montant -->
            <div v-else-if="change.type === 'changeAmount'">
              <span class="text">Nouveau montant : </span>
@@ -89,7 +94,7 @@
              </select>
            </div>
            <div v-else>
              {{ change }}
              Modification inconnue : {{ change }}
            </div>
            <nav>
              <button class="btn btn-xs btn-danger" @click.prevent="handlerRemoveChange(change)">
@@ -104,6 +109,7 @@
          <article v-for="change in edit.modifications.filter(i => i.mode !== 'new')" class="change">
            <div>
              <i class="icon-calendar" v-if="change.type === 'dateEnd'"></i>
              <i class="icon-calendar" v-if="change.type === 'dateStart'"></i>
              <i class="icon-user" v-if="change.type === 'personAdd'"></i>
              <i class="icon-bank" v-if="change.type === 'changeAmount'"></i>
              <i class="icon-user text-danger" v-if="change.type === 'personDel'"></i>
@@ -171,7 +177,7 @@
      <p v-if="a.comment">{{ a.comment }}</p>
      <nav>

        <a :href="a.url_download" class="btn btn-xs btn-primary">
        <a :href="a.url_download" v-if="a.filename" class="btn btn-xs btn-primary">
          <i class="icon-file-pdf"></i>
          Télécharger</a>

@@ -192,7 +198,7 @@

        <ButtonConfirm @confirm="handlerApplyAvenant(a)"
                       :class="'btn btn-xs btn-success'"
                       v-if="a.status === 100 && manage">
                       v-if="a.relevant && manage">
          <i class="icon-trash"></i>
          Appliquer
          <template #message>
@@ -248,6 +254,7 @@ export default {
        'organizationDel': true,
        'changeAmount': !this.edit.modifications.find( m => m.type == 'changeAmount'),
        'dateEnd': !this.edit.modifications.find( m => m.type == 'dateEnd'),
        'dateStart': !this.edit.modifications.find( m => m.type == 'dateStart'),
      }
    },