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