Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 542 | Revision 544 | 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;
7
    use App\Models\Item;
8
    use App\Models\Action;
272 lars 9
    use App\Models\Medium;
454 lars 10
    use App\Models\Order;
453 lars 11
    use App\Models\OrderAddress;
507 lars 12
    use App\Models\OrderType;
482 lars 13
    use App\Models\PaymentMethod;
263 lars 14
    use App\Models\Price;
260 lars 15
    use App\Models\ActionMedium;
16
    use App\Models\ItemMedium;
17
    use App\Models\DirectoryMedium;
527 lars 18
    use App\Models\SalesPortal;
540 lars 19
    use App\Models\SalesPortalItem;
529 lars 20
    use App\Models\SalesPortalType;
509 lars 21
    use App\Models\Shipping;
510 lars 22
    use App\Models\ShippingGroup;
465 lars 23
    use App\Models\Shop;
437 lars 24
    use App\Models\User;
260 lars 25
    use Illuminate\Console\Command;
26
    use Illuminate\Support\Facades\DB;
233 lars 27
 
260 lars 28
    class convertDB extends Command
29
    {
30
        /**
31
         * The name and signature of the console command.
32
         *
33
         * @var string
34
         */
35
        protected $signature = 'command:convertDB';
233 lars 36
 
260 lars 37
        /**
38
         * The console command description.
39
         *
40
         * @var string
41
         */
42
        protected $description = 'Converts the old webanOS-DB to laravel';
233 lars 43
 
260 lars 44
        /**
45
         * Execute the console command.
46
         *
47
         * @return void
48
         */
49
 
50
        public function handle(): void
238 lars 51
        {
294 lars 52
            $this->info( date( "d.m.Y H:i:s" ) . ": Verarbeitung gestartet" );
465 lars 53
            $migrateDirs = true;
488 lars 54
            /*if ( !$this->confirm( "Kategorien migrieren?" ) )
422 lars 55
            {
56
                $migrateDirs = false;
488 lars 57
            }*/
422 lars 58
            $migrateItems = true;
488 lars 59
            /*if ( !$this->confirm( "Artikel migrieren?" ) )
422 lars 60
            {
61
                $migrateItems = false;
488 lars 62
            }*/
422 lars 63
            $migrateActions = true;
488 lars 64
            /*if ( !$this->confirm( "Aktionen migrieren?" ) )
422 lars 65
            {
66
                $migrateActions = false;
488 lars 67
            }*/
422 lars 68
            $migrateMedia = true;
488 lars 69
            /*if ( !$this->confirm( "Medien migrieren?" ) )
422 lars 70
            {
71
                $migrateMedia = false;
488 lars 72
            }*/
496 lars 73
            $this->migrateShops();
505 lars 74
            $this->migrateOrderTypes();
496 lars 75
            $this->migratePaymentMethods();
508 lars 76
            $this->migrateShippingGroups();
517 lars 77
            $this->migrateShippings();
422 lars 78
            if ( $migrateActions )
79
            {
496 lars 80
                $this->migrateActions();
422 lars 81
            }
82
            if ( $migrateDirs )
83
            {
84
                $this->migrateDirs();
85
            }
86
            if ( $migrateItems )
87
            {
88
                $this->migrateItems();
89
            }
496 lars 90
            if ( $migrateMedia )
422 lars 91
            {
496 lars 92
                $this->migrateMedia();
93
                $this->migrateActionMedia();
94
                $this->migrateDirMedia();
95
                $this->migrateItemMedia();
465 lars 96
            }
97
            if ( env( 'site' ) == env( 'shop' ) )
98
            {
538 lars 99
                $this->migratePriceAgencies();
465 lars 100
                $this->migrateUsers();
101
                $this->migrateAddresses();
102
                $this->migrateOrderAddresses();
103
                $this->migrateOrders();
104
                $this->migrateOrderItems();
535 lars 105
                $this->migrateSalesPortalTypes();
465 lars 106
            }
536 lars 107
            $this->migrateSalesPortals();
538 lars 108
            $this->migrateSalesPortalItems();
294 lars 109
            $this->info( date( "d.m.Y H:i:s" ) . ": Verarbeitung beendet" );
234 lars 110
        }
260 lars 111
 
527 lars 112
        private function migrateShops()
433 lars 113
        {
527 lars 114
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Shops" );
486 lars 115
            $start = 0;
527 lars 116
            $sql = "
117
                SELECT
486 lars 118
                    MAX(id) AS start
119
                FROM
527 lars 120
                    shops
486 lars 121
            ";
527 lars 122
            $row = DB::connection( 'mysql' )->select( $sql );
123
            if ( $row[0]->start )
486 lars 124
            {
527 lars 125
                $start = $row[0]->start;
486 lars 126
            }
527 lars 127
            $sql = "SELECT
433 lars 128
                    *
129
                FROM
527 lars 130
                    shops
486 lars 131
                WHERE
132
                    id>" . $start . "
433 lars 133
            ";
527 lars 134
            $shops = DB::connection( 'old' )->select( $sql );
135
            foreach ( $shops as $oldShop )
433 lars 136
            {
527 lars 137
                $shop = new Shop();
138
                $shop->id = $oldShop->ID;
139
                $shop->name = $oldShop->Name;
140
                $shop->short = $oldShop->short;
141
                $shop->re_short = '';
142
                if ( isset( $oldShop->re_short ) && $oldShop->re_short )
433 lars 143
                {
527 lars 144
                    $shop->re_short = $oldShop->re_short;
433 lars 145
                }
527 lars 146
                if ( isset( $oldShop->preisindex_ek ) && $oldShop->preisindex_ek )
433 lars 147
                {
527 lars 148
                    $shop->preisindex_ek = $oldShop->preisindex_ek;
433 lars 149
                }
527 lars 150
                $shop->ebay = $oldShop->ebay;
151
                $shop->erfassung = $oldShop->erfassung;
152
                if ( isset( $oldShop->status ) && $oldShop->status )
433 lars 153
                {
527 lars 154
                    $shop->status = $oldShop->status;
433 lars 155
                }
527 lars 156
                if ( isset( $oldShop->rang ) && $oldShop->rang )
157
                {
158
                    $shop->rank = $oldShop->rang;
159
                }
160
                $shop->klonziel = $oldShop->klonziel;
161
                $shop->konroot = $oldShop->konroot;
162
                if ( isset( $oldShop->home ) && $oldShop->home )
163
                {
164
                    $shop->home = $oldShop->home;
165
                }
166
                $shop->database = $oldShop->database;
167
                $shop->domain = $oldShop->domain;
168
                $shop->mail_server = $oldShop->mail_server;
169
                $shop->mail_user = $oldShop->mail_user;
170
                $shop->mail_password = $oldShop->mail_passwort;
171
                $shop->save();
172
            }
173
 
174
        }
175
 
176
        private function migrateOrderTypes()
177
        {
178
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Bestellarten" );
179
            $start = 0;
180
            $sql = "SELECT
181
                    MAX(id) AS start
182
                FROM
183
                    order_types
184
            ";
185
            $row = DB::connection( "mysql" )->select( $sql );
186
            if ( $row[0]->start )
187
            {
188
                $start = $row[0]->start;
189
            }
190
            $sql = "SELECT
191
                    *
192
                FROM
193
                    bestellart
194
                WHERE
195
                    id>" . $start . "
196
            ";
197
            $methods = DB::connection( 'old' )->select( $sql );
198
            foreach ( $methods as $method )
199
            {
200
                OrderType::factory()->create( [
201
                    "id"            => $method->id,
202
                    "internal_name" => $method->rufname,
203
                    "name"          => $method->name,
204
                    "short"         => $method->short,
205
                ] );
206
            }
207
        }
208
 
209
        private function migratePaymentMethods()
210
        {
211
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Zahlungsmethoden" );
212
            $start = 0;
213
            $sql = "SELECT
214
                    MAX(id) AS start
215
                FROM
216
                    payment_methods
217
            ";
218
            $row = DB::connection( "mysql" )->select( $sql );
219
            if ( $row[0]->start )
220
            {
221
                $start = $row[0]->start;
222
            }
223
            $sql = "SELECT
224
                    *
225
                FROM
226
                    zahlungsarten
227
                WHERE
228
                    id>" . $start . "
229
            ";
230
            $methods = DB::connection( 'old' )->select( $sql );
231
            foreach ( $methods as $method )
232
            {
233
                PaymentMethod::factory()->create( [
234
                    "id"            => $method->id,
235
                    "name"          => $method->name,
236
                    "discount"      => $method->abschlag,
237
                    "internal_name" => $method->interner_name,
238
                    "info_in_shop"  => $method->info_im_shop,
239
                    "shipping_text" => $method->versandtextbaustein,
240
                ] );
241
            }
242
        }
243
 
244
        private function migrateShippingGroups()
245
        {
246
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Versandgruppen" );
247
            $start = 0;
248
            $sql = "SELECT
249
                    MAX(id) AS start
250
                FROM
251
                    shipping_groups
252
            ";
253
            $row = DB::connection( "mysql" )->select( $sql );
254
            if ( $row[0]->start )
255
            {
256
                $start = $row[0]->start;
257
            }
258
            $sql = "SELECT
259
                    *
260
                FROM
261
                    versandgruppen
262
                WHERE
263
                    id>" . $start . "
264
            ";
265
            $methods = DB::connection( 'old' )->select( $sql );
266
            foreach ( $methods as $group )
267
            {
268
                ShippingGroup::factory()->create( [
269
                    "id"            => $group->id,
270
                    "name"          => $group->name,
271
                    "conditions"    => $group->bedingungen,
272
                    "icon"          => $group->icon,
273
                    "rank"          => $group->rang,
274
                    "shipping_text" => $group->versandtextbaustein,
275
                    "created_by"    => $group->erstellt_von,
276
                    "updated_by"    => $group->geaendert_von,
277
                    "updated_at"    => $group->geaendert_am,
278
                    "created_at"    => $group->erstellt_am,
279
                ] );
280
            }
281
        }
282
 
283
        private function migrateShippings()
284
        {
285
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Versandoptionen" );
286
            $start = 0;
287
            $sql = "SELECT
288
                    MAX(id) AS start
289
                FROM
290
                    shippings
291
            ";
292
            $row = DB::connection( "mysql" )->select( $sql );
293
            if ( $row[0]->start )
294
            {
295
                $start = $row[0]->start;
296
            }
297
            $sql = "SELECT
298
                    *
299
                FROM
300
                    versand
301
                WHERE
302
                    id>" . $start . "
303
            ";
304
            $methods = DB::connection( 'old' )->select( $sql );
305
            foreach ( $methods as $group )
306
            {
307
                Shipping::factory()->create( [
308
                    "id"                => $group->id,
309
                    "rank"              => $group->rang,
310
                    "shipping_group_id" => $group->versandgruppen_id,
311
                    "name"              => $group->name,
312
                    "info_shop"         => $group->info_shop,
313
                    "info_mail"         => $group->info_mail,
314
                    "info_internal"     => $group->info_intern,
315
                    "island_shipping"   => $group->inselversand,
316
                    "additions"         => $group->zusaetze,
317
                    "status"            => $group->status,
318
                    "price"             => $group->preis,
319
                    "calc_weight_from"  => $group->berechnung_kg_von,
320
                    "calc_weight_to"    => $group->berechnung_kg_bis,
321
                    "calc_price_from"   => $group->berechnung_preis_von,
322
                    "calc_price_to"     => $group->berechnung_preis_bis,
323
                    "conditions"        => $group->bedingungen,
324
                    "tax_rate"          => $group->steuersatz,
325
                    "created_by"        => $group->erstellt_von,
326
                    "updated_by"        => $group->geaendert_von,
327
                    "updated_at"        => $group->geaendert_am,
328
                    "created_at"        => $group->erstellt_am,
329
                ] );
330
            }
331
        }
332
 
333
        private function migrateActions()
334
        {
335
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Aktionen" );
336
            $start = 0;
337
            $sql = "SELECT
338
                    MAX(id) AS start
339
                FROM
340
                    actions
341
            ";
342
            $row = DB::connection( "mysql" )->select( $sql );
343
            if ( $row[0]->start )
344
            {
345
                $start = $row[0]->start;
346
            }
347
            $sql = "
348
                SELECT
349
                    *
350
                FROM
351
                    Aktionen
352
                WHERE
353
                    id>" . $start . "
354
            ";
355
            $actions = DB::connection( 'old' )->select( $sql );
356
            $progressbar = $this->output->createProgressBar( count( $actions ) );
357
            $progressbar->start();
358
            foreach ( $actions as $action )
359
            {
360
                $actionDB = new Action();
361
                $actionDB->id = $action->ID;
362
                $actionDB->headline = $action->headline;
363
                $actionDB->text = $action->text;
364
                $actionDB->rang = $action->rang;
365
                $actionDB->config = $action->config;
366
                $actionDB->category = $action->Kategorie;
367
                $actionDB->notes = $action->notizen;
368
                $actionDB->valid_from = $action->von;
369
                $actionDB->valid_to = $action->bis;
370
                $actionDB->created_by = "WebanOS Laravel Upgrade";
371
                $actionDB->updated_by = "WebanOS Laravel Upgrade";
372
                $actionDB->save();
433 lars 373
                $progressbar->advance();
374
            }
375
            $progressbar->finish();
376
            $progressbar->clear();
377
        }
378
 
260 lars 379
        private function migrateDirs()
380
        {
294 lars 381
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Kategorien" );
486 lars 382
            $start = 0;
383
            $sql = "SELECT
384
                    MAX(id) AS start
385
                FROM
386
                    directories
387
            ";
388
            $row = DB::connection( "mysql" )->select( $sql );
527 lars 389
            if ( $row[0]->start )
486 lars 390
            {
527 lars 391
                $start = $row[0]->start;
486 lars 392
            }
260 lars 393
            $sql = '
394
                SELECT
395
                    *
396
                FROM
397
                    directory
486 lars 398
                WHERE id>' . $start . '
260 lars 399
            ';
400
            $dirs = DB::connection( 'old' )->select( $sql );
301 lars 401
            $progressbar = $this->output->createProgressBar( count( $dirs ) );
402
            $progressbar->start();
260 lars 403
            foreach ( $dirs as $row )
404
            {
284 lars 405
                $ersteller = $row->erstellt_von;
406
                if ( !$ersteller )
407
                {
408
                    $ersteller = "WebanOS Laravel Upgrade";
409
                }
285 lars 410
                $bearbeiter = $row->letzte_Aenderung_von;
284 lars 411
                if ( !$bearbeiter )
412
                {
413
                    $bearbeiter = "WebanOS Laravel Upgrade";
414
                }
303 lars 415
                $dir = new Directory();
416
                $dir->id = $row->ID;
304 lars 417
                $dir->directory_id = $row->Father;
303 lars 418
                $dir->name = $row->Name;
432 lars 419
                $dir->articlemaster = $row->Artikelstamm;
304 lars 420
                $dir->status = $row->status;
303 lars 421
                $dir->kennung = $row->Kennung;
304 lars 422
                $dir->description = $row->Beschreibung;
423
                $dir->short_line_1 = $row->short_line_1;
303 lars 424
                $dir->url = $row->url;
425
                $dir->created_at = $row->erstellt_am;
426
                $dir->created_by = $ersteller;
427
                $dir->updated_by = $bearbeiter;
428
                $dir->updated_at = $row->letzte_Aenderung_am;
429
                $dir->save();
301 lars 430
                $progressbar->advance();
260 lars 431
            }
301 lars 432
            $progressbar->finish();
302 lars 433
            $progressbar->clear();
260 lars 434
        }
435
 
436
        private function migrateItems()
437
        {
294 lars 438
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel" );
486 lars 439
            $start = 0;
440
            $sql = "SELECT
441
                    MAX(id) AS start
442
                FROM
443
                    items
444
            ";
445
            $row = DB::connection( "mysql" )->select( $sql );
527 lars 446
            if ( $row[0]->start )
486 lars 447
            {
527 lars 448
                $start = $row[0]->start;
486 lars 449
            }
260 lars 450
            $sql = '
451
                SELECT
452
                    *
453
                FROM
454
                    artikel
455
                WHERE
491 lars 456
                    father >= -1
486 lars 457
                AND
490 lars 458
                    id>' . $start . '
260 lars 459
            ';
460
            $dirs = DB::connection( 'old' )->select( $sql );
301 lars 461
            $progressbar = $this->output->createProgressBar( count( $dirs ) );
462
            $progressbar->start();
260 lars 463
            foreach ( $dirs as $row )
464
            {
284 lars 465
                $item = new Item();
466
                $item->id = $row->ID;
467
                $item->directory_id = $row->Father;
468
                $item->name = $row->kurzbezeichnung;
469
                $item->status = $row->status;
470
                $item->kennung = $row->kennung;
471
                $item->description = $row->beschreibung;
472
                $item->created_at = $row->erstellt_am;
473
                $item->updated_at = $row->letzte_Aenderung_am;
283 lars 474
                $ersteller = $row->erstellt_von;
282 lars 475
                if ( !$ersteller )
281 lars 476
                {
282 lars 477
                    $ersteller = "WebanOS Laravel Upgrade";
281 lars 478
                }
287 lars 479
                $bearbeiter = $row->letzte_Aenderung_von;
282 lars 480
                if ( !$bearbeiter )
281 lars 481
                {
282 lars 482
                    $bearbeiter = "WebanOS Laravel Upgrade";
281 lars 483
                }
284 lars 484
                $item->created_by = $ersteller;
485
                $item->updated_by = $bearbeiter;
486
                $item->save();
301 lars 487
                $progressbar->advance();
260 lars 488
            }
301 lars 489
            $progressbar->finish();
302 lars 490
            $progressbar->clear();
294 lars 491
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Preise" );
494 lars 492
            $start = 0;
492 lars 493
            $sql = "SELECT
494
                    MAX(id) AS start
495
                FROM
496
                    prices
497
            ";
498
            $row = DB::connection( "mysql" )->select( $sql );
527 lars 499
            if ( $row[0]->start )
492 lars 500
            {
527 lars 501
                $start = $row[0]->start;
492 lars 502
            }
260 lars 503
            $sql = "
504
                SELECT
505
                    p.*
506
                FROM
507
                    preise p
508
                JOIN
509
                    artikel a
510
                ON
511
                    a.id=p.artikel_id
512
                WHERE
513
                    a.father >=-1
492 lars 514
                AND
515
                    p.id>" . $start . "
260 lars 516
            ";
517
            $prices = DB::connection( 'old' )->select( $sql );
301 lars 518
            $progressbar = $this->output->createProgressBar( count( $prices ) );
519
            $progressbar->start();
260 lars 520
            foreach ( $prices as $price )
521
            {
522
                Price::factory()->createQuietly( [
493 lars 523
                    "id"          => $price->id,
260 lars 524
                    "item_id"     => $price->artikel_id,
525
                    "preis_index" => $price->preis_index,
526
                    "preis"       => $price->preis,
527
                    "staffel"     => $price->staffel,
528
                    "created_at"  => $price->geaendert_am,
288 lars 529
                    "created_by"  => $price->geaendert_von,
530
                    "updated_by"  => $price->geaendert_von,
260 lars 531
                    "updated_at"  => $price->geaendert_am
532
                ] );
301 lars 533
                $progressbar->advance();
260 lars 534
            }
301 lars 535
            $progressbar->finish();
302 lars 536
            $progressbar->clear();
260 lars 537
        }
538
 
527 lars 539
        public function migrateMedia()
433 lars 540
        {
527 lars 541
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Medien" );
486 lars 542
            $start = 0;
433 lars 543
            $sql = "SELECT
527 lars 544
                    MAX(id) AS start
486 lars 545
                FROM
527 lars 546
                    media
486 lars 547
            ";
548
            $row = DB::connection( "mysql" )->select( $sql );
527 lars 549
            if ( $row[0]->start )
486 lars 550
            {
527 lars 551
                $start = $row[0]->start;
486 lars 552
            }
527 lars 553
            $sql = "
554
                SELECT
555
                    *
556
                FROM
557
                    medien
558
                WHERE
559
                    id>" . $start . "
560
            ";
561
            $media = DB::connection( 'old' )->select( $sql );
562
            $progressbar = $this->output->createProgressBar( count( $media ) );
563
            $progressbar->start();
564
            foreach ( $media as $medium )
565
            {
566
                $mediumDB = new Medium();
567
                $mediumDB->id = $medium->id;
568
                $mediumDB->name = $medium->name;
569
                $mediumDB->folder = $medium->folder;
570
                $mediumDB->medium_type_id = $medium->typ;
571
                $mediumDB->description = $medium->beschreibung;
572
                if ( $medium->erstellt_am )
573
                {
574
                    $mediumDB->created_at = date( "Y-m-d H:i:s", $medium->erstellt_am );
575
                }
576
                $ersteller = $medium->erstellt_von;
577
                if ( !$ersteller )
578
                {
579
                    $ersteller = "WebanOS Laravel Upgrade";
580
                }
581
                $bearbeiter = $medium->letzte_aenderung_von;
582
                if ( !$bearbeiter )
583
                {
584
                    $bearbeiter = "WebanOS Laravel Upgrade";
585
                }
586
                $mediumDB->created_by = $ersteller;
587
                $mediumDB->updated_by = $bearbeiter;
588
                $mediumDB->save();
589
                $progressbar->advance();
590
            }
591
            $progressbar->finish();
592
            $progressbar->clear();
593
        }
594
 
595
        public function migrateActionMedia()
596
        {
597
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Aktions-Bilder" );
598
            $start = 0;
486 lars 599
            $sql = "SELECT
527 lars 600
                    MAX(id) AS start
601
                FROM
602
                    action_media
603
            ";
604
            $row = DB::connection( "mysql" )->select( $sql );
605
            if ( $row[0]->start )
606
            {
607
                $start = $row[0]->start;
608
            }
609
            $sql = "SELECT
433 lars 610
                    *
611
                FROM
527 lars 612
                    aktionen_medien
486 lars 613
                WHERE
527 lars 614
                    id>" . $start . "
433 lars 615
            ";
616
            $media = DB::connection( 'old' )->select( $sql );
617
            $progressbar = $this->output->createProgressBar( count( $media ) );
618
            $progressbar->start();
619
            foreach ( $media as $row )
620
            {
527 lars 621
                $medium = new ActionMedium();
622
                $medium->action_id = $row->aktionen_id;
433 lars 623
                $medium->medium_id = $row->medien_id;
624
                $medium->rank = $row->rang;
625
                $medium->created_by = "WebanOS Laravel Upgrade";
626
                $medium->updated_by = "WebanOS Laravel Upgrade";
627
                $medium->save();
628
                $progressbar->advance();
629
            }
630
            $progressbar->finish();
631
            $progressbar->clear();
632
        }
633
 
527 lars 634
        public function migrateDirMedia()
260 lars 635
        {
527 lars 636
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Kategorie-Bilder" );
486 lars 637
            $start = 0;
638
            $sql = "SELECT
527 lars 639
                    MAX(medium_id) AS start
486 lars 640
                FROM
527 lars 641
                    directory_media
486 lars 642
            ";
643
            $row = DB::connection( "mysql" )->select( $sql );
527 lars 644
            if ( $row[0]->start )
486 lars 645
            {
527 lars 646
                $start = $row[0]->start;
486 lars 647
            }
527 lars 648
            $sql = "SELECT
260 lars 649
                    *
650
                FROM
527 lars 651
                    directory_medien
486 lars 652
                WHERE
527 lars 653
                    medien_id>" . $start . "
260 lars 654
            ";
527 lars 655
            $media = DB::connection( 'old' )->select( $sql );
656
            $progressbar = $this->output->createProgressBar( count( $media ) );
301 lars 657
            $progressbar->start();
527 lars 658
            foreach ( $media as $row )
260 lars 659
            {
527 lars 660
                $medium = new DirectoryMedium();
661
                $medium->directory_id = $row->directory_id;
662
                $medium->medium_id = $row->medien_id;
663
                $medium->rank = $row->rang;
664
                $medium->similar = $row->aehnlich;
665
                $medium->created_at = $row->zugeordnet_am;
666
                $medium->updated_at = $row->zugeordnet_am;
667
                $medium->created_by = "WebanOS Laravel Upgrade";
668
                $medium->updated_by = "WebanOS Laravel Upgrade";
669
                $medium->save();
301 lars 670
                $progressbar->advance();
260 lars 671
            }
301 lars 672
            $progressbar->finish();
302 lars 673
            $progressbar->clear();
260 lars 674
        }
272 lars 675
 
527 lars 676
        public function migrateItemMedia()
272 lars 677
        {
527 lars 678
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel-Bilder" );
486 lars 679
            $start = 0;
433 lars 680
            $sql = "SELECT
527 lars 681
                    MAX(medium_id) AS start
486 lars 682
                FROM
527 lars 683
                    item_media
486 lars 684
            ";
685
            $row = DB::connection( "mysql" )->select( $sql );
527 lars 686
            if ( $row[0]->start )
486 lars 687
            {
527 lars 688
                $start = $row[0]->start;
486 lars 689
            }
690
            $sql = "SELECT
272 lars 691
                    *
692
                FROM
527 lars 693
                    artikel_medien
486 lars 694
                WHERE
527 lars 695
                    medien_id>" . $start . "
272 lars 696
            ";
697
            $media = DB::connection( 'old' )->select( $sql );
301 lars 698
            $progressbar = $this->output->createProgressBar( count( $media ) );
699
            $progressbar->start();
433 lars 700
            foreach ( $media as $row )
272 lars 701
            {
527 lars 702
                $medium = new ItemMedium();
703
                $medium->item_id = $row->artikel_id;
433 lars 704
                $medium->medium_id = $row->medien_id;
705
                $medium->rank = $row->rang;
527 lars 706
                $medium->similar = $row->aehnlich;
707
                $medium->created_at = $row->zugeordnet_am;
708
                $medium->updated_at = $row->zugeordnet_am;
433 lars 709
                $medium->created_by = "WebanOS Laravel Upgrade";
710
                $medium->updated_by = "WebanOS Laravel Upgrade";
711
                $medium->save();
301 lars 712
                $progressbar->advance();
272 lars 713
            }
301 lars 714
            $progressbar->finish();
302 lars 715
            $progressbar->clear();
272 lars 716
        }
304 lars 717
 
718
        private function migrateUsers()
719
        {
720
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere User" );
433 lars 721
            $start = 0;
722
            $sql = "SELECT
723
                    MAX(id) AS start
724
                FROM
434 lars 725
                    users
433 lars 726
            ";
727
            $row = DB::connection( "order" )->select( $sql );
527 lars 728
            if ( $row[0]->start )
433 lars 729
            {
527 lars 730
                $start = $row[0]->start;
433 lars 731
            }
732
            $sql = "SELECT
733
                    *
734
                FROM
434 lars 735
                    Logins
433 lars 736
                WHERE
737
                    id>" . $start . "
738
            ";
437 lars 739
            $users = DB::connection( "oldOrder" )->select( $sql );
740
            $progressbar = $this->output->createProgressBar( count( $users ) );
448 lars 741
            $progressbar->start();
437 lars 742
            foreach ( $users as $oldUser )
433 lars 743
            {
443 lars 744
                $ersteller = $oldUser->erstellt_von;
442 lars 745
                if ( !$ersteller )
746
                {
747
                    $ersteller = "WebanOS Laravel Upgrade";
748
                }
443 lars 749
                $bearbeiter = $oldUser->letzte_Aenderung_von;
442 lars 750
                if ( !$bearbeiter )
751
                {
752
                    $bearbeiter = "WebanOS Laravel Upgrade";
753
                }
437 lars 754
                $user = new User();
438 lars 755
                $user->id = $oldUser->ID;
437 lars 756
                $user->email = $oldUser->E_Mail;
757
                $user->created_at = $oldUser->erstellt_am;
442 lars 758
                $user->created_by = $ersteller;
759
                $user->updated_by = $bearbeiter;
437 lars 760
                $user->updated_at = $oldUser->letzte_Aenderung_am;
761
                $user->save();
441 lars 762
                $progressbar->advance();
433 lars 763
            }
441 lars 764
            $progressbar->finish();
765
            $progressbar->clear();
304 lars 766
        }
767
 
445 lars 768
        private function migrateAddresses( bool $isOrder = false )
304 lars 769
        {
445 lars 770
            $typ = "Adressen";
771
            $table = "addresses";
772
            $oldTable = "adresse";
773
            if ( $isOrder === true )
774
            {
775
                $typ = "Bestelladressen";
776
                $table = "order_addresses";
777
                $oldTable = "bestelladresse";
778
            }
779
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere " . $typ );
780
            $start = 0;
781
            $sql = "SELECT
782
                    MAX(id) AS start
783
                FROM
784
                    " . $table . "
785
            ";
786
            $row = DB::connection( "order" )->select( $sql );
527 lars 787
            if ( $row[0]->start )
445 lars 788
            {
527 lars 789
                $start = $row[0]->start;
445 lars 790
            }
791
            $sql = "SELECT
792
                    *
793
                FROM
794
                    " . $oldTable . "
795
                WHERE
796
                    id>" . $start . "
797
            ";
798
            $addresses = DB::connection( "oldOrder" )->select( $sql );
799
            $progressbar = $this->output->createProgressBar( count( $addresses ) );
447 lars 800
            $progressbar->start();
445 lars 801
            foreach ( $addresses as $oldAddress )
802
            {
803
                $ersteller = "WebanOS Laravel Upgrade";
804
                $bearbeiter = "WebanOS Laravel Upgrade";
458 lars 805
                if ( $isOrder === true )
452 lars 806
                {
807
                    $address = new OrderAddress();
808
                }
809
                else
810
                {
811
                    $address = new Address();
812
                }
445 lars 813
                $address->id = $oldAddress->id;
814
                $address->user_id = $oldAddress->logins_id;
815
                $address->salutation = $oldAddress->anrede;
816
                $address->pro_title = $oldAddress->pro_title;
817
                $address->name = $oldAddress->vorname;
818
                $address->lastname = $oldAddress->nachname;
819
                $address->company = $oldAddress->firma;
820
                $address->company2 = $oldAddress->firma2;
821
                $address->street = $oldAddress->strasse1;
822
                $address->houseno = $oldAddress->str_nr1;
823
                $address->street2 = $oldAddress->strasse2;
824
                $address->zip = $oldAddress->plz;
825
                $address->city = $oldAddress->ort;
826
                $address->country_id = $oldAddress->land;
827
                $address->state_id = $oldAddress->state;
828
                $address->phone = $oldAddress->telefon;
829
                $address->fax = $oldAddress->fax;
830
                $address->email = $oldAddress->email;
831
                $address->nettocalculation = $oldAddress->nettoberechnung;
450 lars 832
                $address->hr_nr = $oldAddress->hr_nr;
445 lars 833
                $address->vat_id = $oldAddress->vat_id;
834
                $address->vat_free = $oldAddress->mwst_befreiung;
835
                $address->legal_form = $oldAddress->legal_form;
836
                $address->comment = $oldAddress->comment;
451 lars 837
                $address->created_at = $oldAddress->letzte_aenderung_am;
445 lars 838
                $address->created_by = $ersteller;
839
                $address->updated_by = $bearbeiter;
840
                $address->updated_at = $oldAddress->letzte_aenderung_am;
841
                $address->save();
842
                $progressbar->advance();
843
            }
844
            $progressbar->finish();
845
            $progressbar->clear();
304 lars 846
        }
847
 
848
        private function migrateOrderAddresses()
849
        {
445 lars 850
            $this->migrateAddresses( true );
304 lars 851
        }
852
 
853
        private function migrateOrders()
854
        {
855
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Bestellungen" );
454 lars 856
            $start = 0;
857
            $sql = "SELECT
858
                    MAX(id) AS start
859
                FROM
860
                    orders
861
            ";
862
            $row = DB::connection( "order" )->select( $sql );
527 lars 863
            if ( $row[0]->start )
454 lars 864
            {
527 lars 865
                $start = $row[0]->start;
454 lars 866
            }
867
            $sql = "SELECT
868
                    *
869
                FROM
870
                    Bestellung
871
                WHERE
872
                    id>" . $start . "
873
            ";
874
            $orders = DB::connection( "oldOrder" )->select( $sql );
875
            $progressbar = $this->output->createProgressBar( count( $orders ) );
876
            $progressbar->start();
877
            foreach ( $orders as $oldOrder )
878
            {
501 lars 879
                $paidAt = $oldOrder->bezahlt_am;
880
                if ( $paidAt == "0000-00-00 00:00:00" )
881
                {
502 lars 882
                    $paidAt = null;
501 lars 883
                }
454 lars 884
                $order = new Order();
885
                $order->id = $oldOrder->ID;
481 lars 886
                $order->shop_id = $oldOrder->shops_ID;
459 lars 887
                $order->order_type_id = $oldOrder->bestellart_id;
458 lars 888
                $order->payment_method_id = $oldOrder->zahlart_id;
889
                $order->user_id = $oldOrder->Login;
890
                $order->ship_addr_id = $oldOrder->ship_addr_id;
891
                $order->bill_addr_id = $oldOrder->bill_addr_id;
892
                $order->paid = $oldOrder->bezahlt;
501 lars 893
                $order->paid_at = $paidAt;
458 lars 894
                $order->paid_comment = $oldOrder->bezahlt_bemerkung;
895
                $order->foreign_id = $oldOrder->fremd_id;
896
                $order->foreign_payment_id = $oldOrder->bezahlt_fremdid;
897
                $order->status = $oldOrder->status;
898
                $order->total_amount_buffer = $oldOrder->gesamtsumme_buffer;
899
                $order->item_status_buffer = $oldOrder->artikelstatus_buffer;
900
                $order->invoice_status_buffer = $oldOrder->rechnungsstatus_buffer;
504 lars 901
                $order->delivery_note_status_buffer = $oldOrder->lieferscheinStatus_buffer;
458 lars 902
                $order->tax = $oldOrder->tax;
903
                $order->comment = $oldOrder->Bemerkung;
904
                $order->external_comment = $oldOrder->Bemerkung_extern;
905
                $order->note = $oldOrder->notiz;
460 lars 906
                $order->additional_info = $oldOrder->zusatzInfo;
458 lars 907
                $order->shipping_group_id = $oldOrder->versandgruppen_id;
908
                $order->kk_info = $oldOrder->kk_info;
909
                $order->created_by = $oldOrder->erstellt_von;
910
                $order->updated_by = $oldOrder->letzte_Aenderung_von;
911
                $order->updated_at = $oldOrder->letzte_Aenderung_am;
912
                $order->created_at = $oldOrder->erstellt_am;
454 lars 913
                $order->save();
914
                $progressbar->advance();
915
            }
916
            $progressbar->finish();
917
            $progressbar->clear();
304 lars 918
        }
919
 
920
        private function migrateOrderItems()
921
        {
922
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Artikel in Besetllungen" );
454 lars 923
            $start = 0;
924
            $sql = "SELECT
925
                    MAX(id) AS start
926
                FROM
927
                    order_items
928
            ";
929
            $row = DB::connection( "order" )->select( $sql );
527 lars 930
            if ( $row[0]->start )
454 lars 931
            {
527 lars 932
                $start = $row[0]->start;
454 lars 933
            }
934
            $sql = "SELECT
935
                    *
936
                FROM
937
                    artikel_to_Bestellung
938
                WHERE
939
                    id>" . $start . "
940
            ";
941
            $orderItems = DB::connection( "oldOrder" )->select( $sql );
942
            $progressbar = $this->output->createProgressBar( count( $orderItems ) );
943
            $progressbar->start();
944
            foreach ( $orderItems as $oldOrderItem )
945
            {
946
                $progressbar->advance();
947
            }
948
            $progressbar->finish();
949
            $progressbar->clear();
304 lars 950
        }
535 lars 951
 
952
        private function migrateSalesPortalTypes()
953
        {
954
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Verkaufsportalarten" );
955
            $start = 0;
956
            $sql = "SELECT
957
                    MAX(id) start
958
                FROM
959
                    sales_portal_types
960
            ";
961
            $row = DB::connection( 'cms' )->select( $sql );
962
            if ( $row[0]->start )
963
            {
964
                $start = $row[0]->start;
965
            }
966
            $sql = "SELECT
967
                    *
968
                FROM
969
                    vportale_art
970
                WHERE
971
                    id>" . $start . "
972
            ";
973
            $portals = DB::connection( 'cms' )->select( $sql );
974
            foreach ( $portals as $portal )
975
            {
976
                SalesPortalType::factory()->create( [
977
                    "id"                   => $portal->id,
978
                    "type"                 => $portal->art,
979
                    "name"                 => $portal->bezeichnung,
980
                    "max_categories"       => $portal->max_categories,
981
                    "min_depth_category"   => $portal->min_depth_category,
982
                    "only_end_category"    => $portal->only_end_category,
983
                    "script"               => $portal->skript,
984
                    "script_folder"        => $portal->script_folder,
985
                    "commit_possibilities" => $portal->commit_posibilities,
986
                    "revokeable"           => $portal->stornierbar,
987
                ] );
988
            }
989
        }
990
 
991
        private function migrateSalesPortals()
992
        {
993
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Verkaufsportale" );
994
            $start = 0;
995
            $sql = "SELECT
996
                    MAX(id) start
997
                FROM
998
                    sales_portals
999
            ";
1000
            $row = DB::connection( 'mysql' )->select( $sql );
1001
            if ( $row[0]->start )
1002
            {
1003
                $start = $row[0]->start;
1004
            }
1005
            $sql = "SELECT
1006
                    *
1007
                FROM
1008
                    vportale
1009
                WHERE
1010
                    id>" . $start . "
1011
            ";
1012
            $portals = DB::connection( 'old' )->select( $sql );
1013
            foreach ( $portals as $portal )
538 lars 1014
            {
1015
                $max_preis = 0;
1016
                $anrede = 1;
1017
                if ( isset( $portal->anrede ) )
1018
                {
1019
                    $anrede = $portal->anrede;
1020
                }
1021
                if ( isset( $portal->max_preis ) )
1022
                {
1023
                    $max_preis = $portal->max_preis;
1024
                }
535 lars 1025
                SalesPortal::factory()->create( [
538 lars 1026
                    "id"                   => $portal->id,
1027
                    "name"                 => $portal->name,
1028
                    "template"             => $portal->template,
1029
                    "sales_portal_type_id" => $portal->art,
1030
                    "sku_prefix"           => $portal->sku_prefix,
1031
                    "price_number"         => $portal->preis_nummer,
1032
                    "base_price"           => $portal->basis_preis,
1033
                    "min_price"            => $portal->min_preis,
1034
                    "max_price"            => $max_preis,
1035
                    "digits"               => $portal->runden,
1036
                    "standard_amount"      => $portal->standard_menge,
1037
                    "item_url"             => $portal->artikel_url,
1038
                    "currency"             => $portal->currency,
1039
                    "shipping_state"       => $portal->lieferstatus,
1040
                    "delivery"             => $portal->delivery,
1041
                    "shipping_cost"        => $portal->shipping_cost,
1042
                    "afterbuy"             => $portal->afterbuy,
1043
                    "salutation"           => $anrede,
1044
                    "commit_fields"        => $portal->commit_fields,
1045
                    "zip"                  => $portal->plz,
1046
                    "location"             => $portal->location,
1047
                    "created_by"           => $portal->erstellt_von,
1048
                    "updated_by"           => $portal->geaendert_von,
1049
                    "created_at"           => $portal->erstellt_am,
1050
                    "updated_at"           => $portal->geaendert_am,
535 lars 1051
                ] );
1052
            }
1053
        }
538 lars 1054
 
1055
        private function migrateSalesPortalItems()
1056
        {
1057
            $this->info( date( "d.m.Y H:i:s" ) . ": Migriere Verkaufsportalartikel" );
1058
            $start = 0;
1059
            $sql = "SELECT
1060
                    MAX(id) start
1061
                FROM
1062
                    sales_portal_items
1063
            ";
1064
            $row = DB::connection( 'mysql' )->select( $sql );
1065
            if ( $row[0]->start )
1066
            {
1067
                $start = $row[0]->start;
1068
            }
1069
            $sql = "SELECT
1070
                    *
1071
                FROM
1072
                    artikel_vportale
1073
                WHERE
1074
                    id>" . $start . "
1075
            ";
1076
            $items = DB::connection( 'old' )->select( $sql );
1077
            foreach ( $items as $item )
1078
            {
1079
                SalesPortalItem::factory()->create( [
1080
                    "id"                              => $item->id,
1081
                    "sales_portal_id"                 => $item->vportale_id,
1082
                    "item_id"                         => $item->artikel_id,
1083
                    "sales_portal_template_id"        => $item->template_id,
1084
                    "sku"                             => $item->sku,
1085
                    "additions"                       => $item->zusaetze,
1086
                    "foreign_item_id"                 => $item->fremdartikel_id,
1087
                    "name"                            => $item->name,
1088
                    "autochange_name"                 => $item->autochange_name,
1089
                    "name_bold"                       => $item->name_fett,
1090
                    "highlight"                       => $item->highlight,
1091
                    "sub_name"                        => $item->sub_name,
1092
                    "manufacturer"                    => $item->hersteller,
1093
                    "autochange_manufacturer"         => $item->autochange_hersteller,
1094
                    "ean"                             => $item->ean,
1095
                    "autochange_ean"                  => $item->autochange_ean,
1096
                    "mpn"                             => $item->mpn,
1097
                    "autochange_mpn"                  => $item->autochange_mpn,
1098
                    "description"                     => $item->beschreibung,
1099
                    "autochange_description"          => $item->autochange_beschreibung,
541 lars 1100
                    "description_addition"            => $item->beschreibung_zusatz,
542 lars 1101
                    "autochange_description_addition" => $item->autochange_beschreibung_zusatz,
538 lars 1102
                    "price"                           => $item->preis,
1103
                    "autochange_price"                => $item->autochange_preis,
543 lars 1104
                    "currency"                        => $item->currency,
538 lars 1105
                    "tax"                             => $item->tax,
1106
                    "price_type"                      => $item->preisart,
1107
                    "amount"                          => $item->menge,
1108
                    "carrier"                         => $item->carrier,
1109
                    "carrier_cost"                    => $item->carrier_cost,
1110
                    "start"                           => $item->start,
1111
                    "duration"                        => $item->dauer,
1112
                    "category_1"                      => $item->kategorie_1,
1113
                    "category_2"                      => $item->kategorie_2,
1114
                    "category_3"                      => $item->kategorie_3,
1115
                    "bp1"                             => $item->bp1,
1116
                    "bp2"                             => $item->bp2,
1117
                    "bp3"                             => $item->bp3,
1118
                    "bp4"                             => $item->bp4,
1119
                    "bp5"                             => $item->bp5,
1120
                    "platin_search_1"                 => $item->platin_search_1,
1121
                    "platin_search_2"                 => $item->platin_search_2,
1122
                    "platin_search_3"                 => $item->platin_search_3,
1123
                    "platin_search_4"                 => $item->platin_search_4,
1124
                    "platin_search_5"                 => $item->platin_search_5,
1125
                    "search_1"                        => $item->search_1,
1126
                    "search_2"                        => $item->search_2,
1127
                    "search_3"                        => $item->search_3,
1128
                    "search_4"                        => $item->search_4,
1129
                    "search_5"                        => $item->search_5,
1130
                    "status"                          => $item->status,
1131
                    "online_status"                   => $item->online_status,
1132
                    "delivery_time"                   => $item->lieferzeit,
1133
                    "pickup"                          => $item->pickup,
1134
                    "last_feedback"                   => $item->last_feedback,
1135
                    "created_by"                      => $item->erstellt_von,
1136
                    "updated_by"                      => $item->geaendert_von,
1137
                    "created_at"                      => $item->erstellt_am,
1138
                    "updated_at"                      => $item->geaendert_am,
1139
                ] );
1140
            }
1141
        }
233 lars 1142
    }