Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 861 | Revision 872 | Zur aktuellen Revision | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
398 lars 1
<?php
2
 
829 lars 3
    namespace App\Http\Controllers;
398 lars 4
 
829 lars 5
    use Illuminate\Http\Request;
817 lars 6
    use Illuminate\Support\Facades\DB;
398 lars 7
 
829 lars 8
    class ShippingController extends Controller
9
    {
830 lars 10
        public function getShippingOptions(): array
829 lars 11
        {
12
            $Land = 47;
13
            $buffer = array();
817 lars 14
            $rufnamen = array();
15
            $sql = "SELECT
16
                    z.id,
17
                    z.internal_name
18
                FROM
19
                    payment_methods z
20
                JOIN
21
                    shipping_payment_methods vz
22
                ON
23
                    vz.payment_method_id=z.id
24
            ";
829 lars 25
            $r = DB::connection( 'mysql' )->select( $sql );
817 lars 26
            $rufnamen[] = "- Bezahlarten -";
829 lars 27
            foreach ( $r as $row )
861 lars 28
            {
817 lars 29
                $ini_name = $row->internal_name;
30
                if ( $row->internal_name == "sofortueberweisung" )
31
                {
32
                    $ini_name = "ueberweisung";
33
                }
829 lars 34
                if ( !isset( $_SESSION["zahlarten"][$ini_name] ) )
817 lars 35
                {
829 lars 36
                    $_SESSION["zahlarten"][$ini_name] = true;
817 lars 37
                }
831 lars 38
                if ( ( isset( $GLOBALS["INI"][$ini_name]["aktiv"] ) && $GLOBALS["INI"][$ini_name]["aktiv"] == 1 && $_SESSION["zahlarten"][$ini_name] !== false ) || !in_array( $row->internal_name, $GLOBALS["zahlsysteme"] ) )
817 lars 39
                {
829 lars 40
                    $rufnamen[$row->id] = $row->internal_name;
817 lars 41
                }
42
            }
43
            if ( $_SESSION["SHOP"]["BASKET"]->items )
44
            {
45
                $vgruppen = array();
46
                $preis = $_SESSION["SHOP"]["BASKET"]->paymentInfo["Total"];
860 lars 47
                $gewicht = $_SESSION["SHOP"]["BASKET"]->weight;
829 lars 48
                foreach ( $_SESSION["SHOP"]["BASKET"]->items as $artikel )
817 lars 49
                {
50
                    if ( $artikel->spedId )
51
                    {
52
                        $vgruppen[] = $artikel->spedId;
53
                    }
859 lars 54
                    elseif ( $artikel->shipping_group_id )
817 lars 55
                    {
859 lars 56
                        $vgruppen[] = $artikel->shipping_group_id;
817 lars 57
                    }
58
                }
59
                $vgruppen = array_unique( $vgruppen );
60
                $sql = "SELECT
61
                        MAX(rank) AS rank
62
                    FROM
63
                        shipping_groups
64
                    WHERE
65
                        id IN(" . implode( ",", $vgruppen ) . ")
66
                ";
67
                $r = DB::select( $sql );
68
                $row = $r[0];
69
                $rang = $row->rank;
70
                $sql = "SELECT
861 lars 71
                        id,
843 lars 72
                        name,
817 lars 73
                        conditions,
74
                        shipping_text AS versandtextbaustein
75
                        -- zahlart_index
76
                    FROM
77
                        shipping_groups vg
78
                    WHERE
79
                        rank=" . $rang . "
80
                ";
81
                $r = DB::select( $sql );
82
                $row = $r[0];
83
                $vgId = $row->id;
84
                $bedingungen = explode( ";", $row->conditions );
85
                $sqlCondArr = array();
86
                if ( in_array( "preis", $bedingungen ) )
87
                {
88
                    $sqlCondArr[] = "((" . $preis . " >= calc_price_from AND " . $preis . " <= calc_price_to) OR (calc_price_from=calc_price_to))";
89
                }
90
                if ( in_array( "gewicht", $bedingungen ) )
91
                {
92
                    $sqlCondArr[] = "((" . $gewicht . " >= calc_weight_from AND " . $gewicht . " <= calc_weight_to)
93
                            OR (calc_weight_from = calc_weight_to))";
94
                }
95
                $sql = "SELECT
96
                        v.*
97
                    FROM
98
                        shippings v
99
                    JOIN
100
                        shipping_countries vl
101
                    ON
102
                        vl.shipping_id=v.id
103
                    WHERE
104
                        shipping_group_id=" . $vgId . "
105
                    AND
106
                        status = 0
107
                    AND
108
                        country_id=" . $Land . "
109
                ";
110
                if ( isset( $_SESSION["SHOP"]["vIsland"] ) && $_SESSION["SHOP"]["vIsland"] )
111
                {
829 lars 112
                    //Insel ausgewählt ==> Versandoption darf NICHT auf "kein Inselversand" (Wert: 1) stehen!
817 lars 113
                    $sqlCondArr [] = " island_shipping IN (0,2) ";
114
                }
115
                else
116
                {
117
                    $sqlCondArr [] = " island_shipping IN (0,1) ";
118
                }
119
                if ( $sqlCondArr )
120
                {
121
                    $sqlCond = implode( " AND ", $sqlCondArr );
122
                    $sql .= "
123
                        AND
124
                            " . $sqlCond . "
125
                    ";
861 lars 126
                }
817 lars 127
                $vR = DB::select( $sql );
829 lars 128
                if ( !count( $vR ) )
817 lars 129
                {
130
                    $_SESSION["versandFehler"] = "Wir versenden NICHT an diese Adresse! Bitte geben Sie eine andere Adresse ein!";
131
                }
871 lars 132
                $shippingIds = array();
829 lars 133
                foreach ( $vR as $vRow )
817 lars 134
                {
871 lars 135
                    $shippingIds[] = $vRow->id;
136
                    if ( $vRow->additions )
137
                    {
138
                        $vRow->additions = unserialize( $vRow->additions );
139
                    }
140
                }
817 lars 141
 
871 lars 142
                /*if ( $param == "single" )
143
                {
144
                    if ( $vRow->name && $_SESSION['SHOP']['BASKET']->paymentInfo["Total"] )
817 lars 145
                    {
871 lars 146
                        $summeInklVersand = $vRow->price + $_SESSION['SHOP']['BASKET']->paymentInfo["Total"];
147
                        $vkSummeLaender['price'] = $vRow->price;
148
                        $vkSummeLaender['name'] = $vRow->name;
149
                        $fmt = new NumberFormatter( "de_DE.UTF-8", NumberFormatter::CURRENCY );
150
                        $vkSummeLaender['price_formatted'] = $fmt->formatCurrency( $vRow->price, "EUR" );
151
                        $vkSummeLaender['summe_formatted'] = $fmt->formatCurrency( $summeInklVersand, "EUR" );
152
                    }
153
                    else
154
                    {
155
                        echo "<div class=''>Fehler: Keine Versandart gefunden!</div>\n";
156
                    }
817 lars 157
 
158
 
871 lars 159
                    return true;
160
                }*/
817 lars 161
 
871 lars 162
                $sql = "SELECT
817 lars 163
                            z.id,
164
                            z.name,
165
                            z.internal_name,
837 lars 166
                            z.discount,
817 lars 167
                            z.shipping_text AS versandtextbaustein,
839 lars 168
                            z.info_in_shop
817 lars 169
                        FROM
835 lars 170
                            shipping_payment_methods vz
817 lars 171
                        JOIN
172
                            payment_methods z
173
                        ON
840 lars 174
                            z.id=vz.payment_method_id
817 lars 175
                        WHERE
871 lars 176
                            shipping_id IN (" . implode( ",", $shippingIds . ")
817 lars 177
                    ";
871 lars 178
                if ( isset( $_GET['vRufname'] ) && is_numeric( $_GET['vRufname'] ) )
179
                {
180
                    $sql .= " AND z.id = " . $_GET['vRufname'];
181
                }
182
                $zR = DB::select( $sql );
183
                foreach ( $zR as $zRow )
184
                {
185
                    if ( $zRow->internal_name != "nicht_belegt" )
817 lars 186
                    {
871 lars 187
                        $ini_name = $zRow->internal_name;
188
                        if ( $ini_name == "sofortueberweisung" )
817 lars 189
                        {
871 lars 190
                            $ini_name = "ueberweisung";
191
                        }
192
                        if ( $GLOBALS["INI"]["PayPalPlus"]["aktiv"] != 1 )
193
                        {
194
                            $row->name = ( str_replace( "\r\n", "<br>", $row->name ) );
195
                        }
196
                        if ( ( isset( $GLOBALS["INI"][$ini_name]["aktiv"] ) && $GLOBALS["INI"][$ini_name]["aktiv"] == 1 && $_SESSION["zahlarten"][$ini_name] !== false ) || !in_array( $zRow->internal_name, $GLOBALS["zahlsysteme"] ) )
197
                        {
198
                            $preis = $vRow->price;
199
                            $name = $vRow->name . " - " . $zRow->name;
200
                            if ( isset( $_SESSION["SHOP"]["Lieferadresse"] ) && $_SESSION["SHOP"]["Lieferadresse"] == "abholung" )
817 lars 201
                            {
871 lars 202
                                $name = "Abholung - " . $zRow->name;
203
                                $preis = 0;
817 lars 204
                            }
871 lars 205
                            $beschreibung = $zRow->info_in_shop;
206
                            if ( $beschreibung && $vRow->info_shop )
817 lars 207
                            {
871 lars 208
                                $beschreibung .= "<br/><br/>";
817 lars 209
                            }
871 lars 210
                            if ( $vRow->info_shop )
817 lars 211
                            {
871 lars 212
                                $beschreibung .= $vRow->info_shop;
213
                            }
214
                            $beschreibung2 = $zRow->versandtextbaustein;
215
                            if ( $beschreibung2 && $row->versandtextbaustein )
216
                            {
217
                                $beschreibung2 .= "<br><br/>";
218
                            }
219
                            if ( $row->versandtextbaustein )
220
                            {
221
                                $beschreibung2 .= $row->versandtextbaustein;
222
                            }
223
                            if ( $beschreibung2 && $vRow->info_mail )
224
                            {
225
                                $beschreibung2 .= "<br/><br/>";
226
                            }
227
                            if ( $vRow->info_mail )
228
                            {
229
                                $beschreibung2 .= $vRow->info_mail;
230
                            }
231
                            $buffer[$zRow->internal_name . "_" . $vRow->id] = array(
232
                                "additions"        => $vRow->additions,
233
                                "ID"               => $zRow->internal_name . "_" . $vRow->id,
234
                                "beschreibung"     => $beschreibung,
235
                                "beschreibung2"    => $beschreibung2,
236
                                "kurz"             => $name,
237
                                "ultrakurz"        => $zRow->name,
238
                                "preis"            => $preis,
239
                                "gesamt"           => $preis,
240
                                "rufname"          => $zRow->internal_name,
241
                                "versand_abschlag" => $zRow->discount,
242
                                "versandgruppe"    => $vgId,
243
                                //"zahlart_index"    => $row->zahlart_index,
244
                            );
817 lars 245
 
246
                        }
871 lars 247
                    }
817 lars 248
 
871 lars 249
                }
250
                if ( is_countable( $vRow->additions ) )
251
                {
252
                    $zusaetze = array();
253
                    foreach ( $vRow->additions as $zId => $zusatz )
817 lars 254
                    {
871 lars 255
                        $sql = "SELECT
817 lars 256
                                    beschreibung
257
                                FROM
258
                                    artikel
259
                                WHERE
260
                                    id=" . $zId . "
261
                            ";
871 lars 262
                        $res = DB::select( $sql );
263
                        $row = $res[0];
264
                        $zusaetze[$zId] = $row->beschreibung;
817 lars 265
                    }
266
                }
267
            }
268
            else
269
            {
270
                $sql = "
271
                    SELECT
272
                        v.*
273
                    FROM
274
                        shippings v
275
                    JOIN
276
                        shipping_countries vl
277
                    ON
278
                        vl.shipping_id=v.id
279
                    WHERE
280
                        country_id=" . $Land . "
281
                ";
282
                $res = DB::select( $sql );
829 lars 283
                foreach ( $res as $vRow )
817 lars 284
                {
843 lars 285
                    $vgId = $vRow->shipping_group_id;
817 lars 286
                    $sql = "SELECT
287
                            z.name,
843 lars 288
			    z.internal_name,
289
			    z.info_in_shop,
290
                            z.discount,
291
                            z.shipping_text AS versand_textbaustein
817 lars 292
                        FROM
293
                            payment_methods z
294
                        JOIN
295
                            shipping_payment_methods vz
296
                        ON
297
                            vz.payment_method_id=z.id
298
                        WHERE
299
                            vz.shipping_id=" . $vRow->id . "
300
                    ";
834 lars 301
                    if ( isset( $_GET['vRufname'] ) && is_numeric( $_GET['vRufname'] ) )
817 lars 302
                    {
303
                        $sql .= " AND z.id = " . $_GET['vRufname'];
304
                    }
305
                    $resZ = DB::select( $sql );
829 lars 306
                    foreach ( $resZ as $vzRow )
817 lars 307
                    {
308
                        if ( $vzRow->internal_name != "nicht_belegt" )
309
                        {
310
                            $ini_name = $vzRow->internal_name;
311
                            if ( $ini_name == "sofortueberweisung" )
312
                            {
313
                                $ini_name = "ueberweisung";
314
                            }
315
                            if ( $GLOBALS["INI"]["PayPalPlus"]["aktiv"] != 1 )
316
                            {
843 lars 317
                                //$row->description = ( str_replace( "\r\n", "<br>", $row->description ) );
817 lars 318
                            }
831 lars 319
                            if ( ( isset( $GLOBALS["INI"][$ini_name]["aktiv"] ) && $GLOBALS["INI"][$ini_name]["aktiv"] == 1 && $_SESSION["zahlarten"][$ini_name] !== false ) || !in_array( $vzRow->internal_name, $GLOBALS["zahlsysteme"] ) )
817 lars 320
                            {
321
                                $preis = $vRow->price;
322
                                $name = $vRow->name . " - " . $vzRow->name;
843 lars 323
                                if ( isset( $_SESSION["SHOP"]["Lieferadresse"] ) && $_SESSION["SHOP"]["Lieferadresse"] == "abholung" )
817 lars 324
                                {
325
                                    $name = "Abholung - " . $vzRow->name;
326
                                    $preis = 0;
327
                                }
843 lars 328
                                $beschreibung = $vzRow->info_in_shop;
329
                                if ( $beschreibung && $vRow->info_in_shop )
817 lars 330
                                {
331
                                    $beschreibung .= "<br/><br/>";
332
                                }
333
                                if ( $vRow->info_shop )
334
                                {
335
                                    $beschreibung .= $vRow->info_shop;
336
                                }
843 lars 337
                                /*$beschreibung2 = $vzRow->versandtextbaustein;
817 lars 338
                                if ( $beschreibung2 && $vRow->versandtextbaustein )
339
                                {
340
                                    $beschreibung2 .= "<br><br/>";
341
                                }
342
                                if ( $vRow->versandtextbaustein )
343
                                {
344
                                    $beschreibung2 .= $vRow->versandtextbaustein;
345
                                }
346
                                if ( $beschreibung2 && $vRow->info_mail )
347
                                {
348
                                    $beschreibung2 .= "<br/><br/>";
843 lars 349
				}*/
350
                                /*if ( $vRow->info_mail )
817 lars 351
                                {
352
                                    $beschreibung2 .= $vRow->info_mail;
843 lars 353
				}*/
829 lars 354
                                $buffer[$vzRow->internal_name . "_" . $vRow->id] = array(
861 lars 355
                                    "additions"            => $vRow->additions,
817 lars 356
                                    "ID"                   => $vzRow->internal_name . "_" . $vRow->id,
357
                                    "beschreibung"         => $beschreibung,
843 lars 358
                                    //"beschreibung2"        => $beschreibung2,
817 lars 359
                                    "kurz"                 => $name,
360
                                    "ultrakurz"            => $vzRow->name,
361
                                    "preis"                => $preis,
362
                                    "gesamt"               => $preis,
363
                                    "rufname"              => $vzRow->internal_name,
836 lars 364
                                    "versand_abschlag"     => $vzRow->discount,
817 lars 365
                                    "versandgruppe"        => $vgId,
366
                                    //"zahlart_index"        => $vRow->zahlart_index,
843 lars 367
                                    "berechnung_preis_von" => $vRow->calc_price_from,
368
                                    "berechnung_preis_bis" => $vRow->calc_price_to,
369
                                    "berechnung_kg_von"    => $vRow->calc_weight_from,
370
                                    "berechnung_kg_bis"    => $vRow->calc_weight_to,
817 lars 371
                                );
372
                            }
373
                        }
374
                    }
375
                }
376
                ksort( $buffer );
377
            }
829 lars 378
            return $buffer;
379
        }
380
    }