Bugzilla – Attachment 172298 Details for
Bug 38061
Serials collection table improvements
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 38061: Tidy serials-collection.pl
Bug-38061-Tidy-serials-collectionpl.patch (text/plain), 17.82 KB, created by
Matt Blenkinsop
on 2024-10-02 11:32:42 UTC
(
hide
)
Description:
Bug 38061: Tidy serials-collection.pl
Filename:
MIME Type:
Creator:
Matt Blenkinsop
Created:
2024-10-02 11:32:42 UTC
Size:
17.82 KB
patch
obsolete
>From 3dd8516cb3501ef0522e8e036a1c015c67d88390 Mon Sep 17 00:00:00 2001 >From: Matt Blenkinsop <matt.blenkinsop@ptfs-europe.com> >Date: Wed, 2 Oct 2024 11:00:31 +0000 >Subject: [PATCH] Bug 38061: Tidy serials-collection.pl > >--- > serials/serials-collection.pl | 279 ++++++++++++++++++---------------- > 1 file changed, 146 insertions(+), 133 deletions(-) > >diff --git a/serials/serials-collection.pl b/serials/serials-collection.pl >index fa73e2765d..853a02aa91 100755 >--- a/serials/serials-collection.pl >+++ b/serials/serials-collection.pl >@@ -18,11 +18,11 @@ > # You should have received a copy of the GNU General Public License > # along with Koha; if not, see <http://www.gnu.org/licenses>. > >- > use Modern::Perl; >-use CGI qw ( -utf8 ); >+use CGI qw ( -utf8 ); > use C4::Auth qw( get_template_and_user ); >-use C4::Serials qw( ModSerialStatus GetSubscription GetNextExpected GetNextSeq GetNextDate NewIssue HasSubscriptionExpired abouttoexpire check_routing GetFullSubscription PrepareSerialsData CountSubscriptionFromBiblionumber GetSubscriptionsFromBiblionumber GetFullSubscriptionsFromBiblionumber ); >+use C4::Serials >+ qw( ModSerialStatus GetSubscription GetNextExpected GetNextSeq GetNextDate NewIssue HasSubscriptionExpired abouttoexpire check_routing GetFullSubscription PrepareSerialsData CountSubscriptionFromBiblionumber GetSubscriptionsFromBiblionumber GetFullSubscriptionsFromBiblionumber ); > use C4::Output qw( output_and_exit output_html_with_http_headers ); > use C4::Context; > use Koha::Serial::Items; >@@ -31,187 +31,200 @@ use Koha::DateUtils qw( dt_from_string ); > > use List::MoreUtils qw( uniq ); > >- >-my $query = CGI->new; >-my $op = $query->param('op') || q{}; >-my $nbissues=$query->param('nbissues'); >+my $query = CGI->new; >+my $op = $query->param('op') || q{}; >+my $nbissues = $query->param('nbissues'); > my $date_received_today = $query->param('date_received_today') || 0; >-my $dbh = C4::Context->dbh; >- >-my ($template, $loggedinuser, $cookie) >- = get_template_and_user({template_name => "serials/serials-collection.tt", >- query => $query, >- type => "intranet", >- flagsrequired => {serials => '*'}, >- }); >-my $biblionumber = $query->param('biblionumber'); >+my $dbh = C4::Context->dbh; >+ >+my ( $template, $loggedinuser, $cookie ) = get_template_and_user( >+ { >+ template_name => "serials/serials-collection.tt", >+ query => $query, >+ type => "intranet", >+ flagsrequired => { serials => '*' }, >+ } >+); >+my $biblionumber = $query->param('biblionumber'); > my @subscriptionid = $query->multi_param('subscriptionid'); >-my $skip_issues = $query->param('skip_issues') || 0; >-my $count_forward = $skip_issues + 1; >+my $skip_issues = $query->param('skip_issues') || 0; >+my $count_forward = $skip_issues + 1; > >-@subscriptionid= uniq @subscriptionid; >-@subscriptionid= sort @subscriptionid; >+@subscriptionid = uniq @subscriptionid; >+@subscriptionid = sort @subscriptionid; > my $subscriptiondescs; > my $subscriptions; > >-if($op eq 'cud-gennext' && @subscriptionid){ >+if ( $op eq 'cud-gennext' && @subscriptionid ) { > my $subscriptionid = $subscriptionid[0]; >- my $sth = $dbh->prepare(" >+ my $sth = $dbh->prepare( " > SELECT publisheddate, publisheddatetext, serialid, serialseq, > planneddate, notes, routingnotes > FROM serial > WHERE status = 1 AND subscriptionid = ? >- "); >- my $status = defined( $nbissues ) ? 2 : 3; >+ " ); >+ my $status = defined($nbissues) ? 2 : 3; > $nbissues ||= 1; >- for ( my $i = 0; $i < $nbissues; $i++ ){ >+ for ( my $i = 0 ; $i < $nbissues ; $i++ ) { > $sth->execute($subscriptionid); >+ > # modify actual expected issue, to generate the next > if ( my $issue = $sth->fetchrow_hashref ) { > my $planneddate = $date_received_today ? dt_from_string : $issue->{planneddate}; >- ModSerialStatus( $issue->{serialid}, $issue->{serialseq}, >- $planneddate, $issue->{publisheddate}, >- $issue->{publisheddatetext}, $status, "", $count_forward ); >+ ModSerialStatus( >+ $issue->{serialid}, $issue->{serialseq}, >+ $planneddate, $issue->{publisheddate}, >+ $issue->{publisheddatetext}, $status, "", $count_forward >+ ); > } else { > require C4::Serials::Numberpattern; > my $subscription = GetSubscription($subscriptionid); >- my $pattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern($subscription->{numberpattern}); >- my $frequency = C4::Serials::Frequency::GetSubscriptionFrequency($subscription->{periodicity}); >- my $expected = GetNextExpected($subscriptionid); >+ my $pattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern( $subscription->{numberpattern} ); >+ my $frequency = C4::Serials::Frequency::GetSubscriptionFrequency( $subscription->{periodicity} ); >+ my $expected = GetNextExpected($subscriptionid); > my ( >- $newserialseq, $newlastvalue1, $newlastvalue2, $newlastvalue3, >- $newinnerloop1, $newinnerloop2, $newinnerloop3 >- ) = GetNextSeq($subscription, $pattern, $frequency, $expected->{publisheddate}, $count_forward); >- >- ## We generate the next publication date >- my $nextpublisheddate = GetNextDate($subscription, $expected->{publisheddate}, $frequency, 1); >- my $planneddate = $date_received_today ? dt_from_string : $nextpublisheddate; >- ## Creating the new issue >- NewIssue( $newserialseq, $subscriptionid, $subscription->{'biblionumber'}, >- 1, $planneddate, $nextpublisheddate, undef, >- $issue->{notes}, $issue->{routingnotes} ); >- >- ## Updating the subscription seq status >- my $squery = "UPDATE subscription SET lastvalue1=?, lastvalue2=?, lastvalue3=?, innerloop1=?, innerloop2=?, innerloop3=? >+ $newserialseq, $newlastvalue1, $newlastvalue2, $newlastvalue3, >+ $newinnerloop1, $newinnerloop2, $newinnerloop3 >+ ) = GetNextSeq( $subscription, $pattern, $frequency, $expected->{publisheddate}, $count_forward ); >+ >+ ## We generate the next publication date >+ my $nextpublisheddate = GetNextDate( $subscription, $expected->{publisheddate}, $frequency, 1 ); >+ my $planneddate = $date_received_today ? dt_from_string : $nextpublisheddate; >+ ## Creating the new issue >+ NewIssue( >+ $newserialseq, $subscriptionid, $subscription->{'biblionumber'}, >+ 1, $planneddate, $nextpublisheddate, undef, >+ $issue->{notes}, $issue->{routingnotes} >+ ); >+ >+ ## Updating the subscription seq status >+ my $squery = >+ "UPDATE subscription SET lastvalue1=?, lastvalue2=?, lastvalue3=?, innerloop1=?, innerloop2=?, innerloop3=? > WHERE subscriptionid = ?"; >- my $seqsth = $dbh->prepare($squery); >- $seqsth->execute( >- $newlastvalue1, $newlastvalue2, $newlastvalue3, $newinnerloop1, >- $newinnerloop2, $newinnerloop3, $subscriptionid >- ); >+ my $seqsth = $dbh->prepare($squery); >+ $seqsth->execute( >+ $newlastvalue1, $newlastvalue2, $newlastvalue3, $newinnerloop1, >+ $newinnerloop2, $newinnerloop3, $subscriptionid >+ ); > > } > last if $nbissues == 1; > last if HasSubscriptionExpired($subscriptionid) > 0; > } >- print $query->redirect('/cgi-bin/koha/serials/serials-collection.pl?subscriptionid='.$subscriptionid); >+ print $query->redirect( '/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=' . $subscriptionid ); > exit; > } > >-my $countitems = 0; >-my @serialsid = $query->multi_param('serialid'); >+my $countitems = 0; >+my @serialsid = $query->multi_param('serialid'); > my $subscriptionid = $subscriptionid[0]; > >-if($op eq 'delete_confirm'){ >- foreach my $serialid (@serialsid){ >- $countitems += Koha::Serial::Items->search({serialid => $serialid})->count(); >+if ( $op eq 'delete_confirm' ) { >+ foreach my $serialid (@serialsid) { >+ $countitems += Koha::Serial::Items->search( { serialid => $serialid } )->count(); > } >-}elsif($op eq 'cud-delete_confirmed'){ >- if($query->param('delitems') eq "Yes"){ >+} elsif ( $op eq 'cud-delete_confirmed' ) { >+ if ( $query->param('delitems') eq "Yes" ) { > my @itemnumbers; >- foreach my $serialid (@serialsid){ >- my @ids = Koha::Serial::Items->search({serialid => $serialid})->get_column('itemnumber'); >- push(@itemnumbers, @ids); >+ foreach my $serialid (@serialsid) { >+ my @ids = Koha::Serial::Items->search( { serialid => $serialid } )->get_column('itemnumber'); >+ push( @itemnumbers, @ids ); > } >- my $items = Koha::Items->search({ itemnumber => \@itemnumbers }); >+ my $items = Koha::Items->search( { itemnumber => \@itemnumbers } ); > while ( my $item = $items->next ) { > my $deleted = $item->safe_delete; >- $template->param(error_delitem => 1) >+ $template->param( error_delitem => 1 ) > unless $deleted; > } > } >- for my $serialid (@serialsid){ >+ for my $serialid (@serialsid) { > my $serial = Koha::Serials->find($serialid); >- ModSerialStatus($serialid, $serial->serialseq, $serial->planneddate, $serial->publisheddate, $serial->publisheddatetext, 6, ""); >+ ModSerialStatus( >+ $serialid, $serial->serialseq, $serial->planneddate, $serial->publisheddate, >+ $serial->publisheddatetext, 6, "" >+ ); > } > } > > my $subscriptioncount; >-my ($location, $callnumber); >-if (@subscriptionid){ >- my @subscriptioninformation=(); >- my $closed = 0; >- foreach my $subscriptionid (@subscriptionid){ >- my $subs= GetSubscription($subscriptionid); >- next unless $subs; >- $closed = 1 if $subs->{closed}; >- >- ##these are display information >- $subs->{'abouttoexpire'}=abouttoexpire($subs->{'subscriptionid'}); >- $subs->{'subscriptionexpired'}=HasSubscriptionExpired($subs->{'subscriptionid'}); >- $subs->{'subscriptionid'} = $subscriptionid; # FIXME - why was this lost ? >- $location = $subs->{'location'}; >- $callnumber = $subs->{callnumber}; >- my $frequency = C4::Serials::Frequency::GetSubscriptionFrequency($subs->{periodicity}); >- my $numberpattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern($subs->{numberpattern}); >- $subs->{frequency} = $frequency; >- $subs->{numberpattern} = $numberpattern; >- $subs->{'hasRouting'} = check_routing($subscriptionid); >- push @$subscriptiondescs,$subs; >- my $tmpsubscription= GetFullSubscription($subscriptionid); >- @subscriptioninformation=(@$tmpsubscription,@subscriptioninformation); >- } >- >- output_and_exit( $query, $cookie, $template, 'unknown_subscription') unless @subscriptioninformation; >- >- $template->param(closed => $closed); >- $subscriptions=PrepareSerialsData(\@subscriptioninformation, 1); >- $subscriptioncount = CountSubscriptionFromBiblionumber($subscriptiondescs->[0]{'biblionumber'}); >+my ( $location, $callnumber ); >+if (@subscriptionid) { >+ my @subscriptioninformation = (); >+ my $closed = 0; >+ foreach my $subscriptionid (@subscriptionid) { >+ my $subs = GetSubscription($subscriptionid); >+ next unless $subs; >+ $closed = 1 if $subs->{closed}; >+ >+ ##these are display information >+ $subs->{'abouttoexpire'} = abouttoexpire( $subs->{'subscriptionid'} ); >+ $subs->{'subscriptionexpired'} = HasSubscriptionExpired( $subs->{'subscriptionid'} ); >+ $subs->{'subscriptionid'} = $subscriptionid; # FIXME - why was this lost ? >+ $location = $subs->{'location'}; >+ $callnumber = $subs->{callnumber}; >+ my $frequency = C4::Serials::Frequency::GetSubscriptionFrequency( $subs->{periodicity} ); >+ my $numberpattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern( $subs->{numberpattern} ); >+ $subs->{frequency} = $frequency; >+ $subs->{numberpattern} = $numberpattern; >+ $subs->{'hasRouting'} = check_routing($subscriptionid); >+ push @$subscriptiondescs, $subs; >+ my $tmpsubscription = GetFullSubscription($subscriptionid); >+ @subscriptioninformation = ( @$tmpsubscription, @subscriptioninformation ); >+ } >+ >+ output_and_exit( $query, $cookie, $template, 'unknown_subscription' ) unless @subscriptioninformation; >+ >+ $template->param( closed => $closed ); >+ $subscriptions = PrepareSerialsData( \@subscriptioninformation, 1 ); >+ $subscriptioncount = CountSubscriptionFromBiblionumber( $subscriptiondescs->[0]{'biblionumber'} ); > } else { >- $subscriptiondescs = GetSubscriptionsFromBiblionumber($biblionumber); >- foreach my $s (@$subscriptiondescs) { >- my $frequency = C4::Serials::Frequency::GetSubscriptionFrequency($s->{periodicity}); >- my $numberpattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern($s->{numberpattern}); >- $s->{frequency} = $frequency; >- $s->{numberpattern} = $numberpattern; >- } >- my $subscriptioninformation = GetFullSubscriptionsFromBiblionumber($biblionumber); >- $subscriptions=PrepareSerialsData($subscriptioninformation, 1); >+ $subscriptiondescs = GetSubscriptionsFromBiblionumber($biblionumber); >+ foreach my $s (@$subscriptiondescs) { >+ my $frequency = C4::Serials::Frequency::GetSubscriptionFrequency( $s->{periodicity} ); >+ my $numberpattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern( $s->{numberpattern} ); >+ $s->{frequency} = $frequency; >+ $s->{numberpattern} = $numberpattern; >+ } >+ my $subscriptioninformation = GetFullSubscriptionsFromBiblionumber($biblionumber); >+ $subscriptions = PrepareSerialsData( $subscriptioninformation, 1 ); > } > > my $title = $subscriptiondescs->[0]{bibliotitle}; >-my $yearmax=($subscriptions->[0]{year} eq "manage" && scalar(@$subscriptions)>1)? $subscriptions->[1]{year} :$subscriptions->[0]{year}; >-my $yearmin=$subscriptions->[scalar(@$subscriptions)-1]{year}; >-my $subscriptionidlist=""; >-foreach my $subscription (@$subscriptiondescs){ >- $subscriptionidlist.=$subscription->{'subscriptionid'}."," ; >- $biblionumber = $subscription->{'bibnum'} unless ($biblionumber); >- $subscription->{'hasRouting'} = check_routing($subscription->{'subscriptionid'}); >+my $yearmax = >+ ( $subscriptions->[0]{year} eq "manage" && scalar(@$subscriptions) > 1 ) >+ ? $subscriptions->[1]{year} >+ : $subscriptions->[0]{year}; >+my $yearmin = $subscriptions->[ scalar(@$subscriptions) - 1 ]{year}; >+my $subscriptionidlist = ""; >+foreach my $subscription (@$subscriptiondescs) { >+ $subscriptionidlist .= $subscription->{'subscriptionid'} . ","; >+ $biblionumber = $subscription->{'bibnum'} unless ($biblionumber); >+ $subscription->{'hasRouting'} = check_routing( $subscription->{'subscriptionid'} ); > } > > chop $subscriptionidlist; > $template->param( >- subscriptionidlist => $subscriptionidlist, >- biblionumber => $biblionumber, >- subscriptions => $subscriptiondescs, >- years => $subscriptions, >- yearmin => $yearmin, >- yearmax =>$yearmax, >- bibliotitle => $title, >- suggestion => C4::Context->preference("suggestion"), >- virtualshelves => C4::Context->preference("virtualshelves"), >- routing => C4::Context->preference("RoutingSerials"), >- subscr=>scalar $query->param('subscriptionid'), >- subscriptioncount => $subscriptioncount, >- location => $location, >- callnumber => $callnumber, >- uc(C4::Context->preference("marcflavour")) => 1, >- serialsadditems => $subscriptiondescs->[0]{'serialsadditems'}, >- delete => ($op eq 'delete_confirm'), >- subscriptionid => $subscriptionid, >- countitems => $countitems, >- serialnumber => scalar @serialsid, >- serialsid => \@serialsid, >- ); >+ subscriptionidlist => $subscriptionidlist, >+ biblionumber => $biblionumber, >+ subscriptions => $subscriptiondescs, >+ years => $subscriptions, >+ yearmin => $yearmin, >+ yearmax => $yearmax, >+ bibliotitle => $title, >+ suggestion => C4::Context->preference("suggestion"), >+ virtualshelves => C4::Context->preference("virtualshelves"), >+ routing => C4::Context->preference("RoutingSerials"), >+ subscr => scalar $query->param('subscriptionid'), >+ subscriptioncount => $subscriptioncount, >+ location => $location, >+ callnumber => $callnumber, >+ uc( C4::Context->preference("marcflavour") ) => 1, >+ serialsadditems => $subscriptiondescs->[0]{'serialsadditems'}, >+ delete => ( $op eq 'delete_confirm' ), >+ subscriptionid => $subscriptionid, >+ countitems => $countitems, >+ serialnumber => scalar @serialsid, >+ serialsid => \@serialsid, >+); > > output_html_with_http_headers $query, $cookie, $template->output; >-- >2.39.3 (Apple Git-146)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 38061
:
172297
|
172298
|
172299
|
172792
|
176440
|
176441
|
176442