#!/usr/bin/perl
use strict;
use Opals::Context;
use Time::localtime;
use Opals::Template qw(
    tmpl_read
    tmpl_write
    tmpl_preference
);

use Opals::Date qw(
    date_text
);

use Opals::User qw(
    user_getInformationById

);
use Opals::Tb_Transactions qw(
    trans_getDetailBalance
    trans_getReceiptDetail
    trans_getUnpaidFineList
    trans_getTaxTable
     trans_getPreviousBalance

);

my $dbh = Opals::Context->dbh();
END { $dbh->disconnect(); }
my $cgi    = CGI->new;
my $input  = $cgi->Vars();


 
my $pref = tmpl_preference($dbh);
my $libname  =  $pref->{'libname'};
   $libname =~ s/<br>/ /g;
my ($permission, $cookie, $template) = tmpl_read(
        {
            dbh             => $dbh,
            cgi             => $cgi,
            tmplFile        => '/txtbk/circ/receipt.tmpl',
            reqPermission   => 'tb_fine',
        }
);

    my $tm = localtime;
    my $dateToday = sprintf("%04d-%02d-%02d", 
                            $tm->year+1900, 
                            ($tm->mon)+1, 
                            $tm->mday);

# See User.pm for the list of permissions
if ($permission && $permission->{'tb_fine'}) {
    my $tid = $input->{'tid'};
    
    my $receipt = trans_getReceiptDetail($dbh, $tid);
    my $idx=0;
    my $previousBalance =0.00;
    
    $template->param(
        receiptPayment =>($receipt->{'code'} == 4)?1:0,
        receiptRefund  =>($receipt->{'code'} == 8)?1:0,
        totalAmount    => $receipt->{'totalAmount'},
        totalCharge    => $receipt->{'totalCharge'},
        balance        => $receipt->{'balance'},
        previousPayment=> $receipt->{'previousPayment'},
        totalRefundLost=> $receipt->{'refundLost'},
        totalRefund    => $receipt->{'refund'},
        receiptDate    => $receipt->{'date'},
        dateToday      => date_text($dateToday,1),
    );

    if ($receipt->{'code'} == 8){
        $previousBalance = trans_getPreviousBalance($dbh,$receipt->{'uid'});
        $previousBalance = sprintf("%.2f",$previousBalance);
        $template->param(
            previousBalance => $previousBalance
        );
    }

    $template->param(transList           => $receipt->{'transList'}) if(defined $receipt->{'transList'});
    
    my ($userInfo, $guardian) = user_getInformationById($dbh, $receipt->{'uid'});
    $template->param(
        user_uid            => $userInfo->{'uid'},
        user_barcode        => $userInfo->{'userbarcode'},
        user_username       => $userInfo->{'username'},
        user_firstname      => $userInfo->{'firstname'},
        user_lastname       => $userInfo->{'lastname'},
        homeroom            => $userInfo->{'homeroom'},
        teacher             => $userInfo->{'teacher'},
        notes               => $userInfo->{'notes'},
        libname             => $libname,
    );

    ### get unpaid transactions ################
    my @transTbl = trans_getUnpaidFineList($dbh,$userInfo->{'uid'},"" );
    my $idx=0;
    foreach my $tr(@transTbl){
        $tr->{'idx'} =$idx++;
        $tr->{'barcode'} =~ s/^___//g;
        $tr->{'barcode'} =~ s/_\d\d\d$//g;
    }
    my @taxTbl =trans_getTaxTable($dbh);
    if(scalar(@taxTbl)>0){
        $template->param(taxTbl=>\@taxTbl);
    }
    $template->param(
        unpaidTransList  => \@transTbl,
        numTrans   => scalar(@transTbl),
        dateTodayStr  => $dateToday,
    );
   

}
    tmpl_write($dbh, $cgi, $cookie, $template); 

