コード例 #1
0
 /**
  * Nous obtenons les id intranet actions role selon son identifiant parents.
  * @param int $paramIdParent
  * @return type
  */
 public static function getIdIntranetActionsRoleFromIdParentActionNavigation($paramIdParent)
 {
     $globalConfig = new GlobalConfig();
     UserModel::checkUserSessionExpired($globalConfig);
     $id_user = $globalConfig->getAuthenticatedUser()->getKeyValue();
     $arrayIdActions = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . self::TABLENAME . '.' . self::KEYNAME . ' FROM ' . self::TABLENAME . ',' . FtaWorkflowModel::TABLENAME . ' WHERE ' . self::FIELDNAME_PARENT_INTRANET_ACTIONS . '=' . FtaWorkflowModel::TABLENAME . '.' . FtaWorkflowModel::FIELDNAME_ID_INTRANET_ACTIONS . ' AND ' . self::FIELDNAME_TAG_INTRANET_ACTIONS . '=\'' . self::VALUE_ROLE . '\' AND ' . FtaWorkflowModel::TABLENAME . '.' . FtaWorkflowModel::FIELDNAME_ID_INTRANET_ACTIONS . '=' . $paramIdParent);
     if ($arrayIdActions) {
         foreach ($arrayIdActions as $rowsIdActions) {
             $arrayIdAction = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . self::TABLENAME . '.' . self::KEYNAME . ' FROM ' . self::TABLENAME . ', ' . IntranetDroitsAccesModel::TABLENAME . ' WHERE ' . self::TABLENAME . '.' . self::KEYNAME . '=' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . ' AND ' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . '=' . $rowsIdActions[self::KEYNAME] . ' AND ' . IntranetDroitsAccesModel::FIELDNAME_ID_USER . '=' . $id_user . ' AND ' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . '=1');
             if ($arrayIdAction) {
                 foreach ($arrayIdAction as $idAction) {
                     return $idAction[self::KEYNAME];
                 }
             }
         }
     }
 }
コード例 #2
0
switch ($action) {
    /*
     S'il n'y a pas d'actions défini
    */
    case 1:
        //Création d'une FTA Vierge
        //        $idFta = null;
        $arrayIdEtat = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . FtaEtatModel::KEYNAME . ' FROM ' . FtaEtatModel::TABLENAME . ' WHERE ' . FtaEtatModel::FIELDNAME_ABREVIATION . '=\'' . $abreviationFtaEtat . '\' ');
        foreach ($arrayIdEtat as $rowsIdEtat) {
            $idFtaEtat = $rowsIdEtat[FtaEtatModel::KEYNAME];
        }
        /*
         * Initialisation de l'enregistrement de la Table FTA
         */
        $globalConfig = new GlobalConfig();
        UserModel::checkUserSessionExpired($globalConfig);
        $idUser = $globalConfig->getAuthenticatedUser()->getKeyValue();
        $idFta = FtaModel::createFta($idUser, $idFtaEtat, $idFtaWorkflow, $designationCommercialeFta, date('Y-m-d'), $siteDeProduction);
        DatabaseOperation::execute('UPDATE ' . FtaModel::TABLENAME . ' SET ' . FtaModel::FIELDNAME_DOSSIER_FTA . '=' . $idFta . ' WHERE ' . FtaModel::KEYNAME . '=' . $idFta);
        FtaSuiviProjetModel::initFtaSuiviProjet($idFta);
        //Cas d'une fiche Présentation
        /**
         * Ce cas n'est plus utiliser puisque l'espasce de travail Présentation,
         * regroupe tous les chapitres nécéssaire
         */
        if ($abreviationFtaEtat == 'P') {
            //Condition where
            $where = '';
            //Récupération des chapitres concernés par ce cycle de vie
            $arrayChapitreCycle = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . FtaProcessusCycleModel::FIELDNAME_FTA_ETAT . ', ' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . ', ' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT . ' FROM ' . FtaProcessusCycleModel::TABLENAME . ' WHERE ' . FtaProcessusCycleModel::FIELDNAME_FTA_ETAT . ' = \'' . $abreviationFtaEtat . '\' AND ' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT . ' IS NOT NULL');
            foreach ($arrayChapitreCycle as $rowsChapitreCycle) {
コード例 #3
0
 /**
  * Verification de l''état d'avancement.
  * @return String
  */
 protected static function CheckSyntheseAction()
 {
     $nbProcessusPreceValide = "0";
     $ProcessusEncoursVisible = array();
     $ProcessusPrecedentVisible = array();
     $ProcessusValide = array();
     $ProcessusEnLecture = array();
     $globalConfig = new GlobalConfig();
     UserModel::checkUserSessionExpired($globalConfig);
     $id_user = $globalConfig->getAuthenticatedUser()->getKeyValue();
     $idFtaRole = self::$id_fta_role;
     /**
      * Cette partie n'est plus utilisé car le but était de récupérer le rôle corespondant à l'utilisateur connecter
      * mais désormais id_fta_role est récupé dans l'URL
      */
     /*
      * $modelFta = new FtaModel(self::$id_fta);
      * $id_fta_workflow = $modelFta->getDataField(FtaModel::FIELDNAME_WORKFLOW)->getFieldValue();
      * $ftaWorkflowModel = new FtaWorkflowModel($id_fta_workflow);
      * $id_parent_intranet_actions = $ftaWorkflowModel->getDataField(FtaWorkflowModel::FIELDNAME_ID_INTRANET_ACTIONS)->getFieldValue();
      * $id_intranet_actions[] = IntranetActionsModel::getIdIntranetActionsRoleFromIdParentActionNavigation($id_parent_intranet_actions);
      * $id_actions_role = FtaActionRoleModel::getIdFtaActionRoleFromIdIntranetAtions($id_intranet_actions);
      * $ftaActionRoleModel = new FtaActionRoleModel($id_actions_role);
      */
     /*
      * Si une action est donnée, alors construction du menu des chapitres
      */
     if (self::$synthese_action) {
         /*
          * Nous récuperons les processus en cours.
          */
         $arrayAllProcessus = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' FROM ' . FtaWorkflowStructureModel::TABLENAME . ' WHERE ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . '=' . self::$id_fta_workflow);
         /**
          * On récupère tous les processus
          */
         foreach ($arrayAllProcessus as $rowsAllProcessus) {
             $ProcessusComplet[] = $rowsAllProcessus[FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS];
         }
         /*
          * Etat d'avancement de la FTA et Recherche des processus validés (et donc en lecture-seule)             * 
          */
         /*
          * Nous récuperons les processus en cours.
          */
         $req = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' FROM ' . FtaWorkflowStructureModel::TABLENAME . ', ' . FtaProcessusCycleModel::TABLENAME . ',' . IntranetActionsModel::TABLENAME . ',' . IntranetDroitsAccesModel::TABLENAME . ',' . IntranetModulesModel::TABLENAME . ',' . FtaActionRoleModel::TABLENAME . ' WHERE ' . FtaProcessusCycleModel::TABLENAME . '.' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' AND ' . FtaProcessusCycleModel::FIELDNAME_FTA_ETAT . '=\'' . FtaEtatModel::ETAT_ABREVIATION_VALUE_MODIFICATION . '\'' . ' AND ' . FtaProcessusCycleModel::TABLENAME . '.' . FtaProcessusCycleModel::FIELDNAME_WORKFLOW . '=' . self::$id_fta_workflow . ' AND ' . FtaProcessusCycleModel::TABLENAME . '.' . FtaProcessusCycleModel::FIELDNAME_WORKFLOW . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_ROLE . '=' . FtaActionRoleModel::TABLENAME . '.' . FtaActionRoleModel::FIELDNAME_ID_FTA_ROLE . ' AND ' . FtaActionRoleModel::TABLENAME . '.' . FtaActionRoleModel::FIELDNAME_ID_INTRANET_ACTIONS . '=' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . ' AND ' . FtaActionRoleModel::TABLENAME . '.' . FtaActionRoleModel::FIELDNAME_ID_FTA_ROLE . '=' . $idFtaRole . ' AND ' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . '=' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . ' AND ' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_MODULES . '=' . IntranetModulesModel::TABLENAME . '.' . IntranetModulesModel::KEYNAME . ' AND ' . IntranetDroitsAccesModel::FIELDNAME_ID_USER . '=' . $id_user . ' AND ' . IntranetModulesModel::FIELDNAME_NOM_INTRANET_MODULES . '=\'' . FtaModel::TABLENAME . '\' AND ' . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . '=' . IntranetNiveauAccesModel::NIVEAU_GENERIC_TRUE);
         /**
          * On ne récuère que les processus d'init validé
          */
         //            $arrayProcessusValide = DatabaseOperation::convertSqlStatementWithoutKeyToArray(
         //                            'SELECT DISTINCT ' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . ' as ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS
         //                            . ' FROM ' . FtaProcessusCycleModel::TABLENAME
         //                            . ' WHERE ' . FtaProcessusCycleModel::FIELDNAME_FTA_ETAT . '=\'' . FtaEtatModel::ETAT_ABREVIATION_VALUE_MODIFICATION . '\''
         //                            . ' AND ' . FtaProcessusCycleModel::FIELDNAME_WORKFLOW
         //                            . '=\'' . self::$id_fta_workflow . '\' '
         /**
          * On récuère les processus validé
          */
         $arrayProcessusValide = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' FROM ' . FtaWorkflowStructureModel::TABLENAME . ' WHERE ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . '=\'' . self::$id_fta_workflow . '\'' . ' AND ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . '<>\'' . FtaProcessusModel::PROCESSUS_PUBLIC . '\'');
         if ($req and $arrayProcessusValide) {
             /*
              * Nous récupérons les processus précédent du processus en cours si ils sont tous validé
              */
             foreach ($req as $rows) {
                 /*
                  * Nous verifions si tous les processus précedents du chapitre que l'utilisateur à les droits d'accès
                  * sont validé ou non et donc visible ou non
                  */
                 $taux_validation_processus = FtaProcessusModel::getFtaProcessusNonValidePrecedent(self::$id_fta, $rows[FtaProcessusModel::KEYNAME], self::$id_fta_workflow);
                 //Liste des processus visible(lecture-seule)
                 if ($taux_validation_processus == 1 or $taux_validation_processus === NULL) {
                     $ProcessusPrecedentVisible[] = $rows[FtaProcessusModel::KEYNAME];
                     /*
                      * Il s'agit du controle des processus multisite,
                      * les droits d'accès à cette Fta étatn controlé précédement je désactive la focntion
                      */
                     //                        foreach ($ProcessusPrecedentVisible as $rowsProcessusVisible) {
                     //                            $multisite_fta_processus = FtaProcessusModel::CheckProcessusMultiSite($rowsProcessusVisible);
                     //
                     //                            if ($multisite_fta_processus) {
                     //                                //Oui, il s'agit d'un Processus répartie sur les sites d'assemblage
                     //                                $ProcessusPrecedentVisibleTmp[] = self::CheckMultiSite($rowsProcessusVisible);
                     //                                $ProcessusPrecedentVisible = $ProcessusPrecedentVisibleTmp;
                     //                            }
                     //                        }
                 }
             }
             //Fin du balayage
             //                if ($ProcessusPrecedentVisible) {
             /*
              * Nous récupérons tous les processus validé pour vérifier plus tard si nous devons les affichers
              */
             foreach ($arrayProcessusValide as $rowsProcessusValide) {
                 $taux_validation_processus = FtaProcessusModel::getValideProcessusEncours(self::$id_fta, $rowsProcessusValide[FtaProcessusModel::KEYNAME], self::$id_fta_workflow);
                 if ($taux_validation_processus == 1) {
                     $ProcessusValide[] = $rowsProcessusValide[FtaProcessusModel::KEYNAME];
                 }
             }
             //                }
         }
         /*
          * Nous récuperons la liste des processus non valider  qui sont en cours
          * par la vérification des droits d'accès de l'utilisateur en cours par Workflow par role 
          * et un balayage  des cycles des processus
          */
         $arrayNext = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT . ' FROM ' . FtaProcessusCycleModel::TABLENAME . ',' . FtaWorkflowStructureModel::TABLENAME . ',' . IntranetActionsModel::TABLENAME . ',' . IntranetDroitsAccesModel::TABLENAME . ',' . IntranetModulesModel::TABLENAME . ',' . FtaActionRoleModel::TABLENAME . ',' . FtaSuiviProjetModel::TABLENAME . ' WHERE ' . FtaProcessusCycleModel::TABLENAME . '.' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' AND ' . FtaProcessusCycleModel::TABLENAME . '.' . FtaProcessusCycleModel::FIELDNAME_WORKFLOW . '=' . self::$id_fta_workflow . ' AND ' . FtaProcessusCycleModel::TABLENAME . '.' . FtaProcessusCycleModel::FIELDNAME_WORKFLOW . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_ROLE . '=' . FtaActionRoleModel::TABLENAME . '.' . FtaActionRoleModel::FIELDNAME_ID_FTA_ROLE . ' AND ' . FtaActionRoleModel::TABLENAME . '.' . FtaActionRoleModel::FIELDNAME_ID_INTRANET_ACTIONS . '=' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . ' AND ' . FtaActionRoleModel::TABLENAME . '.' . FtaActionRoleModel::FIELDNAME_ID_FTA_ROLE . '=' . $idFtaRole . ' AND ' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . '=' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . ' AND ' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_MODULES . '=' . IntranetModulesModel::TABLENAME . '.' . IntranetModulesModel::KEYNAME . ' AND ' . IntranetDroitsAccesModel::FIELDNAME_ID_USER . '=' . $id_user . ' AND ' . IntranetModulesModel::FIELDNAME_NOM_INTRANET_MODULES . '=\'' . FtaModel::TABLENAME . '\' AND ' . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . '=' . IntranetNiveauAccesModel::NIVEAU_GENERIC_TRUE . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . '=' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . ' AND ' . FtaSuiviProjetModel::FIELDNAME_SIGNATURE_VALIDATION_SUIVI_PROJET . '<>' . FtaSuiviProjetModel::SIGNATURE_VALIDATION_SUIVI_PROJET_FALSE);
         if ($arrayNext) {
             foreach ($arrayNext as $rowsNext) {
                 //Pour chaque processus, on vérifie que tous ces précédents sont validés
                 $req = 'SELECT ' . FtaProcessusCycleModel::KEYNAME . ' FROM ' . FtaProcessusCycleModel::TABLENAME . ' WHERE ' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT . '=' . $rowsNext[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT] . ' AND ( ' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . '=0 ';
                 //Ajout de la restriction des processus validé
                 $req .= self::AddValidProcess($ProcessusValide);
                 //Recherche dans le cycle correspondant à l'état en cours de la fiche
                 $req_etat = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . FtaEtatModel::TABLENAME . '.' . FtaEtatModel::FIELDNAME_ABREVIATION . ' FROM ' . FtaEtatModel::TABLENAME . ',' . FtaModel::TABLENAME . ' WHERE ' . FtaEtatModel::TABLENAME . '.' . FtaEtatModel::KEYNAME . '=' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_ID_FTA_ETAT . ' AND ' . FtaModel::TABLENAME . '.' . FtaModel::KEYNAME . '= ' . self::$id_fta);
                 foreach ($req_etat as $rowsEtat) {
                     $abreviation_fta_etat = $rowsEtat[FtaEtatModel::FIELDNAME_ABREVIATION];
                 }
                 $req .= ') AND ' . FtaProcessusCycleModel::FIELDNAME_FTA_ETAT . '=\'' . $abreviation_fta_etat . '\' AND ' . FtaProcessusCycleModel::FIELDNAME_WORKFLOW . ' = ' . self::$id_fta_workflow;
                 //Filtrage par catégorie
                 //Finalisation de la requête
                 //Si la requête a un résultat c'est que tous les processus précédents sont validés
                 /*
                  * Nous récupérons tous les processus que l'utilisateur verra en lecture(seule) 
                  * afin qu'ils puissent remplir les données des champs de leurs chapitres
                  */
                 $arrayIdFtaProcessusCyle = DatabaseOperation::convertSqlStatementWithoutKeyToArray($req);
                 if ($arrayIdFtaProcessusCyle) {
                     foreach ($arrayIdFtaProcessusCyle as $rowsIdFtaProcessusCycle) {
                         $idFtaProcessusCyle = $rowsIdFtaProcessusCycle[FtaProcessusCycleModel::KEYNAME];
                         $ftaProcessusCycleModel = new FtaProcessusCycleModel($idFtaProcessusCyle);
                         $ProcessusEnLecture[] = $ftaProcessusCycleModel->getDataField(FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT)->getFieldValue();
                     }
                 }
                 /*
                  * Nombres total de processus précedent pour le processus en cours
                  */
                 $arrayInit = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . ' FROM ' . FtaWorkflowStructureModel::TABLENAME . ',' . FtaProcessusModel::TABLENAME . ',' . FtaProcessusCycleModel::TABLENAME . ' WHERE ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . '=' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::KEYNAME . ' AND ' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::KEYNAME . '=' . FtaProcessusCycleModel::TABLENAME . '.' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_ROLE . '=' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::FIELDNAME_ID_FTA_ROLE . ' AND ' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::KEYNAME . '=' . $rowsNext[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT] . ' AND ' . FtaProcessusCycleModel::TABLENAME . '.' . FtaProcessusCycleModel::FIELDNAME_WORKFLOW . ' = ' . self::$id_fta_workflow);
                 if ($arrayInit) {
                     /*
                      * Vérifie si tous les processus précédent du processus en cours a des chapitres non validé
                      */
                     $nbProcessusPrece = count($arrayInit);
                     foreach ($arrayInit as $rowsInit) {
                         $tauxValidationProcessus = FtaProcessusModel::getValideProcessusEncours(self::$id_fta, $rowsInit[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT], self::$id_fta_workflow);
                         if ($tauxValidationProcessus != 0) {
                             $nbProcessusPreceValide = $nbProcessusPreceValide + 1;
                             //Enregistrement du processus en tant que processus en cours
                             if ($tauxValidationProcessus == "1" and $nbProcessusPreceValide == $nbProcessusPrece) {
                                 $ProcessusEnLecture[] = $rowsInit[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT];
                                 $ProcessusEncoursVisible[] = $rowsNext[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT];
                             }
                             //                            }
                         }
                     }
                     /*
                      * Désactivation des check de multisite voir FtaProcessusmodel::CheckMultisite
                      */
                     /*
                      //Ce processus en cours, est-il du type repartie ou centralisé ?
                      $reqType = DatabaseOperation::convertSqlQueryWithAutomaticKeyToArray(
                      'SELECT ' . FtaProcessusModel::FIELDNAME_MULTISITE_FTA_PROCESSUS
                      . ' FROM ' . FtaProcessusModel::TABLENAME
                      . ' WHERE ' . FtaProcessusModel::KEYNAME
                      . '=' . $rows[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT]
                      );
                      if ($reqType) {
                      foreach ($reqType as $rowsType) {
                      $multisite_fta_processus = $rowsType[FtaProcessusModel::FIELDNAME_MULTISITE_FTA_PROCESSUS];
                      }
                      if ($multisite_fta_processus) {
                      //Oui, il s'agit d'un Processus répartie sur les sites d'assemblage
                      $ProcessusEncoursVisible[] = self::CheckMultiSite($rows[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT]);
                      } else {
                     */
                     //                        }
                 }
             }
             //Fin du balayage des processus non-validés
         }
         //Recherche des processus valide ayant un lien dans processus cycle
         foreach ($ProcessusValide as $rowsProcessusValide2) {
             //Pour chaque processus, on vérifie que tous ces précédents sont validés
             $req = 'SELECT ' . FtaProcessusCycleModel::KEYNAME . ' FROM ' . FtaProcessusCycleModel::TABLENAME . ' WHERE ' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT . '=' . $rowsProcessusValide2 . ' AND ( ' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . '=0 ';
             //Ajout de la restriction des processus validé
             $req .= self::AddValidProcess($ProcessusValide);
             //Recherche dans le cycle correspondant à l'état en cours de la fiche
             $req_etat = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . FtaEtatModel::TABLENAME . '.' . FtaEtatModel::FIELDNAME_ABREVIATION . ' FROM ' . FtaEtatModel::TABLENAME . ',' . FtaModel::TABLENAME . ' WHERE ' . FtaEtatModel::TABLENAME . '.' . FtaEtatModel::KEYNAME . '=' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_ID_FTA_ETAT . ' AND ' . FtaModel::TABLENAME . '.' . FtaModel::KEYNAME . '= ' . self::$id_fta);
             foreach ($req_etat as $rowsEtat) {
                 $abreviation_fta_etat = $rowsEtat[FtaEtatModel::FIELDNAME_ABREVIATION];
             }
             $req .= ') AND ' . FtaProcessusCycleModel::FIELDNAME_FTA_ETAT . '=\'' . $abreviation_fta_etat . '\' AND ' . FtaProcessusCycleModel::FIELDNAME_WORKFLOW . ' = ' . self::$id_fta_workflow;
             //Filtrage par catégorie
             //Finalisation de la requête
             //Si la requête a un résultat c'est que tous les processus précédents sont validés
             /*
              * Nous récupérons tous les processus que l'utilisateur verra en lecture(seule) 
              * afin qu'ils puissent remplir les données des champs de leurs chapitres
              */
             $arrayIdFtaProcessusCyle = DatabaseOperation::convertSqlStatementWithoutKeyToArray($req);
             if ($arrayIdFtaProcessusCyle) {
                 foreach ($arrayIdFtaProcessusCyle as $rowsIdFtaProcessusCycle) {
                     $idFtaProcessusCyle = $rowsIdFtaProcessusCycle[FtaProcessusCycleModel::KEYNAME];
                     $ftaProcessusCycleModel = new FtaProcessusCycleModel($idFtaProcessusCyle);
                     $ProcessusEnLecture[] = $ftaProcessusCycleModel->getDataField(FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT)->getFieldValue();
                 }
             }
         }
         if (self::$id_fta_etat == '1') {
             //Création de la liste des processus dans la barre de navigation
             $t_liste_processus = array_merge($ProcessusEncoursVisible, $ProcessusPrecedentVisible, $ProcessusEnLecture, $ProcessusValide);
         } else {
             $arrayProcessusByWorkflow = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' FROM ' . FtaWorkflowStructureModel::TABLENAME . ' WHERE ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . '=' . self::$id_fta_workflow);
             foreach ($arrayProcessusByWorkflow as $rowsProcessusByWorkflow) {
                 $t_liste_processus[] .= $rowsProcessusByWorkflow[FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS];
             }
         }
         self::$id_fta_processus = $t_liste_processus;
         //Récupération des Chapitres accessible dans le menu de naviguation
         $menu_navigation = self::RecupChapitre($ProcessusComplet);
         //Fin du controle de $synthese_action
     }
     return $menu_navigation;
 }
コード例 #4
0
 public static function getHtmlTable($paramIdFta, $paramChoix, $paramResultLimitByPage = self::DEFAULT_RESULT_LIMIT_BY_PAGE, $paramOrderCommon = NULL)
 {
     /*
      * Déclaration des variables locales
      */
     $largeur_html_C1 = self::HTML_CELL_WIDTH_C1;
     // largeur cellule type
     $largeur_html_C3 = self::HTML_CELL_WIDTH_C3;
     // largeur cellule type
     $compteur_ligne = 1;
     $selection_width = self::HTML_CELL_WIDTH_SELECTION;
     $lien = "";
     $tableau_fiches = "<table class=titre width=100% border=0>" . "<tr class=titre_principal><td></td><td>";
     $synthese_action = "all";
     /*
      * Initilisation
      */
     $globalConfig = new GlobalConfig();
     UserModel::checkUserSessionExpired($globalConfig);
     $idUser = $globalConfig->getAuthenticatedUser()->getKeyValue();
     $idFtaRole = FtaRoleModel::getKeyNameOfFirstRoleByIdUser($idUser);
     $ftaModel = new FtaModel($paramIdFta);
     //Chargement manuel des données pour optimiser les performances
     $abreviation_fta_etat = $ftaModel->getModelFtaEtat()->getDataField(FtaEtatModel::FIELDNAME_ABREVIATION)->getFieldValue();
     $LIBELLE = $ftaModel->getDataField(FtaModel::FIELDNAME_LIBELLE)->getFieldValue();
     $NB_UNIT_ELEM = $ftaModel->getDataField(FtaModel::FIELDNAME_NOMBRE_UVC_PAR_CARTON)->getFieldValue();
     $Poids_ELEM = $ftaModel->getDataField(FtaModel::FIELDNAME_POIDS_ELEMENTAIRE)->getFieldValue();
     $suffixe_agrologic_fta = $ftaModel->getModelClassificationRacourcis()->getNameRaccourcisClassif();
     $designation_commerciale_fta = $ftaModel->getDataField(FtaModel::FIELDNAME_DESIGNATION_COMMERCIALE)->getFieldValue();
     $id_dossier_fta = $ftaModel->getDataField(FtaModel::FIELDNAME_DOSSIER_FTA)->getFieldValue();
     $id_version_dossier_fta = $ftaModel->getDataField(FtaModel::FIELDNAME_VERSION_DOSSIER_FTA)->getFieldValue();
     $code_article_ldc = $ftaModel->getDataField(FtaModel::FIELDNAME_CODE_ARTICLE_LDC)->getFieldValue();
     $dateEcheanceFtatmp = $ftaModel->getDataField(FtaModel::FIELDNAME_DATE_ECHEANCE_FTA)->getFieldValue();
     $createur_nom = $ftaModel->getModelCreateur()->getDataField(UserModel::FIELDNAME_NOM)->getFieldValue();
     $createur_prenom = $ftaModel->getModelCreateur()->getDataField(UserModel::FIELDNAME_PRENOM)->getFieldValue();
     $workflowName = $ftaModel->getModelFtaWorkflow()->getDataField(FtaWorkflowModel::FIELDNAME_DESCRIPTION_FTA_WORKFLOW)->getFieldValue();
     $idWorkflowFtaEncours = $ftaModel->getModelFtaWorkflow()->getKeyValue();
     $nomSiteProduction = $ftaModel->getModelSiteProduction()->getDataField(GeoModel::FIELDNAME_GEO)->getFieldValue();
     $idclassification = $ftaModel->getDataField(FtaModel::FIELDNAME_ID_FTA_CLASSIFICATION2)->getFieldValue();
     $listeIdFtaRole = $ftaModel->getDataField(FtaModel::FIELDNAME_LISTE_ID_FTA_ROLE)->getFieldValue();
     $idSiteDeProduction = $ftaModel->getDataField(FtaModel::FIELDNAME_SITE_PRODUCTION)->getFieldValue();
     $idFtaEtat = $ftaModel->getDataField(FtaModel::FIELDNAME_ID_FTA_ETAT)->getFieldValue();
     /**
      * Changment du format de date en Fr
      */
     $dateEcheanceFta = FtaController::changementDuFormatDeDateFR($dateEcheanceFtatmp);
     /**
      * On obtient IdintranetAction du site de production
      */
     $idIntranetActionsSiteDeProduction = FtaActionSiteModel::getArrayIdIntranetActionByWorkflowAndSiteDeProduction($idWorkflowFtaEncours, $idSiteDeProduction);
     /**
      * On verifie si selon le workflow  et site de production en cours l'utilisateur connecté à les droits d'accès.
      * Puisqu'un utilisateur ne doit pas avoir accès aux boutons :
      * historique, transition, retirer, duplication et pourcentage d'avancement
      * si il n'a pas les accès aux site de production.
      */
     $checkAccesButtonBySiteProd = IntranetActionsModel::isAccessFtaActionByIdUserFtaWorkflowAndSiteDeProduction($idUser, $idWorkflowFtaEncours, $idIntranetActionsSiteDeProduction);
     /**
      * Donne accès aux bouton de transition 
      * pour les utilisateur se trouvant en fin de parcours de l'espace de travail
      */
     $accesTransitionButton = FtaTransitionModel::isAccesTransitionButton($idFtaRole, $idWorkflowFtaEncours);
     /*
      * Attribution des couleurs de fonds suivant l'état de la FTA
      */
     $bgcolor = self::getHtmlCellBgColor($abreviation_fta_etat);
     $bgcolorArcadia = self::getHtmlCellBgColorArcadia($paramIdFta, $bgcolor);
     $tauxRound = FtaSuiviProjetModel::getPourcentageFtaTauxValidation($ftaModel);
     /**
      * Lien vers l'historique de la Fta
      */
     $lienHistorique = self::getHtmlLinkHistorique($abreviation_fta_etat, $paramIdFta, FtaRoleModel::ID_FTA_ROLE_COMMUN, $synthese_action, $tauxRound, $checkAccesButtonBySiteProd, $idFtaEtat);
     /**
      * Gestion des icones en fonction des délais
      */
     $bgcolor_header = self::getHtmlBgColorIconHeader($abreviation_fta_etat, $paramIdFta);
     $icon_header = self::getHtmlIconEcheanceByEtatAndFta($abreviation_fta_etat, $paramIdFta);
     /**
      * Bouton d'accès au détail de la FTA
      */
     $lien .= self::getHtmlLinkModify($abreviation_fta_etat, $paramIdFta, $synthese_action, $idFtaEtat, $checkAccesButtonBySiteProd);
     /**
      * Historique de modification
      */
     $lien .= self::getHtmlLinkHistoriqueModfify($abreviation_fta_etat, $paramIdFta, $synthese_action, $idFtaEtat);
     /**
      * Bouton d'accès au rendu PDF de la FTA
      */
     $lien .= self::getHtmlLinkPDF($abreviation_fta_etat, $paramIdFta, $idWorkflowFtaEncours);
     /**
      * Bouton d'accès à la transition
      */
     $lien .= self::getHmlLinkTransiter($paramIdFta, $idFtaRole, $abreviation_fta_etat, $checkAccesButtonBySiteProd, $accesTransitionButton, $synthese_action, $tauxRound);
     /**
      * Bouton d'accès pour retirer une FTA
      */
     if (FtaRoleModel::isGestionnaire($idFtaRole) and $checkAccesButtonBySiteProd and $abreviation_fta_etat != FtaEtatModel::ETAT_ABREVIATION_VALUE_RETIRE) {
         $lien .= self::getHtmlLinkRemoveFta($paramIdFta);
         $javascript .= self::getJavascriptLinkRemoveFta($paramIdFta, $idFtaRole, $synthese_action);
     }
     /**
      * Bouton d'accès pour dupliquer  une FTA
      */
     if (FtaRoleModel::isGestionnaire($idFtaRole) and $checkAccesButtonBySiteProd) {
         $lien .= self::getHtmlLinkDuplicateFta($paramIdFta, $idFtaRole);
     }
     //Désignation commerciale
     $din = self::getStringDINCompacted($designation_commerciale_fta, $LIBELLE, $NB_UNIT_ELEM, $Poids_ELEM);
     /*
      * Noms des services dans lequel la Fta se trouve
      */
     $service = FtaRoleModel::getNameServiceEncours($listeIdFtaRole);
     //        switch (TRUE) {
     //            /**
     //             * Si la FTA est en modification et que l'utilisateur n'est pas autorisé à accéder aux boutons.
     //             */
     //            case (
     //            $abreviation_fta_etat == FtaEtatModel::ETAT_ABREVIATION_VALUE_MODIFICATION AND $checkAccesButton != FALSE
     //            ):
     //                $service = "";
     //                break;
     //
     //            /**
     //             * Si la FTA est en modification et que l'utilisateur est autorisé à accéder aux boutons.
     //             */
     //            case (
     //            $abreviation_fta_etat == FtaEtatModel::ETAT_ABREVIATION_VALUE_MODIFICATION AND $checkAccesButton != TRUE
     //            ):
     //                $service = FtaRoleModel::getNameServiceEncours($listeIdFtaRole);
     //                break;
     //            /**
     //             * Sinon:
     //             */
     //            default:
     //                $service = FtaRoleModel::getNameServiceEncours($listeIdFtaRole);
     //        }
     /**
      * Calssification
      */
     if ($idclassification) {
         $classification = ClassificationArborescenceArticleCategorieContenuModel::getElementClassificationFta($idclassification, ClassificationFta2Model::FIELDNAME_ID_PROPRIETAIRE_GROUPE);
     }
     //Nom de l'assistante de projet responsable:
     $createur_link = "\"Géré par {$createur_prenom} {$createur_nom}\"";
     $tableau_fiches .= "<tr class=contenu>\r\n                              <td {$bgcolor_header} " . $selection_width . " > {$icon_header} {$selection}</td>\r\n                              ";
     $tableau_fiches .= '<td ' . $bgcolor . ' width=8%>' . $nomSiteProduction . '<br>(' . $workflowName . ')</td>' . '<td ' . $bgcolor . ' width=3%>' . $classification . '</td>' . '<td ' . $bgcolor . ' width=3%>' . $suffixe_agrologic_fta . '</td>';
     // Raccourcie Class.
     $tableau_fiches .= "<td {$bgcolor} {$largeur_html_C1}><a title={$createur_link} />" . $din . "</a></td>" . "<td {$bgcolor} width=3%>" . $id_dossier_fta . "v" . $id_version_dossier_fta . "</td>";
     $tableau_fiches .= "<td {$bgcolorArcadia} width=\"1%\"> <b><font size=\"2\" color=\"#0000FF\">" . $code_article_ldc . "</font></b></td>";
     if ($abreviation_fta_etat == FtaEtatModel::ETAT_ABREVIATION_VALUE_MODIFICATION) {
         $tableau_fiches .= '<td ' . $bgcolor . $largeur_html_C3 . ' align=center>' . $dateEcheanceFta . '</td>';
         //échance de validation
     } else {
         $tableau_fiches .= '<td ' . $bgcolor . $largeur_html_C3 . ' align=center>' . $dateEcheanceFta . '</td>';
         //échance de validation
     }
     $tableau_fiches .= '<td ' . $bgcolor . ' width=5% align=center >' . $lienHistorique . '</td>' . '<td ' . $bgcolor . $largeur_html_C3 . ' align=center >' . $service . '</td>' . '<td ' . $bgcolor . ' width=8%' . ' align=center >' . $lien . '</td>';
     // Actions
     $tableau_fiches .= "</tr>";
     $compteur_ligne++;
     //        }//fin tant que tableau_origine
     $tableau_fiches = $javascript . $tableau_fiches . "</table>";
     //Ajoute de la fonction de traitement de masse
     if ($traitementDeMasse) {
         $liste_action_groupe = FtaTransitionModel::getListeFtaGrouper($abreviation_fta_etat);
         $tableau_fiches .= '&nbsp;
         <img src = ../lib/images/fleche_gauche_et_haut.png width = 38 height = 22 border = 0 />
         <i>Transitions groupées</i>:
         ' . $liste_action_groupe . '
         <input type = \'text\' name=\'subject\' size=\'20\' />
         <input type=image src=images/transiter.png width=20 height=20 />
         <input type=hidden name=action value=transition_groupe>
                      ';
     }
     return $tableau_fiches;
 }
コード例 #5
0
ファイル: Chapitre.php プロジェクト: SalokineTerata/intranet
 public static function initChapitre($id_fta, $id_fta_chapitre, $synthese_action, $comeback, $idFtaEtat, $abreviationFtaEtat, $idFtaRole, $checkArcadiaData)
 {
     self::$checkArcadiaData = $checkArcadiaData;
     self::$is_data_validation_successful = FALSE;
     self::$id_fta = $id_fta;
     self::$comeback = $comeback;
     self::$id_fta_etat = $idFtaEtat;
     self::$abrevation_etat = $abreviationFtaEtat;
     self::$id_fta_role = $idFtaRole;
     self::$id_fta_chapitre = $id_fta_chapitre;
     self::$ftaModel = new FtaModel(self::$id_fta);
     self::$ftaChapitreModel = new FtaChapitreModel(self::$id_fta_chapitre);
     self::$id_fta_workflow = self::$ftaModel->getDataField(FtaModel::FIELDNAME_WORKFLOW)->getFieldValue();
     self::$ftaWorkflowModel = new FtaWorkflowModel(self::$id_fta_workflow);
     self::$synthese_action = $synthese_action;
     $globalConfig = new GlobalConfig();
     UserModel::checkUserSessionExpired($globalConfig);
     self::$idUser = $globalConfig->getAuthenticatedUser()->getKeyValue();
     $idFtaSuiviProjet = FtaSuiviProjetModel::getIdFtaSuiviProjetByIdFtaAndIdChapitre(self::$id_fta, self::$id_fta_chapitre);
     self::$ftaSuiviProjetModel = new FtaSuiviProjetModel($idFtaSuiviProjet);
     //        self::$objectFta = new ObjectFta(self::$id_fta); //cela genère un id fta_suivie projet de trop
     //        self::$objectFta->loadCurrentSuiviProjectByChapter(self::$id_fta_chapitre);
     self::$id_fta_workflow_structure = FtaWorkflowStructureModel::getIdFtaWorkflowStructureByIdFtaAndIdChapitre(self::$id_fta, self::$id_fta_chapitre);
     self::$ftaWorkflowStructureModel = new FtaWorkflowStructureModel(self::$id_fta_workflow_structure);
     self::$id_fta_processus = self::$ftaWorkflowStructureModel->getDataField(FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS)->getFieldValue();
     self::$id_intranet_actions = IntranetActionsModel::getIdIntranetActionsFromIdParentAction(self::$ftaWorkflowModel->getDataField(FtaWorkflowModel::FIELDNAME_ID_INTRANET_ACTIONS)->getFieldValue(), self::$id_fta_chapitre, self::$id_fta_workflow, self::$id_fta_role);
     self::$moduleIntranetActionsModel = new IntranetActionsModel(self::$id_intranet_actions);
     self::$is_owner = self::buildIsOwner();
     self::$is_editable = self::buildIsEditable();
     self::$is_correctable = self::buildIsCorrectable();
     self::$taux_validation_processus = self::buildTauxValidationProcessus();
     self::$html_correct_button = self::buildHtmlCorrectButton();
     self::$html_chapitre_core = self::buildChapitreCore();
     self::$html_submit_button = self::buildHtmlSubmitButton();
     self::$html_suivi_dossier = self::buildSuiviDossier();
     self::$html_chapitre_all = self::buildChapitreAll();
 }
コード例 #6
0
ファイル: FtaModel.php プロジェクト: SalokineTerata/intranet
 /**
 * Cette fonction permet de dupliquer une Fiche Technique Article pour faire les actions suivantes:
 
  $action
  -------
  "totale":       Créer un nouveau dossier en recopiant l'intégralité de la fiche d'origine
  "selective":(pas géré)    Créer un nouveau dossier en ne recopiant que certains processus
  "version":      Créer une nouvelle fiche au sein du même dossier
 
  $option:
  --------
  - Dans le cas d'une duplication "selective", cette variable contient le tableau des id_processus des processus sélectionnés
  - Dans le cas d'une duplication "version", cette variable contient le nouvel état de la FTA (I, A, ...).
  Si vide, alors l'état par défaut sera de type I, initialisation
 
  Retour de la fonction:
  ----------------------
  La fonction renvoi l'id_fta nouvellement créé.
 * @param int $paramIdFta
 * @param string $paramAction
 * @param array $paramOption
 * @param int $paramIdFtaWorkflow
 * @return int
 */
 public static function buildDuplicationFta($paramIdFta, $paramAction, $paramOption, $paramIdFtaWorkflow)
 {
     /*         * ****************************************
               Déclaration et initialisation des variables
              * **************************************** */
     $globalConfig = new GlobalConfig();
     UserModel::checkUserSessionExpired($globalConfig);
     $idUser = $globalConfig->getAuthenticatedUser()->getKeyValue();
     $ftaModelOrig = new FtaModel($paramIdFta);
     //Identifiant de la fiche technique article à dupliquer
     if ($paramOption["id_version_dossier_fta"]) {
         $idFtaVersion = $paramOption["id_version_dossier_fta"];
     } else {
         $idFtaVersion = $ftaModelOrig->getDataField(FtaModel::FIELDNAME_VERSION_DOSSIER_FTA)->getFieldValue();
     }
     $idFtaOriginal = $paramIdFta;
     //Sauvegarde de la clef initiale.
     $paramOption["abreviation_etat_destination"];
     //Etat vers lequel doit aller la FTA
     $paramOption["selection_chapitre"];
     //Tableau contenant les id_fta_chapitre des chapitres à corriger
     $paramOption["designation_commerciale_fta"];
     //Nouveau nom commerciale de la FTA
     $paramOption["site_de_production"];
     //Nouveau site de production de la FTA
     $paramOption["nouveau_maj_fta"];
     //Nouveau commentaire de la nouvelle FTA
     $paramOption["id_version_dossier_fta"];
     //Id dossier version maximun
     switch ($paramAction) {
         case "version":
             //récupération de l'identifiant de l'état
             if ($paramOption["abreviation_etat_destination"] == "") {
                 //Si aucun Etat n'a été donné, l'état   Intialisation est choisi par défaut
                 $paramOption["abreviation_etat_destination"] = "I";
             }
             $arrayIdFtaEtat = DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT " . FtaEtatModel::KEYNAME . " FROM " . FtaEtatModel::TABLENAME . " WHERE " . FtaEtatModel::FIELDNAME_ABREVIATION . "='" . $paramOption["abreviation_etat_destination"] . "'");
             foreach ($arrayIdFtaEtat as $value) {
                 $idFtaEtatNew = $value[FtaEtatModel::KEYNAME];
             }
     }
     /*         * *****************************************************************************
               Traitement Principal
              * ****************************************************************************** */
     /*         * *************************
               Traitement de la table "fta"
              * ************************* */
     $idFtaNew = FtaModel::duplicationIdFta($paramIdFta);
     //Récupération de la nouvelle clef
     /*
      * Enregsitrement des mises à jour
      */
     if (!$paramOption["site_de_production"]) {
         $paramOption["site_de_production"] = "NULL";
     }
     DatabaseOperation::execute("UPDATE " . FtaModel::TABLENAME . " SET " . FtaModel::FIELDNAME_DATE_CREATION . "='" . date("Y-m-d") . "', " . FtaModel::FIELDNAME_ACTIF . "=" . 0 . ", " . FtaModel::FIELDNAME_CODE_ARTICLE . "=" . 'NULL' . ", " . FtaModel::FIELDNAME_WORKFLOW . "=" . $paramIdFtaWorkflow . ", " . FtaModel::FIELDNAME_SITE_PRODUCTION . "=" . $paramOption["site_de_production"] . " WHERE " . FtaModel::KEYNAME . "=" . $idFtaNew);
     switch ($paramAction) {
         //Suivant l'action, certaines données sont à mettre à jour
         /*
          * //Création d'un nouveau dossier
          */
         case "totale":
             DatabaseOperation::execute("UPDATE " . FtaModel::TABLENAME . " SET " . FtaModel::FIELDNAME_DOSSIER_FTA . "=" . $idFtaNew . ", " . FtaModel::FIELDNAME_VERSION_DOSSIER_FTA . "=" . 0 . ", " . FtaModel::FIELDNAME_ID_FTA_ETAT . "=" . 1 . ", " . FtaModel::FIELDNAME_ARTICLE_AGROLOGIC . "=" . 0 . ", " . FtaModel::FIELDNAME_DATE_ECHEANCE_FTA . "=" . "0000-00-00" . ", " . FtaModel::FIELDNAME_DESIGNATION_COMMERCIALE . "=\"" . $paramOption["designation_commerciale_fta"] . "\", " . FtaModel::FIELDNAME_NOM_ABREGE . "=" . "NULL" . ", " . FtaModel::FIELDNAME_LIBELLE . "=" . "NULL" . ", " . FtaModel::FIELDNAME_CODE_ARTICLE_LDC . "=" . "0" . ", " . FtaModel::FIELDNAME_EAN_COLIS . "=" . "0" . ", " . FtaModel::FIELDNAME_EAN_UVC . "=" . "0" . ", " . FtaModel::FIELDNAME_EAN_PALETTE . "=" . "0" . ", " . FtaModel::FIELDNAME_POURCENTAGE_AVANCEMENT . "=" . "\"0%\"" . ", " . FtaModel::FIELDNAME_CREATEUR . "=" . $idUser . ", " . FtaModel::FIELDNAME_LISTE_ID_FTA_ROLE . "=" . "NULL" . " WHERE " . FtaModel::KEYNAME . "=" . $idFtaNew);
             break;
             /*
              *  //Création d'une nouvelle version de la FTA
              */
         /*
          *  //Création d'une nouvelle version de la FTA
          */
         case "version":
             $idFtaVersion = $idFtaVersion + 1;
             DatabaseOperation::execute("UPDATE " . self::TABLENAME . " SET " . self::FIELDNAME_VERSION_DOSSIER_FTA . "=\"" . $idFtaVersion . "\", " . self::FIELDNAME_ID_FTA_ETAT . "=\"" . $idFtaEtatNew . "\", " . self::FIELDNAME_DATE_ECHEANCE_FTA . "=\"" . $paramOption["date_echeance_fta"] . "\" WHERE " . self::KEYNAME . "=" . $idFtaNew);
             break;
     }
     /*         * ***************************
               Traitement des tables esclaves
              * *************************** */
     /*         * ******************************************************************************************
               Les tables esclaves sont des tables contenant le champ "id_fta" dans la liste de leurs champs
              * ****************************************************************************************** */
     FtaComposantModel::duplicateFtaComposantByIdFta($idFtaOriginal, $idFtaNew);
     FtaConditionnementModel::duplicateFtaConditionnementByIdFta($idFtaOriginal, $idFtaNew);
     FtaSuiviProjetModel::duplicateFtaSuiviProjetByIdFta($idFtaOriginal, $idFtaNew);
     // ClassificationFtaModel::DuplicateFtaClassificationByIdFta($idFtaOriginal, $idFtaNew);
     /*
      - Récupérér les composants de la nouvelle FTA
      - Pour chaque produit (id_fta_nomenclature)
      - Récupérer l'identifiant de la version précédente (noté: [last_id_fta_nomenclature])
      - Sur la FTA précédente, retrouver l'identifiant composant associé à cette ancienne version du produit (noté: [last_id_fta_composant])
      - Sur le nouvelle FTA, retrouver l'identifiant composant associé à ce [last_id_fta_composant]
      - Sur ce nouveau composant, remplacer l'association nomenclature par [id_fta_nomenclature]
     */
     /*         * *****************************************************************************
               Traitement POST
              * ****************************************************************************** */
     switch ($paramAction) {
         case "version":
             $newAbreviationFtaEtat = $paramOption["abreviation_etat_destination"];
             //Nouvel état
             //Récupération de la liste des chapitres a dévalider
             $selection_chapitre = $paramOption["selection_chapitre"];
             $paramOption["no_message_ecran"] = 1;
             $paramOption["mail_gestionnaire"] = 1;
             if ($selection_chapitre) {
                 foreach ($selection_chapitre as $id_fta_chapitre) {
                     //Correction des chapitres
                     $paramOption["correction_fta_suivi_projet"] = $paramOption["nouveau_maj_fta"];
                     FtaChapitreModel::buildCorrectionChapitre($idFtaNew, $id_fta_chapitre, $paramOption);
                 }
             }
             /*
              * Cette fonction est mise en pause car elle nécessite la création de processus cycle pour chaque workflow,
              * questionnement à boris.
              */
             if ($newAbreviationFtaEtat == FtaEtatModel::ETAT_ABREVIATION_VALUE_MODIFICATION and !$selection_chapitre) {
                 //Suppression des validations
                 //Recherche des chapitres affectés au cycle de vie correspondant à l'état
                 $arrayCycle = DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT DISTINCT " . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . "," . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . " FROM " . FtaProcessusCycleModel::TABLENAME . ", " . FtaWorkflowStructureModel::TABLENAME . " WHERE " . FtaProcessusCycleModel::FIELDNAME_FTA_ETAT . "='" . $newAbreviationFtaEtat . "' AND " . FtaWorkflowStructureModel::TABLENAME . "." . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . "=" . FtaProcessusCycleModel::TABLENAME . "." . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . " AND " . FtaWorkflowStructureModel::TABLENAME . "." . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . "=" . FtaProcessusCycleModel::TABLENAME . "." . FtaProcessusCycleModel::FIELDNAME_WORKFLOW . " AND " . FtaWorkflowStructureModel::TABLENAME . "." . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . "=" . $paramIdFtaWorkflow);
                 if ($arrayCycle) {
                     //Si ce cycle de vie necessite l'intervention de processus, alors                            //On supprime la validation du suivi de projet des processus concernés
                     $req = "DELETE FROM " . FtaSuiviProjetModel::TABLENAME . " WHERE ";
                     $or = " ";
                     foreach ($arrayCycle as $rowsCycle) {
                         //Vérification qu'il ne s'agissent pas du processus initiateur du nouveau cycle de vie
                         $arrayFirst = DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT " . FtaSuiviProjetModel::KEYNAME . " FROM " . FtaProcessusCycleModel::TABLENAME . ", " . FtaWorkflowStructureModel::TABLENAME . ", " . FtaSuiviProjetModel::TABLENAME . " WHERE " . FtaProcessusCycleModel::FIELDNAME_FTA_ETAT . "='" . $newAbreviationFtaEtat . "' AND " . FtaWorkflowStructureModel::TABLENAME . "." . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . "=" . FtaProcessusCycleModel::TABLENAME . "." . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . " AND " . FtaSuiviProjetModel::TABLENAME . "." . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . "=" . FtaWorkflowStructureModel::TABLENAME . "." . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . " AND " . FtaSuiviProjetModel::TABLENAME . "." . FtaSuiviProjetModel::FIELDNAME_ID_FTA . "='" . $idFtaNew . "' " . " AND " . FtaProcessusCycleModel::TABLENAME . "." . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT . "='" . $rowsCycle[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT] . "' ");
                         if ($arrayFirst) {
                             //Si il ne s'agit pas du chapitre appartenant au processus initial, on supprime
                             $req .= $or . "(" . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . "='" . $rowsCycle[FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE] . "' AND " . FtaSuiviProjetModel::FIELDNAME_ID_FTA . "='" . $idFtaNew . "') ";
                             $or = " OR ";
                         } else {
                             //Sinon, Supprimer uniquement la validation et on notifie les chapitres
                             $req_update = "UPDATE " . FtaSuiviProjetModel::TABLENAME . " SET " . FtaSuiviProjetModel::FIELDNAME_SIGNATURE_VALIDATION_SUIVI_PROJET . "=''" . ", " . FtaSuiviProjetModel::FIELDNAME_DATE_VALIDATION_SUIVI_PROJET . "=''" . ", " . FtaSuiviProjetModel::FIELDNAME_DATE_DEMARRAGE_CHAPITRE_FTA_SUIVI_PROJET . "=''" . ", " . FtaSuiviProjetModel::FIELDNAME_NOTIFICATION_FTA_SUIVI_PROJET . "='1' " . " WHERE (" . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . "='" . $rowsCycle[FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE] . "' AND " . FtaSuiviProjetModel::FIELDNAME_ID_FTA . "='" . $idFtaNew . "') ";
                             DatabaseOperation::execute($req_update);
                         }
                     }
                     DatabaseOperation::execute($req);
                 }
                 //Fin de Recherche des notifications relatives aux processus trouvées
             }
             //Fin de la dévalidation suite à une initialisation
             //Vérrouillage des chapitre ne correspondant pas au cycle de vie.
             if ($newAbreviationFtaEtat == "P") {
                 //Condition where
                 $where = "";
                 //Récupération des chapitres concernés par ce cycle de vie
                 $arrayCycle2 = DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT DISTINCT " . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . " FROM " . FtaProcessusCycleModel::TABLENAME . " WHERE " . FtaProcessusCycleModel::FIELDNAME_FTA_ETAT . " = '" . $newAbreviationFtaEtat . "' ");
                 foreach ($arrayCycle2 as $rowsCycle2) {
                     $where .= " AND " . FtaProcessusModel::TABLENAME . "." . FtaProcessusModel::KEYNAME . " <> " . $rowsCycle2[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT];
                 }
                 //Récupération des chapitres à vérrouiller
                 $arrayChapitreVerrouiller = DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT DISTINCT  " . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . " FROM " . FtaProcessusModel::TABLENAME . ", " . FtaWorkflowStructureModel::TABLENAME . " WHERE ( " . FtaProcessusModel::TABLENAME . "." . FtaProcessusModel::KEYNAME . " = " . FtaWorkflowStructureModel::TABLENAME . "." . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . " ) " . " AND ( (  " . FtaProcessusModel::TABLENAME . "." . FtaProcessusModel::KEYNAME . " <>1 {$where} ) )" . " AND " . FtaWorkflowStructureModel::TABLENAME . "." . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . " = " . $paramIdFtaWorkflow);
                 foreach ($arrayChapitreVerrouiller as $rowsChapitreVerrouiller) {
                     //Le suivi existe-il déjà ?
                     $arrayFtaSuiviProjet = DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT " . FtaSuiviProjetModel::KEYNAME . ", " . FtaSuiviProjetModel::FIELDNAME_SIGNATURE_VALIDATION_SUIVI_PROJET . " FROM " . FtaSuiviProjetModel::TABLENAME . " WHERE " . FtaSuiviProjetModel::FIELDNAME_ID_FTA . "='" . $idFtaNew . "' AND " . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . "='" . $rowsChapitreVerrouiller[FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE] . "' ");
                     if ($arrayFtaSuiviProjet) {
                         //Mise à jour de l'existant si il n'y a pas de vérrou existant
                         foreach ($arrayFtaSuiviProjet as $rowsFtaSuiviProjet) {
                             if (!$rowsFtaSuiviProjet[FtaSuiviProjetModel::FIELDNAME_SIGNATURE_VALIDATION_SUIVI_PROJET]) {
                                 $idFtaSuiviProjet = $rowsFtaSuiviProjet[FtaSuiviProjetModel::KEYNAME];
                                 $req = "UPDATE " . FtaSuiviProjetModel::TABLENAME . "SET " . FtaSuiviProjetModel::FIELDNAME_SIGNATURE_VALIDATION_SUIVI_PROJET . "='-1' " . "WHERE " . FtaSuiviProjetModel::KEYNAME . "='" . $idFtaSuiviProjet . "' ";
                                 DatabaseOperation::execute($req);
                             }
                         }
                     } else {
                         //Création des suivi
                         $req = "INSERT " . FtaSuiviProjetModel::TABLENAME . " SET " . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . "='" . $rowsChapitreVerrouiller[FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE] . "', " . FtaSuiviProjetModel::FIELDNAME_ID_FTA . "='" . $idFtaNew . "', " . FtaSuiviProjetModel::FIELDNAME_SIGNATURE_VALIDATION_SUIVI_PROJET . "='-1' ";
                         DatabaseOperation::execute($req);
                     }
                 }
             }
             break;
             //Fin du post-traitement dans le cas d'une duplication de type "version"
         //Fin du post-traitement dans le cas d'une duplication de type "version"
         case "totale":
             $newAbreviationFtaEtat = $paramOption["abreviation_etat_destination"];
             //Nouvel état
             //Suppression de tout le suivi de dossier
             $req = "DELETE FROM " . FtaSuiviProjetModel::TABLENAME . " WHERE " . FtaSuiviProjetModel::TABLENAME . "." . FtaSuiviProjetModel::FIELDNAME_ID_FTA . "='" . $idFtaNew . "' ";
             DatabaseOperation::execute($req);
             break;
     }
     //Fin du post-traitement dans le cas d'une duplication de type "totale"
     return $idFtaNew;
 }
コード例 #7
0
 /**
  * Correction d'une FTA
  * Pour une FTA données, correction d'un chapitre et dévalidation des processus suivants
  * @param type $paramIdFta
  * @param type $paramIdChapitre
  * @param type $option
  * @return int
  */
 public static function buildCorrectionChapitre($paramIdFta, $paramIdChapitre, $option)
 {
     $option['no_message_ecran'];
     //0=affichage à l'ecran, 1=rien
     $option['correction_fta_suivi_projet'];
     //Commentaire justifiant la correction du chapitre
     $option['mail_gestionnaire'];
     //Informe le gestionnaire de la Fta de la mise en correction de sa Fta
     $HtmlResult = new HtmlResult2();
     $globalConfig = new GlobalConfig();
     UserModel::checkUserSessionExpired($globalConfig);
     //Récupération des informations préalables
     //Nom de l'assistante de projet responsable:
     $idUser = $globalConfig->getAuthenticatedUser()->getKeyValue();
     $mailExpediteur = $globalConfig->getAuthenticatedUser()->getDataField(UserModel::FIELDNAME_MAIL)->getFieldValue();
     $nomPrenom = $globalConfig->getAuthenticatedUser()->getPrenomNom();
     $idFtaWorkflowStructure = FtaWorkflowStructureModel::getIdFtaWorkflowStructureByIdFtaAndIdChapitre($paramIdFta, $paramIdChapitre);
     $ftaWorkflowStructureModel = new FtaWorkflowStructureModel($idFtaWorkflowStructure, $paramIdChapitre);
     $idFtaProcessus = $ftaWorkflowStructureModel->getDataField(FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS)->getFieldValue();
     $idFtaWorkflow = $ftaWorkflowStructureModel->getDataField(FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW)->getFieldValue();
     $arrayFtaSuiviCorrection = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . FtaSuiviProjetModel::FIELDNAME_CORRECTION_FTA_SUIVI_PROJET . ',' . FtaSuiviProjetModel::FIELDNAME_NOTIFICATION_FTA_SUIVI_PROJET . ' FROM ' . FtaSuiviProjetModel::TABLENAME . ' WHERE ' . FtaModel::KEYNAME . '=' . $paramIdFta . ' AND ' . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . '=' . $paramIdChapitre . ' ');
     if ($arrayFtaSuiviCorrection) {
         foreach ($arrayFtaSuiviCorrection as $rowsFtaSuiviCorrection) {
             $current_correction_fta_suivi_projet = $rowsFtaSuiviCorrection[FtaSuiviProjetModel::FIELDNAME_CORRECTION_FTA_SUIVI_PROJET];
             $notificationFtaSuiviProjet = $rowsFtaSuiviCorrection[FtaSuiviProjetModel::FIELDNAME_CORRECTION_FTA_SUIVI_PROJET];
         }
     }
     //Intégration du commentaire de la correction
     if ($current_correction_fta_suivi_projet and $option[FtaSuiviProjetModel::FIELDNAME_CORRECTION_FTA_SUIVI_PROJET]) {
         $fullComment = $option[FtaSuiviProjetModel::FIELDNAME_CORRECTION_FTA_SUIVI_PROJET] . '\\n\\n' . $current_correction_fta_suivi_projet;
         $newCorrectionFtaSuiviProjet = FtaController::getComment("Correction d'une Fta", $nomPrenom, $fullComment);
     }
     //        $newCorrectionFtaSuiviProjet = mysql_real_escape_string($newCorrectionFtaSuiviProjet);
     $newCorrectionFtaSuiviProjet = str_replace("<br/>", "\n", $newCorrectionFtaSuiviProjet);
     //Dévalidation du chapitre en cours
     $reqDevelidationChapitre = " UPDATE " . FtaSuiviProjetModel::TABLENAME . " SET " . FtaSuiviProjetModel::FIELDNAME_SIGNATURE_VALIDATION_SUIVI_PROJET . "=0, " . FtaSuiviProjetModel::FIELDNAME_CORRECTION_FTA_SUIVI_PROJET . "=\"" . $newCorrectionFtaSuiviProjet . "\" " . " WHERE " . FtaModel::KEYNAME . "=" . $paramIdFta . " AND " . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . "=" . $paramIdChapitre;
     DatabaseOperation::execute($reqDevelidationChapitre);
     /*
      * Mise à jour de la validation de l'échéance du processus
      * fonction non utilisé
      */
     // FtaProcessusDelaiModel::BuildFtaProcessusValidationDelai($paramIdFta, $idFtaProcessus, $idFtaWorkflow);
     //Dévalidation des processus suivants
     $return = FtaChapitreModel::buildDevalidationChapitre($paramIdFta, $idFtaProcessus, $HtmlResult);
     /**
      * Actualisation du pourcentage de validation de la Fta
      */
     $idFtaSuiviProjet = FtaSuiviProjetModel::getIdFtaSuiviProjetByIdFtaAndIdChapitre($paramIdFta, $paramIdChapitre);
     $modelFtaSuiviProjet = new FtaSuiviProjetModel($idFtaSuiviProjet);
     $modelFtaSuiviProjet->unsetSigned();
     $modelFtaSuiviProjet->saveToDatabase();
     //print_r($return['mail']);      //Tableau contenant les adresses emails des personnes concernées par la dévalidation
     if (count($return) > 1) {
         $return['processus'] = array_unique($return['processus']);
         //Tableau contenant les identifiants des processus dévalidés unique
     }
     if (is_string($return['processus'])) {
         $return['processus'] = array('processus' => $return['processus']);
     }
     //Informations
     if ($return['processus']) {
         foreach ($return['processus'] as $id_Fta_Processus) {
             $idFtaProcessus = $id_Fta_Processus;
             $arrayFtaProcessus = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaProcessusModel::FIELDNAME_NOM . ' FROM ' . FtaProcessusModel::TABLENAME . ', ' . FtaWorkflowStructureModel::TABLENAME . ' WHERE ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . '=' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::KEYNAME . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . '=' . $idFtaProcessus . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . '=' . $idFtaWorkflow);
             if ($arrayFtaProcessus) {
                 foreach ($arrayFtaProcessus as $rowsFtaProcessus) {
                     $message .= $rowsFtaProcessus[FtaProcessusModel::FIELDNAME_NOM] . '<br>';
                 }
             }
         }
         if (!$message) {
             $message = 'Aucun processus n\'a été dévalidé.';
         }
         $titre = 'Liste des Processus dévalidés';
         if (!$option['no_message_ecran']) {
             Lib::showMessage($titre, $message, $redirection);
         }
         //Envoi des mails
         $show_din = FtaModel::showDin($paramIdFta);
         $sujetElements = $show_din;
         if ($return['mail']) {
             $return['mail'] = array_unique($return['mail']);
             foreach ($return['mail'] as $mail) {
                 $sujetmail = 'FTA/Correction: ' . $sujetElements;
                 $destinataire = $mail;
                 $expediteur = $nomPrenom . ' <' . $mailExpediteur . '>';
                 $text = 'Vos chapitres viennent d\'être dévalidés suite à une correction apportée par ' . $nomPrenom . '.\\n\\n' . 'OBJET DE LA CORRECTION:\\n' . '\\t' . stripslashes($option[FtaSuiviProjetModel::FIELDNAME_CORRECTION_FTA_SUIVI_PROJET]);
                 $typeMail = 'Correction';
                 if ($notificationFtaSuiviProjet) {
                     envoismail($sujetmail, $text, $destinataire, $expediteur, $typeMail);
                 }
             }
         }
         /**
          * Génération d'un mail informant le gestionnaire de la Fta
          */
         if ($option['mail_gestionnaire']) {
             $ftaModel = new FtaModel($paramIdFta);
             $idGestionnaire = $ftaModel->getModelCreateur()->getKeyValue();
             //Tableau des id intranet actions Fta
             $arrayAction = IntranetDroitsAccesModel::getArrayIdIntranetActionWithAccesRightsToFtaByUser($idGestionnaire);
             $checkDiffusion = FtaController::isValueInArray(IntranetNiveauAccesModel::NIVEAU_FTA_DIFFUSION, $arrayAction);
             if ($idGestionnaire != $idUser and $checkDiffusion) {
                 $mailGestionnaire = $ftaModel->getModelCreateur()->getDataField(UserModel::FIELDNAME_MAIL)->getFieldValue();
                 $sujetmail = 'FTA/Mise en Correction: ' . $sujetElements . ' par ' . $nomPrenom;
                 $destinataire = $mailGestionnaire;
                 $expediteur = $nomPrenom . ' <' . $mailExpediteur . '>';
                 $text = 'Une nouvelle version vient d\'être crée, la correction apportée par ' . $nomPrenom . ' est au sujet de :\\n' . '\\t' . stripslashes($option[FtaSuiviProjetModel::FIELDNAME_CORRECTION_FTA_SUIVI_PROJET]);
                 $typeMail = 'CorrectionValidation2Modification';
                 envoismail($sujetmail, $text, $destinataire, $expediteur, $typeMail);
             }
         }
     }
     //Fin du traitement des processus suivants
     return 1;
 }
コード例 #8
0
 /**
  * Il s'agit du controle des processus multisite,
  * les droits d'accès à cette Fta étatn controlé précédement je désactive la focntion
  * Cette focntion est imcomplète, il manque la notion de controle des processus
  * @param type $paramRows
  * @param type $paramIdFta
  * @return int
  */
 public static function CheckProcessusSiteOrSociete($paramRows, $paramIdFta)
 {
     $globalConfig = new GlobalConfig();
     UserModel::checkUserSessionExpired($globalConfig);
     $idUser = $globalConfig->getAuthenticatedUser()->getKeyValue();
     $paramLieuGeo = $globalConfig->getAuthenticatedUser()->getLieuGeo();
     //Existe-il une configuration de gestion forcée pour ce processus et ce site d'assemblage ?
     foreach ($paramRows as $rowsSiteSociete) {
         $arrayGestion = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' FROM ' . GeoModel::TABLENAME . ',' . FtaModel::TABLENAME . ',' . FtaActionSiteModel::TABLENAME . ',' . IntranetActionsModel::TABLENAME . ',' . FtaWorkflowStructureModel::TABLENAME . ' WHERE ' . GeoModel::KEYNAME . '=' . FtaModel::FIELDNAME_SITE_PRODUCTION . ' AND ' . FtaActionSiteModel::FIELDNAME_ID_SITE . '=' . GeoModel::KEYNAME . ' AND ' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . '=' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . ' AND ' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_MODULES . '=' . IntranetModulesModel::TABLENAME . '.' . IntranetModulesModel::KEYNAME . ' AND ' . IntranetDroitsAccesModel::FIELDNAME_ID_USER . ' =' . $idUser . ' AND ' . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . '=' . IntranetNiveauAccesModel::NIVEAU_GENERIC_TRUE . ' AND ' . FtaActionSiteModel::TABLENAME . '.' . FtaActionSiteModel::FIELDNAME_ID_INTRANET_ACTIONS . '=' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . ' AND ' . FtaActionSiteModel::TABLENAME . '.' . FtaActionSiteModel::FIELDNAME_ID_SITE . '=' . $paramLieuGeo . ' AND ' . FtaModel::KEYNAME . '=' . $paramIdFta);
         if ($arrayGestion) {
             foreach ($arrayGestion as $rowsGestion) {
                 $id_geo = $rowsGestion[FtaProcessusMultisiteModel::FIELDNAME_ID_SITE_PROCESSUS_FTA_PROCESSUS_MULTISITE];
             }
             if ($id_geo == $paramLieuGeo) {
                 //L'égalité est respecté, donc ce processus est bien en cours
                 $paramT_Processus_Encours = $paramRows;
             } else {
                 $paramT_Processus_Encours = 0;
             }
         }
     }
     return $paramT_Processus_Encours;
 }
コード例 #9
0
 /**
  * Fonction transitant une fiche vers un etat donné
  * @param type $paramIdFta
  * @param type $paramAbreviationFtaTransition
  * @param type $paramCommentaireMajFta
  * @param type $paramIdWorkflow
  * @param type $paramListeChapitres
  * @return array
  */
 public static function buildTransitionFta($paramIdFta, $paramAbreviationFtaTransition, $paramCommentaireMajFta, $paramIdWorkflow, $paramListeChapitres, $dateEcheanceFta)
 {
     /*
      * Codes de retour de la fonction:
      */
     /*
      0: FTA correctement transitée
      1: FTA non transité car risque de doublon
      3: Erreur autre
     */
     $return["0"] = "0";
     /*
      * Chargement de l'enregistrement
      */
     $ftaModel = new FtaModel($paramIdFta);
     $idFtaEtatByIdFta = $ftaModel->getDataField(FtaModel::FIELDNAME_ID_FTA_ETAT)->getFieldValue();
     $idDossierFta = $ftaModel->getDossierFta();
     $codeArticleLdc = $ftaModel->getDataField(FtaModel::FIELDNAME_CODE_ARTICLE_LDC)->getFieldValue();
     $siteDeProduction = $ftaModel->getDataField(FtaModel::FIELDNAME_SITE_PRODUCTION)->getFieldValue();
     $versionDossierFta = $ftaModel->getDataField(FtaModel::FIELDNAME_VERSION_DOSSIER_FTA)->getFieldValue();
     $old_nouveau_maj_fta = $ftaModel->getDataField(FtaModel::FIELDNAME_COMMENTAIRE_MAJ_FTA)->getFieldValue();
     $ftaEtatModel = new FtaEtatModel($idFtaEtatByIdFta);
     $initial_abreviation_fta_etat = $ftaEtatModel->getDataField(FtaEtatModel::FIELDNAME_ABREVIATION)->getFieldValue();
     $globalConfig = new GlobalConfig();
     UserModel::checkUserSessionExpired($globalConfig);
     $nomPrenom = $globalConfig->getAuthenticatedUser()->getPrenomNom();
     $idUser = $globalConfig->getAuthenticatedUser()->getKeyValue();
     /*         * *****************************************************************************
               Pré-traitement spécifique
              * ***************************************************************************** */
     switch (TRUE) {
         case $paramAbreviationFtaTransition == FtaEtatModel::ETAT_ABREVIATION_VALUE_VALIDE:
             //Passer en Validée
             //Retirer les versions obsolètes
             $req = "UPDATE " . FtaModel::TABLENAME . " SET " . FtaModel::FIELDNAME_ID_FTA_ETAT . "='6'" . " WHERE " . FtaModel::FIELDNAME_DOSSIER_FTA . "='" . $idDossierFta . "' ";
             $result = DatabaseOperation::execute($req);
             //Mise à jour de la date de validation
             //                $ftaModel->getDataField(FtaModel::FIELDNAME_DATE_DERNIERE_MAJ_FTA)->setFieldValue(date('d-m-Y'));
             //                $ftaModel->saveToDatabase();
             /*
              * Préparation des données
              */
             $nouveau_maj_fta = FtaController::getComment("Validation d'une Fta", $nomPrenom, NULL);
             /**
              * Gestion des Code Article Arcadia Primaire/Secondaires
              */
             $ftaModel->manageFtaPrimaireSecondaire(FtaEtatModel::ID_VALUE_VALIDE, FtaVerrouillageChampsModel::CHANGE_STATE_TRUE_VALIDATION_CHAPITRE);
             break;
             //            case $paramAbreviationFtaTransition == FtaEtatModel::ETAT_ABREVIATION_VALUE_WORKFLOW:
             //                //Dans le cas d'une mise à jour, récupération des Chapitres à corriger.
             //
             //                $liste_chapitre_maj_fta = ";";
             //                //Mise à  jour de la table Fta_suivie_projet
             //                FtaSuiviProjetModel::initFtaSuiviProjet($paramIdFta);
             //                foreach ($paramListeChapitres as $rowsChapitre) {
             //                    //Parcours des chapitres
             //                    //Si le chapitre a été sélectionné, on l'enregistre dans le tableau de résultat
             //                    $liste_chapitre_maj_fta.=$rowsChapitre . ";";
             //                    //Correction des chapitres
             //                    $paramOption["no_message_ecran"] = "1";
             //                    $paramOption["correction_fta_suivi_projet"] = $nouveau_maj_fta;
             //                    FtaChapitreModel::BuildCorrectionChapitre($paramIdFta, $rowsChapitre, $paramOption);
             //                }
             //                $paramAbreviationFtaTransition = FtaEtatModel::ETAT_ABREVIATION_VALUE_MODIFICATION;
             //                break;
         //            case $paramAbreviationFtaTransition == FtaEtatModel::ETAT_ABREVIATION_VALUE_WORKFLOW:
         //                //Dans le cas d'une mise à jour, récupération des Chapitres à corriger.
         //
         //                $liste_chapitre_maj_fta = ";";
         //                //Mise à  jour de la table Fta_suivie_projet
         //                FtaSuiviProjetModel::initFtaSuiviProjet($paramIdFta);
         //                foreach ($paramListeChapitres as $rowsChapitre) {
         //                    //Parcours des chapitres
         //                    //Si le chapitre a été sélectionné, on l'enregistre dans le tableau de résultat
         //                    $liste_chapitre_maj_fta.=$rowsChapitre . ";";
         //                    //Correction des chapitres
         //                    $paramOption["no_message_ecran"] = "1";
         //                    $paramOption["correction_fta_suivi_projet"] = $nouveau_maj_fta;
         //                    FtaChapitreModel::BuildCorrectionChapitre($paramIdFta, $rowsChapitre, $paramOption);
         //                }
         //                $paramAbreviationFtaTransition = FtaEtatModel::ETAT_ABREVIATION_VALUE_MODIFICATION;
         //                break;
         case $paramAbreviationFtaTransition == FtaEtatModel::ETAT_ABREVIATION_VALUE_MODIFICATION:
             //Passer en Initialisation
             //Vérification que le dossier n'a pas une fiche déjà en Mise à jour
             $array = DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT " . FtaModel::KEYNAME . " FROM " . FtaModel::TABLENAME . "," . FtaEtatModel::TABLENAME . " WHERE " . FtaModel::FIELDNAME_DOSSIER_FTA . "=" . $idDossierFta . " " . " AND " . FtaModel::TABLENAME . "." . FtaModel::FIELDNAME_ID_FTA_ETAT . "=" . FtaEtatModel::TABLENAME . "." . FtaEtatModel::KEYNAME . " AND (" . FtaEtatModel::FIELDNAME_ABREVIATION . "<>'" . FtaEtatModel::ETAT_ABREVIATION_VALUE_VALIDE . "' AND " . FtaEtatModel::FIELDNAME_ABREVIATION . "<>'" . FtaEtatModel::ETAT_ABREVIATION_VALUE_RETIRE . "' AND " . FtaEtatModel::FIELDNAME_ABREVIATION . "<>'" . FtaEtatModel::ETAT_ABREVIATION_VALUE_ARCHIVE . "') ");
             $verrou = count($array);
             if ($verrou and !$_SESSION["mode_debug"]) {
                 $titre = "Action vérrouillée";
                 $message = "Cette fiche est déjà en cours de modification.";
                 $redirection = "";
                 Lib::showMessage($titre, $message, $redirection);
                 $return["0"] = "1";
                 return $return;
                 exit;
             }
             /**
              * Transition d'une Fta Archivévers Modifier doit être la dernier version du dossier
              * afin d'éviter les doublons
              */
             if ($initial_abreviation_fta_etat == FtaEtatModel::ETAT_ABREVIATION_VALUE_ARCHIVE or $initial_abreviation_fta_etat == FtaEtatModel::ETAT_ABREVIATION_VALUE_VALIDE) {
                 /**
                  * On récupère la dernière version du dossier
                  */
                 $arrayIdDossierVersion = DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT MAX(" . FtaModel::FIELDNAME_VERSION_DOSSIER_FTA . ")  FROM " . FtaModel::TABLENAME . " WHERE " . FtaModel::FIELDNAME_DOSSIER_FTA . "=" . $idDossierFta);
                 foreach ($arrayIdDossierVersion as $rowsIdDossierVersion) {
                     $IdDossierVersion = $rowsIdDossierVersion['MAX(' . FtaModel::FIELDNAME_VERSION_DOSSIER_FTA . ')'];
                 }
             } else {
                 $IdDossierVersion = "";
             }
             //Dans le cas d'une mise à jour, récupération des Chapitres à corriger.
             $liste_chapitre_maj_fta = ";";
             foreach ($paramListeChapitres as $rowsChapitre) {
                 //Parcours des chapitres
                 //Si le chapitre a été sélectionné, on l'enregistre dans le tableau de résultat
                 $liste_chapitre_maj_fta .= $rowsChapitre . ";";
             }
             /**
              * Commentaire de transition
              */
             $nouveau_maj_fta = FtaController::getComment("Correction d'une Fta", $nomPrenom, $paramCommentaireMajFta);
             // Retirer la FTA de présentation avant de créer la nouvelle version en modification.
             if ($initial_abreviation_fta_etat == FtaEtatModel::ETAT_ABREVIATION_VALUE_PRESENTATION) {
                 //Retirer la version de présentation
                 $req = "UPDATE " . FtaModel::TABLENAME . " SET " . FtaModel::FIELDNAME_ID_FTA_ETAT . "='6'" . "WHERE id_fta='" . $paramIdFta . "' ";
                 $result = DatabaseOperation::execute($req);
             }
             //Duplication de la fiche
             $id_fta_original = $paramIdFta;
             $action_duplication = "version";
             $option_duplication["abreviation_etat_destination"] = $paramAbreviationFtaTransition;
             $option_duplication["selection_chapitre"] = $paramListeChapitres;
             $option_duplication["site_de_production"] = $siteDeProduction;
             $option_duplication["id_version_dossier_fta"] = $IdDossierVersion;
             $option_duplication["date_echeance_fta"] = $dateEcheanceFta;
             $option_duplication["nouveau_maj_fta"] = $nouveau_maj_fta;
             $idFtaNew = FtaModel::buildDuplicationFta($id_fta_original, $action_duplication, $option_duplication, $paramIdWorkflow);
             $ftaModel = new FtaModel($idFtaNew);
             $codeArticleLdc = $ftaModel->getDataField(FtaModel::FIELDNAME_CODE_ARTICLE_LDC)->getFieldValue();
             $paramIdFta = $idFtaNew;
             break;
         case $paramAbreviationFtaTransition == FtaEtatModel::ETAT_ABREVIATION_VALUE_RETIRE:
             //Passer en Retirer
             /*
              * Préparation des données
              */
             $nouveau_maj_fta = FtaController::getComment("Retirer une Fta", $nomPrenom, NULL);
             break;
         case $paramAbreviationFtaTransition == FtaEtatModel::ETAT_ABREVIATION_VALUE_ARCHIVE:
             //Passer en Archivé
             /*
              * Préparation des données
              */
             $nouveau_maj_fta = FtaController::getComment("Archivage d'une Fta", $nomPrenom, NULL);
             break;
         default:
             break;
     }
     //Fin Pré-traitement spécifique
     /*         * ************************************************************* 1****************
               Traitement Commun
              * ***************************************************************************** */
     /**
      * Mise à jour de la date derniere modification de l'état de la Fta
      */
     $ftaModel->getDataField(FtaModel::FIELDNAME_DATE_DERNIERE_MAJ_FTA)->setFieldValue(date('Y-m-d'));
     $ftaModel->saveToDatabase();
     //Récupération du nouvel état de la fiche
     $arrayIdFtaEtat = DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT " . FtaEtatModel::KEYNAME . " FROM " . FtaEtatModel::TABLENAME . " WHERE " . FtaEtatModel::FIELDNAME_ABREVIATION . "=\"" . $paramAbreviationFtaTransition . "\"");
     foreach ($arrayIdFtaEtat as $value) {
         $idFtaEtat = $value[FtaEtatModel::KEYNAME];
     }
     if ($old_nouveau_maj_fta) {
         $nouveau_maj_fta = str_replace('"', '', $nouveau_maj_fta . $old_nouveau_maj_fta);
     }
     $req = "UPDATE " . FtaModel::TABLENAME . " SET " . FtaModel::FIELDNAME_ID_FTA_ETAT . "=" . $idFtaEtat . ", " . FtaModel::FIELDNAME_COMMENTAIRE_MAJ_FTA . "=\"" . $nouveau_maj_fta . "\" WHERE " . FtaModel::KEYNAME . "=\"" . $paramIdFta . "\" ";
     DatabaseOperation::execute($req);
     /**
      * Historisation du changement d'état de la Fta
      */
     FtaEtatHistoriqueModel::setFtaEtatHistorique($paramIdFta, $idDossierFta, $versionDossierFta, $idFtaEtatByIdFta, $idFtaEtat, $idUser, $initial_abreviation_fta_etat);
     //Fin Traitement Commun
     /*         * *****************************************************************************
               Post-traitement
              * ***************************************************************************** */
     switch ($paramAbreviationFtaTransition) {
         case 'I':
             //Enregistrement des chapitres concernés par la mise à jour
             $req = "UPDATE " . FtaModel::TABLENAME . " SET " . FtaModel::FIELDNAME_LISTE_CHAPITRE_MAJ_FTA . "='" . $liste_chapitre_maj_fta . "' " . " WHERE " . FtaModel::KEYNAME . "='" . $paramIdFta . "' ";
             DatabaseOperation::execute($req);
         case 'V':
             //Désactivation de l'ancien Code Article Agrologic
             $req = "UPDATE " . FtaModel::TABLENAME . " SET " . FtaModel::FIELDNAME_CODE_ARTICLE . "=NULL " . "," . FtaModel::FIELDNAME_ACTIF . "='0'" . "," . FtaModel::FIELDNAME_DATE_DE_VALIDATION_FTA . "='" . date("Y-m-d") . "' WHERE " . FtaModel::FIELDNAME_CODE_ARTICLE_LDC . "='" . $codeArticleLdc . "' " . " AND " . FtaModel::KEYNAME . "='" . $paramIdFta . "' ";
             DatabaseOperation::execute($req);
             //Activation du nouvel Article
             $req = "UPDATE " . FtaModel::TABLENAME . " SET " . FtaModel::FIELDNAME_CODE_ARTICLE . "='" . "1" . "', actif='-1' " . " WHERE " . FtaModel::KEYNAME . "='" . $paramIdFta . "' ";
             DatabaseOperation::execute($req);
             break;
         case 'A':
         case 'R':
             $req = "UPDATE " . FtaModel::TABLENAME . " SET " . FtaModel::FIELDNAME_ACTIF . "=0" . "," . FtaModel::FIELDNAME_CODE_ARTICLE . "=NULL" . " WHERE " . FtaModel::KEYNAME . "='" . $paramIdFta . "' ";
             DatabaseOperation::execute($req);
             break;
     }
     $return["id_fta_new"] = $paramIdFta;
     $return[FtaEtatModel::KEYNAME] = $idFtaEtat;
     $return[FtaEtatModel::FIELDNAME_ABREVIATION] = $paramAbreviationFtaTransition;
     return $return;
 }