<?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_co.inc.php");
include_once("../inc/fic_cocl.inc.php");
include_once("../inc/fic_do.inc.php");
include_once("../inc/fic_droits.inc.php");
include_once("../inc/fic_fici.inc.php");
include_once("../inc/fic_hum.inc.php");
include_once("../inc/fic_int.inc.php");
include_once("../inc/fic_ot.inc.php");
include_once("../inc/fic_rdv.inc.php");
include_once("../inc/fic_st.inc.php");
include_once("../inc/fic_statut.inc.php");
include_once("../inc/fic_taxes.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");
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"]);
check_modules();

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

$titre = @$_POST["titre"];
$td = @$_POST["td"];
$ot = @$_POST["ot"];

$datedde = datetomysql(@$_POST["dateddef"]);
$codeadev = @$_POST["codeadev"];
$code = str_majuscules(@$_POST["code"]);
$detailsaisi = @$_POST["detail"];
$codecat = str_majuscules(@$_POST["codecat"]);
$codeman = str_majuscules(@$_POST["codeman"]);
$codeocli = str_majuscules(@$_POST["codeocli"]);
$codeext = str_majuscules(@$_POST["codeext"]);
$codeage = str_majuscules(@$_POST["codeage"]);
$codedo = str_majuscules(@$_POST["codedo"]);
$codecocl = str_majuscules(@$_POST["codecocl"]);
$rephnc = str_majuscules(@$_POST["lsthnc"]);
$repded = str_majuscules(@$_POST["lsttded"]);
$codecli = str_majuscules(@$_POST["codecli"]);
$ddeur = intval(@$_POST["ddeur"]);
$prev = @$_POST["prev"];
$site = @$_POST["idsite"];
$codeorig = str_majuscules(@$_POST["codeorig"]);
$codestatut = str_majuscules(@$_POST["codestatut"]);
$codelieu = str_majuscules(@$_POST["codelieu"]);
$urg = @$_POST["urgence"];
/*
$daterdvf = @$_POST["daterdvf"];
if ($daterdvf <> "")
	$daterdv = datetomysql($daterdvf);
else
	$daterdv = "";
$hrdv = @$_POST["hrdv"];
if ($hrdv<>"")
	$hrdv.=":00";
$dureem=intval(@$_POST["dureem"]);
*/
$datefinpf ='';
$datefinp ='0000-00-00';
if (isset($_POST["datefinpf"])) {
    $datefinpf = $_POST["datefinpf"];
    $datefinp = datetomysql($datefinpf);
}
$planauto = intval(@$_POST["planauto"]);
$mat = @$_POST["mat"];
$acompte = floatval(@$_POST["acpte"]);
$pbm = trim(@$_POST["pbm"]);
$gar = intval(@$_POST["gar"]);

$fgar = @$_POST["fgar"];
if ($fgar == "") // Si pas de référence facture saisie, pas sous garantie
    $gar = 0;

$excodetec = str_majuscules(@$_POST["excodetec"]);
$codetec = "-1";
if (isset($_POST["codetec"]))
    $codetec = str_majuscules($_POST["codetec"]);
$duree = formateheure(@$_POST["duree"] . ":00");
$durees = heure_sec($duree);
$dureeoff = formateheure(@$_POST["dureeoff"] . ":00");
$dureeoffs = heure_sec($dureeoff);
$forfait = floatval(@$_POST["forfait"]);

$fait = @$_POST["fait"];
$exdateprevf = @$_POST["exdateprevf"];
$dateprevf = '';
$dateprev = '0000-00-00';
if (isset($_POST["dateprevf"])) {
    $dateprevf = $_POST["dateprevf"];
    $dateprev = datetomysql($dateprevf);
}
$codereg = @$_POST["codereg"];

$datefinf = '';
$datefin = '0000-00-00';
if (isset($_POST["datefinf"]))
{
    $datefinf = $_POST["datefinf"];
    $datefin = datetomysql($datefinf);
    if ($datefin <> '0000-00-00')
    {
        if ($dateprev == "0000-00-00") // Si pas de de date pour prévenir le client, on prend la date de clôture
            $dateprev = $datefin;
        $codestatut = "CLOT"; // S'il existe une date de fin, c'est que le dossier est clôt
    }
}

$pces = intval($_POST["pieces_hs"]);
$totalint = @$_POST["totalint"];
$codeages = str_majuscules(@$_POST["agesite"]);
if ($codeages == "-1") // Si on a choisi "agence gestionnaire du compte", on donne la valeur du gestionnaire de l'intervention
    $codeages = $codeage;

$publique = intval(@$_POST["publique"]);
if (($publique <> 0) AND ($publique <> 1))
    $publique = 0;

$tab_tecaff = [];
if (isset($_POST["tecaff"]))
    $tab_tecaff = $_POST["tecaff"];

$codeuser = @$_SESSION["code_log"];

$msg = "";
$contrat = "";
$ncontrat = "";
$url_cocl = "";
$report_temps = FALSE;
$retourliste = TRUE;
$enrimp = FALSE;
$enrmail = FALSE;
$trace_added = FALSE;


switch ($_POST["nbutton"]) {
    case "enrimp" :
        $retourliste = FALSE;
        $enrimp = TRUE;
        break;
    case "enrmail" :
        $retourliste = FALSE;
        $enrmail = TRUE;
        break;
    default :
        break;
}

if ((@$_SESSION["niv_log"] <> 4) AND (@$_SESSION["niv_log"] <> 3) AND (@$_SESSION["niv_log"] <> 5) AND (@$_SESSION["niv_log"] <> 9)) {
    $retourliste = TRUE;
    $enrimp = FALSE;
    $enrmail = FALSE;
}

$tab_tec_dejaaff = $_SESSION["tec_aff"];

// On crée le tableau des modifications de techniciens
// -1 : supprimé
// 0 : inchangé (inutile ?)
// 1 : ajouté
$tab_tec_diff = [];

// Il y avait des techniciens affectés
if (count($tab_tec_dejaaff) > 0) {
    // On a affecté des techniciens
    if ($tab_tecaff[0] <> '-1') {
        // On balaye les techniciens affectés
        // (vérif des inchangés et des ajouts)
        foreach ($tab_tecaff as $value) {
            if (exist_in_array($value, $tab_tec_dejaaff) == FALSE)
                $tab_tec_diff[$value] = 1;
        }

        // On balaye les techniciens déjà affectés
        // (vérif des suppression)
        foreach ($tab_tec_dejaaff as $value) {
            if (exist_in_array($value, $tab_tecaff) == FALSE)
                $tab_tec_diff[$value] = -1;
        }
    } else // On n'a pas affecté de techniciens
    {
        // On balaye les techniciens déjà affectés
        // (que des suppressions)
        foreach ($tab_tec_dejaaff as $value) {
            $tab_tec_diff[$value] = -1;
        }
    }
} else // Il n'y avait pas de techniciens affectés
{
    // On a affecté des techniciens
    if ($tab_tecaff[0] <> '-1') {
        // On balaye les techniciens affectés
        // (que des ajouts)
        foreach ($tab_tecaff as $value) {
            $tab_tec_diff[$value] = -1;
        }
    }
    // Si on n'a pas affecté de techniciens, on ne fait rien
}

$sujet_mail = "Int.";

switch ($td) {
    // Ajout de la fiche Intervention
    case "add" :
        $codei = crecode("I", TRUE);

        // données traçabilité
        $titre_tra = _("création de l'intervention");
        $desc_tra_default = _("création de l'intervention");
        $desc_tra_default .= chr(13) . chr(10);
        $desc_tra_default .= $detailsaisi;

        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
        $rech = "SELECT * FROM `" . TBINT . "` WHERE `int_code` = '" . $db->escape($codei) . "'";
        $nbres = $db->get_var($rech);
        if ($nbres == 0) {
            switch (@$_SESSION["niv_log"]) {
                case 2 :
                    $rech2 = "INSERT INTO `" . TBINT . "`";
                    $rech2 .= " (int_datecrea,int_codecrea,int_datemod,int_codemod,int_datedde,int_code,int_codecli,";
                    $rech2 .= "int_ddeur,int_codeorig,int_codestatut,int_codelieu,int_urg,int_mat,";
                    $rech2 .= "int_pbm,int_gar,int_fgar,int_codereg,int_idsite)";
                    $rech2 .= " VALUES";
                    $rech2 .= " ('$datea','$codeuser','$datea','$codeuser','$datedde','$codei','$codecli',";
                    $rech2 .= "'$ddeur','$codeorig','$codestatut','$codelieu','$urg','" . $db->escape($mat) . "',";
                    $rech2 .= "'" . $db->escape($pbm) . "','$gar','$fgar','EC','$site')";
                    break;
                case 6 :
                case 7 :
                    $rech2 = "INSERT INTO `" . TBINT . "`";
                    $rech2 .= " (int_datecrea,int_codecrea,int_datemod,int_codemod,int_datedde,int_code,int_codeext,int_codedo,int_codecli,";
                    $rech2 .= "int_ddeur,int_codeorig,int_codestatut,int_codelieu,int_urg,int_mat,";
                    $rech2 .= "int_pbm,int_gar,int_fgar,int_codereg,int_idsite)";
                    $rech2 .= " VALUES";
                    $rech2 .= " ('$datea','$codeuser','$datea','$codeuser','$datedde','$codei','" . $db->escape($codeext) . "','$codedo','$codecli',";
                    $rech2 .= "'$ddeur','$codeorig','$codestatut','$codelieu','$urg','" . $db->escape($mat) . "',";
                    $rech2 .= "'" . $db->escape($pbm) . "','$gar','$fgar','EC','$site')";
                    break;
                default :
                    $rech2 = "INSERT INTO `" . TBINT . "`";
                    $rech2 .= " (int_datecrea,int_codecrea,int_datemod,int_codemod,int_datedde,int_code,int_codecat,int_codeext,int_codeman,int_codeocli,int_codeage,int_codedo,";
                    $rech2 .= "int_codecli,int_ddeur,int_codecocl,int_coclhnc,int_coclded,int_codeorig,int_codestatut,int_codelieu,int_urg,int_datefinp,";
                    $rech2 .= "int_mat,int_pbm,int_gar,int_fgar,int_acpte,int_codetec,int_durees,int_fait,";
                    $rech2 .= "int_dateprev,int_codereg,int_datefin,int_idsite,int_codeages)";
                    $rech2 .= " VALUES";
                    $rech2 .= " ('$datea','$codeuser','$datea','$codeuser','$datedde','$codei','$codecat','" . $db->escape($codeext) . "','";
                    $rech2 .= $db->escape($codeman) . "','" . $db->escape($codeocli) . "','$codeage','$codedo','$codecli',";
                    $rech2 .= "'$ddeur','$codecocl','$rephnc','$repded','$codeorig','$codestatut','$codelieu','$urg','$datefinp','" . $db->escape($mat) . "',";
                    $rech2 .= "'" . $db->escape($pbm) . "','$gar','$fgar','$acompte','$codetec','$durees','" . $db->escape($fait) . "',";
                    $rech2 .= "'$dateprev','EC','$datefin','$site','$codeages')";
                    break;
            }
            $db->query($rech2);

            // Ajout traçabilité
            $desc_tra = $desc_tra_default;
            add_trace(1, $codei, "CRE", $titre_tra, $desc_tra, FALSE);

            // On affecte les techniciens
            affecte_tec_int($td, $tab_tecaff, $codei, $codetec, FALSE);

            // Ajout traçabilité techniciens
            if ($tab_tecaff[0] <> '-1') {
                $desc_tra = "";
                if (count($tab_tec_diff) > 0) {
                    foreach ($tab_tec_diff as $key => $value) {
                        if (trim($desc_tra) == "")
                            $desc_tra = _("Affectation des techniciens");
                        $rech2 = "SELECT tec_nom, tec_prenom FROM `" . TBTEC . "` WHERE `tec_code` = '$key'";
                        $row2 = $db->get_row($rech2, ARRAY_A);
                        if ($row2)
                            extract($row2);
                        $desc_tra .= chr(13) . chr(10) . "." . $tec_prenom . " " . $tec_nom . " " . _("ajouté");

                    }
                }
                if (trim($desc_tra) == "")
                    add_trace(1, $codei, "CREA", $titre_tra, $desc_tra, FALSE);
            }

            // On crée le répertoire de stockage des pièces jointes de l'intervention
            $mess_err = check_fic_int($codei, FALSE);

            // Ajout traçabilité (Si on mis un RDV)
            $exist_rdv = FALSE;
            $row2 = lit_enr_rdv_code(1, $code, FALSE);
            if (is_array($row2)) {
                $row2 = encode_str($row2);
                extract($row2);

                // Mise à jour du code rattaché
                $rech3 = "UPDATE `" . TBRDV . "` SET `rdv_datemod`='" . $datea . "', `rdv_codemod`='" . $codeuser . "',";
                $rech3 .= " `rdv_coderat`='" . $db->escape($codei) . "'";
                $rech3 .= " WHERE `rdv_id` = '" . $rdv_id . "'";
                $db->query($rech3);

                // Ajout traçabilité
                $desc_tra = _("Ajout d'une date de rendez-vous");
                add_trace(1, $codei, "CRER", $titre_tra, $desc_tra, FALSE);
            }
            /*
			// On vérifie si le module planning est bien en place
			if ($mod_planning == TRUE)
			{
				// Mise à jour sur le planning (si automatique)
				if ($planauto==1)
				{
					// On n'a pas choisi "n'importe quel technicien"
					// => On balaye le tableau des techniciens affectés et on enregistre
					if ($tab_tecaff[0]<>'-1')
					{
						$titre='INTERVENTION '.$codei;
						$detail="matériel :".chr(13).chr(10).$mat.chr(13).chr(10).chr(13).chr(10)."Travail à effectuer :".chr(13).chr(10).$pbm;
						
						foreach($tab_tecaff as $value2)
						{
							// création évènement
							$rech3 = "INSERT INTO `" .TBPEVT. "`";
							$rech3 .= " (pevt_datecrea,pevt_codecrea,pevt_datemod,pevt_codemod,pevt_gest,pevt_typdest,pevt_dest,pevt_typrat,pevt_coderat,";
							$rech3 .= "pevt_date,pevt_heure,";
							$rech3 .= "pevt_dureem,pevt_titre,pevt_detail,pevt_codelieu,pevt_codecat,pevt_nivurg) VALUES";
							$rech3 .= " ('$datea','$codeuser','$datea','$codeuser','$codeuser','1','$value2','1','$codei',";
							$rech3 .= "'$daterdv','$hrdv',";
							$rech3 .= "'$dureem','$titre','".$db->escape($detail)."','$codelieu','$codecat','$urg')";
							$rs3 = mysql_query($rech3) or die(mysql_error());
						}

						// MAJ pièce rattachée
						$rech4 = "UPDATE `" .TBINT. "` SET `int_planifie`='1'";
						$rech4.= " WHERE `int_code` = '".$codei."'";
						$rs4 = mysql_query($rech4) or die(mysql_error());

						// Ajout traçabilité
						$desc_tra = "Inscription sur le planning";
						add_trace(1,$codei,"CREA",$titre_tra,$desc_tra,FALSE);
					}
				}
			}
*/
            // Balayage et activation des problèmes sélectionnés
            $tab_pbm = explode("-", $_SESSION["pbm_choisis"]);
            if (count($tab_pbm) > 0) // Il y a  des problèmes sélectionnés : on traite
            {
                // On met à jour les problèmes choisis (s'il y en a)
                $rech = "UPDATE `" . TBRPBM . "` SET `rpbm_datemod`= '" . $datea . "', `rpbm_codemod`= '" . $codeuser . "',";
                $rech .= " `rpbm_codeint`= '" . $db->escape($codei) . "'";
                $rech .= " WHERE";

                if (count($tab_pbm) > 1) {
                    $rech .= " (";
                    foreach ($tab_pbm as $id_pbm) {
                        $rech .= " `rpbm_id`= '" . $id_pbm . "' OR";
                    }
                    // Suppression du dernier 'OR'
                    $rech = substr($rech, 0, strlen($rech) - 3);
                    $rech .= ")";
                } else
                    $rech .= " `rpbm_id`= '" . $tab_pbm[0] . "'";
                $db->query($rech);
            }

            // Ajout traçabilité (Si on a mis un contrat)
            if ($codecocl <> "") {
                $desc_tra = _("Ajout d'un contrat de maintenance");
                add_trace(1, $codei, "AJOC", $titre_tra, $desc_tra, FALSE);
            }


            // Régularisation du bon de travail rattaché
            if (trim($ot) <> "") {
                $rech = "UPDATE `" . TBOT . "` SET `ot_codeint`= '" . $db->escape($codei) . "' WHERE `ot_code`= '" . $db->escape($ot) . "'";
                $db->query($rech);
            }

            if ($_SESSION["niv_log"] <> 2)
                $msg = _("Intervention") . " " . $codei . " " . _("enregistrée");
            else
                $msg = _("Intervention enregistrée");
        } else {
            $msg = _("Ce code existe déjà");
            $retourliste = FALSE;
            $enrimp = FALSE;
            $enrmail = FALSE;
        }
        $db->disconnect();

        if ($retourliste == TRUE) {
            $sujet_mail .= " " . $codei;
            if ((trim($codeman) <> "") OR (trim($codeocli) <> "")) {
                $sujet_mail .= "(";
                if (trim($codeocli) <> "") {
                    $sujet_mail .= $codeocli;
                    if (trim($codeman) <> "")
                        $sujet_mail .= " - ";
                }
                if (trim($codeman) <> "")
                    $sujet_mail .= $codeman;
                $sujet_mail .= ")";
            }
            $pcli = FALSE;
            // Envoi d'email vers le client
            if ($prev == 0) {
                // On envoie uniquement si l'envoi avec pièce jointe n'a pas déjà été demandé
                if ($enrmail == FALSE)
                    envoi_mail("", $sujet_mail . " "._("créée"), "int", "cre", "xxx", "cli", $codei, "", "", TRUE);
            } else {
                if ($prev <> 4) // Le niveau 4 est "Ne pas prévenir"
                {
                    $pcli = TRUE;
                    $txtcorps = cre_corps_txtc("int", "cre", "xxx", "cli", $codei, "", "");
                    $_SESSION["txt"] = $txtcorps;
                }
                // Envoi d'email vers le webmaster
                envoi_mailwm("", $sujet_mail . " "._("créée"), "int", "cre", "xxx", "cli", $codei, "", "");
            }

            // Envoi d'email vers le donneur d'ordres
            if ((@$_SESSION["niv_log"] == 7) OR (@$_SESSION["niv_log"] == 6))
                envoi_mail("", $sujet_mail . " "._("créée"), "int", "cre", "xxx", "do", $codei, "", "", FALSE);

            // Envoi d'email vers l'agence (Si pas créé par une agence)
            if ((@$_SESSION["niv_log"] <> 4) AND (@$_SESSION["niv_log"] <> 3))
                envoi_mail("", $sujet_mail . " créée", "int", "cre", "xxx", "age", $codei, "", "", FALSE);
            else // Envoi email si créé par une agence ou un technicien agence
            {
                // Si saisi par autre agence que celle gérant l'intervention ou le site
                if (($_SESSION["code_age"] <> $codeage) OR (($_SESSION["code_age"] <> $codeages) AND ($site > 0)))
                    envoi_mail("", $sujet_mail . " "._("créée"), "int", "cre", "xxx", "age", $codei, "", "", FALSE);
            }

            // Envoi d'email vers le technicien responsable (Si pas créé par lui)
            if (($codetec <> "") AND ($codetec <> "-1")) {
                if ((@$_SESSION["niv_log"] <> 3) OR ((@$_SESSION["niv_log"] == 3) AND (@$_SESSION["code_log"] <> $codetec)))
                    envoi_mail("", $sujet_mail . " "._("affectée"), "int", "cre", "xxx", "tec", $codei, "", "", FALSE);
            }

            // Envoi d'email vers le centre de gestion (Si pas créé par le CDG)
            if (@$_SESSION["niv_log"] <> 5)
                envoi_mail("", $sujet_mail . " "._("créée"), "int", "cre", "xxx", "cdg", $codei, "", "", FALSE);
        }

        // Remise à niveau type client
        upd_nivcli($codecli, TRUE);

        break;

    // MAJ de la fiche Intervention
    case "edit" :

        $maj_int_ok = TRUE;
        if (($codestatut == "CLOT") OR ($dateprevf <> "")) {
            if (nb_ot_actifs($code) > 0) {
                $maj_int_ok = FALSE;
                $codestatut = "";
                $retourliste = FALSE;
            }
        }

        if ($maj_int_ok == TRUE) {
            // données traçabilité
            $titre_tra = _("Modification de l'intervention");

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

            // On récupère l'enregistrement précédent (traçabilité)
            $ex_enrint = lit_enr_int($code, FALSE, "assoc");

            $rech = "";

            switch (@$_SESSION["niv_log"]) {
                case 6 :
                case 7 :
                    $rech = "UPDATE `" . TBINT . "` SET `int_datemod`='" . $datea . "', `int_codemod`='" . $codeuser . "', `int_codecli`='" . $codecli . "',";
                    $rech .= " `int_datefinp`='" . $datefinp . "',";
                    $rech .= " `int_ddeur`='" . $ddeur . "', `int_codeage`='" . $codeage . "', `int_codecocl`='" . $codecocl . "', `int_codeorig`='" . $codeorig . "',";
                    $rech .= " `int_codestatut`='" . $codestatut . "',";
                    $rech .= " `int_codelieu`='" . $codelieu . "', `int_urg`='" . $urg . "', `int_mat`='" . $db->escape($mat) . "', `int_pbm`='" . $db->escape($pbm) . "',";
                    $rech .= " `int_gar`='" . $gar . "', `int_fgar`='" . $fgar . "', `int_idsite`=" . $site . ", `int_codeext`='" . $db->escape($codeext) . "'";
                    /*
					if (datetolocal($daterdv)=="")
						$rech .=", `int_planifie`='0'";
					*/
                    $rech .= " WHERE `int_code` = '" . $db->escape($code) . "'";
                    break;
                default :
                    $rech = "UPDATE `" . TBINT . "` SET `int_datemod`='" . $datea . "', `int_codemod`='" . $codeuser . "',`int_codecat`='" . $codecat . "',";
                    $rech .= " `int_datefinp`='" . $datefinp . "',`int_codecli`='" . $codecli . "',";
                    $rech .= " `int_ddeur`='" . $ddeur . "', `int_codeage`='" . $codeage . "', `int_codecocl`='" . $codecocl . "', `int_coclhnc`='" . $rephnc . "', `int_coclded`='" . $repded . "', `int_codeorig`='" . $codeorig . "',";
                    $rech .= " `int_codestatut`='" . $codestatut . "', `int_publique`='" . $publique . "',";
                    $rech .= " `int_codelieu`='" . $codelieu . "', `int_urg`='" . $urg . "', `int_mat`='" . $db->escape($mat) . "', `int_pbm`='" . $db->escape($pbm) . "', `int_acpte`='" . $acompte . "', `int_codetec`='" . $codetec . "',`int_durees`='" . $durees . "', `int_fait`='" . $db->escape($fait) . "', `int_dateprev`='" . $dateprev . "', `int_datefin`='" . $datefin . "',";
                    $rech .= " `int_gar`='" . $gar . "', `int_fgar`='" . $fgar . "', `int_codereg`='" . $codereg . "', `int_pces`='" . $pces . "', `int_idsite`=" . $site . ", `int_codeext`='" . $db->escape($codeext) . "', `int_codeman`='" . $db->escape($codeman) . "', `int_codeocli`='" . $db->escape($codeocli) . "', `int_codeages`='" . $codeages . "', `int_forfait`='" . $forfait . "'";
                    /*
					if (datetolocal($daterdv)=="")
						$rech .=", `int_planifie`='0'";
					*/
                    $rech .= " WHERE `int_code` = '" . $db->escape($code) . "'";
                    break;
            }
            $db->query($rech);

            $msg = _("Intervention") . " " . $code . " " . _("mise à jour");

            // On récupère l'enregistrement actuel (traçabilité)
            $nouv_enrint = lit_enr_int($code, FALSE, "assoc");

            // On compare les éléments d'enregistrement pour traçabilité
            $trace_added = analyse_trace("int", $ex_enrint, $nouv_enrint, $detailsaisi, FALSE);

            // On affecte les techniciens
            affecte_tec_int($td, $tab_tecaff, $code, $codetec, FALSE);

            // Ajout traçabilité techniciens (pas dans enregistrement intervention : donc traitement à part)
            if (count($tab_tec_diff) > 0) {
                $desc_tra = "";
                if ($tab_tecaff[0] <> '-1') {
                    foreach ($tab_tec_diff as $key => $value) {
                        switch (intval($value)) {
                            case -1 :
                                if (trim($desc_tra) == "")
                                    $desc_tra = _("Affectation des techniciens") . " :";
                                $rech2 = "SELECT tec_nom, tec_prenom FROM `" . TBTEC . "` WHERE `tec_code` = '" . $db->escape($key) . "'";
                                $row2 = $db->get_row($rech2, ARRAY_A);
                                if ($row2) {
                                    $row2 = encode_str($row2);
                                    extract($row2);
                                }
                                $desc_tra .= chr(13) . chr(10) . "." . $tec_prenom . " " . $tec_nom . " " . _("supprimé");
                                break;
                            case 1 :
                                if (trim($desc_tra) == "")
                                    $desc_tra = _("Affectation des techniciens") . " :";
                                $rech2 = "SELECT tec_nom, tec_prenom FROM `" . TBTEC . "` WHERE `tec_code` = '" . $db->escape($key) . "'";
                                $row2 = $db->get_row($rech2, ARRAY_A);
                                if ($row2) {
                                    $row2 = encode_str($row2);
                                    extract($row2);
                                }
                                $desc_tra .= chr(13) . chr(10) . "." . $tec_prenom . " " . $tec_nom . " " . _("ajouté");
                                break;
                        }
                    }
                } else {
                    // Tous supprimés
                    foreach ($tab_tec_diff as $key => $value) {
                        $desc_tra .= chr(13) . chr(10) . "." . $key . " " . ("supprimé");
                    }
                }

                if (trim($desc_tra) <> "") {
                    add_trace(1, $code, "MODA", $titre_tra, $desc_tra, FALSE);
                    $trace_added = TRUE;
                }
            }

            /*
			// On vérifie si le module planning est bien en place
			if ($mod_planning == TRUE)
			{
				// On vérifie la date de RDV
				// Si la date saisie dans la fiche intervention est nulle, on supprime chaque enregistrement dans le planning
				if (datetolocal($daterdv)=="")
				{
					$rech2 = "DELETE FROM `" .TBPEVT. "` WHERE `pevt_coderat` = '".$code."'";
					$rs2 = mysql_query($rech2) or die(mysql_error());
	
					// On signale que l'intervention n'est plus planifiée
					$rech3 = "UPDATE `" .TBINT. "` SET `int_planifie`='0'";
					$rech3.= " WHERE `int_code` = '".$code."'";
					$rs3 = mysql_query($rech3) or die(mysql_error());
				}
				else // S'il y a un RDV, on met à jour le planning uniquement si "automatique" coché
				{
					$maj_plan = FALSE;
					
					// On a forcé la mise à jour
					if ($planauto==1) 
						$maj_plan = TRUE;
					// On ne l'a pas forcée : il faut faire des modifs uniquement si date ou heure ou techniciens changés
					else 
					{
						// Il n'y avait pas de date de RDV
						// Maintenant, il y en a une, et on a demandé à planifier : on planifie
						if ($ex_drdv=="")
							$maj_plan = TRUE;
						else
						{
							// Il y avait une autre date/heure de RDV
							// Maintenant, il y en a une, et on a demandé à planifier : on planifie
							if (($daterdv <> $ex_drdv) OR ($hrdv<>$ex_hrdv))
								$maj_plan = TRUE;
						}

						// On a changé  un des techniciens (en ajout ou en suppression)
						// On planifie
						if (count($tab_tec_diff)>0)
							$maj_plan = TRUE;
					}

					if ($maj_plan==TRUE)
					{
						// On n'a pas choisi "n'importe quel technicien"
						if ($tab_tecaff[0]<>'-1')
						{
							// On met à jour les nouvelles date/heure de l'évènement
							// (Cette action est nécessaire que l'on ait demandé à replanifier ou pas)
							$rech2 = "UPDATE `" .TBPEVT. "` SET `pevt_datemod`='".$datea."', `pevt_codemod`='".$codeuser."',";
							$rech2.= " `pevt_date`='".$daterdv."', `pevt_heure`='".$hrdv."', `pevt_dureem`='".$dureem."'";
							$rech2.= " WHERE `pevt_coderat` = '".$code."'";
							$rs2 = mysql_query($rech2) or die(mysql_error());
							
							// On supprime les évènements précédemment saisis sur d'autres techniciens
							// et qui ne sont maintenant plus affectés à cette intervention
							// (Cette action est nécessaire que l'on ait demandé à replanifier ou pas)
							$rech2 = "";
							foreach($tab_tec_diff as $key=>$value)
							{
								switch(intval($value))
								{
									case -1 :
											if (trim($rech2) == "")
												$rech2 = "DELETE FROM `" .TBPEVT. "` WHERE `pevt_coderat` = '".$code."' AND (";
											$rech2.=" `pevt_dest` = '".$key."' OR";
										break;
									default :
										break;
								}
							}
							if ($rech2 <> "")
							{
								// Suppression du dernier 'OR'
								$rech2 = substr($rech2,0,strlen($rech2)-3);
								$rech2.=")";
								$rs2 = mysql_query($rech2) or die(mysql_error());
							}
							
							// On ajoute les évènements saisis sur les techniciens
							$titre='INTERVENTION '.$code;
							$detail="matériel :".chr(13).chr(10).$mat.chr(13).chr(10).chr(13).chr(10)."Travail à effectuer :".chr(13).chr(10).$pbm;
							// On met à jour que les modifs effectives (horaires ou date changés)
							// pour les techniciens ajoutés
							foreach($tab_tec_diff as $key=>$value)
							{
								switch(intval($value))
								{
									case 1 :
										// création évènement
										$rech2 = "INSERT INTO `" .TBPEVT. "`";
										$rech2 .= " (pevt_datecrea,pevt_codecrea,pevt_datemod,pevt_codemod,pevt_gest,pevt_typdest,pevt_dest,pevt_typrat,pevt_coderat,";
										$rech2 .= "pevt_date,pevt_heure, pevt_dureem,pevt_titre,pevt_detail,pevt_codelieu,pevt_codecat,pevt_nivurg) VALUES";
										$rech2 .= " ('$datea','$codeuser','$datea','$codeuser','$codeuser','1','$key','1','$code',";
										$rech2 .= "'$daterdv','$hrdv','$dureem','$titre','".$db->escape($detail)."','$codelieu','$codecat','$urg')";
										$rs2 = mysql_query($rech2) or die(mysql_error());
										break;
									default :
										break;
								}
							}

							// On a forcé la mise à jour
							// Il faut donc vérifier tous les techniciens qui sont affectés à cette intervention
							if ($planauto==1)
							{
								foreach($tab_tecaff as $value)
								{
									// On vérifie si l'évènement a déjà été enregistré, pour cette intervention et ce technicien
									$rech2 = "SELECT pevt_id FROM `" .TBPEVT. "` WHERE pevt_coderat = '".$code."' AND pevt_dest = '".$value."'";
									$rs2 = mysql_query($rech2)or die(mysql_error());
									if (mysql_num_rows($rs2)>0) // Si oui, on met à jour
									{
										// MAJ pièce rattachée
										if ($row2 = mysql_fetch_array($rs2))
										{
											extract($row2);
											$rech3 = "UPDATE `" .TBPEVT. "` SET `pevt_datemod`='".$datea."', `pevt_codemod`='".$codeuser."',";
											$rech3.= " `pevt_date`='".$daterdv."', `pevt_heure`='".$hrdv."', `pevt_dureem`='".$dureem."'";
											$rech3.= " WHERE `pevt_id` = '".$pevt_id."'";
										}
									}
									else
									{
										// Si non, création évènement
										$rech3 = "INSERT INTO `" .TBPEVT. "`";
										$rech3 .= " (pevt_datecrea,pevt_codecrea,pevt_datemod,pevt_codemod,pevt_gest,pevt_typdest,pevt_dest,pevt_typrat,pevt_coderat,";
										$rech3 .= "pevt_date,pevt_heure, pevt_dureem,pevt_titre,pevt_detail,pevt_codelieu,pevt_codecat,pevt_nivurg) VALUES";
										$rech3 .= " ('$datea','$codeuser','$datea','$codeuser','$codeuser','1','$value','1','$code',";
										$rech3 .= "'$daterdv','$hrdv','$dureem','$titre','".$db->escape($detail)."','$codelieu','$codecat','$urg')";
									}
									$rs3 = mysql_query($rech3) or die(mysql_error());
								}
							}

							// MAJ intervention (est planifiée)
							$rech2 = "UPDATE `" .TBINT. "` SET `int_planifie`='1'";
							$rech2.= " WHERE `int_code` = '".$code."'";
							$rs2 = mysql_query($rech2) or die(mysql_error());
						}
						else // On a choisi "n'importe quel technicien" : on peut vider le planning de cette intervention
						{
							$rech2 = "DELETE FROM `" .TBPEVT. "` WHERE `pevt_coderat` = '".$code."'";
							$rs2 = mysql_query($rech2) or die(mysql_error());
			
							// On signale que l'intervention n'est plus planifiée
							$rech3 = "UPDATE `" .TBINT. "` SET `int_planifie`='0'";
							$rech3.= " WHERE `int_code` = '".$code."'";
							$rs3 = mysql_query($rech3) or die(mysql_error());
						}
					}
				}
			}
*/

            // Balayage et mise à jour des problèmes sélectionnés
            $tab_pbm = [];
            if (trim($_SESSION["pbm_choisis"]) <> '')
                $tab_pbm = explode("-", $_SESSION["pbm_choisis"]);

            if (count($tab_pbm) > 0) // Il ya  des problèmes sélectionnés : on traite
            {
                // On met à jour les problèmes choisis (s'il y en a)
                $rech = "UPDATE `" . TBRPBM . "` SET `rpbm_datemod`= '" . $datea . "', `rpbm_codemod`= '" . $codeuser . "',";
                $rech .= " `rpbm_codeint`= '" . $db->escape($code) . "'";
                if ($codestatut == "CLOT") // Si intervention close, il faut injecter la date de traitement du problème
                    $rech .= ", `rpbm_datett`= '" . $datefin . "'";
                $rech .= " WHERE";

                if (count($tab_pbm) > 1) {
                    $rech .= " (";
                    foreach ($tab_pbm as $id_pbm) {
                        $rech .= " `rpbm_id`= '" . $id_pbm . "' OR";
                    }
                    // Suppression du dernier 'OR'
                    $rech = substr($rech, 0, strlen($rech) - 3);
                    $rech .= ")";
                } else
                    $rech .= " `rpbm_id`= '" . $tab_pbm[0] . "'";
                $db->query($rech);

                // On réinitialise ceux qui ne sont plus choisis (et qui l'étaient précédemment)
                $rech = "UPDATE `" . TBRPBM . "` SET `rpbm_datemod`= '" . $datea . "', `rpbm_codemod`= '" . $codeuser . "',";
                $rech .= " `rpbm_codeint`= NULL, `rpbm_datett`= '0000-00-00', `rpbm_fait`= NULL";
                $rech .= " WHERE `rpbm_codeint`= '" . $db->escape($code) . "' AND ";

                if (count($tab_pbm) > 1) {
                    $rech .= " (";
                    foreach ($tab_pbm as $id_pbm) {
                        $rech .= " `rpbm_id`<> '" . $id_pbm . "' AND";
                    }
                    // Suppression du dernier 'AND'
                    $rech = substr($rech, 0, strlen($rech) - 4);
                    $rech .= ")";
                } else
                    $rech .= " `rpbm_id`<> '" . $tab_pbm[0] . "'";
                $db->query($rech);
            } else // Il n'y en a pas, on réinitialise ceux qui étaient précédemment sélectionné pour cette intervention
            {
                $rech = "UPDATE `" . TBRPBM . "` SET `rpbm_datemod`= '" . $datea . "', `rpbm_codemod`= '" . $codeuser . "',";
                $rech .= " `rpbm_codeint`= NULL, `rpbm_datett`= '0000-00-00', `rpbm_fait`= NULL WHERE ";
                $rech .= " `rpbm_codeint`= '" . $db->escape($code) . "'";
                $db->query($rech);
            }
            // MAJ de l'historique du contrat
            if ($codecocl <> "") // Si code contrat, on met à jour
            {
                // Suppression contrat si différent de celui précédemment choisi
                $rech = "DELETE FROM `" . TBCOCLH . "` WHERE `coclh_codeint` = '" . $db->escape($code) . "' AND `coclh_codecocl` <> '" . $db->escape($codecocl) . "'";
                $db->query($rech);

                // On vérifie s'il y a un contrat pour cette intervention
                $rech = "SELECT COUNT(*) FROM `" . TBCOCLH . "` WHERE `coclh_codeint`= '" . $db->escape($code) . "'";
                $nbres = $db->get_var($rech);
                if ($nbres == 0) // Il n'y a pas de contrat pour cette intervention : on ajoute
                {
                    $rech2 = "INSERT INTO `" . TBCOCLH . "`";
                    $rech2 .= " (coclh_codecli,coclh_codecocl,coclh_codeint)";
                    $rech2 .= " VALUES";
                    $rech2 .= " ('" . $db->escape($codecli) . "','" . $db->escape($codecocl) . "','" . $db->escape($code) . "')";
                    $db->query($rech2);
                }
            } else // Pas de contrat : on supprime celui précédemment choisi
            {
                $rech = "DELETE FROM `" . TBCOCLH . "` WHERE `coclh_codeint` = '" . $db->escape($code) . "'";
                $db->query($rech);
            }

            $db->disconnect();

            $pcli = FALSE;
            $contrat = "";
            $sujet_mail .= " " . $code;
            if (($codeman <> "") OR ($codeocli <> ""))
                $sujet_mail .= "(";
            if ($codeocli <> "")
                $sujet_mail .= $codeocli . " - ";
            if ($codeman <> "")
                $sujet_mail .= $codeman;
            if (($codeman <> "") OR ($codeocli <> ""))
                $sujet_mail .= ")";
            if ($codestatut <> "CLOT") {
                // Si l'intervention est terminée, qu'il n'a pas déjà été prévenu (ou que la date pour prévenir a été changée),
                // on prévient le client
                if ($dateprevf <> "") {
                    if ($exdateprevf <> $dateprevf) {
                        // Envoi d'email vers le client
                        if ($prev == 0) {
                            // On envoie uniquement si l'envoi avec pièce jointe n'a pas déjà été demandé
                            if ($enrmail == FALSE) {
                                if ($codedo == "")
                                    envoi_mail("", $sujet_mail . " "._("terminée"), "int", "fait", "xxx", "cli", $code, "", $totalint, TRUE);
                                else
                                    envoi_mail("", $sujet_mail . " "._("terminée"), "int", "fait2", "xxx", "cli", $code, "", $totalint, TRUE);
                            }
                        } else {
                            if ($prev <> 4) // Le niveau 4 est "Ne pas prévenir"
                            {
                                $pcli = TRUE;
                                $txtcorps = cre_corps_txtc("int", "fait", "xxx", "cli", $code, "", $totalint);
                                $_SESSION["txt"] = $txtcorps;
                            }
                            // On prévient le Webmaster
                            envoi_mailwm("", $sujet_mail . " "._("terminée"), "int", "fait", "xxx", "cli", $code, "", $totalint);
                        }
                    }
                }

                // On prévient le technicien responsable s'il a changé
                if ($codetec <> $excodetec) {
                    if (($codetec <> "") AND ($codetec <> "-1")) {
                        if ((@$_SESSION["niv_log"] <> 3) OR ((@$_SESSION["niv_log"] == 3) AND (@$_SESSION["code_log"] <> $codetec)))
                            envoi_mail("", $sujet_mail . " ".("affectée"), "int", "cre", "xxx", "tec", $code, "", "", FALSE);
                    }
                } else // S'il n'a pas changé, on prévient juste le responsable de la modification
                {
                    if ((@$_SESSION["niv_log"] <> 3) OR ((@$_SESSION["niv_log"] == 3) AND (@$_SESSION["code_log"] <> $codetec)))
                        envoi_mail("", $sujet_mail . " "._("modifiée"), "int", "mod", "xxx", "tec", $code, "", "", FALSE);
                }
            } else {
                // On supprime les RDV non honorés sur cette intervention
                $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);

                // Récupération des RDV programmés pour cette intervention
                $tab_rdv_non_honores = [];
                $rech = "SELECT rdv_id FROM `" . TBRDV . "` WHERE `rdv_coderat`= '" . $db->escape($code) . "'";
                $rows = $db->get_results($rech, ARRAY_A);
                if ($rows) {
                    foreach ($rows as $row) {
                        extract($row);
                        $rech2 = "SELECT COUNT(*) FROM `" . TBINTH . "` WHERE `inth_idrdv`= '" . intval($rdv_id) . "'";
                        $nbres = $db->get_var($rech2);
                        if ($nbres == 0)
                            $tab_rdv_non_honores[] = $rdv_id;
                    }
                }

                if (count($tab_rdv_non_honores) > 0) {
                    // Suppression des RDV non honorés
                    $rech2 = "DELETE FROM `" . TBRDV . "` WHERE (";
                    // Suppression des évènements rattachés aux RDV non honorés
                    $rech3 = "DELETE FROM `" . TBPEVT . "` WHERE (";
                    foreach ($tab_rdv_non_honores as $value) {
                        $rech2 .= "`rdv_id` = '" . intval($value) . "' OR";
                        $rech3 .= "`pevt_idrdv` = '" . intval($value) . "' OR";
                    }
                    // Suppression du dernier 'OR'
                    $rech2 = substr($rech2, 0, strlen($rech2) - 3);
                    $rech3 = substr($rech3, 0, strlen($rech3) - 3);
                    $rech2 .= ")";
                    $rech3 .= ")";
                    // Exécution de la requêtes
                    $db->query($rech2);
                    $db->query($rech3);
                }
                $db->disconnect();

                // On prévient le client de la clôture de l'intervention
                if ($prev == 0) {
                    if ($codedo == "")
                        envoi_mail("", $sujet_mail . " "._("close"), "int", "clot", "xxx", "cli", $code, "", $totalint, FALSE);
                    else
                        envoi_mail("", $sujet_mail . " ".("close"), "int", "clot2", "xxx", "cli", $code, "", $totalint, FALSE);
                } else {
                    if ($prev <> 4) // Le niveau 4 est "Ne pas prévenir"
                    {
                        $pcli = TRUE;
                        $txtcorps = cre_corps_txtc("int", "clot", "xxx", "cli", $code, "", $totalint);
                        $_SESSION["txt"] = $txtcorps;
                    }
                    // On prévient le Webmaster
                    envoi_mailwm("", $sujet_mail . " ".("close"), "int", "clot", "xxx", "cli", $code, "", $totalint);
                }

                // On prévient le donneur d'ordres (si nécessaire)
                if ($codedo <> "")
                    envoi_mail("", $sujet_mail . " ".("close"), "int", "clot", "xxx", "do", $code, "", $totalint, FALSE);
                // Envoi d'email vers l'agence (si pas saisi par agence)
                if (@$_SESSION["niv_log"] <> 4)
                    envoi_mail("", $sujet_mail . " ".("close"), "int", "clot", "xxx", "age", $code, "", $totalint, FALSE);
                else // Envoi email si saisi par une agence
                {
                    // Si saisi par autre agence que celle gérant l'intervention ou le site
                    if (($_SESSION["code_age"] <> $codeage) OR (($_SESSION["code_age"] <> $codeages) AND ($site > 0)))
                        envoi_mail("", $sujet_mail . " ".("close"), "int", "clot", "xxx", "age", $code, "", $totalint, FALSE);
                }
                // Envoi d'email vers le centre de gestion
                if (mod_fact_age($codeage) == 0) // L'agence n'émet PAS ses factures
                    envoi_mail("", $sujet_mail . " ".("close"), "int", "faitf", "xxx", "cdg", $code, "", $totalint, TRUE);
                else // L'agence emet ses factures
                    envoi_mail("", $sujet_mail . " ".("close"), "int", "faiti", "xxx", "cdg", $code, "", $totalint, TRUE);

                // Si rattachée à un contrat, quelques tests
                if ($codecocl <> "") {
                    $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
                    $rech = "SELECT * FROM `" . TBCOCL . "` WHERE `cocl_code` = '" . $db->escape($codecocl) . "'";
                    $row = $db->get_row($rech, ARRAY_A);
                    if ($row) {
                        extract($row);

                        $con_aclore = FALSE;
                        $con_aren = FALSE;
                        $nouveau_soldes = solde_contrat_sec($codecocl, FALSE); // Le solde des interventions closes comprend le temps de CETTE intervention
                        $surplus = 0;
                        $ncon_report = "";

                        // On vérifie s'il y a une date de fin de contrat
                        // Si oui et qu'elle est dépassée, on clot le contrat
                        if (datetolocal($cocl_datef) <> "") {
                            if ((comp_date($cocl_datef, $datefin) == TRUE) OR (comp_date($cocl_datef, $datea) == TRUE)) {
                                $con_aclore = TRUE;
                                $msg .= "<br /><br />" . _("La date d'échéance du contrat") . " " . $codecocl . " " . _("est atteinte ou dépassée") . "<br />" . _("Le contrat") . " " . $codecocl . " " . _("est clôt");
                                $retourliste = FALSE;
                            }
                        }

                        // Toujours pas à clore ?
                        if ($con_aclore == FALSE) {
                            // Si c'est un contrat 'Quota horaire', on vérifie que le temps consommé ne dépasse pas le solde du contrat
                            if (intval($cocl_typh) == 1) {
                                if ($nouveau_soldes <= 0) // Si nouveau solde<=0, on clôt le contrat
                                {
                                    $retourliste = FALSE;
                                    $con_aclore = TRUE;
                                    if ($nouveau_soldes < 0) {
                                        $surplus = -$nouveau_soldes;
                                        $msg .= "<br /><br />" . _("Le nombre d'heures effectuées est supérieur de") . " " . heure_to_hhmm(sec_heure($surplus, 3, TRUE)) . " " . _("heures au solde d'heure du contrat") . "  " . $codecocl . "<br />" . _("Le contrat") . " " . $codecocl . " " . ("est clôt");
                                    } else
                                        $msg .= "<br /><br />" . _("Le solde d'heures est maintenant nul.") . "<br />" . _("Le contrat") . " " . $codecocl . " " . _("est clôt.");
                                }
                            }
                        }

                        if ($con_aclore == TRUE) {
                            // On injecte la date de fin dans le contrat
                            $rech2 = "UPDATE `" . TBCOCL;
                            $rech2 .= "` SET `cocl_datefin`='" . $datefin . "'";
                            $rech2 .= " WHERE `cocl_code` = '" . $db->escape($codecocl) . "'";
                            $db->query($rech2);

                            // On vérifie si le contrat a déjà été renouvelé
                            // Si non, on vérifie s'il est en mode "renouvellement automatique"
                            if ((intval($cocl_renouv) == 0) AND (intval($cocl_renauto) == 1)) {
                                $codeco = crecode("CO", FALSE);


                                $upd = "UPDATE `" . TBCOCL;
                                $upd .= "` SET `cocl_datemod`='" . $datea . "', `cocl_codemod`='" . $codeuser . "', `cocl_renouv`='1',";
                                $upd .= "  `cocl_rnum`='" . $codeco . "' WHERE `cocl_code` = '" . $db->escape($codecocl) . "'";
                                $db->query($upd);

                                // Création d'un nouveau contrat sur la base de l'ancien
                                if (datetolocal($cocl_datef) <> "") {
                                    $ancienne_duree_jours = diff_date_jours($cocl_dated, $cocl_datef, TRUE);
                                    $cocl_dated = ajoute_un_jour_date($cocl_datef);
                                    $cocl_datef = nouv_date_plus_jours($cocl_dated, $ancienne_duree_jours);
                                } else {
                                    $cocl_dated = $datea;
                                    $cocl_datef = "";
                                }

                                // Récupération du code TVA par défaut
                                $codetva = give_code_tva_default(FALSE);

                                $rech = "INSERT INTO `" . TBCOCL . "`";
                                $rech .= " (cocl_datecrea,cocl_codecrea,cocl_datemod,cocl_codemod,cocl_dateenv,cocl_daterec,cocl_code,cocl_codeco,cocl_codeper,";
                                $rech .= "cocl_codeage,cocl_codecli,cocl_delai,cocl_nbs,cocl_typh,cocl_dated,cocl_datef,cocl_preavis,cocl_daterel,cocl_nivrel,";
                                $rech .= "cocl_renouv,cocl_rnum,cocl_datefin,cocl_signe,cocl_matos,cocl_pvht,cocl_coderlp,cocl_sitep,cocl_codetva,";
                                $rech .= "cocl_renauto)";
                                $rech .= " VALUES";
                                $rech .= " ('$datea','$codeuser','$datea','$codeuser','$datea','','$codeco','$cocl_codeco','$cocl_codeper',";
                                $rech .= "'$cocl_codeage','$cocl_codecli','$cocl_delai','$cocl_nbs','$cocl_typh','$cocl_dated','$cocl_datef','$cocl_preavis','','',";
                                $rech .= "'','','','','" . $db->escape($cocl_matos) . "','$cocl_pvht','$cocl_coderlp','$cocl_sitep','$codetva','$cocl_renauto')";
                                $db->query($rech);

                                $msg .= "<br /><br />" . _("Nouveau contrat (N°") . $codeco . ") "._("créé en renouvellement");
                                $cocl_rnum = $codeco;
                                $con_aren = TRUE;
                                $retourliste = FALSE;
                            }

                            // On supprime déjà les reports existants
                            $rech = "DELETE FROM `" . TBCOCLR . "` WHERE `coclr_codeint` = '$code'";
                            $db->query($rech);

                            if (intval($cocl_typh) == 1) {
                                // vérification du solde non consommé
                                if ($rephnc != "") {
                                    // On ne reporte que si le nouveau solde est encore positif
                                    if ($nouveau_soldes > 0) {
                                        $rech = "";
                                        switch ($rephnc) {
                                            // Inutile ou Pas de report
                                            case "0" :
                                            case "-2" :
                                                break;
                                            // Report sur contrat de renouvellement
                                            case "-1" :
                                                $rech = "INSERT INTO `" . TBCOCLR . "`";
                                                $rech .= " (coclr_codeint,coclr_coclori,coclr_cocldest,coclr_nbsrep)";
                                                $rech .= " VALUES";
                                                $rech .= " ('$code','$codecocl','$cocl_rnum','$nouveau_soldes')";
                                                $msg .= "<br /><br />" . _("Non consommé") . " (" . heure_to_hhmm(sec_heure($nouveau_soldes, 3, TRUE)) . ") " . _("reporté sur contrat") . " " . $cocl_rnum;
                                                break;
                                            // Report sur contrat spécifique
                                            default :
                                                $rech = "INSERT INTO `" . TBCOCLR . "`";
                                                $rech .= " (coclr_codeint,coclr_coclori,coclr_cocldest,coclr_nbsrep)";
                                                $rech .= " VALUES";
                                                $rech .= " ('$code','$codecocl','$rephnc','$nouveau_soldes')";
                                                $msg .= "<br /><br />" . _("Non consommé") . " (" . heure_to_hhmm(sec_heure($nouveau_soldes, 3, TRUE)) . ") " . _("reporté sur contrat") . " " . $rephnc;
                                                break;
                                        }
                                        if ($rech <> "")
                                            $db->query($rech);
                                    }
                                }
                                // Vérification du solde trop consommé
                                if ($repded != "") {
                                    // On ne déduit que si le nouveau solde est Négatif
                                    if ($nouveau_soldes < 0) {
                                        $rech = "";
                                        switch ($repded) {
                                            // Inutile ou Pas de déduction
                                            case "0" :
                                            case "-2" :
                                                break;
                                            // Déduction sur contrat de renouvellement
                                            case "-1" :
                                                $rech = "INSERT INTO `" . TBCOCLR . "`";
                                                $rech .= " (coclr_codeint,coclr_coclori,coclr_cocldest,coclr_nbsrep)";
                                                $rech .= " VALUES";
                                                $rech .= " ('$code','$codecocl','$cocl_rnum','$nouveau_soldes')";
                                                $ncon_report = $cocl_rnum;
                                                $msg .= "<br /><br />" . _("Trop consommé") . " (" . heure_to_hhmm(sec_heure(-$nouveau_soldes, 3, TRUE)) . ") " . _("reporté sur contrat") . " " . $cocl_rnum;
                                                break;
                                            // Déduction sur contrat spécifique
                                            default :
                                                $rech = "INSERT INTO `" . TBCOCLR . "`";
                                                $rech .= " (coclr_codeint,coclr_coclori,coclr_cocldest,coclr_nbsrep)";
                                                $rech .= " VALUES";
                                                $rech .= " ('$code','$codecocl','$repded','$nouveau_soldes')";
                                                $ncon_report = $repded;
                                                $msg .= "<br /><br />" . _("Trop consommé") . " (" . heure_to_hhmm(sec_heure(-$nouveau_soldes, 3, TRUE)) . ") " . _("reporté sur contrat") . " " . $repded;
                                                break;
                                        }
                                        if ($rech <> "")
                                            $db->query($rech);
                                    }
                                }
                            }
                        }

                        $db->disconnect();

                        if ($con_aclore == TRUE) // Si besoin, on prévient de la clôture de contrat
                        {
                            $contrat = $codecocl;
                            // Envoi d'email vers le client
                            if ($prev == 0)
                                envoi_mail("", _("Clôture de votre contrat"), "con", "clo", "xxx", "cli", $codecocl, "", "", FALSE);
                            else
                                envoi_mailwm("", _("Clôture de contrat"), "con", "clo", "xxx", "cli", $codecocl, "", "");
                            // Envoi d'email vers l'agence
                            envoi_mail("", _("Clôture de contrat"), "con", "clo", "xxx", "age", $codecocl, "", "", FALSE);
                            // Envoi d'email vers le centre de gestion
                            envoi_mail("", _("Clôture de contrat"), "con", "clo", "xxx", "cdg", $codecocl, "", "", TRUE);

                            if ($con_aren == TRUE) // Si besoin, on prévient du renouvellement de contrat
                            {
                                $ncontrat = $codeco;
                                $url_cocl = "cocl_maj.php?td=edit&co=" . $codeco . "&cc=" . $cocl_codecli;
                                // Envoi d'email vers le client
                                if ($prev == 0)
                                    envoi_mail("", _("Renouvellement de votre contrat"), "con", "ren2", "xxx", "cli", $codecocl, "", "", FALSE);
                                else
                                    envoi_mailwm("", _("Renouvellement de contrat"), "con", "ren2", "xxx", "cli", $codecocl, "", "");
                                // Envoi d'email vers l'agence
                                envoi_mail("", _("Renouvellement de contrat"), "con", "ren2", "xxx", "age", $codecocl, "", "", FALSE);
                                // Envoi d'email vers le centre de gestion
                                envoi_mail("", _("Renouvellement de contrat"), "con", "ren2", "xxx", "cdg", $codecocl, "", "", TRUE);

                            }
                        }

                        // Contrôle du solde du contrat de report de trop consommé
                        if ($ncon_report <> "") {
                            if (solde_contrat_sec($ncon_report, TRUE) <= 0) // Solde Négatif ou nul...on clot
                            {
                                // Cloture
                                $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
                                $rech2 = "UPDATE `" . TBCOCL;
                                $rech2 .= "` SET `cocl_datefin`='" . $datefin . "'";
                                $rech2 .= " WHERE `cocl_code` = '" . $ncon_report . "'";
                                $db->query($rech2);
                                $db->disconnect();
                                // On prévient
                                $contrat = $ncon_report;
                                // Envoi d'email vers le client
                                if ($prev == 0)
                                    envoi_mail("", _("Clôture de votre contrat"), "con", "clo", "xxx", "cli", $codecocl, "", "", FALSE);
                                else
                                    envoi_mailwm("", _("Clôture de contrat"), "con", "clo", "xxx", "cli", $codecocl, "", "");
                                // Envoi d'email vers l'agence
                                envoi_mail("", _("Clôture de contrat"), "con", "clo", "xxx", "age", $codecocl, "", "", FALSE);
                                // Envoi d'email vers le centre de gestion
                                envoi_mail("", _("Clôture de contrat"), "con", "clo", "xxx", "cdg", $codecocl, "", "", TRUE);
                            }
                        }
                    }
                }
            }
        } else {
            $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
            switch (@$_SESSION["niv_log"]) {
                case 6 :
                case 7 :
                    $rech = "UPDATE `" . TBINT . "` SET `int_datemod`='" . $datea . "', `int_codemod`='" . $codeuser . "', `int_codecli`='" . $codecli . "',";
                    $rech .= " `int_ddeur`='" . $ddeur . "', `int_codeage`='" . $codeage . "', `int_codecocl`='" . $codecocl . "', `int_codeorig`='" . $codeorig . "',";
                    $rech .= " `int_codelieu`='" . $codelieu . "', `int_urg`='" . $urg . "', `int_mat`='" . $db->escape($mat) . "', `int_pbm`='" . $db->escape($pbm) . "',";
                    $rech .= " `int_gar`='" . $gar . "', `int_fgar`='" . $fgar . "', `int_idsite`=" . $site . ", `int_codeext`='" . $codeext . "'";
                    $rech .= " WHERE `int_code` = '" . $db->escape($code) . "'";
                    break;
                default :
                    $rech = "UPDATE `" . TBINT . "` SET `int_datemod`='" . $datea . "', `int_codemod`='" . $codeuser . "',`int_codecat`='" . $codecat . "',";
                    $rech .= " `int_codecli`='" . $codecli . "',";
                    $rech .= " `int_ddeur`='" . $ddeur . "', `int_codeage`='" . $codeage . "', `int_codecocl`='" . $codecocl . "', `int_codeorig`='" . $codeorig . "',";
                    $rech .= " `int_codelieu`='" . $codelieu . "', `int_urg`='" . $urg . "', `int_mat`='" . $db->escape($mat) . "', `int_pbm`='" . $db->escape($pbm) . "',";
                    $rech .= " `int_acpte`='" . $acompte . "', `int_codetec`='" . $codetec . "',`int_durees`='" . $durees . "', `int_fait`='" . $db->escape($fait) . "',";
                    $rech .= " `int_gar`='" . $gar . "', `int_fgar`='" . $fgar . "', `int_codereg`='" . $codereg . "', `int_pces`='" . $pces . "',";
                    $rech .= " `int_idsite`=" . $site . ", `int_codeext`='" . $db->escape($codeext) . "', `int_codeman`='" . $db->escape($codeman) . "', `int_codeocli`='" . $db->escape($codeocli) . "', ";
                    $rech .= "`int_codeages`='" . $codeages . "', `int_forfait`='" . $forfait . "'";
                    $rech .= " WHERE `int_code` = '" . $db->escape($code) . "'";
                    break;
            }
            $db->query($rech);
            $db->disconnect();
            $msg = _("Il y a des bons de travail rattachés à cette intervention") . "<br /><br />" . _("Merci de les clores avant de clore cette intervention ou de prévenir le client") . "<br /><br />" . _("L'intervention a été enregistrée") . "<br /><br />" . _("La date d'appel (client non prévenu) et le statut reste inchangés");
        }

        // Remise à niveau type client
        upd_nivcli($codecli, TRUE);

        // Ajout traçabilité
        if ($trace_added == FALSE) {
            $desc_tra = $desc_tra_default;
            add_trace(1, $code, "MOD", $titre_tra, $desc_tra, TRUE);
        }

        break;


    // Suppression de la fiche Intervention
    case "del" :
        $delok = TRUE;
        if (int_closed($code, TRUE) == TRUE) {
            $msg = _("Impossible de supprimer une intervention close");
            $retourliste = FALSE;
            $enrimp = FALSE;
            $delok = FALSE;
        }

        if (nb_ot($code) <> 0) {
            if ($msg == "")
                $msg .= "<br /><br />";
            $msg = _("Il y a des bons de travail rattachés à cette intervention") . "<br />" . _("Merci de les supprimer avant de supprimer cette intervention");
            $retourliste = FALSE;
            $enrimp = FALSE;
            $delok = FALSE;
        }

        if (exist_intf_int($code) == TRUE) {
            if ($msg == "")
                $msg .= "<br /><br />";
            $msg = _("Il y a un suivi de facturation rattaché à cette facture") . "<br />" . _("Merci de le supprimer avant de supprimer cette intervention");
            $retourliste = FALSE;
            $enrimp = FALSE;
            $delok = FALSE;
        }

        if ($delok == TRUE) {
            $row = lit_enr_int($code);
            if (is_array($row)) {
                $row = encode_str($row);
                extract($row);

                $sujet_mail .= " " . $code;
                if (($codeman <> "") OR ($codeocli <> ""))
                    $sujet_mail .= "(";
                if ($codeocli <> "")
                    $sujet_mail .= $codeocli . " - ";
                if ($codeman <> "")
                    $sujet_mail .= $codeman;
                if (($codeman <> "") OR ($codeocli <> ""))
                    $sujet_mail .= ")";

                // Si saisi par autre agence que celle gérant l'intervention ou le site
                if (($_SESSION["code_age"] <> $codeage) OR (($_SESSION["code_age"] <> $codeages) AND ($site > 0)))
                    envoi_mail("", $sujet_mail . " "._("annulée"), "int", "del", "xxx", "age", $code, "", "", FALSE);
                if (($codetec <> "") AND ($codetec <> "-1")) {
                    if ((@$_SESSION["niv_log"] <> 3) OR ((@$_SESSION["niv_log"] == 3) AND (@$_SESSION["code_log"] <> $codetec)))
                        envoi_mail("", $sujet_mail . " "._("supprimée"), "int", "del", "xxx", "tec", $code, "", "", FALSE);
                }
                // Envoi d'email vers le centre de geston
                if (@$_SESSION["niv_log"] <> 5)
                    envoi_mail("", $sujet_mail . " "._("annulée"), "int", "del", "xxx", "cdg", $code, "", "", FALSE);

                $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
                $rech = "DELETE FROM `" . TBINT . "` WHERE `int_code` = '" . $db->escape($code) . "'";
                $db->query($rech);

                // Suppression du détail horaire
                $rech = "DELETE FROM `" . TBINTH . "` WHERE `inth_codeint` = '" . $db->escape($code) . "'";
                $db->query($rech);

                // Suppression de l'historique du contrat
                $rech = "DELETE FROM `" . TBCOCLH . "` WHERE `coclh_codeint` = '" . $db->escape($code) . "'";
                $db->query($rech);

                // Suppression des historiques articles sur cette intervention
                $rech = "DELETE FROM `" . TBPDTI . "` WHERE `pdti_codeint` = '" . $db->escape($code) . "'";
                $db->query($rech);

                // Suppression des tâches rattachées à cette intervention
                $rech = "DELETE FROM `" . TBTAC . "` WHERE `tac_coderat` = '" . $db->escape($code) . "'";
                $db->query($rech);

                // Suppression des techniciens rattachés à cette intervention
                $rech2 = "DELETE FROM `" . TBINTT . "` WHERE `intt_codeint` = '" . $db->escape($code) . "'";
                $db->query($rech2);

                // On réinitialise les problèmes affectés à cette intervention
                $rech = "UPDATE `" . TBRPBM . "` SET `rpbm_datemod`= '" . $datea . "', `rpbm_codemod`= '" . $codeuser . "', `rpbm_codeint`= NULL,";
                $rech .= " `rpbm_datett`= NULL, `rpbm_fait`= NULL   WHERE `rpbm_codeint`= '" . $db->escape($code) . "'";
                $db->query($rech);

                // On vérifie si le module planning est bien en place
                if ($mod_planning == TRUE) {
                    // On supprime les évènements rattachés à cette intervention
                    $rech = "DELETE FROM `" . TBPEVT . "` WHERE `pevt_coderat` = '" . $db->escape($code) . "'";
                    $db->query($rech);
                }

                $db->disconnect();

                $msg = _("Intervention") . " " . $code . " " . _("supprimée");
            } else {
                $msg = _("Problème lors de la suppression");
                $retourliste = FALSE;
                $enrimp = FALSE;
            }
        } else
            $msg .= "<br />" . _("L'intervention n'a pas été supprimée");

        // Remise à niveau type client
        upd_nivcli($codecli, TRUE);

        break;
    default :
        break;
}

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>SMI - <?PHP echo _("ESPACE PRIVE"); ?> : <?PHP echo _("Fiche Intervention"); ?></title>

    <?PHP include_once("../inc/header.inc.php"); ?>

    <script type="text/javascript">
        <!--
        function init_all() {
            init_Body();
            <?PHP
            if ($retourliste == FALSE)
                echo "warn_txt('" . str_escape($msg) . "');";
            ?>
            init_new_fen('imprim1','impression','click');
            init_new_fen('imprim2','impression','click');
            init_new_fen('imprim3','impression','click');
        }

        $(document).ready(function () {
            init_all();
        });
        //-->
    </script>

</head>
<body>
<?php
include_once("../inc/entete.inc.php");
?>
<p align="center"><span class="titrepage"><?PHP echo $titre ?></span></p>
<?PHP
if ($retourliste == FALSE) {
    if ($enrimp == TRUE) {
        if ($td == "add") {
            $alea = time();
            $urlimp1 = "int_pdf.php?token=" . $alea . "&ci=" . $codei . "&timp=0";
            $urlimp2 = "int_pdf.php?token=" . $alea . "&ci=" . $codei . "&timp=0&te=cli";
            $urlimp3 = "int_pdf.php?token=" . $alea . "&ci=" . $codei . "&timp=0&cgv=ok";
        } else {
            $urlimp1 = "int_pdf.php?token=" . $alea . "&ci=" . $code . "&timp=0";
            $urlimp2 = "int_pdf.php?token=" . $alea . "&ci=" . $code . "&timp=0&te=cli";
            $urlimp3 = "int_pdf.php?token=" . $alea . "&ci=" . $code . "&timp=0&cgv=ok";
        }

        echo '<br />';
        if (url_ok($urlimp1) == TRUE) {
            echo '<div id="imprim1" align="center" title="' . $urlimp1 . '" class="falselnk">';
            echo '<img src="../img/print.png" title="' . _("Imprimer") . '" border="0" align="absmiddle"> ' . _("Imprimer");
            echo '</div>';
            echo '<br />';

        }

        if (((@$_SESSION["niv_log"] == 4) OR (@$_SESSION["niv_log"] == 3) OR (@$_SESSION["niv_log"] == 5) AND (@$_SESSION["niv_log"] == 9)) AND ($forfait > 0)) {
            if (url_ok($urlimp2) == TRUE) {
                echo '<div id="imprim2" align="center" title="' . $urlimp1 . '" class="falselnk">';
                echo '<img src="../img/print.png" title="' . _("Imprimer pour le client") . '" border="0" align="absmiddle"> ' . _("Imprimer pour le client");
                echo '</div>';
                echo '<br />';

            }
        }

        if ($codedo == "") {
            if (url_ok($urlimp3) == TRUE) {
                echo '<div id="imprim3" align="center" title="' . $urlimp1 . '" class="falselnk">';
                echo '<img src="../img/print.png" title="' . _("Imprimer avec CGV") . '" border="0" align="absmiddle"> ' . _("Imprimer avec CGV");
                echo '</div>';
                echo '<br />';
            }
        }
    }

    if ($enrmail == TRUE) {
        if ($prev == 0) {
            $envmail = TRUE;
            switch ($td) {
                // On envoi pas de mail si en mode suppression
                case "del" :
                    $envmail = FALSE;
                    break;
                // On envoie l'email au client en mode édition uniquement si nouvelle date pour prévenir
                case "edit" :
                    if (($dateprevf == "") OR (($exdateprevf == $dateprevf) AND ($dateprevf <> "")))
                        $envmail = FALSE;
                    break;
                default :
                    break;
            }
            if ($envmail == TRUE) {
                $alea = time();
                if ($td == "add")
                    $urlmai1 = "int_pdf.php?token=" . $alea . "&ci=" . $codei . "&timp=1&tact=" . $td;
                else
                    $urlmai1 = "int_pdf.php?token=" . $alea . "&ci=" . $code . "&timp=1&tact=" . $td;
                ?>
                <p align="center"><span
                        class="annot_std_gras"><?PHP echo _("Copie envoyée au client par email"); ?></span></p>
                <script type="text/javascript">
                    <!--
                    init_new_window('<?PHP echo $urlmai1; ?>','int_pdf_<?PHP echo $ci; ?>',1,1,'yes');
                    //-->
                </script>
            <?PHP
            } else {
                ?>
                <p align="center">
                    <span
                        class="annot_std_gras"><?PHP echo _("Il n'est pas nécessaire d'envoyer une copie au client"); ?></span><br />
                    <span
                        class="annot_petit_it"><?PHP echo _("Pas de date ou de nouvelle date pour prévenir le client"); ?></span>
                </p>
            <?PHP
            }
        } else {
            ?>
            <p align="center"><span
                    class="annot_std_gras"><?PHP echo _("Ce client est paramétré pour ne pas recevoir d'emails"); ?></span>
            </p>
        <?PHP
        }
    }
    if ($codestatut <> "CLOT")
        aff_ret_idx_man($td, $lnk_int_lst, _("Retour à la liste"), TRUE);
    else
        aff_ret_idx_man($td, $lnk_int_lst, _("Retour à la liste"), FALSE);
} else {
    if ($pcli == TRUE)
        exec_func_js("fen_prev_cli(" . $prev . ",'" . $contrat . "','" . $ncontrat . "')");

    if (@$_SESSION["niv_log"] <> 2)
        pop_ret_auto($msg, 'ok', $lnk_int_lst);
    else
        pop_ret_auto($msg, 'ok', 'index.php?tl=1');
}
include_once("pied.php");
?>
</body>
</html>