Commit 5bc2cf20 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Merge branch 'master' of https://git.unicaen.fr/open-source/OSE

parents f90803a1 baa6c6a1
Loading
Loading
Loading
Loading
+8 −0
Changes for CHANGELOG.md: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -2,6 +2,14 @@

[OSE 18.1](#ose-181-31052022)

# OSE 19 (à venir)

## Nouveautés

* Ajout d'un paramètre général qui permet de choisir si un contrat peut avoir une date de retour signé ou non s'il n'y a pas de fichier
* Ajout d'un paramètre général pour empêcher la création d'avenants
* Ajout d'un paramètre général pour permettre de créer les contrats sans passer par un projet de contrat
* Ajout de date de dernière modification des données dans les indicateurs notifiant d'une validation en attente

# OSE 18.1 (31/05/2022)

+1 −0
Changes for data/ddl/view/V_INDICATEUR_430.sql: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ SELECT
  w.structure_id
FROM
	intervenant i
	JOIN PARAMETRE p ON p.VALEUR = 'avenant'
	JOIN tbl_workflow w ON w.intervenant_id = i.id
	JOIN (
    SELECT DISTINCT
+10 −0
Changes for data/parametres.php: 10 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -228,4 +228,14 @@ Cordialement,
        "VALEUR"      => "avenant",
        "DESCRIPTION" => "Permettre la création d'avenants au contrat",
    ],

    "contrat_direct" => [
        "VALEUR"      => "desactive",
        "DESCRIPTION" => "Permettre la création d'un contrat sans passé par le projet",
    ],

    "contrat_date" => [
        "VALEUR"      => "desactive",
        "DESCRIPTION" => "Permettre de saisir une date de retour signé pour un contrat sans ajouter de fichier",
    ],
];
 No newline at end of file
+19 −3
Changes for module/Application/src/Assertion/ContratAssertion.php: 19 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -5,10 +5,11 @@ namespace Application\Assertion;
use Application\Acl\Role;
use Application\Entity\Db\Contrat;
use Application\Entity\Db\Intervenant;
use Application\Entity\Db\Parametre;
use Application\Entity\Db\Structure;
use Application\Entity\Db\WfEtape;
use Application\Provider\Privilege\Privileges;

use Application\Service\Traits\ParametresServiceAwareTrait;
// sous réserve que vous utilisiez les privilèges d'UnicaenAuth et que vous ayez généré votre fournisseur
use Application\Service\Traits\WorkflowServiceAwareTrait;
use UnicaenAuth\Assertion\AbstractAssertion;
@@ -22,6 +23,8 @@ use Laminas\Permissions\Acl\Resource\ResourceInterface;
 */
class ContratAssertion extends AbstractAssertion
{
    use ParametresServiceAwareTrait;

    const PRIV_LISTER_FICHIERS   = 'contrat-lister-fichiers';
    const PRIV_SUPPRIMER_FICHIER = 'contrat-supprimer-fichier';
    const PRIV_AJOUTER_FICHIER   = 'contrat-ajouter-fichier';
@@ -181,9 +184,12 @@ class ContratAssertion extends AbstractAssertion
            $devalid = true;
        }

        $contratDirectResult = $this->getServiceParametres()->get('contrat_direct');
        $contratDirect       = ($contratDirectResult == Parametre::CONTRAT_DIRECT);

        return $this->asserts([
            $this->assertRole($contrat),
            $contrat->getValidation(),
            $contrat->getValidation() && !$contratDirect,
            !$contrat->getDateRetourSigne(),
            $devalid,
        ]);
@@ -193,9 +199,19 @@ class ContratAssertion extends AbstractAssertion

    protected function assertSuppression(Contrat $contrat)
    {
        if (!$contrat->estUnAvenant()) {
            $devalid = $contrat->getIntervenant()->getContrat()->count() == 1; // on ne peut supprimer un contrat que si aucun avenant n'existe
        } else {
            $devalid = true;
        }

        $contratDirectResult = $this->getServiceParametres()->get('contrat_direct');
        $contratDirect       = ($contratDirectResult == Parametre::CONTRAT_DIRECT);

        return $this->asserts([
            $this->assertRole($contrat),
            !$contrat->getValidation(),
            !$contrat->getValidation() || ($contratDirect && $devalid),
            !$contrat->getDateRetourSigne(),
        ]);
    }

+31 −3
Changes for module/Application/src/Controller/ContratController.php: 31 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -139,7 +139,11 @@ class ContratController extends AbstractController
        $avenantResult = $this->getServiceParametres()->get('avenant');
        $avenant       = ($avenantResult == Parametre::AVENANT);

        return compact('title', 'intervenant', 'contrats', 'services', 'emailIntervenant', 'avenant');
        $contratDirectResult = $this->getServiceParametres()->get('contrat_direct');
        $contratDirect       = ($contratDirectResult == Parametre::CONTRAT_DIRECT);


        return compact('title', 'intervenant', 'contrats', 'services', 'emailIntervenant', 'avenant', 'contratDirect');
    }


@@ -152,6 +156,9 @@ class ContratController extends AbstractController
        $structure = $this->getEvent()->getParam('structure');
        /* @var $structure Structure */

        $contratDirectResult = $this->getServiceParametres()->get('contrat_direct');
        $contratDirect       = ($contratDirectResult == Parametre::CONTRAT_DIRECT);

        if (!$intervenant) {
            throw new \LogicException('L\'intervenant n\'est pas précisé');
        }
@@ -167,8 +174,16 @@ class ContratController extends AbstractController
        } else {
            try {
                $this->getProcessusContrat()->enregistrer($contrat);
                if ($contratDirect) {
                    $this->getProcessusContrat()->valider($contrat);
                }

                $this->updateTableauxBord($contrat->getIntervenant());
                if ($contratDirect) {
                    $this->flashMessenger()->addSuccessMessage(($contrat->estUnAvenant() ? 'L\'avenant' : 'Le contrat') . ' a bien été créé.');
                } else {
                    $this->flashMessenger()->addSuccessMessage('Le projet ' . ($contrat->estUnAvenant() ? 'd\'avenant' : 'de contrat') . ' a bien été créé.');
                }
            } catch (\Exception $e) {
                $this->flashMessenger()->addErrorMessage($this->translate($e));
            }
@@ -199,6 +214,11 @@ class ContratController extends AbstractController

        if ($this->getRequest()->isPost()) {
            try {
                $contratDirectResult = $this->getServiceParametres()->get('contrat_direct');
                $contratDirect       = ($contratDirectResult == Parametre::CONTRAT_DIRECT);
                if ($contratDirect && $contrat->getValidation()) {
                    $this->getProcessusContrat()->devalider($contrat);
                }
                $this->getProcessusContrat()->supprimer($contrat);
                $this->updateTableauxBord($contrat->getIntervenant());
                $this->flashMessenger()->addSuccessMessage("Suppression $contratToString effectuée avec succès.");
@@ -269,6 +289,7 @@ class ContratController extends AbstractController
        if ($this->isAllowed($contrat, Privileges::CONTRAT_DEVALIDATION)) {
            if ($this->getRequest()->isPost()) {
                try {

                    $this->getProcessusContrat()->devalider($contrat);
                    $this->updateTableauxBord($contrat->getIntervenant());

@@ -311,7 +332,11 @@ class ContratController extends AbstractController
            throw new UnAuthorizedException('Vous n\'avez pas les droits requis pour saisir la date de retour du contrat signé.');
        }
        $canSaisieDateSigne = true;
        if ($contrat->getDateRetourSigne() != null || $contrat->getFichier()->count() > 0) {

        $contratDateSansFichierResult = $this->getServiceParametres()->get('contrat_date');
        $contratDateSansFichier       = ($contratDateSansFichierResult == Parametre::CONTRAT_DATE);

        if ($contrat->getDateRetourSigne() != null || $contrat->getFichier()->count() > 0 || $contratDateSansFichier) {
            $form->bindRequestSave($contrat, $this->getRequest(), function () use ($contrat, $contratToString) {

                $this->getServiceContrat()->save($contrat);
@@ -324,7 +349,10 @@ class ContratController extends AbstractController
            $canSaisieDateSigne = false;
        }

        return compact('form', 'done', 'title', 'canSaisieDateSigne');
        $contratDateResult = $this->getServiceParametres()->get('contrat_date');
        $contratDate       = ($contratDateResult == Parametre::CONTRAT_DATE);

        return compact('form', 'done', 'title', 'canSaisieDateSigne', 'contratDate');
    }


Loading