Subversion-Projekte lars-tiefland.laravel_shop

Revision

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