<?php
/****************************************************************************************
 * SMI (Services Maintenance Interventions) est une gestion libre de maintenance et de SAV
 *
 * Version 1.0.0
 *
 * Copyright (C) 2006-2014  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_do.inc.php");
include_once("../inc/fic_droits.inc.php");
include_once("../inc/fic_hum.inc.php");
include_once("../inc/fic_fici.inc.php");
include_once("../inc/fic_int.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_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("mail.inc.php");
include_once("../classes/dirtool/class_dirtool.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();
$_POST = clean_str($_POST);

// Variables Formulaire
$titre = @$_POST["titre"];
$td = @$_POST["td"];

$code = str_majuscules(@$_POST["code"]);
$nom = str_majuscules(@$_POST["nom"]);
$rcs = str_majuscules(@$_POST["rcs"]);
$ape = str_majuscules(@$_POST["ape"]);
$tvai = str_majuscules(@$_POST["tvai"]);
$tcom = str_majuscules(@$_POST["tcom"]);
$adr1 = str_majuscules(@$_POST["adr1"]);
$adr2 = str_majuscules(@$_POST["adr2"]);
$dep = @$_POST["dep"];
$ville = str_majuscules(@$_POST["ville"]);
$pays = str_majuscules(@$_POST["pays"]);
$codeadev = str_majuscules(@$_POST["codeadev"]);
$telf = @$_POST["telf"];
$txttelf = @$_POST["txttelf"];
$fax = @$_POST["fax"];
$txtfax = @$_POST["txtfax"];
$web = @$_POST["web"];
$heures = @$_POST["heures"];
$txtent = @$_POST["txtent"];
$rcivil = @$_POST["rcivil"];
$rprenom = @$_POST["rprenom"];
$rnom = @$_POST["rnom"];
$rtelf = @$_POST["rtelf"];
$rtelp = @$_POST["rtelp"];
$email = strtolower(@$_POST["email"]);
$emaild = strtolower(@$_POST["emaild"]);
$emailc = strtolower(@$_POST["emailc"]);
$emailt = strtolower(@$_POST["emailt"]);
$nota = @$_POST["nota"];
$facture = intval(@$_POST["factures"]);
$ouvert = intval(@$_POST["actif"]);

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

$pass = cremdp(FALSE);
$passcrypt = md5($pass);

$msg = "";

$db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
switch ($td) {
    // Ajout de la fiche Donneur d'ordres
    case "add" :
        $coded = "D" . $code;
        $rech = "SELECT * FROM `" . TBDO . "` WHERE do_code = '" . $db->escape($coded) . "'";
        $nbres = $db->get_var($rech);
        if ($nbres == 0) {
            // données traçabilité
            $titre_tra = _("création du donneur d'ordres");
            $desc_tra_default = _("création du donneur d'ordres");

            $rech2 = "INSERT INTO `" . TBDO . "`";
            $rech2 .= " (do_datecrea,do_codecrea,do_datemod,do_codemod,do_code,do_pass,do_nom,do_rcs,do_ape,do_tvai,do_tcom,";
            $rech2 .= "do_adr1,do_adr2,do_dep,do_ville,do_codepays,do_codeadev,do_telf,do_txttelf,do_fax,do_txtfax,do_txtent,do_resp_civilite,";
            $rech2 .= "do_resp_prenom,do_resp_nom,do_resp_telf,do_resp_telp,do_email,do_emaild,do_emailc,do_emailt,do_heures,do_web,";
            $rech2 .= "do_nota,do_fact,do_ouvert) VALUES";
            $rech2 .= " ('$datea','$codeuser','$datea','$codeuser','$coded','$passcrypt','" . $db->escape($nom) . "','" . $db->escape($rcs) . "','" . $db->escape($ape) . "','" . $db->escape($tvai) . "','" . $db->escape($tcom) . "',";
            $rech2 .= "'" . $db->escape($adr1) . "','" . $db->escape($adr2) . "','" . $db->escape($dep) . "','$ville','$pays','$codeadev','$telf','" . $db->escape($txttelf) . "','$fax','" . $db->escape($txtfax) . "','" . $db->escape($txtent) . "','" . $db->escape($rcivil) . "','" . $db->escape($rprenom) . "','" . $db->escape($rnom) . "',";
            $rech2 .= "'$rtelf','$rtelp','$email','$emaild','$emaild','$emailt','" . $db->escape($heures) . "','" . $db->escape($web) . "','" . $db->escape($nota) . "','$facture','1')";
            $db->query($rech2);

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

            // Ajout du compte pour connexion
            // Niveau par défaut : 6
            // Actif par défaut

            $log_ip = $_SERVER['REMOTE_ADDR']; // Récupération adresse IP
            $rech = "INSERT INTO `" . TBPW . "` (pw_code,pw_pass,pw_level,pw_lastsuccess,pw_lastip,pw_actif) VALUES ('$coded','$passcrypt','6','$dateheurea','$log_ip','1')";
            $db->query($rech);

            $msg = _("Fiche ajoutée");
        } else {
            $msg = _("Ce code existe déjà");
            $retourliste = FALSE;
        }
        $db->disconnect();

        if ($retourliste == TRUE) {
            // Envoi d'email vers le donneur d'ordres
            envoi_mail("", _("Ouverture de votre compte donneur d'ordres"), "do", "cre", "xxx", "do", $coded, $pass, "", TRUE);
            // Envoi d'email vers le centre de gestion
            envoi_mail("", _("Ouverture d'un compte donneur d'ordres"), "do", "cre", "xxx", "cdg", $coded, $pass, "", FALSE);
        }
        break;

    case "edit" :
        $editok = TRUE;

        if ((@$_SESSION["niv_log"] == 5) OR (@$_SESSION["niv_log"] == 9)) {
            if ($ouvert == FALSE) // Si fermeture de donneur d'ordres, quelques Contrôles sont nécessaires
            {
                // Vérifie si utilisé dans une fiche intervention non close
                if (exist_do_in_int_ouv($code, FALSE) == TRUE) {
                    $editok = FALSE;
                    $msg = _("Il faut d'abord clore les interventions en cours pour désactiver ce donneur d'ordres");
                    $retourliste = FALSE;
                }

                // Vérifie si utilisé dans une fiche technicien non licencié
                if (exist_do_in_tec_present($code, FALSE) == TRUE) {
                    $editok = FALSE;
                    if ($msg <> "")
                        $msg .= "<br /><br />";
                    $msg .= _("Il faut d'abord licencier les techniciens présent dans ce donneur d'ordres pour le fermer");
                    $retourliste = FALSE;
                }
            }
        }

        if ($editok == TRUE) {
            // On récupère l'enregistrement précédent (traçabilité)
            $ex_enrdo = lit_enr_do($code, FALSE, "assoc");

            switch (@$_SESSION["niv_log"]) {
                case 5 :
                case 9 :
                    // MAJ de la fiche donneur d'ordres
                    $rech = "UPDATE `" . TBDO . "` SET `do_datemod`='" . $datea . "', `do_codemod`='" . $codeuser . "', `do_code`='" . $code . "',";
                    $rech .= " `do_nom`='" . $db->escape($nom) . "', `do_rcs`='" . $db->escape($rcs) . "', `do_ape`='" . $db->escape($ape) . "', `do_tvai`='" . $db->escape($tvai) . "', `do_tcom`='" . $db->escape($tcom) . "', `do_adr1`='" . $db->escape($adr1) . "',";
                    $rech .= " `do_adr2`='" . $db->escape($adr2) . "', `do_dep`='" . $db->escape($dep) . "',`do_ville`='" . $ville . "',`do_codepays`='" . $pays . "',";
                    $rech .= " `do_codepays`='" . $pays . "', `do_codeadev`='" . $codeadev . "', `do_telf`='" . $telf . "', `do_txttelf`='" . $db->escape($txttelf) . "', `do_fax`='" . $fax . "',";
                    $rech .= " `do_txtfax`='" . $db->escape($txtfax) . "', `do_txtent`='" . $db->escape($txtent) . "', `do_resp_civilite`='" . $rcivil . "',";
                    $rech .= " `do_resp_prenom`='" . $db->escape($rprenom) . "', `do_resp_nom`='" . $db->escape($rnom) . "', `do_resp_telf`='" . $rtelf . "', `do_resp_telp`='" . $rtelp . "',";
                    $rech .= " `do_email`='" . $email . "', `do_emaild`='" . $emaild . "', `do_emailc`='" . $emailc . "', `do_emailt`='" . $emailt . "',";
                    $rech .= " `do_heures`='" . $db->escape($heures) . "', `do_web`='" . $db->escape($web) . "', `do_nota`='" . $db->escape($nota) . "', `do_fact`='" . $facture . "',";
                    $rech .= " `do_ouvert`='" . $ouvert . "'   WHERE `do_code` = '" . $db->escape($code) . "'";
                    $db->query($rech);
                    if ($ouvert == FALSE) {
                        // MAJ date de fermeture
                        $rech = "UPDATE `" . TBDO . "` SET `do_datec`='" . $datea . "'";
                        $rech .= " WHERE `do_code` = '" . $db->escape($code) . "'";
                        $db->query($rech);
                    }
                    break;
                case 6 :
                    // MAJ de la fiche donneur d'ordres
                    $rech = "UPDATE `" . TBDO . "` SET `do_datemod`='" . $datea . "', `do_codemod`='" . $codeuser . "',";
                    $rech .= " `do_telf`='" . $telf . "', `do_txttelf`='" . $db->escape($txttelf) . "',";
                    $rech .= "`do_fax`='" . $fax . "', `do_txtfax`='" . $db->escape($txtfax) . "',";
                    $rech .= "`do_txtent`='" . $db->escape($txtent) . "', `do_resp_civilite`='" . $rcivil . "',";
                    $rech .= "`do_resp_prenom`='" . $db->escape($rprenom) . "', `do_resp_nom`='" . $db->escape($rnom) . "',";
                    $rech .= "`do_resp_telf`='" . $rtelf . "', `do_resp_telp`='" . $rtelp . "', `do_email`='" . $email . "',";
                    $rech .= "`do_emaild`='" . $emaild . "', `do_emailc`='" . $emailc . "', `do_emailt`='" . $emailt . "',";
                    $rech .= "`do_heures`='" . $db->escape($heures) . "', `do_web`='" . $db->escape($web) . "'  WHERE `do_code` = '" . $db->escape($code) . "'";
                    $db->query($rech);
                    break;
            }
            $db->disconnect();

            $msg = _("Fiche modifiée");

            // On récupère l'enregistrement actuel (traçabilité)
            $nouv_enrdo = lit_enr_do($code, TRUE, "assoc");

            // On compare les éléments d'enregistrement pour traçabilité
            $trace_added = analyse_trace("do", $ex_enrdo, $nouv_enrdo, '', TRUE);

            // Envoi d'email vers le centre de gestion
            envoi_mail("", _("Modification d'un compte donneur d'ordres"), "do", "mod", "xxx", "cdg", $code, "", "", TRUE);
        } else
            $db->disconnect();
        break;

    // Suppression de la fiche Donneur d'ordres
    case "del" :
        $delok = TRUE;

        // Vérifie si utilisée dans une fiche intervention
        if (exist_do_in_int($code, FALSE) == TRUE) {
            $delok = FALSE;
            $msg = _("Ce donneur d'ordres est utilisé dans une fiche intervention") . '<br />' . _("Vous ne pouvez donc pas le supprimer (Il suffit de le passer en mode 'désactivé')");
            $retourliste = FALSE;
        }

        // Vérifie si utilisé dans une fiche technicien
        if (exist_do_in_tec($code, FALSE) == TRUE) {
            $delok = FALSE;
            if ($msg <> "")
                $msg .= "<br /><br />";
            $msg .= _("Ce donneur d'ordres est utilisée dans une fiche technicien") . '<br />' . _("Vous ne pouvez donc pas le supprimer (Il suffit de la passer en mode 'fermé')");
            $retourliste = FALSE;
        }

        if ($delok == TRUE) {
            // SUPPRESSION de la fiche Donneur d'Ordres
            $rech = "DELETE FROM `" . TBDO . "` WHERE `do_code` = '" . $db->escape($code) . "'";
            $db->query($rech);

            // Suppression du mot de passe rattaché
            $rech = "DELETE FROM `" . TBPW . "` WHERE `pw_code` = '" . $db->escape($code) . "'";
            $db->query($rech);

            // Suppression des logos spécifiques au donneur d'ordres
            $nomfic = $root . REP . "/logos/log" . strtolower($code);
            if (is_file($nomfic . ".png")) {
                if (!unlink($nomfic . ".png")) {
                    if ($msg <> "")
                        $msg .= "<br /><br />";
                    $msg .= _("Problème de suppression du logo png");
                    $retourliste = FALSE;
                }
            }
            if (is_file($nomfic . ".gif")) {
                if (!unlink($nomfic . ".gif")) {
                    if ($msg <> "")
                        $msg .= "<br /><br />";
                    $msg .= _("Problème de suppression du logo gif");
                    $retourliste = FALSE;
                }
            }
            $msg = _("Fiche supprimée");
        }
        $db->disconnect();
        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 Donneur d'Ordres"); ?></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) . "');";
            ?>
            Focus_first();
        }

        $(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>

<p align="center">&nbsp;</p>
<?PHP
if ($retourliste == FALSE)
    if ((@$_SESSION["niv_log"] == 5) OR (@$_SESSION["niv_log"] == 9))
        aff_ret_idx_man($td, "do_lst.php", _("Retour à la liste"), TRUE);
    else
        aff_ret_idx_man($td, "index.php", _("Retour à l'accueil"), TRUE);
else
{
    if ((@$_SESSION["niv_log"] == 5) OR (@$_SESSION["niv_log"] == 9)) {
        if ($td == "add") {
            $url_retour = "logo_maj.php?td=do";
            pop_ret_auto($msg, 'ok',$url_retour);
        } else {
            $url_retour = "do_lst.php";
            pop_ret_auto($msg, 'ok', $url_retour);
        }
    }
    if (@$_SESSION["niv_log"] == 6)
        pop_ret_auto($msg, 'ok', "index.php");
}
include_once("pied.php");
?>
</body>
</html>