|
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 8577-8582
if ( CheckVersion($DBversion) ) {
Link Here
|
| 8577 |
SetVersion ($DBversion); |
8578 |
SetVersion ($DBversion); |
| 8578 |
} |
8579 |
} |
| 8579 |
|
8580 |
|
|
|
8581 |
$DBversion = "3.17.00.XXX"; |
| 8582 |
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { |
| 8583 |
$dbh->do(" |
| 8584 |
ALTER TABLE serial |
| 8585 |
ADD serialseq_x VARCHAR( 100 ) NULL DEFAULT NULL AFTER serialseq, |
| 8586 |
ADD serialseq_y VARCHAR( 100 ) NULL DEFAULT NULL AFTER serialseq_x, |
| 8587 |
ADD serialseq_z VARCHAR( 100 ) NULL DEFAULT NULL AFTER serialseq_y |
| 8588 |
"); |
| 8589 |
|
| 8590 |
my $schema = Koha::Database->new()->schema(); |
| 8591 |
my @subscriptions = $schema->resultset('Subscription')->all(); |
| 8592 |
|
| 8593 |
foreach my $subscription (@subscriptions) { |
| 8594 |
my $number_pattern = $subscription->numberpattern(); |
| 8595 |
|
| 8596 |
my @splits = split( /\{[XYZ]\}/, $number_pattern->numberingmethod() ); |
| 8597 |
|
| 8598 |
my @serials = |
| 8599 |
$schema->resultset('Serial') |
| 8600 |
->search( { subscriptionid => $subscription->subscriptionid() } ); |
| 8601 |
|
| 8602 |
foreach my $serial (@serials) { |
| 8603 |
my $serialseq = $serial->serialseq(); |
| 8604 |
my ( $x, $y, $z ); |
| 8605 |
|
| 8606 |
## We cannot split on multiple values at once, |
| 8607 |
## so let's replace each of those values with __SPLIT__ |
| 8608 |
if (@splits) { |
| 8609 |
map( $serialseq =~ s/$_/__SPLIT__/, @splits ); |
| 8610 |
( undef, $x, $y, $z ) = split( /__SPLIT__/, $serialseq ); |
| 8611 |
} |
| 8612 |
else |
| 8613 |
{ ## Nothing to split on means the only thing in serialseq is {X} |
| 8614 |
$x = $serialseq; |
| 8615 |
} |
| 8616 |
|
| 8617 |
$serial->update( |
| 8618 |
{ |
| 8619 |
serialseq_x => $x, |
| 8620 |
serialseq_y => $y, |
| 8621 |
serialseq_z => $z, |
| 8622 |
} |
| 8623 |
); |
| 8624 |
} |
| 8625 |
} |
| 8626 |
|
| 8627 |
print "Upgrade to $DBversion done ( Bug 8956 - Split serials enumeration data into separate fields )\n"; |
| 8628 |
SetVersion($DBversion); |
| 8629 |
} |
| 8630 |
|
| 8580 |
=head1 FUNCTIONS |
8631 |
=head1 FUNCTIONS |
| 8581 |
|
8632 |
|
| 8582 |
=head2 TableExists($table) |
8633 |
=head2 TableExists($table) |
| 8583 |
- |
|
|