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

(-)a/C4/Serials.pm (-53 / +23 lines)
Lines 1156-1205 sub ModSubscriptionHistory { Link Here
1156
    return $sth->rows;
1156
    return $sth->rows;
1157
}
1157
}
1158
1158
1159
# Update missinglist field, used by ModSerialStatus
1160
sub _update_missinglist {
1161
    my $subscriptionid = shift;
1162
1163
    my $dbh = C4::Context->dbh;
1164
    my @missingserials = GetSerials2($subscriptionid, "4,41,42,43,44,5");
1165
    my $missinglist;
1166
    foreach my $missingserial (@missingserials) {
1167
        if ( grep { $_ == $missingserial->{status} } qw( 4 41 42 43 44 ) ) {
1168
            $missinglist .= $missingserial->{'serialseq'} . "; ";
1169
        } elsif($missingserial->{'status'} == 5) {
1170
            $missinglist .= "not issued " . $missingserial->{'serialseq'} . "; ";
1171
        }
1172
    }
1173
    $missinglist =~ s/; $//;
1174
    my $query = qq{
1175
        UPDATE subscriptionhistory
1176
        SET missinglist = ?
1177
        WHERE subscriptionid = ?
1178
    };
1179
    my $sth = $dbh->prepare($query);
1180
    $sth->execute($missinglist, $subscriptionid);
1181
}
1182
1183
# Update recievedlist field, used by ModSerialStatus
1184
sub _update_receivedlist {
1185
    my $subscriptionid = shift;
1186
1187
    my $dbh = C4::Context->dbh;
1188
    my @receivedserials = GetSerials2($subscriptionid, "2");
1189
    my $receivedlist;
1190
    foreach (@receivedserials) {
1191
        $receivedlist .= $_->{'serialseq'} . "; ";
1192
    }
1193
    $receivedlist =~ s/; $//;
1194
    my $query = qq{
1195
        UPDATE subscriptionhistory
1196
        SET recievedlist = ?
1197
        WHERE subscriptionid = ?
1198
    };
1199
    my $sth = $dbh->prepare($query);
1200
    $sth->execute($receivedlist, $subscriptionid);
1201
}
1202
1203
=head2 ModSerialStatus
1159
=head2 ModSerialStatus
1204
1160
1205
ModSerialStatus($serialid,$serialseq, $planneddate,$publisheddate,$status,$notes)
1161
ModSerialStatus($serialid,$serialseq, $planneddate,$publisheddate,$status,$notes)
Lines 1240-1256 sub ModSerialStatus { Link Here
1240
        $sth->execute($subscriptionid);
1196
        $sth->execute($subscriptionid);
1241
        my $val = $sth->fetchrow_hashref;
1197
        my $val = $sth->fetchrow_hashref;
1242
        unless ( $val->{manualhistory} ) {
1198
        unless ( $val->{manualhistory} ) {
1199
            $query = "SELECT missinglist,recievedlist FROM subscriptionhistory WHERE  subscriptionid=?";
1200
            $sth   = $dbh->prepare($query);
1201
            $sth->execute($subscriptionid);
1202
            my ( $missinglist, $recievedlist ) = $sth->fetchrow;
1203
1243
            if ( $status == 2 || ($oldstatus == 2 && $status != 2) ) {
1204
            if ( $status == 2 || ($oldstatus == 2 && $status != 2) ) {
1244
                  _update_receivedlist($subscriptionid);
1205
                $recievedlist .= "; $serialseq"
1206
                    if ($recievedlist !~ /(^|;)\s*$serialseq(?=;|$)/);
1245
            }
1207
            }
1246
            my @missing_statuses = qw( 4 41 42 43 44 );
1208
1247
            if ( (  grep { $_ == $status } ( @missing_statuses, 5 ) )
1209
            # in case serial has been previously marked as missing
1248
              || (
1210
            if (grep /$status/, (1,2,3,7)) {
1249
                  ( grep { $_ == $oldstatus } @missing_statuses )
1211
                $missinglist=~ s/(^|;)\s*$serialseq(?=;|$)//g;
1250
                  && ! ( grep { $_ == $status } @missing_statuses ) )
1251
              || ($oldstatus == 5 && $status != 5)) {
1252
                _update_missinglist($subscriptionid);
1253
            }
1212
            }
1213
1214
            my @missing_statuses = qw( 4 41 42 43 44 );
1215
            $missinglist .= "; $serialseq"
1216
                if ( ( grep { $_ == $status } @missing_statuses ) && ( $missinglist !~/(^|;)\s*$serialseq(?=;|$)/ ) );
1217
            $missinglist .= "; not issued $serialseq"
1218
                if ( $status == 5 && $missinglist !~ /(^|;)\s*$serialseq(?=;|$)/ );
1219
1220
            $query = "UPDATE subscriptionhistory SET recievedlist=?, missinglist=? WHERE  subscriptionid=?";
1221
            $sth   = $dbh->prepare($query);
1222
            $recievedlist =~ s/^; //;
1223
            $missinglist  =~ s/^; //;
1224
            $sth->execute( $recievedlist, $missinglist, $subscriptionid );
1254
        }
1225
        }
1255
    }
1226
    }
1256
1227
1257
- 

Return to bug 11843