Subversion-Projekte lars-tiefland.laravel_shop

Revision

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