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

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

Return to bug 11843