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

(-)a/C4/Serials.pm (-3 / +10 lines)
Lines 723-731 sub GetSerials2 { Link Here
723
    my @serials;
723
    my @serials;
724
724
725
    while ( my $line = $sth->fetchrow_hashref ) {
725
    while ( my $line = $sth->fetchrow_hashref ) {
726
        $line->{ "status" . $line->{status} } = 1;                                         # fills a "statusX" value, used for template status select list
726
        $line->{ "status" . $line->{status} } = 1; # fills a "statusX" value, used for template status select list
727
        $line->{"planneddate"}                = format_date( $line->{"planneddate"} );
727
        # Format dates for display
728
        $line->{"publisheddate"}              = format_date( $line->{"publisheddate"} );
728
        for my $datefield ( qw( planneddate publisheddate ) ) {
729
            if ($line->{$datefield} =~m/^00/) {
730
                $line->{$datefield} = q{};
731
            }
732
            else {
733
                $line->{$datefield} = format_date( $line->{$datefield} );
734
            }
735
        }
729
        push @serials, $line;
736
        push @serials, $line;
730
    }
737
    }
731
    return @serials;
738
    return @serials;
(-)a/serials/serials-collection.pl (-1 / +3 lines)
Lines 46-52 my ($template, $loggedinuser, $cookie); Link Here
46
my $biblionumber = $query->param('biblionumber');
46
my $biblionumber = $query->param('biblionumber');
47
my @subscriptionid = $query->param('subscriptionid');
47
my @subscriptionid = $query->param('subscriptionid');
48
48
49
my $subscriptiondescs ;
49
@subscriptionid= uniq @subscriptionid;
50
@subscriptionid= sort @subscriptionid;
51
my $subscriptiondescs;
50
my $subscriptions;
52
my $subscriptions;
51
53
52
if($op eq 'gennext' && @subscriptionid){
54
if($op eq 'gennext' && @subscriptionid){
(-)a/serials/serials-edit.pl (-46 / +52 lines)
Lines 90-109 my @errseq; Link Here
90
90
91
# If user comes from subscription details
91
# If user comes from subscription details
92
unless (@serialids) {
92
unless (@serialids) {
93
    foreach my $subscriptionid (@subscriptionids) {
93
    my $serstatus = $query->param('serstatus');
94
        my $serstatus = $query->param('serstatus');
94
    if ($serstatus) {
95
        if ($serstatus) {
95
        foreach my $subscriptionid (@subscriptionids) {
96
            my @tmpser = GetSerials2( $subscriptionid, $serstatus );
96
            my @tmpser = GetSerials2( $subscriptionid, $serstatus );
97
            foreach (@tmpser) {
97
            push @serialids, map { $_->{serialid} } @tmpser;
98
                push @serialids, $_->{'serialid'};
99
            }
100
        }
98
        }
101
    }
99
    }
102
}
100
}
103
101
104
unless ( scalar(@serialids) ) {
102
unless ( @serialids ) {
105
    my $string =
103
    my $string =
106
      "serials-collection.pl?subscriptionid=" . join( ",", @subscriptionids );
104
      'serials-collection.pl?subscriptionid=' . join ',', uniq @subscriptionids;
107
    $string =~ s/,$//;
105
    $string =~ s/,$//;
108
106
109
    print $query->redirect($string);
107
    print $query->redirect($string);
Lines 111-122 unless ( scalar(@serialids) ) { Link Here
111
109
112
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
110
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
113
    {
111
    {
114
	template_name   => "serials/serials-edit.tmpl",
112
        template_name   => 'serials/serials-edit.tmpl',
115
	query           => $query,
113
        query           => $query,
116
	type            => "intranet",
114
        type            => 'intranet',
117
	authnotrequired => 0,
115
        authnotrequired => 0,
118
	flagsrequired   => {serials => 'receive_serials'},
116
        flagsrequired   => { serials => 1 },
119
	debug           => 1,
117
        debug           => 1,
120
    }
118
    }
121
);
119
);
122
120
Lines 124-159 my @serialdatalist; Link Here
124
my %processedserialid;
122
my %processedserialid;
125
123
126
my $today = C4::Dates->new();
124
my $today = C4::Dates->new();
127
foreach my $tmpserialid (@serialids) {
125
foreach my $serialid (@serialids) {
128
126
129
    #filtering serialid for duplication
127
    #filtering serialid for duplication
130
    #NEW serial should appear only once and are created afterwards
128
    #NEW serial should appear only once and are created afterwards
131
    if (   defined($tmpserialid)
129
    if (   $serialid
132
        && $tmpserialid =~ /^[0-9]+$/
130
        && $serialid =~ /^[0-9]+$/
133
        && !$processedserialid{$tmpserialid} )
131
        && !$processedserialid{$serialid} )
134
    {
132
    {
135
        my $data = GetSerialInformation($tmpserialid);
133
        my $serinfo = GetSerialInformation($serialid); #TODO duplicates work done by GetSerials2 above
136
        for my $datefield ( qw( publisheddate planneddate) ) {
134
        for my $d ( qw( publisheddate planneddate )){
137
            if ($data->{$datefield} && $data->{$datefield}!~m/^00/) {
135
            if ( $serinfo->{$d} =~m/^00/ ) {
138
                $data->{$datefield} = format_date( $data->{$datefield} );
136
                $serinfo->{$d} = q{};
139
            }
137
            }
140
            else {
138
            else {
141
                $data->{$datefield} = q{};
139
                $serinfo->{$d} = format_date( $serinfo->{$d} );
142
            }
140
            }
143
        }
141
        }
144
        $data->{arriveddate}=$today->output('syspref');
142
        $serinfo->{arriveddate}=$today->output('syspref');
145
        $data->{'editdisable'} = (
143
144
        $serinfo->{'editdisable'} = (
146
            (
145
            (
147
                HasSubscriptionExpired( $data->{subscriptionid} ) == 1
146
                HasSubscriptionExpired( $serinfo->{subscriptionid} )
148
                  && $data->{'status1'}
147
                && $serinfo->{'status1'}
149
            )
148
            )
150
              || $data->{'cannotedit'}
149
            || $serinfo->{'cannotedit'}
151
        );
150
        );
152
        push @serialdatalist, $data;
151
        push @serialdatalist, $serinfo;
153
        $processedserialid{$tmpserialid} = 1;
152
        $processedserialid{$serialid} = 1;
154
    }
153
    }
155
}
154
}
156
my $bibdata = GetBiblioData( $serialdatalist[0]->{'biblionumber'} );
155
my $biblio = GetBiblioData( $serialdatalist[0]->{'biblionumber'} );
157
156
158
my @newserialloop;
157
my @newserialloop;
159
my @subscriptionloop;
158
my @subscriptionloop;
Lines 163-170 my %processedsubscriptionid; Link Here
163
foreach my $subscriptionid (@subscriptionids) {
162
foreach my $subscriptionid (@subscriptionids) {
164
163
165
    #Do not process subscriptionid twice if it was already processed.
164
    #Do not process subscriptionid twice if it was already processed.
166
    if ( defined($subscriptionid)
165
    if ( $subscriptionid && !$processedsubscriptionid{$subscriptionid} )
167
        && !$processedsubscriptionid{$subscriptionid} )
168
    {
166
    {
169
        my $cell;
167
        my $cell;
170
        if ( $serialdatalist[0]->{'serialsadditems'} ) {
168
        if ( $serialdatalist[0]->{'serialsadditems'} ) {
Lines 176-183 foreach my $subscriptionid (@subscriptionids) { Link Here
176
            $cell->{serialsadditems} = 1;
174
            $cell->{serialsadditems} = 1;
177
        }
175
        }
178
        $cell->{'subscriptionid'} = $subscriptionid;
176
        $cell->{'subscriptionid'} = $subscriptionid;
179
        $cell->{'itemid'}         = "NNEW";
177
        $cell->{'itemid'}         = 'NNEW';
180
        $cell->{'serialid'}       = "NEW";
178
        $cell->{'serialid'}       = 'NEW';
181
        $cell->{'issuesatonce'}   = 1;
179
        $cell->{'issuesatonce'}   = 1;
182
        $cell->{arriveddate}=$today->output('syspref');
180
        $cell->{arriveddate}=$today->output('syspref');
183
181
Lines 198-205 if ( $op and $op eq 'serialchangestatus' ) { Link Here
198
196
199
    my $newserial;
197
    my $newserial;
200
    for ( my $i = 0 ; $i <= $#serialids ; $i++ ) {
198
    for ( my $i = 0 ; $i <= $#serialids ; $i++ ) {
199
        my ($plan_date, $pub_date);
200
201
        if (defined $planneddates[$i] && $planneddates[$i] ne 'XXX') {
202
            $plan_date = format_date_in_iso( $planneddates[$i] );
203
        }
204
        if (defined $publisheddates[$i] && $publisheddates[$i] ne 'XXX') {
205
            $pub_date = format_date_in_iso( $publisheddates[$i] );
206
        }
201
207
202
        if ( $serialids[$i] && $serialids[$i] eq "NEW" ) {
208
        if ( $serialids[$i] && $serialids[$i] eq 'NEW' ) {
203
            if ( $serialseqs[$i] ) {
209
            if ( $serialseqs[$i] ) {
204
210
205
            #IF newserial was provided a name Then we have to create a newSerial
211
            #IF newserial was provided a name Then we have to create a newSerial
Lines 209-216 if ( $op and $op eq 'serialchangestatus' ) { Link Here
209
                    $subscriptionids[0],
215
                    $subscriptionids[0],
210
                    $serialdatalist[0]->{'biblionumber'},
216
                    $serialdatalist[0]->{'biblionumber'},
211
                    $status[$i],
217
                    $status[$i],
212
                    format_date_in_iso( $planneddates[$i] ),
218
                    $plan_date,
213
                    format_date_in_iso( $publisheddates[$i] ),
219
                    $pub_date,
214
                    $notes[$i]
220
                    $notes[$i]
215
                );
221
                );
216
            }
222
            }
Lines 219-226 if ( $op and $op eq 'serialchangestatus' ) { Link Here
219
            ModSerialStatus(
225
            ModSerialStatus(
220
                $serialids[$i],
226
                $serialids[$i],
221
                $serialseqs[$i],
227
                $serialseqs[$i],
222
                format_date_in_iso( $planneddates[$i] ),
228
                $plan_date,
223
                format_date_in_iso( $publisheddates[$i] ),
229
                $pub_date,
224
                $status[$i],
230
                $status[$i],
225
                $notes[$i]
231
                $notes[$i]
226
            );
232
            );
Lines 299-312 if ( $op and $op eq 'serialchangestatus' ) { Link Here
299
                            $serialdatalist[0]->{'biblionumber'}
305
                            $serialdatalist[0]->{'biblionumber'}
300
                        )
306
                        )
301
                      );
307
                      );
302
                    if ( C4::Context->preference("autoBarcode") eq
308
                    if ( C4::Context->preference('autoBarcode') eq
303
                        'incremental' )
309
                        'incremental' )
304
                    {
310
                    {
305
                        if ( !$bib_record->field($barcodetagfield)
311
                        if ( !$bib_record->field($barcodetagfield)
306
                            ->subfield($barcodetagsubfield) )
312
                            ->subfield($barcodetagsubfield) )
307
                        {
313
                        {
308
                            my $sth_barcode = $dbh->prepare(
314
                            my $sth_barcode = $dbh->prepare(
309
                                "select max(abs(barcode)) from items");
315
                                'select max(abs(barcode)) from items');
310
                            $sth_barcode->execute;
316
                            $sth_barcode->execute;
311
                            my ($newbarcode) = $sth_barcode->fetchrow;
317
                            my ($newbarcode) = $sth_barcode->fetchrow;
312
318
Lines 364-371 if ( $op and $op eq 'serialchangestatus' ) { Link Here
364
        }
370
        }
365
    }
371
    }
366
    else {
372
    else {
367
        my $redirect = "serials-collection.pl?";
373
        my $redirect = 'serials-collection.pl?';
368
        $redirect .= join( '&', map { "subscriptionid=" . $_ } sort @subscriptionids );# ID The sort necessary
374
        $redirect .= join( '&', map { 'subscriptionid=' . $_ } @subscriptionids );
369
        print $query->redirect($redirect);
375
        print $query->redirect($redirect);
370
    }
376
    }
371
}
377
}
Lines 373-379 my $default_bib_view = get_default_view(); Link Here
373
379
374
$template->param(
380
$template->param(
375
    serialsadditems => $serialdatalist[0]->{'serialsadditems'},
381
    serialsadditems => $serialdatalist[0]->{'serialsadditems'},
376
    bibliotitle     => $bibdata->{'title'},
382
    callnumber	     => $serialdatalist[0]->{'callnumber'},
383
    bibliotitle     => $biblio->{'title'},
377
    biblionumber    => $serialdatalist[0]->{'biblionumber'},
384
    biblionumber    => $serialdatalist[0]->{'biblionumber'},
378
    serialslist     => \@serialdatalist,
385
    serialslist     => \@serialdatalist,
379
    default_bib_view => $default_bib_view,
386
    default_bib_view => $default_bib_view,
380
- 

Return to bug 5026