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

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

Return to bug 10092