Subversion-Projekte lars-tiefland.ci

Revision

Revision 1332 | Revision 1393 | Zur aktuellen Revision | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

<?php

/**
 *
 * @package WebanOS CI
 * @author Lars Tiefland <ltiefland@gmail.com> 
 * @copyright 2016
 * @version $Rev: 1335 $
 */

class Order_model extends CI_Model
{
        public function __construct()
        {
                parent::__construct();
                $this->load->model('bestelladresse_model', 'bestelladresse');
                $this->load->model('artikel_to_bestellung_model', 'artikel');
                $this->load->model('dokumente_model', 'dokumente');
        }

        public function get_list()
        {
                $orders = array();
                $sql = "SELECT
                                b.id
                        FROM
                                Bestellung b
                        ORDER BY
                                b.id DESC
                        LIMIT
                                100
                ";
                $res = $GLOBALS['order_db']->query($sql);
                while ($order = $res->unbuffered_row('array'))
                {
                        $order = $this->get($order['id']);
                        $orders[] = $order;
                }
                return $orders;
        }

        public function get($id)
        {
                $orders = array();
                $sql = "SELECT
                                b.id,
                                b.language,
                                b.shops_ID,
                                b.login,
                                bill_addr_id,
                                ship_addr_id,
                                erstellt_am,
                                erstellt_von,
                                letzte_aenderung_am,
                                letzte_aenderung_von,
                                status,
                                gesamtsumme_buffer,
                                fremd_id,
                                artikelstatus_buffer,
                                rechnungsstatus_buffer,
                                lieferscheinstatus_buffer,
                                bezahlt,
                                Bemerkung,
                                Bemerkung_extern,
                                bezahlt_am,
                                s.name AS shop,
                                ba.name AS bestellart
                        FROM
                                Bestellung b
                        JOIN
                                shops s
                        ON
                                s.id=b.shops_id
                        JOIN
                                bestellart ba
                        ON
                                ba.id=b.bestellart_id
                        WHERE
                                b.id=".$id."
                ";
                $res = $GLOBALS['order_db']->query($sql);
                $order = $res->unbuffered_row('array');
                $billAddr = $this->bestelladresse->get($order['bill_addr_id']);
                $shipAddr = $this->bestelladresse->get($order['ship_addr_id']);
                $artikel = $this->artikel->get($order['id']);
                $dokumente = $this->dokumente->get_list($order['id']);
                $artikelstatus_buffer = unserialize($order["artikelstatus_buffer"]);
                foreach ($artikelstatus_buffer as $key => $value)
                {
                        switch ($key)
                        {
                                case "statusOffen":
                                        $info[$key]["class"] = "status_red";
                                        break;
                                case "statusInBearbeitung":
                                        $info[$key]["class"] = "status_yellow";
                                        break;
                                case "statusReserviert":
                                        $info[$key]["class"] = "status_blue";
                                        break;
                                case "statusErledigt":
                                        $info[$key]["class"] = "status_green";
                                        break;
                                case "statusAbgeschlossen":
                                default:
                                        $info[$key]["class"] = "status_white";
                                        break;

                        }
                        $info[$key]["wert"] = $value;
                }
                $order["info"] = $info;
                $rechnungsstatus_buffer = unserialize($order["rechnungsstatus_buffer"]);
                foreach ($rechnungsstatus_buffer as $key => $value)
                {
                        switch ($key)
                        {
                                case "rechnungSchreiben":
                                        $rstatus[$key]["class"] = "status_red";
                                        break;
                                case "rechnungGeschrieben":
                                        $rstatus[$key]["class"] = "status_yellow";
                                        break;
                                case "rechnungBezahlt":
                                        $rstatus[$key]["class"] = "status_green";
                                        break;

                        }
                        $rstatus[$key]["wert"] = $value;
                }
                $order["rechnungsstatus"] = $rstatus;
                $lieferscheinstatus_buffer = unserialize($order["lieferscheinstatus_buffer"]);
                foreach ($lieferscheinstatus_buffer as $key => $value)
                {
                        switch ($key)
                        {
                                case "lieferscheinSchreiben":
                                        $lstatus[$key]["class"] = "status_yellow";
                                        break;
                                case "lieferscheinGeschrieben":
                                        $lstatus[$key]["class"] = "status_green";
                                        break;
                                case "lieferscheinOffen":
                                        $lstatus[$key]["class"] = "status_red";
                                        break;

                        }
                        $lstatus[$key]["wert"] = $value;
                }
                $order['lieferscheinstatus'] = $lstatus;
                $order['dokumente'] = $dokumente;
                $order['artikel'] = $artikel;
                $order['shipAddr'] = $shipAddr;
                $order['billAddr'] = $billAddr;

                return $order;
        }

        public function save()
        {
                $Bestellung = $this->input->post('Bestellung');
                if ((isset($_GET["update"]) && $_GET["update"]) || (isset($_POST["update"]) && $_POST["update"]))
                {

                        if ($_POST["update"])
                        {
                                $update = $_POST["update"];
                        }
                        else
                        {
                                $update = $_GET["update"];
                        }

                        if ($_POST["cmd"])
                        {
                                foreach (array_keys($_POST["cmd"]) as $table)
                                {
                                        foreach (array_keys($_POST["cmd"][$table]) as $primaryKeyValue)
                                        {
                                                $changed_id = "artikel_".$primaryKeyValue."_changed";
                                                if ($_POST[$changed_id] == 1)
                                                {
                                                        foreach (array_keys($_POST["cmd"][$table][$primaryKeyValue]) as $tablefield)
                                                        {
                                                                $query = "
                                                                        UPDATE
                                                                                ".$table."
                                                                        SET
                                                                                ".$tablefield." = '".$GLOBALS["order_db"]->escape(html_entity_decode($_POST["cmd"][$table][$primaryKeyValue][$tablefield],
                                                                        ENT_COMPAT, $_SESSION["charset"]))."'
                                                                        WHERE
                                                                                ID = '".$primaryKeyValue."'
                                                                ";
                                                                $result = $GLOBALS["order_db"]->query($query);
                                                        }
                                                }
                                        }
                                }
                        }
                        $upd_fields[] = "Bemerkung=".$GLOBALS["order_db"]->escape($_POST["Bemerkung"]).
                                "";

                        if (isset($user_rechte["Warenwirtschaft"]["bestellung"]["shortline1"]))
                        {
                                $upd_fields[] = "shortline1 = ".$GLOBALS["order_db"]->escape($_POST["shortline1"]).
                                        "";
                        }
                        if (isset($user_rechte["Warenwirtschaft"]["bestellung"]["shortline2"]))
                        {
                                $upd_fields[] = "shortline2 = ".$GLOBALS["order_db"]->escape($_POST["shortline2"]).
                                        "'";
                        }
                        if (isset($user_rechte["Warenwirtschaft"]["bestellung"]["status1"]))
                        {
                                $upd_fields[] = "status1 = '".$GLOBALS["order_db"]->escape($_POST["status1"]).
                                        "";
                        }
                        if (isset($user_rechte["Warenwirtschaft"]["bestellung"]["Bemerkung_extern"]))
                        {
                                $upd_fields[] = "Bemerkung_extern=".$GLOBALS["order_db"]->escape($_POST["Bemerkung_extern"]).
                                        "";
                        }
                        if (isset($user_rechte["Warenwirtschaft"]["bezahlstatus"]["bezahlstatus"]))
                        {
                                $upd_fields[] = "bezahlt=".$GLOBALS["order_db"]->escape($_POST["bezahlt"])."";
                                $upd_fields[] = "bezahlt_bemerkung=".$GLOBALS["order_db"]->escape($_POST["bezahlt_bemerkung"]).
                                        "";
                        }
                        if (isset($_POST['fremd_id']))
                        {
                                $upd_fields[] = "fremd_id=".$GLOBALS["order_db"]->escape($_POST["fremd_id"])."";
                        }
                        $sql = "
                                SELECT
                                        erstellt_von
                                FROM
                                        Bestellung
                                WHERE
                                        ID=".$Bestellung."
                        ";

                        $result = $GLOBALS["order_db"]->query($sql);
                        $zeile = $result->unbuffered_row('array');
                        if ($zeile["erstellt_von"] == '')
                        {
                                $upd_fields[] = "erstellt_von='".$this->session->user_data['user']."'";
                        }
                        if ($_POST["s_changed"] == 1)
                        {
                                $upd_fields[] = "shops_ID=".$_POST["s_id"];
                        }
                        $sql = "
                                UPDATE
                                        Bestellung
                                SET
                                        letzte_Aenderung_von='".$this->session->user_data['user']."',
                                        ".implode(",", $upd_fields)."
                                WHERE
                                        ID=".$Bestellung."
                        ";
                        $GLOBALS["order_db"]->query($sql);
                        if (isset($_POST["logistiker_id"]))
                        {
                                if ($_POST["logistiker_id"])
                                {
                                        $sql_bl = "
                                                REPLACE INTO
                                                        bestellung_logistiker
                                                SET
                                                        bestellung=".$Bestellung.",
                                                        logistiker=".$_POST["logistiker_id"]."
                                        ";

                                        $GLOBALS["order_db"]->query($sql_bl);
                                        if (isset($web_rechte["admin"]["toolbox"]["logbuch"]))
                                        {
                                                $GLOBALS["Log"]["best"]->log("Logistiker der Bestellung geändert", $Bestellung);
                                        }
                                }
                                else
                                {
                                        $sql_bl = "
                                                DELETE FROM
                                                        bestellung_logistiker
                                                WHERE
                                                        bestellung=".$Bestellung."
                                        ";
                                        $GLOBALS["order_db"]->query($sql_bl);
                                        if (isset($web_rechte["admin"]["toolbox"]["logbuch"]))
                                        {
                                                $GLOBALS["Log"]["best"]->log("Logistiker der Bestellung geändert", $Bestellung);
                                        }
                                }
                        }
                        if (isset($update["current"]))
                        {
                                header("Location: /backend/order/edit/".$Bestellung);
                        }
                        elseif (isset($update["list"]))
                        {
                                header("Location: /backend/order/index/".$Bestellung);
                        }
                }
        }
}

?>