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>
This commit is contained in:
parent
e99e3a9550
commit
b97ff5d746
|
|
@ -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">×</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
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…
Reference in New Issue