Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 963 | Revision 974 | Zur aktuellen Revision | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
233 lars 1
<?php
2
 
260 lars 3
    namespace App\Console\Commands;
233 lars 4
 
445 lars 5
    use App\Models\Address;
260 lars 6
    use App\Models\Directory;
600 lars 7
    use App\Models\DirectoryTemplate;
260 lars 8
    use App\Models\Item;
9
    use App\Models\Action;
580 lars 10
    use App\Models\Manufacturer;
272 lars 11
    use App\Models\Medium;
454 lars 12
    use App\Models\Order;
453 lars 13
    use App\Models\OrderAddress;
507 lars 14
    use App\Models\OrderType;
482 lars 15
    use App\Models\PaymentMethod;
263 lars 16
    use App\Models\Price;
551 lars 17
    use App\Models\PriceAgency;
260 lars 18
    use App\Models\ActionMedium;
19
    use App\Models\ItemMedium;
619 lars 20
    use App\Models\ItemTemplate;
260 lars 21
    use App\Models\DirectoryMedium;
527 lars 22
    use App\Models\SalesPortal;
540 lars 23
    use App\Models\SalesPortalItem;
529 lars 24
    use App\Models\SalesPortalType;
509 lars 25
    use App\Models\Shipping;
823 lars 26
    use App\Models\ShippingCountry;
510 lars 27
    use App\Models\ShippingGroup;
828 lars 28
    use App\Models\ShippingPaymentMethod;
465 lars 29
    use App\Models\Shop;
600 lars 30
    use App\Models\Template;
437 lars 31
    use App\Models\User;
561 lars 32
    use App\Models\OrderItem;
260 lars 33
    use Illuminate\Console\Command;
34
    use Illuminate\Support\Facades\DB;
233 lars 35
 
260 lars 36
    class convertDB extends Command
37
    {
38
        /**
39
         * The name and signature of the console command.
40
         *
41
         * @var string
42
         */
43
        protected $signature = 'command:convertDB';
233 lars 44
 
260 lars 45
        /**
46
         * The console command description.
47
         *
48
         * @var string
49
         */
50
        protected $description = 'Converts the old webanOS-DB to laravel';
233 lars 51
 
260 lars 52
        /**
53
         * Execute the console command.
54
         *
55
         * @return void
56
         */
57
 
58
        public function handle(): void
238 lars 59
        {
294 lars 60
            $this->info( date( "d.m.Y H:i:s" ) . ": Verarbeitung gestartet" );
496 lars 61
            $this->migrateShops();
505 lars 62
            $this->migrateOrderTypes();
496 lars 63
            $this->migratePaymentMethods();
508 lars 64
            $this->migrateShippingGroups();
517 lars 65
            $this->migrateShippings();
580 lars 66
            $this->migrateManufacturers();
794 lars 67
            $this->migrateMedia();
578 lars 68
            $this->migrateActions();
69
            $this->migrateDirs();
70
            $this->migrateItems();
620 lars 71
            $this->migrateTemplates();
795 lars 72
            $this->migrateSalesPortalTypes();
620 lars 73
            $this->migrateSalesPortals();
74
            $this->migrateSalesPortalItems();
465 lars 75
            if ( env( 'site' ) == env( 'shop' ) )
76
            {
962 lars 77
                $this->migrateWebSettings();
538 lars 78
                $this->migratePriceAgencies();
465 lars 79
                $this->migrateUsers();
80
                $this->migrateAddresses();
81
                $this->migrateOrderAddresses();
82
                $this->migrateOrders();
83
                $this->migrateOrderItems();
84
            }
294 lars 85
            $this->info( date( "d.m.Y H:i:s" ) . ": Verarbeitung beendet" );
234 lars 86
        }
260 lars 87
 
527 lars 88
        private function migrateShops()
433 lars 89
        {
527 lars 90
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Shops" );
486 lars 91
            $start = 0;
527 lars 92
            $sql = "
93
                SELECT
486 lars 94
                    MAX(id) AS start
95
                FROM
527 lars 96
                    shops
486 lars 97
            ";
527 lars 98
            $row = DB::connection( 'mysql' )->select( $sql );
99
            if ( $row[0]->start )
486 lars 100
            {
527 lars 101
                $start = $row[0]->start;
486 lars 102
            }
527 lars 103
            $sql = "SELECT
433 lars 104
                    *
105
                FROM
527 lars 106
                    shops
486 lars 107
                WHERE
108
                    id>" . $start . "
433 lars 109
            ";
527 lars 110
            $shops = DB::connection( 'old' )->select( $sql );
111
            foreach ( $shops as $oldShop )
433 lars 112
            {
527 lars 113
                $shop = new Shop();
114
                $shop->id = $oldShop->ID;
115
                $shop->name = $oldShop->Name;
615 lars 116
                $shop->short = '';
117
                if ( isset( $oldShop->short ) && $oldShop->short )
118
                {
119
                    $shop->short = $oldShop->short;
120
                }
527 lars 121
                $shop->re_short = '';
122
                if ( isset( $oldShop->re_short ) && $oldShop->re_short )
433 lars 123
                {
527 lars 124
                    $shop->re_short = $oldShop->re_short;
433 lars 125
                }
527 lars 126
                if ( isset( $oldShop->preisindex_ek ) && $oldShop->preisindex_ek )
433 lars 127
                {
527 lars 128
                    $shop->preisindex_ek = $oldShop->preisindex_ek;
433 lars 129
                }
527 lars 130
                $shop->ebay = $oldShop->ebay;
131
                $shop->erfassung = $oldShop->erfassung;
132
                if ( isset( $oldShop->status ) && $oldShop->status )
433 lars 133
                {
527 lars 134
                    $shop->status = $oldShop->status;
433 lars 135
                }
527 lars 136
                if ( isset( $oldShop->rang ) && $oldShop->rang )
137
                {
138
                    $shop->rank = $oldShop->rang;
139
                }
140
                $shop->klonziel = $oldShop->klonziel;
141
                $shop->konroot = $oldShop->konroot;
142
                if ( isset( $oldShop->home ) && $oldShop->home )
143
                {
144
                    $shop->home = $oldShop->home;
145
                }
146
                $shop->database = $oldShop->database;
147
                $shop->domain = $oldShop->domain;
148
                $shop->mail_server = $oldShop->mail_server;
149
                $shop->mail_user = $oldShop->mail_user;
150
                $shop->mail_password = $oldShop->mail_passwort;
151
                $shop->save();
152
            }
153
 
154
        }
155
 
156
        private function migrateOrderTypes()
157
        {
158
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Bestellarten" );
159
            $start = 0;
160
            $sql = "SELECT
161
                    MAX(id) AS start
162
                FROM
163
                    order_types
164
            ";
165
            $row = DB::connection( "mysql" )->select( $sql );
166
            if ( $row[0]->start )
167
            {
168
                $start = $row[0]->start;
169
            }
170
            $sql = "SELECT
171
                    *
172
                FROM
173
                    bestellart
174
                WHERE
175
                    id>" . $start . "
176
            ";
177
            $methods = DB::connection( 'old' )->select( $sql );
178
            foreach ( $methods as $method )
788 lars 179
            {
180
                $short = '';
615 lars 181
                if ( isset( $method->short ) && $method->short )
182
                {
183
                    $short = $method->short;
184
                }
185
 
527 lars 186
                OrderType::factory()->create( [
187
                    "id"            => $method->id,
188
                    "internal_name" => $method->rufname,
189
                    "name"          => $method->name,
615 lars 190
                    "short"         => $short,
527 lars 191
                ] );
192
            }
193
        }
194
 
195
        private function migratePaymentMethods()
196
        {
197
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Zahlungsmethoden" );
198
            $start = 0;
199
            $sql = "SELECT
200
                    MAX(id) AS start
201
                FROM
202
                    payment_methods
203
            ";
204
            $row = DB::connection( "mysql" )->select( $sql );
205
            if ( $row[0]->start )
206
            {
207
                $start = $row[0]->start;
208
            }
209
            $sql = "SELECT
210
                    *
211
                FROM
212
                    zahlungsarten
213
                WHERE
214
                    id>" . $start . "
215
            ";
216
            $methods = DB::connection( 'old' )->select( $sql );
217
            foreach ( $methods as $method )
218
            {
219
                PaymentMethod::factory()->create( [
220
                    "id"            => $method->id,
221
                    "name"          => $method->name,
222
                    "discount"      => $method->abschlag,
223
                    "internal_name" => $method->interner_name,
224
                    "info_in_shop"  => $method->info_im_shop,
225
                    "shipping_text" => $method->versandtextbaustein,
226
                ] );
227
            }
228
        }
229
 
230
        private function migrateShippingGroups()
231
        {
232
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Versandgruppen" );
233
            $sql = "SELECT
234
                    *
235
                FROM
236
                    versandgruppen
237
            ";
238
            $methods = DB::connection( 'old' )->select( $sql );
954 lars 239
            $progressbar = $this->output->createProgressBar( count( $methods ) );
240
            $progressbar->start();
527 lars 241
            foreach ( $methods as $group )
242
            {
954 lars 243
                $item = ShippingGroup::find( $group->id );
244
                if ( !isset( $item->id ) )
245
                {
246
                    ShippingGroup::factory()->create( [
247
                        "id"            => $group->id,
248
                        "name"          => $group->name,
249
                        "conditions"    => $group->bedingungen,
250
                        "icon"          => $group->icon,
251
                        "rank"          => $group->rang,
252
                        "shipping_text" => $group->versandtextbaustein,
253
                        "created_by"    => $group->erstellt_von,
254
                        "updated_by"    => $group->geaendert_von,
255
                        "updated_at"    => $group->geaendert_am,
256
                        "created_at"    => $group->erstellt_am,
257
                    ] );
258
                }
259
                else
260
                {
261
                    $item->name = $group->name;
262
                    $item->conditions = $group->bedingungen;
263
                    $item->icon = $group->icon;
264
                    $item->rank = $group->rang;
265
                    $item->shipping_text = $group->versandtextbaustein;
266
                    $item->updated_by = $group->geaendert_von;
267
                    $item->updated_at = $group->geaendert_am;
268
                    $item->save();
269
                }
270
                $progressbar->advance();
527 lars 271
            }
954 lars 272
            $progressbar->finish();
273
            $progressbar->clear();
527 lars 274
        }
275
 
276
        private function migrateShippings()
277
        {
278
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Versandoptionen" );
279
            $sql = "SELECT
280
                    *
281
                FROM
282
                    versand
283
            ";
284
            $methods = DB::connection( 'old' )->select( $sql );
285
            foreach ( $methods as $group )
286
            {
820 lars 287
                $item = Shipping::find( $group->id );
819 lars 288
                if ( isset( $item->id ) )
289
                {
290
                    $item->rank = $group->rang;
291
                    $item->shipping_group_id = $group->versandgruppen_id;
292
                    $item->name = $group->name;
293
                    $item->info_shop = $group->info_shop;
294
                    $item->info_mail = $group->info_mail;
295
                    $item->info_internal = $group->info_intern;
296
                    $item->island_shipping = $group->inselversand;
297
                    $item->additions = $group->zusaetze;
298
                    $item->status = $group->status;
299
                    $item->price = $group->preis;
300
                    $item->calc_weight_from = $group->berechnung_kg_von;
301
                    $item->calc_weight_to = $group->berechnung_kg_bis;
302
                    $item->calc_price_from = $group->berechnung_preis_von;
303
                    $item->calc_price_to = $group->berechnung_preis_bis;
304
                    $item->conditions = $group->bedingungen;
305
                    $item->tax_rate = $group->steuersatz;
306
                    $item->updated_by = $group->geaendert_von;
821 lars 307
                    $item->updated_at = $group->geaendert_am;
819 lars 308
                    $item->save();
309
                }
310
                else
311
                {
312
                    Shipping::factory()->create( [
313
                        "id"                => $group->id,
314
                        "rank"              => $group->rang,
315
                        "shipping_group_id" => $group->versandgruppen_id,
316
                        "name"              => $group->name,
317
                        "info_shop"         => $group->info_shop,
318
                        "info_mail"         => $group->info_mail,
319
                        "info_internal"     => $group->info_intern,
320
                        "island_shipping"   => $group->inselversand,
321
                        "additions"         => $group->zusaetze,
322
                        "status"            => $group->status,
323
                        "price"             => $group->preis,
324
                        "calc_weight_from"  => $group->berechnung_kg_von,
325
                        "calc_weight_to"    => $group->berechnung_kg_bis,
326
                        "calc_price_from"   => $group->berechnung_preis_von,
327
                        "calc_price_to"     => $group->berechnung_preis_bis,
328
                        "conditions"        => $group->bedingungen,
329
                        "tax_rate"          => $group->steuersatz,
330
                        "created_by"        => $group->erstellt_von,
331
                        "updated_by"        => $group->geaendert_von,
332
                        "updated_at"        => $group->geaendert_am,
333
                        "created_at"        => $group->erstellt_am,
334
                    ] );
335
                }
336
                $sql = "SELECT
337
                        *
338
                    FROM
339
                        versand_to_land
340
                    WHERE
822 lars 341
                        versand_id=" . $group->id . "
819 lars 342
                ";
343
                $r = DB::connection( 'old' )->select( $sql );
344
                foreach ( $r as $row )
345
                {
824 lars 346
                    $item = ShippingCountry::where( "shipping_id", "=", $row->versand_id )->where( "country_id", "=", $row->country_id )->get();
953 lars 347
                    if ( !isset( $item[0]->id ) )
819 lars 348
                    {
826 lars 349
                        ShippingCountry::factory()->create( [ "shipping_id" => $row->versand_id, "country_id" => $row->country_id, ] );
819 lars 350
                    }
351
                }
352
                $sql = "SELECT
353
                        *
354
                    FROM
355
                        versand_to_zahlarten
356
                    WHERE
827 lars 357
                        versand_id=" . $group->id . "
819 lars 358
                ";
359
                $r = DB::connection( 'old' )->select( $sql );
360
                foreach ( $r as $row )
361
                {
362
                    $item = ShippingPaymentMethod::where( "shipping_id", "=", $row->versand_id )->where( "payment_method_id", "=", $row->zahlart_id )->get();
953 lars 363
                    if ( !isset( $item[0]->id ) )
819 lars 364
                    {
365
                        ShippingPaymentMethod::factory()->create( [ "shipping_id" => $row->versand_id, "payment_method_id" => $row->zahlart_id, ] );
366
                    }
367
                }
527 lars 368
            }
369
        }
370
 
371
        private function migrateActions()
372
        {
373
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Aktionen" );
374
            $sql = "
375
                SELECT
376
                    *
377
                FROM
378
                    Aktionen
379
            ";
380
            $actions = DB::connection( 'old' )->select( $sql );
381
            $progressbar = $this->output->createProgressBar( count( $actions ) );
382
            $progressbar->start();
383
            foreach ( $actions as $action )
384
            {
846 lars 385
                $actionDB = Action::find( $action->ID );
386
                if ( !isset( $actionDB->id ) )
387
                {
388
                    $actionDB = new Action();
389
                    $actionDB->id = $action->ID;
390
                    $actionDB->created_by = "WebanOS Laravel Upgrade";
391
                }
527 lars 392
                $actionDB->headline = $action->headline;
393
                $actionDB->text = $action->text;
394
                $actionDB->rang = $action->rang;
395
                $actionDB->config = $action->config;
396
                $actionDB->category = $action->Kategorie;
397
                $actionDB->notes = $action->notizen;
398
                $actionDB->valid_from = $action->von;
399
                $actionDB->valid_to = $action->bis;
400
                $actionDB->updated_by = "WebanOS Laravel Upgrade";
401
                $actionDB->save();
794 lars 402
                $this->migrateActionMedia( $actionDB->id );
433 lars 403
                $progressbar->advance();
404
            }
405
            $progressbar->finish();
406
            $progressbar->clear();
407
        }
408
 
260 lars 409
        private function migrateDirs()
410
        {
294 lars 411
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Kategorien" );
260 lars 412
            $sql = '
413
                SELECT
414
                    *
415
                FROM
416
                    directory
417
            ';
418
            $dirs = DB::connection( 'old' )->select( $sql );
301 lars 419
            $progressbar = $this->output->createProgressBar( count( $dirs ) );
788 lars 420
            $progressbar->start();
421
            DB::statement( 'SET FOREIGN_KEY_CHECKS=0' );
260 lars 422
            foreach ( $dirs as $row )
423
            {
794 lars 424
                $dir = Directory::find( $row->ID );
425
                if ( isset( $dir->id ) )
426
                {
427
                    $progressbar->advance();
428
                    continue;
429
                }
284 lars 430
                $ersteller = $row->erstellt_von;
431
                if ( !$ersteller )
432
                {
433
                    $ersteller = "WebanOS Laravel Upgrade";
434
                }
285 lars 435
                $bearbeiter = $row->letzte_Aenderung_von;
284 lars 436
                if ( !$bearbeiter )
437
                {
438
                    $bearbeiter = "WebanOS Laravel Upgrade";
439
                }
303 lars 440
                $dir = new Directory();
441
                $dir->id = $row->ID;
304 lars 442
                $dir->directory_id = $row->Father;
303 lars 443
                $dir->name = $row->Name;
432 lars 444
                $dir->articlemaster = $row->Artikelstamm;
304 lars 445
                $dir->status = $row->status;
303 lars 446
                $dir->kennung = $row->Kennung;
304 lars 447
                $dir->description = $row->Beschreibung;
448
                $dir->short_line_1 = $row->short_line_1;
303 lars 449
                $dir->url = $row->url;
450
                $dir->created_at = $row->erstellt_am;
451
                $dir->created_by = $ersteller;
452
                $dir->updated_by = $bearbeiter;
453
                $dir->updated_at = $row->letzte_Aenderung_am;
454
                $dir->save();
794 lars 455
                $this->migrateDirMedia( $dir->id );
301 lars 456
                $progressbar->advance();
260 lars 457
            }
301 lars 458
            $progressbar->finish();
788 lars 459
            $progressbar->clear();
460
            DB::statement( 'SET FOREIGN_KEY_CHECKS=1' );
260 lars 461
        }
462
 
463
        private function migrateItems()
464
        {
294 lars 465
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel" );
260 lars 466
            $sql = '
467
                SELECT
468
                    *
469
                FROM
470
                    artikel
792 lars 471
                WHERE
793 lars 472
                    father != -3 OR father IS NULL
260 lars 473
            ';
788 lars 474
            $items = DB::connection( 'old' )->select( $sql );
475
            $progressbar = $this->output->createProgressBar( count( $items ) );
301 lars 476
            $progressbar->start();
788 lars 477
            foreach ( $items as $row )
260 lars 478
            {
858 lars 479
                $ersteller = $row->erstellt_von;
480
                if ( !$ersteller )
481
                {
482
                    $ersteller = "WebanOS Laravel Upgrade";
483
                }
788 lars 484
                $item = Item::find( $row->ID );
858 lars 485
                if ( !isset( $item->id ) )
788 lars 486
                {
858 lars 487
                    $item = new Item();
488
                    $item->id = $row->ID;
489
                    $item->created_at = $row->erstellt_am;
490
                    $item->created_by = $ersteller;
788 lars 491
                }
284 lars 492
                $item->directory_id = $row->Father;
590 lars 493
                $item->manufacturer_id = $row->hersteller;
284 lars 494
                $item->name = $row->kurzbezeichnung;
495
                $item->status = $row->status;
854 lars 496
                $item->shipping_group_id = $row->versandgruppen_id;
855 lars 497
                $item->weight = $row->gewicht;
284 lars 498
                $item->kennung = $row->kennung;
499
                $item->description = $row->beschreibung;
500
                $item->updated_at = $row->letzte_Aenderung_am;
287 lars 501
                $bearbeiter = $row->letzte_Aenderung_von;
282 lars 502
                if ( !$bearbeiter )
281 lars 503
                {
282 lars 504
                    $bearbeiter = "WebanOS Laravel Upgrade";
281 lars 505
                }
284 lars 506
                $item->updated_by = $bearbeiter;
507
                $item->save();
794 lars 508
                $this->migrateItemMedia( $item->id );
301 lars 509
                $progressbar->advance();
260 lars 510
            }
301 lars 511
            $progressbar->finish();
302 lars 512
            $progressbar->clear();
294 lars 513
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Preise" );
494 lars 514
            $start = 0;
492 lars 515
            $sql = "SELECT
516
                    MAX(id) AS start
517
                FROM
518
                    prices
519
            ";
520
            $row = DB::connection( "mysql" )->select( $sql );
527 lars 521
            if ( $row[0]->start )
492 lars 522
            {
527 lars 523
                $start = $row[0]->start;
492 lars 524
            }
260 lars 525
            $sql = "
526
                SELECT
527
                    p.*
528
                FROM
529
                    preise p
530
                JOIN
531
                    artikel a
532
                ON
533
                    a.id=p.artikel_id
534
                WHERE
535
                    a.father >=-1
492 lars 536
                AND
537
                    p.id>" . $start . "
260 lars 538
            ";
539
            $prices = DB::connection( 'old' )->select( $sql );
301 lars 540
            $progressbar = $this->output->createProgressBar( count( $prices ) );
541
            $progressbar->start();
260 lars 542
            foreach ( $prices as $price )
543
            {
544
                Price::factory()->createQuietly( [
493 lars 545
                    "id"          => $price->id,
260 lars 546
                    "item_id"     => $price->artikel_id,
547
                    "preis_index" => $price->preis_index,
548
                    "preis"       => $price->preis,
549
                    "staffel"     => $price->staffel,
550
                    "created_at"  => $price->geaendert_am,
288 lars 551
                    "created_by"  => $price->geaendert_von,
552
                    "updated_by"  => $price->geaendert_von,
260 lars 553
                    "updated_at"  => $price->geaendert_am
554
                ] );
301 lars 555
                $progressbar->advance();
260 lars 556
            }
301 lars 557
            $progressbar->finish();
302 lars 558
            $progressbar->clear();
260 lars 559
        }
560
 
527 lars 561
        public function migrateMedia()
433 lars 562
        {
527 lars 563
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Medien" );
486 lars 564
            $start = 0;
433 lars 565
            $sql = "SELECT
527 lars 566
                    MAX(id) AS start
486 lars 567
                FROM
527 lars 568
                    media
486 lars 569
            ";
570
            $row = DB::connection( "mysql" )->select( $sql );
527 lars 571
            if ( $row[0]->start )
486 lars 572
            {
527 lars 573
                $start = $row[0]->start;
486 lars 574
            }
527 lars 575
            $sql = "
576
                SELECT
577
                    *
578
                FROM
579
                    medien
580
                WHERE
581
                    id>" . $start . "
582
            ";
583
            $media = DB::connection( 'old' )->select( $sql );
584
            $progressbar = $this->output->createProgressBar( count( $media ) );
585
            $progressbar->start();
586
            foreach ( $media as $medium )
587
            {
588
                $mediumDB = new Medium();
589
                $mediumDB->id = $medium->id;
590
                $mediumDB->name = $medium->name;
591
                $mediumDB->folder = $medium->folder;
592
                $mediumDB->medium_type_id = $medium->typ;
593
                $mediumDB->description = $medium->beschreibung;
594
                if ( $medium->erstellt_am )
595
                {
596
                    $mediumDB->created_at = date( "Y-m-d H:i:s", $medium->erstellt_am );
597
                }
598
                $ersteller = $medium->erstellt_von;
599
                if ( !$ersteller )
600
                {
601
                    $ersteller = "WebanOS Laravel Upgrade";
602
                }
603
                $bearbeiter = $medium->letzte_aenderung_von;
604
                if ( !$bearbeiter )
605
                {
606
                    $bearbeiter = "WebanOS Laravel Upgrade";
607
                }
608
                $mediumDB->created_by = $ersteller;
609
                $mediumDB->updated_by = $bearbeiter;
610
                $mediumDB->save();
611
                $progressbar->advance();
612
            }
613
            $progressbar->finish();
614
            $progressbar->clear();
615
        }
616
 
794 lars 617
        public function migrateActionMedia( $aktionId )
527 lars 618
        {
486 lars 619
            $sql = "SELECT
433 lars 620
                    *
621
                FROM
527 lars 622
                    aktionen_medien
486 lars 623
                WHERE
844 lars 624
                    aktionen_id=" . $aktionId . "
433 lars 625
            ";
626
            $media = DB::connection( 'old' )->select( $sql );
627
            foreach ( $media as $row )
628
            {
817 lars 629
                $medium = ActionMedium::find( $row->id );
845 lars 630
                if ( !isset( $medium->id ) )
794 lars 631
                {
845 lars 632
                    $medium = new ActionMedium();
956 lars 633
                    $medium->id = $row->id;
845 lars 634
                    $medium->created_by = "WebanOS Laravel Upgrade";
794 lars 635
                }
527 lars 636
                $medium->action_id = $row->aktionen_id;
433 lars 637
                $medium->medium_id = $row->medien_id;
638
                $medium->rank = $row->rang;
639
                $medium->updated_by = "WebanOS Laravel Upgrade";
640
                $medium->save();
641
            }
642
        }
643
 
794 lars 644
        public function migrateDirMedia( $dir )
260 lars 645
        {
486 lars 646
            $sql = "SELECT
260 lars 647
                    *
648
                FROM
527 lars 649
                    directory_medien
486 lars 650
                WHERE
794 lars 651
                    directory_id=" . $dir . "
260 lars 652
            ";
527 lars 653
            $media = DB::connection( 'old' )->select( $sql );
654
            foreach ( $media as $row )
260 lars 655
            {
817 lars 656
                $medium = DirectoryMedium::find( $row->medien_id );
657
                if ( isset( $medium->medien_id ) )
794 lars 658
                {
659
                    continue;
660
                }
527 lars 661
                $medium = new DirectoryMedium();
662
                $medium->directory_id = $row->directory_id;
663
                $medium->medium_id = $row->medien_id;
664
                $medium->rank = $row->rang;
665
                $medium->similar = $row->aehnlich;
666
                $medium->created_at = $row->zugeordnet_am;
667
                $medium->updated_at = $row->zugeordnet_am;
668
                $medium->created_by = "WebanOS Laravel Upgrade";
669
                $medium->updated_by = "WebanOS Laravel Upgrade";
670
                $medium->save();
260 lars 671
            }
672
        }
272 lars 673
 
794 lars 674
        public function migrateItemMedia( $item )
272 lars 675
        {
433 lars 676
            $sql = "SELECT
272 lars 677
                    *
678
                FROM
527 lars 679
                    artikel_medien
486 lars 680
                WHERE
817 lars 681
                    artikel_id=" . $item . "
272 lars 682
            ";
683
            $media = DB::connection( 'old' )->select( $sql );
433 lars 684
            foreach ( $media as $row )
272 lars 685
            {
817 lars 686
                $medium = ItemMedium::find( $row->medien_id );
687
                if ( isset( $medium->medien_id ) )
794 lars 688
                {
689
                    continue;
690
                }
527 lars 691
                $medium = new ItemMedium();
692
                $medium->item_id = $row->artikel_id;
433 lars 693
                $medium->medium_id = $row->medien_id;
694
                $medium->rank = $row->rang;
527 lars 695
                $medium->similar = $row->aehnlich;
696
                $medium->created_at = $row->zugeordnet_am;
697
                $medium->updated_at = $row->zugeordnet_am;
433 lars 698
                $medium->created_by = "WebanOS Laravel Upgrade";
699
                $medium->updated_by = "WebanOS Laravel Upgrade";
700
                $medium->save();
272 lars 701
            }
702
        }
304 lars 703
 
704
        private function migrateUsers()
705
        {
706
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere User" );
433 lars 707
            $start = 0;
708
            $sql = "SELECT
709
                    MAX(id) AS start
710
                FROM
434 lars 711
                    users
433 lars 712
            ";
713
            $row = DB::connection( "order" )->select( $sql );
527 lars 714
            if ( $row[0]->start )
433 lars 715
            {
527 lars 716
                $start = $row[0]->start;
433 lars 717
            }
718
            $sql = "SELECT
719
                    *
720
                FROM
434 lars 721
                    Logins
433 lars 722
                WHERE
723
                    id>" . $start . "
724
            ";
437 lars 725
            $users = DB::connection( "oldOrder" )->select( $sql );
726
            $progressbar = $this->output->createProgressBar( count( $users ) );
448 lars 727
            $progressbar->start();
437 lars 728
            foreach ( $users as $oldUser )
433 lars 729
            {
443 lars 730
                $ersteller = $oldUser->erstellt_von;
442 lars 731
                if ( !$ersteller )
732
                {
733
                    $ersteller = "WebanOS Laravel Upgrade";
734
                }
443 lars 735
                $bearbeiter = $oldUser->letzte_Aenderung_von;
442 lars 736
                if ( !$bearbeiter )
737
                {
738
                    $bearbeiter = "WebanOS Laravel Upgrade";
739
                }
437 lars 740
                $user = new User();
438 lars 741
                $user->id = $oldUser->ID;
437 lars 742
                $user->email = $oldUser->E_Mail;
743
                $user->created_at = $oldUser->erstellt_am;
442 lars 744
                $user->created_by = $ersteller;
745
                $user->updated_by = $bearbeiter;
437 lars 746
                $user->updated_at = $oldUser->letzte_Aenderung_am;
747
                $user->save();
441 lars 748
                $progressbar->advance();
433 lars 749
            }
441 lars 750
            $progressbar->finish();
751
            $progressbar->clear();
304 lars 752
        }
753
 
445 lars 754
        private function migrateAddresses( bool $isOrder = false )
304 lars 755
        {
445 lars 756
            $typ = "Adressen";
757
            $table = "addresses";
758
            $oldTable = "adresse";
759
            if ( $isOrder === true )
760
            {
761
                $typ = "Bestelladressen";
762
                $table = "order_addresses";
763
                $oldTable = "bestelladresse";
764
            }
765
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere " . $typ );
766
            $start = 0;
767
            $sql = "SELECT
768
                    MAX(id) AS start
769
                FROM
770
                    " . $table . "
771
            ";
772
            $row = DB::connection( "order" )->select( $sql );
527 lars 773
            if ( $row[0]->start )
445 lars 774
            {
527 lars 775
                $start = $row[0]->start;
445 lars 776
            }
777
            $sql = "SELECT
778
                    *
779
                FROM
780
                    " . $oldTable . "
781
                WHERE
782
                    id>" . $start . "
783
            ";
784
            $addresses = DB::connection( "oldOrder" )->select( $sql );
785
            $progressbar = $this->output->createProgressBar( count( $addresses ) );
447 lars 786
            $progressbar->start();
445 lars 787
            foreach ( $addresses as $oldAddress )
788
            {
789
                $ersteller = "WebanOS Laravel Upgrade";
790
                $bearbeiter = "WebanOS Laravel Upgrade";
458 lars 791
                if ( $isOrder === true )
452 lars 792
                {
793
                    $address = new OrderAddress();
794
                }
795
                else
796
                {
797
                    $address = new Address();
798
                }
445 lars 799
                $address->id = $oldAddress->id;
800
                $address->user_id = $oldAddress->logins_id;
801
                $address->salutation = $oldAddress->anrede;
802
                $address->pro_title = $oldAddress->pro_title;
803
                $address->name = $oldAddress->vorname;
804
                $address->lastname = $oldAddress->nachname;
805
                $address->company = $oldAddress->firma;
806
                $address->company2 = $oldAddress->firma2;
807
                $address->street = $oldAddress->strasse1;
808
                $address->houseno = $oldAddress->str_nr1;
809
                $address->street2 = $oldAddress->strasse2;
810
                $address->zip = $oldAddress->plz;
811
                $address->city = $oldAddress->ort;
812
                $address->country_id = $oldAddress->land;
813
                $address->state_id = $oldAddress->state;
814
                $address->phone = $oldAddress->telefon;
815
                $address->fax = $oldAddress->fax;
816
                $address->email = $oldAddress->email;
817
                $address->nettocalculation = $oldAddress->nettoberechnung;
450 lars 818
                $address->hr_nr = $oldAddress->hr_nr;
445 lars 819
                $address->vat_id = $oldAddress->vat_id;
820
                $address->vat_free = $oldAddress->mwst_befreiung;
821
                $address->legal_form = $oldAddress->legal_form;
822
                $address->comment = $oldAddress->comment;
451 lars 823
                $address->created_at = $oldAddress->letzte_aenderung_am;
445 lars 824
                $address->created_by = $ersteller;
825
                $address->updated_by = $bearbeiter;
826
                $address->updated_at = $oldAddress->letzte_aenderung_am;
827
                $address->save();
828
                $progressbar->advance();
829
            }
830
            $progressbar->finish();
831
            $progressbar->clear();
304 lars 832
        }
833
 
834
        private function migrateOrderAddresses()
835
        {
445 lars 836
            $this->migrateAddresses( true );
304 lars 837
        }
838
 
839
        private function migrateOrders()
840
        {
841
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Bestellungen" );
454 lars 842
            $start = 0;
843
            $sql = "SELECT
844
                    MAX(id) AS start
845
                FROM
846
                    orders
847
            ";
848
            $row = DB::connection( "order" )->select( $sql );
527 lars 849
            if ( $row[0]->start )
454 lars 850
            {
527 lars 851
                $start = $row[0]->start;
454 lars 852
            }
853
            $sql = "SELECT
854
                    *
855
                FROM
856
                    Bestellung
857
                WHERE
858
                    id>" . $start . "
859
            ";
860
            $orders = DB::connection( "oldOrder" )->select( $sql );
861
            $progressbar = $this->output->createProgressBar( count( $orders ) );
862
            $progressbar->start();
863
            foreach ( $orders as $oldOrder )
864
            {
501 lars 865
                $paidAt = $oldOrder->bezahlt_am;
866
                if ( $paidAt == "0000-00-00 00:00:00" )
867
                {
502 lars 868
                    $paidAt = null;
501 lars 869
                }
454 lars 870
                $order = new Order();
871
                $order->id = $oldOrder->ID;
481 lars 872
                $order->shop_id = $oldOrder->shops_ID;
459 lars 873
                $order->order_type_id = $oldOrder->bestellart_id;
458 lars 874
                $order->payment_method_id = $oldOrder->zahlart_id;
875
                $order->user_id = $oldOrder->Login;
876
                $order->ship_addr_id = $oldOrder->ship_addr_id;
877
                $order->bill_addr_id = $oldOrder->bill_addr_id;
878
                $order->paid = $oldOrder->bezahlt;
501 lars 879
                $order->paid_at = $paidAt;
458 lars 880
                $order->paid_comment = $oldOrder->bezahlt_bemerkung;
881
                $order->foreign_id = $oldOrder->fremd_id;
882
                $order->foreign_payment_id = $oldOrder->bezahlt_fremdid;
883
                $order->status = $oldOrder->status;
884
                $order->total_amount_buffer = $oldOrder->gesamtsumme_buffer;
885
                $order->item_status_buffer = $oldOrder->artikelstatus_buffer;
886
                $order->invoice_status_buffer = $oldOrder->rechnungsstatus_buffer;
504 lars 887
                $order->delivery_note_status_buffer = $oldOrder->lieferscheinStatus_buffer;
458 lars 888
                $order->tax = $oldOrder->tax;
889
                $order->comment = $oldOrder->Bemerkung;
890
                $order->external_comment = $oldOrder->Bemerkung_extern;
891
                $order->note = $oldOrder->notiz;
460 lars 892
                $order->additional_info = $oldOrder->zusatzInfo;
458 lars 893
                $order->shipping_group_id = $oldOrder->versandgruppen_id;
894
                $order->kk_info = $oldOrder->kk_info;
895
                $order->created_by = $oldOrder->erstellt_von;
896
                $order->updated_by = $oldOrder->letzte_Aenderung_von;
897
                $order->updated_at = $oldOrder->letzte_Aenderung_am;
898
                $order->created_at = $oldOrder->erstellt_am;
454 lars 899
                $order->save();
900
                $progressbar->advance();
901
            }
902
            $progressbar->finish();
903
            $progressbar->clear();
304 lars 904
        }
905
 
906
        private function migrateOrderItems()
907
        {
578 lars 908
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel in Bestellungen" );
454 lars 909
            $start = 0;
910
            $sql = "SELECT
911
                    MAX(id) AS start
912
                FROM
913
                    order_items
914
            ";
915
            $row = DB::connection( "order" )->select( $sql );
527 lars 916
            if ( $row[0]->start )
454 lars 917
            {
527 lars 918
                $start = $row[0]->start;
454 lars 919
            }
920
            $sql = "SELECT
921
                    *
922
                FROM
923
                    artikel_to_Bestellung
924
                WHERE
925
                    id>" . $start . "
926
            ";
927
            $orderItems = DB::connection( "oldOrder" )->select( $sql );
928
            $progressbar = $this->output->createProgressBar( count( $orderItems ) );
929
            $progressbar->start();
930
            foreach ( $orderItems as $oldOrderItem )
931
            {
573 lars 932
                $exported = $oldOrderItem->exported;
933
                if ( $exported == "0000-00-00 00:00:00" )
934
                {
935
                    $exported = null;
936
                }
937
                $exported_invoice = $oldOrderItem->exported_rechnung;
938
                if ( $exported_invoice == "0000-00-00 00:00:00" )
939
                {
940
                    $exported_invoice = null;
941
                }
942
                $exported_delivery_note = $oldOrderItem->exported_lieferschein;
943
                if ( $exported_delivery_note == "0000-00-00 00:00:00" )
944
                {
945
                    $exported_delivery_note = null;
946
                }
561 lars 947
                OrderItem::factory()->create( [
567 lars 948
                    "id"                     => $oldOrderItem->ID,
949
                    "item_id"                => $oldOrderItem->artikel,
950
                    "order_id"               => $oldOrderItem->Bestellung,
568 lars 951
                    "name"                   => $oldOrderItem->Bezeichnung,
567 lars 952
                    "amount"                 => $oldOrderItem->Menge,
953
                    "price"                  => $oldOrderItem->Preis_pro_Stueck,
954
                    "father"                 => $oldOrderItem->father,
955
                    "status"                 => $oldOrderItem->status,
956
                    "delivery_status"        => $oldOrderItem->lieferstatus,
569 lars 957
                    "invoice_status"         => $oldOrderItem->rechnungStatus,
567 lars 958
                    "delivery_note_status"   => $oldOrderItem->lieferscheinStatus,
959
                    "foreign_id"             => $oldOrderItem->fremd_id,
570 lars 960
                    "option_input"           => $oldOrderItem->option_eingabe,
567 lars 961
                    "description"            => $oldOrderItem->beschreibung,
569 lars 962
                    "rank"                   => $oldOrderItem->Rang,
567 lars 963
                    "tax"                    => $oldOrderItem->mwst,
964
                    "orig_value"             => $oldOrderItem->orig_value,
965
                    "orig_currency"          => $oldOrderItem->orig_currency,
966
                    "hash"                   => $oldOrderItem->hash,
573 lars 967
                    "exported"               => $exported,
574 lars 968
                    "exported_invoice"       => $exported_invoice,
969
                    "exported_delivery_note" => $exported_delivery_note,
567 lars 970
 
561 lars 971
                ] );
454 lars 972
                $progressbar->advance();
973
            }
974
            $progressbar->finish();
975
            $progressbar->clear();
304 lars 976
        }
535 lars 977
 
978
        private function migrateSalesPortalTypes()
979
        {
980
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Verkaufsportalarten" );
981
            $start = 0;
982
            $sql = "SELECT
983
                    MAX(id) start
984
                FROM
985
                    sales_portal_types
986
            ";
987
            $row = DB::connection( 'cms' )->select( $sql );
988
            if ( $row[0]->start )
989
            {
990
                $start = $row[0]->start;
991
            }
992
            $sql = "SELECT
993
                    *
994
                FROM
995
                    vportale_art
996
                WHERE
997
                    id>" . $start . "
998
            ";
999
            $portals = DB::connection( 'cms' )->select( $sql );
552 lars 1000
            $progressbar = $this->output->createProgressBar( count( $portals ) );
1001
            $progressbar->start();
535 lars 1002
            foreach ( $portals as $portal )
1003
            {
1004
                SalesPortalType::factory()->create( [
1005
                    "id"                   => $portal->id,
1006
                    "type"                 => $portal->art,
1007
                    "name"                 => $portal->bezeichnung,
1008
                    "max_categories"       => $portal->max_categories,
1009
                    "min_depth_category"   => $portal->min_depth_category,
1010
                    "only_end_category"    => $portal->only_end_category,
1011
                    "script"               => $portal->skript,
1012
                    "script_folder"        => $portal->script_folder,
1013
                    "commit_possibilities" => $portal->commit_posibilities,
1014
                    "revokeable"           => $portal->stornierbar,
1015
                ] );
552 lars 1016
                $progressbar->advance();
535 lars 1017
            }
552 lars 1018
            $progressbar->finish();
1019
            $progressbar->clear();
535 lars 1020
        }
1021
 
1022
        private function migrateSalesPortals()
1023
        {
1024
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Verkaufsportale" );
1025
            $start = 0;
1026
            $sql = "SELECT
1027
                    MAX(id) start
1028
                FROM
1029
                    sales_portals
1030
            ";
1031
            $row = DB::connection( 'mysql' )->select( $sql );
1032
            if ( $row[0]->start )
1033
            {
1034
                $start = $row[0]->start;
1035
            }
1036
            $sql = "SELECT
1037
                    *
1038
                FROM
1039
                    vportale
1040
                WHERE
1041
                    id>" . $start . "
1042
            ";
1043
            $portals = DB::connection( 'old' )->select( $sql );
552 lars 1044
            $progressbar = $this->output->createProgressBar( count( $portals ) );
1045
            $progressbar->start();
535 lars 1046
            foreach ( $portals as $portal )
538 lars 1047
            {
1048
                $max_preis = 0;
1049
                $anrede = 1;
1050
                if ( isset( $portal->anrede ) )
1051
                {
1052
                    $anrede = $portal->anrede;
1053
                }
1054
                if ( isset( $portal->max_preis ) )
1055
                {
1056
                    $max_preis = $portal->max_preis;
1057
                }
535 lars 1058
                SalesPortal::factory()->create( [
538 lars 1059
                    "id"                   => $portal->id,
1060
                    "name"                 => $portal->name,
1061
                    "template"             => $portal->template,
1062
                    "sales_portal_type_id" => $portal->art,
1063
                    "sku_prefix"           => $portal->sku_prefix,
1064
                    "price_number"         => $portal->preis_nummer,
1065
                    "base_price"           => $portal->basis_preis,
1066
                    "min_price"            => $portal->min_preis,
1067
                    "max_price"            => $max_preis,
1068
                    "digits"               => $portal->runden,
1069
                    "standard_amount"      => $portal->standard_menge,
1070
                    "item_url"             => $portal->artikel_url,
1071
                    "currency"             => $portal->currency,
1072
                    "shipping_state"       => $portal->lieferstatus,
1073
                    "delivery"             => $portal->delivery,
1074
                    "shipping_cost"        => $portal->shipping_cost,
1075
                    "afterbuy"             => $portal->afterbuy,
1076
                    "salutation"           => $anrede,
1077
                    "commit_fields"        => $portal->commit_fields,
1078
                    "zip"                  => $portal->plz,
1079
                    "location"             => $portal->location,
1080
                    "created_by"           => $portal->erstellt_von,
1081
                    "updated_by"           => $portal->geaendert_von,
1082
                    "created_at"           => $portal->erstellt_am,
1083
                    "updated_at"           => $portal->geaendert_am,
535 lars 1084
                ] );
552 lars 1085
                $progressbar->advance();
535 lars 1086
            }
552 lars 1087
            $progressbar->finish();
1088
            $progressbar->clear();
535 lars 1089
        }
538 lars 1090
 
1091
        private function migrateSalesPortalItems()
1092
        {
1093
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Verkaufsportalartikel" );
1094
            $start = 0;
1095
            $sql = "SELECT
1096
                    MAX(id) start
1097
                FROM
1098
                    sales_portal_items
1099
            ";
1100
            $row = DB::connection( 'mysql' )->select( $sql );
1101
            if ( $row[0]->start )
1102
            {
1103
                $start = $row[0]->start;
1104
            }
1105
            $sql = "SELECT
1106
                    *
1107
                FROM
1108
                    artikel_vportale
1109
                WHERE
1110
                    id>" . $start . "
1111
            ";
1112
            $items = DB::connection( 'old' )->select( $sql );
552 lars 1113
            $progressbar = $this->output->createProgressBar( count( $items ) );
1114
            $progressbar->start();
538 lars 1115
            foreach ( $items as $item )
1116
            {
544 lars 1117
                $pickup = 0;
1118
                if ( isset( $item->pickup ) )
1119
                {
1120
                    $pickup = $item->pickup;
1121
                }
549 lars 1122
                $start = $item->start;
1123
                if ( $start == "0000-00-00 00:00:00" )
1124
                {
1125
                    $start = null;
1126
                }
547 lars 1127
                $erstellt_am = $item->erstellt_am;
1128
                if ( $erstellt_am == "0000-00-00 00:00:00" )
1129
                {
1130
                    $erstellt_am = null;
1131
                }
548 lars 1132
                $geaendert_am = $item->geaendert_am;
1133
                if ( $geaendert_am == "0000-00-00 00:00:00" )
547 lars 1134
                {
548 lars 1135
                    $geaendert_am = null;
547 lars 1136
                }
538 lars 1137
                SalesPortalItem::factory()->create( [
1138
                    "id"                              => $item->id,
1139
                    "sales_portal_id"                 => $item->vportale_id,
1140
                    "item_id"                         => $item->artikel_id,
1141
                    "sales_portal_template_id"        => $item->template_id,
1142
                    "sku"                             => $item->sku,
1143
                    "additions"                       => $item->zusaetze,
1144
                    "foreign_item_id"                 => $item->fremdartikel_id,
1145
                    "name"                            => $item->name,
1146
                    "autochange_name"                 => $item->autochange_name,
1147
                    "name_bold"                       => $item->name_fett,
1148
                    "highlight"                       => $item->highlight,
1149
                    "sub_name"                        => $item->sub_name,
1150
                    "manufacturer"                    => $item->hersteller,
1151
                    "autochange_manufacturer"         => $item->autochange_hersteller,
1152
                    "ean"                             => $item->ean,
1153
                    "autochange_ean"                  => $item->autochange_ean,
1154
                    "mpn"                             => $item->mpn,
1155
                    "autochange_mpn"                  => $item->autochange_mpn,
1156
                    "description"                     => $item->beschreibung,
1157
                    "autochange_description"          => $item->autochange_beschreibung,
541 lars 1158
                    "description_addition"            => $item->beschreibung_zusatz,
542 lars 1159
                    "autochange_description_addition" => $item->autochange_beschreibung_zusatz,
538 lars 1160
                    "price"                           => $item->preis,
1161
                    "autochange_price"                => $item->autochange_preis,
543 lars 1162
                    "currency"                        => $item->currency,
538 lars 1163
                    "tax"                             => $item->tax,
1164
                    "price_type"                      => $item->preisart,
1165
                    "amount"                          => $item->menge,
1166
                    "carrier"                         => $item->carrier,
1167
                    "carrier_cost"                    => $item->carrier_cost,
549 lars 1168
                    "start"                           => $start,
538 lars 1169
                    "duration"                        => $item->dauer,
1170
                    "category_1"                      => $item->kategorie_1,
1171
                    "category_2"                      => $item->kategorie_2,
1172
                    "category_3"                      => $item->kategorie_3,
1173
                    "bp1"                             => $item->bp1,
1174
                    "bp2"                             => $item->bp2,
1175
                    "bp3"                             => $item->bp3,
1176
                    "bp4"                             => $item->bp4,
1177
                    "bp5"                             => $item->bp5,
1178
                    "platin_search_1"                 => $item->platin_search_1,
1179
                    "platin_search_2"                 => $item->platin_search_2,
1180
                    "platin_search_3"                 => $item->platin_search_3,
1181
                    "platin_search_4"                 => $item->platin_search_4,
1182
                    "platin_search_5"                 => $item->platin_search_5,
1183
                    "search_1"                        => $item->search_1,
1184
                    "search_2"                        => $item->search_2,
1185
                    "search_3"                        => $item->search_3,
1186
                    "search_4"                        => $item->search_4,
1187
                    "search_5"                        => $item->search_5,
1188
                    "status"                          => $item->status,
1189
                    "online_status"                   => $item->online_status,
1190
                    "delivery_time"                   => $item->lieferzeit,
544 lars 1191
                    "pickup"                          => $pickup,
538 lars 1192
                    "last_feedback"                   => $item->last_feedback,
1193
                    "created_by"                      => $item->erstellt_von,
1194
                    "updated_by"                      => $item->geaendert_von,
547 lars 1195
                    "created_at"                      => $erstellt_am,
1196
                    "updated_at"                      => $geaendert_am,
538 lars 1197
                ] );
552 lars 1198
                $progressbar->advance();
538 lars 1199
            }
552 lars 1200
            $progressbar->finish();
1201
            $progressbar->clear();
555 lars 1202
        }
551 lars 1203
 
555 lars 1204
        private function migratePriceAgencies()
1205
        {
552 lars 1206
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Preisagenturen" );
551 lars 1207
            $start = 0;
1208
            $sql = "SELECT
1209
                    MAX(id) start
1210
                FROM
1211
                    price_agencies
1212
            ";
1213
            $row = DB::connection( 'mysql' )->select( $sql );
1214
            if ( $row[0]->start )
1215
            {
1216
                $start = $row[0]->start;
1217
            }
1218
            $sql = "SELECT
1219
                    *
1220
                FROM
1221
                    Preisagentur
1222
                WHERE
1223
                    id>" . $start . "
1224
            ";
555 lars 1225
            $agencies = DB::connection( 'old' )->select( $sql );
552 lars 1226
            $progressbar = $this->output->createProgressBar( count( $agencies ) );
1227
            $progressbar->start();
580 lars 1228
            foreach ( $agencies as $manufacturer )
555 lars 1229
            {
580 lars 1230
                $letzter_Abruf_am = $manufacturer->letzter_Abruf_am;
555 lars 1231
                if ( $letzter_Abruf_am == "0000-00-00 00:00:00" )
1232
                {
1233
                    $letzter_Abruf_am = null;
1234
                }
580 lars 1235
                $letzte_Aktualisierung_am = $manufacturer->letzte_Aktualisierung_am;
555 lars 1236
                if ( $letzte_Aktualisierung_am == "0000-00-00 00:00:00" )
1237
                {
1238
                    $letzte_Aktualisierung_am = null;
1239
                }
1240
                PriceAgency::factory()->create( [
580 lars 1241
                    "id"                   => $manufacturer->ID,
1242
                    "shop_id"              => $manufacturer->shops_ID,
1243
                    "name"                 => $manufacturer->Titel,
1244
                    "logo_url"             => $manufacturer->logo_url,
1245
                    "home_url"             => $manufacturer->home_url,
1246
                    "csv_url"              => $manufacturer->csv_url,
1247
                    "trigger_url"          => $manufacturer->trigger_URL,
1248
                    "voting_url"           => $manufacturer->bewertungs_URL,
1249
                    "records"              => $manufacturer->datensaetze,
1250
                    "access_url"           => $manufacturer->Zugang_URL,
1251
                    "access_user"          => $manufacturer->Zugang_Benutzer,
1252
                    "access_password"      => $manufacturer->Zugang_Passwort,
1253
                    "comment"              => $manufacturer->Bemerkung,
1254
                    "locked_manufacturers" => $manufacturer->gesperrte_hersteller,
1255
                    "config"               => $manufacturer->config,
1256
                    "status"               => $manufacturer->status,
1257
                    "only_deliverable"     => $manufacturer->nur_lieferbar,
1258
                    "min_price"            => $manufacturer->min_preis,
555 lars 1259
                    "last_updated_at"      => $letzte_Aktualisierung_am,
1260
                    "last_access_at"       => $letzter_Abruf_am,
580 lars 1261
                    "last_access_by"       => $manufacturer->letzter_Abruf_von,
1262
                    "updated_at"           => $manufacturer->letzte_Aenderung_am,
1263
                    "updated_by"           => $manufacturer->letzte_Aenderung_von,
555 lars 1264
                ] );
552 lars 1265
                $progressbar->advance();
1266
            }
1267
            $progressbar->finish();
1268
            $progressbar->clear();
555 lars 1269
        }
580 lars 1270
 
1271
        private function migrateManufacturers()
1272
        {
1273
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Hersteller" );
1274
            $start = 0;
1275
            $sql = "SELECT
1276
                    MAX(id) start
1277
                FROM
1278
                    manufacturers
1279
            ";
1280
            $row = DB::connection( 'mysql' )->select( $sql );
1281
            if ( $row[0]->start )
1282
            {
1283
                $start = $row[0]->start;
1284
            }
1285
            $sql = "SELECT
1286
                    *
1287
                FROM
1288
                    Herstellerkatalog
1289
                WHERE
1290
                    id>" . $start . "
1291
            ";
1292
            $manufacturers = DB::connection( 'old' )->select( $sql );
1293
            $progressbar = $this->output->createProgressBar( count( $manufacturers ) );
1294
            $progressbar->start();
1295
            foreach ( $manufacturers as $manufacturer )
1296
            {
1297
                Manufacturer::factory()->create( [
1298
                    "id"          => $manufacturer->ID,
1299
                    "name"        => $manufacturer->Name,
1300
                    "description" => $manufacturer->Text,
586 lars 1301
                    "logo1"       => $manufacturer->Logo1,
1302
                    "logo1_href"  => $manufacturer->Logo1_href,
587 lars 1303
                    "logo2"       => $manufacturer->Logo2,
586 lars 1304
                    "logo2_href"  => $manufacturer->Logo2_href,
589 lars 1305
                    "property_1"  => $manufacturer->Eigenschaft_1,
1306
                    "property_2"  => $manufacturer->Eigenschaft_2,
1307
                    "property_3"  => $manufacturer->Eigenschaft_2,
588 lars 1308
                    "calculation" => $manufacturer->abwKalkulation,
580 lars 1309
                    "created_at"  => $manufacturer->erstellt_am,
1310
                    "created_by"  => $manufacturer->erstellt_von,
1311
                    "updated_at"  => $manufacturer->letzte_Aenderung_am,
1312
                    "updated_by"  => $manufacturer->letzte_Aenderung_von,
1313
                ] );
1314
                $progressbar->advance();
1315
            }
1316
            $progressbar->finish();
1317
            $progressbar->clear();
600 lars 1318
        }
580 lars 1319
 
600 lars 1320
        private function migrateTemplates()
1321
        {
1322
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Templates" );
1323
            $start = 0;
1324
            $sql = "SELECT
1325
                    MAX(id) start
1326
                FROM
1327
                    templates
1328
            ";
1329
            $row = DB::connection( 'mysql' )->select( $sql );
1330
            if ( $row[0]->start )
1331
            {
1332
                $start = $row[0]->start;
1333
            }
1334
            $sql = "SELECT
1335
                    *
1336
                FROM
1337
                    templates
1338
                WHERE
1339
                    id>" . $start . "
1340
            ";
1341
            $templates = DB::connection( 'old' )->select( $sql );
1342
            $progressbar = $this->output->createProgressBar( count( $templates ) );
1343
            $progressbar->start();
1344
            foreach ( $templates as $template )
1345
            {
603 lars 1346
                switch ( $template->Typ )
1347
                {
1348
                    case "Aktionen":
1349
                        $typ = "action";
1350
                        break;
1351
                    case "artikel":
1352
                        $typ = "item";
1353
                        break;
1354
                    case "directory":
1355
                        $typ = "directory";
1356
                        break;
1357
                    case "Artikelstamm":
1358
                        $typ = "articlemaster";
1359
                        break;
1360
                    default:
1361
                        $typ = "";
1362
                }
600 lars 1363
                Template::factory()->create( [
1364
                    "id"             => $template->ID,
1365
                    "shop_id"        => $template->shops_ID,
1366
                    "name"           => $template->Name,
1367
                    "description"    => $template->Beschreibung,
1368
                    "template_key"   => $template->templateKey,
601 lars 1369
                    "template_value" => $template->templateValue,
603 lars 1370
                    "type"           => $typ,
600 lars 1371
                ] );
1372
                $progressbar->advance();
1373
            }
1374
            $progressbar->finish();
1375
            $progressbar->clear();
1376
            $start = 0;
1377
            $sql = "SELECT
1378
                    MAX(id) start
1379
                FROM
618 lars 1380
                    item_templates
1381
            ";
1382
            $row = DB::connection( 'mysql' )->select( $sql );
1383
            if ( $row[0]->start )
1384
            {
1385
                $start = $row[0]->start;
1386
            }
1387
            $sql = "SELECT
1388
                    *
1389
                FROM
1390
                    templates_to_artikel
1391
                WHERE
1392
                    id>" . $start . "
1393
            ";
1394
            $templates = DB::connection( 'old' )->select( $sql );
1395
            $progressbar = $this->output->createProgressBar( count( $templates ) );
1396
            $progressbar->start();
1397
            foreach ( $templates as $template )
1398
            {
619 lars 1399
                ItemTemplate::factory()->create( [
788 lars 1400
                    "id"          => $template->id,
1401
                    "item_id"     => $template->artikel_ID,
1402
                    "template_id" => $template->templates_ID,
618 lars 1403
                ] );
1404
                $progressbar->advance();
1405
            }
1406
            $progressbar->finish();
1407
            $progressbar->clear();
1408
            $start = 0;
1409
            $sql = "SELECT
1410
                    MAX(id) start
1411
                FROM
600 lars 1412
                    directory_templates
1413
            ";
1414
            $row = DB::connection( 'mysql' )->select( $sql );
1415
            if ( $row[0]->start )
1416
            {
1417
                $start = $row[0]->start;
1418
            }
1419
            $sql = "SELECT
1420
                    *
1421
                FROM
606 lars 1422
                    templates_to_directory
600 lars 1423
                WHERE
1424
                    id>" . $start . "
1425
            ";
1426
            $templates = DB::connection( 'old' )->select( $sql );
1427
            $progressbar = $this->output->createProgressBar( count( $templates ) );
1428
            $progressbar->start();
1429
            foreach ( $templates as $template )
1430
            {
1431
                DirectoryTemplate::factory()->create( [
604 lars 1432
                    "id"           => $template->id,
605 lars 1433
                    "directory_id" => $template->directory_ID,
1434
                    "template_id"  => $template->templates_ID,
600 lars 1435
                ] );
1436
                $progressbar->advance();
1437
            }
1438
            $progressbar->finish();
1439
            $progressbar->clear();
580 lars 1440
        }
961 lars 1441
 
973 lars 1442
        private function migrateWebSettings(): void
961 lars 1443
        {
1444
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel" );
1445
            $sql = '
1446
                SELECT
1447
                    *
1448
                FROM
963 lars 1449
                    web_settings
961 lars 1450
            ';
973 lars 1451
            $webSettings = DB::connection( 'old' )->select( $sql );
1452
            $progressbar = $this->output->createProgressBar( count( $webSettings ) );
961 lars 1453
            $progressbar->start();
973 lars 1454
            foreach ( $webSettings as $row )
961 lars 1455
            {
973 lars 1456
                $webSetting = Item::find( $row->ID );
1457
                if ( !isset( $webSetting->id ) )
961 lars 1458
                {
973 lars 1459
                    $webSetting = new Item();
1460
                    $webSetting->id = $row->ID;
1461
                    $webSetting->created_at = time();
1462
                    $webSetting->created_by = "";
961 lars 1463
                }
973 lars 1464
                $webSetting->update_at = $row->letzte_Aenderiung_am;
1465
                $webSetting->update_by = $row->letzte_Aenderung_von;
1466
                $webSetting->rank = $row->Rang;
1467
                $webSetting->name = $row->Name;
1468
                $webSetting->type = $row->Typ;
1469
                $webSetting->content = $row->Inhalt;
1470
                $webSetting->fallback = $row->FallbackU;
1471
                $webSetting->save();
961 lars 1472
                $progressbar->advance();
1473
            }
1474
            $progressbar->finish();
1475
            $progressbar->clear();
1476
        }
233 lars 1477
    }