#!/usr/bin/perl

use strict;
use CGI;

use JSON;
use Opals::Context;
use Opals::User;
use	Opals::Transaction qw(
    trans_getUnpaidChargeList
    trans_getBalance
    trans_adjustCharge
    trans_getCharge
);
use Opals::Locale qw(
    loc_getMsgFile
    loc_write
);

 
my $dbh = Opals::Context->dbh();
END { $dbh->disconnect(); }

my $request=getRequest();
my $cgi    = CGI->new;
my ($errCode, $ck, $resp) = Opals::User::user_currentUser($dbh, $cgi);

my $uid         =$request->{'uid'};
my $waiveList   =$request->{'waiveList'};
my $note        =$request->{'note'};

my $respUid     =$resp->{'uid'};

foreach my $charge(@$waiveList){
    my $newCharge=trans_getCharge($dbh,$charge->{'cid'});
    $newCharge->{'waive'}= $charge->{'waiveAmount'};
    $newCharge = trans_adjustCharge($dbh,$respUid,$newCharge,$note);
}

my $unpaidList =trans_getUnpaidChargeList($dbh,$uid);
my $balance =trans_getBalance($dbh,$uid);
print "Content-type: text/plain\n\n";

my $rs={status=>1,unpaidList=>$unpaidList,balance=>$balance};
print   to_json($rs);

#-------------------------------------------------------------------------------
sub getRequest{

  my $request;
  if ($ENV{'REQUEST_METHOD'} eq "POST") {
        my $json ="";
        while (<STDIN>) {
            $json .= $_;
        }
        $request = decode_json($json);
    }
   return $request;
}
