You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

196 lines
6.2 KiB

<?php
$MODULE="RH";
$TITLE="Récupération Planning";
$DFTENDSTATUS="OK";
$ARGS="-noactualizeprod -raz";
/** Laisser les lignes 2 à 5 sans changer la casse et sans espaces et dans cet ordre
* car le script est lu et analysé quand il est exécuté via .exe ou Jenkins
* pour gestion des fichiers .pid dans system\batch\logs
*/
set_time_limit(0);
define('__ROOT__', dirname(dirname(dirname(dirname(__FILE__)))));
require_once __ROOT__.'/modules/base/php/lib/cti/Batch/iCTI_batch_common.php';
require_once __ROOT__.'/modules/base/php/classSimpleXML.php';
require_once __ROOT__.'/modules/outils/php/httpService_cacheManager_cleanCache.php';
require_once __ROOT__.'/modules/base/php/lib/cti/Database/Database2Factory.class.php';
require_once __ROOT__.'/modules/base/php/lib/cti/Environnement/Environnement.class.php';
require_once __ROOT__.'/modules/base/php/Features/FeaturesManager.php';
global $ENDSTATUS;
global $iCTI_connexion;
global $iCTI_cache;
global $cti_args;
global $cti_sqlStatements;
global $ENV_TYPEETS;
global $ENV_FINESS;
global $ENV_SIREN;
global $p1;
global $nbE;
$multiP = Environnement::getInstance()->hasPlanningProvider2();
$p1 = Environnement::getInstance()->getPlanningProvider();
$p2 = Environnement::getInstance()->getPlanningProvider2();
$p1Start = Environnement::getInstance()->getPlanningProviderStart();
if ($p1Start == '') {
$p1Start = Environnement::getInstance()->getRhProviderStart();
}
$p2Start = Environnement::getInstance()->getPlanningProvider2Start();
$tmpDate = date_create($p1Start);
date_modify($tmpDate, '-1 day');
$p2End = date_format($tmpDate, 'Y-m-d');
logStartMsg();
// Chargement des paramètres et connexion BD
$iCTI_connexion = Database2Factory::getInstance(Environnement::PROVIDER_CTI);
$ret = $iCTI_connexion->connect();
// Récupération des arguments passés en paramètres
$cti_args = new CTI_Args_class();
if (checkLoadedData($p1, $MODULE) === 0 || $cti_args->args["-f"]) {
logInfoMsg("Données prestataire $p1 chargées avec succès.");
// import CTI
extraction_environnement($p1, $p1Start);
} else {
logErrorMsg("Problème de chargement des données prestataire $p1.");
}
if ($multiP) {
if (checkLoadedData($p2, $MODULE) === 0 || $cti_args->args["-f"]) {
logInfoMsg("Données prestataire $p2 chargées avec succès.");
// import CTI
extraction_environnement($p2, $p2Start, $p2End);
} else {
logErrorMsg("Problème de chargement des données prestataire $p2.");
}
}
// Croisement Paie Planning
// Gestion des FEATURES
try {
$FM = new FeaturesManager();
$activatedFeatures = $FM->getActivatedFeatures();
} catch(Exception $e) {
// Si l'exception est la non présence de FEATURES alors on passe simplement
// Pour les autres exceptions, c'est donc une exception à signaler
if($e->getMessage() !== FeaturesManager::FEATURES_MANAGER_NO_FEATURES_EXCEPTION) {
logErrorMsg("Erreur lors de la gestion des features : ".$e->getMessage());
}
$activatedFeatures = array();
}
if(in_array('RH_CROISEMENT_PAIE_PLANNING',$activatedFeatures)) {
$iCTI_connexion->query('SELECT rh.cti_croisement_paie_planning_generate()');
}
// nettoyage du cache
logInfoMsg("Nettoyage cache");
cleanAllCache("iCTI_rh", TRUE);
// Déconnexion BD
$iCTI_connexion->close();
logEndMsg();
/**
* ******************************************************
* FONCTIONS *
* ******************************************************
*/
// récupération historique
function extraction_environnement($_prestataire, $_start, $_end = '2099-12-31') {
global $cti_sqlStatements;
global $cti_args;
global $iCTI_connexion;
try {
logInfoMsg("RECUPERATION DE LA PRODUCTION $_prestataire (de $_start à $_end)");
// Raz automatique le samedi
if (date("w") == 6) {
$cti_args->args["-raz"] = "ONLYKEY";
}
$environmentVars = array();
$environmentVars["ENV_PLANNING_DATEDEBUT"] = $_start;
$environmentVars["ENV_PLANNING_DATEFIN"] = $_end;
$environmentVars["FINESS"] = Environnement::getInstance()->getFiness();
$environmentVars["SIREN"] = Environnement::getInstance()->getSiren();
$environmentVars["OPTRH_AVT_NATURE"] = Environnement::getInstance()->getOptAvantageNature();
// Création d'une table SQL temporaire contenant les paramètres à passer à l'import RH.
// A appeler dans le SQL de la façon suivante : rhp('finess');
$tmpParamSql = "
DROP TABLE IF EXISTS rhp
;
CREATE TEMP TABLE rhp AS
VALUES
('siren'::text, '" . trim($environmentVars["SIREN"]) . "'::text),
('finess'::text, '" . $environmentVars["FINESS"] . "'::text),
('opt_avt_nature'::text, '" . $environmentVars["OPTRH_AVT_NATURE"] . "'::text),
('planningprovider_start'::text, '" . $_start . "'::text)
;
DROP FUNCTION IF EXISTS rhp(text)
;
CREATE FUNCTION rhp(text)
RETURNS text AS
\$BODY\$
SELECT column2 FROM rhp WHERE column1 = \$1
;
\$BODY\$
LANGUAGE 'sql' VOLATILE
;
DROP FUNCTION IF EXISTS rhp_in(text)
;
CREATE FUNCTION rhp_in(text)
RETURNS setof text AS
\$BODY\$
SELECT column2 FROM rhp WHERE column1 = \$1
;
\$BODY\$
LANGUAGE 'sql' VOLATILE
;
";
$iCTI_connexion->query($tmpParamSql);
$sqlOptions = array();
foreach ($cti_args->args as $key => $value) {
$sqlOptions[] = $key;
}
$cti_sqlStatements = new CTI_SqlStatements_class("iCTI_import_planning_".$_prestataire.".XML", $iCTI_connexion, $environmentVars, $sqlOptions, "iCTI_import_planning_SHARE.XML", "iCTI_import_rh_SHARE.XML");
if ($cti_args->args["-raz"]) {
$cti_sqlStatements->executeStatementsNode("RAZ");
$cti_sqlStatements->executeStatementsNode("VACUUM");
}
$cti_sqlStatements->executeStatementsNode("INIT");
$cti_sqlStatements->executeStatementsNode("PROD");
$cti_sqlStatements->executeStatementsNode("POST");
$cti_sqlStatements->executeStatementsNode("VACUUM");
$cti_sqlStatements->executeStatementsNode("VENTILATION");
} catch (Exception $e) {
logErrorMsg("Impossible de charger les requêtes SQL.");
exit(1);
}
logEndMsg();
}
?>