<?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_age.inc.php');
include_once('../inc/fic_hum.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_int.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_time.inc.php');
include_once('../inc/func_fic.inc.php');
include_once('../inc/func_geo.inc.php');
include_once('../inc/func_mail.inc.php');
include_once('../inc/func_txt.inc.php');
include_once('../inc/func_txtcm.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(valsession('code_log'));
// Variables Formulaire
fix_magic_quotes();
$_POST = clean_str($_POST);

$titre = valpost('titre');

$codecocl = str_majuscules(valpost('codecocl'));
$rephnc = str_majuscules(valpost('lsthnc'));

$codeuser = valsession('code_log');

$retourliste = TRUE;
$soldes_reel = 0;
$cloture_ok = FALSE;
$renouv_ok = FALSE;
$ncontrat = '';

if ($codecocl <> '') {
    // MAJ de la fiche contrat client
    $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
    $rech = 'SELECT * FROM `' . TBCOCL . "` WHERE `cocl_code` =  '" . $db->escape($codecocl) . "'";
    $row = $db->get_row($rech, ARRAY_A);
    if ($row) {
        $row = encode_str($row);
        extract($row);

        if (datetolocal($cocl_datefin) == '') {
            // Si c'est un contrat 'Quota horaire', on récupère le solde du contrat (inclus les reports)
            if ((int)$cocl_typh == 1) {
                $soldes_reel = solde_contrat_sec($codecocl, FALSE);
            }
            // Cloture du contrat
            $rech2 = 'UPDATE `' . TBCOCL;
            $rech2 .= "` SET `cocl_datefin`='" . $datea . "'";
            $rech2 .= " WHERE `cocl_code` = '" . $db->escape($codecocl) . "'";
            $db->query($rech2);

            $retourliste = FALSE;
            $cloture_ok = TRUE;
            $msg = _('Cloture du contrat') . ' ' . $codecocl . ' ' . _('effectuée');

            // Report si demandé
            if ($rephnc != '') {
                $rech = '';
                switch ($rephnc) {
                    // Inutile ou Pas de report
                    case '0' :
                    case '-2' :
                        break;
                    // Renouvellement automatique ou sur déjà renouvelé
                    case '-1' :
                        // On vérifie si le contrat a déjà été renouvelé
                        if ($cocl_renouv == FALSE) {
                            // Si non, on vérifie s'il est en mode "renouvellement automatique"
                            if ($cocl_renauto == TRUE) {
                                $codeco = crecode('CO', FALSE);

                                // Mise à jour fiche contrat client et Récupération informations
                                $rech = 'SELECT * FROM `' . TBCOCL . "` WHERE `cocl_code` =  '" . $db->escape($codecocl) . "'";
                                $rows = $db->get_row($rech, ARRAY_A);
                                if ($row) {
                                    $row = encode_str($row);
                                    extract($row);
                                    $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
                                $cocl_dated = $datea;
                                if (datetolocal($cocl_datef) <> '') {
                                    $cocl_dated = ajoute_un_jour_date($cocl_datef);
                                }
                                $cocl_datef = '';

                                $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)';
                                $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')";
                                $db->query($rech);

                                $msg .= '<br /><br />' . _('Nouveau contrat (N°') . $codeco . ') ' . _('créé en renouvellement');
                                $cocl_rnum = $codeco;
                                $renouv_ok = TRUE;
                            } else {
                                $msg = _("Contrat pas en mode 'renouvellement automatique'");
                                $retourliste = FALSE;
                            }
                        }

                        // Si c'est un contrat 'Quota horaire', il faut reporter le solde sur le nouveau contrat
                        // ou sur le contrat de renouvellement déjà saisi
                        if ($cocl_typh == 1) {
                            if ($cocl_rnum <> '') {
                                if ($soldes_reel > 0) {
                                    // On supprime déjà les reports existants
                                    $rech = 'DELETE FROM `' . TBCOCLR . "` WHERE `coclr_coclori` = '" . $db->escape($code) . "'";
                                    $db->query($rech);
                                }

                                // On inscrit le report dans le nouveau contrat
                                $rech = 'INSERT INTO `' . TBCOCLR . '`';
                                $rech .= ' (coclr_coclori,coclr_cocldest,coclr_nbsrep)';
                                $rech .= ' VALUES';
                                $rech .= " ('$codecocl','$cocl_rnum','$soldes_reel')";
                                $db->query($rech);
                                $msg .= '<br /><br />' . _('Non consommé') . ' (' . heure_to_hhmm(sec_heure($soldes_reel, 3, TRUE)) . ') ' . _('reporté sur contrat') . ' ' . $cocl_rnum;
                            }
                        }
                        break;
                    // Report sur contrat spécifique
                    default :
                        // Si c'est un contrat 'Quota horaire', il faut reporter le solde sur le contrat choisi
                        if ($cocl_typh == 1) {
                            if ($soldes_reel > 0) {
                                // On supprime déjà les reports existants
                                $rech = 'DELETE FROM `' . TBCOCLR . "` WHERE `coclr_coclori` = '" . $db->escape($code) . "'";
                                $db->query($rech);
                            }

                            // On inscrit le report dans le contrat choisi
                            $rech = 'INSERT INTO `' . TBCOCLR . '`';
                            $rech .= ' (coclr_coclori,coclr_cocldest,coclr_nbsrep)';
                            $rech .= ' VALUES';
                            $rech .= " ('$codecocl','$rephnc','$soldes_reel')";
                            $db->query($rech);
                            $msg .= '<br /><br />' . _('Non consommé') . ' (' . heure_to_hhmm(sec_heure($soldes_reel, 3, TRUE)) . ') ' . _('reporté sur contrat') . ' ' . $rephnc;
                        }
                        break;
                }
            }
        } else {
            $msg = _('Contrat déjà clot');
            $retourliste = FALSE;
        }
    } else {
        $msg = _('Contrat inconnu');
        $retourliste = FALSE;
    }
    close_database();

    if ($cloture_ok == TRUE) {
        $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 ($renouv_ok == 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
        if (valsession('niv_log') <> 4) {
            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);

    }
} else {
    $msg = _('Contrat inconnu');
    $retourliste = FALSE;
}
?>
<!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 _('Cloture manuelle contrat'); ?></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 ($renouv_ok == TRUE) {
        ?>
        <br/>
        <a href="<?php echo $url_cocl; ?>"><img src="../img/contrat.png" border="0" align="absmiddle"></a> <a
            href="<?php echo $url_cocl; ?>"
            class="annot_gras_it"><?php echo _('Editer nouveau contrat') . ' ' . $ncontrat; ?>)</a>
        <?php
    }
    aff_ret_idx_man($td, 'cocl_lst.php?ord=DES&tri=Code', _('Retour à la liste'), FALSE);
} else {
    pop_ret_auto($msg, 'ok', 'cocl_lst.php?ord=DES&tri=Code');
}
include_once('pied.php');
?>
</body>
</html>