Subversion-Projekte lars-tiefland.laravel_shop

Revision

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