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.
 
 
 

338 lines
10 KiB

<?php
$MODULE="compta";
$TITLE="Récupération comptabilité";
$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/iCTI_batch_common.php" );
require_once("../../../modules/base/php/lib/cti/Database/Database2Factory.class.php");
require_once("../../../modules/base/php/lib/cti/Environnement/Environnement.class.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");
global $ENDSTATUS;
global $iCTI_connexion;
global $cti_args;
global $COMPTAPROVIDER;
global $COMPTAPROVIDER2;
global $COMPTAPROVIDER_PREFIX;
global $COMPTAPROVIDER2_PREFIX;
global $ENV_TYPEETS;
global $nbE;
global $ENV_COMPTA_ANNEEDEBUT;
logStartMsg();
// Arguments transmis ?
$cti_args = new CTI_Args_class();
$cti_args->checkArgs();
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');
}
$exitCode = extraction_prod($COMPTAPROVIDER);
if($exitCode == 0 || $cti_args->args["-f"]) {
extraction_environnement($COMPTAPROVIDER, $COMPTAPROVIDER_PREFIX, 0);
}
// Déconnexion BD
$iCTI_connexion->close();
}
// nettoyage du cache
logInfoMsg("Nettoyage cache");
cleanAllCache("iCTI_compta", TRUE);
logEndMsg();
function extraction_prod($COMPTAPROVIDER_check) {
global $cti_args;
// Pas d'aspiration sur import depuis autre environnement
if ($COMPTAPROVIDER_check == "ICTI_COMPTA") {
return;
}
if ($cti_args->args["-u"] || $cti_args->args["--prod-update"]) {
if ($cti_args->args["-noactualizeprod"]) {
logInfoMsg("CONTROLE REPLICATION BASE DE DONNEES PRODUCTION $COMPTAPROVIDER_check");
$prodhm_exe = realpath("../../../prodsgbd/iCTI_synchronize_prodsgbd_check.exe");
$extractCmd = "$prodhm_exe -p $COMPTAPROVIDER_check -m compta";
$return = exec($extractCmd, $output_array);
foreach ($output_array as $output_line) {
if (trim($output_line) != "") {
echo PHP_EOL . $output_line;
}
}
// Sur QUADRACOMPTA, verifier egalement exercice précédent
if ($COMPTAPROVIDER_check == "QUADRACOMPTA") {
$COMPTAPROVIDER_checkP = $COMPTAPROVIDER_check . 'P';
logInfoMsg("Exercice précédent");
$prodhm_exe = realpath("../../../prodsgbd/iCTI_synchronize_prodsgbd_check.exe");
$extractCmd = "$prodhm_exe -p $COMPTAPROVIDER_checkP -m compta";
unset($output_array);
$return = exec($extractCmd, $output_array);
foreach ($output_array as $output_line) {
if (trim($output_line) != "") {
echo PHP_EOL . $output_line;
}
}
}
logInfoMsg("FIN CONTROLE REPLICATION BASE DE DONNEES PRODUCTION $COMPTAPROVIDER_check");
}
else {
logInfoMsg("REPLICATION BASE DE DONNEES PRODUCTION $COMPTAPROVIDER_check");
$prodhm_exe = realpath("../../../prodsgbd/iCTI_synchronize_prodsgbd_put.exe");
$extractCmd = "$prodhm_exe -p $COMPTAPROVIDER_check -m compta";
$return = exec($extractCmd, $output_array);
foreach ($output_array as $output_line) {
if (trim($output_line) != "") {
echo PHP_EOL . $output_line;
}
}
// Sur QUADRACOMPTA, récupérer egalement exercice précédent
if ($COMPTAPROVIDER_check == "QUADRACOMPTA") {
$COMPTAPROVIDER_checkP = $COMPTAPROVIDER_check . 'P';
logInfoMsg("Exercice précédent");
$prodhm_exe = realpath("../../../prodsgbd/iCTI_synchronize_prodsgbd_put.exe");
$extractCmd = "$prodhm_exe -p $COMPTAPROVIDER_checkP -m compta";
unset($output_array);
$return = exec($extractCmd, $output_array);
foreach ($output_array as $output_line) {
if (trim($output_line) != "") {
echo PHP_EOL . $output_line;
}
}
}
logInfoMsg("FIN REPLICATION BASE DE DONNEES PRODUCTION $COMPTAPROVIDER_check");
return $return;
}
}
else {
if ($COMPTAPROVIDER_check != "QUADRACOMPTA") return checkLoadedData($COMPTAPROVIDER_check,'compta');
else return checkLoadedData($COMPTAPROVIDER_check,'compta') + checkLoadedData($COMPTAPROVIDER_check.'P','compta');
}
}
// récupération historique
function extraction_environnement($COMPTAPROVIDER, $COMPTAPROVIDER_PREFIX, $COMPTAPROVIDER_OID) {
global $iCTI_connexion;
global $ENV_TYPEETS;
global $ENV_COMPTA_ANNEEDEBUT;
global $cti_args;
logInfoMsg("RECUPERATION DE LA PRODUCTION $COMPTAPROVIDER");
// Paramètres shs
$file = "../../../settings/databases/$COMPTAPROVIDER.XML";
$xml = simplexml_load_string(file_get_contents($file));
$DB_pmsischema = trim($xml['pmsilib']);
$DB_activiteschema = trim($xml['admlib']);
$DB_comptaschema = trim($xml['comptalib']);
$SAGEX3_idSites = $xml['idSites'];
$SAGEX3_idSites = str_replace("'"," ",$SAGEX3_idSites);
$QSP_idEtablissement = $xml['idEtablissement'];
$ETAB = trim($xml['idEtab_compta']);
$SITES = trim($xml['idSites_compta']);
// Chargement requetes SQL
$environmentVars=array();
$environmentVars["PMSISCHEMA"] = $DB_pmsischema;
$environmentVars["ACTIVITESCHEMA"] = $DB_activiteschema;
$environmentVars["COMPTASCHEMA"] = $DB_comptaschema;
$environmentVars["SAGEX3_SITES"] = $SAGEX3_idSites;
$environmentVars["QSP_ETAB"] = $QSP_idEtablissement;
$environmentVars["ETAB"] = $ETAB;
$environmentVars["SITES"] = $SITES;
$environmentVars["ENV_TYPEETS"] = $ENV_TYPEETS;
$environmentVars["ENV_COMPTA_ANNEEDEBUT"] = $ENV_COMPTA_ANNEEDEBUT;
if (strtolower($COMPTAPROVIDER) === 'icti_compta') {
$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_compta_SHARE.XML",$iCTI_connexion,$environmentVars,$sqlOptions);
$cti_sqlStatements_provider = new CTI_SqlStatements_class("iCTI_import_compta_$COMPTAPROVIDER.XML",$iCTI_connexion,$environmentVars,$sqlOptions);
// Raz forcé le samedi
if (date("w") == 6) {
$cti_args->args["-raz"] = "ONLYKEY";
}
if ($cti_args->args["-raz"]) {
//$cti_sqlStatements_share->executeStatementsNode("RAZ");
}
$cti_sqlStatements_provider->executeStatementsNode("PARAM");
$cti_sqlStatements_provider->executeStatementsNode("INIT");
$cti_sqlStatements_provider->executeStatementsNode("ECRITURES");
$cti_sqlStatements_provider->executeStatementsNode("CHIFFRIER");
$cti_sqlStatements_provider->executeStatementsNode("POST");
$cti_sqlStatements_share->environmentVars = $cti_sqlStatements_provider->environmentVars;
$cti_sqlStatements_share->executeStatementsNode("POST");
$cti_sqlStatements_share->executeStatementsNode("VACUUM");
logInfoMsg("FIN RECUPERATION DE LA PRODUCTION $COMPTAPROVIDER");
}
function iCTI_connect() {
global $iCTI_connexion;
global $iCTI_cache;
global $ENV_TYPEETS;
global $COMPTAPROVIDER;
global $COMPTAPROVIDER2;
global $COMPTAPROVIDER_PREFIX;
global $COMPTAPROVIDER2_PREFIX;
global $ENV_COMPTA_ANNEEDEBUT;
$iCTI_connexion = FALSE;
$file = "../../../settings/settings.XML";
$settings_xml = simplexml_load_file($file);
$COMPTAPROVIDER = "";
$wCOMPTAPROVIDER = "";
$COMPTAPROVIDER_PREFIX = "";
$wCOMPTAPROVIDER_PREFIX = "";
$COMPTAPROVIDER2 = "";
$wCOMPTAPROVIDER2 = "";
$COMPTAPROVIDER2_PREFIX = "";
$wCOMPTAPROVIDER2_PREFIX = "";
// Par défaut Année en cours - 5
$ENV_COMPTA_ANNEEDEBUT = date("Y") - 5;
foreach ($settings_xml->ENVIRONMENT as $environmentNode) {
foreach ($environmentNode->PROPERTY as $propertyNode) {
if ($propertyNode['name'] == 'TYPEETS') {
$ENV_TYPEETS = trim($propertyNode['value']);
}
if ($propertyNode['name'] == 'COMPTAPROVIDER') {
$wCOMPTAPROVIDER = strtoupper(trim($propertyNode['value']));
}
if ($propertyNode['name'] == 'COMPTAPROVIDER2') {
$wCOMPTAPROVIDER2 = strtoupper(trim($propertyNode['value']));
}
if ($propertyNode['name'] == 'COMPTAPROVIDER_PREFIX') {
$wCOMPTAPROVIDER_PREFIX = strtoupper(trim($propertyNode['value']));
}
if ($propertyNode['name'] == 'COMPTAPROVIDER2_PREFIX') {
$wCOMPTAPROVIDER2_PREFIX = strtoupper(trim($propertyNode['value']));
}
if ($propertyNode['name'] == 'OPTCOMPTA_ANNEEDEBUT') {
if (substr($propertyNode['value'], 0, 1) === 'A') {
$nbAnnee = substr($propertyNode['value'], 1);
$ENV_COMPTA_ANNEEDEBUT = date("Y") - intval($nbAnnee);
} else if ($propertyNode['value'] != "" && strlen($propertyNode['value']) === 4) {
$ENV_COMPTA_ANNEEDEBUT = $propertyNode['value'];
}
}
}
}
$listPrestaCompta = array(
'SHS',
'SAGEX3',
'SAGE100COMPTA',
'SAGEI7COMPTA',
'ADONIX',
'QUADRACOMPTA',
'QSP',
'SIGEMS',
'CEGI',
'ACROPOLE',
'CEGID',
'ICTI_COMPTA',
'TALENTIA_FINANCE',
'TALENTIA_FINANCE_CSV',
'ACD',
'DIVALTO'
);
$listPrestaCompta = array_map('strtoupper', $listPrestaCompta);
if (in_array($wCOMPTAPROVIDER, $listPrestaCompta)){
$COMPTAPROVIDER = $wCOMPTAPROVIDER;
}
if ($wCOMPTAPROVIDER2 != "") {
if (in_array($wCOMPTAPROVIDER2, $listPrestaCompta)) {
$COMPTAPROVIDER2 = $wCOMPTAPROVIDER2;
}
}
if ($COMPTAPROVIDER == "") {
logErrorMsg("Prestataire $wCOMPTAPROVIDER non traité actuellement");
return FALSE;
}
if ($COMPTAPROVIDER2 == "") {
$COMPTAPROVIDER_PREFIX = "";
$COMPTAPROVIDER2_PREFIX = "";
}
else {
$COMPTAPROVIDER_PREFIX = $wCOMPTAPROVIDER_PREFIX;
$COMPTAPROVIDER2_PREFIX = $wCOMPTAPROVIDER2_PREFIX;
if ($COMPTAPROVIDER_PREFIX == "") {
$COMPTAPROVIDER_PREFIX = substr($COMPTAPROVIDER,0,2);
}
$COMPTAPROVIDER_PREFIX = "_" . $COMPTAPROVIDER_PREFIX;
if ($COMPTAPROVIDER2_PREFIX == "") {
$COMPTAPROVIDER2_PREFIX = substr($COMPTAPROVIDER2,0,2);
}
$COMPTAPROVIDER2_PREFIX = "_" . $COMPTAPROVIDER2_PREFIX;
}
$iCTI_connexion = Database2Factory::getInstance(Environnement::PROVIDER_CTI);
$ret = $iCTI_connexion->connect();
if (! $ret) {
logErrorMsg("La connexion PostgreSQL iCTI a échoué");
return FALSE;
}
return $ret;
}
?>