| Lines 243-248
          sub findrelatedto ($$) {
      
      
        Link Here | 
        
          | 243 | sub SendAlerts { | 243 | sub SendAlerts { | 
        
          | 244 |     my ( $type, $externalid, $letter ) = @_; | 244 |     my ( $type, $externalid, $letter ) = @_; | 
        
          | 245 |     my $dbh = C4::Context->dbh; | 245 |     my $dbh = C4::Context->dbh; | 
            
              |  |  | 246 |     my $strsth; | 
        
          | 246 |     if ( $type eq 'issue' ) { | 247 |     if ( $type eq 'issue' ) { | 
        
          | 247 |  | 248 |  | 
        
          | 248 |         # 		warn "sending issues..."; | 249 |         # 		warn "sending issues..."; | 
  
    | Lines 290-388
          sub SendAlerts {
      
      
        Link Here | 
        
          | 290 |                     ); | 291 |                     ); | 
        
          | 291 |                 sendmail(%mail) or carp $Mail::Sendmail::error; | 292 |                 sendmail(%mail) or carp $Mail::Sendmail::error; | 
        
          | 292 |  | 293 |  | 
            
              | 293 | # warn "sending to $mail{To} From $mail{From} subj $mail{Subject} Mess $mail{Message}"; |  |  | 
        
          | 294 |             } | 294 |             } | 
        
          | 295 |         } | 295 |         } | 
        
          | 296 |     } | 296 |     } | 
        
          | 297 |     elsif ( $type eq 'claimacquisition' ) { | 297 |     elsif ( $type eq 'claimacquisition' ) { | 
        
          | 298 |  | 298 |  | 
          
            
              | 299 |         # 		warn "sending issues..."; | 299 |         $letter = getletter( 'claimacquisition', $letter ); | 
            
              | 300 |         my $letter = getletter( 'claimacquisition', $letter ); |  |  | 
        
          | 301 |  | 300 |  | 
        
          | 302 |         # prepare the letter... | 301 |         # prepare the letter... | 
        
          | 303 |         # search the biblionumber | 302 |         # search the biblionumber | 
          
            
              | 304 |         my $strsth = | 303 |         $strsth = qq{ | 
            
              | 305 | "select aqorders.*,aqbasket.*,biblio.*,biblioitems.* from aqorders LEFT JOIN aqbasket on aqbasket.basketno=aqorders.basketno LEFT JOIN biblio on aqorders.biblionumber=biblio.biblionumber LEFT JOIN biblioitems on aqorders.biblioitemnumber=biblioitems.biblioitemnumber where aqorders.ordernumber IN (" | 304 |             SELECT aqorders.*,aqbasket.*,biblio.*,biblioitems.*,aqbooksellers.* | 
            
              | 306 |           . join( ",", @$externalid ) . ")"; | 305 |             FROM aqorders | 
            
              | 307 |         my $sthorders = $dbh->prepare($strsth); | 306 |             LEFT JOIN aqbasket ON aqbasket.basketno=aqorders.basketno | 
            
              | 308 |         $sthorders->execute; | 307 |             LEFT JOIN biblio ON aqorders.biblionumber=biblio.biblionumber | 
            
              | 309 |         my $dataorders = $sthorders->fetchall_arrayref( {} ); | 308 |             LEFT JOIN biblioitems ON aqorders.biblioitemnumber=biblioitems.biblioitemnumber | 
            
              | 310 |         parseletter( $letter, 'aqbooksellers', | 309 |             LEFT JOIN aqbooksellers ON aqbasket.booksellerid=aqbooksellers.id | 
            
              | 311 |             $dataorders->[0]->{booksellerid} ); | 310 |             WHERE aqorders.ordernumber IN ( | 
            
              | 312 |         my $sthbookseller = |  |  | 
            
              | 313 |           $dbh->prepare("select * from aqbooksellers where id=?"); | 
            
              | 314 |         $sthbookseller->execute( $dataorders->[0]->{booksellerid} ); | 
            
              | 315 |         my $databookseller = $sthbookseller->fetchrow_hashref; | 
            
              | 316 |  | 
            
              | 317 |         # parsing branch info | 
            
              | 318 |         my $userenv = C4::Context->userenv; | 
            
              | 319 |         parseletter( $letter, 'branches', $userenv->{branch} ); | 
            
              | 320 |  | 
            
              | 321 |         # parsing librarian name | 
            
              | 322 |         $letter->{content} =~ s/<<LibrarianFirstname>>/$userenv->{firstname}/g; | 
            
              | 323 |         $letter->{content} =~ s/<<LibrarianSurname>>/$userenv->{surname}/g; | 
            
              | 324 |         $letter->{content} =~ | 
            
              | 325 |           s/<<LibrarianEmailaddress>>/$userenv->{emailaddress}/g; | 
            
              | 326 |         foreach my $data ( @{$dataorders} ) { | 
            
              | 327 |             if ( $letter->{content} =~ m/(<<.*>>)/ ) { | 
            
              | 328 |                 my $line = $1; | 
            
              | 329 |                 foreach my $field ( keys %{$data} ) { | 
            
              | 330 |                     $line =~ s/(<<[^\.]+.$field>>)/$data->{$field}/; | 
            
              | 331 |                 } | 
            
              | 332 |                 $letter->{content} =~ s/(<<.*>>)/$line\n$1/; | 
            
              | 333 |             } | 
            
              | 334 |         } | 
            
              | 335 |         $letter->{content} =~ s/<<[^>]*>>//g; | 
            
              | 336 |         my $innerletter = $letter; | 
            
              | 337 |  | 
            
              | 338 |         # ... then send mail | 
            
              | 339 |         if (   $databookseller->{bookselleremail} | 
            
              | 340 |             || $databookseller->{contemail} ) | 
            
              | 341 |         { | 
            
              | 342 |             my %mail = ( | 
            
              | 343 |                 To => $databookseller->{bookselleremail} | 
            
              | 344 |                   . ( | 
            
              | 345 |                     $databookseller->{contemail} | 
            
              | 346 |                     ? "," . $databookseller->{contemail} | 
            
              | 347 |                     : "" | 
            
              | 348 |                   ), | 
            
              | 349 |                 From           => $userenv->{emailaddress}, | 
            
              | 350 |                 Subject        => "" . $innerletter->{title}, | 
            
              | 351 |                 Message        => "" . $innerletter->{content}, | 
            
              | 352 |                 'Content-Type' => 'text/plain; charset="utf8"', | 
            
              | 353 |             ); | 
            
              | 354 |             sendmail(%mail) or carp $Mail::Sendmail::error; | 
            
              | 355 |         } | 
            
              | 356 |         if ( C4::Context->preference("LetterLog") ) { | 
            
              | 357 |             logaction( | 
            
              | 358 |                 "ACQUISITION", | 
            
              | 359 |                 "Send Acquisition claim letter", | 
            
              | 360 |                 "", | 
            
              | 361 |                 "order list : " | 
            
              | 362 |                   . join( ",", @$externalid ) | 
            
              | 363 |                   . "\n$innerletter->{title}\n$innerletter->{content}" | 
            
              | 364 |             ); | 
        
          | 365 |         } | 311 |         } | 
            
              |  |  | 312 |           . join( ",", @$externalid ) . ")"; | 
        
          | 366 |     } | 313 |     } | 
        
          | 367 |     elsif ( $type eq 'claimissues' ) { | 314 |     elsif ( $type eq 'claimissues' ) { | 
        
          | 368 |  | 315 |  | 
          
            
              | 369 |         # 		warn "sending issues..."; | 316 |         $letter = getletter( 'claimissues', $letter ); | 
            
              | 370 |         my $letter = getletter( 'claimissues', $letter ); |  |  | 
        
          | 371 |  | 317 |  | 
        
          | 372 |         # prepare the letter... | 318 |         # prepare the letter... | 
        
          | 373 |         # search the biblionumber | 319 |         # search the biblionumber | 
          
            
              | 374 |         my $strsth = | 320 |         $strsth = qq{ | 
            
              | 375 | "select serial.*,subscription.*, biblio.* from serial LEFT JOIN subscription on serial.subscriptionid=subscription.subscriptionid LEFT JOIN biblio on serial.biblionumber=biblio.biblionumber where serial.serialid IN (" | 321 |             SELECT serial.*,subscription.*, biblio.*, aqbooksellers.* | 
            
              |  |  | 322 |             FROM serial | 
            
              | 323 |             LEFT JOIN subscription ON serial.subscriptionid=subscription.subscriptionid | 
            
              | 324 |             LEFT JOIN biblio ON serial.biblionumber=biblio.biblionumber | 
            
              | 325 |             LEFT JOIN aqbooksellers ON subscription.aqbooksellerid=aqbooksellers.id | 
            
              | 326 |             WHERE serial.serialid IN ( | 
            
              | 327 |         } | 
        
          | 376 |           . join( ",", @$externalid ) . ")"; | 328 |           . join( ",", @$externalid ) . ")"; | 
            
              |  |  | 329 |     } | 
            
              | 330 |  | 
            
              | 331 |     if ( $type eq 'claimacquisition' or $type eq 'claimissues' ) { | 
        
          | 377 |         my $sthorders = $dbh->prepare($strsth); | 332 |         my $sthorders = $dbh->prepare($strsth); | 
        
          | 378 |         $sthorders->execute; | 333 |         $sthorders->execute; | 
          
            
              | 379 |         my $dataorders = $sthorders->fetchall_arrayref( {} ); | 334 |         my @fields = map { | 
            
              | 380 |         parseletter( $letter, 'aqbooksellers', | 335 |             $sthorders->{mysql_table}[$_] . "." . $sthorders->{NAME}[$_] } | 
            
              | 381 |             $dataorders->[0]->{aqbooksellerid} ); | 336 |             (0 .. $#{$sthorders->{NAME}} ) ; | 
            
              | 382 |         my $sthbookseller = | 337 |  | 
            
              | 383 |           $dbh->prepare("select * from aqbooksellers where id=?"); | 338 |         my @orders_infos; | 
            
              | 384 |         $sthbookseller->execute( $dataorders->[0]->{aqbooksellerid} ); | 339 |         while ( my $row = $sthorders->fetchrow_arrayref() ) { | 
            
              | 385 |         my $databookseller = $sthbookseller->fetchrow_hashref; | 340 |             my %rec = (); | 
            
              |  |  | 341 |             @rec{@fields} = @$row; | 
            
              | 342 |             push @orders_infos, \%rec; | 
            
              | 343 |         } | 
        
          | 386 |  | 344 |  | 
        
          | 387 |         # parsing branch info | 345 |         # parsing branch info | 
        
          | 388 |         my $userenv = C4::Context->userenv; | 346 |         my $userenv = C4::Context->userenv; | 
  
    | Lines 391-449
          sub SendAlerts {
      
      
        Link Here | 
        
          | 391 |         # parsing librarian name | 349 |         # parsing librarian name | 
        
          | 392 |         $letter->{content} =~ s/<<LibrarianFirstname>>/$userenv->{firstname}/g; | 350 |         $letter->{content} =~ s/<<LibrarianFirstname>>/$userenv->{firstname}/g; | 
        
          | 393 |         $letter->{content} =~ s/<<LibrarianSurname>>/$userenv->{surname}/g; | 351 |         $letter->{content} =~ s/<<LibrarianSurname>>/$userenv->{surname}/g; | 
          
            
              | 394 |         $letter->{content} =~ | 352 |         $letter->{content} =~ s/<<LibrarianEmailaddress>>/$userenv->{emailaddress}/g; | 
            
              | 395 |           s/<<LibrarianEmailaddress>>/$userenv->{emailaddress}/g; | 353 |  | 
            
              | 396 |         foreach my $data ( @{$dataorders} ) { | 354 |         # Get Fields remplacement | 
            
              | 397 |             if ( $letter->{content} =~ m/(<<.*>>)/ ) { | 355 |         my $order_format = $1 if ( $letter->{content} =~ m/(<order>.*<\/order>)/xms ); | 
            
              | 398 |                 my $line = $1; | 356 |  | 
            
              | 399 |                 foreach my $field ( keys %{$data} ) { | 357 |         # Foreach field to remplace | 
            
              | 400 |                     $line =~ s/(<<[^\.]+.$field>>)/$data->{$field}/; | 358 |         while ( $letter->{content} =~ m/<<([^>]*)>>/g ) { | 
            
              |  |  | 359 |             my $field = $1; | 
            
              | 360 |             my $value = $orders_infos[0]->{$field} || ""; | 
            
              | 361 |             $value = sprintf("%.2f", $value) if $field =~ /price/; | 
            
              | 362 |             $letter->{content} =~ s/<<$field>>/$value/g; | 
            
              | 363 |         } | 
            
              | 364 |  | 
            
              | 365 |         if ( $order_format ) { | 
            
              | 366 |             # For each order | 
            
              | 367 |             foreach my $infos ( @orders_infos ) { | 
            
              | 368 |                 my $order_content = $order_format; | 
            
              | 369 |                 # We replace by value | 
            
              | 370 |                 while ( $order_content =~ m/<<([^>]*)>>/g ) { | 
            
              | 371 |                     my $field = $1; | 
            
              | 372 |                     my $value = $infos->{$field} || ""; | 
            
              | 373 |                     $value = sprintf("%.2f", $value) if $field =~ /price/; | 
            
              | 374 |                     $order_content =~ s/(<<$field>>)/$value/g; | 
        
          | 401 |                 } | 375 |                 } | 
          
            
              | 402 |                 $letter->{content} =~ s/(<<.*>>)/$line\n$1/; | 376 |                 $order_content =~ s/<\/{0,1}?order>//g; | 
            
              |  |  | 377 |                 $letter->{content} =~ s/<order>.*<\/order>/$order_content\n$order_format/xms; | 
        
          | 403 |             } | 378 |             } | 
            
              |  |  | 379 |             $letter->{content} =~ s/<order>.*<\/order>//xms; | 
        
          | 404 |         } | 380 |         } | 
          
            
              | 405 |         $letter->{content} =~ s/<<[^>]*>>//g; | 381 |  | 
        
          | 406 |         my $innerletter = $letter; | 382 |         my $innerletter = $letter; | 
        
          | 407 |  | 383 |  | 
        
          | 408 |         # ... then send mail | 384 |         # ... then send mail | 
          
            
              | 409 |         if (   $databookseller->{bookselleremail} | 385 |         if (   $orders_infos[0]->{'aqbooksellers.bookselleremail'} | 
            
              | 410 |             || $databookseller->{contemail} ) { | 386 |             || $orders_infos[0]->{'aqbooksellers.contemail'} ) { | 
            
              | 411 |             my $mail_to = $databookseller->{bookselleremail}; | 387 |             my $to = $orders_infos[0]->{'aqbooksellers.bookselleremail'}; | 
            
              | 412 |             if ($databookseller->{contemail}) { | 388 |             $to .= ", " if $to; | 
            
              | 413 |                 if (!$mail_to) { | 389 |             $to .= $orders_infos[0]->{'aqbooksellers.contemail'} || ""; | 
            
              | 414 |                     $mail_to = $databookseller->{contemail}; |  |  | 
            
              | 415 |                 } else { | 
            
              | 416 |                     $mail_to .= q|,|; | 
            
              | 417 |                     $mail_to .= $databookseller->{contemail}; | 
            
              | 418 |                 } | 
            
              | 419 |             } | 
            
              | 420 |             my $mail_subj = $innerletter->{title}; | 
            
              | 421 |             my $mail_msg  = $innerletter->{content}; | 
            
              | 422 |             $mail_msg  ||= q{}; | 
            
              | 423 |             $mail_subj ||= q{}; | 
            
              | 424 |  | 
        
          | 425 |             my %mail = ( | 390 |             my %mail = ( | 
          
            
              | 426 |                 To => $mail_to, | 391 |                 To             => $to, | 
            
              | 427 |                 From    => $userenv->{emailaddress}, | 392 |                 From           => $userenv->{emailaddress}, | 
            
              | 428 |                 Subject => $mail_subj, | 393 |                 Subject        => "" . $innerletter->{title}, | 
            
              | 429 |                 Message => $mail_msg, | 394 |                 Message        => "" . $innerletter->{content}, | 
        
          | 430 |                 'Content-Type' => 'text/plain; charset="utf8"', | 395 |                 'Content-Type' => 'text/plain; charset="utf8"', | 
        
          | 431 |             ); | 396 |             ); | 
        
          | 432 |             sendmail(%mail) or carp $Mail::Sendmail::error; | 397 |             sendmail(%mail) or carp $Mail::Sendmail::error; | 
          
            
              | 433 |             logaction( | 398 |             warn "sending to $mail{To} From $mail{From} subj $mail{Subject} Mess $mail{Message}"; | 
            
              | 434 |                 "ACQUISITION", | 399 |             if ( C4::Context->preference("LetterLog") ) { | 
            
              | 435 |                 "CLAIM ISSUE", | 400 |                 logaction( "ACQUISITION", "Send Acquisition claim letter", "", "order list : " . join( ",", @$externalid ) . "\n$innerletter->{title}\n$innerletter->{content}" ) if $type eq 'claimacquisition'; | 
            
              | 436 |                 undef, | 401 |                 logaction( "ACQUISITION", "CLAIM ISSUE", undef, "To=" . $mail{To} . " Title=" . $innerletter->{title} . " Content=" . $innerletter->{content} ) if $type eq 'claimissues'; | 
            
              | 437 |                 "To=" | 402 |             } | 
            
              | 438 |                   . $databookseller->{contemail} | 403 |         } else { | 
            
              | 439 |                   . " Title=" | 404 |             die "This bookseller has no email\n"; | 
            
              | 440 |                   . $innerletter->{title} |  |  | 
            
              | 441 |                   . " Content=" | 
            
              | 442 |                   . $innerletter->{content} | 
            
              | 443 |             ) if C4::Context->preference("LetterLog"); | 
        
          | 444 |         } | 405 |         } | 
          
            
              | 445 |     }     | 406 |  | 
            
              | 446 |    # send an "account details" notice to a newly created user  | 407 |         warn "sending to From $userenv->{emailaddress} subj $innerletter->{title} Mess $innerletter->{content}"; | 
            
              |  |  | 408 |     } | 
            
              | 409 |  | 
            
              | 410 |     # send an "account details" notice to a newly created user | 
        
          | 447 |     elsif ( $type eq 'members' ) { | 411 |     elsif ( $type eq 'members' ) { | 
        
          | 448 |         # must parse the password special, before it's hashed. | 412 |         # must parse the password special, before it's hashed. | 
        
          | 449 |         $letter->{content} =~ s/<<borrowers.password>>/$externalid->{'password'}/g; | 413 |         $letter->{content} =~ s/<<borrowers.password>>/$externalid->{'password'}/g; |