Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 865 | Revision 867 | Zur aktuellen Revision | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
381 lars 1
<?php
2
 
383 lars 3
    namespace App\Http\Controllers;
381 lars 4
 
829 lars 5
    use App\Models\Item as ItemAlias;
817 lars 6
    use App\Http\Controllers\ShippingController;
862 lars 7
    use function Termwind\renderUsing;
719 lars 8
 
728 lars 9
    class BasketController extends Controller
383 lars 10
    {
713 lars 11
        public array $items         = array();
12
        public array $paymentInfo   = array();
13
        public array $shipmentCosts = array();
697 lars 14
 
714 lars 15
        public array $paymentMethods = array();
16
 
856 lars 17
        public float $weight = 0.00;
18
 
864 lars 19
        public array $shippingCountries = array();
20
 
383 lars 21
        //
705 lars 22
        private function getPaymentInfo(): void
701 lars 23
        {
24
            $buffer = array(
25
                "itemAmt"      => array(
26
 
27
                    1 => 0.00,
28
                ),
29
                "itemAmtNetto" => array(
30
 
31
                    1 => 0.00,
32
                ),
33
                "itemTax"      => array(
34
 
35
                    1 => 0.00,
36
                ),
37
                "shipAmt"      => 0.00,
38
                "shipTax"      => array(
39
 
40
                    1 => 0.00,
41
                ),
42
                "Amt"          => 0.00,
43
                "Tax"          => 0.00,
44
                "Total"        => 0.00,
45
            );
46
            if ( $_SESSION["SHOP"]["BASKET"]->items )
47
            {
709 lars 48
                $Land = 47;
707 lars 49
                if ( ( isset( $_SESSION['SHOP']['Lieferadresse'] ) && $_SESSION['SHOP']['Lieferadresse'] == "true" ) || ( isset( $_GET["liefer"] ) && $_GET["liefer"] == 1 ) || isset( $_SESSION['SHOP']['buy']['Persdata']['liefer_Land'] ) )
701 lars 50
                {
51
                    $Land = $_SESSION['SHOP']['buy']['Persdata']['liefer_Land'];
52
                }
708 lars 53
                elseif ( isset( $_SESSION['SHOP']['buy']['Persdata']['Land'] ) )
701 lars 54
                {
55
                    $Land = $_SESSION['SHOP']['buy']['Persdata']['Land'];
56
                }
57
                if ( !isset( $GLOBALS["steuern"][$Land] ) )
58
                {
59
                    $Land = 47;
60
                }
61
                $taxArr = $GLOBALS["steuern"][$Land];
62
                foreach ( $_SESSION["SHOP"]["BASKET"]->items as $bItem )
63
                {
717 lars 64
                    if ( !$bItem->code )
701 lars 65
                    {
720 lars 66
                        $item = ItemAlias::find( $bItem->id );
701 lars 67
                        if ( !isset( $bItem->tax ) )
68
                        {
69
                            $bItem->tax = $item->tax1;
70
                        }
71
                        $tax = $taxArr[$bItem->tax];
72
                        $bPreis = $bItem->menge * $bItem->price;
73
                        $buffer["itemAmt"][$bItem->tax] += $bPreis;
74
                    }
75
                    else
76
                    {
77
                        $tax = 0;
78
                        $bPreis = $bItem->price;
79
                        $buffer["discount"] = $bPreis * -1;
80
                    }
725 lars 81
                    if ( isset( $GLOBALS["INI"]["netto_preise"] ) && $GLOBALS["INI"]["netto_preise"] )
701 lars 82
                    {
83
                        $buffer["itemTax"][$bItem->tax] += round( $bPreis * $tax / 100, 2 );
84
                    }
85
                    else
86
                    {
87
                        $buffer["itemTax"][$bItem->tax] += round( $bItem->price * $tax / ( 100 + $tax ), 2 ) * $bItem->menge;
88
                    }
89
                    $buffer["Amt"] += $bPreis;
90
                }
91
                if ( !( isset( $GLOBALS["INI"]["netto_preise"] ) && $GLOBALS["INI"]["netto_preise"] == 1 ) )
92
                {
93
                    foreach ( $buffer["itemTax"] as $tax => $amt )
94
                    {
95
                        $buffer["itemAmtNetto"][$tax] = $buffer["itemAmt"][$tax] - round( $amt, 2 );
96
                    }
97
                }
725 lars 98
                if ( isset( $_SESSION["SHOP"]["VERSAND"] ) && $_SESSION["SHOP"]["VERSAND"] )
701 lars 99
                {
100
                    $t = 1;
101
                    $bItem = $_SESSION["SHOP"]["VERSAND"];
102
                    $buffer["shipAmt"] = $bItem["preis"];
103
                    $buffer["Amt"] += $bItem["preis"];
104
                    if ( $GLOBALS["INI"]["netto_preise"] )
105
                    {
106
                        $netto = array_sum( $buffer["itemAmt"] );
107
                        $t = $buffer["itemAmt"][0] / $netto;
108
                    }
109
                    if ( !isset( $GLOBALS["steuern"][$Land] ) )
110
                    {
111
                        $Land = 47;
112
                    }
113
                    $taxArr = $GLOBALS["steuern"][$Land];
114
                    if ( $t == 1 )
115
                    {
116
                        $tax = $taxArr[0];
117
                        if ( $GLOBALS["INI"]["netto_preise"] )
118
                        {
119
                            $buffer["shipTax"][0] += $bItem->price * $tax / 100;
120
                        }
121
                        else
122
                        {
123
                            $buffer["shipTax"][0] += $bItem->price * $tax / ( 100 + $tax );
124
                        }
125
                    }
126
                    elseif ( $t == 0 )
127
                    {
128
                        $tax = $taxArr[1];
129
                        if ( $GLOBALS["INI"]["netto_preise"] )
130
                        {
131
                            $buffer["shipTax"][1] += $bItem->price * $tax / 100;
132
                        }
133
                        else
134
                        {
135
                            $buffer["shipTax"][1] += $bItem->price * $tax / ( 100 + $tax );
136
                        }
137
                    }
138
                    else
139
                    {
140
                        $tax = $taxArr[0];
725 lars 141
                        if ( isset( $GLOBALS["INI"]["netto_preise"] ) && $GLOBALS["INI"]["netto_preise"] )
701 lars 142
                        {
143
                            $buffer["shipTax"][0] += ( $bItem->price * $tax / 100 ) * $t;
144
                        }
145
                        else
146
                        {
147
                            $buffer["shipTax"][0] += ( $bItem->price * $tax / ( 100 + $tax ) ) * $t;
148
                        }
149
                        $tax = $taxArr[1];
725 lars 150
                        if ( isset( $GLOBALS["INI"]["netto_preise"] ) && $GLOBALS["INI"]["netto_preise"] )
701 lars 151
                        {
152
                            $buffer["shipTax"][1] += ( $bItem->price * $tax / 100 ) * ( 1 - $t );
153
                        }
154
                        else
155
                        {
156
                            $buffer["shipTax"][0] += ( $bItem->price * $tax / ( 100 + $tax ) ) * ( 1 - $t );
157
                        }
158
                    }
159
                }
160
                foreach ( $taxArr as $ind => $tax )
161
                {
162
                    $buffer["TaxRates"][$ind] = $tax;
163
                }
164
                $buffer["Tax"] = round( array_sum( $buffer["itemTax"] ) + array_sum( $buffer["shipTax"] ), 2 );
725 lars 165
                if ( isset( $GLOBALS["INI"]["netto_preise"] ) && $GLOBALS["INI"]["netto_preise"] )
701 lars 166
                {
167
                    $buffer["Total"] = round( $buffer["Amt"] + $buffer["Tax"], 2 );
168
                }
169
                else
170
                {
171
                    $buffer["Total"] = $buffer["Amt"];
172
                }
173
            }
705 lars 174
            $this->paymentInfo = $buffer;
701 lars 175
        }
383 lars 176
 
701 lars 177
        public function addItem()
656 lars 178
        {
668 lars 179
            $preis = 0;
705 lars 180
            if ( request( "preis" ) )
668 lars 181
            {
705 lars 182
                $preis = request( "preis" );
668 lars 183
            }
730 lars 184
            $bItem = new BasketItemController( \request( "Menge" ), $preis, \request( "item" ) );
670 lars 185
            $bItem->addinfo = "";
663 lars 186
            // addons aus konfigurator
705 lars 187
            $addon = \request( "addon" );
188
            if ( is_array( $addon ) )
663 lars 189
            {
705 lars 190
                foreach ( $addon as $itemID )
663 lars 191
                {
192
                    if ( $expl = explode( "#", $itemID ) )
193
                    {
194
                        if ( $expl[0] != 0 )
195
                        {
196
                            $itemID = $expl[0];
829 lars 197
                        }
198
                        $preis = 0;
741 lars 199
                        if ( $expl[1] != 0 )
200
                        {
201
                            $preis = $expl[1];
663 lars 202
                        }
203
                    }
204
                    if ( is_numeric( $itemID ) )
205
                    {
741 lars 206
                        $aItem = new BasketItemController( 1, $preis, $itemID );
829 lars 207
                        $bItem->addinfo .= "<br>" . $aItem->name;
208
                        $bItem->price += $preis;
663 lars 209
                    }
210
                }
211
            }
829 lars 212
            $key = sha1( $bItem->name . $bItem->addinfo );
738 lars 213
            if ( isset( $_SESSION["SHOP"]["BASKET"]->items[$key] ) )
214
            {
215
                $bItem->menge += $_SESSION["SHOP"]["BASKET"]->items[$key]->menge;
829 lars 216
            }
731 lars 217
            $_SESSION["SHOP"]["BASKET"]->items[$key] = $bItem;
857 lars 218
            $this->getBasketGewicht();
705 lars 219
            $this->getPaymentInfo();
713 lars 220
            $this->getShipmentCosts();
829 lars 221
        }
713 lars 222
 
829 lars 223
        public function editItem()
224
        {
225
            $key = request( "id" );
226
            $menge = request( "menge" );
746 lars 227
            $_SESSION["SHOP"]["BASKET"]->items[$key]->menge = $menge;
857 lars 228
            $this->getBasketGewicht();
737 lars 229
            $this->getPaymentInfo();
829 lars 230
            $this->getShipmentCosts();
231
        }
737 lars 232
 
733 lars 233
        public function delItem()
234
        {
235
            $key = request( "id" );
236
            unset( $_SESSION["SHOP"]["BASKET"]->items[$key] );
857 lars 237
            $this->getBasketGewicht();
736 lars 238
            $this->getPaymentInfo();
239
            $this->getShipmentCosts();
733 lars 240
        }
241
 
713 lars 242
        private function getShipmentCosts()
829 lars 243
        {
244
            $sc = new ShippingController();
245
            $buffer = $sc->getShippingOptions();
843 lars 246
            $_SESSION["SHOP"]["BASKET"]->shipmentCosts = $buffer;
862 lars 247
            $this->getShippingCountries();
829 lars 248
        }
249
 
856 lars 250
        public function getBasketGewicht(): void
829 lars 251
        {
853 lars 252
            $gewicht = 0.00;
253
            foreach ( $_SESSION["SHOP"]["BASKET"]->items as $item )
829 lars 254
            {
853 lars 255
                $gewicht += $item->menge * $item->weight;
829 lars 256
            }
856 lars 257
            $_SESSION["SHOP"]["BASKET"]->weight = $gewicht;
829 lars 258
        }
862 lars 259
 
260
        public function getShippingCountries()
261
        {
262
            $rLaender = getRechnungsLaender();
263
            $laender = $rLaender;
264
            if ( $_SESSION["SHOP"]["BASKET"]->items )
265
            {
266
                foreach ( $_SESSION["SHOP"]["BASKET"]->items as $artikel )
267
                {
268
                    if ( !$artikel->shipping_group_id )
269
                    {
270
                        $artikel->shipping_group_id = 1;
271
                    }
272
                    $vgruppen[] = $artikel->shipping_group_id;
273
                }
274
                $vgruppen = array_unique( $vgruppen );
275
                $sql = "SELECT
276
                        MAX(rang) AS rang
277
                    FROM
278
                        versandgruppen
279
                    WHERE
280
                        id IN(" . implode( ",", $vgruppen ) . ")
281
                ";
282
                $r = DB::select( $sql );
283
                $row = $r[0];
284
                $rang = $row->rank;
285
                $sql = "SELECT
286
                        id
287
                    FROM
288
                        versandgruppen
289
                    WHERE
290
                        rang=" . $rang . "
291
                ";
292
                $res = $GLOBALS["shopDB"]->query( $sql );
293
                $row = $res->fetch_assoc();
294
                $vgId = $row["id"];
295
            }
865 lars 296
            if ( isset( $vgId ) && $vgId )
862 lars 297
            {
298
                $sql = "SELECT DISTINCT
299
                        country_id
300
                    FROM
301
                        shipping_countries vl
302
                    JOIN
303
                        shippings v
304
                    ON
305
                        v.shipping_group_id=" . $vgId . "
306
                    AND
307
                        v.id=vl.shipping_id
308
                ";
309
            }
310
            else
311
            {
312
                $sql = "SELECT DISTINCT
313
                        country_id
314
                    FROM
315
                        shipping_countries
316
                ";
317
            }
866 lars 318
            $res = DB::select( $sql );
862 lars 319
            $vLaender = array();
866 lars 320
            foreach ( $res as $row )
862 lars 321
            {
322
                $sql = "SELECT
323
                        id,
324
                        `name-ger`
325
                    FROM
326
                        countries
327
                    WHERE
328
                        id=" . $row["country_id"] . "
329
                ";
330
                $resC = DB::select( $sql );
331
                $rowC = $resC[0];
332
                $land_name = $rowC->name_de;
333
                $vLaender[$rowC->id] = $land_name;
334
            }
335
            foreach ( $rLaender as $landId => $landName )
336
            {
337
                if ( !in_array( $landName, $vLaender ) )
338
                {
339
                    unset( $laender[$landId] );
340
                }
341
            }
342
            $_SESSION["SHOP"]["BASKET"]->shippingCountries = $laender;
343
        }
344
 
383 lars 345
    }