<?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();
|
|
}
|
|
|
|
?>
|