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


// vérification des tentatives de hack
$pos = strpos($_SERVER['PHP_SELF'], 'inc.php');
if ($pos !== FALSE) {
    header('Location: ../index.php');
}

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_fic.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/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(valsession('code_log'));
// Variables Formulaire
fix_magic_quotes();
$_POST = clean_str($_POST);

// Variables Formulaire
$titre = valpost('titre');
$td = valpost('td');

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

$codeuser = valsession('code_log');
$retourliste = TRUE;

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

$msg = '';

$db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
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;
        }
        close_database();

        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 (CheckNivLog('5-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 (valsession('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;
            }
            close_database();

            $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 {
            close_database();
        }
        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');
        }
        close_database();
        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');
cre_ent_form($titre, '', '', '', FALSE);
if ($retourliste == FALSE) {
    if (CheckNivLog('5-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 (CheckNivLog('5-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 (CheckNivLog('6')) {
        pop_ret_auto($msg, 'ok', 'index.php');
    }
}
include_once('pied.php');
?>
</body>
</html>