|
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 |
- |
|
|