<input type=hidden name=current_query value=' . $page_query . ' >
             <input type=hidden name=id_fta value=' . $idFta . '>
             <input type=hidden name=id_fta_chapitre value=' . $idFtaChapitreEncours . ' >             
             <input type=hidden name=id_annexe_emballage value=' . $idAnnexeEmballage . ' >
             <input type=hidden name=id_annexe_emballage_groupe value=' . $idAnnexeEmballageGroupe . ' >
             <input type=hidden name=id_annexe_emballage_groupe_type value=' . $idAnnexeEmballageGroupeType . ' >
             <input type=hidden name=id_fta_role value=' . $idFtaRole . ' >
             <input type=hidden name=id_fta_etat value=' . $idFtaEtat . ' >
             <input type=\'hidden\' name=\'comeback\' value=\'' . $comeback . '\' />
             <input type=hidden name=abreviation_fta_etat value=' . $abreviationFtaEtat . ' >
             <input type=hidden name=synthese_action value=' . $syntheseAction . ' >

             <' . $html_table . '>
             <tr class=titre_principal><td>

                 ' . $ftaModel->getDataField(FtaModel::FIELDNAME_DESIGNATION_COMMERCIALE)->getFieldValue() . ' - ' . $ftaModel->getDossierFta() . 'v' . $ftaModel->getDataField(FtaModel::FIELDNAME_VERSION_DOSSIER_FTA)->getFieldValue() . '
                 <br>
                 Ajout d\'un nouvel ' . $annexeEmballageGroupeTypeModel->getDataField(AnnexeEmballageGroupeTypeModel::FIELDNAME_NOM_ANNEXE_EMBALLAGE_GROUPE_TYPE)->getFieldValue() . ' </td></tr>
             </table>
             <' . $html_table . '>
             <tr><td width=\'20%\'>
                 ' . $bloc . '
             </td></tr>
             </table>

             <' . $html_table . '>
             <tr><td width=\'20%\'>
                ' . $nbEmballage . '
             </td></tr>
             </table>
 /**
  * Actualise l'état d'un champ verrouillé si le champ à était mise à jour.
  * @param string $paramTableName
  * @param string $paramKeyValue
  * @param string $paramFieldName
  */
 public static function doUpdateLockField($paramTableName, $paramKeyValue, $paramFieldName)
 {
     $mondelName = ModelTableAssociation::getModelName($paramTableName);
     $model = new $mondelName($paramKeyValue);
     $idFta = $model->getDataField(FtaModel::KEYNAME)->getFieldValue();
     if ($idFta) {
         $modelFta = new FtaModel($idFta);
         $idFtaDossier = $modelFta->getDossierFta();
     }
     $arrayFieldToLockChap = DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT " . self::KEYNAME . " FROM " . self::TABLENAME . " WHERE " . self::FIELDNAME_TABLE_NAME . "=\"" . $paramTableName . "\" AND " . self::FIELDNAME_FIELD_NAME . "=\"" . $paramFieldName . "\" AND " . self::FIELDNAME_DOSSIER_FTA_PRIMAIRE . "=\"" . $idFtaDossier . "\" AND " . self::FIELDNAME_FIELD_LOCK . "=" . self::FIELD_LOCK_TRUE);
     if ($arrayFieldToLockChap) {
         DatabaseOperation::execute("UPDATE " . self::TABLENAME . " SET " . self::FIELDNAME_FIELD_CHANGE_STATE . "=" . self::CHANGE_STATE_FALSE . " WHERE " . self::FIELDNAME_TABLE_NAME . "=\"" . $paramTableName . "\" AND " . self::FIELDNAME_FIELD_NAME . "=\"" . $paramFieldName . "\" AND " . self::FIELDNAME_DOSSIER_FTA_PRIMAIRE . "=\"" . $idFtaDossier . "\"");
     }
 }
Esempio n. 3
0
/*
 Initialisation des variables
*/
$page_default = substr(strrchr($_SERVER['PHP_SELF'], '/'), '1', '-4');
$page_action = $page_default . '_post.php';
$page_pdf = $page_default . '_pdf.php';
$action = 'valider';
//Action proposée à la page _post.php
$method = 'POST';
//Pour une url > 2000 caractères, ne pas utiliser utiliser GET
$html_table = 'table ' . 'border=1 ' . 'width=100% ' . 'class=contenu ';
/*
 Récupération des données MySQL
*/
//Informations de la Fiche Originale
$id_dossier_fta_original = $ftaOrigModel->getDossierFta();
$id_version_dossier_fta_original = $ftaOrigModel->getDataField(FtaModel::FIELDNAME_VERSION_DOSSIER_FTA)->getFieldValue();
//Informations de la Nouvelle Fiche
$id_dossier_fta_new = $ftaNewModel->getDossierFta();
$id_version_dossier_fta_new = $ftaNewModel->getDataField(FtaModel::FIELDNAME_VERSION_DOSSIER_FTA)->getFieldValue();
/*
 Création des objets HTML (listes déroulante, cases à cocher ...etc.)
*/
/* * *********
  Fin Code PHP
 * ********* */
/* * ************
  Début Code HTML
 * ************ */
echo '
     <form method=post action=modification_fiche.php>
$globalConfig = new GlobalConfig();
$idUser = $globalConfig->getAuthenticatedUser()->getKeyValue();
$nomPrenomConnect = $globalConfig->getAuthenticatedUser()->getPrenomNom();
$ftaWorflowModelOLD = new FtaWorkflowModel($idFtaWorkflowOLD);
$ftaWorflowModelNEW = new FtaWorkflowModel($idFtaWorkflowNEW);
$nomWorkflowOLD = $ftaWorflowModelOLD->getDataField(FtaWorkflowModel::FIELDNAME_DESCRIPTION_FTA_WORKFLOW)->getFieldValue();
$nomWorkflowNEW = $ftaWorflowModelNEW->getDataField(FtaWorkflowModel::FIELDNAME_DESCRIPTION_FTA_WORKFLOW)->getFieldValue();
$commentaire = FtaController::getCommentWorkflowChange($nomWorkflowOLD, $nomWorkflowNEW, $nomPrenomConnect);
switch ($action) {
    /*
     S'il n'y a pas d'actions défini
    */
    case 'valider':
        if ($idFtaWorkflowOLD != $idFtaWorkflowNEW) {
            $modelFta = new FtaModel($paramIdFta);
            $idDossierFta = $modelFta->getDossierFta();
            /**
             * Liste des IdFta changeant d'espace de travail
             */
            $arrayIdFtaChange = FtaModel::getArrayIdFtaByIdDossierFta($idDossierFta);
            foreach ($arrayIdFtaChange as $rowsIdFtaChange) {
                $idFta = $rowsIdFtaChange[FtaModel::KEYNAME];
                $idFtaEtatChange = $rowsIdFtaChange[FtaModel::FIELDNAME_ID_FTA_ETAT];
                $ftaEtatModel = new FtaEtatModel($idFtaEtatChange);
                $arbreviationFta = $ftaEtatModel->getDataField(FtaEtatModel::FIELDNAME_ABREVIATION)->getFieldValue();
                /**
                 * Changement de l'espace de travail
                 */
                $ftaModel = new FtaModel($idFta);
                $ftaModel->getDataField(FtaModel::FIELDNAME_WORKFLOW)->setFieldValue($idFtaWorkflowNEW);
                $oldComment = $ftaModel->getDataField(FtaModel::FIELDNAME_COMMENTAIRE_MAJ_FTA)->getFieldValue();
        //           include ('./menu_principal.inc');    //Sinon, menu par défaut
        //        }
}
//Fin de la sélection du mode d'affichage de la page
$id_fta = Lib::getParameterFromRequest(FtaModel::KEYNAME);
$synthese_action = Lib::getParameterFromRequest('synthese_action');
$id_fta_chapitre_encours = Lib::getParameterFromRequest('id_fta_chapitre_encours', '1');
$comeback = Lib::getParameterFromRequest('comeback');
$idFtaEtat = Lib::getParameterFromRequest(FtaEtatModel::KEYNAME);
$abreviationFtaEtat = Lib::getParameterFromRequest(FtaEtatModel::FIELDNAME_ABREVIATION);
$idFtaRole = Lib::getParameterFromRequest(FtaRoleModel::KEYNAME);
/**
 * Initialisation
 */
$ftaModel = new FtaModel($id_fta);
$dossierFta = $ftaModel->getDossierFta();
$idFtaWorkflow = $ftaModel->getDataField(FtaModel::FIELDNAME_WORKFLOW)->getFieldValue();
$globalConfig = new GlobalConfig();
if ($globalConfig->getAuthenticatedUser()) {
    $idUser = $globalConfig->getAuthenticatedUser()->getKeyValue();
} else {
    $titre = UserInterfaceMessage::FR_WARNING_DECONNECTION_TITLE;
    $message = UserInterfaceMessage::FR_WARNING_DECONNECTION;
    Lib::showMessage($titre, $message, $redirection);
}
$idUser = $globalConfig->getAuthenticatedUser()->getKeyValue();
/**
 * Contrôle du rôle attribué
 */
if ($idFtaRole == FtaRoleModel::ID_FTA_ROLE_COMMUN) {
    if ($abreviationFtaEtat == FtaEtatModel::ETAT_ABREVIATION_VALUE_MODIFICATION) {
 /**
  * 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;
 }