<?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");

include_once("../inc/fic_age.inc.php");
include_once("../inc/fic_cli.inc.php");
include_once("../inc/fic_do.inc.php");
include_once("../inc/fic_droits.inc.php");
include_once("../inc/fic_hum.inc.php");
include_once("../inc/fic_int.inc.php");
include_once("../inc/fic_pdt.inc.php");
include_once("../inc/fic_plan.inc.php");
include_once("../inc/fic_prm.inc.php");
include_once("../inc/fic_rdv.inc.php");
include_once("../inc/fic_sig.inc.php");
include_once("../inc/fic_st.inc.php");
include_once("../inc/fic_statut.inc.php");
include_once("../inc/fic_tec.inc.php");
include_once("../inc/fic_tra.inc.php");
include_once("../inc/fic_txt.inc.php");
include_once("../inc/func.inc.php");
include_once("../inc/func_time.inc.php");
include_once("../inc/func_date.inc.php");
include_once("../inc/func_geo.inc.php");
include_once("../inc/func_txt.inc.php");
include_once("../inc/func_txtcm.inc.php");
include_once("../inc/func_mail.inc.php");
include_once("../classes/phpmailer/class.phpmailer.php");
include_once("../classes/phpmailer/class.smtp.php");
include_once("../inc/mail.inc.php");
require_once '../scripts/signaturetoimage/signature-to-image.php';
include_once("../classes/ezSQL/shared/ez_sql_core.php");
include_once("../classes/ezSQL/mysqli/ez_sql_mysqli.php");
include_once("../inc/func_sql.inc.php");
Archivelog(@$_SESSION["code_log"]);

// Variables Formulaire
fix_magic_quotes();
$_GET = clean_str($_GET);

$vg = 0;
if (isset($_GET['vg']))
    $vg = intval($_GET['vg']); // Récupération si vierge ou pas
if (($vg < 0) OR ($vg > 1))
    $vg = 0;

$te = "";
if (isset($_GET['te'])) {
    $te = $_GET['te']; // Récupération si état pour client ou pas
    if ($te <> "cli")
        $te = "";
}
$ca = $_GET['ca']; // Récupération code Agence

$ci = $_GET['ci']; // Récupération code Intervention
if ($ci <> "")
    $vg = 0;


$idrdv = 0;
$idrdv = intval($_GET['rdv']); // Récupération ID RDV

// Tableau des rendez-vous pour cette intervention
$tab_rdv = detail_rdv_rat(1, $ci, TRUE, $idrdv);

// Tableau des techniciens pour cet ID de RDV
$tab_tec = detail_planifie_rdv($idrdv, TRUE);

$cg = $_GET['cgv']; // Récupération si avec ou sans CGV
$niv_util = intval(@$_SESSION["niv_log"]);

if ($cg == "ok")
    $cgv = TRUE;
else
    $cgv = FALSE;

$pbm_intpdf = FALSE;

// Contrôle des paramètres en fonction des niveaux utilisateurs
switch ($niv_util) {
    // Pour un client
    case 1 :
        if (($ci == "") AND ($vg == 1))
            $pbm_intpdf = TRUE;
        break;
    // Pour une agence
    case 3 :
    case 4 :
        $ca = @$_SESSION["code_age"];
        if ((($ci == "") AND ($vg == 0)) OR (($ci <> "") AND ($vg == 1)))
            $pbm_intpdf = TRUE;
        break;
    // Pour un donneur d'ordres
    case 6 :
    case 7 :
        if (($ci == "") AND ($vg == 1))
            $pbm_intpdf = TRUE;
        break;
    // Pour un sous-traitant
    case 10 :
    case 11 :
        if (($ci == "") AND ($vg == 1))
            $pbm_intpdf = TRUE;
        break;
    default :
        if ((($ci == "") AND ($vg == 0)) OR (($ci <> "") AND ($vg == 1)))
            $pbm_intpdf = TRUE;
        break;
}

if ($pbm_intpdf == FALSE) {
    $codeadev = give_dev_codea_defaut_int($ci, $_SESSION["lng"], TRUE);
    $symbole_monnaie_txt = give_dev_TXT($codeadev, TRUE);

    if ($ci <> "") {
        $nbartint = nb_art_in_int($ci);

        $row = lit_enr_int($ci);
        if (is_array($row)) {
            $row = encode_str($row);
            extract($row);

            $closed = int_closed($ci, TRUE);

            // Construction de la chaîne des problèmes sélectionnés pour cette intervention
            $lstpbm = cree_str_lstpbm_int($int_code);
            $str_pbm = cre_str_pbm_int($lstpbm);
            $tab_pbmfait = cre_tab_pbmfait_int($lstpbm);
            $str_pbmfait = cre_str_pbmfait_int($tab_pbmfait);

            // Texte complet du problème rencontré
            $txt_pbm_full = '';
            if ($str_pbm <> '')
                $txt_pbm_full .= str_replace("%%", "\n", $str_pbm) . "\n\n";
                // $txt_pbm_full .= "*** "._("RELEVE DE PROBLEMES")."\n\n" . str_replace("%%", "\n", $str_pbm) . "\n\n";
            $txt_pbm_full .= $int_pbm;

            // Texte des travaux effectués (saisie manuelle)
            $txt_fait = cree_txt_fait_int($ci, FALSE, FALSE, TRUE, TRUE);

            // Texte complet du travail effectué
            $txt_fait_full = '';
            if ($str_pbmfait <> '')
                $txt_fait_full .= str_replace("%%", "\n", $str_pbmfait) . "\n";
                // $txt_fait_full .= "*** "._("TRAITEMENT RELEVE DE PROBLEMES")."\n\n" . str_replace("%%", "\n", $str_pbmfait) . "\n\n";
            $txt_fait_full .= "\n".$txt_fait;

            $nb_sig = nb_sig_code(1, $ci, TRUE);

            // contrôles des hacks
            switch ($niv_util) {
                // Pour un client
                case 1 :
                    $tab_cli = give_tab_rcli($_SESSION["code_log"], TRUE);
                    if (exist_in_array($int_codecli, $tab_cli) == FALSE)
                        $pbm_intpdf = TRUE;
                    break;
                // Pour une agence
                case 3 :
                case 4 :
                    if ($int_codeage <> "") {
                        if (($int_codeage <> @$_SESSION["code_age"]) AND ($int_codeages <> @$_SESSION["code_age"]))
                            $pbm_intpdf = TRUE;
                    }
                    break;
                // Pour un donneur d'ordres
                case 6 :
                case 7 :
                    if ($int_codedo <> @$_SESSION["code_do"])
                        $pbm_intpdf = TRUE;
                    break;
                // Pour un sous-traitant
                case 10 :
                case 11 :
                    if ($int_codest <> @$_SESSION["code_st"])
                        $pbm_intpdf = TRUE;
                    break;
                default :
                    break;
            }
        }
    }

    if ($pbm_intpdf == FALSE) {
        // En cas de fiche vierge, la devise par défaut est celle du compte qui saisi
        if ($td == "add") {
            switch (@$_SESSION["niv_log"]) {
                case 3 :
                case 4 :
                    $int_codeadev = give_dev_codea_defaut_age($_SESSION["code_age"], $_SESSION["lng"], TRUE);
                    break;
                default :
                    $int_codeadev = give_dev_codea_defaut($_SESSION["lng"], TRUE);
                    break;
            }
        } else
            // Sinon, on récupère le code devise de l'intervention déjà créée
            $int_codeadev = give_dev_codea_defaut_int($int_code, $_SESSION["lng"], TRUE);

        $symbole_monnaie_txt = give_dev_TXT($codeadev, TRUE);

        // On récupère le code devise du compte qui visualise
        switch (@$_SESSION["niv_log"]) {
            case 3 :
            case 4 :
                $codeadev_local = give_dev_codea_defaut_age($_SESSION["code_age"], $_SESSION["lng"], TRUE);
                break;
            default :
                $codeadev_local = give_dev_codea_defaut($_SESSION["lng"], TRUE);
                break;
        }

        if ($vg == 0) {
            if ($int_codest <> "") {
                $row = lit_enr_st($int_codest);
                $row = encode_str($row);
                extract($row);
            }

            // Coordonnées compte client
            $row = lit_enr_cli($int_codecli, TRUE);
            if (is_array($row)) {
                $row = encode_str($row);
                extract($row);
            }

            // Coordonnées site intervention
            if ($int_idsite > 0) {
                $row = lit_enr_scli_id($int_idsite, TRUE);
                if (is_array($row)) {
                    $row = encode_str($row);
                    extract($row);
                }
            }

            // Coordonnées technicien
            $row = lit_enr_tec($int_codetec, TRUE);
            if (is_array($row)) {
                $row = encode_str($row);
                extract($row);
            }

            // Récupération du total travaillé & Techniciens traitants
            $nbtotalsec = tps_travaille_int($ci, TRUE);
            $nbtotalsec_off = tps_offert_int($ci, TRUE);
            $nbtotalsec_ret = tps_retenu_int_sec($ci, TRUE);
            $str_tec_traitants = str_tec_traitants_int($ci, TRUE);
        }

        include_once('../classes/tcpdf/config/tcpdf_config.php');
        include_once('../classes/tcpdf/tcpdf.php');
        include_once('../inc/tcpdf_ext.inc.php');

        $pdf = new PDF_SMI(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
        $pdf->setFontLng('fr');
        $pdf->set_add_margin();
        $pdf->SetCreator(PDF_CREATOR);
        $pdf->SetAuthor('SMI');
        $pdf->SetTitle(_("Intervention N°") . $int_code);
        $pdf->SetSubject(_("Intervention N°") . $int_code);
        $pdf->settgen();
        $pdf->settheader("int");

        // set default monospaced font
        $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

        //set margins
        $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
        $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
        $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

        //set auto page breaks
        $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

        $pdf->SetLeftMargin(10);
        $pdf->SetLineWidth(0.2);
        $pdf->AddPage();

        // Récupération Coordonnées sous entête
        $Pos_Entete = $pdf->GetY();

        // Impression du détail client
        $pdf->SetFont('', 'BU', 12); // Titre
        if ($int_idsite == 0) // S'il s'agit du site principal
        {
            $pdf->Cell(95, 5, _("CLIENT"), 0, 1, 'C');

            $ent_cli = ""; // Détail
            if ($cli_ste <> "")
                $ent_cli .= $cli_ste . "\n";
            else
                $ent_cli .= $cli_civilite . " " . $cli_prenom . " " . $cli_nom . "\n";
            $pdf->SetFont('', 'B', 10);
            $pdf->MultiCell(95, 4, $ent_cli, 0, 'L');

            $ent_cli = $cli_adr1 . "\n"; // Suite...
            if (trim($cli_adr2) <> "")
                $ent_cli .= $cli_adr2 . "\n";
            else {
                if ($vg == 1)
                    $ent_cli .= "\n";
            }
            $ent_cli .= Retournecp_Id($cli_ville, TRUE) . " " . Retourneville_Id($cli_ville, TRUE) . "\n";
            $ent_cli .= _("Tel") . " : " . $cli_telf;
            if (trim($cli_fax)<>'')
                $ent_cli .= ' / ' . _("Fax") . " : " . $cli_fax;
            if (trim($cli_telp)<>'')
                $ent_cli .= ' / ' . _("P.") . " : " . $cli_telp;
            //$ent_cli .= "\n";
            $pdf->SetFont('', '', 10);
            $pdf->MultiCell(95, 4, $ent_cli, 0, 'L');

            // Récupération Coordonnées
            $Pos_EntCli = $pdf->GetY();
        } else // S'il s'agit d'un site secondaire
        {
            $pdf->Cell(95, 5, _("SITE INTERVENTION"), 0, 1, 'C');

            $ent_scli = ""; // Détail
            $ent_scli .= $scli_ste . "\n";
            $pdf->SetFont('', 'B', 10);
            $pdf->MultiCell(95, 4, $ent_scli, 0, 'L');

            $ent_scli = $scli_adr1 . "\n"; // Suite...
            if (trim($scli_adr2) <> "")
                $ent_scli .= $scli_adr2 . "\n";
            $ent_scli .= Retournecp_Id($scli_ville, TRUE) . " " . Retourneville_Id($scli_ville, TRUE) . "\n";
            $ent_scli .= _("Tel") . " : " . $scli_telf ;
            if (trim($scli_fax)<>'')
                $ent_scli .= ' / ' . _("Fax") . " : " . $scli_fax;
            if (trim($scli_telp)<>'')
                $ent_scli .= ' / ' . _("P.") . " : " . $scli_telp;
            //$ent_scli .= "\n";
            $pdf->SetFont('', '', 10);
            $pdf->MultiCell(95, 4, $ent_scli, 0, 'L');

            // Récupération Coordonnées
            $Pos_EntCli = $pdf->GetY();
        }

        // Impression du détail intervention
        $pdf->SetY($Pos_Entete); // Renvoie le pointeur SOUS l'entête agence

        $pdf->Cell(95);

        $pdf->SetFont('', '', 8); // Niveau d'urgence
        $pdf->Cell(95, 5, $int_urg, 0, 0, 'R');

        $pdf->SetY($Pos_Entete + 1); // Renvoie le pointeur SOUS l'entête agence

        $pdf->Cell(95);

        $ent_int = _("Agence") . " :\n";
        $ent_int .= _("Tech. resp.") . " :\n";
        $ent_int .= _("Contrat") . " :\n";
        $ent_int .= _("Origine") . " :\n";
        $ent_int .= _("Statut") . " :\n";
        $ent_int .= _("Garantie") ;
        if ((count($tab_rdv) == 1) AND ($closed == FALSE))
            $ent_int .= "\n"._("Rendez-vous") . " :";
        $pdf->MultiCell(22, 4, $ent_int, 0, 'R');

        $pdf->SetY($Pos_Entete + 1); // Renvoie le pointeur SOUS l'entête agence
        $pdf->Cell(117);

        if ($_SESSION["niv_log"] <> 1) {
            switch ($int_idsite) {
                // Site principal
                case 0 :
                    $ent_int = substr($int_codeage, 1, strlen($int_codeage));
                    break;
                default :
                    $ent_int = substr($int_codeage, 1, strlen($int_codeage)) . " / " . substr($int_codeages, 1, strlen($int_codeages));
                    break;
            }
        } else
            $ent_int = substr($int_codeage, 1, strlen($int_codeage));
        $ent_int .= "\n";

        if ($vg == 0) {
            if (($int_codetec <> '-1') && ($int_codetec <> ''))
                $ent_int .= $tec_nom . " " . $tec_prenom . " (" . substr($tec_codeage, 1, strlen($tec_codeage)) . ")";
            else
                $ent_int .= '-';
        }
        $ent_int .= "\n";

        if ($int_codecocl <> "")
            $ent_int .= $int_codecocl . "\n";
        else
            $ent_int .= "\n";

        // Récupération libellé origine
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
        $rech = "SELECT orig_desc FROM `" . TBORI . "` WHERE orig_code='" . $int_codeorig . "'";
        $row = $db->get_row($rech, ARRAY_A);
        if ($row) {
            $row = encode_str($row);
            extract($row);
        }
        $db->disconnect();

        $ent_int .= $orig_desc . "\n";

        // Récupération libellé statut
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
        $rech = "SELECT statut_desc FROM `" . TBSTA . "` WHERE statut_code='" . $int_codestatut . "'";
        $row = $db->get_row($rech, ARRAY_A);
        if ($row) {
            $row = encode_str($row);
            extract($row);
        }
        $db->disconnect();

        $ent_int .= $statut_desc . "\n";

        // Garantie ?
        if ($vg == 0) {
            $ent_int .= $non_oui[$int_gar];
            if (trim($int_fgar) <> '')
                $ent_int .= ' (' . $int_fgar . ')';
        } else
            $ent_int .= "           / (                          )";
        //$ent_int .= "\n";

        // Rendez-vous (uniquement si un id a été demandé)
        if ((count($tab_rdv) == 1) AND ($closed == FALSE)) {
            foreach ($tab_rdv as $key => $value) {
                $ent_int .= "\n". $value;
            }
        }

        $pdf->MultiCell(73, 4, $ent_int, 0, 'L');

        // Récupération Coordonnées
        $Pos_EntDetail = $pdf->GetY();

        $PosY = max($Pos_EntCli, $Pos_EntDetail);
        $pdf->SetY($PosY);
        $pdf->ln(1);
        $pdf->SetDrawColor(125);
        $pdf->SetLineWidth(0.4);
        $pdf->SetLineStyle(['dash' => 2]);
        $pdf->Line(10, $PosY, 200, $PosY);
        $pdf->SetDrawColor(0);
        $pdf->SetLineWidth(0.2);
        $pdf->SetDrawColor(220);
        $pdf->SetLineStyle(['dash' => 0]);
        $pdf->ln(1);

        // Détail de la prise en charge
        $pdf->SetFont('', 'B', 10);
        $pdf->Cell(40, 5, _("Demandé par") . ' : ', 0, 0, 'R');
        $pdf->SetFont('', '', 8);
        if ($vg == 0) {
            $txt_ccli = _("Pas de contact");
            switch (intval($int_ddeur)) {
                case -1 :
                    $txt_ccli = $cli_nom . " " . $cli_prenom . " (" . _("Contact principal");
                    $txt_ccli .= " - " . $cli_telf;
                    if ($cli_telp <> "")
                        $txt_ccli .= " / " . $cli_telp;
                    $txt_ccli .= ")";
                    break;
                case 0 :
                    $row = lit_enr_scli_id($int_idsite, TRUE);
                    if (is_array($row)) {
                        $row = encode_str($row);
                        extract($row);
                        $txt_ccli = $scli_rnom . " " . $scli_rprenom . " (" . ("Contact site");
                        $txt_ccli .= " - " . $scli_telf;
                        if ($scli_telp <> "")
                            $txt_ccli .= " / " . $scli_telp;
                        $txt_ccli .= ")";
                    }
                    break;
                default :
                    $row = lit_enr_ccli_id_in_cli($int_ddeur, $cli_code);
                    if (is_array($row)) {
                        $row = encode_str($row);
                        extract($row);
                        $row2 = lit_enr_fonc($ccli_codefonc, TRUE);
                        if (is_array($row2)) {
                            $row2 = encode_str($row2);
                            extract($row2);
                            $txt_fonc = $fonc_desc;
                        } else
                            $txt_fonc = $ccli_codefonc;
                        $txt_ccli = $ccli_nom . " " . $ccli_prenom . " (" . $txt_fonc . " - " . $ccli_telf;
                        if ($ccli_telp <> "")
                            $txt_ccli .= " / " . $ccli_telp;
                        $txt_ccli .= ")";
                    }
                    break;
            }
        }
        else
            $txt_ccli = "";
        $pdf->MultiCell(150, 4, $txt_ccli, 1, 'L');

        if (trim($int_mat) <> '')
        {
            $pdf->ln(1);

            $pdf->SetFont('', 'B', 10);
            $pdf->Cell(40, 5, _("Matériel") . ' : ', 0, 0, 'R');
            $pdf->SetFont('', '', 8);
            // Si intervention non close, on laisse quelques lignes pour noter
            if ($niv_util > 2) {
                if (datetolocal($int_datefin) == "") {
                    for ($i = 0; $i < 2; $i++) {
                        $int_mat .= "\n";
                    }
                }
            }
            $pdf->MultiCell(150, 4, $int_mat, 1, 'L');
        }

        $pdf->ln(1);

        $pdf->SetFont('', 'B', 10);
        $pdf->Cell(40, 5, _("Travail à effectuer") . ' : ', 0, 0, 'R');
        $pdf->SetFont('', '', 8);
        // Si intervention non close, on laisse quelques lignes pour noter
        if ($niv_util > 2) {
            if (datetolocal($int_datefin) == "") {
                for ($i = 0; $i < 3; $i++) {
                    $txt_pbm_full .= "\n";
                }
            }
        }
        $pdf->MultiCell(150, 4, $txt_pbm_full, 1, 'L');

        $pdf->ln(1);

        if (($int_codestatut == "ACC") AND ($int_codelieu == "SITE")) // On attend une commande client pour intervention sur site
        {
            if ($nbartint <> 0) // S'il y a des articles facturés, on les affiche
            {
                $texte = _("Coûts minimums indicatifs");
                $pdf->SetFont('', 'BI', 8);
                $pdf->MultiCell(190, 5, $texte, 0, 'L');

                /*** Tableau des articles ***/
                include("int_pdf_tabart.inc.php");
            }

            $y_courant = $pdf->GetY() + 1;

            $pdf->SetDrawColor(0);
            $pdf->SetLineWidth(0.4);
            $pdf->Line(10, $y_courant, 200, $y_courant);
            $pdf->SetDrawColor(200);
            $pdf->SetLineWidth(0.2);

            $pdf->ln(1);

            $row = lit_enr_txt("INT_ACC_CLI");
            $row = encode_str($row);
            extract($row);

            $texte = formatetxt($txt_texte);
            $texte = parse_txtcorps("cdg", "", $txt_texte, "");
            $texte = parse_txtcorps("int", $int_code, $texte, "");

            $pdf->SetFont('', '', 8);
            $pdf->WriteHTML($texte, true, false, true);

            $pdf->ln(1);

            $pdf->SetFont('', 'BU', 10);
            $pdf->Cell(95);
            $pdf->Cell(95, 5, _("Tampon, Date & Signature client"), 'LTR', 1, 'C');
            $pdf->Cell(95);
            $pdf->SetFont('', 'I', 8);
            $pdf->Cell(95, 5, _("Bon pour intervention"), 'LR', 1, 'C');
            for ($i = 0; $i < 7; $i++) {
                $pdf->Cell(95);
                $pdf->Cell(95, 5, "", 'LR', 1, 'L');
            }
            $pdf->Cell(95);
            $pdf->Cell(95, 5, "", 'LRB', 1, 'L');
        } else // On attend pas de confirmation client
        {
            $aff_fait = TRUE;
            /*********************
             * if (($niv_util==1) AND (datetolocal($int_dateprev)==""))
             * $aff_fait=FALSE;
             **********************/
            // Rendez-vous (affiché si pas un RDV spécifique demandé et si pas clos)
            if ((count($tab_rdv) > 1) AND ($niv_util >= 3) AND ($closed == FALSE)) {
                $pdf->SetFont('', 'B', 10);
                $pdf->Cell(40, 5, _("Rendez-vous") . ' : ', 0, 0, 'R');
                $pdf->SetFont('', '', 8);

                $i = 0;

                foreach ($tab_rdv as $key => $value) {

                    if ($i > 0) {
                        $pdf->SetFont('', 'B', 10);
                        $pdf->Cell(40, 5, '', 0, 0, 'R');
                    }
                    $pdf->SetFont('', '', 8);
                    $pdf->Cell(5, 5, ' ', 1, 0, 'L');
                    $pdf->Cell(60, 5, $value, 0, 1, 'L');
                    $i++;
                }

                $pdf->ln(1);
            }

            /*
                            if ($aff_fait==TRUE)
                            {
                                // Détail du traitement du dossier
                                $pdf->SetFont('','B',10);
                                $pdf->Cell(40,5,_("Technicien(s) traitant(s)")." : ',0,0,'R');
                                $pdf->SetFont('','',8);
                                $pdf->MultiCell(150,4,$str_tec_traitants,1,'L');
                            }
            */

            // On vérifie si détail horaire saisi
            $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
            $rech = "SELECT COUNT(*) FROM `" . TBINTH . "` WHERE `inth_codeint`= '" . $ci . "' ORDER BY inth_date";
            $nbinth = $db->get_var($rech);
            $db->disconnect();

            $aff_det_inth = TRUE;
            $aff_forfait = TRUE;
            switch ($niv_util) {
                case 1 :
                case 2 :
                    if ($nbinth == 0)
                        $aff_fait = false;
                    if ($int_forfait > 0)
                        $aff_det_inth = FALSE;
                    else
                        $aff_forfait = FALSE;
                    break;
                case 6 :
                case 7 :
                    if ($int_forfait > 0)
                        $aff_det_inth = FALSE;
                    else
                        $aff_forfait = FALSE;
                    break;
                case 3 :
                case 4 :
                    if ($_SESSION["code_age"] <> $int_codeage)
                        $aff_forfait = FALSE;
                    if ($te == "cli") {
                        $aff_det_inth = FALSE;
                        $aff_forfait = TRUE;
                    }
                    break;
                default :
                    if ($te == "cli") {
                        $aff_det_inth = FALSE;
                        $aff_forfait = TRUE;
                    } else {
                        if ($int_forfait <= 0)
                            $aff_forfait = FALSE;
                    }
                    break;
            }

            // On ne doit pas afficher le détail horaire en impression s'il y a un forfait
            // (Le client ne doit pas voir le détail horaire...)
            if ($int_forfait > 0)
                $aff_det_inth = FALSE;
            else
                $aff_forfait = FALSE;

            if ($aff_det_inth == TRUE) // On affiche le détail horaire
            {
                if ($aff_fait == TRUE) {
                    // Récupération Coordonnées pour détail horaire
                    $Pos_DetH = $pdf->GetY();

                    $pdf->SetFont('', 'B', 10);
                    $pdf->Cell(31, 5, _("Détail horaire") . ' : ', 0, 1, 'R');
                    $pdf->ln(1);
                    $pdf->SetFont('', 'I', 6);
                    if ($nbtotalsec <> 0)
                    {
                        if ($nbtotalsec <> $nbtotalsec_ret)
                        {
                            $str_deth = _("Tps total") . ' : '.heure_to_hhmm(sec_heure($nbtotalsec, 3, TRUE)).' '."\n";
                            $str_deth.= _("Tps offert") . ' : '.heure_to_hhmm(sec_heure($nbtotalsec_off, 3, TRUE)).' '."\n";
                            $str_deth.= _("Tps retenu") . ' : '.heure_to_hhmm(sec_heure($nbtotalsec_ret, 3, TRUE)).' '."\n";
                        }
                        else
                            $str_deth.= _("Tps retenu") . ' : '.heure_to_hhmm(sec_heure($nbtotalsec_ret, 3, TRUE)).' '."\n";
                    }
                    else
                    {
                        $str_deth = _("Tps total") . ' :          '."\n";
                        $str_deth.= _("Tps offert") . ' :          '."\n";
                        $str_deth.= _("Tps retenu") . ' :          '."\n";
                    }
                    $pdf->MultiCell(31, 4, $str_deth, 0, 'R');

                    // Récupération position du curseur
                    $Pos_Tps = $pdf->GetY();

                    // On repositionne le curseur au niveau du texte
                    $pdf->SetY($Pos_DetH);

                    $pdf->SetFont('', '', 8);
                    $pdf->SetFont('', 'IU', 7); // Titres
                    $pdf->Cell(31);
                    $pdf->Cell(14, 4, _("Date"), 1, 0, 'C');
                    $pdf->Cell(50, 4, _("Technicien"), 1, 0, 'C');
                    $pdf->Cell(50, 4, _("Lieu"), 1, 0, 'C');
                    $pdf->Cell(12, 4, _("H. début"), 1, 0, 'C');
                    $pdf->Cell(10, 4, _("H. fin"), 1, 0, 'C');
                    $pdf->Cell(13, 4, _("Tps passé"), 1, 0, 'C');
                    $pdf->Cell(10, 4, _("Offert"), 1, 1, 'C');
                    $pdf->SetFont('', 'I', 8);

                    $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
                    $rech = "SELECT * FROM `" . TBINTH . "` WHERE `inth_codeint`= '" . $ci . "' ORDER BY inth_date";
                    $rows = $db->get_results($rech, ARRAY_A);
                    if ($rows) // S'il y a eu un détail horaire de saisi, on l'affiche
                    {
                        foreach ($rows as $row) {
                            $row = encode_str($row);
                            extract($row);

                            // Ligne 1
                            $pdf->Cell(31);
                            $pdf->SetFont('', 'I', 7);
                            $pdf->Cell(14, 4, datetolocal($inth_date), 'LR', 0, 'C');
                            $rech2 = "SELECT * FROM `" . TBTEC . "` WHERE `tec_code` = '" . $inth_codetec . "'";
                            $row2 = $db->get_row($rech2, ARRAY_A);
                            if ($row2) {
                                $row2 = encode_str($row2);
                                extract($row2);
                            }
                            $pdf->Cell(50, 4, $tec_nom . " " . $tec_prenom. ' ('.$inth_codetec.')', 'LR', 0, 'L');
                            $rech2 = "SELECT * FROM `" . TBLIEU . "` WHERE `lieu_code` = '" . $inth_codelieu . "'";
                            $row2 = $db->get_row($rech2, ARRAY_A);
                            if ($row2) {
                                $row2 = encode_str($row2);
                                extract($row2);
                            }
                            $pdf->Cell(50, 4, $lieu_desc, 'LR', 0, 'L');
                            $pdf->Cell(12, 4, heure_to_hhmm($inth_heurea), 'LR', 0, 'C');
                            $pdf->Cell(10, 4, heure_to_hhmm($inth_heured), 'LR', 0, 'C');
                            $tps_total_sec = diff_time_sec($inth_heurea, $inth_heured);
                            $pdf->Cell(13, 4, heure_to_hhmm(sec_heure($tps_total_sec)), 'LR', 0, 'C');
                            if ($inth_offert == 1)
                                $pdf->Cell(10, 4, _("oui"), 'LR', 1, 'C');
                            else
                                $pdf->Cell(10, 4, '-', 'LR', 1, 'C');
                        }
                    }

                    // Si intervention non close, on laisse quelques lignes pour noter
                    if ($niv_util > 2) {
                        if ($closed == FALSE) {
                            // Nombre maxi de lignes vierges +1 (le zéro compte)
                            if ($nbinth == 0)
                                $maxlig = 3;
                            else
                                $maxlig = 2;
                            for ($i = 0; $i < $maxlig; $i++) {
                                $pdf->Cell(31);
                                $pdf->SetFont('', 'I', 7);
                                $pdf->Cell(14, 4, '', 'LR', 0, 'C');
                                $pdf->Cell(50, 4, '', 'LR', 0, 'L');
                                $pdf->Cell(50, 4, '', 'LR', 0, 'L');
                                $pdf->Cell(12, 4, '', 'LR', 0, 'C');
                                $pdf->Cell(10, 4, '', 'LR', 0, 'C');
                                $pdf->Cell(13, 4, '', 'LR', 0, 'C');
                                $pdf->Cell(10, 4, '', 'LR', 1, 'C');
                            }
                        }
                    }

                    $PosY = $pdf->GetY();
                    $pdf->Line(41, $PosY, 200, $PosY); // On "ferme" le tableau

                    // Récupération position du curseur
                    $Pos_DetH = $pdf->GetY();

                    $db->disconnect();

                    // On positionne le curseur
                    $PosY = max($Pos_Tps, $Pos_DetH);
                    $pdf->SetY($PosY);
                }
            }

            if ($aff_fait == TRUE) {
                // On affiche le forfait
                if ($aff_forfait == TRUE) {
                    $pdf->SetFont('', 'B', 10);
                    $pdf->Cell(40, 5, _("Forfait intervention") . ' : ', 0, 0, 'R');
                    $pdf->SetFont('', '', 8);
                    $pdf->MultiCell(150, 4, _("Oui"), 1, 'L');
                }
            }

            $pdf->ln(1);

            /** Affichage du travail effectué **/
            if ($txt_fait_full == "") {
                $pdf->SetFont('', 'B', 10);
                $pdf->Cell(40, 5, _("Travail Effectué") . ' : ', 0, 0, 'R');
                for ($i = 0; $i < 4; $i++) {
                    $txt_fait_full .= "\n";
                }
            } else {
                if ($aff_fait == TRUE) {
                    $pdf->SetFont('', 'B', 10);
                    $pdf->Cell(40, 5, _("Travail Effectué") . ' : ', 0, 0, 'R');
                    // Si intervention non close, on laisse quelques lignes pour noter
                    if ($niv_util > 2) {
                        if ($closed == FALSE) {
                            for ($i = 0; $i < 3; $i++) {
                                $txt_fait_full .= "\n";
                            }
                        }
                    }
                }
            }
            $pdf->SetFont('', '', 8);
            $pdf->MultiCell(150, 4, $txt_fait_full, 1, 'L');

            /** Tableau des groupements de Check-Lists **/
            $tab_clcgintc = give_tab_clcg_full_intc($int_codecat, TRUE);

            /** Affichage des Check-lists **/
            if (count($tab_clcgintc) > 0) {
                if (($closed == FALSE) AND ($niv_util >= 3)) {
                    if ($aff_fait == TRUE) {
                        $pdf->ln(1);

                        $pdf->SetFont('', 'B', 10);
                        $pdf->Cell(40, 5, _("Points de contrôle") . ' : ', 0, 0, 'R');
                        $pdf->SetFont('', '', 8);

                        $tab_tmp = [];
                        $code_clcg_courant = '';
                        $nligne = 0;
                        $ncol = 0;

                        foreach ($tab_clcgintc as $key => $value) {
                            $code_clcg = $key;

                            if ($code_clcg <> $code_clcg_courant) {
                                $row4 = lit_enr_clcg($code_clcg, TRUE);
                                if (is_array($row4)) {
                                    $row4 = encode_str($row4);
                                    extract($row4);
                                    if ($nligne > 0) {
                                        $pdf->Cell(1, 5, '', 0, 1, 'L');
                                        $pdf->SetFont('', 'B', 10);
                                        $pdf->Cell(40, 5, '', 0, 0, 'R');
                                    }
                                    $pdf->SetFont('', 'B', 10);
                                    $pdf->Cell(100, 5, "--- " . $clcg_desc . " ---", 0, 1, 'L');
                                    $nligne++;
                                }
                            }
                            $code_clcg_courant = $code_clcg;
                            $tab_tmp = $value;

                            foreach ($tab_tmp as $key2 => $value2) {
                                if ($ncol == 0) {
                                    $pdf->SetFont('', 'B', 10);
                                    $pdf->Cell(40, 5, '', 0, 0, 'R');
                                }

                                $txt_cl = '';

                                $row5 = lit_enr_clc($key2, TRUE);
                                if (is_array($row5)) {
                                    $row5 = encode_str($row5);
                                    extract($row5);
                                    $txt_cl .= $clc_desc;
                                }

                                /*
                                $exist_cl = FALSE;
                                $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
                                $rech6 = "SELECT clcginth_choix FROM `" . TBCLCGINTH . "` WHERE clcginth_codeclcg = '$code_clcg_courant' AND clcginth_codeclc = '$key2' AND clcginth_idinth = '$inth_id'";
                                $row6 = $db->get_row($rech6, ARRAY_A);
                                $db->disconnect();
                                if ($row6) {
                                    $row6 = encode_str($row6);
                                    $exist_cl = TRUE;
                                    extract($row6);
                                    // $txt_cl.= ' : '.$non_oui3[intval($clcginth_choix)];
                                }

                                $pdf->SetFont('', '', 8);
                                if ($exist_cl == TRUE) {
                                    switch (intval($clcginth_choix)) {
                                        // Sans objet
                                        case 0 :
                                            $pdf->Cell(5, 5, _("SO"), 1, 0, 'C');
                                            break;
                                        // Non
                                        case 1 :
                                            $pdf->Cell(5, 5, ' ', 1, 0, 'C');
                                            break;
                                        // oui
                                        case 2 :
                                            $pdf->Cell(5, 5, 'X', 1, 0, 'C');
                                            break;
                                    }
                                } else
                                */
                                    $pdf->Cell(5, 5, ' ', 1, 0, 'C');

                                if ($ncol % 2 <> 0) {
                                    $pdf->Cell(60, 5, $txt_cl, 0, 1, 'L');
                                    $ncol = 0;
                                } else {
                                    $pdf->Cell(60, 5, $txt_cl, 0, 0, 'L');
                                    $ncol++;
                                }
                                $nligne++;
                            }
                            unset($tab_tmp);
                        }
                        if ($ncol % 2 <> 0)
                            $pdf->Cell(5, 5, '', 0, 1, 'L');
                    }
                }
            }

            $pdf->ln(1);

            if ($int_fait == "") {
                // On n'affiche les compléments à saisir que s'il y en a et
                // que la date fin est non saisie (intervention active)
                if ($closed == FALSE) {
                    $pdf->SetFont('', 'B', 10);
                    $pdf->Cell(40, 5, _("Observations") . ' : ', 0, 0, 'R');
                    for ($i = 0; $i < 3; $i++) {
                        $int_fait .= "\n";
                    }
                    $pdf->SetFont('', '', 8);
                    $pdf->MultiCell(150, 4, $int_fait, 1, 'L');
                }
            } else {
                if ($aff_fait == TRUE) {
                    $pdf->SetFont('', 'B', 10);
                    $pdf->Cell(40, 5, _("Observations") . ' : ', 0, 0, 'R');
                    $pdf->SetFont('', '', 8);
                    // Si intervention non close, on laisse quelques lignes pour noter
                    if ($niv_util > 2) {
                        if (datetolocal($int_datefin) == "") {
                            for ($i = 0; $i < 3; $i++) {
                                $int_fait .= "\n";
                            }
                        }
                    }
                    $pdf->MultiCell(150, 4, $int_fait, 1, 'L');
                }
            }

            if ($aff_fait == TRUE) {
                // On affiche la date où le client a été prévenu uniquement si elle a été complétée
                if ($int_dateprevf <> "") {
                    $pdf->ln(2);

                    $pdf->SetFont('', 'B', 10);
                    $pdf->Cell(40, 5, _("Client prévenu le") . ' : ', 0, 0, 'R');
                    $pdf->SetFont('', '', 8);
                    $pdf->MultiCell(150, 4, datetolocal($int_dateprev), 1, 'L');
                }

                if ($closed == TRUE) {
                    // On affiche uniquement le règlement si l'intervention est close (sinon, c'est inutile)
                    $pdf->ln(2);

                    $pdf->SetFont('', 'B', 10);
                    $pdf->Cell(40, 5, _("Règlement") . ' : ', 0, 0, 'R');

                    // Récupération du libellé règlement
                    $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
                    $rech = "SELECT * FROM `" . TBREG . "` WHERE reg_code='" . $int_codereg . "'";
                    $rows = $db->get_results($rech, ARRAY_A);
                    if ($rows) {
                        foreach ($rows as $row) {
                            $row = encode_str($row);
                            extract($row);
                        }
                    }
                    $db->disconnect();

                    $pdf->SetFont('', '', 8);
                    $pdf->MultiCell(150, 4, $reg_desc, 1, 'L');


                    // Affichage de la date de fin uniquement si terminé
                    $pdf->ln(2);

                    $pdf->SetFont('', 'B', 10);
                    $pdf->Cell(40, 5, _("Interv. close le") . ' : ', 0, 0, 'R');
                    $pdf->SetFont('', '', 8);
                    $pdf->MultiCell(150, 4, datetolocal($int_datefin), 1, 'L');
                }

                $pdf->ln(2);
            }

            if ($aff_fait <> 0) {
                $pdf->SetFont('', 'BU', 10);
                $pdf->Cell(190, 5, _("Forfaits facturés et pièces changées"), 0, 1, 'C');
                $pdf->ln(1);
            }

            /*** Tableau des articles ***/
            include("int_pdf_tabart.inc.php");

            $pdf->SetLineWidth(0.2);
            $pdf->SetDrawColor(0);

            $row = lit_enr_txt("CGV_SAV");
            if ($row) {
                $row = encode_str($row);
                extract($row);
                if ($vg == 0)
                    $txt_sav = parse_txtcorps("age", $int_codeage, $txt_texte, "");
                else {
                    switch ($niv_util) {
                        case 3 :
                        case 4 :
                            $txt_sav = parse_txtcorps("age", @$_SESSION["code_age"], $txt_texte, "");
                            break;
                        case 5 :
                        case 9 :
                            $row = lit_enr_cdg();
                            if ($row) {
                                $row = encode_str($row);
                                extract($row);
                                $txt_texte = str_replace("%age_", "%cge_", $txt_texte);
                                $txt_sav = parse_txtcorps("cdg", "", $txt_texte, "");
                            }
                            break;
                    }
                }

                $pdf->SetFont('', '', 4);
                $pdf->WriteHTML($txt_sav, true, false, true);
            }

            $y_courant = $pdf->GetY();

            $pdf->Ln(5);

            // Il y a une ou plusieurs signatures
            // On les affiche
            if ($nb_sig > 0) {
                $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
                $rech2 = "SELECT * FROM `" . TBSIG . "`";
                $rech2 .= " WHERE sig_typrat=1 AND sig_coderat='" . $ci . "'";
                $rech2 .= " ORDER BY sig_date, sig_heure";
                $rows2 = $db->get_results($rech2, ARRAY_A);
                $db->disconnect();
                $nsig = 0;
                if ($rows2) {
                    foreach ($rows2 as $row2) {
                        $row2 = encode_str($row2);
                        extract($row2);
                        if ($nsig % 2 == 0) {
                            // Si on est trop bas pour afficher la zone de signature, on effectue un saut de page
                            $besoin = 40; // Pour le cartouche (40 mm)
                            if ($y_courant > (297 - $besoin - 10)) // 29.7cm - $besoin - 1cm de marge
                                $pdf->AddPage();

                            $y_debutligne = $pdf->getY();
                        } else {
                            $pdf->SetY($y_debutligne);
                            $pdf->Cell(107);
                        }

                        // On affiche la signature
                        $pdf->SetFont('', 'BU', 10);
                        if (intval($sig_idhisto) > 0) {
                            $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
                            $rech3 = "SELECT * FROM `" . TBINTH . "` WHERE `inth_id` = ".$sig_idhisto;
                            $row3 = $db->get_row($rech3,ARRAY_A);
                            $db->disconnect();
                            if (is_array($row3)) {
                                $row3 = encode_str($row3);
                                extract($row3);
                                $pdf->Cell(95, 5, _("Travail du") . " " . datetolocal($inth_date), 'LTR', 1, 'C');
                            } else
                                $pdf->Cell(95, 5, _("Date & Signature client"), 'LTR', 1, 'C');
                        } else
                            $pdf->Cell(95, 5, _("Date & Signature client"), 'LTR', 1, 'C');
                        $pdf->SetFont('', 'I', 6);
                        for ($i = 0; $i < 6; $i++) {
                            if ($nsig % 2 != 0)
                                $pdf->Cell(107);
                            switch ($i) {
                                case 0 :
                                    if ($sig_id <> 0) {
                                        $txt_sig = _("Signé le") . ' ' . datetolocal($sig_date) . ' ' . _("à") . ' ' . substr($sig_heure, 0, 5) . ', ' . _("par") . ' ' . $sig_nom . ' (' . $sig_matricule . ')';
                                        $pdf->Cell(95, 5, $txt_sig, 'LR', 1, 'C');
                                    } else
                                        $pdf->Cell(95, 5, "", 'LR', 1, 'L');
                                    break;
                                case 1 :
                                    $posX_signature = $pdf->GetX();
                                    $posY_signature = $pdf->GetY();
                                    $pdf->Cell(95, 5, "", 'LR', 1, 'L');
                                    break;
                                default :
                                    $pdf->Cell(95, 5, "", 'LR', 1, 'L');
                                    break;
                            }
                        }
                        if ($nsig % 2 != 0)
                            $pdf->Cell(107);
                        $pdf->Cell(95, 5, "", 'LRB', 1, 'L');
                        if (@$_SESSION["niv_log"] == 9) {
                            $img = sigJsonToImage($sig_signature, ['imageSize' => [$sig_width, $sig_height]]);
                            $url_image = $url_gfc . "/pj/image.png";
                            imagepng($img, $url_image);
                            $pdf->Image($url_image, $posX_signature + 1, $posY_signature, 93, 29);
                            imagedestroy($img);
                            @unlink($url_image);
                        }
                        $nsig++;
                    }
                }
            }

            // Intervention non close : on laisse un cartouche de signature
            if ($closed == FALSE) {
                $pdf->Ln(1);
                $pdf->SetFont('', 'BU', 10);
                $pdf->Cell(47);
                $pdf->Cell(95, 5, _("Date & Signature client"), 'LTR', 1, 'C');
                $pdf->SetFont('', 'I', 6);
                for ($i = 0; $i < 6; $i++) {
                    $pdf->Cell(47);
                    $pdf->Cell(95, 5, "", 'LR', 1, 'L');
                }
                $pdf->Cell(47);
                $pdf->Cell(95, 5, "", 'LRB', 1, 'L');
            }
        }

        if ($cgv == TRUE) {
            $pdf->AddPage();

            $row = lit_enr_txt("CGV_MASTER");
            $row = encode_str($row);
            extract($row);

            $pdf->SetFont('', 'BU', 10);
            $txt_ent = parse_txtcorps("cdg", "", $txt_entete, "");
            $pdf->MultiCell(190, 5, $txt_ent . "\n\n", 0, 'C');

            $txt_texte = formatetxt($txt_texte);
            $txt_cgv = parse_txtcorps("cdg", "", $txt_texte, "");

            $pdf->SetFont('', '', 10);
            $pdf->WriteHTML($txt_cgv, true, false, true);
        }

        if ($vg == 0)
            $nompdf = _("Intervention").'_' . $int_code;
        else
            $nompdf = _("intervention").'_vierge.pdf';
        $typgen = intval($pdf->tgen);
        $tact = strtolower($pdf->tact);

        $url_pdf = $url_gfc . "/pj/" . $nompdf;
        switch ($typgen) {
            // Sortie vers fichier stocké et envoi email
            case 1 :
                add_trace(1, $int_code, "IMPMA", _("Impression"), _("Envoi d'une impression PDF par mail"), TRUE);
                $pdf->Output($url_pdf, 'F');
                $sujet = "";
                $type_ope = "";
                switch ($tact) {
                    case "add" :
                        $sujet = _("Mise en place d'une nouvelle intervention") . " (" . $int_code . ")";
                        $type_ope = "cre";
                        break;
                    case "edit" :
                        if ($codestatut <> "CLOT") {
                            $sujet = _("Votre intervention") . " " . $int_code . " " . _("est terminée");
                            if ($int_codedo == "")
                                $type_ope = "fait";
                            else
                                $type_ope = "fait2";
                        } else {
                            $sujet = _("Votre intervention") . " " . $int_code . " " . _("est close");
                            if ($int_codedo == "")
                                $type_ope = "clot";
                            else
                                $type_ope = "clot2";
                        }
                        break;
                    case "cop" :
                        $sujet = _("Copie de l'intervention") . " " . $int_code;
                        $type_ope = "cop";
                        break;
                }
                envoi_mail("", $sujet, "int", $type_ope, "xxx", "cli", $int_code, "", "", TRUE, $url_pdf);
                break;
            // Sortie classique vers navigateur
            default :
                add_trace(1, $int_code, "IMPPD", _("Impression"), _("Impression à l'écran"), TRUE);
                $pdf->Output($url_pdf, 'FI');
                break;
        }
        @unlink($url_pdf);
        if ($typgen == 1)
            close_fen_auto('', '');
    }
}
else
    close_fen_auto('', '');
