Subversion-Projekte lars-tiefland.webanos.faltradxxs.de

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

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