<?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_droits.inc.php");
include_once("../inc/fic_pdt.inc.php");
include_once("../inc/fic_taxes.inc.php");
include_once("../inc/func.inc.php");
include_once("../inc/func_geo.inc.php");
include_once("../inc/func_txt.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"]);
// Variables Formulaire
// Variables Formulaire
fix_magic_quotes();
$_POST = clean_str($_POST);

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

$code = str_majuscules(@$_POST["code"]);
$codema = str_majuscules(@$_POST["codema"]);
$desc = str_majuscules(@$_POST["desc"]);
$pourok = intval(@$_POST["pour"]);
$basepour = @$_POST["basepour"];
$valeur = floatval(@$_POST["valeur"]);
$tva = @$_POST["tva"];
$asaisirok = intval(@$_POST["asaisir"]);
$typmtok = intval(@$_POST["typmt"]);
$globalok = intval(@$_POST["global"]);
$actifok = intval(@$_POST["actif"]);

$retourliste = TRUE;

$db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
switch ($td) {
    // Ajout de la fiche Taxe
    case "add" :
        $rech = "SELECT COUNT(*) FROM `" . TBTPF . "` WHERE `tpf_code` = '$code'";
        $nbres = $db->get_var($rech);
        if ($nbres == 0) {
            $rech = "INSERT INTO `" . TBTPF . "` (tpf_code,tpf_codema,tpf_desc,tpf_pour,tpf_basepour,tpf_valeur,tpf_asaisir,tpf_typmt,tpf_global,tpf_codetva,tpf_actif)";
            $rech .= " VALUES ('$code','$codema','" . $db->escape($desc) . "','$pourok','$basepour','$valeur','$asaisirok','$typmtok','$globalok','$tva','$actifok')";
            $db->query($rech);
            $msg = _("Fiche ajoutée");
        } else {
            $msg = _("Ce code existe déjà");
            $retourliste = FALSE;
        }
        break;

    // Modification de la fiche Taxe
    case "edit" :
        $majok = TRUE;

        // Vérifie si utilisé dans une fiche intervention non close
        // En tant que taxe d'un produit
        if (exist_pdt_in_int_ouv($code, FALSE) == TRUE) {
            $existeint = TRUE;
            if ($actifok == FALSE) {
                $majok = FALSE;
                $msg = _("Cette taxe est présente dans une intervention non close") . '<br />' . _("Il faut la supprimer de cette intervention");
            }
        }

        // Vérifie si utilisé dans une fiche intervention non close
        // En tant que taxe d'une intervention
        if (exist_tpf_in_int_ouv($code, FALSE) == TRUE) {
            $existeint2 = TRUE;
            if ($actifok == FALSE) {
                $majok = FALSE;
                $msg = _("Cette taxe est présente dans une intervention non close") . '<br />' . _("Il faut la supprimer de cette intervention");
            }
        }

        if ($majok == TRUE) {
            // MAJ de la fiche Taxe
            $rech = "UPDATE `" . TBTPF . "` SET `tpf_codema`='" . $codema . "', `tpf_desc`='" . $db->escape($desc) . "', `tpf_pour`='" . $pourok . "', `tpf_basepour`='" . $basepour . "',";
            $rech .= " `tpf_valeur`='" . $valeur . "',";
            $rech .= " `tpf_asaisir`='" . $asaisirok . "', `tpf_typmt`='" . $typmtok . "', `tpf_global`='" . $globalok . "',";
            $rech .= " `tpf_codetva`='" . $tva . "',`tpf_actif`='" . $actifok . "'";
            $rech .= " WHERE `tpf_code` = '" . $code . "'";
            $db->query($rech);

            // Modification des fiches Taxes par produit
            // si la taxe est en "saisie impossible" (donc valeur imposée)
            if ($asaisirok == FALSE) {
                $rech = "UPDATE `" . TBTPFA . "` SET `tpfa_mt`='" . $valeur . "'";
                $rech .= " WHERE `tpfa_codetpf` = '" . $code . "'";
                $db->query($rech);
            }

            // Si désactivée, suppression de la taxe de toutes les fiches articles concernées
            if ($actifok == FALSE) {
                $rech = "DELETE FROM `" . TBTPFA . "`";
                $rech .= " WHERE `tpfa_codetpf` = '" . $code . "'";
                $db->query($rech);
            }

            // Cette taxe est présente dans une intervention en tant que taxe d'un produit
            // Il faut effectuer une mise à jour
            if ($existeint == TRUE) {
                // On récupère la liste des interventions non terminées
                $rech = "SELECT int_code FROM `" . TBINT . "` WHERE int_datefin = '0000-00-00'";

                $rows = $db->get_results($rech, ARRAY_A);
                if ($rows) {
                    foreach ($rows as $row) {
                        extract($row);

                        // On récupère les infos de la taxe dans cette intervention
                        $rech0 = "SELECT pdti_id,pdti_frompdt FROM `" . TBPDTI . "` WHERE pdti_codeint = '$int_code' AND `pdti_codepdt` = '$code'";

                        $rows0 = $db->get_results($rech0, ARRAY_A);
                        if ($rows0) {
                            foreach ($rows0 as $row0) {
                                extract($row0);

                                $idtaxe = $pdti_id;

                                $txtcompl = "";
                                $pupdt = 0;

                                // On récupère les infos des produits utilisant la taxe dans l'intervention
                                $rech1 = "SELECT * FROM `" . TBPDTI . "` WHERE pdti_codeint = '$int_code' AND `pdti_codepdt` = '$pdti_frompdt'";
                                $row1 = $db->get_row($rech1, ARRAY_A);
                                if ($row1) {
                                    extract($row1);
                                    $codepdt = $pdti_codepdt;
                                    $tvapdt = $pdti_codetva;
                                    $qtepdt = $pdti_qte;
                                    $pupdt = $pdti_puttc;
                                }

                                // Calcul du code TVA
                                $codetva_tpf = "";
                                switch ($tva) {
                                    // -2 : Pas de TVA
                                    case "-2" :
                                        $codetva_tpf = "TVA0";
                                        break;
                                    // -1 : TVA du produit
                                    case "-1" :
                                        $codetva_tpf = $tvapdt;
                                        break;
                                    // Autre : TVA définie
                                    default :
                                        $codetva_tpf = $tva;
                                        break;
                                }

                                // Calcul du taux de TVA
                                $txtva_tpf = 0;
                                $rech4 = "SELECT * FROM `" . TBTVA . "` WHERE tva_code = '$codetva_tpf'";
                                $row4 = $db->get_row($rech4, ARRAY_A);
                                if ($row4) {
                                    extract($row4);
                                    $txtva_tpf = $tva_tx;
                                }

                                // Calcul du nombre de taxes
                                $qte_tpf = 0;
                                switch ($typmtok) {
                                    // 0 : Proportionnel au nombre de produits
                                    case "0" :
                                        $qte_tpf = $qtepdt;
                                        $txtcompl .= " "._("Taxe unitaire");
                                        break;
                                    // 1 : Fixe quel que soit le nombre de produits
                                    case "1" :
                                        $qte_tpf = 1;
                                        $txtcompl .= " "._("Taxe forfaitaire");
                                        break;
                                }

                                $rech4 = "SELECT * FROM `" . TBTPFA . "` WHERE tpfa_codepdt = '$codepdt' AND tpfa_codetpf = '$code'";
                                $row4 = $db->get_row($rech4, ARRAY_A);
                                if ($row4)
                                    extract($row4);

                                // Calcul du montant TTC unitaire de la taxe
                                $putttc_tpf = 0;
                                switch ($pourok) {
                                    // 0 : Valeur
                                    case "0" :
                                        $puttc_tpf = $tpfa_mt;
                                        break;
                                    // 1 : Pourcentage
                                    case "1" :
                                        $puttc_tpf = $pupdt * round($tpfa_mt / 100, 2);
                                        $txtcompl .= " " . full_num_format($tpfa_mt, '', '', FALSE, '', FALSE) . "% sur prix unitaire";
                                        if ($codetva_tpf == "TVA0")
                                            $txtcompl .= " "._("TTC");
                                        $txtcompl .= ".";
                                        break;
                                }

                                $rech4 = "UPDATE `" . TBPDTI . "` SET `pdti_frompdt`='" . $codepdt . "', `pdti_puttc`='" . $puttc_tpf . "',";
                                $rech4 .= " `pdti_codetva`='" . $codetva_tpf . "',";
                                $rech4 .= " `pdti_qte`='" . $qte_tpf . "',`pdti_ns`='',`pdti_texte`='" . $txtcompl . "'";
                                $rech4 .= " WHERE `pdti_id` = '" . $idtaxe . "'";
                                $db->query($rech4);
                            }
                        }
                    }
                }
            }

            // Cette taxe est présente dans une intervention en tant que taxe d'une intervention
            // Il faut effectuer une mise à jour
            if ($existeint2 == TRUE) {
                // On récupère la liste des interventions non terminées
                $rech = "SELECT int_code FROM `" . TBINT . "` WHERE int_datefin = '0000-00-00'";

                $rows = $db->get_results($rech, ARRAY_A);
                if ($rows) {
                    foreach ($rows as $row) {
                        extract($row);

                        // On récupère les infos de la taxe dans cette intervention
                        $rech0 = "SELECT tpfi_id FROM `" . TBTPFI . "` WHERE tpfi_codeint = '$int_code' AND `tpfi_codetpf` = '$code'";

                        $rows0 = $db->get_results($rech0, ARRAY_A);
                        if ($rows0) {
                            foreach ($rows0 as $row0) {
                                extract($row0);

                                $rech1 = "UPDATE `" . TBTPFI . "` SET `tpfi_valeur`='" . $valeur . "',";
                                $rech1 .= " `tpfi_codetva`='" . $tva . "'";
                                $rech1 .= " WHERE `tpfi_id` = '" . $tpfi_id . "'";
                                $db->query($rech1);;
                            }
                        }
                    }
                }
            }

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

    // Suppression de la fiche Taxes
    case "del" :
        // Vérifie si utilisée dans une fiche produit
        $rexist = "SELECT COUNT(*) FROM `" . TBTPFA . "` WHERE `tpfa_codetpf` = '$code'";
        $nbres = $db->get_var($rexist);
        if ($nbres <> 0) {
            $msg = _("Cette taxe est utilisée dans une fiche produit");
            $retourliste = FALSE;
        } else {
            // Non -> suppression de la fiche Taxe
            $rech = "DELETE FROM `" . TBTPF . "` WHERE `tpf_code` = '$code'";
            $db->query($rech);
            $msg = _("Fiche supprimée");
        }
        break;
}
$db->disconnect();
?>
<!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 Taxe Parafiscale"); ?></title>

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

    <script type="text/javascript">
        <!--
        function init_all() {
            init_Body();
            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) {
    exec_func_js("warn_txt('" . str_escape($msg) . "')");
    aff_ret_idx_man($td, "tpf_lst.php?ta=m", _("Retour à la liste"), TRUE);
} else
    pop_ret_auto($msg, 'ok', "tpf_lst.php?ta=m");
include_once("pied.php");
?>
</body>
</html>