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


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

/********************************************************/
/* Fonctions de MAJ des textes types pour les courriers */
/* et les emails                                        */
/********************************************************/

/**
 * Récupération des types de champs
 *
 * @param string $table_name
 * @param bool $open
 * @return array
 */
function get_tab_structure($table_name = '', $open = TRUE)
{
    global
    $db;
    $tab_structure = [];
    if ($table_name <> '') {
        if ($open == TRUE) ;
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
        $rech2 = "DESCRIBE `" . $table_name . "`";
        $fields = $db->get_results($rech2, ARRAY_A);
        foreach ($fields as $field) {
            $field_name = $field['Field'];
            $field_type = $field['Type'];
            // Champs de type numérique
            if (substr($field_type, 0, 3) == 'int')
                $field_type = 'entier';
            if (substr($field_type, 0, 6) == 'bigint')
                $field_type = 'entier';
            if (substr($field_type, 0, 7) == 'integer')
                $field_type = 'entier';
            if (substr($field_type, 0, 7) == 'tinyint')
                $field_type = 'entier';
            if (substr($field_type, 0, 8) == 'smallint')
                $field_type = 'entier';
            if (substr($field_type, 0, 9) == 'mediumint')
                $field_type = 'entier';

            // Champs de type décimal
            if (substr($field_type, 0, 5) == 'float')
                $field_type = 'decimal';

            // Champs de type texte
            if (substr($field_type, 0, 4) == 'char')
                $field_type = 'texte';
            if (substr($field_type, 0, 7) == 'varchar')
                $field_type = 'texte';

            // Champs de type texte long
            if (substr($field_type, 0, 4) == 'blob')
                $field_type = 'textelong';
            if (substr($field_type, 0, 8) == 'longblob')
                $field_type = 'textelong';
            if (substr($field_type, 0, 4) == 'text')
                $field_type = 'textelong';
            if (substr($field_type, 0, 8) == 'longtext')
                $field_type = 'textelong';

            // Champs de type date
            if (substr($field_type, 0, 4) == 'date')
                $field_type = 'date';

            // Champs de type heure
            if (substr($field_type, 0, 4) == 'time')
                $field_type = 'heure';

            $tab_structure[$field_name] = $field_type;
        }
    }
    if ($open == TRUE) ;
    $db->disconnect();

    return $tab_structure;
}

/**
 * Balayage des champs d'une base, avec recherche sql
 *
 * @param $sql
 * @param $texte
 * @param string $table_name
 * @param bool $open
 * @return mixed
 */
function mysql_parse_rows($sql, $texte, $table_name = '', $open = TRUE)
{
    global
    $db;

    $txt = $texte;
    $tab_structure = get_tab_structure($table_name, $open);

    if ($open == TRUE) ;
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $row = $db->get_row($sql, ARRAY_A);
    if ($row) {
        $row = encode_str($row);
        foreach ($row as $key => $value) {
            switch ($tab_structure[$key]) {
                // C'est un texte long ?
                case "textelong" :
                    $txt = str_ireplace("%" . $key . "%", formatetxtbr($value), $txt);
                    break;
                // C'est une date ?
                case "date" :
                    $txt = str_ireplace("%" . $key . "%", datetolocal($value), $txt);
                    break;
                //Sinon...
                default :
                    $txt = str_ireplace("%" . $key . "%", $value, $txt);
                    break;
            }
        }
    }
    if ($open == TRUE) ;
    $db->disconnect();

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement centre de gestion
 *
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_cdg($texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_cdg($open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBCG . "`";
        $txt = mysql_parse_rows($sql, $txt, TBCG);

        extract($row);
        $txt = str_replace("%cp_cge%", Retournecp_Id($cge_ville, TRUE), $txt);
        $txt = str_replace("%ville_cge%", Retourneville_Id($cge_ville, TRUE), $txt);
        $txt = str_replace("%dep_cge%", Retournedep($cge_dep, $cge_codepays, TRUE), $txt);
        $txt = str_replace("%pays_cge%", Retournepays($cge_codepays, TRUE), $txt);

    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement agence
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_age($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_age($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBAGE . "` WHERE `age_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBAGE);

        extract($row);
        $txt = str_replace("%cp_age%", Retournecp_Id($age_ville, TRUE), $txt);
        $txt = str_replace("%ville_age%", Retourneville_Id($age_ville, TRUE), $txt);
        $txt = str_replace("%dep_age%", Retournedep($age_dep, $age_codepays, TRUE), $txt);
        $txt = str_replace("%pays_age%", Retournepays($age_codepays, TRUE), $txt);

        // Catégorie
        $row = lit_enr_acat($age_cat, $open);
        if (is_array($row)) {
            $row = encode_str($row);
            extract($row);
            $txt = str_replace("%cat_age%", $acat_desc, $txt);
            $txt = str_replace("%catm_age%", strtolower($acat_desc), $txt);
            $txt = str_replace("%catM_age%", str_majuscules($acat_desc), $txt);
            $txt = str_replace("%cat1M_age%", ucfirst(strtolower($acat_desc)), $txt);
        }

        // Civilité du responsable
        $row = lit_enr_civ($age_resp_civilite, $open);
        if (is_array($row)) {
            $row = encode_str($row);
            extract($row);
            $txt = str_replace("%civiliter_age%", $civ_desc, $txt);
            $txt = str_replace("%civiliterm_age%", strtolower($civ_desc), $txt);
            $txt = str_replace("%civiliterM_age%", str_majuscules($civ_desc), $txt);
            $txt = str_replace("%civiliter1M_age%", ucfirst(strtolower($civ_desc)), $txt);
        }

    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement contact client
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_ccli($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_ccli($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBCCLI . "` WHERE `ccli_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBCCLI);

        extract($row);
        $txt = str_replace("%cp_ccli%", Retournecp_Id($ccli_ville, TRUE), $txt);
        $txt = str_replace("%ville_ccli%", Retourneville_Id($ccli_ville, TRUE), $txt);
        $txt = str_replace("%dep_ccli%", Retournedep($ccli_dep, $ccli_codepays, TRUE), $txt);
        $txt = str_replace("%pays_ccli%", Retournepays($ccli_codepays, TRUE), $txt);

        // Civilité
        $row = lit_enr_civ($ccli_civilite, $open);
        if (is_array($row)) {
            $row = encode_str($row);
            extract($row);
            $txt = str_replace("%civilite_ccli%", $civ_desc, $txt);
            $txt = str_replace("%civilitem_ccli%", strtolower($civ_desc), $txt);
            $txt = str_replace("%civiliteM_ccli%", str_majuscules($civ_desc), $txt);
            $txt = str_replace("%civilite1M_ccli%", ucfirst(strtolower($civ_desc)), $txt);
        }
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement client
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_cli($code, $texte, $open = TRUE)
{
    global
    $db,
    $typ_client,
    $niv_cpta,
    $prev_client;

    $txt = $texte;

    $row = lit_enr_cli($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBCLI . "` WHERE `cli_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBCLI);

        extract($row);
        $txt = str_replace("%cp_cli%", Retournecp_Id($cli_ville, TRUE), $txt);
        $txt = str_replace("%ville_cli%", Retourneville_Id($cli_ville, TRUE), $txt);
        $txt = str_replace("%dep_cli%", Retournedep($cli_dep, $cli_codepays, TRUE), $txt);
        $txt = str_replace("%pays_cli%", Retournepays($cli_codepays, TRUE), $txt);

        // Type du client
        $txt = str_replace("%type_cli%", $typ_client[$cli_type], $txt);

        // Niveau comptable
        $txt = str_replace("%cpta_cli%", $niv_cpta[$cli_cpta], $txt);

        // Comment on le prévient
        $txt = str_replace("%prev_cli%", $prev_client[$cli_prev], $txt);

        // Civilité
        $row = lit_enr_civ($cli_civilite, $open);
        if (is_array($row)) {
            extract($row);
            $txt = str_replace("%civilite_cli%", $civ_desc, $txt);
            $txt = str_replace("%civilitem_cli%", strtolower($civ_desc), $txt);
            $txt = str_replace("%civiliteM_cli%", str_majuscules($civ_desc), $txt);
            $txt = str_replace("%civilite1M_cli%", ucfirst(strtolower($civ_desc)), $txt);
        }

        // Balayage donneur d'ordres
        $txt = parse_txt_do($cli_codedo, $txt);

        // Sites principaux et secondaires du client
        $tab_scli = [];
        if ($open == TRUE)
            $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
        $rech = "SELECT scli_id FROM `" . TBSCLI . "` WHERE `scli_codecli`= '" . $code . "'";
        $rows = $db->get_results($rech, ARRAY_A);
        if (($rows) AND (count($rows) > 0)) {
            foreach ($rows as $row) {
                $row = encode_str($row);
                extract($row);
                $tab_scli[] = $scli_id;
            }
        }
        if ($open == TRUE)
            $db->disconnect();
        if (stristr($txt, "%lsth_scli%"))
            $txt = parse_txt_sclih($code, $tab_scli, $txt);
        if (stristr($txt, "%lstv_scli%"))
            $txt = parse_txt_scliv($code, $tab_scli, $txt);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte pour un site secondaire client sur une demande ($code)
 * Affichage en ligne du texte
 *
 * @param $code
 * @param $idscli
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_ddesclih($code, $idscli, $texte, $open = TRUE)
{
    $txt_insert = "";
    $txt = $texte;

    switch ($idscli) {
        // Aucun site en particulier
        case -1 :
            $txt_insert = _("Aucun site en particulier");
            break;
        // Site principal
        case 0 :
            $row = lit_enr_dde($code, $open);
            if (is_array($row)) {
                $row = encode_str($row);
                extract($row);
                $txt_tmp = $dde_ste . ", ";
                $txt_tmp .= $dde_adr1 . ", ";
                if (trim($dde_adr2) <> "")
                    $txt_tmp .= $dde_adr2 . ", ";
                $txt_tmp .= Retournecp_Id($dde_ville, $open) . " " . Retourneville_Id($dde_ville, $open) . ", ";
                $txt_tmp .= Retournedep($dde_dep, $dde_codepays, $open) . ", ";
                $txt_tmp .= Retournepays($dde_codepays, $open);
                $txt_tmp .= " (" . $dde_telf . ")";
                $txt_insert .= $txt_tmp;
            }
            break;
        // Site secondaire
        default :
            $row = lit_enr_scli_id($idscli, $open);
            if (is_array($row)) {
                $row = encode_str($row);
                extract($row);
                $txt_tmp = $scli_ste . ", ";
                $txt_tmp .= $scli_adr1 . ", ";
                if (trim($scli_adr2) <> "")
                    $txt_tmp .= $scli_adr2 . ", ";
                $txt_tmp .= Retournecp_Id($scli_ville, $open) . " " . Retourneville_Id($scli_ville, $open) . ", ";
                $txt_tmp .= Retournedep($scli_dep, $scli_codepays, $open) . ", ";
                $txt_tmp .= Retournepays($scli_codepays, $open);
                $txt_tmp .= " (" . $scli_telf . ")";
                $txt_insert .= $txt_tmp;
            }
            break;
    }

    $txt = str_replace("%txt_sclih%", $txt_insert, $txt);

    return $txt;
}

/**
 * Mise à jour d'un texte pour un site secondaire client sur une demande ($code)
 * Affichage en colonne du texte
 *
 * @param $code
 * @param $idscli
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_ddescliv($code, $idscli, $texte, $open = TRUE)
{
    $txt_insert = "";
    $txt = $texte;

    switch ($idscli) {
        // Aucun site en particulier
        case -1 :
            $txt_insert = _("Aucun site en particulier");
            break;
        // Site principal
        case 0 :
            $row = lit_enr_dde($code, $open);
            if (is_array($row)) {
                $row = encode_str($row);
                extract($row);
                $txt_tmp = $dde_ste . ", <br />";
                $txt_tmp .= $dde_adr1 . ", <br />";
                if (trim($dde_adr2) <> "")
                    $txt_tmp .= $cli_adr2 . ", <br />";
                $txt_tmp .= Retournecp_Id($dde_ville, $open) . " " . Retourneville_Id($dde_ville, $open) . ", <br />";
                $txt_tmp .= Retournedep($dde_dep, $dde_codepays, $open) . ", <br />";
                $txt_tmp .= Retournepays($dde_codepays, $open) . "<br />";
                $txt_tmp .= "Tel. : " . $dde_telf;
                $txt_insert .= $txt_tmp;
            }
            break;
        // Site secondaire
        default :
            $row = lit_enr_scli_id($idscli, $open);
            if (is_array($row)) {
                $row = encode_str($row);
                extract($row);
                $txt_tmp = $scli_ste . ", <br />";
                $txt_tmp .= $scli_adr1 . ", <br />";
                if (trim($scli_adr2) <> "")
                    $txt_tmp .= $scli_adr2 . ", <br />";
                $txt_tmp .= Retournecp_Id($scli_ville, $open) . " " . Retourneville_Id($scli_ville, $open) . ", <br />";
                $txt_tmp .= Retournedep($scli_dep, $scli_codepays, $open) . ", <br />";
                $txt_tmp .= Retournepays($scli_codepays, $open) . "<br />";
                $txt_tmp .= "Tel. : " . $scli_telf;
                $txt_insert .= $txt_tmp;
            }
            break;
    }

    $txt = str_replace("%txt_scliv%", $txt_insert, $txt);

    return $txt;
}

/**
 * Mise à jour d'un texte pour un site secondaire client*
 * $idscli : ID de l'enregistrement correspondant au site ( si '0' : site principal)
 * Affichage en colonne du résultat
 *
 * @param $code
 * @param $idscli
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_scli($code, $idscli, $texte, $open = TRUE)
{
    $txt_tmp = "";
    $txt = $texte;

    if ($idscli <> 0) {
        $row = lit_enr_scli_id($idscli, $open);
        if (is_array($row)) {
            $row = encode_str($row);
            extract($row);
            $txt_tmp = $scli_ste . ", ";
            $txt_tmp .= $scli_adr1 . ", ";
            if (trim($scli_adr2) <> "")
                $txt_tmp .= $scli_adr2 . ", ";
            $txt_tmp .= Retournecp_Id($scli_ville, $open) . " " . Retourneville_Id($scli_ville, $open) . ", ";
            $txt_tmp .= Retournedep($scli_dep, $scli_codepays, $open) . ", ";
            $txt_tmp .= Retournepays($scli_codepays, $open);
        }
    } else {
        $row = lit_enr_cli($code, $open);
        if (is_array($row)) {
            $row = encode_str($row);
            extract($row);
            $txt_tmp = $cli_ste . ", ";
            $txt_tmp .= $cli_adr1 . ", ";
            if (trim($cli_adr2) <> "")
                $txt_tmp .= $cli_adr2 . ", ";
            $txt_tmp .= Retournecp_Id($cli_ville, $open) . " " . Retourneville_Id($cli_ville, $open) . ", ";
            $txt_tmp .= Retournedep($cli_dep, $cli_codepays, $open) . ", ";
            $txt_tmp .= Retournepays($cli_codepays, $open);
        }
    }

    $txt = str_replace("%txt_scli%", $txt_tmp, $txt);

    return $txt;
}

/**
 * Mise à jour d'un texte pour des sites secondaires clients
 * $tab_scli : tableau contenant les ID des sites à afficher
 * Affichage en ligne de la liste
 *
 * @param $code
 * @param $tab_scli
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_sclih($code, $tab_scli, $texte, $open = TRUE)
{
    $txt_insert = "";
    $txt = $texte;

    foreach ($tab_scli as $idscli) {
        if ($idscli <> 0) {
            $row = lit_enr_scli_id($idscli, $open);
            if (is_array($row)) {
                $row = encode_str($row);
                extract($row);
                $txt_tmp = $scli_ste . ", ";
                $txt_tmp .= $scli_adr1 . ", ";
                if (trim($scli_adr2) <> "")
                    $txt_tmp .= $scli_adr2 . ", ";
                $txt_tmp .= Retournecp_Id($scli_ville, $open) . " " . Retourneville_Id($scli_ville, $open) . ", ";
                $txt_tmp .= Retournedep($scli_dep, $scli_codepays, $open) . ", ";
                $txt_tmp .= Retournepays($scli_codepays, $open);
                $txt_insert .= $txt_tmp . "<br />";
            }
        } else {
            $row = lit_enr_cli($code, $open);
            if (is_array($row)) {
                $row = encode_str($row);
                extract($row);
                $txt_tmp = $cli_ste . ", ";
                $txt_tmp .= $cli_adr1 . ", ";
                if (trim($cli_adr2) <> "")
                    $txt_tmp .= $cli_adr2 . ", ";
                $txt_tmp .= Retournecp_Id($cli_ville, $open) . " " . Retourneville_Id($cli_ville, $open) . ", ";
                $txt_tmp .= Retournedep($cli_dep, $cli_codepays, $open) . ", ";
                $txt_tmp .= Retournepays($cli_codepays, $open);
                $txt_insert .= $txt_tmp . "<br />";
            }
        }
    }


    $txt = str_replace("%lsth_scli%", $txt_insert, $txt);

    return $txt;
}

/**
 * Mise à jour d'un texte pour des sites secondaires clients
 * $tab_scli : tableau contenant les ID des sites à afficher
 * Affichage en colonne de la liste
 *
 * @param $code
 * @param $tab_scli
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_scliv($code, $tab_scli, $texte, $open = TRUE)
{
    $txt_insert = "";
    $txt = $texte;

    foreach ($tab_scli as $idscli) {
        if ($idscli <> 0) {
            $row = lit_enr_scli_id($idscli, $open);
            if (is_array($row)) {
                $row = encode_str($row);
                extract($row);
                $txt_tmp = $scli_ste . "<br />";
                $txt_tmp .= $scli_adr1 . "<br />";
                if (trim($scli_adr2) <> "")
                    $txt_tmp .= $scli_adr2 . "<br />";
                $txt_tmp .= Retournecp_Id($scli_ville, $open) . " " . Retourneville_Id($scli_ville, $open) . "<br />";
                $txt_tmp .= Retournedep($scli_dep, $scli_codepays, TRUE) . "<br />";
                $txt_tmp .= Retournepays($scli_codepays, TRUE);
                $txt_insert .= $txt_tmp . "<br /><br />";
            }
        } else {
            $row = lit_enr_cli($code, $open);
            if (is_array($row)) {
                $row = encode_str($row);
                extract($row);
                $txt_tmp = $cli_ste . "<br />";
                $txt_tmp .= $cli_adr1 . "<br />";
                if (trim($cli_adr2) <> "")
                    $txt_tmp .= $cli_adr2 . "<br />";
                $txt_tmp .= Retournecp_Id($cli_ville, $open) . " " . Retourneville_Id($cli_ville, $open) . "<br />";
                $txt_tmp .= Retournedep($cli_dep, $cli_codepays, $open) . "<br />";
                $txt_tmp .= Retournepays($cli_codepays, $open);
                $txt_insert .= $txt_tmp . "<br /><br />";
            }
        }
    }

    $txt = str_replace("%lstv_scli%", $txt_insert, $txt);

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement donneur d'ordres
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_do($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_do($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBDO . "` WHERE `do_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBDO);

        extract($row);
        $txt = str_replace("%cp_do%", Retournecp_Id($do_ville, $open), $txt);
        $txt = str_replace("%ville_do%", Retourneville_Id($do_ville, $open), $txt);
        $txt = str_replace("%dep_do%", Retournedep($do_dep, $do_codepays, $open), $txt);
        $txt = str_replace("%pays_do%", Retournepays($do_codepays, $open), $txt);

        // Civilité du responsable
        $row = lit_enr_civ($do_resp_civilite, $open);
        if (is_array($row)) {
            $row = encode_str($row);
            extract($row);
            $txt = str_replace("%civiliter_do%", $civ_desc, $txt);
            $txt = str_replace("%civiliterm_do%", strtolower($civ_desc), $txt);
            $txt = str_replace("%civiliterM_do%", str_majuscules($civ_desc), $txt);
            $txt = str_replace("%civiliter1M_do%", ucfirst(strtolower($civ_desc)), $txt);
        }

    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement sous-traitant
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_st($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_st($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBST . "` WHERE `st_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBST);

        extract($row);
        $txt = str_replace("%cp_st%", Retournecp_Id($st_ville, $open), $txt);
        $txt = str_replace("%ville_st%", Retourneville_Id($st_ville, $open), $txt);
        $txt = str_replace("%dep_st%", Retournedep($st_dep, $st_codepays, $open), $txt);
        $txt = str_replace("%pays_st%", Retournepays($st_codepays, $open), $txt);

        // Civilité du responsable
        $row = lit_enr_civ($st_resp_civilite, $open);
        if (is_array($row)) {
            $row = encode_str($row);
            extract($row);
            $txt = str_replace("%civiliter_st%", $civ_desc, $txt);
            $txt = str_replace("%civiliterm_st%", strtolower($civ_desc), $txt);
            $txt = str_replace("%civiliterM_st%", str_majuscules($civ_desc), $txt);
            $txt = str_replace("%civiliter1M_st%", ucfirst(strtolower($civ_desc)), $txt);
        }

    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement technicien
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_tec($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_tec($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBTEC . "` WHERE `tec_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBTEC);

        extract($row);
        $txt = str_replace("%cp_tec%", Retournecp_Id($tec_ville, $open), $txt);
        $txt = str_replace("%ville_tec%", Retourneville_Id($tec_ville, $open), $txt);
        $txt = str_replace("%dep_tec%", Retournedep($tec_dep, $tec_codepays, $open), $txt);
        $txt = str_replace("%pays_tec%", Retournepays($tec_codepays, $open), $txt);

        // Civilité
        $row = lit_enr_civ($tec_civilite, $open);
        if (is_array($row)) {
            $row = encode_str($row);
            extract($row);
            $txt = str_replace("%civilite_tec%", $civ_desc, $txt);
            $txt = str_replace("%civilitem_tec%", strtolower($civ_desc), $txt);
            $txt = str_replace("%civiliteM_tec%", str_majuscules($civ_desc), $txt);
            $txt = str_replace("%civilite1M_tec%", ucfirst(strtolower($civ_desc)), $txt);
        }

        // Balayage agence
        $txt = parse_txt_age($tec_codeage, $txt);

        // Balayage donneur d'ordres
        $txt = parse_txt_do($tec_codedo, $txt);

        // Balayage sous-traitant
        $txt = parse_txt_st($tec_codest, $txt);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement Opérateur
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_ope($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_ope($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBOPE . "` WHERE `ope_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBOPE);

        extract($row);
        $txt = str_replace("%cp_ope%", Retournecp_Id($ope_ville, $open), $txt);
        $txt = str_replace("%ville_ope%", Retourneville_Id($ope_ville, TRUE), $txt);
        $txt = str_replace("%dep_ope%", Retournedep($ope_dep, $ope_codepays, $open), $txt);
        $txt = str_replace("%pays_ope%", Retournepays($ope_codepays, $open), $txt);

        // Civilité
        $row = lit_enr_civ($ope_civilite, $open);
        if (is_array($row)) {
            $row = encode_str($row);
            extract($row);
            $txt = str_replace("%civilite_ope%", $civ_desc, $txt);
            $txt = str_replace("%civilitem_ope%", strtolower($civ_desc), $txt);
            $txt = str_replace("%civiliteM_ope%", str_majuscules($civ_desc), $txt);
            $txt = str_replace("%civilite1M_ope%", ucfirst(strtolower($civ_desc)), $txt);
        }
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement contrat type
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_co($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_co($code, $open);
    if (is_array($row)) {
        $sql = "SELECT * FROM `" . TBCO . "` WHERE `co_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBCO);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement périodicité
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_per($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_per($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBPER . "` WHERE `per_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBPER);

        extract($row);

        if ($per_nbj <> 0)
            $txt_nbj = " (tous les " . $per_nbj . " jours)";
        else
            $txt_nbj = " (à la demande)";
        $txt = str_replace("%perE_cocl%", $per_desc . $txt_nbj, $txt);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement contrat client
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_cocl($code, $texte, $open = TRUE)
{
    global
    $_SESSION;

    $txt = $texte;

    $row = lit_enr_cocl($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBCOCL . "` WHERE `cocl_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBCOCL);

        extract($row);

        // Balayage des champs quotas d'heures
        $txt = str_replace("%heures_cocl%", heure_to_hhmm(sec_heure($cocl_nbs, 3, TRUE)), $txt);
        $txt = str_replace("%solde_cocl%", heure_to_hhmm(sec_heure(solde_reel_contrat_sec($cocl_code, TRUE), 3, TRUE)), $txt);

        // Balayage des champs devises
        $codeadev = give_dev_codea_defaut_cocl($cocl_code, $_SESSION["lng"]);
        $txt = str_replace("%devisecodea_cocl%", $codeadev, $txt);
        $txt = str_replace("%devisetxt_cocl%", give_dev_TXT($codeadev), $txt);

        // Contrat type
        $txt = parse_txt_co($cocl_codeco, $txt);

        // Client
        $txt = parse_txt_cli($cocl_codecli, $txt);

        // Agence
        $txt = parse_txt_age($cocl_codeage, $txt);

        // Périodicité
        $txt = parse_txt_per($cocl_codeper, $txt);

        // Sites principaux et secondaires du client couverts par le contat
        $tab_scli = [];
        if ($cocl_sitep == 1)
            $tab_scli[] = 0;
        if ($open == TRUE)
            $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
        $rech = "SELECT sclic_idscli FROM `" . TBSCLIC . "` WHERE `sclic_codecocl`= '" . $db->escape($code) . "'";
        $rows = $db->get_results($rech, ARRAY_A);
        if (($rows) AND (count($rows) > 0)) {
            foreach ($rows as $row) {
                $row = encode_str($row);
                extract($row);
                $tab_scli[] = $sclic_idscli;
            }
        }
        if ($open == TRUE)
            $db->disconnect();
        if (stristr($txt, "%lsth_scli%"))
            $txt = parse_txt_sclih($cocl_codecli, $tab_scli, $txt);
        if (stristr($txt, "%lstv_scli%"))
            $txt = parse_txt_scliv($cocl_codecli, $tab_scli, $txt);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement contrat de location client
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_coloc($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_coloc($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBCOLOC . "` WHERE `coloc_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBCOLOC);

        extract($row);

        // Agence
        $txt = parse_txt_age($coloc_codeage, $txt);

        // Souscripteur du contrat

        // Si besoin, on remplace les champs %cli_xxxxx% par ceux des vrais destinataires
        // (Cette "astuce" évite de surmultiplier les contrats)
        switch ($coloc_typcli) {
            // Client
            case 0 :
                $txt = parse_txt_cli($coloc_codecli, $txt);

                // Site secondaire
                $txt = parse_txt_scli($coloc_codecli, $coloc_idsite, $txt);
                break;
            // Agence
            case 1 :
                $txt = str_ireplace("%cli_ste", "%age_nom", $txt);
                $txt = str_ireplace("%cli_civilite", "%age_resp_civilite", $txt);
                $txt = str_ireplace("%cli_prenom", "%age_resp_prenom", $txt);
                $txt = str_ireplace("%cli_nom", "%age_resp_nom", $txt);
                $txt = str_ireplace("%cp_cli", "%cp_age", $txt);
                $txt = str_ireplace("%ville_cli", "%ville_age", $txt);
                $txt = str_ireplace("%cli_", "%age_", $txt);
                $txt = parse_txt_age($coloc_codecli, $txt);
                break;
            // Technicien Agence ou SS-Traitant
            case 2 :
            case 4 :
                $txt = str_ireplace("%cli_ste", "%tec_nom", $txt);
                $txt = str_ireplace("%cli_civilite", "%tec_civilite", $txt);
                $txt = str_ireplace("%cli_prenom", "%tec_prenom", $txt);
                $txt = str_ireplace("%cli_nom", "%tec_nom", $txt);
                $txt = str_ireplace("%cp_cli", "%cp_tec", $txt);
                $txt = str_ireplace("%ville_cli", "%ville_tec", $txt);
                $txt = str_ireplace("%cli_rcs%", "", $txt);
                $txt = str_ireplace("%cli_", "%tec_", $txt);
                $txt = parse_txt_tec($coloc_codecli, $txt);
                break;
            // Sous-traitant
            case 3 :
                $txt = str_ireplace("%cli_ste", "%st_nom", $txt);
                $txt = str_ireplace("%cli_civilite", "%st_resp_civilite", $txt);
                $txt = str_ireplace("%cli_prenom", "%st_resp_prenom", $txt);
                $txt = str_ireplace("%cli_nom", "%st_resp_nom", $txt);
                $txt = str_ireplace("%cp_cli", "%cp_st", $txt);
                $txt = str_ireplace("%ville_cli", "%ville_st", $txt);
                $txt = str_ireplace("%cli_", "%st_", $txt);
                $txt = parse_txt_st($coloc_codecli, $txt);
                break;
        }
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement type de demande
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_ddet($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_ddet($code, $open);
    if (is_array($row)) {
        $sql = "SELECT * FROM `" . TBDDET . "` WHERE `ddet_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBDDET);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement demande
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_dde($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_dde($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBDDE . "` WHERE `dde_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBDDE);

        extract($row);
        $txt = str_replace("%cp_dde%", Retournecp_Id($dde_ville, $open), $txt);
        $txt = str_replace("%ville_dde%", Retourneville_Id($dde_ville, $open), $txt);
        $txt = str_replace("%dep_dde%", Retournedep($dde_dep, $dde_dep, $open), $txt);
        $txt = str_replace("%pays_dde%", Retournepays($dde_pays, $open), $txt);

        // Balayage des niveaux d'urgence
        $row = lit_enr_urg($dde_urg, $open);
        if (is_array($row)) {
            $row = encode_str($row);
            extract($row);
        }
        $txt = str_replace("%urg_dde%", ucfirst(strtolower($urg_des)), $txt);

        // Balayage des types de demande
        $txt = parse_txt_ddet($dde_codeddet, $txt);

        // Civilité
        $row = lit_enr_civ($dde_civilite, $open);
        if (is_array($row)) {
            $row = encode_str($row);
            extract($row);
            $txt = str_replace("%civilite_dde%", $civ_desc, $txt);
            $txt = str_replace("%civilitem_dde%", strtolower($civ_desc), $txt);
            $txt = str_replace("%civiliteM_dde%", str_majuscules($civ_desc), $txt);
            $txt = str_replace("%civilite1M_dde%", ucfirst(strtolower($civ_desc)), $txt);
        }

        // Balayage des sites secondaire du client
        // Uniquement si depuis espace privé
        if ($dde_orig == 1) {
            if (stristr($txt, "%txt_sclih%"))
                $txt = parse_txt_ddesclih($code, $dde_scli, $txt);
            if (stristr($txt, "%txt_scliv%"))
                $txt = parse_txt_ddescliv($code, $dde_scli, $txt);
        }

    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement dossier de suivi
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_dos($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_dos($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBDOS . "` WHERE `dos_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBDOS);

        extract($row);

        // Client
        $txt = parse_txt_cli($dos_codecli, $txt);

        // Agence
        $txt = parse_txt_age($dos_codeage, $txt);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement origine intervention
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_orig($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_orig($code, $open);
    if (is_array($row)) {
        $sql = "SELECT * FROM `" . TBORI . "` WHERE `orig_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBORI);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement statut intervention
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_statut($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_statut($code, $open);
    if (is_array($row)) {
        $sql = "SELECT * FROM `" . TBSTA . "` WHERE `statut_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBSTA);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement lieu
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_lieu($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_lieu($code, $open);
    if (is_array($row)) {
        $sql = "SELECT * FROM `" . TBLIEU . "` WHERE `lieu_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBLIEU);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un moyen d'expédition
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_me($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_me($code, $open);
    if (is_array($row)) {
        $sql = "SELECT * FROM `" . TBME . "` WHERE `me_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBME);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement règlement
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_reg($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_reg($code, $open);
    if (is_array($row)) {
        $sql = "SELECT * FROM `" . TBREG . "` WHERE `reg_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBREG);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement intervention
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_int($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_int($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBINT . "` WHERE `int_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBINT);

        extract($row);

        // Balayage des niveaux d'urgence
        $row = lit_enr_urg($int_urg, $open);
        if (is_array($row)) {
            $row = encode_str($row);
            extract($row);
        }
        $txt = str_replace("%urg_int%", ucfirst(strtolower($urg_des)), $txt);

        // Heure de RDV
        $txt = str_replace("%hrdv_int%", substr($int_hrdv, 0, 5), $txt);

        // Balayage des origines
        $txt = parse_txt_orig($int_codeorig, $txt);

        // Balayage des statuts
        $txt = parse_txt_statut($int_codestatut, $txt);

        // Balayage des lieux
        $txt = parse_txt_lieu($int_codelieu, $txt);

        // Balayage des règlements
        $txt = parse_txt_reg($int_codereg, $txt);

        // Balayage technicien
        $txt = parse_txt_tec($int_codetec, $txt);

        // Balayage agence
        $txt = parse_txt_age($int_codeage, $txt);

        // Balayage donneur d'ordres
        $txt = parse_txt_do($int_codedo, $txt);

        // Balayage sous-traitant
        $txt = parse_txt_st($int_codest, $txt);

        // Balayage client
        $txt = parse_txt_cli($int_codecli, $txt);

        // Balayage site client
        $txt = parse_txt_scli($int_codecli, $int_idsite, $txt);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement détail horaire intervention
 *
 * @param $id
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_inth($id, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_inth($id, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBINTH . "` WHERE `inth_id` = '" . $id . "'";
        $txt = mysql_parse_rows($sql, $txt, TBINTH);

        extract($row);

        $txt = parse_txt_int($inth_codeint, $txt);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'une série d'enregistrements interventions
 *
 * @param $tab_code
 * @param $texte
 * @param bool $open
 */
function parse_txt_intm($tab_code, $texte, $open = TRUE)
{
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement ordre sous-traitance
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_ot($code, $texte, $open = TRUE)
{
    global
    $db;
    $txt = $texte;

    $row = lit_enr_ot($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBOT . "` WHERE `ot_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBOT);

        extract($row);

        // Balayage des niveaux d'urgence
        $row = lit_enr_urg($ot_urg, $open);
        if (is_array($row)) {
            $row = encode_str($row);
            extract($row);
        }
        $txt = str_replace("%urg_ot%", ucfirst(strtolower($urg_des)), $txt);

        // Heure de RDV
        $txt = str_replace("%hrdv_ot%", substr($ot_hrdv, 0, 5), $txt);

        // Balayage des statuts
        $txt = parse_txt_statut($ot_codestatut, $txt);

        // Balayage des lieux
        $txt = parse_txt_lieu($ot_codelieu, $txt);

        // Balayage technicien
        $txt = parse_txt_tec($ot_codetec, $txt);

        // Balayage intervention
        $txt = parse_txt_int($ot_codeint, $txt);

        // Balayage sous-traitant
        $txt = parse_txt_st($ot_codest, $txt);

        // Balayage client
        $txt = parse_txt_cli($ot_codecli, $txt);

        // Balayage site client
        $txt = parse_txt_scli($ot_codecli, $ot_idsite, $txt);

        // Balayage agence
        if ($open == TRUE)
            $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
        $rech = "SELECT cli_prop FROM `" . TBCLI . "` WHERE `cli_code`= '" . $ot_codecli . "'";
        $row = $db->get_row($rech, ARRAY_A);
        if ($row) {
            $row = encode_str($row);
            extract($row);
        }
        if ($open == TRUE)
            $db->disconnect();
        if (trim($cli_prop) <> "")
            $txt = parse_txt_age($cli_prop, $txt);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement marque
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_mque($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_mque($code, $open);
    if (is_array($row)) {
        $sql = "SELECT * FROM `" . TBMQUE . "` WHERE `mque_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBMQUE);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement type licence
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_tl($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_rltl($code, $open);
    if (is_array($row)) {
        $sql = "SELECT * FROM `" . TBRLTL . "` WHERE `rltl_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBRLTL);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement média
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_med($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_med($code, $open);
    if (is_array($row)) {
        $sql = "SELECT * FROM `" . TBRLMED . "` WHERE `rlmed_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBRLMED);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement type accès télémaintenance
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_tmta($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_tmta($code, $open);
    if (is_array($row)) {
        $sql = "SELECT * FROM `" . TBRLPTMTA . "` WHERE `rlptmta_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBRLPTMTA);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement catégorie produit
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_rpcat($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_rpcat($code, $open);
    if (is_array($row)) {
        $sql = "SELECT * FROM `" . TBRPCAT . "` WHERE `rpcat_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBRPCAT);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement Relevé
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_rel($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_rel($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBREL . "` WHERE `rel_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBREL);

        extract($row);

        // Balayage client
        $txt = parse_txt_cli($rel_codecli, $txt);

        // Balayage agence
        $txt = parse_txt_age($rel_codeage, $txt);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement produit à retourner
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_retp($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_retp($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBRETP . "` WHERE `retp_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBRETP);

        extract($row);

        // Type de document
        $txt = str_replace("%blf_retp%", $doc_types[$retp_blf], $txt);

        // Balayage des marques
        $txt = parse_txt_mque($retp_codemque, $txt);

        // Balayage des agences
        $txt = parse_txt_age($retp_codeage, $txt);

        // Balayage des interventions
        $txt = parse_txt_int($retp_codeint, $txt);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement demande de retour
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_retd($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_retd($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBRETD . "` WHERE `retd_coderetp` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBRETD);

        extract($row);

        // Traitement fiche produit à retourner
        $txt = parse_txt_retp($code, $txt);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement traitement de retour
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_retr($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_retr($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBRETR . "` WHERE `retr_coderetp` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBRETR);

        extract($row);

        // Traitement fiche produit à retourner et demande de retour
        $txt = parse_txt_retd($code, $txt);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement Relevé licence
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_rlic($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_rlic($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBRLIC . "` WHERE `rlic_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBRLIC);

        extract($row);

        // Balayage des marques
        $txt = parse_txt_mque($rlic_codema, $txt);

        // Balayage des types licences
        $txt = parse_txt_tl($rlic_codetl, $txt);

        // Balayage des médias
        $txt = parse_txt_med($rlic_codemed, $txt);

        // Balayage des type accès télémaintenance
        $txt = parse_txt_tmta($rlic_codeta, $txt);

        // Balayage client
        $txt = parse_txt_cli($rlic_codecli, $txt);

        // Balayage technicien
        $txt = parse_txt_tec($rlic_codetec, $txt);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement Relevé produit
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_rpdt($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_rpdt($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBRPDT . "` WHERE `rpdt_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBRPDT);

        extract($row);

        // Balayage des catégories
        $txt = parse_txt_rpcat($rpdt_codecat, $txt);

        // Balayage des marques
        $txt = parse_txt_mque($rpdt_codema, $txt);

        // Balayage des type accès télémaintenance
        $txt = parse_txt_tmta($rpdt_codeta, $txt);

        // Balayage client
        $txt = parse_txt_cli($rpdt_codecli, $txt);

        // Balayage technicien
        $txt = parse_txt_tec($rpdt_codetec, $txt);
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement problème sur Relevé
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_rpbm($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_rpbm($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBRPBM . "` WHERE `rpbm_id` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBRPBM);

        extract($row);

        // Balayage client
        $txt = parse_txt_cli($rpbm_codecli, $txt);

        // Sites
        if ($rpbm_idsite == 0) {
            $txt = str_replace("%sitenom_rpbm%", "Site principal", $txt);
            $txt = str_replace("%siteadr1_rpbm%", "", $txt);
            $txt = str_replace("%siteadr2_rpbm%", "", $txt);
            $txt = str_replace("%sitecp_rpbm%", "", $txt);
            $txt = str_replace("%siteville_rpbm%", "", $txt);
        }

        if ($rpbm_idsite > 0) {
            $row2 = lit_enr_scli_id($row["rpbm_idsite"], $open);
            if (is_array($row2)) {
                $row2 = encode_str($row2);
                extract($row2);
                $txt = str_replace("%sitenom_rpbm%", $scli_ste, $txt);
                $txt = str_replace("%siteadr1_rpbm%", $scli_adr1, $txt);
                $txt = str_replace("%siteadr2_rpbm%", $scli_adr2, $txt);
                $txt = str_replace("%sitecp_rpbm%", Retournecp_Id($scli_ville, $open), $txt);
                $txt = str_replace("%siteville_rpbm%", Retourneville_Id($scli_ville, $open), $txt);
            }
        }

        // Balayage agence
        $row = lit_enr_cli($rpbm_codecli, $open);
        if (is_array($row)) {
            $row = encode_str($row);
            extract($row);
            $txt = parse_txt_age($cli_prop, $txt);
        }

    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement fichier
 *
 * @param $code
 * @param $texte
 * @param $codedest
 * @param bool $open
 * @return mixed
 */
function parse_txt_fic($code, $texte, $codedest, $open = TRUE)
{
    global
    $rep_aff;

    $txt = $texte;
    $row = lit_enr_fic($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBFIC . "` WHERE `fic_nom` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBFIC);
        extract($row);

        // Type de fichier
        if ($fic_type == 0)
            $txt = str_replace("%type_fic%", "dossier", $txt);
        else
            $txt = str_replace("%type_fic%", "fichier", $txt);

        // Répertoire du fichier
        $txt = str_replace("%sr_fic%", $rep_aff, $txt);

        if (trim($codedest) <> "") {
            // Balayage agence
            $row = lit_enr_age($codedest, $open);
            if (is_array($row)) {
                $row = encode_str($row);
                extract($row);
                $txt = parse_txt_age($age_code, $txt);
            }

            // Balayage client
            $row = lit_enr_cli($codedest, $open);
            if (is_array($row)) {
                $row = encode_str($row);
                extract($row);
                $txt = parse_txt_cli($cli_code, $txt);
            }
        }
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction d'un enregistrement tâche
 *
 * @param $code
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txt_tac($code, $texte, $open = TRUE)
{
    $txt = $texte;

    $row = lit_enr_tac($code, $open);
    if (is_array($row)) {
        $row = encode_str($row);
        $sql = "SELECT * FROM `" . TBTAC . "` WHERE `tac_code` = '" . $code . "'";
        $txt = mysql_parse_rows($sql, $txt, TBTAC);

        extract($row);

        switch ($tac_typdest) {
            // Balayage technicien agence ou sous-traitant
            case 1 :
            case 3 :
                $txt = parse_txt_tec($tac_codedest, $txt);
                break;

            // Balayage agence
            case 2 :
                $txt = parse_txt_age($tac_codedest, $txt);
                break;

            // Balayage sous-traitant
            case 4 :
                $txt = parse_txt_st($tac_codedest, $txt);
                break;
        }
    }

    return $txt;
}

/**
 * Mise à jour d'un texte en fonction de codes de champs
 *
 * @param $type
 * @param $code
 * @param $texte
 * @param $nomfic
 * @param bool $open
 * @return mixed
 */
function parse_txtcorps($type, $code, $texte, $nomfic, $open = TRUE)
{
    $txt = $texte;

    // Balayage de 1er niveau
    switch ($type) {
        // Administrateur
        case "adm" :
            break;

        // Agence
        case "age" :
            // Balayage des champs complémentaires agence
            $txt = parse_txt_age($code, $txt);
            break;

        // Centre de gestion
        case "cdg" :
            // Balayage des champs complémentaires centre de gestion
            $txt = parse_txt_cdg($txt);
            break;

        // Contact Client
        case "ccli" :
            // Balayage des champs complémentaires contact client
            $txt = parse_txt_ccli($code, $txt);
            break;

        // Client
        case "cli" :
            // Balayage des champs complémentaires client
            $txt = parse_txt_cli($code, $txt);
            // Au cas où le client n'est pas affecté à une agence
            $row = lit_enr_cli($code, $open);
            if (is_array($row)) {
                $row = encode_str($row);
                extract($row);
                if ($cli_prop == "") {
                    $txt = str_replace("%_age%", "_cge", $txt);
                    $txt = str_replace("%age_%", "cge_", $txt);
                }
            }
            break;

        // Contrat de location
        case "col" :
            // Balayage des champs complémentaires contrat location client
            $txt = parse_txt_coloc($code, $txt);
            break;

        // Contrat
        case "con" :
            // Balayage des champs complémentaires contrat client
            $txt = parse_txt_cocl($code, $txt);
            break;

        // Demande
        case "dde" :
            // Balayage des champs complémentaires demande
            $txt = parse_txt_dde($code, $txt);
            break;

        // Donneur d'ordres
        case "do" :
            // Balayage des champs complémentaires donneur d'ordres
            $txt = parse_txt_do($code, $txt);
            break;

        // Dossier de suivi
        case "dos" :
            // Balayage des champs complémentaires dossier
            $txt = parse_txt_dos($code, $txt);
            break;

        // Fichiers Internes : Répertoire
        case "dir" :
            // Fichiers Internes : Fichier
        case "fic" :
            $txt = parse_txt_fic($nomfic, $txt, $code);
            break;

        // Intervention
        case "int" :
            // Balayage des champs complémentaires intervention
            $txt = parse_txt_int($code, $txt);
            // Au cas où le client n'est pas affecté à une agence
            $row = lit_enr_int($code, $open);
            if (is_array($row)) {
                extract($row);
                $row = lit_enr_cli($int_codecli, $open);
                if (is_array($row)) {
                    extract($row);
                    if ($cli_prop == "") {
                        $txt = str_replace("_age%", "_cge%", $txt);
                        $txt = str_replace("%age_", "%cge_", $txt);
                    }
                }
            }
            break;

        // Intervention : détail horaire
        case "inth" :
            // Balayage des champs complémentaires intervention
            $txt = parse_txt_inth(intval($code), $txt);
            $row = lit_enr_inth(intval($code), $open);
            if (is_array($row)) {
                extract($row);

                $row2 = lit_enr_int($inth_codeint, $open);

                if (is_array($row2)) {
                    $row2 = encode_str($row2);
                    extract($row2);
                    $row = lit_enr_cli($int_codecli, $open);
                    if (is_array($row)) {
                        extract($row);
                        if ($cli_prop == "") {
                            $txt = str_replace("_age%", "_cge%", $txt);
                            $txt = str_replace("%age_", "%cge_", $txt);
                        }
                    }
                }
            }
            break;

        // Opérateur
        case "ope" :
            // Balayage des champs complémentaires Opérateur
            $txt = parse_txt_ope($code, $txt);
            break;

        // Ordre sous-traitance
        case "ot" :
            // Balayage des champs complémentaires ordre
            $txt = parse_txt_ot($code, $txt);
            break;

        // Relevé (Dossier)
        case "rel" :
            // Balayage des champs complémentaires Relevés
            $txt = parse_txt_rel($code, $txt);
            break;

        // Produit à retourner
        case "retp" :
            // Balayage des champs complémentaires produit à retourner
            $txt = parse_txt_retp($code, $txt);
            break;

        // Traitement du retour
        case "retr" :
            // Balayage des champs complémentaires produit à retourner
            $txt = parse_txt_retr($code, $txt);
            break;

        // Relevé (Licence)
        case "rlic" :
            // Balayage des champs complémentaires Relevés licences
            $txt = parse_txt_rlic($code, $txt);
            break;

        // Relevé (Matériel)
        case "rpdt" :
            // Balayage des champs complémentaires Relevés produits
            $txt = parse_txt_rpdt($code, $txt);
            break;

        // Déclaration de problème
        case "rpbm" :
            // Balayage des champs complémentaires déclaratation problème
            $txt = parse_txt_rpbm($code, $txt);
            break;

        // Sous-traitant
        case "st" :
            // Balayage des champs complémentaires sous-traitant
            $txt = parse_txt_st($code, $txt);
            break;

        // Tâches
        case "tac" :
            // Balayage des champs complémentaires tâches
            $txt = parse_txt_tac($code, $txt);
            break;

        // Technicien
        case "tec" :
            // Balayage des champs complémentaires technicien
            $txt = parse_txt_tec($code, $txt);
            break;

        default :
            break;
    }

    // Balayage des champs centre de gestion
    $txt = parse_txt_cdg($txt);

    return $txt;
}

/**
 * Mise à jour du corps de texte en fonction de codes de champs pour les emailings
 *
 * @param $typedest
 * @param $codedest
 * @param $typeexp
 * @param $codeexp
 * @param $texte
 * @param bool $open
 * @return mixed
 */
function parse_txtcorps_em($typedest, $codedest, $typeexp, $codeexp, $texte, $open = TRUE)
{
    $txt = $texte;

    // Balayage de l'expéditeur
    switch ($typeexp) {
        // Administrateur
        case "adm" :
            break;
        // Agence
        case "age" :
            // Balayage des champs complémentaires agence
            $txt = parse_txt_age($codeexp, $txt, $open);
            break;

        // Donneur d'ordres
        case "do" :
            // Balayage des champs complémentaires donneur d'ordres
            $txt = parse_txt_do($codeexp, $txt, $open);
            break;

        // Sous-traitant
        case "st" :
            // Balayage des champs complémentaires sous-traitant
            $txt = parse_txt_st($codeexp, $txt, $open);
            break;

        // Centre de gestion
        case "cdg" :
            break;

        default :
            break;
    }

    // Balayage des champs centre de gestion
    $txt = parse_txt_cdg($txt);


    // Balayage du destinataire
    switch ($typedest) {
        // Agence
        case "age" :
            // Balayage des champs complémentaires agence
            $txt = parse_txt_age($codedest, $txt, $open);
            break;

        // Client
        case "cli" :
            // Balayage des champs complémentaires client
            $txt = parse_txt_cli($codedest, $txt, $open);
            break;

        // Donneur d'ordres
        case "do" :
            // Balayage des champs complémentaires donneur d'ordres
            $txt = parse_txt_do($codedest, $txt, $open);
            break;

        // Opérateur
        case "ope" :
            // Balayage des champs complémentaires Opérateur
            $txt = parse_txt_ope($codedest, $txt, $open);
            break;

        // Sous-traitant
        case "st" :
            // Balayage des champs complémentaires sous-traitant
            $txt = parse_txt_st($codedest, $txt, $open);
            break;

        // Technicien
        case "tec" :
            // Technicien Donneur d'ordres
        case "tecd" :
            // Technicien Sous-traitants
        case "tecs" :
            // Balayage des champs complémentaires technicien
            $txt = parse_txt_tec($codedest, $txt, $open);
            break;

        default :
            break;
    }
    return $txt;
}


/**
 * Création du corps du texte d'un courrier
 *
 * @param $type
 * @param $mode
 * @param $orig
 * @param $dest
 * @param $code
 * @param $pass
 * @param $total
 * @param bool $open
 * @return mixed
 */
function cre_corps_txtc($type, $mode, $orig, $dest, $code, $pass, $total, $open = TRUE)
{
    global
    $chemin_logos;

    $txt = lit_enr_txtf($type, $mode, $orig, $dest, $open);

    // Création du cors de texte
    $txtcorps = parse_txtcorps($type, $code, $txt, "", $open);

    //Mot de passe
    $txtcorps = str_replace("%pass%", $pass, $txtcorps);

    //Montant total
    $txtcorps = str_replace("%total%", full_num_format($total, '', '', TRUE, '', $open), $txtcorps);

    // Il y a un logo centre de gestion ?
    $txtcorps = str_replace("%logo_cge%", '<img src="' . $chemin_logos . '/logcge.png" alt="'._("logo_siege").'">', $txtcorps);

    // Il y a un logo agence ?
    if (stristr($txtcorps, "%logo_age%")) {
        $codeage = "";
        // Balayage des types
        switch ($type) {
            // Agence
            case "age" :
                $codeage = give_codeage($code, $open);;
                break;

            // Client
            case "cli" :
                $row = lit_enr_cli($code, $open);
                if (is_array($row)) {
                    $row = encode_str($row);
                    extract($row);
                    if ($cli_prop <> "")
                        $codeage = give_codeage($cli_prop, $open);
                    else
                        $codeage = "cge";
                }
                break;

            // Contrat location
            case "col" :
                $row = lit_enr_coloc($code, $open);
                if (is_array($row)) {
                    $row = encode_str($row);
                    extract($row);
                    if ($coloc_codeage <> "")
                        $codeage = give_codeage($coloc_codeage, $open);
                }
                break;

            // Contrat
            case "con" :
                $row = lit_enr_cocl($code, $open);
                if (is_array($row)) {
                    $row = encode_str($row);
                    extract($row);
                    if ($cocl_codeage <> "")
                        $codeage = give_codeage($cocl_codeage, $open);
                }
                break;

            // Dossier de suivi
            case "dos" :
                // Balayage des champs complémentaires dossier
                $txtcorps = parse_txt_dos($code, $txt);
                break;

            // Intervention
            case "int" :
                $row = lit_enr_int($code, $open);
                if (is_array($row)) {
                    $row = encode_str($row);
                    extract($row);
                    if ($int_codeage <> "")
                        $codeage = give_codeage($int_codeage, $open);
                    else
                        $codeage = "cge";
                }
                break;

            // Intervention : détail horaire
            case "inth" :
                $row = lit_enr_inth(intval($code), $open);
                if (is_array($row)) {
                    $row = encode_str($row);
                    extract($row);

                    $row2 = lit_enr_int($inth_codeint, $open);

                    if (is_array($row2)) {
                        $row2 = encode_str($row2);
                        extract($row2);
                        if ($int_codeage <> "")
                            $codeage = give_codeage($int_codeage, $open);
                        else
                            $codeage = "cge";
                    }
                }
                break;

            // Ordre sous-traitance
            case "ot" :
                $row = lit_enr_ot($code, $open);
                if (is_array($row)) {
                    extract($row);
                    $row = lit_enr_int($ot_codeint, $open);
                    if (is_array($row)) {
                        $row = encode_str($row);
                        extract($row);
                        if ($int_codeage <> "")
                            $codeage = give_codeage($int_codeage, $open);
                    }
                }
                break;

            // Relevé (Dossier)
            case "rel" :
                $row = lit_enr_rel($code, $open);
                if (is_array($row)) {
                    $row = encode_str($row);
                    extract($row);
                    if ($rel_codeage <> "")
                        $codeage = give_codeage($rel_codeage, $open);
                }
                break;

            // Produit à retourner
            case "retp" :
                // Traitement retour
            case "retr" :
                $row = lit_enr_retp($code, $open);
                if (is_array($row)) {
                    $row = encode_str($row);
                    extract($row);
                    if ($retp_codeage <> "")
                        $codeage = give_codeage($retp_codeage, $open);
                }
                break;

            // Relevé (Licence)
            case "rlic" :
                $row = lit_enr_rlic($code, $open);
                if (is_array($row)) {
                    $row = encode_str($row);
                    extract($row);
                    if ($rlic_codeage <> "")
                        $codeage = give_codeage($rlic_codeage, $open);
                }
                break;

            // Relevé (Matériel)
            case "rpdt" :
                $row = lit_enr_rpdt($code, $open);
                if (is_array($row)) {
                    $row = encode_str($row);
                    extract($row);
                    if ($rpdt_codeage <> "")
                        $codeage = give_codeage($rpdt_codeage, $open);
                }
                break;

            // Déclaration de problème
            case "rpbm" :
                $row = lit_enr_rpbm($code, $open);
                if (is_array($row)) {
                    $row = encode_str($row);
                    extract($row);
                    switch ($rpbm_typerel) {
                        case 1 :
                            $row = lit_enr_rlic($rpbm_coderlp, $open);
                            if (is_array($row)) {
                                $row = encode_str($row);
                                extract($row);
                                if ($rlic_codeage <> "")
                                    $codeage = give_codeage($rlic_codeage, $open);
                            }
                            break;
                        case 2 :
                            $row = lit_enr_rpdt($rpbm_coderlp, $open);
                            if (is_array($row)) {
                                $row = encode_str($row);
                                extract($row);
                                if ($rpdt_codeage <> "")
                                    $codeage = give_codeage($rpdt_codeage, $open);
                            }
                            break;
                        default :
                            break;
                    }
                }
                break;

            // Tâche
            case "tac" :
                // Balayage des champs complémentaires tâches
                $txtcorps = parse_txt_tac($code, $txt);
                break;

            // Technicien
            case "tec" :
                $row = lit_enr_tec($code, $open);
                if (is_array($row)) {
                    $row = encode_str($row);
                    extract($row);
                    if ($tec_codeage <> "")
                        $codeage = give_codeage($tec_codeage, $open);
                }
                break;

            default :
                break;
        }
        if ($codeage <> "")
            $txtcorps = str_replace("%logo_age%", '<img src="' . $chemin_logos . '/log' . strtolower($codeage) . '.png" alt="'._("logo_agence").'">', $txtcorps);
    }

    // Il y a un logo donneur d'ordres ?
    if (stristr($txtcorps, "%logo_do%")) {
        $codedo = "";
        // Balayage des types
        switch ($type) {
            // Client
            case "cli" :
                $row = lit_enr_cli($code, $open);
                if (is_array($row)) {
                    $row = encode_str($row);
                    extract($row);
                    if ($cli_codedo <> "")
                        $codedo = give_codedo($cli_codedo, $open);
                }
                break;

            // Intervention
            case "int" :
                $row = lit_enr_int($code, $open);
                if (is_array($row)) {
                    $row = encode_str($row);
                    extract($row);
                    if ($int_codedo <> "")
                        $codedo = give_codedo($int_codedo, $open);
                    else
                        $codedo = "cge";
                }
                break;

            // Technicien
            case "tec" :
            case "tecd" :
                $row = lit_enr_tec($code, $open);
                if (is_array($row)) {
                    $row = encode_str($row);
                    extract($row);
                    if ($tec_codedo <> "")
                        $codedo = give_codedo($tec_codedo, $open);
                }
                break;

            default :
                break;
        }

        if ($codedo <> "")
            $txtcorps = str_replace("%logo_do%", '<img src="' . $chemin_logos . '/log' . strtolower($codedo) . '.png" alt="'._("logo_do").'">', $txtcorps);
    }

    // Il y a un logo sous-traitant ?
    if (stristr($txtcorps, "%logo_st%")) {
        $codest = "";
        // Balayage des types
        switch ($type) {
            // Intervention
            case "int" :
                $row = lit_enr_int($code, $open);
                if (is_array($row)) {
                    $row = encode_str($row);
                    extract($row);
                    if ($int_codest <> "")
                        $codest = give_codest($int_codest, $open);
                    else
                        $codest = "cge";
                }
                break;

            // Ordre de sous-traitance
            case "ot" :
                $row = lit_enr_ot($code, $open);
                if (is_array($row)) {
                    $row = encode_str($row);
                    extract($row);
                    if ($ot_codest <> "")
                        $codest = give_codest($ot_codest, $open);
                }
                break;

            // Technicien
            case "tec" :
            case "tecs" :
                $row = lit_enr_tec($code, $open);
                if (is_array($row)) {
                    $row = encode_str($row);
                    extract($row);
                    if ($tec_codest <> "")
                        $codest = give_codest($tec_codest);
                }
                break;

            default :
                break;
        }

        if ($codest <> "")
            $txtcorps = str_replace("%logo_st%", '<img src="' . $chemin_logos . '/log' . strtolower($codest) . '.png" alt="'._("logo_st").'">', $txtcorps);
    }

    return $txtcorps;
}

/**
 * Création du corps du texte d'un email
 *
 * @param $nomfic
 * @param $type
 * @param $mode
 * @param $orig
 * @param $dest
 * @param $code
 * @param $pass
 * @param $total
 * @param string $attach
 * @param bool $open
 * @return mixed|string
 */
function cre_corps_txtm($nomfic, $type, $mode, $orig, $dest, $code, $pass, $total, $attach = "", $open = TRUE)
{
    // Création du texte de l'email
    $txt = lit_enr_txtf($type, $mode, $orig, $dest, $open);
    $txt = encode_str($txt);

    // Création du cors de texte
    $txtcorps = parse_txtcorps($type, $code, $txt, $nomfic, $open);

    //Mot de passe
    $txtcorps = str_replace("%pass%", $pass, $txtcorps);

    //Montant total
    $txtcorps = str_replace("%total%", full_num_format($total, '', '', TRUE, '', $open), $txtcorps);

    // Si pièce attachée
    if (trim($attach) <> "")
        $txtcorps .= '<br />'._("PS : Document correspondant en pièce ci-jointe");

    // Pied de l'email
    $txtcorps .= "<br />" . add_pied_txtmail();

    return $txtcorps;
}

/**
 * Création du corps de l'emailing
 *
 * @param $typedest
 * @param $codedest
 * @param $typeexp
 * @param $codeexp
 * @param $texte
 * @param bool $open
 * @return mixed|string
 */
function cre_corps_txtem($typedest, $codedest, $typeexp, $codeexp, $texte, $open = TRUE)
{
    $txtcorps = $texte;

    // Création du corps de texte
    $txtcorps = parse_txtcorps_em($typedest, $codedest, $typeexp, $codeexp, $txtcorps, $open);

    // Mot de passe annulé car il ne doit pas y en avoir dans les emailings
    $txtcorps = str_replace("%pass%", "", $txtcorps);

    // Montant total annulé car il ne doit pas y en avoir dans les emailings
    $txtcorps = str_replace("%total%", "", $txtcorps);

    // Pied de l'email
    $txtcorps .= "<br />" . add_pied_txtmail();

    return $txtcorps;
}
