Commit 876d1237 authored by joriot221's avatar joriot221
Browse files

Mise a jour de la requete de worflow et des parametres pour les avenants de contrats

parent c42be3cc
Loading
Loading
Loading
Loading
+21 −1
Changes for data/ddl/package/OSE_WORKFLOW/body.sql: 21 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -663,6 +663,21 @@ CREATE OR REPLACE PACKAGE BODY OSE_WORKFLOW AS


    contrat := '
        SELECT
          c.etape_code,
          c.intervenant_id,
          CASE WHEN c.avenant_mode = ''avenant_desactive'' THEN NULL ELSE c.structure_id END structure_id,
          c.objectif,
          CASE WHEN
            CASE
              WHEN c.avenant_mode = ''avenant_struct'' THEN sum(c.realisation) over (partition by c.structure_id)
              WHEN c.avenant_mode = ''avenant_desactive'' THEN sum(c.realisation) over (partition by c.intervenant_id)
              ELSE 0
            END > 0
            THEN c.objectif
            ELSE c.realisation
          END realisation
        FROM (
          SELECT
            ''CONTRAT''                      etape_code,
            intervenant_id                 intervenant_id,
@@ -671,14 +686,19 @@ CREATE OR REPLACE PACKAGE BODY OSE_WORKFLOW AS
            CASE p.valeur
              WHEN ''date-retour'' THEN signe
              ELSE edite
          END                                                       realisation
            END                            realisation,
            p2.valeur                      avenant_mode,
            CASE WHEN p2.valeur = ''avenant_desactive'' THEN rownum ELSE 1 END to_delete
          FROM
            tbl_contrat c
            JOIN parametre p on p.nom = ''contrat_regle_franchissement''
            JOIN parametre p2 on p2.nom = ''avenant''
          WHERE
            ' || unicaen_tbl.MAKE_WHERE(param, VALUE) || '
            AND actif = 1
            AND nbvh > 0
        ) c
        WHERE to_delete = 1
    ';


+1 −1
Changes for data/parametres.php: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -225,7 +225,7 @@ Cordialement,

    /* Contrat */
    "avenant"                       => [
        "VALEUR"      => "avenant",
        "VALEUR"      => "avenant_autorise",
        "DESCRIPTION" => "Permettre la création d'avenants au contrat",
    ],

+20 −29
Changes for module/Application/src/Controller/ContratController.php: 20 added lines, 29 removed lines.
Original line number Diff line number Diff line
@@ -110,9 +110,22 @@ class ContratController extends AbstractController

        $title = "Contrat/avenants <small>{$intervenant}</small>";

        $sTestContrat = $this->getServiceContrat();
        $qbTest       = $sTestContrat->finderByIntervenant($intervenant);
        $contratsTest = $sTestContrat->getList($qbTest);

        $avenantResult = $this->getServiceParametres()->get('avenant');
        switch ($avenantResult) {
            case Parametre::AVENANT_AUTORISE :
                $avenant_param = 1;
            break;
            case Parametre::AVENANT_STRUCT :
                $avenant_param = 0;
            break;
            default :
                $avenant_param = -1;
        }

        $sContrat     = $this->getServiceContrat();
        $qbTest       = $sContrat->finderByIntervenant($intervenant);
        $contratsTest = $sContrat->getList($qbTest);
        if (empty($contratsTest)) {
            $hasContrat = false;
        } else {
@@ -122,14 +135,8 @@ class ContratController extends AbstractController

        $sContrat = $this->getServiceContrat();
        $qb       = $sContrat->finderByIntervenant($intervenant);

        if ($structure) {
            $qb->andWhere(
                new Orx([
                    'c.structure IS NULL',
                    'c.structure = ?2',
                ])
            )->setParameter(2, $structure);
        if ($structure && $avenant_param >= 0) {
            $sContrat->finderByStructure($structure, $qb);
        }

        $contrats = $sContrat->getList($qb);
@@ -145,13 +152,10 @@ class ContratController extends AbstractController
            'non-contractualises' => [],
        ];


        foreach ($contrats as $contrat) {
            if ($contrat->getStructure() == null) {
                $services['contractualises'][$contrat->getId()] = $this->getProcessusContrat()->getServices($intervenant, $contrat, null);
            } else {
                $services['contractualises'][$contrat->getId()] = $this->getProcessusContrat()->getServices($intervenant, $contrat, $role->getStructure());
        }
        }

        $nc = $this->getProcessusContrat()->getServices($intervenant, null, $role->getStructure());
        foreach ($nc as $service) {
@@ -161,17 +165,7 @@ class ContratController extends AbstractController
            }
            $services['non-contractualises'][$sid][] = $service;
        }
        $avenantResult = $this->getServiceParametres()->get('avenant');
        switch ($avenantResult) {
            case Parametre::AVENANT_AUTORISE :
                $avenant_param = 1;
            break;
            case Parametre::AVENANT_STRUCT :
                $avenant_param = 0;
            break;
            default :
                $avenant_param = -1;
        }


        $contratDirectResult = $this->getServiceParametres()->get('contrat_direct');
        $contratDirect       = ($contratDirectResult == Parametre::CONTRAT_DIRECT);
@@ -192,9 +186,6 @@ class ContratController extends AbstractController
        /* @var $structure Structure */

        $avenantResult = $this->getServiceParametres()->get('avenant');
        if ($avenantResult == PARAMETRE::AVENANT_DESACTIVE) {
            $structure = null;
        }
        $contratDirectResult = $this->getServiceParametres()->get('contrat_direct');
        $contratDirect       = ($contratDirectResult == Parametre::CONTRAT_DIRECT);

+2 −1
Changes for module/Application/src/Entity/Db/Parametre.php: 2 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -17,8 +17,9 @@ class Parametre implements HistoriqueAwareInterface
    const CONTRAT_FRANCHI_DATE_RETOUR = 'date-retour';

    const AVENANT_AUTORISE  = 'avenant_autorise';
    const AVENANT_STRUCT    = 'avenant_Struct';
    const AVENANT_STRUCT    = 'avenant_struct';
    const AVENANT_DESACTIVE = 'avenant_desactive';

    const CONTRAT_DIRECT    = 'contrat_direct';
    const CONTRAT_DATE      = 'contrat_date';

+22 −13
Changes for module/Application/view/application/contrat/index.phtml: 22 added lines, 13 removed lines.
Original line number Diff line number Diff line
@@ -14,21 +14,22 @@ use Application\Provider\Privilege\Privileges;
 */

$structList = [];
$StructureNonContractToShow = [];
foreach ($contrats as $contrat) {
    if (!$contrat->estUnProjet()) {
    $structList[] = $contrat->getStructure();
}
}


$notshow                  = false;
$serviceNonContractToShow = [];
foreach ($services['non-contractualises'] as $sid => $servicesNC) {
    $structure = current($servicesNC)->getElementPedagogique()->getStructure();
    if (!in_array($structure, $structList) && !in_array(null, $structList)) {
    if ($avenant_param == 1 || (!in_array($structure, $structList) && !in_array(null, $structList) && !($avenant_param < 0 && $hasContrat))) {
        $serviceNonContractToShow[] = $structure;
    } else {
        $notshow = true;
    };
}


$this->intervenant($intervenant)->renderTitle("Contrat/avenant");
echo $this->messenger()->addCurrentMessagesFromFlashMessenger();

@@ -57,7 +58,18 @@ $this->messenger() ?>

<?php if ($contrats || $services['non-contractualises']):
    if ($services['non-contractualises']):
        if (!$hasContrat || $avenant_param > 0 || ($avenant_param == 0 && !empty($serviceNonContractToShow))): ?>
        if ($notshow):
            if ($avenant_param < 0): ?>
                <div class="alert alert-info">
                    <h2>La création d'avenant n'est pas disponible, elle a été désactivée dans les paramètres.</h2>
                </div>
            <?php else: if ($avenant_param == 0) ?>
                <div class="alert alert-info">
                    <h2>Une composante ne peut posséder qu'un seul contrat/avenant, tout avenant supplémentaire a été désactivé dans les paramètres.</h2>
                </div>
            <?php endif; endif; ?>

        <?php if (!$hasContrat || $avenant_param > 0 || ($avenant_param == 0 && !empty($serviceNonContractToShow))): ?>
        <table class="table table-bordered table-hover">
            <tr>
                <th class="structure">Composante</th>
@@ -69,7 +81,9 @@ $this->messenger() ?>
                $contrat = new \Application\Entity\Db\Contrat();
                $contrat->setIntervenant($intervenant);
                $contrat->setStructure($structure);

                if (!in_array($structure, $serviceNonContractToShow)) {
                    continue;
                }
                $canCreer = $this->isAllowed($contrat, Privileges::CONTRAT_CREATION);
                ?>
                <tr>
@@ -129,13 +143,8 @@ $this->messenger() ?>
                <?php endif; ?>
        </table>

        <?php else: ?>
            <div class="alert alert-info">
                <h2>La création d'avenant n'est pas disponible, elle a été désactivée dans les paramètres.</h2>
            </div>
        <?php endif; ?>

    <?php endif; ?>
    <?php endif; endif; ?>
    <div class="well">
        <h2>Contrats et avenants</h2>
        <?php foreach ($contrats as $contrat): ?>