Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 841 | Revision 843 | 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 )
817 lars 28
            {
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"];
47
                $gewicht = $_SESSION["SHOP"]["BASKET"]->getBasketGewicht();
829 lars 48
                foreach ( $_SESSION["SHOP"]["BASKET"]->items as $artikel )
817 lars 49
                {
50
                    if ( $artikel->spedId )
51
                    {
52
                        $vgruppen[] = $artikel->spedId;
53
                    }
54
                    elseif ( $artikel->versandgruppen_id )
55
                    {
56
                        $vgruppen[] = $artikel->versandgruppen_id;
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
71
                        id,
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
                    ";
125
                }
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
                }
829 lars 131
                foreach ( $vR as $vRow )
817 lars 132
                {
133
 
830 lars 134
                    /*if ( $param == "single" )
817 lars 135
                    {
136
                        if ( $vRow->name && $_SESSION['SHOP']['BASKET']->paymentInfo["Total"] )
137
                        {
138
                            $summeInklVersand = $vRow->price + $_SESSION['SHOP']['BASKET']->paymentInfo["Total"];
139
                            $vkSummeLaender['price'] = $vRow->price;
140
                            $vkSummeLaender['name'] = $vRow->name;
141
                            $fmt = new NumberFormatter( "de_DE.UTF-8", NumberFormatter::CURRENCY );
142
                            $vkSummeLaender['price_formatted'] = $fmt->formatCurrency( $vRow->price, "EUR" );
143
                            $vkSummeLaender['summe_formatted'] = $fmt->formatCurrency( $summeInklVersand, "EUR" );
144
                        }
145
                        else
146
                        {
147
                            echo "<div class=''>Fehler: Keine Versandart gefunden!</div>\n";
148
                        }
149
 
150
 
151
                        return true;
830 lars 152
                    }*/
817 lars 153
 
833 lars 154
                    if ( $vRow->additions )
817 lars 155
                    {
833 lars 156
                        $vRow->additions = unserialize( $vRow->additions );
817 lars 157
                    }
158
 
159
                    $sql = "SELECT
160
                            z.id,
161
                            z.name,
162
                            z.internal_name,
837 lars 163
                            z.discount,
817 lars 164
                            z.shipping_text AS versandtextbaustein,
839 lars 165
                            z.info_in_shop
817 lars 166
                        FROM
835 lars 167
                            shipping_payment_methods vz
817 lars 168
                        JOIN
169
                            payment_methods z
170
                        ON
840 lars 171
                            z.id=vz.payment_method_id
817 lars 172
                        WHERE
173
                            shipping_id=" . $vRow->id . "
174
                    ";
834 lars 175
                    if ( isset( $_GET['vRufname'] ) && is_numeric( $_GET['vRufname'] ) )
817 lars 176
                    {
177
                        $sql .= " AND z.id = " . $_GET['vRufname'];
178
                    }
179
                    $zR = DB::select( $sql );
829 lars 180
                    foreach ( $zR as $zRow )
817 lars 181
                    {
182
                        if ( $zRow->internal_name != "nicht_belegt" )
183
                        {
184
                            $ini_name = $zRow->internal_name;
185
                            if ( $ini_name == "sofortueberweisung" )
186
                            {
187
                                $ini_name = "ueberweisung";
188
                            }
189
                            if ( $GLOBALS["INI"]["PayPalPlus"]["aktiv"] != 1 )
190
                            {
842 lars 191
                                $row->name = ( str_replace( "\r\n", "<br>", $row->name ) );
817 lars 192
                            }
831 lars 193
                            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"] ) )
817 lars 194
                            {
195
                                $preis = $vRow->price;
196
                                $name = $vRow->name . " - " . $zRow->name;
197
                                if ( $_SESSION["SHOP"]["Lieferadresse"] == "abholung" )
198
                                {
199
                                    $name = "Abholung - " . $zRow->name;
200
                                    $preis = 0;
201
                                }
839 lars 202
                                $beschreibung = $zRow->info_in_shop;
203
                                if ( $beschreibung && $vRow->info_in_shop )
817 lars 204
                                {
205
                                    $beschreibung .= "<br/><br/>";
206
                                }
839 lars 207
                                if ( $vRow->info_in_shop )
817 lars 208
                                {
839 lars 209
                                    $beschreibung .= $vRow->info_in_shop;
817 lars 210
                                }
211
                                $beschreibung2 = $zRow->versandtextbaustein;
212
                                if ( $beschreibung2 && $row->versandtextbaustein )
213
                                {
214
                                    $beschreibung2 .= "<br><br/>";
215
                                }
216
                                if ( $row->versandtextbaustein )
217
                                {
218
                                    $beschreibung2 .= $row->versandtextbaustein;
219
                                }
220
                                if ( $beschreibung2 && $vRow->info_mail )
221
                                {
222
                                    $beschreibung2 .= "<br/><br/>";
223
                                }
224
                                if ( $vRow->info_mail )
225
                                {
226
                                    $beschreibung2 .= $vRow->info_mail;
227
                                }
829 lars 228
                                $buffer[$zRow->internal_name . "_" . $vRow->id] = array(
833 lars 229
                                    "additions"         => $vRow->additions,
817 lars 230
                                    "ID"               => $zRow->internal_name . "_" . $vRow->id,
231
                                    "beschreibung"     => $beschreibung,
232
                                    "beschreibung2"    => $beschreibung2,
233
                                    "kurz"             => $name,
234
                                    "ultrakurz"        => $zRow->name,
235
                                    "preis"            => $preis,
236
                                    "gesamt"           => $preis,
237
                                    "rufname"          => $zRow->internal_name,
837 lars 238
                                    "versand_abschlag" => $zRow->discount,
817 lars 239
                                    "versandgruppe"    => $vgId,
240
                                    //"zahlart_index"    => $row->zahlart_index,
241
                                );
242
 
243
                            }
244
                        }
245
 
246
                    }
833 lars 247
                    if ( is_countable( $vRow->additions ) )
817 lars 248
                    {
249
                        $zusaetze = array();
833 lars 250
                        foreach ( $vRow->additions as $zId => $zusatz )
817 lars 251
                        {
252
                            $sql = "SELECT
253
                                    beschreibung
254
                                FROM
255
                                    artikel
256
                                WHERE
257
                                    id=" . $zId . "
258
                            ";
259
                            $res = DB::select( $sql );
260
                            $row = $res[0];
829 lars 261
                            $zusaetze[$zId] = $row->beschreibung;
817 lars 262
                        }
263
                    }
264
                }
265
            }
266
            else
267
            {
268
                $sql = "
269
                    SELECT
270
                        v.*
271
                    FROM
272
                        shippings v
273
                    JOIN
274
                        shipping_countries vl
275
                    ON
276
                        vl.shipping_id=v.id
277
                    WHERE
278
                        country_id=" . $Land . "
279
                ";
280
                $res = DB::select( $sql );
829 lars 281
                foreach ( $res as $vRow )
817 lars 282
                {
283
                    $vgId = $vRow->versandgruppen_id;
284
                    $sql = "SELECT
285
                            z.name,
286
                            z.internal_name
287
                        FROM
288
                            payment_methods z
289
                        JOIN
290
                            shipping_payment_methods vz
291
                        ON
292
                            vz.payment_method_id=z.id
293
                        WHERE
294
                            vz.shipping_id=" . $vRow->id . "
295
                    ";
834 lars 296
                    if ( isset( $_GET['vRufname'] ) && is_numeric( $_GET['vRufname'] ) )
817 lars 297
                    {
298
                        $sql .= " AND z.id = " . $_GET['vRufname'];
299
                    }
300
                    $resZ = DB::select( $sql );
829 lars 301
                    foreach ( $resZ as $vzRow )
817 lars 302
                    {
303
                        if ( $vzRow->internal_name != "nicht_belegt" )
304
                        {
305
                            $ini_name = $vzRow->internal_name;
306
                            if ( $ini_name == "sofortueberweisung" )
307
                            {
308
                                $ini_name = "ueberweisung";
309
                            }
310
                            if ( $GLOBALS["INI"]["PayPalPlus"]["aktiv"] != 1 )
311
                            {
312
                                $row["beschr"] = ( str_replace( "\r\n", "<br>", $row["beschr"] ) );
313
                            }
831 lars 314
                            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 315
                            {
316
                                $preis = $vRow->price;
317
                                $name = $vRow->name . " - " . $vzRow->name;
318
                                if ( $_SESSION["SHOP"]["Lieferadresse"] == "abholung" )
319
                                {
320
                                    $name = "Abholung - " . $vzRow->name;
321
                                    $preis = 0;
322
                                }
838 lars 323
                                $beschreibung = $vzRow->info_shop;
817 lars 324
                                if ( $beschreibung && $vRow->info_shop )
325
                                {
326
                                    $beschreibung .= "<br/><br/>";
327
                                }
328
                                if ( $vRow->info_shop )
329
                                {
330
                                    $beschreibung .= $vRow->info_shop;
331
                                }
332
                                $beschreibung2 = $vzRow->versandtextbaustein;
333
                                if ( $beschreibung2 && $vRow->versandtextbaustein )
334
                                {
335
                                    $beschreibung2 .= "<br><br/>";
336
                                }
337
                                if ( $vRow->versandtextbaustein )
338
                                {
339
                                    $beschreibung2 .= $vRow->versandtextbaustein;
340
                                }
341
                                if ( $beschreibung2 && $vRow->info_mail )
342
                                {
343
                                    $beschreibung2 .= "<br/><br/>";
344
                                }
345
                                if ( $vRow->info_mail )
346
                                {
347
                                    $beschreibung2 .= $vRow->info_mail;
348
                                }
829 lars 349
                                $buffer[$vzRow->internal_name . "_" . $vRow->id] = array(
833 lars 350
                                    "additions"             => $vRow->additions,
817 lars 351
                                    "ID"                   => $vzRow->internal_name . "_" . $vRow->id,
352
                                    "beschreibung"         => $beschreibung,
353
                                    "beschreibung2"        => $beschreibung2,
354
                                    "kurz"                 => $name,
355
                                    "ultrakurz"            => $vzRow->name,
356
                                    "preis"                => $preis,
357
                                    "gesamt"               => $preis,
358
                                    "rufname"              => $vzRow->internal_name,
836 lars 359
                                    "versand_abschlag"     => $vzRow->discount,
817 lars 360
                                    "versandgruppe"        => $vgId,
361
                                    //"zahlart_index"        => $vRow->zahlart_index,
362
                                    "berechnung_preis_von" => $vRow->berechnung_preis_von,
363
                                    "berechnung_preis_bis" => $vRow->berechnung_preis_bis,
364
                                    "berechnung_kg_von"    => $vRow->berechnung_kg_von,
365
                                    "berechnung_kg_bis"    => $vRow->berechnung_kg_bis,
366
                                );
367
                            }
368
                        }
369
                    }
370
                }
371
                ksort( $buffer );
372
            }
829 lars 373
            return $buffer;
374
        }
375
    }