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 $item_format = $1 if ( $letter->{content} =~ m/(<item>.*<\/item>)/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 ( $item_format ) { |
366 |
# For each order |
367 |
foreach my $infos ( @orders_infos ) { |
368 |
my $order_content = $item_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}?item>//g; |
|
|
377 |
$letter->{content} =~ s/<item>.*<\/item>/$order_content\n$item_format/xms; |
403 |
} |
378 |
} |
|
|
379 |
$letter->{content} =~ s/<item>.*<\/item>//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 have 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; |