<?php
/****************************************************************************************
 * SMI (Services Maintenance Interventions) est une gestion libre de maintenance et de SAV
 *
 * Version 1.0.2
 *
 * Copyright (C) 2006-2015  Sylvain FATOME
 * This program is free software; you can redistribute it and/or modify it under the terms
 * of the GNU General Public License as published by the Free Software Foundation;
 * either version 2 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with this program
 * (in the directory docs);
 * if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA  02110-1301, USA.
 *
 * Contact : galawa@free.fr
 *
 * Web : http://smi.no-ip.org
 ****************************************************************************************/


// Vérification des tentatives de hack
$pos = strpos($_SERVER['PHP_SELF'], "inc.php");
if ($pos === FALSE)
    $ok_inc = TRUE;
else
    $ok_inc = FALSE;
if ($ok_inc == FALSE) header("Location: ../index.php");

/****************************************/
/* Fonctions pour les accès aux Relevés */
/* et fichiers rattachés                */
/****************************************/


/**
 * Lecture d'un enregistrement Relevé
 *
 * @param $code
 * @param bool $open
 * @return array|null
 */
function lit_enr_rel($code, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech2 = "SELECT * FROM `" . TBREL . "` WHERE `rel_code` = '" . $db->escape($code) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($open == TRUE)
        $db->disconnect();

    return $row2;
}

/**
 * Vérification du nombre de dossiers de Relevés sur une agence
 *
 * @param $agence
 * @param bool $open
 * @return null
 */
function nb_rela($agence, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    if ($agence <> "")
        $rexist = "SELECT COUNT(*) FROM `" . TBREL . "` WHERE `rel_codeage` = '" . $db->escape($agence) . "'";
    else
        $rexist = "SELECT COUNT(*) FROM `" . TBREL . "`";
    $nbexist = $db->get_var($rexist);
    if ($open == TRUE)
        $db->disconnect();

    return $nbexist;
}

/**
 * Lecture d'un enregistrement Relevé à partir du code client
 *
 * @param $codecli
 * @param bool $open
 * @return array|null
 */
function lit_enr_rel_cli($codecli, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech2 = "SELECT * FROM `" . TBREL . "` WHERE `rel_codecli` = '" . $db->escape($codecli) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($open == TRUE)
        $db->disconnect();

    return $row2;
}

/**
 * Donne le numéro de Relevé à partir du code client
 *
 * @param $codecli
 * @param bool $open
 * @return string
 */
function num_rel_cli($codecli, $open = TRUE)
{
    global
    $db;
    $num_rel = "";

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech2 = "SELECT rel_code FROM `" . TBREL . "` WHERE `rel_codecli` = '" . $db->escape($codecli) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($row2)
        $num_rel = $row2["rel_code"];
    if ($open == TRUE)
        $db->disconnect();

    return $num_rel;
}

/**
 * Vérifie si un dossier Relevé est utilisé dans un Relevé licence
 *
 * @param $coderel
 * @param bool $open
 * @return bool
 */
function exist_rel_in_rlic($coderel, $open = FALSE)
{
    global
    $db;
    $exist = FALSE;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rexist = "SELECT COUNT(*) FROM `" . TBRLIC . "` WHERE `rlic_coderel` = '" . $db->escape($coderel) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        $exist = TRUE;
    if ($open == TRUE)
        $db->disconnect();

    return $exist;
}

/**
 * Vérifie si un dossier Relevé est utilisé dans un Relevé produit
 *
 * @param $coderel
 * @param bool $open
 * @return bool
 */
function exist_rel_in_rpdt($coderel, $open = TRUE)
{
    global
    $db;
    $exist = FALSE;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rexist = "SELECT COUNT(*) FROM `" . TBRPDT . "` WHERE `rpdt_coderel` = '" . $db->escape($coderel) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        $exist = TRUE;
    if ($open == TRUE)
        $db->disconnect();

    return $exist;
}

/**
 * Lecture d'un enregistrement Relevé licence
 *
 * @param $code
 * @param bool $open
 * @return array|null
 */
function lit_enr_rlic($code, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech2 = "SELECT * FROM `" . TBRLIC . "` WHERE `rlic_code` = '" . $db->escape($code) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($open == TRUE)
        $db->disconnect();

    return $row2;
}

/**
 * Vérification du nombre de Relevés licences sur une agence
 *
 * @param $agence
 * @param bool $open
 * @return null
 */
function nb_rlica($agence, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    if ($agence <> "")
        $rexist = "SELECT COUNT(*) FROM `" . TBRLIC . "` WHERE `rlic_codeage` = '" . $db->escape($agence) . "'";
    else
        $rexist = "SELECT COUNT(*) FROM `" . TBRLIC . "`";
    $nbexist = $db->get_var($rexist);
    if ($open == TRUE)
        $db->disconnect();

    return $nbexist;
}

/**
 * Vérification le nombre de fois où est utilisé un Relevé licence dans des fiches Relevés matériels d'un client
 *
 * @param $client
 * @param $coderlic
 * @param bool $open
 * @return mixed
 */
function nb_rlic($client, $coderlic, $open = TRUE)
{
    global
    $db;


    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rexist = "SELECT rpdt_coderlic FROM `" . TBRPDT . "` WHERE `rpdt_codecli` = '" . $db->escape($client) . "'";
    $rows = $db->get_results($rexist, ARRAY_A);
    if (($rows) AND (count($rows) > 0)) {
        foreach ($rows as $row) {
            $row = encode_str($row);
            if (strpos($row["rpdt_coderlic"], $coderlic) !== false)
                $nbexist++;
        }
    }
    if ($open == TRUE)
        $db->disconnect();

    return $nbexist;
}

/**
 * Vérifie s'il existe des Relevés de licences actifs pour un client particulier
 * Sur une liste de site donnée (si vide, on n'en tient pas compte)
 * $site : on prend aussi le site principal
 *
 * @param $codecli
 * @param string $lstsites
 * @param int $sitep
 * @param bool $open
 * @return bool
 */
function exist_rlic_actif($codecli, $lstsites = '', $sitep = 1, $open = TRUE)
{
    global
    $db;
    $exist = FALSE;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech = "SELECT COUNT(rlic_id) FROM `" . TBRLIC . "` WHERE `rlic_codecli` = '" . $db->escape($codecli) . "' AND `rlic_dateout` = '0000-00-00'";

    /*** SITES ***/

    $rech .= " AND (";

    // Si site principal, on prend aussi les produits sur ce site
    if ($sitep == 1)
        $rech .= " `rlic_idsite` = '0'";


    $tab_sites = [];
    if (trim($lstsites) <> '') {
        $tab_sites = explode('-', $lstsites);
        // On ne prend que les produits "tous sites" ou des sites choisis sur le contrat
        if ($sitep == 1)
            $rech .= " OR ";
        if (count($tab_sites) > 1) {
            foreach ($tab_sites as $value) {
                $rech .= "`rlic_idsite` = '" . $value . "' OR ";
            }
            $rech = substr($rech, 0, strlen($rech) - 4);
        } else
            $rech .= "`rlic_idsite` = '" . $tab_sites[0] . "'";
    }

    // On inclus les produit "tous sites"
    if (($sitep == 1) OR (count($tab_sites) > 0))
        $rech .= " OR ";
    $rech .= "`rlic_idsite` = '-1'";
    $rech .= ")";
    $nbres = $db->get_var($rech);
    if ($nbres > 0)
        $exist = TRUE;
    if ($open == TRUE)
        $db->disconnect();

    return $exist;
}

/**
 * Retourne un tableau des licences actives et sélectionnables pour un contrat en particulier
 * Sur une liste de sites donnée (si vide, on n'en tient pas compte)
 * $sitep : on prend aussi le site principal
 *
 * @param $co
 * @param $idannexe
 * @param string $lstsites
 * @param int $sitep
 * @param bool $open
 * @return array
 */
function cre_tab_rlic_aselect_coa($co,$idannexe,$lstsites = '', $sitep = 1, $open = TRUE)
{
    global
    $db;
    $tab_actif = [];
    $tab_res = [];

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);


    /*** On récupère le code client du contrat ***/
    $rech = "SELECT cocl_codecli FROM `" . TBCOCL . "` WHERE `cocl_code` = '" . $db->escape($co) . "'";
    $row = $db->get_row($rech, ARRAY_A);
    if ($row)
       extract($row);

    /*** On récupère le code annexe ***/
    $rech = "SELECT cocla_code FROM `" . TBCOCLA . "` WHERE `cocla_id` = '" . $idannexe . "'";
    $row = $db->get_row($rech, ARRAY_A);
    if ($row)
        extract($row);

    /***  On construit d'abord la liste des licences actives ***/
    $rech = "SELECT rlic_code FROM `" . TBRLIC . "` WHERE `rlic_codecli` = '" . $db->escape($cocl_codecli) . "' AND `rlic_dateout` = '0000-00-00'";

    /*** SITES ***/

    $rech .= " AND (";

    // Si site principal, on prend aussi les produits sur ce site
    if ($sitep == 1)
        $rech .= " `rlic_idsite` = '0'";


    $tab_sites = [];
    if (trim($lstsites) <> '') {
        $tab_sites = explode('-', $lstsites);
        // On ne prend que les produits "tous sites" ou des sites choisis sur le contrat
        if ($sitep == 1)
            $rech .= " OR ";
        if (count($tab_sites) > 1) {
            foreach ($tab_sites as $value) {
                $rech .= "`rlic_idsite` = '" . $value . "' OR ";
            }
            $rech = substr($rech, 0, strlen($rech) - 4);
        } else
            $rech .= "`rlic_idsite` = '" . $tab_sites[0] . "'";
    }

    // On inclus les produit "tous sites"
    if (($sitep == 1) OR (count($tab_sites) > 0))
        $rech .= " OR ";
    $rech .= "`rlic_idsite` = '-1'";
    $rech .= ")";
    $rows = $db->get_results($rech, ARRAY_A);
    if ($rows) {
        foreach ($rows as $row) {
            extract($row);
            $tab_actif[] = $rlic_code;
        }
    }

    /***  On vérifie si la licence est déjà utilisée dans le contrat ou une de ses annexes ***/
    if (count($tab_actif)>0)
    {
        foreach ($tab_actif as $value)
        {
            $rech = "SELECT count(cocl_id) FROM `" . TBCOCL . "` WHERE `cocl_code` = '" . $db->escape($co) . "' AND   `cocl_coderlp` LIKE '%".$value."%'";
            $nbres = $db->get_var($rech);
            if ($nbres == 0) // Pas utilisé dans contrat principal...dans annexe ?
            {
                $rech2 = "SELECT count(cocla_id) FROM `" . TBCOCLA . "` WHERE `cocla_codecocl` = '" . $db->escape($co) . "' AND `cocla_code` <> '".$cocla_code."' AND  `cocla_coderlp` LIKE '%".$value."%'";
                $nbres2 = $db->get_var($rech2);
                if ($nbres2 == 0) // Pas utilisé dans annexe : sélectionnable
                    $tab_res[] = $value;
            }
        }
    }
    if ($open == TRUE)
        $db->disconnect();

    return $tab_res;
}

/**
 * Vérifie si un Relevé licence est présent dans un Relevé de problème
 *
 * @param $coderlic
 * @param bool $open
 * @return bool
 */
function exist_rlic_in_rpbm($coderlic, $open = TRUE)
{
    global
    $db;
    $exist = FALSE;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rexist = "SELECT COUNT(*) FROM `" . TBRPBM . "` WHERE `rpbm_coderlp` = '" . $db->escape($coderlic) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        $exist = TRUE;
    if ($open == TRUE)
        $db->disconnect();

    return $exist;
}

/**
 * Vérifie si un Relevé licence est présent dans un Relevé de problème non clôt
 *
 * @param $coderlic
 * @param bool $open
 * @return bool
 */
function exist_rlic_in_rpbm_actif($coderlic, $open = TRUE)
{
    global
    $db;
    $exist = FALSE;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rexist = "SELECT COUNT(*) FROM `" . TBRPBM . "` WHERE `rpbm_coderlp` = '" . $db->escape($coderlic) . "' AND `rpbm_datett` = '0000-00-00'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        $exist = TRUE;
    if ($open == TRUE)
        $db->disconnect();

    return $exist;
}

/**
 * Vérifie si un Relevé licence est présent dans une fiche Relevé de matériel d'un client
 *
 * @param $client
 * @param $coderlic
 * @param bool $open
 * @return bool
 */
function exist_rlic_in_rpdt($client, $coderlic, $open = TRUE)
{
    global
    $db;
    $exist = FALSE;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rexist = "SELECT rpdt_coderlic FROM `" . TBRPDT . "` WHERE `rpdt_codecli` = '" . $db->escape($client) . "'";
    $rows = $db->get_results($rexist, ARRAY_A);
    if (($rows) AND (count($rows) > 0)) {
        foreach ($rows as $row) {
            $row = encode_str($row);
            if (strpos($row["rpdt_coderlic"], $coderlic) !== false) {
                $exist = TRUE;
                break;
            }
        }
    }
    if ($open == TRUE)
        $db->disconnect();

    return $exist;
}

/**
 * Vérifie si un Relevé licence est présent dans une fiche Relevé de matériel ACTIVE d'un client
 *
 * @param $client
 * @param $coderlic
 * @param bool $open
 * @return bool
 */
function exist_rlic_in_rpdt_actif($client, $coderlic, $open = TRUE)
{
    global
    $db;
    $exist = FALSE;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rexist = "SELECT rpdt_coderlic FROM `" . TBRPDT . "` WHERE `rpdt_codecli` = '" . $db->escape($client) . "' AND `rpdt_dateout` ='0000-00-00'";
    $rows = $db->get_results($rexist, ARRAY_A);
    if (($rows) AND (count($rows) > 0)) {
        foreach ($rows as $row) {
            $row = encode_str($row);
            if (strpos($row["rpdt_coderlic"], $coderlic) !== false) {
                $exist = TRUE;
                break;
            }
        }
    }
    if ($open == TRUE)
        $db->disconnect();

    return $exist;
}

/**
 * Retourne un tableau des licences sélectionnables pour une liste de sites donnés
 * $tab_sites_cocl : tableau des sites du contrat
 * $tab_sites_cocla : tableau des sites des annexes au contrat
 *
 * @param $co
 * @param $cc
 * @param $sitep
 * @param $tab_sites_cocl
 * @param array $tab_sites_cocla
 * @param bool $open
 * @return array
 */
function cre_tab_rlic_cocl($co, $cc, $sitep, $tab_sites_cocl, $tab_sites_cocla = [], $open = TRUE)
{
    global
    $db;
    $tab_rlic_sel = [];

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);

    if ($co <> '') {
        // On récupère le champ des produits/licences rattachés sur le contrat
        $rech = "SELECT cocl_coderlp, cocl_codecli FROM `" . TBCOCL . "` WHERE `cocl_code` = '" . $db->escape($co) . "'";
        $row = $db->get_row($rech, ARRAY_A);
        if ($row)
            extract($row);
    } else
        $cocl_codecli = $cc;

    // On construit le tableau des produits sur les sites du contrat
    $rech = "SELECT rlic_code FROM `" . TBRLIC . "` WHERE `rlic_codecli` = '" . $cocl_codecli . "' AND `rlic_dateout` = '0000-00-00'";

    /*** SITES ***/

    $rech .= " AND (";

    // Si site principal, on prend aussi les produits sur ce site
    if ($sitep == 1)
        $rech .= " `rlic_idsite` = '0'";


    // On ne prend que les produits "tous sites" ou des sites choisis sur le contrat
    if (count($tab_sites_cocl) > 0) {
        if ($sitep == 1)
            $rech .= " OR ";
        if (count($tab_sites_cocl) > 1) {
            foreach ($tab_sites_cocl as $value) {
                $rech .= "`rlic_idsite` = '" . $value . "' OR ";
            }
            $rech = substr($rech, 0, strlen($rech) - 4);
        } else
            $rech .= "`rlic_idsite` = '" . $tab_sites_cocl[0] . "'";
    }

    // On ne prend que les produits "tous sites" ou des sites choisis sur les annexes
    if (count($tab_sites_cocla) > 0) {
        if ($sitep == 1)
            $rech .= " OR ";
        if (count($tab_sites_cocla) > 1) {
            foreach ($tab_sites_cocla as $value) {
                $rech .= "`rlic_idsite` = '" . $value . "' OR ";
            }
            $rech = substr($rech, 0, strlen($rech) - 4);
        } else
            $rech .= "`rlic_idsite` = '" . $tab_sites_cocla[0] . "'";
    }

    // On inclus les produit "tous sites"
    if (($sitep == 1) OR (count($tab_sites_cocl) > 0) OR (count($tab_sites_cocla) > 0))
        $rech .= " OR ";
    $rech .= "`rlic_idsite` = '-1'";
    $rech .= ")";

    $rech .= " ORDER BY `rlic_idsite`";

    $rows = $db->get_results($rech, ARRAY_A);
    if (($rows) AND (count($rows) > 0)) {
        foreach ($rows as $row) {
            $row = encode_str($row);
            extract($row);
            $tab_rlic_sel[] = $rlic_code;
        }
    }

    if ($open == TRUE)
        $db->disconnect();

    return $tab_rlic_sel;
}

/**
 * Retourne un tableau des licences sélectionnables pour une liste de sites donnés
 * $tab_sites_cocl : tableau des sites du contrat
 * $tab_sites_cocla : tableau des sites des annexes au contrat
 *
 * @param $id
 * @param $co
 * @param $sitep
 * @param $tab_sites_cocl
 * @param $tab_sites_cocla
 * @param bool $open
 * @return array
 */
function cre_tab_rlic_cocla($id, $co, $sitep, $tab_sites_cocl, $tab_sites_cocla, $open = TRUE)
{
    global
    $db;
    $tab_rlic_sel_coa = [];
    $tab_rlic_sel = [];

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);

    // On récupère le contrat associé
    if ($id <> 0) {
        $rech = "SELECT cocla_coderlp, cocla_codecocl FROM `" . TBCOCLA . "` WHERE `cocla_id` = '$id'";
        $row = $db->get_row($rech, ARRAY_A);
        if ($row) {
            extract($row);
            // Les produits possibles à coup s�r sont ceux de l'annexe
            if (trim($cocla_coderlp) <> "")
                $tab_rlic_sel = explode('-', $cocla_coderlp);


            // Création du tableau complet des produits possibles
            $tab_rlic_sel_coa = cre_tab_rlic_cocl($cocla_codecocl, $sitep, $tab_sites_cocl, $tab_sites_cocla, FALSE);
        }
    } else {
        if (trim($co) <> "")
            $tab_rlic_sel_coa = cre_tab_rlic_cocl($co, $sitep, $tab_sites_cocl, $tab_sites_cocla, FALSE);
    }
    if (count($tab_rlic_sel_coa) > 0) {
        foreach ($tab_rlic_sel_coa as $value) {
            // Déjà dans le tableau des produits de l'annexe : on ne fait rien
            // Sinon, quelques contrôles
            if (exist_in_array($value, $tab_rlic_sel) == FALSE) {
                $sel_ok = TRUE;

                // On récupère le contrat principal "couvre" déjà le produit
                $rech = "SELECT COUNT(cocl_id) FROM `" . TBCOCL . "` WHERE `cocl_coderlp` LIKE '%" . $value . "%'";
                $nbres = $db->get_var($rech);

                // Si pas de résultat : le produit est s�lectionnable dans l'annexe
                if ($nbres > 0)
                    $sel_ok = FALSE;

                // On vérifie si une annexe "couvre" déjà le produit
                $rech = "SELECT COUNT(cocla_id) FROM `" . TBCOCLA . "` WHERE `cocla_coderlp` LIKE '%" . $value . "%'";
                $nbres = $db->get_var($rech);

                // Si pas de résultat : le produit est s�lectionnable dans l'annexe
                if ($nbres > 0)
                    $sel_ok = FALSE;

                if ($sel_ok == TRUE)
                    $tab_rlic_sel[] = $value;
            }
        }
    }

    if ($open == TRUE)
        $db->disconnect();

    return $tab_rlic_sel;
}

/**
 * Lecture d'un enregistrement Relevé produit
 *
 * @param $code
 * @param bool $open
 * @return array|null
 */
function lit_enr_rpdt($code, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech2 = "SELECT * FROM `" . TBRPDT . "` WHERE `rpdt_code` = '" . $db->escape($code) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($open == TRUE)
        $db->disconnect();

    return $row2;
}

/**
 * Vérification du nombre de Relevés matériel sur une agence
 *
 * @param $agence
 * @param bool $open
 * @return null
 */
function nb_rpdta($agence, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    if ($agence <> "")
        $rexist = "SELECT COUNT(*) FROM `" . TBRPDT . "` WHERE `rpdt_codeage` = '" . $db->escape($agence) . "'";
    else
        $rexist = "SELECT COUNT(*) FROM `" . TBRPDT . "`";
    $nbexist = $db->get_var($rexist);
    if ($open == TRUE)
        $db->disconnect();

    return $nbexist;
}

/**
 * Vérification du nombre de Relevés matériel sur un client
 *
 * @param $client
 * @param bool $open
 * @return null
 */
function nb_rpdtc($client, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    if ($client <> "")
        $rexist = "SELECT COUNT(*) FROM `" . TBRPDT . "` WHERE `rpdt_codecli` = '" . $db->escape($client) . "'";
    $nbexist = $db->get_var($rexist);
    if ($open == TRUE)
        $db->disconnect();

    return $nbexist;
}

/**
 * Vérifie s'il existe des Relevés de produits actifs pour un client particulier
 *
 * @param $codecli
 * @param string $lstsites
 * @param int $sitep
 * @param bool $open
 * @return bool
 */
function exist_rpdt_actif($codecli, $lstsites = '', $sitep = 1, $open = TRUE)
{
    global
    $db;
    $exist = FALSE;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech = "SELECT COUNT(rpdt_id) FROM `" . TBRPDT . "` WHERE `rpdt_codecli` = '" . $db->escape($codecli) . "' AND `rpdt_dateout` = '0000-00-00'";
    /*** SITES ***/

    $rech .= " AND (";

    // Si site principal, on prend aussi les produits sur ce site
    if ($sitep == 1)
        $rech .= " `rpdt_idsite` = '0'";


    if (trim($lstsites) <> '') {
        $tab_sites = explode('-', $lstsites);
        // On ne prend que les produits "tous sites" ou des sites choisis sur le contrat
        if ($sitep == 1)
            $rech .= " OR ";
        if (count($tab_sites) > 1) {
            foreach ($tab_sites as $value) {
                $rech .= "`rpdt_idsite` = '" . $value . "' OR ";
            }
            $rech = substr($rech, 0, strlen($rech) - 4);
        } else
            $rech .= "`rpdt_idsite` = '" . $tab_sites[0] . "'";
    }

    // On inclus les produit "tous sites"
    if (($sitep == 1) OR (count($tab_sites) > 0))
        $rech .= " OR ";
    $rech .= "`rpdt_idsite` = '-1'";
    $rech .= ")";
    $nbres = $db->get_var($rech);
    if ($nbres > 0)
        $exist = TRUE;
    if ($open == TRUE)
        $db->disconnect();
    return $exist;
}

/**
 * Retourne un tableau des matériels actifs et sélectionnables pour un contrat en particulier
 * Sur une liste de sites donnée (si vide, on n'en tient pas compte)
 * $sitep : on prend aussi le site principal
 *
 * @param $co
 * @param $idannexe
 * @param string $lstsites
 * @param int $sitep
 * @param bool $open
 * @return array
 */
function cre_tab_rpdt_aselect_coa($co,$idannexe,$lstsites = '', $sitep = 1, $open = TRUE)
{
    global
    $db;
    $tab_actif = [];
    $tab_res = [];

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);


    /*** On récupère le code client du contrat ***/
    $rech = "SELECT cocl_codecli FROM `" . TBCOCL . "` WHERE `cocl_code` = '" . $db->escape($co) . "'";
    $row = $db->get_row($rech, ARRAY_A);
    if ($row)
        extract($row);

    /*** On récupère le code annexe ***/
    $rech = "SELECT cocla_code FROM `" . TBCOCLA . "` WHERE `cocla_id` = '" . $idannexe . "'";
    $row = $db->get_row($rech, ARRAY_A);
    if ($row)
        extract($row);


    /***  On construit d'abord la liste des matériels actifs ***/

    $rech = "SELECT rpdt_code FROM `" . TBRPDT . "` WHERE `rpdt_codecli` = '" . $db->escape($cocl_codecli) . "' AND `rpdt_dateout` = '0000-00-00'";

    /*** SITES ***/

    $rech .= " AND (";

    // Si site principal, on prend aussi les produits sur ce site
    if ($sitep == 1)
        $rech .= " `rpdt_idsite` = '0'";


    $tab_sites = [];
    if (trim($lstsites) <> '') {
        $tab_sites = explode('-', $lstsites);
        // On ne prend que les produits "tous sites" ou des sites choisis sur le contrat
        if ($sitep == 1)
            $rech .= " OR ";
        if (count($tab_sites) > 1) {
            foreach ($tab_sites as $value) {
                $rech .= "`rpdt_idsite` = '" . $value . "' OR ";
            }
            $rech = substr($rech, 0, strlen($rech) - 4);
        } else
            $rech .= "`rpdt_idsite` = '" . $tab_sites[0] . "'";
    }

    // On inclus les produit "tous sites"
    if (($sitep == 1) OR (count($tab_sites) > 0))
        $rech .= " OR ";
    $rech .= "`rpdt_idsite` = '-1'";
    $rech .= ")";
    $rows = $db->get_results($rech, ARRAY_A);
    if ($rows) {
        foreach ($rows as $row) {
            extract($row);
            $tab_actif[] = $rpdt_code;
        }
    }

    /***  On vérifie si la licence est déjà utilisée dans le contrat ou une de ses annexes ***/
    if (count($tab_actif)>0)
    {
        foreach ($tab_actif as $value)
        {
            $rech = "SELECT count(cocl_id) FROM `" . TBCOCL . "` WHERE `cocl_code` = '" . $db->escape($co) . "' AND   `cocl_coderlp` LIKE '%".$value."%'";
            $nbres = $db->get_var($rech);
            if ($nbres == 0) // Pas utilisé dans contrat principal...dans annexe ?
            {
                $rech2 = "SELECT count(cocla_id) FROM `" . TBCOCLA . "` WHERE `cocla_codecocl` = '" . $db->escape($co) . "' AND `cocla_code` <> '".$cocla_code."' AND  `cocla_coderlp` LIKE '%".$value."%'";
                $nbres2 = $db->get_var($rech2);
                if ($nbres2 == 0) // Pas utilisé dans annexe : sélectionnable
                    $tab_res[] = $value;
            }
        }
    }

    if ($open == TRUE)
        $db->disconnect();
    return $tab_res;
}

/**
 * Vérifie si un Relevé matériel est présent dans un Relevé de problème
 *
 * @param $coderpdt
 * @param bool $open
 * @return bool
 */
function exist_rpdt_in_rpbm($coderpdt, $open = TRUE)
{
    global
    $db;
    $exist = FALSE;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rexist = "SELECT COUNT(*) FROM `" . TBRPBM . "` WHERE `rpbm_coderlp` = '" . $db->escape($coderpdt) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        $exist = TRUE;
    if ($open == TRUE)
        $db->disconnect();

    return $exist;
}

/**
 * Vérifie si un Relevé matériel est présent dans un Relevé de problème non clôt
 *
 * @param $coderpdt
 * @param bool $open
 * @return bool
 */
function exist_rpdt_in_rpbm_actif($coderpdt, $open = TRUE)
{
    global
    $db;
    $exist = FALSE;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rexist = "SELECT COUNT(*) FROM `" . TBRPBM . "` WHERE `rpbm_coderlp` = '" . $db->escape($coderpdt) . "' AND `rpbm_datett` = '0000-00-00'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        $exist = TRUE;
    if ($open == TRUE)
        $db->disconnect();

    return $exist;
}

/**
 * Retourne un tableau des produits sélectionnables pour une liste de sites donnés
 * $tab_sites_cocl : tableau des sites du contrat
 * $tab_sites_cocla : tableau des sites des annexes au contrat
 *
 * @param $co
 * @param $cc
 * @param $sitep
 * @param $tab_sites_cocl
 * @param array $tab_sites_cocla
 * @param bool $open
 * @return array
 */
function cre_tab_rpdt_cocl($co, $cc, $sitep, $tab_sites_cocl, $tab_sites_cocla = [], $open = TRUE)
{
    global
    $db;
    $tab_rpdt_sel = [];

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);

    if ($co <> '') {
        // On récupère le champ des produits/licences rattachés sur le contrat
        $rech = "SELECT cocl_coderlp, cocl_codecli FROM `" . TBCOCL . "` WHERE `cocl_code` = '" . $db->escape($co) . "'";
        $row = $db->get_row($rech, ARRAY_A);
        if ($row)
            extract($row);
    } else
        $cocl_codecli = $cc;

    // On construit le tableau des produits sur les sites du contrat
    $rech = "SELECT rpdt_code FROM `" . TBRPDT . "` WHERE `rpdt_codecli` = '" . $cocl_codecli . "' AND `rpdt_dateout` = '0000-00-00'";

    /*** SITES ***/

    $rech .= " AND (";

    // Si site principal, on prend aussi les produits sur ce site
    if ($sitep == 1)
        $rech .= " `rpdt_idsite` = '0'";


    // On ne prend que les produits "tous sites" ou des sites choisis sur le contrat
    if (count($tab_sites_cocl) > 0) {
        if ($sitep == 1)
            $rech .= " OR ";
        if (count($tab_sites_cocl) > 1) {
            foreach ($tab_sites_cocl as $value) {
                $rech .= "`rpdt_idsite` = '" . $value . "' OR ";
            }
            $rech = substr($rech, 0, strlen($rech) - 4);
        } else
            $rech .= "`rpdt_idsite` = '" . $tab_sites_cocl[0] . "'";
    }

    // On ne prend que les produits "tous sites" ou des sites choisis sur les annexes
    if (count($tab_sites_cocla) > 0) {
        if ($sitep == 1)
            $rech .= " OR ";
        if (count($tab_sites_cocla) > 1) {
            foreach ($tab_sites_cocla as $value) {
                $rech .= "`rpdt_idsite` = '" . $value . "' OR ";
            }
            $rech = substr($rech, 0, strlen($rech) - 4);
        } else
            $rech .= "`rpdt_idsite` = '" . $tab_sites_cocla[0] . "'";
    }

    // On inclus les produit "tous sites"
    if (($sitep == 1) OR (count($tab_sites_cocl) > 0) OR (count($tab_sites_cocla) > 0))
        $rech .= " OR ";
    $rech .= "`rpdt_idsite` = '-1'";
    $rech .= ")";

    $rech .= " ORDER BY `rpdt_idsite`";

    $rows = $db->get_results($rech, ARRAY_A);
    if (($rows) AND (count($rows) > 0)) {
        foreach ($rows as $row) {
            $row = encode_str($row);
            extract($row);
            $tab_rpdt_sel[] = $rpdt_code;
        }
    }
    if ($open == TRUE)
        $db->disconnect();

    return $tab_rpdt_sel;
}

/**
 * Retourne un tableau des produits sélectionnables pour une liste de sites donnés
 * $tab_sites_cocl : tableau des sites du contrat
 * $tab_sites_cocla : tableau des sites des annexes au contrat
 *
 * @param $id
 * @param $co
 * @param $sitep
 * @param $tab_sites_cocl
 * @param $tab_sites_cocla
 * @param bool $open
 * @return array
 */
function cre_tab_rpdt_cocla($id, $co, $sitep, $tab_sites_cocl, $tab_sites_cocla, $open = TRUE)
{
    global
    $db;
    $tab_rpdt_sel_coa = [];
    $tab_rpdt_sel = [];

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);

    // On récupère le contrat associé
    if ($id <> 0) {
        $rech = "SELECT cocla_coderlp, cocla_codecocl FROM `" . TBCOCLA . "` WHERE `cocla_id` = '$id'";
        $row = $db->get_row($rech, ARRAY_A);
        if ($row) {
            extract($row);
            // Les produits possibles à coup sûr sont ceux de l'annexe
            if (trim($cocla_coderlp) <> "")
                $tab_rpdt_sel = explode('-', $cocla_coderlp);


            // Création du tableau complet des produits possibles
            $tab_rpdt_sel_coa = cre_tab_rpdt_cocl($cocla_codecocl, $sitep, $tab_sites_cocl, $tab_sites_cocla, FALSE);
        }
    } else {
        if (trim($co) <> "")
            $tab_rpdt_sel_coa = cre_tab_rpdt_cocl($co, $sitep, $tab_sites_cocl, $tab_sites_cocla, FALSE);
    }
    if (count($tab_rpdt_sel_coa) > 0) {
        foreach ($tab_rpdt_sel_coa as $value) {
            // Déjà dans le tableau des produits de l'annexe : on ne fait rien
            // Sinon, quelques contrôles
            if (exist_in_array($value, $tab_rpdt_sel) == FALSE) {
                $sel_ok = TRUE;

                // On récupère le contrat principal "couvre" déjà le produit
                $rech = "SELECT COUNT(cocl_id) FROM `" . TBCOCL . "` WHERE `cocl_coderlp` LIKE '%" . $value . "%'";
                $nbres = $db->get_var($rech);

                // Si pas de résultat : le produit est s�lectionnable dans l'annexe
                if ($nbres > 0)
                    $sel_ok = FALSE;

                // On vérifie si une annexe "couvre" déjà le produit
                $nbres = $db->get_var($rech);

                // Si pas de résultat : le produit est s�lectionnable dans l'annexe
                if ($nbres > 0)
                    $sel_ok = FALSE;

                if ($sel_ok == TRUE)
                    $tab_rpdt_sel[] = $value;
            }
        }
    }

    if ($open == TRUE)
        $db->disconnect();

    return $tab_rpdt_sel;
}

/**
 * Lecture d'un enregistrement déclaration problème
 *
 * @param $id
 * @param bool $open
 * @return array|null
 */
function lit_enr_rpbm($id, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech2 = "SELECT * FROM `" . TBRPBM . "` WHERE `rpbm_id` = '$id'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($open == TRUE)
        $db->disconnect();

    return $row2;
}

/**
 * Vérifie s'il existe des déclarations de problèmes pour une fiche Relevé licence ou matériel
 *
 * @param $code
 * @param bool $open
 * @return bool
 */
function exist_rpbm($code, $open = TRUE)
{
    global
    $db;
    $exist = FALSE;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rexist = "SELECT COUNT(*) FROM `" . TBRPBM . "` WHERE `rpbm_coderlp` = '" . $db->escape($code) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        $exist = TRUE;
    if ($open == TRUE)
        $db->disconnect();

    return $exist;
}

/**
 * Vérifie s'il existe des déclarations de problèmes non affectées (sauf code en cours)
 *
 * @param $mode
 * @param $codecli
 * @param $codeint
 * @param bool $open
 * @return bool
 */
function exist_rpbm_actif($mode, $codecli, $codeint, $open = TRUE)
{
    global
    $db;
    $exist = FALSE;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    if ($mode == "edit") // On est édition d'intervention
        $rexist = "SELECT COUNT(*) FROM `" . TBRPBM . "` WHERE `rpbm_codeint` = '" . $db->escape($codeint) . "' OR (`rpbm_codecli`= '" . $db->escape($codecli) . "' AND `rpbm_datett`= '0000-00-00' AND `rpbm_codeint` IS NULL)";
    if ($mode == "add") // On est en création d'intervention
        $rexist = "SELECT COUNT(*) FROM `" . TBRPBM . "` WHERE `rpbm_codecli`= '" . $db->escape($codecli) . "' AND `rpbm_codeint` IS NULL";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        $exist = TRUE;
    if ($open == TRUE)
        $db->disconnect();

    return $exist;
}

/**
 * Vérifie s'il existe des déclarations de problèmes non affectées (sauf code en cours) sur un site donné
 *
 * @param $mode
 * @param $codecli
 * @param $codeint
 * @param $site
 * @param bool $open
 * @return bool
 */
function exist_rpbm_actif_site($mode, $codecli, $codeint, $site, $open = TRUE)
{
    global
    $db;
    $exist = FALSE;
    $rech = '';
    $nbres = 0;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    switch ($mode) {
        // On est édition d'intervention
        case "edit" :
            $rech = "SELECT COUNT(*) FROM `" . TBRPBM . "` WHERE (`rpbm_codeint` = '" . $db->escape($codeint) . "' AND `rpbm_idsite`= '" . $site . "') OR (`rpbm_codecli`= '" . $db->escape($codecli) . "' AND `rpbm_idsite`= '" . $site . "' AND `rpbm_codeint` IS NULL)";
            break;
        // On est en création d'intervention
        case "add" :
            $rech = "SELECT COUNT(*) FROM `" . TBRPBM . "` WHERE `rpbm_codecli`= '" . $db->escape($codecli) . "' AND `rpbm_idsite`= '" . $site . "' AND `rpbm_codeint` IS NULL";
            break;
        default :
            break;
    }
    if ($rech <> '')
        $nbres = $db->get_var($rech);
    if ($nbres > 0)
        $exist = TRUE;
    if ($open == TRUE)
        $db->disconnect();

    return $exist;
}

/**
 * Vérifie s'il reste des problèmes à affecter sur une intervention
 * avec champ ID inth à zéro (cas où ajout)
 * ou comprenant l'ID en cours (cas où modification)
 *
 * @param $codeint
 * @param int $idinth
 * @param bool $open
 * @return bool
 */
function exist_rpbm_int($codeint, $idinth = 0, $open = TRUE)
{
    global
    $db;
    $exist = FALSE;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech = "SELECT COUNT(*) FROM `" . TBRPBM . "` WHERE `rpbm_codeint` = '" . $db->escape($codeint) . "' AND `rpbm_idinth` = 0";
    if ($idinth <> 0)
        $rech .= " OR `rpbm_idinth` = " . $idinth;
    $nbres = $db->get_var($rech);
    if ($nbres > 0)
        $exist = TRUE;
    if ($open == TRUE)
        $db->disconnect();

    return $exist;
}

// Types licences


/**
 * Vérification du nombre de types de licences
 * @param bool $open
 * @return null
 */
function nb_typlic($open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rexist = "SELECT COUNT(*) FROM `" . TBRLTL . "`";
    $nbexist = $db->get_var($rexist);
    if ($open == TRUE)
        $db->disconnect();

    return $nbexist;
}

/**
 * Lecture d'un enregistrement type licence
 *
 * @param $code
 * @param bool $open
 * @return array|null
 */
function lit_enr_rltl($code, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech2 = "SELECT * FROM `" . TBRLTL . "` WHERE rltl_code = '" . $db->escape($code) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($open == TRUE)
        $db->disconnect();

    return $row2;
}


// Etats Produits

/**
 * Vérification du nombre de types d'état produits
 *
 * @param bool $open
 * @return null
 */
function nb_etatpdt($open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rexist = "SELECT COUNT(*) FROM `" . TBRPET . "`";
    $nbexist = $db->get_var($rexist);
    if ($open == TRUE)
        $db->disconnect();

    return $nbexist;
}

// Catégories Produits

/**
 * Vérification du nombre de catégories produits (Relevés)
 *
 * @param bool $open
 * @return null
 */
function nb_catpdt($open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rexist = "SELECT COUNT(*) FROM `" . TBRPCAT . "`";
    $nbexist = $db->get_var($rexist);
    if ($open == TRUE)
        $db->disconnect();

    return $nbexist;
}

// Type accès Télémaintenance

/**
 * Lecture d'un enregistrement type accès télémaintenance
 *
 * @param $code
 * @param bool $open
 * @return array|null
 */
function lit_enr_tmta($code, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech2 = "SELECT * FROM `" . TBRLPTMTA . "` WHERE rlptmta_code = '" . $db->escape($code) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($open == TRUE)
        $db->disconnect();

    return $row2;
}


// Type licence

/**
 * Lecture d'un enregistrement type accès télémaintenance
 *
 * @param $code
 * @param bool $open
 * @return array|null
 */
function lit_enr_tl($code, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech2 = "SELECT * FROM `" . TBRLTL . "` WHERE rltl_code = '" . $db->escape($code) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($open == TRUE)
        $db->disconnect();

    return $row2;
}


// Media

/**
 * Vérification du nombre de types de médias
 *
 * @param bool $open
 * @return null
 */
function nb_media($open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rexist = "SELECT COUNT(*) FROM `" . TBRLMED . "`";
    $nbexist = $db->get_var($rexist);
    if ($open == TRUE)
        $db->disconnect();

    return $nbexist;
}

/**
 * Lecture d'un enregistrement média
 *
 * @param $code
 * @param bool $open
 * @return array|null
 */
function lit_enr_med($code, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech2 = "SELECT * FROM `" . TBRLMED . "` WHERE rlmed_code = '" . $db->escape($code) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($open == TRUE)
        $db->disconnect();

    return $row2;
}

// Catégorie Produit

/**
 * Lecture d'un enregistrement catégorie produit
 *
 * @param $code
 * @param bool $open
 * @return array|null
 */
function lit_enr_rpcat($code, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech2 = "SELECT * FROM `" . TBRPCAT . "` WHERE rpcat_code = '" . $db->escape($code) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($open == TRUE)
        $db->disconnect();

    return $row2;
}

// Logiciel télémaintenance

/**
 * Lecture d'un enregistrement logiciel de télémaintenance
 *
 * @param $code
 * @param bool $open
 * @return array|null
 */
function lit_enr_rlptml($code, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech2 = "SELECT * FROM `" . TBRLPTML . "` WHERE rlptml_code = '" . $db->escape($code) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($open == TRUE)
        $db->disconnect();

    return $row2;
}


// Mode Mise à Jour

/**
 * Lecture d'un enregistrement mode mise à jour
 *
 * @param $code
 * @param bool $open
 * @return array|null
 */
function lit_enr_rlpmm($code, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech2 = "SELECT * FROM `" . TBRLPMM . "` WHERE rlpmm_code = '" . $db->escape($code) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($open == TRUE)
        $db->disconnect();

    return $row2;
}

/**
 * Nombre d'enregistrements mode mise à jour
 *
 * @param bool $open
 * @return null
 */
function nb_rlpmm($open = TRUE)
{
    global
    $db;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech2 = "SELECT COUNT(*) FROM `" . TBRLPMM . "`";
    $nbexist = $db->get_var($rech2);
    if ($open == TRUE)
        $db->disconnect();

    return $nbexist;
}
