View | Details | Raw Unified | Return to bug 11622
Collapse All | Expand All

(-)a/installer/data/mysql/atomicupdate/bug_11622.sql (+7 lines)
Line 0 Link Here
1
INSERT IGNORE INTO systempreferences (variable, value, options, explanation, type ) VALUES
2
( 'EnablePayPalOpacPayments',  '0', NULL ,  'Enables the ability to pay fees and fines from  the OPAC via PayPal',  'YesNo' ),
3
( 'PayPalChargeDescription',  'Koha fee payment', NULL ,  'This preference defines what the user will see the charge listed as in PayPal',  'Free' ),
4
( 'PayPalPwd',  '', NULL ,  'Your PayPal API password',  'Free' ),
5
( 'PayPalSandboxMode',  '1', NULL ,  'If enabled, the system will use PayPal''s sandbox server for testing, rather than the production server.',  'YesNo' ),
6
( 'PayPalSignature',  '', NULL ,  'Your PayPal API signature',  'Free' ),
7
( 'PayPalUser',  '', NULL ,  'Your PayPal API username ( email address )',  'Free' );
(-)a/installer/data/mysql/sysprefs.sql (+6 lines)
Lines 343-348 INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` Link Here
343
('PatronSelfRegistrationExpireTemporaryAccountsDelay','0',NULL,'If PatronSelfRegistrationDefaultCategory is enabled, this system preference controls how long a patron can have a temporary status before the account is deleted automatically. It is an integer value representing a number of days to wait before deleting a temporary patron account. Setting it to 0 disables the deleting of temporary accounts.','Integer'),
343
('PatronSelfRegistrationExpireTemporaryAccountsDelay','0',NULL,'If PatronSelfRegistrationDefaultCategory is enabled, this system preference controls how long a patron can have a temporary status before the account is deleted automatically. It is an integer value representing a number of days to wait before deleting a temporary patron account. Setting it to 0 disables the deleting of temporary accounts.','Integer'),
344
('PatronSelfRegistrationVerifyByEmail','0',NULL,'If enabled, any patron attempting to register themselves via the OPAC will be required to verify themselves via email to activate his or her account.','YesNo'),
344
('PatronSelfRegistrationVerifyByEmail','0',NULL,'If enabled, any patron attempting to register themselves via the OPAC will be required to verify themselves via email to activate his or her account.','YesNo'),
345
('PatronsPerPage','20','20','Number of Patrons Per Page displayed by default','Integer'),
345
('PatronsPerPage','20','20','Number of Patrons Per Page displayed by default','Integer'),
346
('EnablePayPalOpacPayments',  '0', NULL ,  'Enables the ability to pay fees and fines from  the OPAC via PayPal',  'YesNo' ),
347
('PayPalChargeDescription',  'Koha fee payment', NULL ,  'This preference defines what the user will see the charge listed as in PayPal',  'Free'),
348
('PayPalPwd',  '', NULL ,  'Your PayPal API password',  'Free'),
349
('PayPalSandboxMode',  '1', NULL ,  'If enabled, the system will use PayPal''s sandbox server for testing, rather than the production server.',  'YesNo'),
350
('PayPalSignature',  '', NULL ,  'Your PayPal API signature',  'Free'),
351
('PayPalUser',  '', NULL ,  'Your PayPal API username ( email address )',  'Free'),
346
('Persona','0','','Use Mozilla Persona for login','YesNo'),
352
('Persona','0','','Use Mozilla Persona for login','YesNo'),
347
('PrefillItem','0','','When a new item is added, should it be prefilled with last created item values?','YesNo'),
353
('PrefillItem','0','','When a new item is added, should it be prefilled with last created item values?','YesNo'),
348
('previousIssuesDefaultSortOrder','asc','asc|desc','Specify the sort order of Previous Issues on the circulation page','Choice'),
354
('previousIssuesDefaultSortOrder','asc','asc|desc','Specify the sort order of Previous Issues on the circulation page','Choice'),
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref (+30 lines)
Lines 705-707 OPAC: Link Here
705
                subtype: Subtypes
705
                subtype: Subtypes
706
                sorting: Sorting
706
                sorting: Sorting
707
                location: Location and availability
707
                location: Location and availability
708
    Payments:
709
        -
710
            - pref: EnablePayPalOpacPayments
711
              default: 1
712
              choices:
713
                  yes: Allow
714
                  no: "Don't allow"
715
            - "patrons to make payments from the OPAC via PayPal in"
716
            - pref: PayPalSandboxMode 
717
              default: 1
718
              choices:
719
                  yes: "Sandbox"
720
                  no: "Production"
721
            - "mode."
722
        -
723
            - "The email address to recieve PayPal payments is "
724
            - pref: PayPalUser
725
              class: long
726
        -
727
            - "The password for the PayPal account to recieve payments is "
728
            - pref: PayPalPwd
729
              class: long
730
        -
731
            - "The signature for the PayPal account to recieve payments is "
732
            - pref: PayPalSignature
733
              class: long
734
        -
735
            - "The patron should see the charge description as "
736
            - pref: PayPalChargeDescription 
737
              class: long
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-account-pay-return.tt (+52 lines)
Line 0 Link Here
1
[% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog › Your payment
2
[% INCLUDE 'doc-head-close.inc' %]
3
[% BLOCK cssinclude %][% END %]
4
</head>
5
6
<body id="opac-account-pay-return" class="scrollto">
7
[% INCLUDE 'masthead.inc' %]
8
9
<div class="main">
10
    <ul class="breadcrumb">
11
        <li><a href="/cgi-bin/koha/opac-main.pl">Home</a> <span class="divider">&rsaquo;</span></li>
12
        <li><a href="/cgi-bin/koha/opac-user.pl">[% borrower.firstname %] [% borrower.surname %]</a> <span class="divider">&rsaquo;</span></li>
13
        <li><a href="#">Your payment</a></li>
14
    </ul>
15
16
    <div class="container-fluid">
17
        <div class="row-fluid">
18
            <div class="span2">
19
                <div id="navigation">
20
                    [% INCLUDE 'navigation.inc' IsPatronPage=1 %]
21
                </div>
22
            </div>
23
            <div class="span10">
24
                <div id="useraccount" class="maincontent">
25
                    [% IF error %]
26
                        <div id="error" class="dialog alert">
27
                            <p><strong>Error:</strong> there was an problem processing your payment</p>
28
29
                            [% IF error == "PAYPAL_UNABLE_TO_CONNECT" %]
30
                                <p>Unable to connect to PayPal.</p>
31
                                <p>Please try again later.</p>
32
                            [% ELSIF error == "PAYPAL_ERROR_PROCESSING" %]
33
                                <p>Unable to verify payment.</p>
34
                                <p>Please contact the library to verify your payment.</p>
35
                            [% END %]
36
                        </div>
37
                    [% ELSIF credit %]
38
                        <div class="dialog message">
39
                            <p><strong>Payment applied:</strong> your payment of [% amount %] has been applied to your account</p>
40
                        </div>
41
                    [% END %]
42
43
                    <a href="/cgi-bin/koha/opac-account.pl">Return to fine details</a>
44
                </div> <!-- / #useraccount -->
45
            </div> <!-- / .span10 -->
46
        </div> <!-- / .row-fluid -->
47
    </div> <!-- / .container-fluid -->
48
</div> <!-- / .main -->
49
50
[% INCLUDE 'opac-bottom.inc' %]
51
52
[% BLOCK jsinclude %][% END %]
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-account.tt (-2 / +67 lines)
Lines 1-5 Link Here
1
[% USE Koha %]
1
[% USE Koha %]
2
[% USE KohaDates %]
2
[% USE KohaDates %]
3
[% SET ENABLE_OPAC_PAYMENTS = Koha.Preference('EnablePayPalOpacPayments') %]
3
4
4
[% INCLUDE 'doc-head-open.inc' %]
5
[% INCLUDE 'doc-head-open.inc' %]
5
<title>[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Your fines and charges</title>
6
<title>[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Your fines and charges</title>
Lines 26-37 Link Here
26
            </div>
27
            </div>
27
            <div class="span10">
28
            <div class="span10">
28
                <div id="useraccount" class="maincontent">
29
                <div id="useraccount" class="maincontent">
30
31
                    [% IF message %]
32
                        <div class="alert alert-info">
33
                            [% IF message == 'valid_payment' %]
34
                                <p>Your payment of $[% message_value %] has been processed sucessfully!</p>
35
                            [% ELSIF message == 'duplicate_payment' %]
36
                                <p>A payment with the transaction id <i>[% message_value %]</i> has already been posted to an account.</p>
37
                                <p>Please contact a librarian for details.</p>
38
                            [% ELSIF message == 'invalid_payment' %]
39
                                <p>The transaction id <i>[% message_value %]</i> for this payment is invalid.</p>
40
                                <p>Please contact a librarian for details.</p>
41
                            [% END %]
42
                        </div>
43
                    [% END %]
44
29
                    <h3>Fines and charges</h3>
45
                    <h3>Fines and charges</h3>
30
46
31
                    [% IF ( ACCOUNT_LINES ) %]
47
                    [% IF ( ACCOUNT_LINES ) %]
48
                        <form method="post" action="opac-account-pay.pl" class="form-horizontal">
32
                        <table class="table table-bordered table-striped">
49
                        <table class="table table-bordered table-striped">
33
                            <thead>
50
                            <thead>
34
                                <tr>
51
                                <tr>
52
                                    [% IF ENABLE_OPAC_PAYMENTS %]<th>&nbsp;</th>[% END %]
35
                                    <th>Date</th>
53
                                    <th>Date</th>
36
                                    <th>Description</th>
54
                                    <th>Description</th>
37
                                    <th>Fine amount</th>
55
                                    <th>Fine amount</th>
Lines 41-47 Link Here
41
59
42
                            <tfoot>
60
                            <tfoot>
43
                            <tr>
61
                            <tr>
44
                                <th class="sum" colspan="3">Total due</th>
62
                                [%- IF ENABLE_OPAC_PAYMENTS -%]
63
                                    [%- SET COLSPAN = 4 -%]
64
                                [%- ELSE -%]
65
                                    [%- SET COLSPAN = 3 -%]
66
                                [%- END -%]
67
                                <th class="sum" colspan="[% COLSPAN %]">Total due</th>
45
                                <td class="sum">[% total %]</td>
68
                                <td class="sum">[% total %]</td>
46
                            </tr>
69
                            </tr>
47
                            </tfoot>
70
                            </tfoot>
Lines 49-54 Link Here
49
                            <tbody>
72
                            <tbody>
50
                                [% FOREACH ACCOUNT_LINE IN ACCOUNT_LINES %]
73
                                [% FOREACH ACCOUNT_LINE IN ACCOUNT_LINES %]
51
                                    [% IF ( ACCOUNT_LINE.odd ) %]<tr class="highlight">[% ELSE %]<tr>[% END %]
74
                                    [% IF ( ACCOUNT_LINE.odd ) %]<tr class="highlight">[% ELSE %]<tr>[% END %]
75
                                        [% IF ENABLE_OPAC_PAYMENTS %]
76
                                            <td>
77
                                                [% IF ACCOUNT_LINE.amountoutstanding > 0 %]
78
                                                    <input name="accountline" type="checkbox" class="checkbox-pay" id="checkbox-pay-[% ACCOUNT_LINE.accountlines_id %]" value="[% ACCOUNT_LINE.accountlines_id %]">
79
                                                [% END %]
80
                                            </td>
81
                                        [% END %]
52
                                        <td>[% ACCOUNT_LINE.date | $KohaDates %]</td>
82
                                        <td>[% ACCOUNT_LINE.date | $KohaDates %]</td>
53
                                        <td>
83
                                        <td>
54
                                            [% SWITCH ACCOUNT_LINE.accounttype %]
84
                                            [% SWITCH ACCOUNT_LINE.accounttype %]
Lines 82-87 Link Here
82
                            </tbody>
112
                            </tbody>
83
113
84
                        </table>
114
                        </table>
115
116
                            [% IF ENABLE_OPAC_PAYMENTS %]
117
                                <fieldset>
118
                                    <legend>Pay selected fines and charges</legend>
119
                                        <span class="help-block"><h3>Payment method</h3></span>
120
                                        <div class="control-group">
121
                                            <label class="radio">
122
                                                <input type="radio" name="payment_method" id="payment_method-paypal" value="paypal" checked="checked">
123
                                                <!-- PayPal Logo --><a href="https://www.paypal.com/webapps/mpp/paypal-popup" title="How PayPal Works" onclick="javascript:window.open('https://www.paypal.com/webapps/mpp/paypal-popup','WIPaypal','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=1060, height=700'); return false;"><img src="https://www.paypalobjects.com/webstatic/mktg/logo/AM_SbyPP_mc_vs_dc_ae.jpg" border="0" alt="PayPal Acceptance Mark"></a><!-- PayPal Logo -->
124
                                            </label>
125
                                        </div>
126
                                        <!-- look to the future
127
                                        <div class="control-group">
128
                                            <label class="radio">
129
                                                <input type="radio" name="payment_method" id="payment_method-paypal" value="paypal" checked="checked">
130
                                                PayPal
131
                                            </label>
132
                                        </div>
133
                                        -->
134
135
                                        <div class="control-group">
136
                                            <input type="hidden" id="payment-amount" name="payment_amount" value="0" />
137
                                            <button id="submit-pay" type="submit" class="btn" disabled="disabled">Make payment</button>
138
                                        </div>
139
                                </fieldset>
140
                            [% END %]
141
                        </form>
85
                    [% ELSE %]
142
                    [% ELSE %]
86
                        <h4>You have no fines or charges</h4>
143
                        <h4>You have no fines or charges</h4>
87
                    [% END %]
144
                    [% END %]
Lines 92-95 Link Here
92
</div> <!-- / .main -->
149
</div> <!-- / .main -->
93
150
94
[% INCLUDE 'opac-bottom.inc' %]
151
[% INCLUDE 'opac-bottom.inc' %]
95
[% BLOCK jsinclude %][% END %]
152
[% BLOCK jsinclude %]
153
<script type="text/javascript">
154
$( document ).ready(function() {
155
    $('.checkbox-pay').change( function() {
156
        $("#submit-pay").prop('disabled', ! $('.checkbox-pay:checked').length );
157
    });
158
});
159
</script>
160
[% END %]
(-)a/opac/opac-account-pay-paypal-return.pl (+110 lines)
Line 0 Link Here
1
#!/usr/bin/perl
2
3
# Copyright ByWater Solutions 2015
4
#
5
# This file is part of Koha.
6
#
7
# Koha is free software; you can redistribute it and/or modify it under the
8
# terms of the GNU General Public License as published by the Free Software
9
# Foundation; either version 3 of the License, or (at your option) any later
10
# version.
11
#
12
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14
# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License along
17
# with Koha; if not, write to the Free Software Foundation, Inc.,
18
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
20
use strict;
21
use warnings;
22
use utf8;
23
24
use CGI;
25
use HTTP::Request::Common;
26
use LWP::UserAgent;
27
use URL::Encode qw(url_params_mixed);
28
29
use C4::Auth;
30
use C4::Output;
31
use C4::Accounts;
32
use C4::Members;
33
use Koha::Database;
34
35
my $cgi = new CGI;
36
37
unless ( C4::Context->preference('EnablePayPalOpacPayments') ) {
38
    print $cgi->redirect("/cgi-bin/koha/errors/404.pl");
39
    exit;
40
}
41
42
my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
43
    {
44
        template_name   => "opac-account-pay-return.tt",
45
        query           => $cgi,
46
        type            => "opac",
47
        authnotrequired => 0,
48
        flagsrequired   => { borrow => 1 },
49
        debug           => 1,
50
    }
51
);
52
53
my $token    = $cgi->param('token');
54
my $payer_id = $cgi->param('PayerID');
55
my $amount   = $cgi->param('amount');
56
my @accountlines = $cgi->param('accountlines');
57
58
my $ua = LWP::UserAgent->new;
59
60
my $url =
61
  C4::Context->preference('PayPalSandboxMode')
62
  ? 'https://api-3t.sandbox.paypal.com/nvp'
63
  : 'https://api-3t.paypal.com/nvp';
64
65
my $nvp_params = {
66
    'USER'      => C4::Context->preference('PayPalUser'),
67
    'PWD'       => C4::Context->preference('PayPalPwd'),
68
    'SIGNATURE' => C4::Context->preference('PayPalSignature'),
69
70
    # API Version and Operation
71
    'METHOD'  => 'DoExpressCheckoutPayment',
72
    'VERSION' => '82.0',
73
74
    # API specifics for DoExpressCheckout
75
    'PAYMENTREQUEST_0_PAYMENTACTION' => 'Sale',
76
    'PAYERID'                        => $payer_id,
77
    'TOKEN'                          => $token,
78
    'PAYMENTREQUEST_0_AMT'           => $amount,
79
};
80
81
my $response = $ua->request( POST $url, $nvp_params );
82
83
if ( $response->is_success ) {
84
    my $params = url_params_mixed( $response->decoded_content );
85
86
    if ( $params->{ACK} eq "Success" ) {
87
        $amount = $params->{PAYMENTINFO_0_AMT};
88
        $template->param( amount => $amount );
89
90
        my $accountlines_rs = Koha::Database->new()->schema()->resultset('Accountline');
91
        foreach my $accountlines_id ( @accountlines ) {
92
            my $accountline = $accountlines_rs->find( $accountlines_id );
93
            makepayment( $accountlines_id, $borrowernumber, undef, $accountline->amountoutstanding, undef, undef, 'PayPal' );
94
        }
95
    }
96
    else {
97
        $template->param( error => "PAYPAL_ERROR_PROCESSING" );
98
    }
99
100
}
101
else {
102
    $template->param( error => "PAYPAL_UNABLE_TO_CONNECT" );
103
}
104
105
$template->param(
106
    borrower    => GetMemberDetails($borrowernumber),
107
    accountview => 1
108
);
109
110
output_html_with_http_headers( $cgi, $cookie, $template->output );
(-)a/opac/opac-account-pay.pl (+128 lines)
Line 0 Link Here
1
#!/usr/bin/perl
2
3
# Copyright ByWater Solutions 2015
4
#
5
# This file is part of Koha.
6
#
7
# Koha is free software; you can redistribute it and/or modify it under the
8
# terms of the GNU General Public License as published by the Free Software
9
# Foundation; either version 3 of the License, or (at your option) any later
10
# version.
11
#
12
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14
# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License along
17
# with Koha; if not, write to the Free Software Foundation, Inc.,
18
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
20
use utf8;
21
22
use Modern::Perl;
23
24
use CGI;
25
use HTTP::Request::Common;
26
use LWP::UserAgent;
27
use URL::Encode qw(url_encode url_params_mixed);
28
use URI;
29
30
use C4::Auth;
31
use C4::Output;
32
use C4::Context;
33
use Koha::Database;
34
35
my $cgi = new CGI;
36
37
unless ( C4::Context->preference('EnablePayPalOpacPayments') ) {
38
    print $cgi->redirect("/cgi-bin/koha/errors/404.pl");
39
    exit;
40
}
41
42
my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
43
    {
44
        template_name   => "opac-account-pay-return.tt",
45
        query           => $cgi,
46
        type            => "opac",
47
        authnotrequired => 0,
48
        flagsrequired   => { borrow => 1 },
49
        debug           => 1,
50
    }
51
);
52
53
my $payment_method = $cgi->param('payment_method');
54
my @accountlines = $cgi->param('accountline');
55
56
my $amount_to_pay =
57
  Koha::Database->new()->schema()->resultset('Accountline')->search( { accountlines_id => { -in => \@accountlines } } )
58
  ->get_column('amountoutstanding')->sum();
59
$amount_to_pay = sprintf( "%.2f", $amount_to_pay );
60
61
my $error = 0;
62
if ( $payment_method eq 'paypal' ) {
63
    my $ua = LWP::UserAgent->new;
64
65
    my $amount = url_encode($amount_to_pay);
66
67
    my $url =
68
      C4::Context->preference('PayPalSandboxMode')
69
      ? 'https://api-3t.sandbox.paypal.com/nvp'
70
      : 'https://api-3t.paypal.com/nvp';
71
72
    my $opac_base_url = C4::Context->preference('OPACBaseURL');
73
74
    my $return_url = URI->new( $opac_base_url . "/cgi-bin/koha/opac-account-pay-paypal-return.pl" );
75
    $return_url->query_form( { amount => $amount, accountlines => \@accountlines } );
76
77
    my $cancel_url = URI->new( $opac_base_url . "/cgi-bin/koha/opac-account.pl" );
78
79
    my $nvp_params = {
80
        'USER'      => C4::Context->preference('PayPalUser'),
81
        'PWD'       => C4::Context->preference('PayPalPwd'),
82
        'SIGNATURE' => C4::Context->preference('PayPalSignature'),
83
84
        # API Version and Operation
85
        'METHOD'  => 'SetExpressCheckout',
86
        'VERSION' => '82.0',
87
88
        # API specifics for SetExpressCheckout
89
        'NOSHIPPING'                            => 1,
90
        'REQCONFIRMSHIPPING'                    => 0,
91
        'ALLOWNOTE'                             => 0,
92
        'BRANDNAME'                             => C4::Context->preference('LibraryName'),
93
        'CANCELURL'                             => $cancel_url->as_string(),
94
        'RETURNURL'                             => $return_url->as_string(),
95
        'PAYMENTREQUEST_0_AMT'                  => $amount_to_pay,
96
        'PAYMENTREQUEST_0_PAYMENTACTION'        => 'Sale',
97
        'PAYMENTREQUEST_0_ALLOWEDPAYMENTMETHOD' => 'InstantPaymentOnly',
98
        'PAYMENTREQUEST_0_DESC'                 => C4::Context->preference('PayPalChargeDescription'),
99
    };
100
101
    my $response = $ua->request( POST $url, $nvp_params );
102
103
    if ( $response->is_success ) {
104
        my $params = url_params_mixed( $response->decoded_content );
105
106
        if ( $params->{ACK} eq "Success" ) {
107
            my $token = $params->{TOKEN};
108
109
            my $redirect_url =
110
              C4::Context->preference('PayPalSandboxMode')
111
              ? "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token="
112
              : "https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=";
113
            print $cgi->redirect( $redirect_url . $token );
114
115
        }
116
        else {
117
            $template->param( error => "PAYPAL_ERROR_PROCESSING" );
118
            $error = 1;
119
        }
120
121
    }
122
    else {
123
        $template->param( error => "PAYPAL_UNABLE_TO_CONNECT" );
124
        $error = 1;
125
    }
126
}
127
128
output_html_with_http_headers( $cgi, $cookie, $template->output ) if $error;
(-)a/opac/opac-account.pl (-5 / +5 lines)
Lines 22-28 Link Here
22
use strict;
22
use strict;
23
use CGI qw ( -utf8 );
23
use CGI qw ( -utf8 );
24
use C4::Members;
24
use C4::Members;
25
use C4::Circulation;
26
use C4::Auth;
25
use C4::Auth;
27
use C4::Output;
26
use C4::Output;
28
use warnings;
27
use warnings;
Lines 68-77 foreach my $row (@$accts) { Link Here
68
    $num++;
67
    $num++;
69
}
68
}
70
69
71
$template->param (
70
$template->param(
72
    ACCOUNT_LINES => $accts,
71
    ACCOUNT_LINES => $accts,
73
    total => sprintf( "%.2f", $total ),
72
    total         => sprintf( "%.2f", $total ),
74
	accountview => 1
73
    accountview   => 1,
74
    message       => $query->param('message') || q{},
75
    message_value => $query->param('message_value') || q{},
75
);
76
);
76
77
77
output_html_with_http_headers $query, $cookie, $template->output;
78
output_html_with_http_headers $query, $cookie, $template->output;
78
- 

Return to bug 11622