Lines 1119-1137
sub ModSerialStatus {
Link Here
|
1119 |
my ( $missinglist, $recievedlist ) = $sth->fetchrow; |
1119 |
my ( $missinglist, $recievedlist ) = $sth->fetchrow; |
1120 |
|
1120 |
|
1121 |
if ( $status == ARRIVED || ($oldstatus == ARRIVED && $status != ARRIVED) ) { |
1121 |
if ( $status == ARRIVED || ($oldstatus == ARRIVED && $status != ARRIVED) ) { |
1122 |
$recievedlist .= "; $serialseq" |
1122 |
$recievedlist = _handle_seqno($serialseq, $recievedlist); |
1123 |
if ($recievedlist !~ /(^|;)\s*$serialseq(?=;|$)/); |
|
|
1124 |
} |
1123 |
} |
1125 |
|
1124 |
|
1126 |
# in case serial has been previously marked as missing |
1125 |
# in case serial has been previously marked as missing |
1127 |
if (grep /$status/, (EXPECTED, ARRIVED, LATE, CLAIMED)) { |
1126 |
if (grep /$status/, (EXPECTED, ARRIVED, LATE, CLAIMED)) { |
1128 |
$missinglist=~ s/(^|;)\s*$serialseq(?=;|$)//g; |
1127 |
$missinglist = _handle_seqno($serialseq, $missinglist, 'REMOVE'); |
1129 |
} |
1128 |
} |
1130 |
|
1129 |
|
1131 |
$missinglist .= "; $serialseq" |
1130 |
$missinglist = _handle_seqno($serialseq, $missinglist) if grep { $_ == $status } MISSING_STATUSES; |
1132 |
if ( ( grep { $_ == $status } ( MISSING_STATUSES ) ) && ( $missinglist !~/(^|;)\s*$serialseq(?=;|$)/ ) ); |
1131 |
$missinglist .= "; not issued $serialseq" if $status == NOT_ISSUED and not _handle_seqno($serialseq, $missinglist, 'CHECK'); |
1133 |
$missinglist .= "; not issued $serialseq" |
|
|
1134 |
if ( $status == NOT_ISSUED && $missinglist !~ /(^|;)\s*$serialseq(?=;|$)/ ); |
1135 |
|
1132 |
|
1136 |
$query = "UPDATE subscriptionhistory SET recievedlist=?, missinglist=? WHERE subscriptionid=?"; |
1133 |
$query = "UPDATE subscriptionhistory SET recievedlist=?, missinglist=? WHERE subscriptionid=?"; |
1137 |
$sth = $dbh->prepare($query); |
1134 |
$sth = $dbh->prepare($query); |
Lines 1174-1179
sub ModSerialStatus {
Link Here
|
1174 |
return; |
1171 |
return; |
1175 |
} |
1172 |
} |
1176 |
|
1173 |
|
|
|
1174 |
sub _handle_seqno { |
1175 |
# Adds or removes seqno from list when needed; returns list |
1176 |
# Or checks and returns true when present |
1177 |
|
1178 |
my ( $seq, $list, $op ) = @_; # op = ADD | REMOVE | CHECK (default: ADD) |
1179 |
my $seq_r = $seq; |
1180 |
$seq_r =~ s/([()])/\\$1/g; # Adjust disturbing parentheses for regex, maybe extend in future |
1181 |
|
1182 |
if( !$op or $op eq 'ADD' ) { |
1183 |
$list .= "; $seq" if $list !~ /(^|;)\s*$seq_r(?=;|$)/; |
1184 |
} elsif( $op eq 'REMOVE' ) { |
1185 |
$list=~ s/(^|;)\s*(not issued )?$seq_r(?=;|$)//g; |
1186 |
} else { # CHECK |
1187 |
return $list =~ /(^|;)\s*$seq_r(?=;|$)/ ? 1 : q{}; |
1188 |
} |
1189 |
return $list; |
1190 |
} |
1191 |
|
1177 |
=head2 GetNextExpected |
1192 |
=head2 GetNextExpected |
1178 |
|
1193 |
|
1179 |
$nextexpected = GetNextExpected($subscriptionid) |
1194 |
$nextexpected = GetNextExpected($subscriptionid) |
1180 |
- |
|
|