<?php
|
|
//Référence les fonctions utiles pour les consolidés
|
|
require_once("../../../modules/pmsi/import_rss_rsf/utils/import_functions.php");
|
|
|
|
global $environmentVars;
|
|
global $iCTI_connexion;
|
|
|
|
////////////////////// ANNEE ET MOIS //////////////////////
|
|
|
|
/**
|
|
* Transforme une année A3 en 202301
|
|
* @param string $year_AX doit être du type A2 ou 2023
|
|
* @return int
|
|
*/
|
|
function transform_AX_in_annee_mois($year_AX)
|
|
{
|
|
$annee = date("Y") - 2;
|
|
|
|
if (empty($year_AX)) {
|
|
return intval($annee . "01");
|
|
}
|
|
|
|
if (is_year_AX($year_AX)) {
|
|
//année en cours moins nombre années demandées
|
|
$annee = transform_AX_in_year($year_AX);
|
|
}
|
|
|
|
if (strlen($year_AX) === 4 && intval($year_AX)) {
|
|
// si années écrit en dur
|
|
$annee = $year_AX;
|
|
}
|
|
|
|
return intval($annee . "01");
|
|
}
|
|
|
|
/**
|
|
* Détermine si le paramètre est du type '202304'
|
|
* @return bool
|
|
*/
|
|
function is_annee_mois($annee_mois)
|
|
{
|
|
$annee_mois = trim($annee_mois);
|
|
|
|
if (strlen($annee_mois) <> 6) {
|
|
return false;
|
|
}
|
|
$annee_now = date("Y");
|
|
$annee = intval(substr($annee_mois, 0, 4));
|
|
$mois = intval(substr($annee_mois, -2));
|
|
|
|
if ($mois < 1 || $mois > 12) {
|
|
return false;
|
|
}
|
|
if ($annee > $annee_now) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Détermine si le paramètre est une chaine de charatère du type '202304, 202305, 202306'
|
|
*/
|
|
function is_annee_mois_array($mois_forces)
|
|
{
|
|
$annee_mois_array = explode(",", $mois_forces);
|
|
|
|
foreach ($annee_mois_array as $annee_mois) {
|
|
if (!is_annee_mois($annee_mois)) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|
|
function find_min_year($years)
|
|
{
|
|
$years_array = explode(',', $years);
|
|
|
|
function cast_to_int($year)
|
|
{
|
|
return intval($year);
|
|
};
|
|
|
|
$years_int = array_map('cast_to_int', $years_array);
|
|
return min($years_int);
|
|
}
|
|
|
|
|
|
/**
|
|
* Crée la liste au format string des annees mois '202201, 202202, 202203'
|
|
* des séjours présent après le parametre $annee_mois_force
|
|
*/
|
|
function get_list_annee_mois($annee_mois_force)
|
|
{
|
|
|
|
global $iCTI_connexion;
|
|
|
|
$mois_sortie_concat = "0";
|
|
$sqlcmd = " WITH w_mois AS
|
|
(
|
|
SELECT mois
|
|
FROM base.p_calendrier
|
|
WHERE mois BETWEEN $annee_mois_force AND TO_CHAR(NOW(), 'YYYYMM')
|
|
GROUP BY mois
|
|
ORDER BY mois
|
|
)
|
|
SELECT base.cti_group_concat(mois) AS mois_sortie_concat
|
|
FROM w_mois;";
|
|
|
|
$record = pg_fetch_array($iCTI_connexion->query($sqlcmd));
|
|
if ($record) {
|
|
$mois_sortie_concat = $record["mois_sortie_concat"];
|
|
}
|
|
|
|
|
|
return $mois_sortie_concat;
|
|
}
|
|
|
|
|
|
////////////////////// PARAMETRES DE COMMANDE //////////////////////
|
|
|
|
|
|
function create_mois_forces($cti_args)
|
|
{
|
|
|
|
// Paramètre --annee-mois-force
|
|
if (isset($cti_args->args["--annee-mois-force"]) || isset($cti_args->args["-af"])) {
|
|
$annee_mois_force = empty($cti_args->args["--annee-mois-force"]) ? $cti_args->args["-af"] : $cti_args->args["--annee-mois-force"];
|
|
|
|
if (is_year_AX($annee_mois_force)) {
|
|
$annee_mois_force = transform_AX_in_year($annee_mois_force) . "01";
|
|
}
|
|
|
|
if (!is_annee_mois($annee_mois_force)) {
|
|
logErrorMsg("L'année $annee_mois_force en paramètre de --annee-mois-force doit être du type: 202301 ou A3");
|
|
die_conso();
|
|
}
|
|
|
|
return get_list_annee_mois($annee_mois_force);
|
|
}
|
|
|
|
// Paramètre --moisforces
|
|
if (isset($cti_args->args["--moisforces"]) || isset($cti_args->args["-mf"])) {
|
|
$moisforces = empty($cti_args->args["--moisforces"]) ? $cti_args->args["-mf"] : $cti_args->args["--moisforces"];
|
|
|
|
if (!is_annee_mois_array($moisforces)) {
|
|
logErrorMsg("L'année en paramètre de -moisforces doit être du type: 202301");
|
|
die_conso();
|
|
}
|
|
|
|
return $moisforces;
|
|
}
|
|
|
|
return "0";
|
|
}
|
|
|
|
////////////////////// DATABASE //////////////////////
|
|
|
|
function nettoyage_sejours_bdd($year_to_delete){
|
|
$year_min = date("Y") - 2;
|
|
if ($year_to_delete && $year_to_delete <= $year_min) {
|
|
nettoyer_sejours_jusqua($year_to_delete);
|
|
} else {
|
|
nettoyer_sejours();
|
|
}
|
|
|
|
}
|
|
|
|
function die_conso()
|
|
{
|
|
logErrorMsg("Arrêt de la génération");
|
|
die();
|
|
}
|
|
|
|
function iCTI_disconnect()
|
|
{
|
|
|
|
global $iCTI_connexion;
|
|
|
|
$iCTI_connexion->close();
|
|
}
|