Browse Source

Bug 30619: Add email receipt to POS

This patch adds the ability to use email receipts with the point of sale
module.

To test:
1) Configure your Koha to enable the point of sale system.
2) Add an email template to the 'Point of sale > RECEIPT' notice.
3) Add some charges on point of sale and pay for them.
3a) You should now see a new 'Email receipt' button next to the 'Print
receipt' option.
3b) Clicking the button will display a modal to enter the anonymous
users email address
3c) Enter an email address and confirm to send the email

Sponsored-by: Martin Renvoize <martin.renvoize@gmail.com>

Signed-off-by: David Nind <david@davidnind.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22.11.x
Isobel Graham 7 months ago
committed by Tomas Cohen Arazi
parent
commit
b97ff5d746
Signed by: tomascohen GPG Key ID: 0A272EA1B2F3C15F
  1. 41
      koha-tmpl/intranet-tmpl/prog/en/modules/pos/pay.tt
  2. 58
      pos/pay.pl

41
koha-tmpl/intranet-tmpl/prog/en/modules/pos/pay.tt

@ -51,7 +51,7 @@
[% IF payment_id && !Koha.Preference('FinePaymentAutoPopup') %]
<div class="dialog alert audio-alert-action">
Payment received: <a target="_blank" href="/cgi-bin/koha/pos/printreceipt.pl?action=print&accountlines_id=[% payment_id | uri %]&collected=[% collected | uri %]&change=[% change | uri %]" class="btn btn-default btn-xs"><i class="fa fa-print"></i> Print receipt</a>
Payment received: <a target="_blank" href="/cgi-bin/koha/pos/printreceipt.pl?action=print&accountlines_id=[% payment_id | uri %]&collected=[% collected | uri %]&change=[% change | uri %]" class="btn btn-default btn-xs"><i class="fa fa-print"></i> Print receipt</a> <a type="button" data-toggle="modal" data-target="#emailReceiptModal" class="btn btn-default btn-xs"><i class="fa fa-envelope"></i> Email receipt</a>
</div>
[% END %]
@ -168,7 +168,40 @@
</div>
</div> <!-- /.row -->
<!-- Modal -->
<!-- Email receipt modal -->
<div class="modal" id="emailReceiptModal" tabindex="-1" role="dialog" aria-labelledby="emailReceiptLabel">
<form id="email_form" action="/cgi-bin/koha/pos/pay.pl" method="get" enctype="multipart/form-data" class="validated">
<input type="hidden" name="payment_id" id="payment_id" value="[% payment_id | uri %]">
<input type="hidden" name="collected" id="collected" value="[% collected | uri %]">
<input type="hidden" name="change" id="change" value="[% change | uri %]">"
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="closebtn" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="emailReceiptLabel">Email receipt</h4>
</div>
<div class="modal-body">
<fieldset class="rows">
<ol>
<li>
<label class="required" for="toaddr">Email address: </label>
<input type="email" id="toaddr" name="toaddr" required="required">
<span class="required">Required</span>
</li>
</ol>
</fieldset> <!-- /.rows -->
</div> <!-- /.modal-body -->
<div class="modal-footer">
<input type="hidden" name="action" value="send">
<button type="submit" class="btn btn-default">Confirm</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
</div> <!-- /.modal-footer -->
</div> <!-- /.modal-content -->
</div> <!-- /.modal-dialog -->
</form> <!-- /#email_form -->
</div> <!-- /#emailReceiptModal
<!-- Change modal -->
<div id="confirm_change_form" class="modal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
@ -189,8 +222,8 @@
</div>
[% IF payment_id && Koha.Preference('FinePaymentAutoPopup') %]
<!-- Automatic Print Receipt -->
<a id="printReceipt" style="display: none" href="#"></a>
<!-- Automatic Print Receipt -->
<a id="printReceipt" style="display: none" href="#"></a>
[% END %]
[% MACRO jsinclude BLOCK %]

58
pos/pay.pl

@ -23,8 +23,9 @@ use CGI;
use JSON qw( from_json );
use C4::Auth qw( get_session get_template_and_user );
use C4::Output qw( output_html_with_http_headers );
use C4::Context;
use C4::Letters qw( GetPreparedLetter EnqueueLetter SendQueuedMessages );
use C4::Output qw( output_html_with_http_headers );
use Koha::Account::DebitTypes;
use Koha::AuthorisedValues;
@ -39,16 +40,17 @@ my $session = get_session($sessionID);
my ( $template, $loggedinuser, $cookie, $user_flags ) = get_template_and_user(
{
template_name => 'pos/pay.tt',
query => $input,
type => 'intranet',
flagsrequired => { cash_management => 'takepayment' },
template_name => 'pos/pay.tt',
query => $input,
type => 'intranet',
flagsrequired => { cash_management => 'takepayment' },
}
);
my $logged_in_user = Koha::Patrons->find($loggedinuser) or die "Not logged in";
my $library_id = C4::Context->userenv->{'branch'};
my $registerid = $input->param('registerid');
my $library_id = C4::Context->userenv->{'branch'};
my $registerid = $input->param('registerid');
my $action = $input->param('action') || '';
my $invoice_types =
Koha::Account::DebitTypes->search_with_library_limits(
@ -82,6 +84,48 @@ if ( $total_paid and $total_paid ne '0.00' ) {
);
}
if ( $action eq 'send' ) {
my $payment_id = $input->param('payment_id');
my $change = $input->param('change');
my $collected = $input->param('collected');
my $toaddr = $input->param('toaddr');
# Create our letter from the template
my $letter = GetPreparedLetter(
module => 'pos',
letter_code => 'RECEIPT',
branchcode => C4::Context->userenv->{'branch'},
message_transport_type => 'email',
tables => {
credits => $payment_id,
},
substitute => {
collected => $collected,
change => $change
}
);
# Add letter to the queue
my $message_id = EnqueueLetter(
{
letter => $letter,
message_transport_type => 'email',
from_address => C4::Context->preference('KohaAdminEmailAddress'),
to_address => $toaddr,
}
);
# Send immediately
SendQueuedMessages( { message_id => $message_id } );
# Set variables for template to allow printing still
$template->param(
payment_id => $payment_id,
collected => $collected,
change => $change
);
}
output_html_with_http_headers( $input, $cookie, $template->output );
1;

Loading…
Cancel
Save