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.
 
 
 

317 lines
8.7 KiB

<?php
$MODULE="rh";
$TITLE="Récupération RH";
$DFTENDSTATUS="OK";
$ARGS="-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
*/
require_once("../../../modules/base/php/lib/cti/Batch/Log.functions.php");
require_once("../../../modules/base/php/lib/cti/Batch/iCTI_batch_common.php");
require_once("../../../modules/base/php/classSimpleXML.php");
require_once("../../../modules/outils/php/httpService_cacheManager_cleanCache.php");
require_once("../../../modules/base/php/lib/cti/EnvironmentSettings/EnvironmentDatabaseSettings.php");
require_once("../../../modules/base/php/lib/cti/Database/Database2Factory.class.php");
global $ENDSTATUS;
global $iCTI_connexion;
global $cti_args;
global $RHPROVIDER;
global $RHPROVIDER2;
global $RHPROVIDER_PREFIX;
global $RHPROVIDER2_PREFIX;
global $ENV_TYPEETS;
global $nbE;
logStartMsg();
// Arguments transmis ?
$cti_args = new CTI_Args_class();
if (iCTI_connect()) {
// création du répertoire utilisé par la fonction base.cti_copy_table(i_fromdblink text, i_fromtable text, i_totable text)
if (!is_dir('C:/TEMP')) {
mkdir('C:/TEMP');
}
extraction_prod($RHPROVIDER);
extraction_environnement($RHPROVIDER, $RHPROVIDER_PREFIX, 0);
}
iCTI_disconnect();
// nettoyage du cache
logInfoMsg("Nettoyage cache");
cleanAllCache("iCTI_rh", TRUE);
logEndMsg();
function extraction_prod($RHPROVIDER_check) {
global $cti_args;
echo "\r\n";
// Pas d'aspiration sur import depuis autre environnement
if ($RHPROVIDER_check == "ICTI_RH") {
return;
}
if ($cti_args->args["-noactualizeprod"]) {
logInfoMsg("CONTRÔLE RÉPLICATION BASE DE DONNÉES PRODUCTION $RHPROVIDER_check");
$prodhm_exe = realpath("../../../prodsgbd/iCTI_synchronize_prodsgbd_check.exe");
$extractCmd = "$prodhm_exe -p $RHPROVIDER_check -m rh";
$return = exec($extractCmd, $output_array);
foreach ($output_array as $output_line) {
if (trim($output_line) != "") {
echo "\r\n$output_line";
}
}
// Sur QUADRARH, verifier egalement exercice précédent
if ($RHPROVIDER_check == "QUADRARH") {
$RHPROVIDER_checkP = $RHPROVIDER_check . 'P';
logInfoMsg("Exercice précédent");
$prodhm_exe = realpath("../../../prodsgbd/iCTI_synchronize_prodsgbd_check.exe");
$extractCmd = "$prodhm_exe -p $RHPROVIDER_checkP -m rh";
unset($output_array);
$return = exec($extractCmd, $output_array);
foreach ($output_array as $output_line) {
if (trim($output_line) != "") {
echo "\r\n$output_line";
}
}
}
logInfoMsg("FIN CONTRÔLE RÉPLICATION BASE DE DONNÉES PRODUCTION $RHPROVIDER_check");
}
else {
logInfoMsg("RÉPLICATION BASE DE DONNÉES PRODUCTION $RHPROVIDER_check");
$prodhm_exe = realpath("../../../prodsgbd/iCTI_synchronize_prodsgbd_put.exe");
$extractCmd = "$prodhm_exe -p $RHPROVIDER_check -m rh";
$return = exec($extractCmd, $output_array);
foreach ($output_array as $output_line) {
if (trim($output_line) != "") {
echo "\r\n$output_line";
}
}
// Sur QUADRARH, récupérer egalement exercice précédent
if ($RHPROVIDER_check == "QUADRARH") {
$RHPROVIDER_checkP = $RHPROVIDER_check . 'P';
logInfoMsg("Exercice précédent");
$prodhm_exe = realpath("../../../prodsgbd/iCTI_synchronize_prodsgbd_put.exe");
$extractCmd = "$prodhm_exe -p $RHPROVIDER_checkP -m rh";
unset($output_array);
$return = exec($extractCmd, $output_array);
foreach ($output_array as $output_line) {
if (trim($output_line) != "") {
echo "\r\n$output_line";
}
}
}
logInfoMsg("FIN RÉPLICATION BASE DE DONNÉES PRODUCTION $RHPROVIDER_check");
}
}
// récupération historique
function extraction_environnement($RHPROVIDER, $RHPROVIDER_PREFIX, $RHPROVIDER_OID) {
global $iCTI_connexion;
global $ENV_TYPEETS;
global $cti_args;
logInfoMsg("RÉCUPERATION DE LA PRODUCTION $RHPROVIDER");
// Paramètres shs
$file = "../../../settings/databases/$RHPROVIDER.XML";
$xml = simplexml_load_string(file_get_contents($file));
$DB_pmsischema = trim($xml['pmsilib']);
$DB_activiteschema = trim($xml['admlib']);
$DB_rhschema = trim($xml['rhlib']);
$ETAB = trim($xml['idEtab_rh']);
// Chargement requetes SQL
$environmentVars=array();
$environmentVars["PMSISCHEMA"] = $DB_pmsischema;
$environmentVars["ACTIVITESCHEMA"] = $DB_activiteschema;
$environmentVars["RHSCHEMA"] = $DB_rhschema;
$environmentVars["ETAB"] = $ETAB;
$environmentVars["ENV_TYPEETS"] = $ENV_TYPEETS;
if (strtolower($RHPROVIDER) === 'icti_rh') {
$dbSettings = new EnvironmentDatabaseSettings();
try {
$dbSettings->readSettings($file);
$environmentVars["DBHOST"] = $dbSettings->getHost();
$environmentVars["DBPORT"] = $dbSettings->getPort();
$environmentVars["DBNAME"] = $dbSettings->getName();
$environmentVars["DBUSER"] = $dbSettings->getUsername();
$environmentVars["DBPASSWORD"] = $dbSettings->getPassword();
} catch (Exception $e) {
logErrorMsg($e->getMessage());
logEndMsg();
exit();
}
}
$sqlOptions=array();
//$cti_sqlStatements_share = new CTI_SqlStatements_class("iCTI_import_rh_SHARE.XML",$iCTI_connexion,$environmentVars,$sqlOptions);
$cti_sqlStatements_provider = new CTI_SqlStatements_class("iCTI_import_rh_$RHPROVIDER.XML",$iCTI_connexion,$environmentVars,$sqlOptions);
$cti_sqlStatements_provider->executeStatementsNode("PARAM");
$cti_sqlStatements_provider->executeStatementsNode("PAIE");
$cti_sqlStatements_provider->executeStatementsNode("POST");
$cti_sqlStatements_provider->executeStatementsNode("VACUUM");
logInfoMsg("FIN RÉCUPERATION DE LA PRODUCTION $RHPROVIDER");
}
function iCTI_connect() {
global $iCTI_connexion;
global $ENV_TYPEETS;
global $RHPROVIDER;
global $RHPROVIDER2;
global $RHPROVIDER_PREFIX;
global $RHPROVIDER2_PREFIX;
$iCTI_connexion = FALSE;
$file = "../../../settings/settings.XML";
$settings_xml = simplexml_load_string(file_get_contents($file));
$wRHPROVIDER = "";
$RHPROVIDER_PREFIX = "";
$wRHPROVIDER_PREFIX = "";
$wRHPROVIDER2 = "";
$RHPROVIDER2_PREFIX = "";
$wRHPROVIDER2_PREFIX = "";
foreach ($settings_xml->ENVIRONMENT as $environmentNode) {
foreach ($environmentNode->PROPERTY as $propertyNode) {
if (strtoupper($propertyNode['name']) === 'TYPEETS') {
$ENV_TYPEETS = trim($propertyNode['value']);
}
if (strtoupper($propertyNode['name']) === 'RHPROVIDER') {
$wRHPROVIDER = trim($propertyNode['value']);
}
if (strtoupper($propertyNode['name']) === 'RHPROVIDER2') {
$wRHPROVIDER2 = trim($propertyNode['value']);
}
if (strtoupper($propertyNode['name']) === 'RHPROVIDER_PREFIX') {
$wRHPROVIDER_PREFIX = str_replace('_', '', trim($propertyNode['value']));
}
if (strtoupper($propertyNode['name']) === 'RHPROVIDER2_PREFIX') {
$wRHPROVIDER2_PREFIX = str_replace('_', '',trim($propertyNode['value']));
}
}
}
switch (strtolower($wRHPROVIDER)) {
case 'shs' :
case 'sagex3' :
case 'sage100rh' :
case 'sagei7rh' :
case 'adonix' :
case 'quadrarh' :
case 'qsp' :
case 'sigems' :
case 'cegi' :
case 'icti_rh' :
$RHPROVIDER = strtoupper($wRHPROVIDER);
break;
default:
$RHPROVIDER = '';
}
if ($wRHPROVIDER2 !== '') {
switch (strtolower($wRHPROVIDER2)) {
case 'shs' :
case 'sagex3' :
case 'sage100rh' :
case 'sagei7rh' :
case 'adonix' :
case 'quadrarh' :
case 'qsp' :
case 'sigems' :
case 'cegi' :
$RHPROVIDER2 = strtoupper($wRHPROVIDER2);
break;
default:
$RHPROVIDER2 = '';
}
}
if ($RHPROVIDER === '') {
logErrorMsg("Prestataire $wRHPROVIDER non traité actuellement");
return false;
}
if ($RHPROVIDER2 === '') {
$RHPROVIDER_PREFIX = '';
$RHPROVIDER2_PREFIX = '';
}
else {
$RHPROVIDER_PREFIX = $wRHPROVIDER_PREFIX;
$RHPROVIDER2_PREFIX = $wRHPROVIDER2_PREFIX;
if ($RHPROVIDER_PREFIX === '') {
$RHPROVIDER_PREFIX = substr($RHPROVIDER,0,2);
}
$RHPROVIDER_PREFIX = '_' . $RHPROVIDER_PREFIX;
if ($RHPROVIDER2_PREFIX === '') {
$RHPROVIDER2_PREFIX = substr($RHPROVIDER2,0,2);
}
$RHPROVIDER2_PREFIX = '_' . $RHPROVIDER2_PREFIX;
}
// Chargement des paramètres et connexion BD
$iCTI_connexion = Database2Factory::getInstance(Environnement::PROVIDER_CTI);
$ret = $iCTI_connexion->connect();
if (!$ret) {
logErrorMsg("La connexion PostgreSQL iCTI a échoué");
return false;
}
return true;
}
function iCTI_disconnect() {
global $iCTI_connexion;
$iCTI_connexion->close();
}