#!/usr/bin/perl
use strict;

use Opals::Context;
use JSON;
use Opals::Template qw(
    tmpl_read
    tmpl_write
    tmpl_preference
);

use Opals::Date qw(
    date_parse
    date_text
    date_today
    date_profileList
    date_now
);
use Opals::User qw(
    user_getInformationById
    user_list

);
use Opals::Tb_Transactions qw(
    trans_getUnpaidFineList
    trans_getBalance
    trans_doPayment
    trans_getTaxTable
    trans_doRefund
    trans_getUnrefundLostList
 
    trans_getTotalCharge
    trans_getTotalForgiven
    trans_getTotalPaid
    trans_getTotalRefundLost
    trans_getTotalRefund
    
    trans_getDetailBalance
);
use Opals::Locale qw(
    loc_getMsgFile
    loc_write
);

my $dbh = Opals::Context->dbh();
END { $dbh->disconnect(); }
my $cgi    = CGI->new;
my $input  = $cgi->Vars();
#my $uid    = $cgi->cookie('borrower');#$input->{'uid'};
my $op     = $input->{'op'};

my $offset    =  0; #$input->{'offset'};
my $size      =  10; #$input->{'size'};
my $dir       =  'asc' ;#$input->{'dir'};
 
my $pref = tmpl_preference($dbh);
my $libname  =  $pref->{'libname'};
   $libname =~ s/<br>/ /g;
my ($permission, $cookieList, $template) = tmpl_read(
        {
            dbh             => $dbh,
            cgi             => $cgi,
            tmplFile        => '/txtbk/circ/payment.tmpl',
            reqPermission   => 'tb_fine|tb_payment',
        }
);

my $dateToday   = date_now();
# See User.pm for the list of permissions
if ($permission && $permission->{'tb_fine'}) {
    my $uid = $input->{'uid'};
    my ($userInfo, $guardian) = user_getInformationById($dbh, $uid);
    my $patronInfo;
    if(defined $userInfo){
        $patronInfo={};
        foreach my $f (qw(uid userbarcode sid username firstname lastname nickname phone homeroom teacher grade program studies notes status expired categorycode email)){
            $patronInfo->{$f}=$userInfo->{$f};
        }
    }
    my $balance = trans_getBalance($dbh,$uid,0);
    #$patronInfo->{'balance'} = $balance>0?$balance:0;
    $patronInfo->{'refund'} = $balance<0?sprintf("%.2f",abs($balance)):0;
    $patronInfo->{'balance'} = sprintf("%.2f",$balance);
    #$patronInfo->{'balance'} = sprintf("%.2f",100);

    my @transList = trans_getUnpaidFineList($dbh,$uid,'');
    my @refundList =();
    if ($balance<0 ) {
        @refundList = trans_getUnrefundLostList($dbh,$uid,$dir);
    }
    $template->param(
        patron      => to_json($patronInfo),
        transList    => to_json(\@transList),
        refundList   => to_json(\@refundList)
    );
}#//if ($uid >= 0)
tmpl_write($dbh, $cgi, $cookieList, $template); 

