Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 398 | Revision 830 | Zur aktuellen Revision | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
    use Illuminate\Support\Facades\DB;

class ShippingController extends Controller
{
        public function getShippingOptions()
        {
                $Land = 47;
                $buffer = array();
            $rufnamen = array();
            $sql = "SELECT
                    z.id,
                    z.internal_name
                FROM
                    payment_methods z
                JOIN
                    shipping_payment_methods vz
                ON
                    vz.payment_method_id=z.id  
            ";
            $r = DB::connection('mysql')->select($sql);
            $rufnamen[] = "- Bezahlarten -";
            foreach( $r as $row )
            {
                $ini_name = $row->internal_name;
                if ( $row->internal_name == "sofortueberweisung" )
                {
                    $ini_name = "ueberweisung";
                }
                if ( !isset( $_SESSION["zahlarten"][ $ini_name ] ) )
                {
                    $_SESSION["zahlarten"][ $ini_name ] = true;
                }
                if ( ( $GLOBALS["INI"][ $ini_name ]["aktiv"] == 1 && $_SESSION["zahlarten"][ $ini_name ] !== false ) || !in_array( $row->internal_name, $GLOBALS["zahlsysteme"] ) )
                {
                    $rufnamen[ $row->id ] = $row->internal_name;
                }
            }
            if ( $_SESSION["SHOP"]["BASKET"]->items )
            {
                $vgruppen = array();
                $preis = $_SESSION["SHOP"]["BASKET"]->paymentInfo["Total"];
                $gewicht = $_SESSION["SHOP"]["BASKET"]->getBasketGewicht();
                foreach ( $_SESSION["SHOP"]["BASKET"]->items as $bId => $artikel )
                {
                    if ( $artikel->spedId )
                    {
                        $vgruppen[] = $artikel->spedId;
                    }
                    elseif ( $artikel->versandgruppen_id )
                    {
                        $vgruppen[] = $artikel->versandgruppen_id;
                    }
                }
                $vgruppen = array_unique( $vgruppen );
                $sql = "SELECT
                        MAX(rank) AS rank
                    FROM
                        shipping_groups
                    WHERE
                        id IN(" . implode( ",", $vgruppen ) . ")
                ";
                $r = DB::select( $sql );
                $row = $r[0];
                $rang = $row->rank;
                $sql = "SELECT
                        id,
                        conditions,
                        shipping_text AS versandtextbaustein
                        -- zahlart_index
                    FROM
                        shipping_groups vg
                    WHERE
                        rank=" . $rang . "
                ";
                $r = DB::select( $sql );
                $row = $r[0];
                $vgId = $row->id;
                $bedingungen = explode( ";", $row->conditions );
                $sqlCondArr = array();
                if ( in_array( "preis", $bedingungen ) )
                {
                    $sqlCondArr[] = "((" . $preis . " >= calc_price_from AND " . $preis . " <= calc_price_to) OR (calc_price_from=calc_price_to))";
                }
                if ( in_array( "gewicht", $bedingungen ) )
                {
                    $sqlCondArr[] = "((" . $gewicht . " >= calc_weight_from AND " . $gewicht . " <= calc_weight_to)
                            OR (calc_weight_from = calc_weight_to))";
                }
                $sql = "SELECT
                        v.*
                    FROM
                        shippings v
                    JOIN
                        shipping_countries vl
                    ON
                        vl.shipping_id=v.id
                    WHERE
                        shipping_group_id=" . $vgId . "
                    AND
                        status = 0
                    AND
                        country_id=" . $Land . "
                ";
                if ( isset( $_SESSION["SHOP"]["vIsland"] ) && $_SESSION["SHOP"]["vIsland"] )
                {
                    //Insel ausgewählt ==> Versandoption darf NICHT auf "kein Inselversand (Wert: 1) stehen!
                    $sqlCondArr [] = " island_shipping IN (0,2) ";
                }
                else
                {
                    $sqlCondArr [] = " island_shipping IN (0,1) ";
                }
                if ( $sqlCondArr )
                {
                    $sqlCond = implode( " AND ", $sqlCondArr );
                    $sql .= "
                        AND
                            " . $sqlCond . "
                    ";
                }
                $vR = DB::select( $sql );
                if ( !count($vR) )
                {
                    $_SESSION["versandFehler"] = "Wir versenden NICHT an diese Adresse! Bitte geben Sie eine andere Adresse ein!";
                }
                foreach( $vR as $vRow )
                {

                    if ( $param == "single" )
                    {
                        if ( $vRow->name && $_SESSION['SHOP']['BASKET']->paymentInfo["Total"] )
                        {
                            $summeInklVersand = $vRow->price + $_SESSION['SHOP']['BASKET']->paymentInfo["Total"];
                            $vkSummeLaender['price'] = $vRow->price;
                            $vkSummeLaender['name'] = $vRow->name;
                            $fmt = new NumberFormatter( "de_DE.UTF-8", NumberFormatter::CURRENCY );
                            $vkSummeLaender['price_formatted'] = $fmt->formatCurrency( $vRow->price, "EUR" );
                            $vkSummeLaender['summe_formatted'] = $fmt->formatCurrency( $summeInklVersand, "EUR" );
                        }
                        else
                        {
                            echo "<div class=''>Fehler: Keine Versandart gefunden!</div>\n";
                        }


                        return true;
                    }

                    if ( $vRow->zusaetze )
                    {
                        $vRow->zusaetze = unserialize( $vRow->zusaetze );
                    }

                    $sql = "SELECT
                            z.id,
                            z.name,
                            z.internal_name,
                            z.abschlag,
                            z.shipping_text AS versandtextbaustein,
                            z.info_im_shop
                        FROM
                            shipping_payments vz
                        JOIN
                            payment_methods z
                        ON
                            z.id=vz.zahlart_id
                        WHERE
                            shipping_id=" . $vRow->id . "
                    ";
                    if ( ( $_GET['vRufname'] ) && is_numeric( $_GET['vRufname'] ) )
                    {
                        $sql .= " AND z.id = " . $_GET['vRufname'];
                    }
                    $zR = DB::select( $sql );
                    foreach( $zR as $zRow )
                    {
                        if ( $zRow->internal_name != "nicht_belegt" )
                        {
                            $ini_name = $zRow->internal_name;
                            if ( $ini_name == "sofortueberweisung" )
                            {
                                $ini_name = "ueberweisung";
                            }
                            if ( $GLOBALS["INI"]["PayPalPlus"]["aktiv"] != 1 )
                            {
                                $row["beschr"] = ( str_replace( "\r\n", "<br>", $row["beschr"] ) );
                            }
                            if ( ( $GLOBALS["INI"][ $ini_name ]["aktiv"] == 1 && $_SESSION["zahlarten"][ $ini_name ] !== false ) || !in_array( $zRow->internal_name, $GLOBALS["zahlsysteme"] ) )
                            {
                                $preis = $vRow->price;
                                $name = $vRow->name . " - " . $zRow->name;
                                if ( $_SESSION["SHOP"]["Lieferadresse"] == "abholung" )
                                {
                                    $name = "Abholung - " . $zRow->name;
                                    $preis = 0;
                                }
                                $beschreibung = $zRow->info_im_shop;
                                if ( $beschreibung && $vRow->info_shop )
                                {
                                    $beschreibung .= "<br/><br/>";
                                }
                                if ( $vRow->info_shop )
                                {
                                    $beschreibung .= $vRow->info_shop;
                                }
                                $beschreibung2 = $zRow->versandtextbaustein;
                                if ( $beschreibung2 && $row->versandtextbaustein )
                                {
                                    $beschreibung2 .= "<br><br/>";
                                }
                                if ( $row->versandtextbaustein )
                                {
                                    $beschreibung2 .= $row->versandtextbaustein;
                                }
                                if ( $beschreibung2 && $vRow->info_mail )
                                {
                                    $beschreibung2 .= "<br/><br/>";
                                }
                                if ( $vRow->info_mail )
                                {
                                    $beschreibung2 .= $vRow->info_mail;
                                }
                                $buffer[ $zRow->internal_name . "_" . $vRow->id ] = array(
                                    "zusaetze"         => $vRow->zusaetze,
                                    "ID"               => $zRow->internal_name . "_" . $vRow->id,
                                    "beschreibung"     => $beschreibung,
                                    "beschreibung2"    => $beschreibung2,
                                    "kurz"             => $name,
                                    "ultrakurz"        => $zRow->name,
                                    "preis"            => $preis,
                                    "gesamt"           => $preis,
                                    "rufname"          => $zRow->internal_name,
                                    "versand_abschlag" => $zRow->abschlag,
                                    "versandgruppe"    => $vgId,
                                    //"zahlart_index"    => $row->zahlart_index,
                                );

                            }
                        }

                    }
                    if ( is_countable( $vRow->zusaetze ) )
                    {
                        $zusaetze = array();
                        foreach ( $vRow->zusaetze as $zId => $zusatz )
                        {
                            $sql = "SELECT
                                    beschreibung
                                FROM
                                    artikel
                                WHERE
                                    id=" . $zId . "
                            ";
                            $res = DB::select( $sql );
                            $row = $res[0];
                            $zusaetze[ $zId ] = $row->beschreibung;
                        }
                    }
                }
            }
            else
            {
                $sql = "
                    SELECT
                        v.*
                    FROM
                        shippings v
                    JOIN
                        shipping_countries vl
                    ON
                        vl.shipping_id=v.id    
                    WHERE
                        country_id=" . $Land . "
                ";
                $res = DB::select( $sql );
                foreach( $res as $vRow )
                {
                    $vgId = $vRow->versandgruppen_id;
                    $sql = "SELECT
                            z.name,
                            z.internal_name
                        FROM
                            payment_methods z
                        JOIN
                            shipping_payment_methods vz
                        ON
                            vz.payment_method_id=z.id
                        WHERE
                            vz.shipping_id=" . $vRow->id . "
                    ";
                    if ( ( $_GET['vRufname'] ) && is_numeric( $_GET['vRufname'] ) )
                    {
                        $sql .= " AND z.id = " . $_GET['vRufname'];
                    }
                    $resZ = DB::select( $sql );
                    foreach( $resZ as $vzRow )
                    {
                        if ( $vzRow->internal_name != "nicht_belegt" )
                        {
                            $ini_name = $vzRow->internal_name;
                            if ( $ini_name == "sofortueberweisung" )
                            {
                                $ini_name = "ueberweisung";
                            }
                            if ( $GLOBALS["INI"]["PayPalPlus"]["aktiv"] != 1 )
                            {
                                $row["beschr"] = ( str_replace( "\r\n", "<br>", $row["beschr"] ) );
                            }
                            if ( ( $GLOBALS["INI"][ $ini_name ]["aktiv"] == 1 && $_SESSION["zahlarten"][ $ini_name ] !== false ) || !in_array( $vzRow->internal_name, $GLOBALS["zahlsysteme"] ) )
                            {
                                $preis = $vRow->price;
                                $name = $vRow->name . " - " . $vzRow->name;
                                if ( $_SESSION["SHOP"]["Lieferadresse"] == "abholung" )
                                {
                                    $name = "Abholung - " . $vzRow->name;
                                    $preis = 0;
                                }
                                $beschreibung = $vzRow->info_im_shop;
                                if ( $beschreibung && $vRow->info_shop )
                                {
                                    $beschreibung .= "<br/><br/>";
                                }
                                if ( $vRow->info_shop )
                                {
                                    $beschreibung .= $vRow->info_shop;
                                }
                                $beschreibung2 = $vzRow->versandtextbaustein;
                                if ( $beschreibung2 && $vRow->versandtextbaustein )
                                {
                                    $beschreibung2 .= "<br><br/>";
                                }
                                if ( $vRow->versandtextbaustein )
                                {
                                    $beschreibung2 .= $vRow->versandtextbaustein;
                                }
                                if ( $beschreibung2 && $vRow->info_mail )
                                {
                                    $beschreibung2 .= "<br/><br/>";
                                }
                                if ( $vRow->info_mail )
                                {
                                    $beschreibung2 .= $vRow->info_mail;
                                }
                                $buffer[ $vzRow->internal_name . "_" . $vRow->id ] = array(
                                    "zusaetze"             => $vRow->zusaetze,
                                    "ID"                   => $vzRow->internal_name . "_" . $vRow->id,
                                    "beschreibung"         => $beschreibung,
                                    "beschreibung2"        => $beschreibung2,
                                    "kurz"                 => $name,
                                    "ultrakurz"            => $vzRow->name,
                                    "preis"                => $preis,
                                    "gesamt"               => $preis,
                                    "rufname"              => $vzRow->internal_name,
                                    "versand_abschlag"     => $vzRow->abschlag,
                                    "versandgruppe"        => $vgId,
                                    //"zahlart_index"        => $vRow->zahlart_index,
                                    "berechnung_preis_von" => $vRow->berechnung_preis_von,
                                    "berechnung_preis_bis" => $vRow->berechnung_preis_bis,
                                    "berechnung_kg_von"    => $vRow->berechnung_kg_von,
                                    "berechnung_kg_bis"    => $vRow->berechnung_kg_bis,
                                );
                            }
                        }
                    }
                }
                ksort( $buffer );
            }
                return $buffer;     
        }
}