<?php
/****************************************************************************************
 * SMI (Services Maintenance Interventions) est une gestion libre de maintenance et de SAV
 *
 * Version 1.0.4
 *
 * Copyright (C) 2006-2016  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) {
    header('Location: ../index.php');
}

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

// Contrats

/**
 * Vérification du nombre de contrats gérés par une agence
 *
 * @param $agence
 * @param bool $open
 * @return null
 */
function nb_cocl($agence, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }
    if ($agence <> '') {
        $rexist = 'SELECT COUNT(*) FROM `' . TBCOCL . "` WHERE `cocl_codeage` = '" . $db->escape($agence) . "'";
    } else {
        $rexist = 'SELECT COUNT(*) FROM `' . TBCOCL . '`';
    }
    $nbexist = $db->get_var($rexist);
    if ($open == TRUE) {
        close_database();
    }

    return $nbexist;
}

/**
 * Vérification du nombre de contrats pour un client
 *
 * @param $code
 * @param bool $open
 * @return null
 */
function nb_cocl_in_cli($code, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }
    $rexist = 'SELECT COUNT(*) FROM `' . TBCOCL . "` WHERE `cocl_codecli` = '" . $db->escape($code) . "'";
    $nbexist = $db->get_var($rexist);
    if ($open == TRUE) {
        close_database();
    }

    return $nbexist;
}

/**
 * Vérification du nombre de contrats pour un client
 *
 * @param $code
 * @param bool $open
 * @return null
 */
function nb_cocl_actifs_in_cli($code, $open = TRUE)
{
    global
    $db,
    $datea;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    $rexist = 'SELECT COUNT(*) FROM `' . TBCOCL . "` WHERE `cocl_codecli` = '" . $db->escape($code) . "'";
    $rexist .= " AND cocl_datesig<>'0000-00-00' AND cocl_dated<='" . $datea . "' AND (cocl_datef>='" . $datea . "' OR cocl_datef='0000-00-00') AND cocl_datefin='0000-00-00'";
    $nbexist = $db->get_var($rexist);
    if ($open == TRUE) {
        close_database();
    }

    return $nbexist;
}

/**
 * Vérification du nombre de contrats clients dans l'historique contrats
 *
 * @param $code
 * @param bool $open
 * @return null
 */
function nb_cocl_in_coclh($code, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }
    $rexist = 'SELECT COUNT(*) FROM `' . TBCOCLH . "` WHERE `coclh_codecocl` = '" . $db->escape($code) . "'";
    $nbexist = $db->get_var($rexist);
    if ($open == TRUE) {
        close_database();
    }

    return $nbexist;
}

/**
 * Vérification qu'un contrat client est signé
 *
 * @param $code
 * @param bool $open
 * @return bool
 */
function cocl_signed($code, $open = TRUE)
{
    global
    $db;
    $signe = FALSE;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    $rexist = 'SELECT cocl_signe FROM `' . TBCOCL . "` WHERE `cocl_code` = '" . $db->escape($code) . "'";
    $row2 = $db->get_row($rexist, ARRAY_A);
    if ($row2) {
        extract($row2);

        if ($cocl_signe <> '') {
            $signe = TRUE;
        }
    }
    if ($open == TRUE) {
        close_database();
    }

    return $signe;
}

/**
 * Vérification qu'un contrat est de type "quota d'heure"
 *
 * @param $code
 * @param bool $open
 * @return bool
 */
function cocl_quota($code, $open = TRUE)
{
    global
    $db;
    $quota = FALSE;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    $rexist = 'SELECT cocl_typh FROM `' . TBCOCL . "` WHERE `cocl_code` = '" . $db->escape($code) . "'";
    $row2 = $db->get_row($rexist, ARRAY_A);
    if ($row2) {
        extract($row2);

        if ($cocl_typh == 1) {
            $quota = TRUE;
        }
    }
    if ($open == TRUE) {
        close_database();
    }

    return $quota;
}

/**
 * Crée une chaîne qui contient la liste des sites rattachés aux annexes d'un contrat ($co)
 *  Si $except = TRUE : on prend tout SAUF l'id
 * Si $except = FALSE : on ne prend que l'id (si non nul)
 *
 * @param $co
 * @param $id
 * @param bool $except
 * @param bool $open
 * @return string
 */
function cree_str_lstsites_cocla($co, $id, $except = FALSE, $open = TRUE)
{
    global
    $db;
    // Construction de la chaîne des sites sélectionnés
    $lstsites = '';

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    $rech = 'SELECT sclia_idscli FROM `' . TBSCLIA . "` WHERE sclia_codecocl = '" . $db->escape($co) . "'";

    // Si id<>0 : il faut uniquement travailler sur cet ID
    // Sinon ; on prend tout par rapport au contrat
    if ($id <> 0) {
        if ($except == TRUE) // Tout sauf cet ID
        {
            $rech .= " AND sclia_idcocla <> '" . $id . "'";
        } else // Uniquement cet ID
        {
            $rech .= " AND sclia_idcocla = '" . $id . "'";
        }
    }
    $rows = $db->get_results($rech, ARRAY_A);

    if ($rows) {
        foreach ($rows as $row) {
            $row = encode_str($row);
            extract($row);
            $lstsites .= $sclia_idscli . '-';
        }
    }
    if ($open == TRUE) {
        close_database();
    }

    if ($lstsites != '') {
        $lstsites = substr($lstsites, 0, - 1);
    }

    return $lstsites;
}

/**
 * Crée une chaîne qui contient la liste des sites rattachés à un contrat
 * Inclus les annexes (si valeur $annexes à TRUE)
 *
 * @param $co
 * @param bool $annexes
 * @param int $idannexe
 * @param bool $open
 * @return string
 */
function cree_str_lstsites_cocl($co, $annexes = TRUE, $idannexe = 0, $open = TRUE)
{
    global
    $db;
    // Construction de la chaîne des sites sélectionnés
    $lstsites = '';

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    // Le contrat principal
    // Les sites secondaires
    $rech = 'SELECT sclic_idscli FROM `' . TBSCLIC . "` WHERE sclic_codecocl = '" . $db->escape($co) . "'";
    $rows = $db->get_results($rech, ARRAY_A);
    if ($rows) {
        foreach ($rows as $row) {
            $row = encode_str($row);
            extract($row);
            $lstsites .= $sclic_idscli . '-';
        }
    }

    // Les annexes au contrat
    if ($annexes == TRUE) {
        // On récupère les annexes de contrats
        $rech = 'SELECT sclia_idscli FROM `' . TBSCLIA . "` WHERE sclia_codecocl = '" . $db->escape($co) . "'";
        if ($idannexe <> 0) {
            $rech .= " AND sclia_idcocla <> '" . $idannexe . "'";
        }
        $rows = $db->get_results($rech, ARRAY_A);
        if ($rows) {
            foreach ($rows as $row) {
                extract($row);
                $lstsites .= $sclia_idscli . '-';
            }
        }
    }

    if ($open == TRUE) {
        close_database();
    }

    if ($lstsites != '') {
        $lstsites = substr($lstsites, 0, - 1);
    }
    return $lstsites;
}

/**
 * Crée le texte des matériels (contrats) sur la base de la string des matériel/licences choisis
 *
 * @param $lstrlp
 * @param bool $open
 * @return string
 */
function cree_txt_matos_cocl($lstrlp, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    $txtmatos = '';
    $txtmatos_pdt = '';
    $txtmatos_lic = '';
    $tab_lstrlp = explode('-', $lstrlp);

    if (count($tab_lstrlp) > 0) {
        // Injection des matériels
        $j = 1;

        $titre = '=== ' . _('MATERIEL CONCERNE') . ' ===%%%%';
        for ($i = 0; $i < count($tab_lstrlp); $i++) {
            $rech = 'SELECT * FROM `' . TBRPDT . "` WHERE `rpdt_code`= '" . $tab_lstrlp[$i] . "' ORDER BY `rpdt_idsite`";
            $row = $db->get_row($rech, ARRAY_A);
            if ($row) {
                $row = encode_str($row);
                extract($row);

                if (trim($txtmatos_pdt) == '') {
                    $txtmatos_pdt .= $titre;
                }

                $txtmatos_titre = '---- ' . _('MATERIEL N°') . sprintf("%'010s", $j);

                $nom_site = '';
                switch ($rpdt_idsite) {
                    case -1 :
                        $nom_site = _('Tous les sites');
                        break;
                    case 0 :
                        $nom_site = _('Site principal');
                        break;
                    default :
                        $rech2 = 'SELECT scli_ste,scli_ville FROM `' . TBSCLI . "` WHERE `scli_id` = '" . $rpdt_idsite . "'";
                        $row2 = $db->get_row($rech2, ARRAY_A);
                        if ($row2) {
                            $row2 = encode_str($row2);
                            extract($row2);
                            $nom_site .= $scli_ste;
                            $nom_site .= ' (' . Retournecp_Id($scli_ville, FALSE) . ' ' . Retourneville_Id($scli_ville, FALSE) . ')';
                        }
                }
                $rech2 = 'SELECT * FROM `' . TBRPCAT . "` WHERE `rpcat_code` = '" . $rpdt_codecat . "'";
                $row2 = $db->get_row($rech2, ARRAY_A);
                if ($row2) {
                    $row2 = encode_str($row2);
                    extract($row2);
                }
                $rech2 = 'SELECT * FROM `' . TBMQUE . "` WHERE `mque_code` = '" . $rpdt_codema . "'";
                $row2 = $db->get_row($rech2, ARRAY_A);
                if ($row2) {
                    $row2 = encode_str($row2);
                    extract($row2);
                }
                $saut = chr(13) . chr(10);
                $txtmatos_corps1 = _('Site') . ' : ' . $nom_site . '%%' . _('Relevé') . ' ' . $rpdt_code . ' (' . $rpdt_codep . ') : ' . $rpcat_desc . ' / ' . $mque_ste . ' ' . $rpdt_modele . ', ' . _('NS') . ' ' . $rpdt_ns . ', ' . _('localisation') . ' : ' . $rpdt_empl;
                $txtmatos_corps1 = str_replace($saut, '%%', $txtmatos_corps1);

                $txtmatos_pied = '--------';
                $txtmatos_pdt .= $txtmatos_titre . '%%' . $txtmatos_corps1 . '%%' . $txtmatos_pied . '%%%%';
            }
            $j++;
        }
        // Injection des licences
        $j = 1;
        $titre = '=== ' . _('LICENCES CONCERNEES') . ' ===%%%%';
        for ($i = 0; $i < count($tab_lstrlp); $i++) {
            $rech = 'SELECT * FROM `' . TBRLIC . "` WHERE `rlic_code`= '" . $tab_lstrlp[$i] . "'  ORDER BY `rlic_idsite`";
            $row = $db->get_row($rech, ARRAY_A);
            if ($row) {
                $row = encode_str($row);
                extract($row);

                if (trim($txtmatos_lic) == '') {
                    $txtmatos_lic .= $titre;
                }

                $txtmatos_titre .= '---- ' . _('LICENCE N°') . sprintf("%'010s", $j);

                $nom_site = '';
                switch ($rlic_idsite) {
                    case -1 :
                        $nom_site = _('Tous les sites');
                        break;
                    case 0 :
                        $nom_site = _('Site principal');
                        break;
                    default :
                        $rech2 = 'SELECT scli_ste,scli_ville FROM `' . TBSCLI . "` WHERE `scli_id` = '" . $rpdt_idsite . "'";
                        $row2 = $db->get_row($rech2, ARRAY_A);
                        if ($row2) {
                            $row2 = encode_str($row2);
                            extract($row2);
                            $nom_site .= $scli_ste;
                            $nom_site .= ' (' . Retournecp_Id($scli_ville, FALSE) . ' ' . Retourneville_Id($scli_ville, FALSE) . ')';
                        }
                        break;
                }
                $rech2 = 'SELECT mque_ste FROM `' . TBMQUE . "` WHERE `mque_code` = '" . $rlic_codema . "'";
                $row2 = $db->get_row($rech2, ARRAY_A);
                if ($row2) {
                    $row2 = encode_str($row2);
                    extract($row2);
                }
                $saut = chr(13) . chr(10);
                $txtmatos_corps1 = _('Site') . ' : ' . $nom_site . '%%' . _('Relevé') . ' ' . $rlic_code . ' : ' . $mque_ste . ' ' . $rlic_modele . ' ' . $rlic_version . '.';
                $txtmatos_corps1 = str_replace($saut, '%%', $txtmatos_corps1);

                $txtmatos_pied = '--------';
                $txtmatos_lic .= $txtmatos_titre . '%%' . $txtmatos_corps1 . '%%' . $txtmatos_pied . '%%%%';
            }
            $j++;
        }
    }
    if ($open == TRUE) {
        close_database();
    }

    if (($txtmatos_pdt != '') OR ($txtmatos_lic != '')) {
        if ($txtmatos_pdt != '') {
            $txtmatos .= $txtmatos_pdt;
            if ($txtmatos_lic != '') {
                $txtmatos .= '%%';
            }
        }
        if ($txtmatos_lic != '') {
            $txtmatos .= $txtmatos_lic;
        }
        $txtmatos = substr($txtmatos, 0, - 4);
    }
    return $txtmatos;
}

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

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    $rech2 = 'SELECT * FROM `' . TBCOCL . "` WHERE `cocl_code` = '" . $db->escape($code) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($open == TRUE) {
        close_database();
    }

    return $row2;
}

/**
 * Récupération du temps travaillé sur un contrat donné
 * pour une intervention donnée
 *
 * @param $codecocl
 * @param $codeint
 * @param bool $open
 * @return int
 */
function tps_trav_int_sec($codecocl, $codeint, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    // Calcul des cumuls
    // Récupération du total travaillé
    $nbtotalsec = 0;

    // On vérifie d'abord si la combinaison code contrat/code intervention existe
    $rech = 'SELECT int_id FROM `' . TBINT . '`';
    $rech .= ' WHERE ' . TBINT . ".int_codecocl = '" . $db->escape($codecocl) . "' AND " . TBINT . ".int_code = '" . $db->escape($codeint) . "'";
    $rows = $db->get_results($rech, ARRAY_A);
    if ($rows AND (count($rows) > 0)) {
        $rech2 = 'SELECT ' . TBINTH . '.inth_heurea, ' . TBINTH . '.inth_heured , ' . TBINTH . '.inth_codeind ';
        $rech2 .= 'FROM `' . TBINTH . '`';
        $rech2 .= ' WHERE ' . TBINTH . '.inth_offert = 0 AND ' . TBINTH . ".inth_codeint = '" . $db->escape($codeint) . "'";

        $rows2 = $db->get_results($rech2, ARRAY_A);
        if ($rows2 AND (count($rows2) > 0)) {
            foreach ($rows2 as $row2) {
                extract($row2);
                $ind_coeff = 1;
                if ((int)$inth_codeind <> -1) {
                    $rech3 = 'SELECT ind_coeff FROM `' . TBIND . "` WHERE ind_code = '$inth_codeind'";
                    $row3 = $db->get_row($rech3, ARRAY_A);
                    if ($row3) {
                        extract($row3);
                    }
                }
                $nbtotalsec += (diff_time_sec($inth_heurea, $inth_heured) * $ind_coeff);
            }
        }
    }
    if ($open == TRUE) {
        close_database();
    }

    return $nbtotalsec;
}

/**
 * Récupération du temps travaillé offert sur un contrat donné pour une intervention données
 *
 * @param $codecocl
 * @param $codeint
 * @param bool $open
 * @return int
 */
function tps_trav_offert_int_sec($codecocl, $codeint, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    // Calcul des cumuls
    // Récupération du total travaillé
    $nbtotalsec = 0;

    $rech2 = 'SELECT ' . TBINTH . '.inth_heurea, ' . TBINTH . '.inth_heured , ' . TBINTH . '.inth_codeind ';
    $rech2 .= 'FROM `' . TBINT . '`, `' . TBINTH . '`';
    $rech2 .= ' WHERE ' . TBINT . ".int_codecocl = '" . $db->escape($codecocl) . "'";
    $rech2 .= ' AND ' . TBINT . '.int_code = ' . TBINTH . '.inth_codeint';
    $rech2 .= ' AND ' . TBINTH . '.inth_offert = 1 AND ' . TBINTH . ".inth_codeint = '" . $db->escape($codeint) . "'";

    $rows2 = $db->get_results($rech2, ARRAY_A);
    if ($rows2 AND (count($rows2) > 0)) {
        foreach ($rows2 as $row2) {
            $ind_coeff = 1;
            if ($row2['inth_codeind'] <> '-1') {
                $row3 = lit_enr_ind($row2['inth_codeind'], FALSE);
                if (is_array($row3)) {
                    $row3 = encode_str($row3);
                    extract($row3);
                }
            }
            $nbtotalsec += (diff_time_sec($row2['inth_heurea'], $row2['inth_heured']) * $ind_coeff);
        }
    }
    if ($open == TRUE) {
        close_database();
    }

    return $nbtotalsec;
}

/**
 * Récupération du temps travaillé sur un contrat donné pour des interventions closes
 * $except : si non vide on exclu cette intervention
 *
 * @param $codecocl
 * @param bool $open
 * @param string $except
 * @return int
 */
function tps_trav_clot_sec($codecocl, $open = TRUE, $except = '')
{
    global
    $db;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    // Calcul des cumuls
    // Récupération du total travaillé
    $nbtotalsec = 0;

    $rech2 = 'SELECT ' . TBINTH . '.inth_heurea, ' . TBINTH . '.inth_heured , ' . TBINTH . '.inth_codeind ';
    $rech2 .= 'FROM `' . TBINT . '`, `' . TBINTH . '`';
    $rech2 .= ' WHERE ' . TBINT . ".int_codecocl = '" . $db->escape($codecocl) . "'";
    $rech2 .= ' AND ' . TBINT . '.int_code = ' . TBINTH . '.inth_codeint';
    $rech2 .= ' AND ' . TBINT . ".int_datefin <> '0000-00-00'";
    $rech2 .= ' AND ' . TBINTH . '.inth_offert = 0';

    if (trim($except) <> '') {
        $rech2 .= ' AND ' . TBINTH . ".inth_codeint <> '" . $except . "'";
    }

    $rows2 = $db->get_results($rech2, ARRAY_A);
    if ($rows2 AND (count($rows2) > 0)) {
        foreach ($rows2 as $row2) {
            $ind_coeff = 1;

            if ($row2['inth_codeind'] <> '-1') {
                $row3 = lit_enr_ind($row2['inth_codeind'], FALSE);
                if (is_array($row3)) {
                    $row3 = encode_str($row3);
                    extract($row3);
                }
            }
            $nbtotalsec += (diff_time_sec($row2['inth_heurea'], $row2['inth_heured']) * $ind_coeff);
        }
    }
    if ($open == TRUE) {
        close_database();
    }

    return $nbtotalsec;
}

/**
 * Récupération du temps travaillé sur un contrat donné pour des interventions non closes
 * $except : si non vide, on exclu l'intervention
 *
 * @param $codecocl
 * @param bool $open
 * @param string $except
 * @return int
 */
function tps_trav_non_clot_sec($codecocl, $open = TRUE, $except = '')
{
    global
    $db;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    // Calcul des cumuls
    // Récupération du total travaillé
    $nbtotalsec = 0;

    $rech2 = 'SELECT ' . TBINTH . '.inth_heurea, ' . TBINTH . '.inth_heured , ' . TBINTH . '.inth_codeind ';
    $rech2 .= 'FROM `' . TBINT . '`, `' . TBINTH . '`';
    $rech2 .= ' WHERE ' . TBINT . ".int_codecocl = '" . $db->escape($codecocl) . "'";
    $rech2 .= ' AND ' . TBINT . '.int_code = ' . TBINTH . '.inth_codeint';
    $rech2 .= ' AND ' . TBINT . ".int_datefin = '0000-00-00'";
    $rech2 .= ' AND ' . TBINTH . '.inth_offert = 0';
    if (trim($except) <> '') {
        $rech2 .= ' AND ' . TBINTH . ".inth_codeint <> '" . $except . "'";
    }
    $rows2 = $db->get_results($rech2, ARRAY_A);
    if ($rows2 AND (count($rows2) > 0)) {
        foreach ($rows2 as $row2) {
            $ind_coeff = 1;
            if ($row2['inth_codeind'] <> '-1') {
                $row3 = lit_enr_ind($row2['inth_codeind'], FALSE);
                if (is_array($row3)) {
                    $row3 = encode_str($row3);
                    extract($row3);
                }
            }
            $nbtotalsec += (diff_time_sec($row2['inth_heurea'], $row2['inth_heured']) * $ind_coeff);
        }
    }
    if ($open == TRUE) {
        close_database();
    }

    return $nbtotalsec;
}

/**
 * Récupération du total reporté vers un contrat
 *
 * @param $codecocl
 * @param bool $open
 * @return int
 */
function apport_vers_contrat_sec($codecocl, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    $apports = 0;

    // Solde des reports
    $rech2 = 'SELECT SUM(coclr_nbsrep) AS total_apport';
    $rech2 .= ' FROM `' . TBCOCLR . '`';
    $rech2 .= " WHERE coclr_cocldest = '" . $db->escape($codecocl) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($row2) {
        extract($row2);
        $apports = $total_apport;
    }
    if ($open == TRUE) {
        close_database();
    }

    return $apports;
}

/**
 * Récupération du total sorti en report depuis un contrat
 * On ne prend que les montants positifs, qui correspondent à des sorties
 *
 * @param $codecocl
 * @param bool $open
 * @return int
 */
function report_depuis_contrat_sec($codecocl, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    $reports = 0;

    // Solde des reports
    $rech2 = 'SELECT SUM(coclr_nbsrep) AS total_report';
    $rech2 .= ' FROM `' . TBCOCLR . '`';
    $rech2 .= " WHERE coclr_coclori = '" . $db->escape($codecocl) . "'";
    $rech2 .= ' AND coclr_nbsrep > 0';

    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($row2) {
        extract($row2);
        $reports = $total_report;
    }
    if ($open == TRUE) {
        close_database();
    }

    return $reports;
}

/**
 * Récupération du solde en secondes d'un contrat donné
 * Sans les interventions en cours
 *
 * @param $codecocl
 * @param bool $open
 * @return int
 */
function solde_contrat_sec($codecocl, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    $soldes = 0;
    // Montant initial du contrat
    $rech2 = 'SELECT cocl_nbs';
    $rech2 .= ' FROM `' . TBCOCL . '`';
    $rech2 .= " WHERE cocl_code = '" . $db->escape($codecocl) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($row2) {
        extract($row2);
        $soldes = $cocl_nbs;
    }
    // On retire les temps travaillés clots et non clots
    $soldes -= tps_trav_clot_sec($codecocl, FALSE);
    // On rajoute les apports et on soustrait les reports
    $soldes += apport_vers_contrat_sec($codecocl, FALSE) - report_depuis_contrat_sec($codecocl, FALSE);

    if ($open == TRUE) {
        close_database();
    }

    return $soldes;
}

/**
 * Récupération du solde réel en secondes d'un contrat donné
 * (réel : solde complet, y compris interventions en cours)
 *
 * @param $codecocl
 * @param bool $open
 * @param string $except
 * @return int
 */
function solde_reel_contrat_sec($codecocl, $open = TRUE, $except = '')
{
    global
    $db;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    $soldes = 0;

    // Montant initial du contrat
    $rech2 = 'SELECT cocl_nbs';
    $rech2 .= ' FROM `' . TBCOCL . '`';
    $rech2 .= " WHERE cocl_code = '" . $db->escape($codecocl) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($row2) {
        extract($row2);
        $soldes = $cocl_nbs;
    }
    // On retire les temps travaillés clots et non clots
    $soldes = $soldes - tps_trav_clot_sec($codecocl, FALSE, $except) - tps_trav_non_clot_sec($codecocl, FALSE, $except);

    // On rajoute les apports et on soustrait les reports
    $soldes = $soldes + apport_vers_contrat_sec($codecocl, FALSE) - report_depuis_contrat_sec($codecocl, FALSE);

    if ($open == TRUE) {
        close_database();
    }

    return $soldes;
}


/**
 * Calcule le prix de revient d'un contrat
 *
 * @param $codecocl
 * @param bool $open
 * @return int
 */
function px_revient_cocl($codecocl, $open = TRUE)
{
    global
    $db;
    $pr = 0;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    // Récupération prix de revient pour le travail effectué (inclus offert)
    $rech = 'SELECT coclh_codeint FROM `' . TBCOCLH . "` WHERE `coclh_codecocl`= '" . $db->escape($codecocl) . "'";
    $rows = $db->get_results($rech, ARRAY_A);
    if ($rows AND (count($rows) > 0)) {
        foreach ($rows as $row) {
            $row = encode_str($row);
            extract($row);
            // Récupération prix de revient pour le travail effectué (inclus offert)
            $rech2 = 'SELECT * FROM `' . TBINTH . "` WHERE `inth_codeint`= '" . $coclh_codeint . "'";
            $rows2 = $db->get_results($rech2, ARRAY_A);
            if ($rows2 AND (count($rows2) > 0)) {
                foreach ($rows2 as $row2) {
                    extract($row2);
                    // Calcul du coût de déplacement
                    // On récupère le prix de revient du technicien en fonction de la date
                    $rech3 = 'SELECT tecpr_couth FROM `' . TBTECPR . "` WHERE `tecpr_date` <= '$inth_date' AND `tecpr_codetec` = '" . $inth_codetec . "' ORDER BY tecpr_date DESC";
                    $row3 = $db->get_row($rech3, ARRAY_A);
                    if ($row3) {
                        extract($row3);
                        $tps = diff_time_sec($inth_heurea, $inth_heured); // Temps passé sur site
                        $cout_aller = 0;
                        $tpsa = diff_time_sec($inth_aheured, $inth_aheuref); // Temps pour aller
                        $cout_retour = 0;
                        $tpsr = diff_time_sec($inth_rheured, $inth_rheuref); // Temps pour retour
                        // ... Aller
                        $rech4 = 'SELECT * FROM `' . TBMT . "` WHERE `mt_code` = '$inth_acodemt'";
                        $row4 = $db->get_row($rech4, ARRAY_A);
                        if ($row4) {
                            extract($row4);
                            if ($mt_coutk > 0) // C'est un coût interne
                            {
                                $cout_aller = $inth_akm * $mt_coutk;
                            } // Montant "kilométrique" aller
                            else // C'est sous-traité
                            {
                                // Coût forfaitaire
                                $cout_aller = $inth_acd; // A saisir : Montant forfaitaire pour l'aller
                                if ($mt_coutas == 0) // A ne pas saisir : Montant saisi pour l'aller
                                {
                                    $cout_aller = $mt_coutf;
                                }
                                // Coût kilométrique
                                if ($mt_kmill == 0) // Pas illimité : on calcule (sinon on ne fait rien)
                                {
                                    $diff_km = $inth_akm - $mt_kmi;
                                    if ($diff_km > 0) {
                                        $cout_aller += ($mt_kms * $diff_km);
                                    }
                                }
                            }
                            $cout_aller += $mt_coutc + $inth_afrais; // Rajout des frais supplémentaires

                            if ($mt_tpsdi == 0) // Le temps de déplacement n'est pas inclus : on calcul (sinon on ne fait rien)
                            {
                                $cout_aller += round((($tecpr_couth / 3600) * $tpsa) * 100) / 100;
                            }
                        }
                        // ...Sur site
                        $cout_site = round((($tecpr_couth / 3600) * $tps) * 100) / 100;
                        // ... Retour
                        $rech4 = 'SELECT * FROM `' . TBMT . "` WHERE `mt_code` = '$inth_rcodemt'";
                        $row4 = $db->get_row($rech4, ARRAY_A);
                        if ($row4) {
                            extract($row4);
                            if ($mt_coutk > 0) // C'est un coût interne
                            {
                                $cout_retour = $inth_rkm * $mt_coutk;
                            } // Montant "kilométrique" retour
                            else // C'est sous-traité
                            {
                                // Coût forfaitaire
                                $cout_retour = $inth_rcd; // Coût à saisir : Montant forfaitaire pour le retour
                                if ($mt_coutas == 0) // Coût à ne pas saisir : Montant saisi pour le retour
                                {
                                    $cout_retour = $mt_coutf;
                                }
                                // Coût kilométrique
                                if ($mt_kmill == 0) // Pas illimité : on calcule (sinon on ne fait rien)
                                {
                                    $diff_km = $inth_rkm - $mt_kmi;
                                    if ($diff_km > 0) {
                                        $cout_retour += ($mt_kms * $diff_km);
                                    }
                                }
                            }
                            $cout_retour += ($mt_coutc + $inth_rfrais); // Rajout des frais supplémentaires

                            if ($mt_tpsdi == 0) // Le temps de déplacement n'est pas inclus : on calcul (sinon on ne fait rien)
                            {
                                $cout_retour += round((($tecpr_couth / 3600) * $tpsr) * 100) / 100;
                            }
                        }
                        $pr += ($cout_site + $cout_aller + $cout_retour);
                    }
                }
            }
        }
    }

    if ($open == TRUE) {
        close_database();
    }

    return $pr;
}


/**
 * Création du tableau des contrats possibles pour une intervention
 * site choisi : si on a coché un site dans une liste de choix
 * (Si = -1, c'est que l'on veut calculer la liste à l'ouverture de l'intervention)
 *
 * @param $td
 * @param $codeint
 * @param $codecli
 * @param bool $open
 * @param int $sitechoisi
 * @return array
 */
function cre_tab_cocl_int($td, $codeint, $codecli, $open = TRUE, $sitechoisi = -1)
{
    global
    $db,
    $datea;

    $tab_cocl = [];
    // $tab_cocl_ok = array();

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    // On récupère les infos nécessaires pour l'intervention
    // Si en ajout, comme il n'y a pas de code intervention, on ne récupère rien
    $rech = '';
    switch ($td) {
        case 'add' :
            $int_idsite = 0;
            break;
        default :
            if (trim($codeint) <> '') {
                $rech = 'SELECT int_datedde, int_codecocl, int_idsite FROM `' . TBINT . "` WHERE `int_code` = '" . $db->escape($codeint) . "'";
            } else {
                $int_idsite = 0;
            }
            break;
    }
    if ($rech <> '') {
        $row = $db->get_row($rech, ARRAY_A);
        if ($row) {
            $row = encode_str($row);
            extract($row);
        }
    }

    // On récupère les contrats possibles
    $rech = 'SELECT * FROM `' . TBCOCL . "` WHERE `cocl_codecli` = '" . $db->escape($codecli) . "'";
    switch ($td) {
        case 'add' :
            // Contrats non terminés et signés
            $rech .= " AND `cocl_datefin` = '0000-00-00' AND `cocl_datesig` <> '0000-00-00'";
            // Contrats valables à la date du jour
            $rech .= " AND `cocl_dated` <= '" . $datea . "' AND (`cocl_datef` >= '" . $datea . "' OR `cocl_datef` = '0000-00-00')";
            break;
        default :
            // Contrats non terminés et signés
            $rech .= " AND ((`cocl_datefin` = '0000-00-00' AND `cocl_datesig` <> '0000-00-00'";
            // Contrats valables à la date de l'intervention
            $rech .= " AND `cocl_dated` <= '" . $int_datedde . "' AND (`cocl_datef` >= '" . $int_datedde . "' OR `cocl_datef` = '0000-00-00'))";
            // On n'oublie pas de reprendre le code contrat déjà affecté (cas où le contrat est entre temps passé en date dépassée)
            if ($int_codecocl <> '') {
                $rech .= " OR cocl_code='" . $int_codecocl . "')";
            } else {
                $rech .= ')';
            }
            break;
    }
    $rech .= ' ORDER BY cocl_code';
    $rows = $db->get_results($rech, ARRAY_A);
    if ($rows AND (count($rows) > 0)) {
        // $tab_cocl[''] = _('-- Faites votre choix --');

        foreach ($rows as $row) {
            $row = encode_str($row);
            extract($row);

            // On vérifie si le site de l'intervention est inclus dans le contrat
            $addok = FALSE;

            // On crée le tableau des sites couverts par le contrat (inclus annexes)
            $lstsites = cree_str_lstsites_cocl($cocl_code, TRUE, 0, FALSE);

            if (trim($lstsites) <> '') {
                $tab_sites = explode('-', $lstsites);

                // On a choisi un site dans une liste
                if ($sitechoisi >= 0) {
                    if ($sitechoisi > 0) {
                        if (exist_in_array($sitechoisi, $tab_sites) == TRUE) {
                            $addok = TRUE;
                        }
                    } else {
                        if ($cocl_sitep == TRUE) {
                            $addok = TRUE;
                        }
                    }
                } // On part de l'ouverture de l'intervention
                else {
                    switch ($td) {
                        // on est en ajout : on prend tous les contrats actifs du client sur le site principal (site choisi par défaut)
                        case 'add' :
                            if ($cocl_sitep == 1) {
                                $addok = TRUE;
                            }
                            break;
                        // Autre : on vérifie que le site de l'intervention est bien couvert par le contrat
                        default :
                            if ($int_idsite > 0) {
                                if (exist_in_array($int_idsite, $tab_sites) == TRUE) {
                                    $addok = TRUE;
                                }
                            } else {
                                if ($cocl_sitep == TRUE) {
                                    $addok = TRUE;
                                }
                            }
                            break;
                    }
                }
            } else {
                $addok = FALSE;
                if ($cocl_sitep == 1) {
                    $addok = TRUE;
                }
            }

            // Oui : on récupère le contrat
            if ($addok == TRUE) {
                $rech2 = 'SELECT co_nom FROM `' . TBCO . "` WHERE co_code = '" . $cocl_codeco . "'";
                $row2 = $db->get_row($rech2, ARRAY_A);
                if ($row2) {
                    $row2 = encode_str($row2);
                    extract($row2);
                }
                if ($cocl_delai <> 0) {
                    $txt_cocl = $cocl_code . ' - ' . $co_nom . ' (' . $cocl_delai . 'h';
                } else {
                    $txt_cocl = $cocl_code . ' - ' . $co_nom . ' (' . _('Pas de délai');
                }
                if ($cocl_datef <> '0000-00-00') {
                    $txt_cocl .= ', ' . _('ech.') . ' ' . datetolocal($cocl_datef);
                } else {
                    $txt_cocl .= ', ' . _('sans ech.') . ' ';
                }
                $txt_cocl .= ')';
                if ((int)$cocl_typh == 1) {
                    // On vérifie s'il y a du temps travaillé pour le contrat, sur cette intervention
                    $tpstrav = tps_trav_int_sec($cocl_code, $codeint, FALSE);

                    // On calcule le solde réel du contrat, en ne tenant pas compte du temps, pour cette intervention,
                    // déjà utilisé dans ce contrat
                    $solde_reel = solde_reel_contrat_sec($cocl_code, FALSE) + $tpstrav;
                    $txt_cocl .= ' - ' . _('solde, hors cette intervention') . ' -> ' . heure_to_hhmm(sec_heure($solde_reel, 3, TRUE));
                }

                $tab_cocl[$cocl_code] = $txt_cocl;
            }


        }
    } else {
        $tab_cocl[''] = _('-- Pas de contrat actif sur ce client --');
    }

    if ($open == TRUE) {
        close_database();
    }

    return $tab_cocl;
}

/**
 * Création du tableau des reports possibles pour un contrat donné, en cas de cloture manuelle
 *
 * @param $codecocl
 * @param bool $open
 * @return array
 */
function cre_tab_cocl_report_clot($codecocl, $open = TRUE)
{
    global
    $db,
    $datea;

    $tab_report = [];
    $tab = [
        'cocl_code' => '',
        'cocl_desc' => _('-- Faites votre choix --')];
    $tab_report[] = $tab;

    if (trim($codecocl) <> '') {
        if ($open == TRUE) {
            $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
        }

        // On récupère les contrats possibles
        $rech = 'SELECT * FROM `' . TBCOCL . "` WHERE cocl_code='" . $codecocl . "'";
        $row = $db->get_row($rech, ARRAY_A);
        if ($row) {
            $row = encode_str($row);
            extract($row);
            if ((int)$cocl_typh == 1) {
                if ((int)$cocl_nbsnc == 1) // Contrat pouvant être reporté ?
                {
                    $tab = [
                        'cocl_code' => '-2',
                        'cocl_desc' => _('Pas de report')];
                    $tab_report[] = $tab;

                    $tab = [];
                    if (trim($cocl_rnum) == '') {
                        if ($cocl_renauto == TRUE) {
                            $tab = [
                                'cocl_code' => '-1',
                                'cocl_desc' => _('Report sur renouvellement (création automatique)')];
                        }
                    } else {
                        $tab = [
                            'cocl_code' => '-1',
                            'cocl_desc' => _('Report sur renouvellement') . ' (' . $cocl_rnum . ')'];
                    }

                    if (count($tab) > 0) {
                        $tab_report[] = $tab;
                    }

                    // On recupere les enregistrements complémentaires
                    $rech2 = 'SELECT * FROM `' . TBCOCL . "` WHERE cocl_code <> '" . $codecocl . "' AND cocl_codecli='" . $cocl_codecli . "'";
                    $rech2 .= " AND cocl_typh=1 AND (cocl_datef>='" . $datea . "' OR cocl_datef='0000-00-00')";
                    $rech2 .= " AND cocl_datefin='0000-00-00'";
                    $rech2 .= ' ORDER BY cocl_code';
                    $rows2 = $db->get_results($rech2, ARRAY_A);
                    // On cree le resultat
                    if ($rows2) {
                        foreach ($rows2 as $row2) {
                            if ($cocl_rnum <> $row2['cocl_code']) {
                                $rech3 = 'SELECT * FROM `' . TBCO . "` WHERE co_code = '" . $row2['cocl_codeco'] . "'";
                                $row3 = $db->get_row($rech3, ARRAY_A);
                                if ($row3) {
                                    $row3 = encode_str($row3);
                                    $txt_cocl = $row2['cocl_code'] . ' - ' . $row3['co_nom'];
                                    $rech4 = 'SELECT * FROM `' . TBCLI . "` WHERE `cli_code` = '" . $row2['cocl_codecli'] . "'";
                                    $row4 = $db->get_row($rech4, ARRAY_A);
                                    if ($row4) {
                                        $row4 = encode_str($row4);
                                        if ($row4['cli_ste'] <> '') {
                                            $txt_cocl .= ' (' . $row4['cli_ste'];
                                        } else {
                                            $txt_cocl .= ' (' . $row4['cli_nom'];
                                        }
                                        if ($row2['cocl_delai'] <> 0) {
                                            $txt_cocl .= ' - ' . $row2['cocl_delai'] . 'h';
                                        } else {
                                            $txt_cocl = $row2['cocl_code'] . ' - ' . $row3['co_nom'] . ' (' . _('Pas de délai');
                                        }
                                        if ($row2['cocl_datef'] <> '0000-00-00') {
                                            $txt_cocl .= ', ' . _('ech.') . ' ' . datetolocal($row2['cocl_datef']);
                                        } else {
                                            $txt_cocl .= ', ' . _('sans ech.') . ' ';
                                        }
                                        $solde_reel = solde_reel_contrat_sec($row2['cocl_code'], FALSE);
                                        $txt_cocl .= ', ' . _('solde réel') . ' ' . heure_to_hhmm(sec_heure($solde_reel, 3, TRUE));
                                        if ($row['cocl_datesig'] <> '0000-00-00') {
                                            $txt_cocl .= ', ' . _('Signé');
                                        } else {
                                            $txt_cocl .= ', ' . _('Non signé');
                                        }
                                        $txt_cocl .= ')';
                                    }
                                }

                                // Calcul du montant à sortir de ce contrat
                                $tab = [
                                    'cocl_code' => $row2['cocl_code'],
                                    'cocl_desc' => $txt_cocl];
                                $tab_report[] = $tab;
                            }
                        }
                    }
                } else {
                    $tab = [
                        'cocl_code' => '0',
                        'cocl_desc' => _("Paramètre 'Report non consommé' à 'Non' (Cloture simple)")];
                    $tab_report[] = $tab;
                }
            } else {
                $tab = [
                    'cocl_code' => '0',
                    'cocl_desc' => _("Aucun report horaire car ce contrat n'est pas de type 'Quota Horaire' (Cloture simple)")];
                $tab_report[] = $tab;
            }
        }


        if ($open == TRUE) {
            close_database();
        }
    }

    return $tab_report;
}


/**
 * Création du tableau des reports possibles pour un contrat donné, dans une intervention
 *
 * @param $codecocl
 * @param $codeint
 * @param $codecli
 * @param $idsite
 * @param bool $open
 * @param bool $escape
 * @param bool $forceprm
 * @return array
 */
function cre_tab_cocl_report_nc($codecocl, $codeint, $codecli, $idsite, $open = TRUE, $escape = FALSE, $forceprm = FALSE)
{
    global
    $db,
    $datea;

    $tab_report_nc = [];

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    // On récupère les infos nécessaires pour l'intervention
    if ($forceprm == FALSE) {
        $rech = 'SELECT int_codecli, int_codecocl, int_idsite FROM `' . TBINT . "` WHERE `int_code` = '" . $db->escape($codeint) . "'";
        $row = $db->get_row($rech, ARRAY_A);
        if ($row) {
            extract($row);
        } else {
            $int_codecli = $codecli;
            $int_codecocl = $codecocl;
            $int_idsite = $idsite;
        }
    } else {
        $int_codecli = $codecli;
        $int_codecocl = $codecocl;
        $int_idsite = $idsite;
    }

    // On récupère les contrats possibles
    if ($int_codecocl <> '') {
        $rech = 'SELECT cocl_typh, cocl_nbsnc, cocl_datef, cocl_rnum, cocl_renauto FROM `' . TBCOCL . "` WHERE `cocl_code` = '" . $db->escape($int_codecocl) . "'";
        $row = $db->get_row($rech, ARRAY_A);
        if ($row) {
            $row = encode_str($row);
            extract($row);
            if ($cocl_typh == 1) {
                if ($cocl_nbsnc == 1) // Contrat pouvant être reporté ?
                {
                    $tab_report_nc[''] = _('-- Faites votre choix --');

                    if ((($cocl_datef <> '0000-00-00') AND (comp_date($datea, $cocl_datef) == TRUE)) OR ($cocl_datef == '0000-00-00')) {
                        // Choix primaires
                        $tab_report_nc['-2'] = _('Pas de report');
                        if (trim($cocl_rnum) == '') {
                            if ((int)$cocl_renauto == 1) {
                                $txt = _('Report sur renouvellement (automatique)');
                            }
                        } else {
                            $txt = _('Report sur renouvellement') . ' (' . $cocl_rnum . ')';
                        }
                        $tab_report_nc['-1'] = $txt;

                        // Liste des contrats possibles
                        $rech2 = 'SELECT * FROM `' . TBCOCL . "` WHERE cocl_code<>'" . $int_codecocl . "' AND cocl_codecli='" . $int_codecli . "'";
                        $rech2 .= " AND cocl_typh=1 AND (cocl_datef>='" . $datea . "' OR cocl_datef='0000-00-00')";
                        $rech2 .= " AND cocl_datefin='0000-00-00'";
                        if (trim($cocl_rnum) <> '') {
                            $rech2 .= " AND cocl_code<>'" . $cocl_rnum . "'";
                        }
                        $rech2 .= ' ORDER BY cocl_code';
                        $rows2 = $db->get_results($rech2, ARRAY_A);
                        if ($rows2 AND (count($rows2) > 0)) {
                            foreach ($rows2 as $row2) {
                                $row2 = encode_str($row2);
                                extract($row2);
                                $addok = TRUE;
                                if ((int)$int_idiste > 0) {
                                    $rech3 = 'SELECT COUNT(*) FROM `' . TBSCLIC . "` WHERE sclic_codecocl = '" . $cocl_code . "' AND sclic_idscli='" . $int_idsite . "'";
                                    $nbres3 = $db->get_var($rech3);
                                    if ($nbres3 == 0) {
                                        $addok = FALSE;
                                    }
                                } else {
                                    if ($cocl_sitep == FALSE) {
                                        $addok = FALSE;
                                    }
                                }
                                if ($addok == TRUE) {
                                    $rech3 = 'SELECT * FROM `' . TBCO . "` WHERE co_code = '" . $cocl_codeco . "'";
                                    $row3 = $db->get_row($rech3, ARRAY_A);
                                    if ($row3) {
                                        $row3 = encode_str($row3);
                                        extract($row3);
                                    }
                                    if ((int)$cocl_delai <> 0) {
                                        $txt_cocl = $cocl_code . ' - ' . $co_nom . ' (' . $cocl_delai . 'h';
                                    } else {
                                        $txt_cocl = $cocl_code . ', ' . $co_nom . ' (' . _('Pas de délai');
                                    }

                                    if ($cocl_datef <> '0000-00-00') {
                                        $txt_cocl .= ', ' . _('ech.') . ' ' . datetolocal($cocl_datef);
                                    } else {
                                        $txt_cocl .= ', ' . _('sans ech.') . ' ';
                                    }
                                    if ($cocl_datesig <> '0000-00-00') {
                                        $txt_cocl .= ', ' . _('Signé');
                                    } else {
                                        $txt_cocl .= ', ' . _('Non signé');
                                    }
                                    $txt_cocl .= ')';

                                    // On vérifie s'il y a du temps travaillé pour le contrat, sur cette intervention
                                    $tpstrav = tps_trav_int_sec($cocl_code, $codeint, FALSE);

                                    // On calcule le solde réel du contrat, en ne tenant pas compte du temps, pour cette intervention,
                                    // déjà utilisé dans ce contrat
                                    // $solde_reel=solde_reel_contrat_sec($cocl_code,FALSE)+$tpstrav;
                                    $solde_reel = solde_reel_contrat_sec($cocl_code, FALSE) + $tpstrav;
                                    $txt_cocl .= ' - ' . _('solde, hors cette intervention') . ' -> ' . heure_to_hhmm(sec_heure($solde_reel, 3, TRUE));

                                    $tab_report_nc[$cocl_code] = $txt_cocl;
                                }
                            }
                        }
                    } else {
                        $tab_report_nc['0'] = _('Echéance atteinte ou dépassée');
                    }
                } else {
                    $tab_report_nc['0'] = _("Paramètre 'Report non consommé' à 'Non'");
                }

            } else {
                $tab_report_nc['0'] = _("Ce contrat n'est pas de type 'Quota Horaire'");
            }
        } else {
            $tab_report_nc[''] = _('-- Faites votre choix --');
        }
    } else {
        $tab_report_nc[''] = _('-- Faites votre choix --');
    }

    if ($open == TRUE) {
        close_database();
    }

    if ($escape == TRUE) {
        $tab_report_nc = str_escape($tab_report_nc);
    }
    return $tab_report_nc;
}

/**
 * Création du tableau des déductions possibles pour un contrat donné, dans une intervention
 *
 * @param $codecocl
 * @param $codeint
 * @param $codecli
 * @param $idsite
 * @param bool $open
 * @param bool $escape
 * @param bool $forceprm
 * @return array|string
 */
function cre_tab_cocl_deduc($codecocl, $codeint, $codecli, $idsite, $open = TRUE, $escape = FALSE, $forceprm = FALSE)
{
    global
    $db,
    $datea;

    $tab_deduc = [];

    // On se connecte a la base
    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    // On récupère les infos nécessaires pour l'intervention
    if ($forceprm == FALSE) {
        $rech = 'SELECT int_codecli, int_codecocl, int_idsite FROM `' . TBINT . "` WHERE `int_code` = '" . $db->escape($codeint) . "'";
        $row = $db->get_row($rech, ARRAY_A);
        if ($row) {
            extract($row);
        } else {
            $int_codecli = $codecli;
            $int_codecocl = $codecocl;
            $int_idsite = $idsite;
        }
    } else {
        $int_codecli = $codecli;
        $int_codecocl = $codecocl;
        $int_idsite = $idsite;
    }

    // On récupère les contrats possibles
    if ($int_codecocl <> '') {
        $rech = 'SELECT cocl_typh, cocl_nbsnc, cocl_datef, cocl_rnum, cocl_renauto, cocl_nbsdep FROM `' . TBCOCL . "` WHERE `cocl_code` = '" . $db->escape($int_codecocl) . "'";
        $row = $db->get_row($rech, ARRAY_A);
        if ($row) {
            $row = encode_str($row);
            extract($row);
            if ($cocl_typh == 1) {
                $tab_deduc[''] = _('-- Faites votre choix --');

                // Temps travaillé sur l'intervention
                $tps_retenu_int = tps_retenu_int_sec($codeint, FALSE);

                // Solde du contrat choisi = solde réel du contrat (hors intervention en cours)
                $solde_ce_contrat_sans_cette_int = solde_reel_contrat_sec($int_codecocl, FALSE, $codeint);
                if ($solde_ce_contrat_sans_cette_int < $tps_retenu_int) {
                    if ((int)$cocl_nbsdep == 1) {
                        // Choix primaires
                        $tab_deduc['-2'] = _('Pas de déduction');

                        if (trim($cocl_rnum) == '') {
                            if ($cocl_renauto == TRUE) {
                                $txt = _('Déduction sur renouvellement (automatique)');
                            }
                        } else {
                            $txt = _('Déduction sur renouvellement') . ' (' . $cocl_rnum . ')';
                            $rnum = $cocl_rnum;
                        }
                        $tab_deduc['-1'] = $txt;

                        // Liste des contrats possibles
                        $rech2 = 'SELECT * FROM `' . TBCOCL . "` WHERE cocl_code<>'" . $int_codecocl . "' AND cocl_codecli='" . $int_codecli . "'";
                        $rech2 .= " AND cocl_typh=1 AND (cocl_datef>='" . $datea . "' OR cocl_datef='0000-00-00')";
                        $rech2 .= " AND cocl_datefin='0000-00-00'";
                        if (trim($rnum) <> '') {
                            $rech2 .= " AND cocl_code<>'" . $rnum . "'";
                        }
                        $rech2 .= ' ORDER BY cocl_code';
                        $rows2 = $db->get_results($rech2, ARRAY_A);
                        if ($rows2) {
                            foreach ($rows2 as $row2) {
                                $row2 = encode_str($row2);
                                extract($row2);
                                $addok = TRUE;
                                if ((int)$int_idsite > 0) {
                                    $rech3 = 'SELECT COUNT(*) FROM `' . TBSCLIC . "` WHERE sclic_codecocl = '" . $cocl_code . "' AND sclic_idscli='" . $int_idsite . "'";
                                    $nbres3 = $db->get_var($rech3);
                                    if ($nbres3 == 0) {
                                        $addok = FALSE;
                                    }
                                } else {
                                    if ($cocl_sitep == FALSE) {
                                        $addok = FALSE;
                                    }
                                }

                                if ($addok == TRUE) {
                                    // On calcule le solde réel du contrat, en ne tenant pas compte du temps, pour cette intervention,
                                    // déjà utilisé dans ce contrat
                                    $solde_reel = solde_reel_contrat_sec($cocl_code, FALSE);

                                    if ($solde_reel >= $tps_retenu_int) {
                                        $rech3 = 'SELECT * FROM `' . TBCO . "` WHERE co_code = '" . $cocl_codeco . "'";
                                        $row3 = $db->get_row($rech3, ARRAY_A);
                                        if ($row3) {
                                            $row3 = encode_str($row3);
                                            extract($row3);
                                        }
                                        if ($cocl_delai <> 0) {
                                            $txt_cocl = $cocl_code . ' - ' . $co_nom . ' (' . $cocl_delai . _('h');
                                        } else {
                                            $txt_cocl = $cocl_code . ' - ' . $co_nom . ' (' . _('Pas de délai');
                                        }
                                        if ($cocl_datef <> '0000-00-00') {
                                            $txt_cocl .= ', ' . _('ech.') . ' ' . datetolocal($cocl_datef);
                                        } else {
                                            $txt_cocl .= ', ' . _('sans ech.') . ' ';
                                        }

                                        if ($cocl_datesig <> '0000-00-00') {
                                            $txt_cocl .= ', ' . _('Signé');
                                        } else {
                                            $txt_cocl .= ', ' . _('Non signé');
                                        }
                                        $txt_cocl .= ')';

                                        $txt_cocl .= ' - ' . _('solde, hors cette intervention') . ' -> ' . heure_to_hhmm(sec_heure($solde_reel, 3, TRUE));

                                        $tab_deduc[$cocl_code] = $txt_cocl;
                                    }
                                }
                            }
                        }
                    } else {
                        $tab_deduc['0'] = _("Paramètre 'Report sur-consommé' à 'Non'");
                    }
                } else {
                    $tab_deduc['0'] = _('Solde') . ' ' . $codecocl . ' ' . _('suffisant');
                }
            } else {
                $tab_deduc['0'] = _("Ce contrat n'est pas de type 'Quota Horaire'");
            }
        } else {
            $tab_deduc[''] = _('-- Faites votre choix --');
        }
    } else {
        $tab_deduc[''] = _('-- Faites votre choix --');
    }

    if ($open == TRUE) {
        close_database();
    }

    if ($escape == TRUE) {
        return str_escape($tab_deduc);
    } else {
        return $tab_deduc;
    }
}

// Préavis

/**
 * Maximum (jours) pour le préavis
 *
 * @param bool $open
 * @return int
 */
function preavis_max($open = TRUE)
{
    global
    $db;

    $cons_relmax = 0;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    $rech2 = 'SELECT cons_relmax FROM `' . TBCONS . '`';
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($row2) {
        extract($row2);
    }
    if ($open == TRUE) {
        close_database();
    }

    return $cons_relmax;
}

/**
 * Minimum (jours) pour le préavis
 *
 * @param bool $open
 * @return int
 */
function preavis_min($open = TRUE)
{
    global
    $db;
    $cons_relmin = 0;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }
    $rech2 = 'SELECT cons_relmin FROM `' . TBCONS . '`';
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($row2) {
        extract($row2);
    }
    if ($open == TRUE) {
        close_database();
    }

    return $cons_relmin;
}


// Annexes

/**
 * Lecture d'un enregistrement annexe contrat client
 *
 * @param $code
 * @param $codecocl
 * @param bool $open
 * @return array|null
 */
function lit_enr_cocla($code, $codecocl, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    $rech2 = 'SELECT * FROM `' . TBCOCLA . "` WHERE `cocla_code` = '" . $db->escape($code) . "' AND `cocla_codecocl` = '" . $db->escape($codecocl) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($open == TRUE) {
        close_database();
    }

    return $row2;
}

/**
 * Lecture d'un enregistrement annexe contrat client par son ID
 *
 * @param $id
 * @param bool $open
 * @return array|null
 */
function lit_enr_cocla_id($id, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    $rech2 = 'SELECT * FROM `' . TBCOCLA . "` WHERE `cocla_id` = '" . $id . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($open == TRUE) {
        close_database();
    }

    return $row2;
}

/**
 * Vérification qu'une annexe contrat client est signée
 *
 * @param $code
 * @param bool $open
 * @return bool
 */
function cocla_signed($code, $open = TRUE)
{
    global
    $db;
    $signe = FALSE;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    $rech2 = 'SELECT colca_signe FROM `' . TBCOCLA . "` WHERE `cocla_code` = '" . $db->escape($code) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($row2) {
        extract($row2);

        if ($cocla_signe <> '') {
            $signe = TRUE;
        }
    }
    if ($open == TRUE) {
        close_database();
    }

    return $signe;
}

/**
 * Retourne le nombre d'annexes à un contrat
 *
 * @param $codecocl
 * @param bool $open
 * @return null
 */
function nb_cocla_cocl($codecocl, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    $rexist = 'SELECT COUNT(*) FROM `' . TBCOCLA . "` WHERE `cocla_codecocl` = '" . $db->escape($codecocl) . "'";
    $nb = $db->get_var($rexist);
    if ($open == TRUE) {
        close_database();
    }
    return $nb;
}

/**
 * Calcule le prix de revient d'une annexe contrat (ou de toutes les annexes)
 *
 * @param $codecocl
 * @param $codecocla
 * @param bool $open
 * @return int
 */
function px_vte_cocla($codecocl, $codecocla = '', $open = TRUE)
{
    global
    $db;
    $pv = 0;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    $rech2 = 'SELECT cocla_pvht FROM `' . TBCOCLA . '` WHERE';
    $rech2 .= " `cocla_codecocl` = '" . $db->escape($codecocl) . "'";
    if (trim($codecocla) <> '') {
        $rech2 .= " AND `cocla_code` = '" . $db->escape($codecocla) . "'";
    }
    $rows2 = $db->get_results($rech2, ARRAY_A);
    if ($rows2 AND (count($rows2) > 0)) {
        foreach ($rows2 as $row2) {
            extract($row2);
            $pv += $cocla_pvht;
        }
    }
    if ($open == TRUE) {
        close_database();
    }

    return $pv;
}

/**
 * Dit si site principal inclus dans un contrat principal ou ses annexes, hors une annexe précise
 * Si $codecocla est vide, on teste toutes les annexes
 *
 * @param $codecocl
 * @param $codecocla
 * @param bool $open
 * @return bool
 */
function sitep_in_cocl_except($codecocl, $codecocla, $open = TRUE)
{
    global
    $db;
    $inclus = FALSE;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    // On vérifie dans le contrat principal
    $rexist = 'SELECT cocl_sitep FROM `' . TBCOCL . "` WHERE `cocl_code` = '" . $db->escape($codecocl) . "'";
    $row2 = $db->get_row($rexist, ARRAY_A);
    if ($row2) {
        extract($row2);
        if ((int)$cocl_sitep == 1) {
            $inclus = TRUE;
        }
    }

    if ($inclus == FALSE) {
        // On vérifie dans les annexes, sauf l'annexxe donnée
        $rexist = 'SELECT cocla_sitep FROM `' . TBCOCLA . "` WHERE `cocla_codecocl` = '" . $db->escape($codecocl) . "'";
        if (trim($codecocla) <> '') {
            $rexist .= " AND `cocla_code` <> '" . $db->escape($codecocla) . "'";
        }
        $rows2 = $db->get_results($rexist, ARRAY_A);
        if ($rows2 AND (count($rows2) > 0)) {
            foreach ($rows2 as $row2) {
                extract($row2);
                if ((int)$cocla_sitep == 1) {
                    $inclus = TRUE;
                    break;
                }
            }
        }
    }

    if ($open == TRUE) {
        close_database();
    }

    return $inclus;
}


/**
 * Permet l'affichage d'une fiche de synthèse pour un contrat
 *
 * @param $co
 * @return bool
 */
function display_synthese_cocl($co)
{
    $pbm_cocl = FALSE;

    // Récupération des informations contrat client
    $row = lit_enr_cocl($co);
    if (is_array($row)) {
        $row = encode_str($row);
        extract($row);
        // Contrôle qu'une agence n'essaye pas de "hacker" un contrat
        if (CheckNivLog('3-4') AND ($cocl_codeage <> valsession('code_age'))) {
            $pbm_cocl = TRUE;
        }

        if ($pbm_cocl == FALSE) {
            $codeadev = give_dev_codea_defaut_cocl($cocl_code, $_SESSION['lng']);

            $cocl_datecreaf = datetolocal($cocl_datecrea);
            $cocl_datesigf = datetolocal($cocl_datesig);
            $cocl_datefinf = datetolocal($cocl_datefin);

            // Récupération du contrat type
            $row = lit_enr_co($cocl_codeco);
            $row = encode_str($row);
            extract($row);

            // Récupération des données client
            $row = lit_enr_cli($cocl_codecli, TRUE);
            $row = encode_str($row);
            extract($row);

            echo '<div align="center" class="titrerubrique3" style="font-size: 14px;">';
            echo _('SYNTHESE DE CONTRAT');
            echo '</div>';
            echo '<table border="1" width="100%">';
            echo '<tr>';
            echo '<td align="center" class="annot_std_gras">';
            echo _('CLIENT');
            echo '</td>';
            echo '</tr>';
            echo '<tr>';
            echo '<td>';
            $ent_cli = ''; // détail
            if ($cli_ste <> '') {
                $ent_cli .= $cli_ste . '<br />';
                $ent_cli .= $cli_civilite . ' ' . $cli_prenom . ' ' . $cli_nom . '<br />';
            } else {
                $ent_cli .= $cli_civilite . ' ' . $cli_prenom . ' ' . $cli_nom . '<br /><br />'; // Double saut pour compenser le manque de la société
            }

            $ent_cli .= $cli_adr1 . '<br />'; // Suite...
            if (trim($cli_adr2) <> '') {
                $ent_cli .= $cli_adr2 . '<br />';
            }
            $ent_cli .= Retournecp_Id($cli_ville, TRUE) . ' ' . Retourneville_Id($cli_ville, TRUE) . '<br />';
            $ent_cli .= _('Tel') . ' : ' . $cli_telf . '<br />';
            $ent_cli .= _('Fax') . ' : ' . $cli_fax;
            if (trim($cli_tvai) <> '') {
                $ent_cli .= '<br />' . _('TVA') . ' : ' . $cli_tvai;
            }
            echo $ent_cli;
            echo '</td>';
            echo '</tr>';
            echo '</table>';

            /**********************************/
            /* Impression de la fiche contrat */
            /**********************************/

            echo '<br />';
            echo '<div align="center">';
            echo '<span class="annot_std_gras">';
            echo $cocl_code;
            echo '</span>';

            $echeance_ok = TRUE;
            $txterr = '';
            if (datetolocal($cocl_datef) <> '') {
                if (echeance_depassee_date($datea, $cocl_datef) == TRUE) {
                    $echeance_ok = FALSE;
                }
            }
            if ((datetolocal($cocl_datesig) == '') OR (datetolocal($cocl_datefin) <> '') OR ($echeance_ok == FALSE)) {
                if (datetolocal($cocl_datesig) == '') {
                    $txterr .= _('Non signé');
                    if ((datetolocal($cocl_datefin) <> '') OR ($echeance_ok == FALSE)) {
                        $txterr .= ' / ';
                    }
                }
                if ((datetolocal($cocl_datefin) <> '') OR ($echeance_ok == FALSE)) {
                    $txterr .= _('terminé');
                }
            }
            if ($txterr <> '') {
                echo '<span class="annot_petit_gras_rouge">';
                echo ' ' . $txterr;
                echo '</span>';
            }
            echo '<span class="annot_petit_it">';
            echo ' ' . _('créé le') . ' ' . datetolocal($cocl_datecrea);
            echo '</span>';
            echo '</div>';

            echo '<br />';

            echo '<table border="0" width="100%">';
            echo '<tr>';
            echo '<td align="right">';
            echo _('Site Principal') . ' : ';
            echo '</td>';
            echo '<td>';

            if ($cocl_sitep == 1) {
                echo _('oui');
            } else {
                echo _('non');
            }
            echo '</td>';
            echo '</tr>';

            echo '<tr>';

            // Liste des sites, inclues les annexes
            $lstsites = cree_str_lstsites_cocl($cocl_code);
            if ($lstsites <> '') {
                echo '<td align="right">';
                echo _('Sites Secondaires') . ' : ';
                echo '</td>';
                echo '<td>';
                $tab_scli = explode('-', $lstsites);
                foreach ($tab_scli as $key => $value) {
                    $nom_site = '';
                    $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
                    $rech2 = 'SELECT scli_ste,scli_adr1,scli_adr2,scli_ville FROM `' . TBSCLI . "` WHERE `scli_id` = '$value'";
                    $row2 = $db->get_row($rech2, ARRAY_A);
                    close_database();
                    if ($row2) {
                        $row2 = encode_str($row2);
                        extract($row2);
                        $nom_site .= $scli_ste;
                        $nom_site .= ', ';
                        $nom_site .= $scli_adr1;
                        $nom_site .= ', ';
                        if ($scli_adr2 <> '') {
                            $nom_site .= $scli_adr2;
                            $nom_site .= ', ';
                        }
                        $nom_site .= Retournecp_Id($scli_ville) . ' ' . Retourneville_Id($scli_ville);
                    }
                    echo $nom_site . '<br />';
                }
                echo '</td>';
            }
            echo '</tr>';

            // Agence
            echo '<tr>';
            echo '<td align="right">';
            echo _('Agence') . ' : ';
            echo '</td>';
            echo '<td>';
            $row = lit_enr_age($cocl_codeage, TRUE);
            $row = encode_str($row);
            extract($row);
            $age_nomcode = $age_nom . ' (' . $age_code . ')';
            echo $age_nomcode;
            echo '</td>';
            echo '</tr>';
            // Contrat type
            echo '<tr>';
            echo '<td align="right">';
            echo _('Contrat type') . ' : ';
            echo '</td>';
            echo '<td>';
            echo $co_nom;
            echo '</td>';
            echo '</tr>';
            // Fréquence
            echo '<tr>';
            echo '<td align="right">';
            echo _('Fréquence') . ' : ';
            $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
            $rech = 'SELECT per_desc FROM `' . TBPER . "` WHERE `per_code` = '" . $cocl_codeper . "'";
            $row = $db->get_row($rech, ARRAY_A);
            if ($row) {
                $row = encode_str($row);
                extract($row);
            }
            close_database();
            echo '</td>';
            echo '<td>';
            echo $per_desc;
            echo '</td>';
            echo '</tr>';
            // Délai
            echo '<tr>';
            echo '<td align="right">';
            echo _('Délai') . ' : ';
            echo '</td>';
            echo '<td>';
            echo $cocl_delai . ' ' . _('heures ouvrées');
            echo '</td>';
            echo '</tr>';
            // Temps / Type
            echo '<tr>';
            echo '<td align="right">';
            echo _('Temps initial / Type') . ' : ';
            echo '</td>';
            echo '<td>';
            echo heure_to_hhmm(sec_heure($cocl_nbs, 3, TRUE)) . ' / ' . $typ_horaire[$cocl_typh];
            echo '</td>';
            echo '</tr>';
            echo '<tr>';
            echo '<td align="right">';
            echo '&nbsp;';
            echo '</td>';
            echo '<td>';
            if ($cocl_typh == 1) {
                echo _('Solde réel') . ' : ' . heure_to_hhmm(sec_heure(solde_contrat_sec($cocl_code, TRUE), 3, TRUE)) . ' <span class="annot_petit_it">(' . _('Heures à sortir') . ' : ' . heure_to_hhmm(sec_heure(tps_trav_non_clot_sec($cocl_code, TRUE), 3, TRUE)) . ')</span>';
            }
            echo '</td>';
            echo '</tr>';

            // création de la liste des reports affectés à ce contrat (s'il y en a)
            $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
            $rech = 'SELECT * FROM `' . TBCOCLR . "` WHERE coclr_cocldest = '" . $cocl_code . "' ORDER BY coclr_codeint";
            $rows = $db->get_results($rech, ARRAY_A);

            if ($rows) {
                $totalreport = 0;

                // Titres
                echo '<tr>';
                echo '<td align="center" colspan="2">';
                echo '<table style="border-collapse:collapse;" width="90%" align="center">';
                echo '<tr class="annot_petit_gras_soul">';
                echo '<td align="center">';
                echo _('détails des reports affectés à ce contrat');
                echo '</td>';
                echo '<td align="center">';
                echo _('Durée');
                echo '</td>';
                echo '</tr>';

                foreach ($rows as $row) {
                    $row = encode_str($row);
                    extract($row);
                    echo '<tr class="annot_petit">';
                    if ($coclr_nbsrep > 0) {
                        $txt = _('Report non consommé du contrat');
                    } else {
                        $txt = _('Déduction sur-consommé du contrat');
                    }
                    $txt .= ' ' . $coclr_coclori;
                    if ($coclr_codeint <> '') {
                        $txt .= ' (' . _('Intervention') . ' ' . $coclr_codeint . ')';
                    } else {
                        $txt .= ' (' . _('Clôture manuelle') . ')';
                    }
                    echo '<td style="border:1px solid grey;">';
                    echo $txt;
                    echo '</td>';

                    echo '<td align="center" style="border:1px solid grey;">';
                    if ($coclr_nbsrep > 0) {
                        echo heure_to_hhmm(sec_heure($coclr_nbsrep, 3, TRUE));
                    } else {
                        echo heure_to_hhmm(sec_heure($coclr_nbsrep, 3, TRUE));
                    }
                    $totalreport += $coclr_nbsrep;
                    echo '</td>';
                    echo '</tr>';
                }
                echo '<tr class="annot_petit_itgras">';
                echo '<td align="right" style="border:1px solid grey;">';
                echo _('Total général') . ' : ';
                echo '</td>';
                echo '<td align="center" style="border:1px solid grey;">';
                if ($totalreport > 0) {
                    echo heure_to_hhmm(sec_heure($totalreport, 3, TRUE));
                } else {
                    echo heure_to_hhmm(sec_heure($totalreport, 3, TRUE));
                }
                echo '</td>';
                echo '</table>';
                echo '</td>';
                echo '</tr>';
            }
            close_database();

            // Report heures non consommées
            echo '<tr>';
            echo '<td align="right">';
            echo _('Report heures non cons.') . ' : ';
            echo '</td>';
            echo '<td>';
            echo $non_oui[$cocl_nbsnc];
            echo '</td>';
            echo '</tr>';
            // Report heures dépassées
            echo '<tr>';
            echo '<td align="right">';
            echo _('Report heures dépassées') . ' : ';
            echo '</td>';
            echo '<td>';
            echo $non_oui[$cocl_nbsdep];
            echo '</td>';
            echo '</tr>';
            // validité
            echo '<tr>';
            echo '<td align="right">';
            echo _('Validité : ');
            echo '</td>';
            echo '<td>';
            $txtval = datetolocal($cocl_dated);
            if (datetolocal($cocl_datef) <> '') {
                $txtval .= ' ' . _('au') . ' ' . datetolocal($cocl_datef);
            } else {
                $txtval .= ' <span class="annot_petit_it">(' . _('pas de date limite') . ')</span>';
            }
            echo $txtval . ', ' . _('avec préavis de') . ' ' . $cocl_preavis . ' ' . _('jours') . '.';
            echo '</td>';
            echo '</tr>';
            // Renouvellement automatique
            echo '<tr>';
            echo '<td align="right">';
            echo _('Renouvellement auto.') . ' : ';
            echo '</td>';
            echo '<td>';
            echo $non_oui[$cocl_renauto];
            echo '</td>';
            echo '</tr>';
            // matériel
            echo '<tr>';
            echo '<td align="right">';
            echo _('Matériel') . ' : ';
            echo '</td>';
            echo '<td>';
            echo $cocl_matos;
            echo '</td>';
            echo '</tr>';
            // Date Signature
            echo '<tr>';
            echo '<td align="right">';
            echo _('Signé le') . ' : ';
            echo '</td>';
            echo '<td>';
            echo datetolocal($cocl_datesig);
            echo '</td>';
            echo '</tr>';
            // signé par
            echo '<tr>';
            echo '<td align="right">';
            echo _('Signé par') . ' : ';
            echo '</td>';
            echo '<td>';
            echo $cocl_signe;
            echo '</td>';
            echo '</tr>';
            // relancé
            if (datetolocal($cocl_daterel) <> '') {
                echo '<tr>';
                echo '<td align="right">';
                echo _('Relancé') . ' : ';
                echo '</td>';
                echo '<td>';
                echo datetolocal($cocl_daterel) . '(' . $cocl_nivrel . ' ' . _('fois') . ')';
                echo '</td>';
                echo '</tr>';
            }
            if (datetolocal($cocl_datesig) <> '') {
                // renouvelé
                echo '<tr>';
                echo '<td align="right">';
                echo _('Renouvelé') . ' : ';
                echo '</td>';
                echo '<td>';
                $txtrnum = $non_oui[$cocl_renouv];
                if ($cocl_rnum <> '') {
                    $txtrnum .= ' <span class="annot_petit_it">(' . _('Nouveau contrat') . ' : ' . $cocl_rnum . ')</span>';
                }
                echo $txtrnum;
                echo '</td>';
                echo '</tr>';

                // Clôt
                echo '<tr>';
                echo '<td align="right">';
                echo _('Clôt le') . ' : ';
                echo '</td>';
                echo '<td>';
                echo datetolocal($cocl_datefin);
                echo '</td>';
                echo '</tr>';
            }
            // Prix HT
            echo '<tr>';
            echo '<td align="right">';
            echo _('PV HT') . ' : ';
            echo '</td>';
            echo '<td>';
            echo full_num_format($cocl_pvht, '', '', TRUE);
            echo '</td>';
            echo '</tr>';
            // TVA
            echo '<tr>';
            echo '<td align="right">';
            echo _('TVA') . ' : ';
            echo '</td>';
            echo '<td>';
            $row = lit_enr_tva($cocl_codetva, TRUE);
            if ($row) {
                $row = encode_str($row);
                extract($row);
            }

            echo $tva_desc . ' (' . full_num_format($tva_tx, '', '', FALSE, '', TRUE, TRUE) . '%)';
            echo '</td>';
            echo '</tr>';
            // Prix TTC
            echo '<tr>';
            echo '<td align="right">';
            echo _('PV TTC') . ' : ';
            echo '</td>';
            echo '<td>';
            $txtva = $tva_tx / 100;
            $pvttc = round(($cocl_pvht * (1 + $txtva)) * 100) / 100;
            echo full_num_format($pvttc, '', '', TRUE);
            echo '</td>';
            echo '</tr>';
            echo '</table>';
            echo '<br /><br />';
            echo '<div align="center" class="titrerubrique3" style="font-size: 14px;">';
            echo _('HISTORIQUE');
            echo '</div>';
            echo '<br /><br />';

            // Détail des interventions

            $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
            // On construit la liste des interventions
            $rech = cree_strrechlstcoclh($co);
            $rech .= crestr_triord($coclh_titre_col, 'int_code', FALSE, $limit);
            $rows = $db->get_results($rech, ARRAY_A);
            close_database();

            if ($rows AND (count($rows) > 0)) {
                // Titres
                echo '<table border="0" width="100%">';
                echo '<tr class="annot_petit_gras" style="background-color:#000000;color:#FFFFFF;">';
                echo '<td align="center">';
                echo _('Intervention');
                echo '</td>';
                echo '<td align="center">';
                echo _('Saisie le');
                echo '</td>';
                echo '<td align="center">';
                echo _('Fin le');
                echo '</td>';
                echo '<td align="center">';
                echo _('Agence');
                echo '</td>';
                echo '<td align="center">';
                echo _('Statut');
                echo '</td>';
                echo '<td align="center">';
                echo _('Durée');
                echo '</td>';
                echo '<td align="center">';
                echo _('Retenu');
                echo '</td>';
                echo '</tr>';

                foreach ($rows as $row) {
                    $row = encode_str($row);
                    $tab_inth = cre_tab_inth_int($row['int_code']);
                    //echo $row['int_code'].' : ';print_r($tab_inth);echo '<br>';
                    // Affichage résumé Contrat Client

                    // Récupération du total travaillé
                    $tpstotalsec = 0;
                    $tpsoffsec = 0;
                    $tpsretsec = 0;

                    $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
                    $rech2 = 'SELECT * FROM `' . TBINTH . "` WHERE `inth_codeint`= '" . $row['int_code'] . "'";
                    $rows2 = $db->get_results($rech2, ARRAY_A);
                    close_database();

                    if ($rows2 AND (count($rows2) > 0)) {
                        foreach ($rows2 as $row2) {
                            $row2 = encode_str($row2);
                            $tpspassesec = diff_time_sec($row2['inth_heurea'], $row2['inth_heured']);
                            // Calcul du temps réellement passé
                            $tpstotalsec += $tpspassesec;
                            // C'est du temps offert ?
                            // Oui : on ajoute juste au temps total offert
                            // Non : on ajoute au temps total retenu
                            if ($row2['inth_offert'] == 1) {
                                // Calcul du temps offert
                                $tpsoffsec += $tpspassesec;
                            } else {
                                // Calcul du temps retenu
                                $ind_coeff = 1;
                                if ($row2['inth_codeind'] == '-1') {
                                    $tpsretsec += $tpspassesec;
                                } else {
                                    $row3 = lit_enr_ind($row2['inth_codeind']);
                                    if (is_array($row3)) {
                                        $row3 = encode_str($row3);
                                        extract($row3);
                                        $tpsretsec += ($tpspassesec * $ind_coeff);
                                    }
                                }
                            }
                        }
                    }

                    /*
                    // Si un utilisateur a quitté avant de sauver (bien qu'ayant modifié le détail horaire),
                    // on remet en état car seul le détail horaire et technicien enregistré est valable
                    if ($row['int_durees'] <> $tpsretsec) {
                        $rech2 = "UPDATE `" . TBINT . "` SET `int_datemod`='" . $datea . "', `int_codemod`='" . $codeuser . "',`int_durees`='" . $tpsretsec . "'";
                        $rech2 .= " WHERE `int_code` = '" . $db->escape($ci) . "'";
                        $db->query($rech2);
                        $row['int_durees'] = $tpsretsec;
                    }
                    */

                    echo '<td align="center">';
                    echo $row['int_code'];
                    // Date demande
                    echo '</td>';
                    echo '<td align="center">';
                    echo datetolocal($row['int_datedde']);
                    echo '</td>';
                    //Date Fin
                    echo '<td align="center">';
                    if (datetolocal($row['int_datefin']) <> '') {
                        echo datetolocal($row['int_datefin']);
                    } else {
                        echo '-';
                    }
                    echo '</td>';
                    // Agence
                    echo '<td align="center">' . $row['int_codeage'] . '</td>';
                    // Statut
                    echo '<td align="center">';
                    $txtstatut = $row['int_codestatut'];
                    $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
                    $rech2 = 'SELECT statut_desc FROM `' . TBSTA . "` WHERE statut_code = '" . $row['int_codestatut'] . "'";
                    $row2 = $db->get_row($rech2, ARRAY_A);
                    close_database();
                    if ($row2) {
                        $row2 = encode_str($row2);
                        extract($row2);
                        $txtstatut = $statut_desc;
                    }
                    echo $txtstatut;
                    echo '</td>';

                    echo '<td align="center">';
                    echo '&nbsp;';
                    echo '</td>';
                    echo '<td align="center">';
                    echo '&nbsp;';
                    echo '</td>';

                    echo '</tr>';

                    // Détail
                    if (count($tab_inth) > 0) {
                        foreach ($tab_inth as $tab_detail) {
                            echo '<tr class="annot_petit_it">';
                            echo '<td align="right" colspan="5">';
                            echo $tab_detail['txt'];
                            echo '</td>';
                            echo '<td align="center">';
                            echo heure_to_hhmm(sec_heure($tab_detail['duree']));
                            echo '</td>';
                            echo '<td align="center">';
                            echo heure_to_hhmm(sec_heure($tab_detail['dureeret']));
                            //echo '00:00*';
                            echo '</td>';
                            echo '</tr>';
                        }
                    }

                    // Sous-total par intervention
                    echo '<tr class="annot_petit_gras">';
                    echo '<td align="right" colspan="5">';
                    echo _('Sous-total') . ' ' . $row['int_code'];
                    echo '</td>';
                    echo '<td align="center">';
                    if ($tpstotalsec <> 0) {
                        echo heure_to_hhmm(sec_heure($tpstotalsec, 3, TRUE));
                    } else {
                        echo '-';
                    }
                    echo '</td>';

                    echo '<td align="center">';
                    if ($tpsretsec <> 0) {
                        echo heure_to_hhmm(sec_heure($tpsretsec, 3, TRUE));
                    } else {
                        echo '-';
                    }
                    echo '</td>';

                    echo '</tr>';
                    // Fin affichage résumé Contrat Client

                    $i++;
                }
                echo '</table>';
            } else {
                echo _('Aucun historique interventions sur ce contrat');
            }

            /*
            if ($rows) {

                $nlig = 0;
                $idcurr = 0;
                $total_travail_site_sec = 0;
                $total_travail_site_sec_ret = 0;
                foreach ($rows as $row) {
                    $row = encode_str($row);
                    extract($row);
                    // On teste si sous-total à afficher par site
                    if ($nlig <> 0) {
                        if ($int_idsite <> $idcurr) {
                            // Texte du temps de travail général
                            $txttps = '';
                            if ($total_travail_site_sec <> 0)
                                $txttps .= heure_to_hhmm(sec_heure($total_travail_site_sec, 3, TRUE));
                            else
                                $txttps .= '-';

                            // Texte du temps de travail retenu pour sous-total
                            $txttps_ret = '';
                            if ($total_travail_site_sec_ret <> 0)
                                $txttps_ret .= heure_to_hhmm(sec_heure($total_travail_site_sec_ret, 3, TRUE));
                            else
                                $txttps_ret = '-';

                            echo '<tr class="annot_petit_itgras" style="background-color:grey;">';
                            echo '<td align="right" colspan="5">';
                            echo _('Sous-total par site') . ' : ';
                            echo '</td>';
                            echo '<td align="center">';
                            echo $txttps;
                            echo '</td>';
                            echo '<td align="center">';
                            echo $txttps_ret;
                            echo '</td>';
                            echo '</tr>';

                            $total_travail_site_sec = 0;
                            $total_travail_site_sec_ret = 0;
                        }
                    }

                    $idcurr = $int_idsite;

                    $total_travail_int_sec = 0;
                    $total_travail_int_sec_ret = 0;
                    $total_offert_int_sec = 0;

                    // Ligne "Intervention"
                    echo '<tr class="annot_petit_gras">';
                    echo '<td>';
                    echo $int_code;
                    echo '</td>';
                    echo '<td align="center">';
                    echo datetolocal($int_datedde);
                    echo '</td>';
                    echo '<td align="center">';
                    if (datetolocal($int_datefin) <> '')
                        echo datetolocal($int_datefin);
                    else
                        echo '-';
                    echo '</td>';
                    echo '<td align="center">';
                    echo $int_codeage;
                    echo '</td>';

                    echo '<td align="center" colspan="2">';
                    echo '&nbsp;';
                    echo '</td>';
                    echo '</tr>';
                    if (intval($int_idsite) <> -1) {
                        echo '<tr class="annot_petit_it">';
                        echo '<td style="padding-left:10px;" colspan="7">';
                        echo nom_scli($int_idsite, FALSE, FALSE, FALSE);
                        echo '</td>';
                        echo '</tr>';
                    }

                    // lignes de détail
                    $rech2 = "SELECT inth_date, inth_heurea, inth_heured, inth_offert, inth_codeind";
                    $rech2 .= " FROM `" . TBINTH . "`";
                    $rech2 .= " WHERE inth_codeint = '" . $int_code . "'";
                    $rech2 .= " ORDER BY inth_date, inth_heurea";

                    $rows2 = $db->get_results($rech2, ARRAY_A);

                    if (($rows2) AND (count($rows2) > 0)) {
                        foreach ($rows2 as $row2) {
                            $row2 = encode_str($row2);
                            echo '<tr class="annot_petit">';
                            echo '<td align="right" colspan="5">';
                            $txtinth = '';
                            extract($row2);
                            $txtinth = _('Le') . ' ' . datetolocal($inth_date) . ' ' . _('de') . ' ' . substr($inth_heurea, 0, 5) . ' ' . _('à') . ' ' . substr($inth_heured, 0, 5);
                            $ind_coeff = 1;
                            if (intval($inth_codeind) <> -1) {
                                $rech3 = "SELECT ind_coeff,ind_desc FROM `" . TBIND . "` WHERE ind_code = '" . $inth_codeind . "'";
                                $row3 = $db->get_row($rech3, ARRAY_A);
                                if ($row3) {
                                    $row3 = encode_str($row3);
                                    extract($row3);
                                    $txtinth .= ' (' . $ind_desc . ')';
                                }
                            }
                            echo $txtinth;
                            $duree_sec = heure_sec($inth_heured) - heure_sec($inth_heurea);
                            $duree_hhmm = heure_to_hhmm(sec_heure($duree_sec));

                            $duree_sec_ret = $duree_sec * $ind_coeff;
                            $duree_hhmm_ret = heure_to_hhmm(sec_heure($duree_sec_ret));

                            echo '</td>';
                            if (intval($inth_offert) == 1) {
                                $exist_offert = TRUE;
                                echo '<td align="center">';
                                echo $duree_hhmm;
                                echo '</td>';
                                echo '<td align="center">';
                                echo '00:00*';
                                echo '</td>';

                                // MAJ du total temps travaillé pour cette intervention
                                $total_offert_int_sec += $duree_sec;
                            } else {
                                echo '<td align="center">';
                                echo $duree_hhmm;
                                echo '</td>';
                                echo '<td align="center">';
                                echo $duree_hhmm_ret;
                                echo '</td>';
                            }
                            echo '</tr>';

                            // MAJ des temps travaillés et retenus pour cette intervention
                            $total_travail_int_sec += $duree_sec;
                            if (intval($inth_offert) == 0)
                                $total_travail_int_sec_ret += $duree_sec_ret;
                        }
                    }

                    // Ligne de total

                    // Texte du temps de travail physique pour le sous-total par intervention
                    $txttps = '';
                    if ($total_travail_int_sec <> 0)
                        $txttps .= heure_to_hhmm(sec_heure($total_travail_int_sec, 3, TRUE));
                    else
                        $txttps .= '-';
                    $total_travail_site_sec += $total_travail_int_sec;

                    // Texte du temps de travail retenu pour le sous-total par intervention
                    $txttps_ret = '';
                    if ($total_travail_int_sec_ret <> 0)
                        $txttps_ret .= heure_to_hhmm(sec_heure($total_travail_int_sec_ret, 3, TRUE));
                    else
                        $txttps_ret = '-';
                    $total_travail_site_sec_ret += $total_travail_int_sec_ret;

                    // Affiche du sous-total
                    echo '<tr class="annot_petit_it">';
                    echo '<td align="right" colspan="5">';
                    echo _('Sous-total') . ' ' . $int_code;
                    echo '</td>';
                    echo '<td align="center">';
                    echo $txttps;
                    echo '</td>';
                    echo '<td align="center">';
                    echo $txttps_ret;
                    echo '</td>';

                    // On met à jour le total général
                    $total_travail_con_sec += $total_travail_int_sec;
                    $total_travail_con_sec_ret += $total_travail_int_sec_ret;
                    $total_offert_con_sec += $total_offert_int_sec;

                    echo '</tr>';

                    $nlig++;
                }

                // Dernière ligne de sous-total par site
                $txttps = '';
                if ($total_travail_site_sec <> 0)
                    $txttps .= heure_to_hhmm(sec_heure($total_travail_site_sec, 3, TRUE));
                else
                    $txttps .= '-';

                // Texte du temps de travail retenu pour sous-total
                $txttps_ret = '';
                if ($total_travail_site_sec_ret <> 0)
                    $txttps_ret .= heure_to_hhmm(sec_heure($total_travail_site_sec_ret, 3, TRUE));
                else
                    $txttps_ret = '-';

                echo '<tr class="annot_petit_itgras" style="background-color:grey;">';
                echo '<td align="right" colspan="5">';
                echo _('Sous-total par site') . ' : ';
                echo '</td>';
                echo '<td align="center">';
                echo $txttps;
                echo '</td>';
                echo '<td align="center">';
                echo $txttps_ret;
                echo '</td>';
                echo '</tr>';

                // Totaux

                // Texte du temps de travail général
                $txttps = '';
                if ($total_travail_con_sec <> 0)
                    $txttps .= heure_to_hhmm(sec_heure($total_travail_con_sec, 3, TRUE));
                else
                    $txttps .= '-';

                // Texte du temps de travail retenu pour total général
                $txttps_ret = '';
                if ($total_travail_con_sec_ret <> 0)
                    $txttps_ret .= heure_to_hhmm(sec_heure($total_travail_con_sec_ret, 3, TRUE));
                else
                    $txttps_ret = '-';

                echo '<tr class="annot_petit_itgras">';
                echo '<td align="right" colspan="5">';
                echo _('Total général') . ' : ';
                echo '</td>';
                echo '<td align="center">';
                echo $txttps;
                echo '</td>';
                echo '<td align="center">';
                echo $txttps_ret;
                echo '</td>';
                echo '</tr>';

                if ($total_offert_con_sec <> 0) {
                    echo '<tr class="annot_petit_itgras">';
                    echo '<td align="right" colspan="5">';
                    echo _('Dont offert') . ' : ';
                    echo '</td>';
                    echo '<td align="center">';
                    echo heure_to_hhmm(sec_heure($total_offert_con_sec, 3, TRUE));
                    echo '</td>';
                    echo '<td align="center">';
                    echo '&nbsp;';
                    echo '</td>';
                    echo '</tr>';
                }
                echo '</table>';

                // Si existe temps offert
                if ($exist_offert == TRUE) {
                    echo '<div class="annot_upetit_it">';
                    echo '*' . _('Temps offert');
                    echo '</div>';
                }
            } else
                echo _('Aucun historique pour ce contrat');
            */
        }
    } else {
        $pbm_cocl = TRUE;
    }

    return $pbm_cocl;
}


// Catégories de contrats

/**
 * Lecture enregistrement catégorie contrat
 *
 * @param $code
 * @param bool|TRUE $open
 * @return array|null
 */
function lit_enr_coclcat($code, $open = TRUE)
{
    global
    $db;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }

    $rech2 = 'SELECT * FROM `' . TBCOCLCAT . "` WHERE `coclcat_code` = '" . $db->escape($code) . "'";
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($open == TRUE) {
        close_database();
    }

    return $row2;
}

/**
 * Retourne le code devise (alpha) par défaut pour un client donné
 * Si saisi et correct, retourne le code de la fiche agence
 * Si pas saisi ou pas correct, retourne le code devise par défaut
 *
 * @param bool $open
 * @return string
 * @internal param $codecli
 * @internal param $lng
 */
function give_coclcat_defaut($open = TRUE)
{
    global
    $db;

    $coclcat_code = '';

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }
    $rech2 = 'SELECT coclcat_code FROM `' . TBCOCLCAT . '` WHERE coclcat_default = 1';
    $row2 = $db->get_row($rech2, ARRAY_A);
    if ($row2) {
        extract($row2);
    }
    if ($open == TRUE) {
        close_database();
    }

    return $coclcat_code;
}

/**
 * Vérifie si catégorie contrat utilisée dans un contrat
 *
 * @param $code
 * @param bool|TRUE $open
 * @return bool
 */
function exist_coclcat_in_cocl($code, $open = TRUE)
{
    global
    $db;

    $exist = false;

    if ($open == TRUE) {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    }
    if ($code <> '') {
        $rexist = 'SELECT COUNT(*) FROM `' . TBCOCL . "` WHERE `cocl_codecat` = '" . $db->escape($code) . "'";
    }
    $nbres = $db->get_var($rexist);
    if ($nbres > 0) {
        $exist = TRUE;
    }
    if ($open == TRUE) {
        close_database();
    }

    return $exist;
}

/**
 * Calcul nouveau prix de vente contrat en fonction paramètres de renouvellement (catégorie ou paramètres divers)
 *
 * @param $codecocl
 * @param bool|FALSE $auto
 * @param bool|TRUE $open
 * @return float|int
 */
function calc_new_pv_cat($codecocl, $auto = FALSE, $open = TRUE) {
    global
        $datea;

    $nouv_pv_total = 0;

    if ($codecocl <> '') {
        $row = lit_enr_cocl($codecocl, $open);
        if (is_array($row)) {
            $row = encode_str($row);
            extract($row);

            $pour_hausse = 0;

            // Calcul du prix de vente total HT
            $pv_annexes = px_vte_cocla($cocl_code, '', $open);
            $pv_total = $cocl_pvht + $pv_annexes;
            $nouv_pv_total = $pv_total;

            // Récupération des paramètres de catégorie contrat, si elle existe
            if ($cocl_codecat <> '-1') {
                $row = lit_enr_coclcat($cocl_codecat, $open);
                if ($row) {
                    $row = encode_str($row);
                    extract($row);

                    // Mode manuel
                    if ($auto == FALSE) {
                        $pour_hausse = $coclcat_pourm;
                    } else { // Mode automatique
                        // Calcul du nouveau tarif en fonction durée écoulée sur ancien contrat

                        // Récupération période
                        $per_nbj = 0;
                        $row2 = lit_enr_per($coclcat_codeper, $open);
                        if (is_array($row2)){
                            $row2 = encode_str($row2);
                            extract($row2);
                            $per_nbj = (int)$per_nbj;

                            // Calcul nombre de jours écoulés depuis date de création du contrat
                            $nbjours_ecoules = diff_date_jours($cocl_dated, $datea, TRUE);

                            // Récupération du pourcentage de hausse en fonction période
                            $pour_hausse = $coclcat_pour3;
                            if ($nbjours_ecoules <= $per_nbj) {
                                $pour_hausse = $coclcat_pour1;
                            } else {
                                if ($nbjours_ecoules <= (2*$per_nbj)) {
                                    $pour_hausse = $coclcat_pour2;
                                }
                            }
                        }
                    }
                    // Calcul du nouveau prix de vente total
                    $nouv_pv_total = give_new_mt_hausse($pv_total, $pour_hausse, (int)$coclcat_typarr);
                }
            } else {
                $row = lit_enr_cons();
                if ($row) {
                    $row = encode_str($row);
                    extract($row);
                    if ($cons_coclcat_default == 1) {
                        // Mode manuel
                        if ($auto == FALSE) {
                            $pour_hausse = $cons_coclcat_pourm;
                        } else { // Mode automatique
                            // Calcul du nouveau tarif en fonction durée écoulée sur ancien contrat

                            // Récupération période
                            $per_nbj = 0;
                            $row2 = lit_enr_per($cons_coclcat_codeper, $open);
                            if (is_array($row2)){
                                $row2 = encode_str($row2);
                                extract($row2);
                                $per_nbj = (int)$per_nbj;

                                // Calcul nombre de jours écoulés depuis date de création du contrat
                                $nbjours_ecoules = diff_date_jours($cocl_dated, $datea, TRUE);

                                // Récupération du pourcentage de hausse en fonction période
                                $pour_hausse = $cons_coclcat_pour3;
                                if ($nbjours_ecoules <= $per_nbj) {
                                    $pour_hausse = $cons_coclcat_pour1;
                                } else {
                                    if ($nbjours_ecoules <= (2*$per_nbj)) {
                                        $pour_hausse = $cons_coclcat_pour2;
                                    }
                                }
                            }

                        }
                        // Calcul du nouveau prix de vente total
                        $nouv_pv_total = give_new_mt_hausse($pv_total, $pour_hausse, (int)$cons_coclcat_typarr);
                    }
                }
            }
        }
    }

    return $nouv_pv_total;
}