From 333624f6c217a6f241e25cf4ff174abed6010a1c Mon Sep 17 00:00:00 2001
From: Elliott Davis <elliott@bywatersolutions.com>
Date: Thu, 5 Jul 2012 09:46:54 -0500
Subject: [PATCH] Bug 8033 : This patch adds print slips to self checkout.

To Test:

Sign in to self checkout.
Enter a barcode and click submit.
Click the finish button
You should be prompted with a message asking if you would like a receipt.
If you click OK you should be taken to the page with the receipt.
If you click Cancel you should not see the reciept and you should be logged out.

http://bugs.koha-community.org/show_bug.cgi?id=8033
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>

Added copyright to print slip for SCO

Modified POD and copyright.  Also perltidied

http://bugs.koha-community.org/show_bug.cgi?id=8033

updated print slip option to show on the click of the finish button instead of the submit button

Signed-off-by: Elliott Davis <elliott@test.bywatersolutions.com>
---
 .../opac-tmpl/prog/en/modules/sco/printslip.tt     |   26 ++++++++
 .../opac-tmpl/prog/en/modules/sco/sco-main.tt      |   18 +++++-
 opac/sco/printslip.pl                              |   68 ++++++++++++++++++++
 opac/sco/sco-main.pl                               |    1 +
 4 files changed, 111 insertions(+), 2 deletions(-)
 create mode 100644 koha-tmpl/opac-tmpl/prog/en/modules/sco/printslip.tt
 create mode 100755 opac/sco/printslip.pl

diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/sco/printslip.tt b/koha-tmpl/opac-tmpl/prog/en/modules/sco/printslip.tt
new file mode 100644
index 0000000..eaa0d30
--- /dev/null
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/sco/printslip.tt
@@ -0,0 +1,26 @@
+[% INCLUDE 'doc-head-open.inc' %]
+<title>[% title %]</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<link rel="shortcut icon" href="[% IF ( IntranetFavicon ) %][% IntranetFavicon %][% ELSE %][% themelang %]/includes/favicon.ico[% END %]" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" href="[% themelang %]/css/print.css" />
+[% IF stylesheet %]
+<link rel="stylesheet" type="text/css" href="[% stylesheet %]" />
+[% END %]
+
+<script language="javascript">
+    function printThenClose() {
+        window.print();
+        window.close();
+    }
+</script>
+</head>
+<body id="circ_printslip" class="circ" onload="printThenClose();">
+<div id="receipt">
+
+[% IF plain %]
+<pre>
+[% slip %]
+</pre>
+[% ELSE %]
+[% slip %]
+[% END %]
diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/sco/sco-main.tt b/koha-tmpl/opac-tmpl/prog/en/modules/sco/sco-main.tt
index 66cace5..c8fae51 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/sco/sco-main.tt
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/sco/sco-main.tt
@@ -8,6 +8,7 @@
 <script type="text/javascript" src="[% yuipath %]/container/container-min.js"></script>
 <script type="text/javascript" src="[% yuipath %]/menu/menu-min.js"></script>
 <script type="text/javascript" src="[% themelang %]/lib/jquery/jquery.js"></script>
+<script type="text/javascript" src="[% themelang %]/lib/jquery/jquery-ui.js"></script>
 <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
 <script type="text/javascript">//<![CDATA[
 function sco_init(valid_session) {
@@ -19,7 +20,12 @@ function dofocus() {    // named function req'd for body onload event by some FF
     // alert("dofocus called");
     $(".focus:last").select();
 }
+var slip_re = /slip/;
+function printx_window(print_type) {
+  var handler = print_type.match(slip_re) ? "printslip" : "moremember";
 
+  return false;
+}
 function checkout_confirm(patronid) {
     var   barcode = $("#barcode").val();
     // alert("checkout_confirm('" + patronid + "') called for barcode '" + barcode + "'");
@@ -92,7 +98,15 @@ $(document).ready(function() {
     });
 });
 //]]>
-
+$(document).ready(function(){
+    $("#logout_form input.finish").click(function(){
+    if(confirm("Would you like to print a receipt?")){
+        window.open("/cgi-bin/koha/sco/printslip.pl?borrowernumber=[% borrowernumber %]&amp;print=qslip");
+    }
+    $(this).parent().attr("action", "/cgi-bin/koha/sco/sco-main.pl?op=logout");
+    $(this).parent().submit();
+    });
+});
 </script>
 [% IF ( opacuserjs ) %]<script type="text/javascript">[% opacuserjs %]</script>[% END %]
 
@@ -227,7 +241,7 @@ Sorry, this self-checkout station has lost authentication.  Please contact the a
 	<input type="hidden" name="valid_session" value="1" />
 	<input type="submit" value="Submit" class="submit" /></fieldset>
 	</form>
-	<div><form method="post" action="/cgi-bin/koha/sco/sco-main.pl?op=logout" ><input type="submit" value="Finish" class="finish" /></form></div>
+    <div><form method="post" action="#" id="logout_form"><input type="submit" value="Finish" class="finish" /></form></div>
 	</div> <!-- sco_entry --> <!-- newcheckout -->
   [% IF ( display_patron_image ) %]</div> <!-- /yui-u first -->[% END %]
   [% IF ( display_patron_image ) %]
diff --git a/opac/sco/printslip.pl b/opac/sco/printslip.pl
new file mode 100755
index 0000000..e8a5685
--- /dev/null
+++ b/opac/sco/printslip.pl
@@ -0,0 +1,68 @@
+#!/usr/bin/perl
+
+# Copyright 2012 ByWater Solutions
+#
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+=head1 printslip.pl
+
+Script to allow SCO patrons to print a receipt for their checkout.
+
+It is called from sco-main.pl
+
+=cut
+
+
+use strict;
+use warnings;
+use CGI;
+use C4::Context;
+use C4::Auth qw/:DEFAULT get_session/;
+use C4::Output;
+use C4::Members;
+use C4::Koha;
+
+my $input = new CGI;
+my $sessionID = $input->cookie("CGISESSID");
+my $session = get_session($sessionID);
+
+my $print = $input->param('print');
+my $error = $input->param('error');
+
+# patrons still need to be able to print receipts
+my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
+    {
+        template_name   => "/sco/printslip.tmpl",
+        query           => $input,
+        type            => "opac",
+    }
+);
+
+my $borrowernumber = $input->param('borrowernumber');
+my $branch=C4::Context->userenv->{'branch'};
+my ($slip, $is_html);
+if (my $letter = IssueSlip ($session->param('branch') || $branch, $borrowernumber, $print eq "qslip")) {
+    $slip = $letter->{content};
+    $is_html = $letter->{is_html};
+}
+
+$template->{VARS}->{slip} = $slip;
+$template->{VARS}->{plain} = !$is_html;
+$template->{VARS}->{title} = "Print Receipt for $borrowernumber";
+$template->{VARS}->{stylesheet} = C4::Context->preference("SlipCSS");
+$template->{VARS}->{error} = $error;
+
+output_html_with_http_headers $input, $cookie, $template->output;
diff --git a/opac/sco/sco-main.pl b/opac/sco/sco-main.pl
index 26a8774..f53fcda 100755
--- a/opac/sco/sco-main.pl
+++ b/opac/sco/sco-main.pl
@@ -239,6 +239,7 @@ if ($borrower->{cardnumber}) {
         patronlogin => $patronlogin,
         patronpw => $patronpw,
         noitemlinks => 1 ,
+    borrowernumber => $borrower->{'borrowernumber'},
     );
     my $inputfocus = ($return_only      == 1) ? 'returnbook' :
                      ($confirm_required == 1) ? 'confirm'    : 'barcode' ;
-- 
1.7.2.5