@@ -, +, @@ --- .../bootstrap/en/includes/browser-strings.inc | 34 ++ .../opac-tmpl/bootstrap/en/modules/opac-account.tt | 411 +++++++++++++++++--- .../opac-tmpl/bootstrap/images/details_close.png | Bin 0 -> 841 bytes .../opac-tmpl/bootstrap/images/details_open.png | Bin 0 -> 881 bytes opac/opac-account.pl | 46 +-- opac/opac-user.pl | 17 +- 6 files changed, 407 insertions(+), 101 deletions(-) create mode 100644 koha-tmpl/opac-tmpl/bootstrap/en/includes/browser-strings.inc create mode 100644 koha-tmpl/opac-tmpl/bootstrap/images/details_close.png create mode 100644 koha-tmpl/opac-tmpl/bootstrap/images/details_open.png --- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/browser-strings.inc +++ a/koha-tmpl/opac-tmpl/bootstrap/en/includes/browser-strings.inc @@ -0,0 +1,34 @@ +[% USE AuthorisedValues %] + --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-account.tt +++ a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-account.tt @@ -1,9 +1,13 @@ [% USE Koha %] [% USE KohaDates %] +[% USE Currency %] [% INCLUDE 'doc-head-open.inc' %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog › Your fines and charges [% INCLUDE 'doc-head-close.inc' %] [% BLOCK cssinclude %][% END %] + +[% INCLUDE 'browser-strings.inc' %] + [% INCLUDE 'bodytag.inc' bodyid='opac-account' bodyclass='scrollto' %] @@ -12,7 +16,7 @@
@@ -26,61 +30,57 @@

Fines and charges

+ [% IF credits || debits %] + +

+

Account balance: [% borrower.account_balance | $Currency %]

+

+ +
+
+ View payments + + + + + + + + + + + + + + + + + +
Fees
IDDescriptionTypeAmountOutstandingCreated onUpdated on
+
- [% IF ( ACCOUNT_LINES ) %] - - - - - - - - - - - - - - - - - - - [% FOREACH ACCOUNT_LINE IN ACCOUNT_LINES %] - [% IF ( ACCOUNT_LINE.odd ) %][% ELSE %][% END %] - - - [% IF ( ACCOUNT_LINE.amountcredit ) %] - [% IF ( ACCOUNT_LINE.amountoutstandingcredit ) %] - - [% END %] - - -
DateDescriptionFine amountAmount outstanding
Total due[% total %]
[% ACCOUNT_LINE.date | $KohaDates %] - [% SWITCH ACCOUNT_LINE.accounttype %] - [% CASE 'Pay' %]Payment, thanks - [% CASE 'Pay00' %]Payment, thanks (cash via SIP2) - [% CASE 'Pay01' %]Payment, thanks (VISA via SIP2) - [% CASE 'Pay02' %]Payment, thanks (credit card via SIP2) - [% CASE 'N' %]New card - [% CASE 'F' %]Fine - [% CASE 'A' %]Account management fee - [% CASE 'M' %]Sundry - [% CASE 'L' %]Lost item - [% CASE 'W' %]Writeoff - [% CASE 'FU' %]Accruing fine - [% CASE 'Rent' %]Rental fee - [% CASE 'FOR' %]Forgiven - [% CASE 'LR' %]Lost item fee refund - [% CASE 'PAY' %]Payment - [% CASE 'WO' %]Writeoff - [% CASE 'C' %]Credit - [% CASE 'CR' %]Credit - [% CASE %][% ACCOUNT_LINE.accounttype %] - [%- END -%] - [%- IF ACCOUNT_LINE.description %], [% ACCOUNT_LINE.description %][% END %] - [% IF ACCOUNT_LINE.title %]([% ACCOUNT_LINE.title %])[% END %] - [% ELSE %][% END %][% ACCOUNT_LINE.amount %][% ELSE %][% END %][% ACCOUNT_LINE.amountoutstanding %]
+
+ View fees + + + + + + + + + + + + + + + + + +
Payments
IDNotesTypeAmountRemainingCreated onUpdated on
+
+
[% ELSE %]

You have no fines or charges

[% END %] @@ -91,4 +91,305 @@
[% INCLUDE 'opac-bottom.inc' %] + +[% INCLUDE 'datatables.inc' %] + + + [% BLOCK jsinclude %][% END %] + +[% BLOCK format_data %] + [% FOREACH key IN data.result_source.columns %] + [% IF key.match('^amount') %] + "[% key %]": "[% data.$key FILTER $Currency %]", + [% ELSIF key.match('_on$') %] + "[% key %]": "[% data.$key | $KohaDates %]", + [% ELSE %] + "[% key %]": "[% data.$key %]", + [% END %] + [% END %] +[% END %] --- a/opac/opac-account.pl +++ a/opac/opac-account.pl @@ -18,7 +18,6 @@ # with Koha; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - use strict; use CGI qw ( -utf8 ); use C4::Members; @@ -39,40 +38,21 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( } ); -# get borrower information .... -my $borr = GetMemberDetails( $borrowernumber ); -my @bordat; -$bordat[0] = $borr; - -$template->param( BORROWER_INFO => \@bordat ); - -#get account details -my ( $total , $accts, $numaccts) = GetMemberAccountRecords( $borrowernumber ); - -for ( my $i = 0 ; $i < $numaccts ; $i++ ) { - $accts->[$i]{'amount'} = sprintf( "%.2f", $accts->[$i]{'amount'} || '0.00'); - if ( $accts->[$i]{'amount'} >= 0 ) { - $accts->[$i]{'amountcredit'} = 1; - } - $accts->[$i]{'amountoutstanding'} = - sprintf( "%.2f", $accts->[$i]{'amountoutstanding'} || '0.00' ); - if ( $accts->[$i]{'amountoutstanding'} >= 0 ) { - $accts->[$i]{'amountoutstandingcredit'} = 1; - } -} +my @debits = Koha::Database->new()->schema->resultset('AccountDebit')->search( + { 'me.borrowernumber' => $borrowernumber }, + { prefetch => { account_offsets => 'credit' } } +); -# add the row parity -my $num = 0; -foreach my $row (@$accts) { - $row->{'even'} = 1 if $num % 2 == 0; - $row->{'odd'} = 1 if $num % 2 == 1; - $num++; -} +my @credits = Koha::Database->new()->schema->resultset('AccountCredit')->search( + { 'me.borrowernumber' => $borrowernumber }, + { prefetch => { account_offsets => 'debit' } } +); -$template->param ( - ACCOUNT_LINES => $accts, - total => sprintf( "%.2f", $total ), - accountview => 1 +$template->param( + borrower => GetMemberDetails($borrowernumber), + debits => \@debits, + credits => \@credits, + accountview => 1 ); output_html_with_http_headers $query, $cookie, $template->output; --- a/opac/opac-user.pl +++ a/opac/opac-user.pl @@ -36,6 +36,7 @@ use C4::Letters; use C4::Branch; # GetBranches use Koha::DateUtils; use Koha::Borrower::Debarments qw(IsDebarred); +use Koha::Database; use constant ATTRIBUTE_SHOW_BARCODE => 'SHOW_BCODE'; @@ -46,6 +47,7 @@ use Date::Calc qw( ); my $query = new CGI; +my $schema = Koha::Database->new()->schema(); BEGIN { if (C4::Context->preference('BakerTaylorEnabled')) { @@ -165,6 +167,7 @@ my @overdues; my @issuedat; my $itemtypes = GetItemTypes(); my $issues = GetPendingIssues($borrowernumber); +my $account_debit_rs = $schema->resultset('AccountDebit'); if ($issues){ foreach my $issue ( sort { $b->{date_due}->datetime() cmp $a->{date_due}->datetime() } @{$issues} ) { # check for reserves @@ -173,19 +176,7 @@ if ($issues){ $issue->{'reserved'} = 1; } - my ( $total , $accts, $numaccts) = GetMemberAccountRecords( $borrowernumber ); - my $charges = 0; - foreach my $ac (@$accts) { - if ( $ac->{'itemnumber'} == $issue->{'itemnumber'} ) { - $charges += $ac->{'amountoutstanding'} - if $ac->{'accounttype'} eq 'F'; - $charges += $ac->{'amountoutstanding'} - if $ac->{'accounttype'} eq 'FU'; - $charges += $ac->{'amountoutstanding'} - if $ac->{'accounttype'} eq 'L'; - } - } - $issue->{'charges'} = $charges; + $issue->{'charges'} = $account_debit_rs->search({ borrowernumber => $borrowernumber, itemnumber => $issue->{'itemnumber'} })->get_column('amount_outstanding')->sum(); $issue->{'subtitle'} = GetRecordValue('subtitle', GetMarcBiblio($issue->{'biblionumber'}), GetFrameworkCode($issue->{'biblionumber'})); # check if item is renewable my ($status,$renewerror) = CanBookBeRenewed( $borrowernumber, $issue->{'itemnumber'} ); --