use C4::Items;
my $borrower = { borrowernumber => 1 };
my $item = C4::Items::GetItem(1);
- my $letter = C4::Letters::getletter('circulation', 'CHECKOUT');
- C4::Letters::parseletter($letter, 'biblio', $item->{biblionumber});
- C4::Letters::parseletter($letter, 'biblioitems', $item->{biblionumber});
+ my $letter = C4::Letters::GetPreparedLetter (
+ module => 'circulation',
+ letter_code => 'CHECKOUT',
+ branchcode => $branch,
+ tables => {
+ 'biblio', $item->{biblionumber},
+ 'biblioitems', $item->{biblionumber},
+ },
+ );
C4::Message->enqueue($letter, $borrower->{borrowernumber}, 'email');
How to update a borrower's last checkout message:
=head1 DESCRIPTION
-This module presents an OO interface to the message_queue. Previously, you could
-only add messages to the message_queue via C<C4::Letters::EnqueueMessage()>. With
-this module, you can also get previously inserted messages, manipulate them, and
-save them back to the database.
+This module presents an OO interface to the message_queue. Previously,
+you could only add messages to the message_queue via
+C<C4::Letters::EnqueueMessage()>. With this module, you can also get
+previously inserted messages, manipulate them, and save them back to the
+database.
=cut
}
-=head3 C4::Message->enqueue($letter, $borrowernumber, $transport)
+=head3 C4::Message->enqueue($letter, $borrower, $transport)
This is a front-end for C<C4::Letters::EnqueueLetter()> that adds metadata to
the message.
=cut
-# C4::Message->enqueue($letter, $borrowernumber, $transport)
+# C4::Message->enqueue($letter, $borrower, $transport)
sub enqueue {
- my ($class, $letter, $borrowernumber, $transport) = @_;
- my $metadata = _make_metadata($letter);
+ my ($class, $letter, $borrower, $transport) = @_;
+ my $metadata = _metadata($letter);
+ my $to_address = _to_address($borrower, $transport);
$letter->{metadata} = Dump($metadata);
- carp 'enqueuing...';
+ #carp "enqueuing... to $to_address";
C4::Letters::EnqueueLetter({
- letter => $letter,
- borrowernumber => $borrowernumber,
- message_transport_type => $transport,
+ letter => $letter,
+ borrowernumber => $borrower->{borrowernumber},
+ message_transport_type => $transport,
+ to_address => $to_address,
});
}
-# _make_metadata($letter) -- return the letter split into head/body/footer
-sub _make_metadata {
+# based on message $transport, pick an appropriate address to send to
+sub _to_address {
+ my ($borrower, $transport) = @_;
+ my $address;
+ if ($transport eq 'email') {
+ $address = $borrower->{email}
+ || $borrower->{emailpro}
+ || $borrower->{B_email};
+ } elsif ($transport eq 'sms') {
+ $address = $borrower->{smsalertnumber}
+ || $borrower->{phone}
+ || $borrower->{phonepro}
+ || $borrower->{B_phone};
+ } else {
+ warn "'$transport' is an unknown message transport.";
+ }
+ if (not defined $address) {
+ warn "An appropriate $transport address "
+ . "for borrower $borrower->{userid} "
+ . "could not be found.";
+ }
+ return $address;
+}
+
+# _metadata($letter) -- return the letter split into head/body/footer
+sub _metadata {
my ($letter) = @_;
if ($letter->{content} =~ /----/) {
my ($header, $body, $footer) = split(/----\r?\n?/, $letter->{content});
my $item;
if (ref($letter_or_item)) {
my $letter = $letter_or_item;
- my $metadata = _make_metadata($letter);
+ my $metadata = _metadata($letter);
$item = $metadata->{body}->[0];
} else {
$item = $letter_or_item;
=head3 $message->message_id
+=cut
+
=head3 $message->borrowernumber
+=cut
+
=head3 $message->subject
+=cut
+
=head3 $message->content
+=cut
+
=head3 $message->metadata
+=cut
+
=head3 $message->letter_code
+=cut
+
=head3 $message->message_transport_type
+=cut
+
=head3 $message->status
+=cut
+
=head3 $message->time_queued
+=cut
+
=head3 $message->to_address
+=cut
+
=head3 $message->from_address
+=cut
+
=head3 $message->content_type
=cut
John Beppu <john.beppu@liblime.com>
=cut
-
-# Local Variables: ***
-# mode: cperl ***
-# indent-tabs-mode: nil ***
-# cperl-close-paren-offset: -4 ***
-# cperl-continued-statement-offset: 4 ***
-# cperl-indent-level: 4 ***
-# cperl-indent-parens-as-block: t ***
-# cperl-tab-always-indent: nil ***
-# End: ***
-# vim:tabstop=8 softtabstop=4 shiftwidth=4 shiftround expandtab