@@ -, +, @@ --- C4/Serials.pm | 65 +++++++++++++++++++++++++------------------------------- 1 files changed, 29 insertions(+), 36 deletions(-) --- a/C4/Serials.pm +++ a/C4/Serials.pm @@ -1132,31 +1132,9 @@ sub ModSerialStatus { $query = "SELECT missinglist,recievedlist FROM subscriptionhistory WHERE subscriptionid=?"; $sth = $dbh->prepare($query); $sth->execute($subscriptionid); - my ( $missinglist, $recievedlist ) = $sth->fetchrow; - - #Arrived: add to received list, remove from missing - if($status==2) { - $recievedlist .= "; $serialseq" - if $recievedlist!~/(^|;)\s*$serialseq(?=;|$)/; - $missinglist=~ s/(^|;)\s*$serialseq(?=;|$)//g; - } - #Expected,late,claimed: remove optionally from received+missing - if (grep /$status/, (1,3,7)) { - $recievedlist=~ s/(^|;)\s*$serialseq(?=;|$)//g; - $missinglist=~ s/(^|;)\s*$serialseq(?=;|$)//g; - } - #Missing, not available: add to missing, remove from received - #No longer putting additional text into missing field - if($status==4 || $status==5) { - $missinglist .= "; $serialseq" - if $missinglist!~/(^|;)\s*$serialseq(?=;|$)/; - $recievedlist=~ s/(^|;)\s*$serialseq(?=;|$)//g; - } - + my ($missinglist, $recievedlist)= _update_missing_and_received_list($sth->fetchrow,$serialseq,$status); $query = "UPDATE subscriptionhistory SET recievedlist=?, missinglist=? WHERE subscriptionid=?"; $sth = $dbh->prepare($query); - $recievedlist =~ s/^; //; - $missinglist =~ s/^; //; $sth->execute( $recievedlist, $missinglist, $subscriptionid ); } } @@ -1191,6 +1169,32 @@ sub ModSerialStatus { return; } +sub _update_missing_and_received_list { + my ($missinglist, $recievedlist, $serialseq, $status)=@_; + + #Arrived: add to received list, remove from missing + if($status==2) { + $recievedlist .= "; $serialseq" + if $recievedlist!~/(^|;)\s*$serialseq(?=;|$)/; + $missinglist=~ s/(^|;)\s*$serialseq(?=;|$)//g; + } + #Expected,late,claimed: remove optionally from received+missing + if (grep /$status/, (1,3,7)) { + $recievedlist=~ s/(^|;)\s*$serialseq(?=;|$)//g; + $missinglist=~ s/(^|;)\s*$serialseq(?=;|$)//g; + } + #Missing, not available: add to missing, remove from received + #No longer putting additional text into missing field + if($status==4 || $status==5) { + $missinglist .= "; $serialseq" + if $missinglist!~/(^|;)\s*$serialseq(?=;|$)/; + $recievedlist=~ s/(^|;)\s*$serialseq(?=;|$)//g; + } + $missinglist =~ s/^; //; + $recievedlist =~ s/^; //; + return ($missinglist, $recievedlist); +} + =head2 GetNextExpected $nextexpected = GetNextExpected($subscriptionid) @@ -1505,25 +1509,14 @@ sub NewIssue { |; $sth = $dbh->prepare($query); $sth->execute($subscriptionid); - my ( $missinglist, $recievedlist ) = $sth->fetchrow; - - if ( $status == 2 ) { - ### TODO Add a feature that improves recognition and description. - ### As such count (serialseq) i.e. : N18,2(N19),N20 - ### Would use substr and index But be careful to previous presence of () - $recievedlist .= "; $serialseq" unless (index($recievedlist,$serialseq)>0); - } - if ( $status == 4 ) { - $missinglist .= "; $serialseq" unless (index($missinglist,$serialseq)>0); - } + my ($missinglist, $recievedlist)= _update_missing_and_received_list( + $sth->fetchrow, $serialseq, $status); $query = qq| UPDATE subscriptionhistory SET recievedlist=?, missinglist=? WHERE subscriptionid=? |; $sth = $dbh->prepare($query); - $recievedlist =~ s/^; //; - $missinglist =~ s/^; //; $sth->execute( $recievedlist, $missinglist, $subscriptionid ); return $serialid; } --