View | Details | Raw Unified | Return to bug 12375
Collapse All | Expand All

(-)a/installer/data/mysql/updatedatabase.pl (-1 / +51 lines)
Lines 37-42 use Getopt::Long; Link Here
37
use C4::Context;
37
use C4::Context;
38
use C4::Installer;
38
use C4::Installer;
39
use C4::Dates;
39
use C4::Dates;
40
use Koha::Database;
40
41
41
use MARC::Record;
42
use MARC::Record;
42
use MARC::File::XML ( BinaryEncoding => 'utf8' );
43
use MARC::File::XML ( BinaryEncoding => 'utf8' );
Lines 8551-8556 if (CheckVersion($DBversion)) { Link Here
8551
    SetVersion($DBversion);
8552
    SetVersion($DBversion);
8552
}
8553
}
8553
8554
8555
$DBversion = "3.17.00.XXX";
8556
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
8557
   $dbh->do("
8558
       ALTER TABLE serial
8559
        ADD serialseq_x VARCHAR( 100 ) NULL DEFAULT NULL AFTER serialseq,
8560
        ADD serialseq_y VARCHAR( 100 ) NULL DEFAULT NULL AFTER serialseq_x,
8561
        ADD serialseq_z VARCHAR( 100 ) NULL DEFAULT NULL AFTER serialseq_y
8562
   ");
8563
8564
    my $schema        = Koha::Database->new()->schema();
8565
    my @subscriptions = $schema->resultset('Subscription')->all();
8566
8567
    foreach my $subscription (@subscriptions) {
8568
        my $number_pattern = $subscription->numberpattern();
8569
8570
        my @splits = split( /\{[XYZ]\}/, $number_pattern->numberingmethod() );
8571
8572
        my @serials =
8573
          $schema->resultset('Serial')
8574
          ->search( { subscriptionid => $subscription->subscriptionid() } );
8575
8576
        foreach my $serial (@serials) {
8577
            my $serialseq = $serial->serialseq();
8578
            my ( $x, $y, $z );
8579
8580
            ## We cannot split on multiple values at once,
8581
            ## so let's replace each of those values with __SPLIT__
8582
            if (@splits) {
8583
                map( $serialseq =~ s/$_/__SPLIT__/, @splits );
8584
                ( undef, $x, $y, $z ) = split( /__SPLIT__/, $serialseq );
8585
            }
8586
            else
8587
            {    ## Nothing to split on means the only thing in serialseq is {X}
8588
                $x = $serialseq;
8589
            }
8590
8591
            $serial->update(
8592
                {
8593
                    serialseq_x => $x,
8594
                    serialseq_y => $y,
8595
                    serialseq_z => $z,
8596
                }
8597
            );
8598
        }
8599
    }
8600
8601
    print "Upgrade to $DBversion done ( Bug 8956 - Split serials enumeration data into separate fields )\n";
8602
    SetVersion($DBversion);
8603
}
8604
8554
=head1 FUNCTIONS
8605
=head1 FUNCTIONS
8555
8606
8556
=head2 TableExists($table)
8607
=head2 TableExists($table)
8557
- 

Return to bug 12375