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 9653-9658 if(CheckVersion($DBversion)) { Link Here
9653
    });
9654
    });
9654
9655
9655
    print "Upgrade to $DBversion done (Bug 13379 - Modify authorised_values.category to varchar(32))\n";
9656
    print "Upgrade to $DBversion done (Bug 13379 - Modify authorised_values.category to varchar(32))\n";
9657
    SetVersion ($DBversion);
9658
}
9659
9660
$DBversion = "3.19.00.XXX";
9661
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
9662
   $dbh->do("
9663
       ALTER TABLE serial
9664
        ADD serialseq_x VARCHAR( 100 ) NULL DEFAULT NULL AFTER serialseq,
9665
        ADD serialseq_y VARCHAR( 100 ) NULL DEFAULT NULL AFTER serialseq_x,
9666
        ADD serialseq_z VARCHAR( 100 ) NULL DEFAULT NULL AFTER serialseq_y
9667
   ");
9668
9669
    my $schema        = Koha::Database->new()->schema();
9670
    my @subscriptions = $schema->resultset('Subscription')->all();
9671
9672
    foreach my $subscription (@subscriptions) {
9673
        my $number_pattern = $subscription->numberpattern();
9674
9675
        my @splits = split( /\{[XYZ]\}/, $number_pattern->numberingmethod() );
9676
9677
        my @serials =
9678
          $schema->resultset('Serial')
9679
          ->search( { subscriptionid => $subscription->subscriptionid() } );
9680
9681
        foreach my $serial (@serials) {
9682
            my $serialseq = $serial->serialseq();
9683
            my ( $x, $y, $z );
9684
9685
            ## We cannot split on multiple values at once,
9686
            ## so let's replace each of those values with __SPLIT__
9687
            if (@splits) {
9688
                map( $serialseq =~ s/$_/__SPLIT__/, @splits );
9689
                ( undef, $x, $y, $z ) = split( /__SPLIT__/, $serialseq );
9690
            }
9691
            else
9692
            {    ## Nothing to split on means the only thing in serialseq is {X}
9693
                $x = $serialseq;
9694
            }
9695
9696
            $serial->update(
9697
                {
9698
                    serialseq_x => $x,
9699
                    serialseq_y => $y,
9700
                    serialseq_z => $z,
9701
                }
9702
            );
9703
        }
9704
    }
9705
9706
    print "Upgrade to $DBversion done ( Bug 8956 - Split serials enumeration data into separate fields )\n";
9656
    SetVersion($DBversion);
9707
    SetVersion($DBversion);
9657
}
9708
}
9658
9709
9659
- 

Return to bug 12375