Subversion-Projekte lars-tiefland.content-management

Revision

Blame | Letzte Änderung | Log anzeigen | RSS feed

<?php

    //$Id: bestellungen_archivieren.php 3931 2011-09-16 08:17:57Z tiefland $

    /**
     * @author Lars Tiefland <tiefland@weban.de>
     * @copyright 2008 Webagentur Niewerth
     * @package Content-management
     * @subpackage Toolbox
     * @version $Rev: 3931 $
     * @license propietary
     * @filesource
     * 
     */

    /**
     * löscht alte Bestellungen und speichert die Daten in einer Hilfstabelle, damit die Statistik weiterhin auf die Daten zurückgreifen kann
     * @author Lars Tiefland <tiefland@weban.de>
     * @copyright 2008 Webagentur Niewerth
     */

    require_once "common.php";
    function delete_orders( $ende )
    {
        global $web_rechte;
        $ret["error"] = false;
        if ( isset( $web_rechte["Warenwirtschaft"]["bestellung"]["bestellart"] ) )
        {
            $sql_ba = "SELECT
                    *
                FROM
                    bestellart
            ";
            $res_ba = mysql_query( $sql_ba );
            if ( !$res_ba )
            {
                $ret["error"] = true;
                $ret["sql"] = $sql_ba;
                return $ret;
            }
            while ( $row_ba = mysql_fetch_assoc( $res_ba ) )
            {
                $bestellarten[] = $row_ba["id"];
            }
        }
        else
        {
            $bestellarten[] = 0;
        }
        foreach ( $bestellarten as $bestellart_id )
        {
            $daten = array();
            $sql = "SELECT DISTINCT
                    SUBSTRING(erstellt_am, 1,10) AS datum
                FROM 
                    Bestellung
                WHERE
                    erstellt_am < '$ende'
            ";
            $sql .= ( $bestellart_id ) ? " AND bestellart_id=$bestellart_id" :
                "";
            $sql .= "
                ORDER BY
                    erstellt_am
            ";
            $res = mysql_query( $sql );
            if ( !$res )
            {
                $ret["error"] = true;
                $ret["sql"] = $sql;
                return $ret;
            }
            while ( $row = mysql_fetch_assoc( $res ) )
            {
                $datum = $row["datum"];
                $sql_anz = "
                    SELECT 
                        COUNT(*) AS anz,
                        shops_ID 
                    FROM 
                        Bestellung
                    WHERE
                        erstellt_am LIKE '" . $datum . "%'
                ";
                $sql_anz .= ( $bestellart_id ) ? " AND bestellart_id=$bestellart_id" :
                    "";
                $sql_anz .= "
                    GROUP BY 
                        shops_ID
                ";
                $res_anz = mysql_query( $sql_anz );
                if ( !$res_anz )
                {
                    $ret["error"] = true;
                    $ret["sql"] = $sql_anz;
                    return $ret;
                }
                while ( $row_anz = mysql_fetch_assoc( $res_anz ) )
                {
                    $shop = $row_anz["shops_ID"];
                    $anz = $row_anz["anz"];
                    $daten[$row["datum"]][$shop]["anzahl"] = $anz;
                    $sql_umsatz = "
                        SELECT
                            SUM(Menge*Preis_pro_Stueck) AS umsatz
                        FROM
                            artikel_to_Bestellung AS ab,
                            Bestellung AS b
                        WHERE
                            erstellt_am LIKE '" . $datum . "%'
                        AND
                            b.shops_ID=" . $shop . "
                        AND
                            ab.Bestellung=b.ID
                    ";
                    $sql_umsatz .= ( $bestellart_id ) ? " AND bestellart_id=$bestellart_id" :
                        "";
                    $res_umsatz = mysql_query( $sql_umsatz );
                    if ( !$res_umsatz )
                    {
                        $ret["error"] = true;
                        $ret["sql"] = $sql_umsatz;
                        return $ret;
                    }
                    while ( $row_umsatz = mysql_fetch_assoc( $res_umsatz ) )
                    {
                        $umsatz = $row_umsatz["umsatz"];
                        $daten[$datum][$shop]["umsatz"] = $umsatz;
                    }
                }
            }
            if ( is_array( $daten ) )
            {
                foreach ( $daten as $datum => $shop_werte )
                {
                    foreach ( $shop_werte as $shop_id => $werte )
                    {
                        $umsatz = $werte["umsatz"];
                        $anz = $werte["anzahl"];
                        $sql = "
                            INSERT INTO 
                                bestellung_archiv 
                            (
                                shops_id, 
                                datum, 
                                best_anzahl, 
                                umsatz, 
                                bestellart_id
                            ) 
                            VALUES 
                            (
                                $shop_id  , 
                                '$datum', 
                                $anz, 
                                '$umsatz', 
                                $bestellart_id
                            )
                        ";
                        $res = mysql_query( $sql );
                        if ( !$res )
                        {
                            $ret["error"] = true;
                            $ret["sql"] = $sql;
                            return $ret;
                        }
                    }
                    //alle Bestellungen von $datum löschen
                    $sql = "SELECT 
                            ID 
                        FROM 
                            Bestellung 
                        WHERE 
                            erstellt_am LIKE '$datum%'
                    ";
                    $sql .= ( $bestellart_id ) ? " AND bestellart_id=$bestellart_id" :
                        "";
                    $res = mysql_query( $sql );
                    if ( !$res )
                    {
                        $ret["error"] = true;
                        $ret["sql"] = $sql;
                        return $ret;
                    }
                    while ( $row = mysql_fetch_assoc( $res ) )
                    {
                        $best[] = $row["ID"];
                    }
                    $bestellungen = implode( ",", $best );
                    $sql = "
                        DELETE FROM 
                            artikel_to_Bestellung
                        WHERE
                            artikel_to_Bestellung.Bestellung IN ($bestellungen)
                    ";
                    $res = mysql_query( $sql );
                    if ( !$res )
                    {
                        $ret["error"] = true;
                        $ret["sql"] = $sql;
                        return $ret;
                    }
                    $sql = "
                        DELETE FROM 
                            Bestellung
                        WHERE
                            erstellt_am LIKE '$datum%'
                    ";
                    $sql .= ( $bestellart_id ) ? " AND bestellart_id=$bestellart_id" :
                        "";
                    $res = mysql_query( $sql );
                    if ( !$res )
                    {
                        $ret["error"] = true;
                        $ret["sql"] = $sql;
                        return $ret;
                    }
                }
            }
        }
        return $ret;
    }

    $GLOBALS["ui"]->assign( "title", "Bestellungen archivieren" );
    if ( !$_POST["mode"] )
    {
        $GLOBALS["ui"]->assign( "file", "common/" . basename( $_SERVER["SCRIPT_NAME"],
            "php" ) . "tpl" );
    }
    else
    {
        $date = $_POST["Date_Year"] . "-" . $_POST["Date_Month"] . "-01";
        $ret = delete_orders( $date );
        $res = $ret["error"];
        $GLOBALS["ui"]->assign( "error", $res );
        if ( !$res )
        {
            $GLOBALS["ui"]->assign( "meld", "Bestellungen erfolgreich gelöscht!" );
        }
        else
        {
            $GLOBALS["ui"]->assign( "meld", "Leider ist ein Fehler aufgetreten!" );
            $GLOBALS["ui"]->assign( "db_meld", mysql_error() . "<br>" . $ret["sql"] );
        }
        $GLOBALS["ui"]->assign( "file", "common/meld.tpl" );
    }
    $GLOBALS["ui"]->display( "common/page.tpl" );
?>