From ba177d36e5e104ce92707681b6a6f0d5de1f3f00 Mon Sep 17 00:00:00 2001 From: Julian Maurice Date: Mon, 28 Apr 2014 11:50:04 +0200 Subject: [PATCH] Bug 11843: Reset the old code for updating manual subscription history --- C4/Serials.pm | 75 ++++++++++++++++++--------------------------------------- 1 file changed, 23 insertions(+), 52 deletions(-) diff --git a/C4/Serials.pm b/C4/Serials.pm index 7aa758f..e72a7f1 100644 --- a/C4/Serials.pm +++ b/C4/Serials.pm @@ -1156,50 +1156,6 @@ sub ModSubscriptionHistory { return $sth->rows; } -# Update missinglist field, used by ModSerialStatus -sub _update_missinglist { - my $subscriptionid = shift; - - my $dbh = C4::Context->dbh; - my @missingserials = GetSerials2($subscriptionid, "4,41,42,43,44,5"); - my $missinglist; - foreach my $missingserial (@missingserials) { - if ( grep { $_ == $missingserial->{status} } qw( 4 41 42 43 44 ) ) { - $missinglist .= $missingserial->{'serialseq'} . "; "; - } elsif($missingserial->{'status'} == 5) { - $missinglist .= "not issued " . $missingserial->{'serialseq'} . "; "; - } - } - $missinglist =~ s/; $//; - my $query = qq{ - UPDATE subscriptionhistory - SET missinglist = ? - WHERE subscriptionid = ? - }; - my $sth = $dbh->prepare($query); - $sth->execute($missinglist, $subscriptionid); -} - -# Update recievedlist field, used by ModSerialStatus -sub _update_receivedlist { - my $subscriptionid = shift; - - my $dbh = C4::Context->dbh; - my @receivedserials = GetSerials2($subscriptionid, "2"); - my $receivedlist; - foreach (@receivedserials) { - $receivedlist .= $_->{'serialseq'} . "; "; - } - $receivedlist =~ s/; $//; - my $query = qq{ - UPDATE subscriptionhistory - SET recievedlist = ? - WHERE subscriptionid = ? - }; - my $sth = $dbh->prepare($query); - $sth->execute($receivedlist, $subscriptionid); -} - =head2 ModSerialStatus ModSerialStatus($serialid,$serialseq, $planneddate,$publisheddate,$status,$notes) @@ -1240,17 +1196,32 @@ sub ModSerialStatus { $sth->execute($subscriptionid); my $val = $sth->fetchrow_hashref; unless ( $val->{manualhistory} ) { + $query = "SELECT missinglist,recievedlist FROM subscriptionhistory WHERE subscriptionid=?"; + $sth = $dbh->prepare($query); + $sth->execute($subscriptionid); + my ( $missinglist, $recievedlist ) = $sth->fetchrow; + if ( $status == 2 || ($oldstatus == 2 && $status != 2) ) { - _update_receivedlist($subscriptionid); + $recievedlist .= "; $serialseq" + if ($recievedlist !~ /(^|;)\s*$serialseq(?=;|$)/); } - my @missing_statuses = qw( 4 41 42 43 44 ); - if ( ( grep { $_ == $status } ( @missing_statuses, 5 ) ) - || ( - ( grep { $_ == $oldstatus } @missing_statuses ) - && ! ( grep { $_ == $status } @missing_statuses ) ) - || ($oldstatus == 5 && $status != 5)) { - _update_missinglist($subscriptionid); + + # in case serial has been previously marked as missing + if (grep /$status/, (1,2,3,7)) { + $missinglist=~ s/(^|;)\s*$serialseq(?=;|$)//g; } + + my @missing_statuses = qw( 4 41 42 43 44 ); + $missinglist .= "; $serialseq" + if ( ( grep { $_ == $status } @missing_statuses ) && ( $missinglist !~/(^|;)\s*$serialseq(?=;|$)/ ) ); + $missinglist .= "; not issued $serialseq" + if ( $status == 5 && $missinglist !~ /(^|;)\s*$serialseq(?=;|$)/ ); + + $query = "UPDATE subscriptionhistory SET recievedlist=?, missinglist=? WHERE subscriptionid=?"; + $sth = $dbh->prepare($query); + $recievedlist =~ s/^; //; + $missinglist =~ s/^; //; + $sth->execute( $recievedlist, $missinglist, $subscriptionid ); } } -- 1.7.10.4