Currently it's not possible to include information about which
issue has arrived in the serial notification notice the patron
can subscribe to from the OPAC.
The patch makes the fields from the subscription and serial
table available to the notice template.
In order to be able to print information about the correct
issue, the GetAlert has been modified to expext the serialid
as externalid when the module is issue.
git grep SendAlerts (only call with 'issue' is in Serial.pm)
To test:
- Add a subscription, select a patron notification template
- Search for the record in the OPAC
- Go to the subscription tab - More details
- Subscribe to the notification
- Edit the notice template you selected for the subscription
- add fields from subscription
- add fields from serial (serial.serialseq has the issue
information)
- Receive an issue for the subscription
- Check that you have received the notification and that
all information has been printed correctly
NOTE: notice is sent directly, not through the message_queue
Followed test plan, works as expected.
Signed-off-by: Marc VĂ©ron <veron@veron.ch>
Signed-off-by: Jonathan Druart <jonathan.druart@koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
if ( $type eq 'issue' ) {
# prepare the letter...
if ( $type eq 'issue' ) {
# prepare the letter...
- # search the biblionumber
+ # search the subscriptionid
- "SELECT biblionumber FROM subscription WHERE subscriptionid=?");
+ "SELECT subscriptionid FROM serial WHERE serialid=?");
$sth->execute($externalid);
$sth->execute($externalid);
- my ($biblionumber) = $sth->fetchrow
+ my ($subscriptionid) = $sth->fetchrow
or warn( "No subscription for '$externalid'" ),
return;
or warn( "No subscription for '$externalid'" ),
return;
+ # search the biblionumber
+ $sth =
+ $dbh->prepare(
+ "SELECT biblionumber FROM subscription WHERE subscriptionid=?");
+ $sth->execute($subscriptionid);
+ my ($biblionumber) = $sth->fetchrow
+ or warn( "No biblionumber for '$subscriptionid'" ),
+ return;
+
my %letter;
# find the list of borrowers to alert
my %letter;
# find the list of borrowers to alert
- my $alerts = getalert( '', 'issue', $externalid );
+ my $alerts = getalert( '', 'issue', $subscriptionid );
foreach (@$alerts) {
my $borinfo = C4::Members::GetMember('borrowernumber' => $_->{'borrowernumber'});
my $email = $borinfo->{email} or next;
foreach (@$alerts) {
my $borinfo = C4::Members::GetMember('borrowernumber' => $_->{'borrowernumber'});
my $email = $borinfo->{email} or next;
'biblio' => $biblionumber,
'biblioitems' => $biblionumber,
'borrowers' => $borinfo,
'biblio' => $biblionumber,
'biblioitems' => $biblionumber,
'borrowers' => $borinfo,
+ 'subscription' => $subscriptionid,
+ 'serial' => $externalid,
},
want_librarian => 1,
) or return;
},
want_librarian => 1,
) or return;
($table eq 'aqorders' ) ? "SELECT * FROM $table WHERE ordernumber = ?" :
($table eq 'opac_news' ) ? "SELECT * FROM $table WHERE idnew = ?" :
($table eq 'borrower_modifications') ? "SELECT * FROM $table WHERE verification_token = ?" :
($table eq 'aqorders' ) ? "SELECT * FROM $table WHERE ordernumber = ?" :
($table eq 'opac_news' ) ? "SELECT * FROM $table WHERE idnew = ?" :
($table eq 'borrower_modifications') ? "SELECT * FROM $table WHERE verification_token = ?" :
+ ($table eq 'subscription') ? "SELECT * FROM $table WHERE subscriptionid = ?" :
+ ($table eq 'serial') ? "SELECT * FROM $table WHERE serialid = ?" :
undef ;
unless ($query) {
warn "ERROR: No _parseletter_sth query for table '$table'";
undef ;
unless ($query) {
warn "ERROR: No _parseletter_sth query for table '$table'";
# check if an alert must be sent... (= a letter is defined & status became "arrived"
if ( $subscription->{letter} && $status == ARRIVED && $oldstatus != ARRIVED ) {
require C4::Letters;
# check if an alert must be sent... (= a letter is defined & status became "arrived"
if ( $subscription->{letter} && $status == ARRIVED && $oldstatus != ARRIVED ) {
require C4::Letters;
- C4::Letters::SendAlerts( 'issue', $subscription->{subscriptionid}, $subscription->{letter} );
+ C4::Letters::SendAlerts( 'issue', $serialid, $subscription->{letter} );
push @{$field_selection}, {value => "biblio.$_", text => ucfirst $_ };
}
}
push @{$field_selection}, {value => "biblio.$_", text => ucfirst $_ };
}
}
+ elsif ($module eq 'serial') {
+ push @{$field_selection}, add_fields('branches', 'biblio', 'biblioitems', 'borrowers', 'subscription', 'serial');
+ }
elsif ($module eq 'suggestions') {
push @{$field_selection}, add_fields('suggestions', 'borrowers', 'biblio');
}
elsif ($module eq 'suggestions') {
push @{$field_selection}, add_fields('suggestions', 'borrowers', 'biblio');
}