View | Details | Raw Unified | Return to bug 10092
Collapse All | Expand All

(-)a/C4/Serials.pm (-37 / +29 lines)
Lines 1137-1167 sub ModSerialStatus { Link Here
1137
            $query = "SELECT missinglist,recievedlist FROM subscriptionhistory WHERE  subscriptionid=?";
1137
            $query = "SELECT missinglist,recievedlist FROM subscriptionhistory WHERE  subscriptionid=?";
1138
            $sth   = $dbh->prepare($query);
1138
            $sth   = $dbh->prepare($query);
1139
            $sth->execute($subscriptionid);
1139
            $sth->execute($subscriptionid);
1140
            my ( $missinglist, $recievedlist ) = $sth->fetchrow;
1140
            my ($missinglist, $recievedlist)= _update_missing_and_received_list($sth->fetchrow,$serialseq,$status);
1141
1142
            #Arrived: add to received list, remove from missing
1143
            if($status==2) {
1144
                $recievedlist .= "; $serialseq"
1145
                    if $recievedlist!~/(^|;)\s*$serialseq(?=;|$)/;
1146
                $missinglist=~ s/(^|;)\s*$serialseq(?=;|$)//g;
1147
            }
1148
            #Expected,late,claimed: remove optionally from received+missing
1149
            if (grep /$status/, (1,3,7)) {
1150
                $recievedlist=~ s/(^|;)\s*$serialseq(?=;|$)//g;
1151
                $missinglist=~ s/(^|;)\s*$serialseq(?=;|$)//g;
1152
            }
1153
            #Missing, not available: add to missing, remove from received
1154
            #No longer putting additional text into missing field
1155
            if($status==4 || $status==5) {
1156
                $missinglist .= "; $serialseq"
1157
                    if $missinglist!~/(^|;)\s*$serialseq(?=;|$)/;
1158
                $recievedlist=~ s/(^|;)\s*$serialseq(?=;|$)//g;
1159
            }
1160
1161
            $query = "UPDATE subscriptionhistory SET recievedlist=?, missinglist=? WHERE  subscriptionid=?";
1141
            $query = "UPDATE subscriptionhistory SET recievedlist=?, missinglist=? WHERE  subscriptionid=?";
1162
            $sth   = $dbh->prepare($query);
1142
            $sth   = $dbh->prepare($query);
1163
            $recievedlist =~ s/^; //;
1164
            $missinglist  =~ s/^; //;
1165
            $sth->execute( $recievedlist, $missinglist, $subscriptionid );
1143
            $sth->execute( $recievedlist, $missinglist, $subscriptionid );
1166
        }
1144
        }
1167
    }
1145
    }
Lines 1196-1201 sub ModSerialStatus { Link Here
1196
    return;
1174
    return;
1197
}
1175
}
1198
1176
1177
sub _update_missing_and_received_list {
1178
    my ($missinglist, $recievedlist, $serialseq, $status)=@_;
1179
1180
    #Arrived: add to received list, remove from missing
1181
    if($status==2) {
1182
                $recievedlist .= "; $serialseq"
1183
                    if $recievedlist!~/(^|;)\s*$serialseq(?=;|$)/;
1184
                $missinglist=~ s/(^|;)\s*$serialseq(?=;|$)//g;
1185
    }
1186
    #Expected,late,claimed: remove optionally from received+missing
1187
    if (grep /$status/, (1,3,7)) {
1188
                $recievedlist=~ s/(^|;)\s*$serialseq(?=;|$)//g;
1189
                $missinglist=~ s/(^|;)\s*$serialseq(?=;|$)//g;
1190
    }
1191
    #Missing, not available: add to missing, remove from received
1192
    #No longer putting additional text into missing field
1193
    if($status==4 || $status==5) {
1194
                $missinglist .= "; $serialseq"
1195
                    if $missinglist!~/(^|;)\s*$serialseq(?=;|$)/;
1196
                $recievedlist=~ s/(^|;)\s*$serialseq(?=;|$)//g;
1197
    }
1198
    $missinglist  =~ s/^; //;
1199
    $recievedlist =~ s/^; //;
1200
    return ($missinglist, $recievedlist);
1201
}
1202
1199
=head2 GetNextExpected
1203
=head2 GetNextExpected
1200
1204
1201
$nextexpected = GetNextExpected($subscriptionid)
1205
$nextexpected = GetNextExpected($subscriptionid)
Lines 1510-1534 sub NewIssue { Link Here
1510
    |;
1514
    |;
1511
    $sth = $dbh->prepare($query);
1515
    $sth = $dbh->prepare($query);
1512
    $sth->execute($subscriptionid);
1516
    $sth->execute($subscriptionid);
1513
    my ( $missinglist, $recievedlist ) = $sth->fetchrow;
1517
    my ($missinglist, $recievedlist)= _update_missing_and_received_list(
1514
1518
        $sth->fetchrow, $serialseq, $status);
1515
    if ( $status == 2 ) {
1516
      ### TODO Add a feature that improves recognition and description.
1517
      ### As such count (serialseq) i.e. : N18,2(N19),N20
1518
      ### Would use substr and index But be careful to previous presence of ()
1519
        $recievedlist .= "; $serialseq" unless (index($recievedlist,$serialseq)>0);
1520
    }
1521
    if ( $status == 4 ) {
1522
        $missinglist .= "; $serialseq" unless (index($missinglist,$serialseq)>0);
1523
    }
1524
    $query = qq|
1519
    $query = qq|
1525
        UPDATE subscriptionhistory
1520
        UPDATE subscriptionhistory
1526
        SET    recievedlist=?, missinglist=?
1521
        SET    recievedlist=?, missinglist=?
1527
        WHERE  subscriptionid=?
1522
        WHERE  subscriptionid=?
1528
    |;
1523
    |;
1529
    $sth = $dbh->prepare($query);
1524
    $sth = $dbh->prepare($query);
1530
    $recievedlist =~ s/^; //;
1531
    $missinglist  =~ s/^; //;
1532
    $sth->execute( $recievedlist, $missinglist, $subscriptionid );
1525
    $sth->execute( $recievedlist, $missinglist, $subscriptionid );
1533
    return $serialid;
1526
    return $serialid;
1534
}
1527
}
1535
- 

Return to bug 10092