Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 842 | Revision 859 | 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 )
843 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"];
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
843 lars 71
			id,
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
                    ";
843 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
                }
829 lars 132
                foreach ( $vR as $vRow )
817 lars 133
                {
134
 
830 lars 135
                    /*if ( $param == "single" )
817 lars 136
                    {
137
                        if ( $vRow->name && $_SESSION['SHOP']['BASKET']->paymentInfo["Total"] )
138
                        {
139
                            $summeInklVersand = $vRow->price + $_SESSION['SHOP']['BASKET']->paymentInfo["Total"];
140
                            $vkSummeLaender['price'] = $vRow->price;
141
                            $vkSummeLaender['name'] = $vRow->name;
142
                            $fmt = new NumberFormatter( "de_DE.UTF-8", NumberFormatter::CURRENCY );
143
                            $vkSummeLaender['price_formatted'] = $fmt->formatCurrency( $vRow->price, "EUR" );
144
                            $vkSummeLaender['summe_formatted'] = $fmt->formatCurrency( $summeInklVersand, "EUR" );
145
                        }
146
                        else
147
                        {
148
                            echo "<div class=''>Fehler: Keine Versandart gefunden!</div>\n";
149
                        }
150
 
151
 
152
                        return true;
830 lars 153
                    }*/
817 lars 154
 
833 lars 155
                    if ( $vRow->additions )
817 lars 156
                    {
833 lars 157
                        $vRow->additions = unserialize( $vRow->additions );
817 lars 158
                    }
159
 
160
                    $sql = "SELECT
161
                            z.id,
162
                            z.name,
163
                            z.internal_name,
837 lars 164
                            z.discount,
817 lars 165
                            z.shipping_text AS versandtextbaustein,
839 lars 166
                            z.info_in_shop
817 lars 167
                        FROM
835 lars 168
                            shipping_payment_methods vz
817 lars 169
                        JOIN
170
                            payment_methods z
171
                        ON
840 lars 172
                            z.id=vz.payment_method_id
817 lars 173
                        WHERE
174
                            shipping_id=" . $vRow->id . "
175
                    ";
834 lars 176
                    if ( isset( $_GET['vRufname'] ) && is_numeric( $_GET['vRufname'] ) )
817 lars 177
                    {
178
                        $sql .= " AND z.id = " . $_GET['vRufname'];
179
                    }
180
                    $zR = DB::select( $sql );
829 lars 181
                    foreach ( $zR as $zRow )
817 lars 182
                    {
183
                        if ( $zRow->internal_name != "nicht_belegt" )
184
                        {
185
                            $ini_name = $zRow->internal_name;
186
                            if ( $ini_name == "sofortueberweisung" )
187
                            {
188
                                $ini_name = "ueberweisung";
189
                            }
190
                            if ( $GLOBALS["INI"]["PayPalPlus"]["aktiv"] != 1 )
191
                            {
842 lars 192
                                $row->name = ( str_replace( "\r\n", "<br>", $row->name ) );
817 lars 193
                            }
831 lars 194
                            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 195
                            {
196
                                $preis = $vRow->price;
197
                                $name = $vRow->name . " - " . $zRow->name;
843 lars 198
                                if ( isset( $_SESSION["SHOP"]["Lieferadresse"] ) && $_SESSION["SHOP"]["Lieferadresse"] == "abholung" )
817 lars 199
                                {
200
                                    $name = "Abholung - " . $zRow->name;
201
                                    $preis = 0;
202
                                }
839 lars 203
                                $beschreibung = $zRow->info_in_shop;
843 lars 204
                                if ( $beschreibung && $vRow->info_shop )
817 lars 205
                                {
206
                                    $beschreibung .= "<br/><br/>";
207
                                }
843 lars 208
                                if ( $vRow->info_shop )
817 lars 209
                                {
843 lars 210
                                    $beschreibung .= $vRow->info_shop;
817 lars 211
                                }
212
                                $beschreibung2 = $zRow->versandtextbaustein;
213
                                if ( $beschreibung2 && $row->versandtextbaustein )
214
                                {
215
                                    $beschreibung2 .= "<br><br/>";
216
                                }
217
                                if ( $row->versandtextbaustein )
218
                                {
219
                                    $beschreibung2 .= $row->versandtextbaustein;
220
                                }
221
                                if ( $beschreibung2 && $vRow->info_mail )
222
                                {
223
                                    $beschreibung2 .= "<br/><br/>";
224
                                }
225
                                if ( $vRow->info_mail )
226
                                {
227
                                    $beschreibung2 .= $vRow->info_mail;
228
                                }
829 lars 229
                                $buffer[$zRow->internal_name . "_" . $vRow->id] = array(
833 lars 230
                                    "additions"         => $vRow->additions,
817 lars 231
                                    "ID"               => $zRow->internal_name . "_" . $vRow->id,
232
                                    "beschreibung"     => $beschreibung,
233
                                    "beschreibung2"    => $beschreibung2,
234
                                    "kurz"             => $name,
235
                                    "ultrakurz"        => $zRow->name,
236
                                    "preis"            => $preis,
237
                                    "gesamt"           => $preis,
238
                                    "rufname"          => $zRow->internal_name,
837 lars 239
                                    "versand_abschlag" => $zRow->discount,
817 lars 240
                                    "versandgruppe"    => $vgId,
241
                                    //"zahlart_index"    => $row->zahlart_index,
242
                                );
243
 
244
                            }
245
                        }
246
 
247
                    }
833 lars 248
                    if ( is_countable( $vRow->additions ) )
817 lars 249
                    {
250
                        $zusaetze = array();
833 lars 251
                        foreach ( $vRow->additions as $zId => $zusatz )
817 lars 252
                        {
253
                            $sql = "SELECT
254
                                    beschreibung
255
                                FROM
256
                                    artikel
257
                                WHERE
258
                                    id=" . $zId . "
259
                            ";
260
                            $res = DB::select( $sql );
261
                            $row = $res[0];
829 lars 262
                            $zusaetze[$zId] = $row->beschreibung;
817 lars 263
                        }
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,
843 lars 287
			    z.internal_name,
288
			    z.info_in_shop,
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(
833 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
    }