- # begin transaction
- my $nextaccntno = getnextacctno($borrowernumber);
-
- # get lines with outstanding amounts to offset
- my $sth = $dbh->prepare(
- "SELECT * FROM accountlines
- WHERE (borrowernumber = ?) AND (amountoutstanding >0)
- ORDER BY date"
- );
- $sth->execute($borrowernumber);
-
- # print $query;
- # offset transactions
- while ( ( $accdata = $sth->fetchrow_hashref ) and ( $amountleft > 0 ) ) {
- if ( $accdata->{'amountoutstanding'} < $amountleft ) {
- $newamtos = 0;
- $amountleft -= $accdata->{'amountoutstanding'};
- }
- else {
- $newamtos = $accdata->{'amountoutstanding'} - $amountleft;
- $amountleft = 0;
- }
- my $thisacct = $accdata->{accountlines_id};
- my $usth = $dbh->prepare(
- "UPDATE accountlines SET amountoutstanding= ?
- WHERE (accountlines_id = ?)"
- );
- $usth->execute( $newamtos, $thisacct );
- $usth->finish;
- $usth = $dbh->prepare(
- "INSERT INTO accountoffsets
- (borrowernumber, accountno, offsetaccount, offsetamount)
- VALUE (?,?,?,?)"
- );
- $usth->execute( $borrowernumber, $accdata->{'accountno'},
- $nextaccntno, $newamtos );
- $usth->finish;
- }
- $sth->finish;
- $type = "Credit " . $type;
- UpdateStats( $user, $type, $data, $user, '', '', $borrowernumber );
- $amountleft *= -1;
- return ($amountleft);
-
-}
-
-=head2 refund
-
-#FIXME : DEPRECATED SUB
- This subroutine tracks payments and/or credits against fines/charges
- using the accountoffsets table, which is not used consistently in
- Koha's fines management, and so is not used in 3.0
-
-=cut
-
-sub refund {
-
- #here we update both the accountoffsets and the account lines
- my ( $borrowernumber, $data ) = @_;
- my $dbh = C4::Context->dbh;
- my $newamtos = 0;
- my $accdata = "";
- my $amountleft = $data * -1;
-
- # begin transaction
- my $nextaccntno = getnextacctno($borrowernumber);
-
- # get lines with outstanding amounts to offset
- my $sth = $dbh->prepare(
- "SELECT * FROM accountlines
- WHERE (borrowernumber = ?) AND (amountoutstanding<0)
- ORDER BY date"
- );
- $sth->execute($borrowernumber);
-
- # print $amountleft;
- # offset transactions
- while ( ( $accdata = $sth->fetchrow_hashref ) and ( $amountleft < 0 ) ) {
- if ( $accdata->{'amountoutstanding'} > $amountleft ) {
- $newamtos = 0;
- $amountleft -= $accdata->{'amountoutstanding'};
- }
- else {
- $newamtos = $accdata->{'amountoutstanding'} - $amountleft;
- $amountleft = 0;
- }
-
- # print $amountleft;
- my $thisacct = $accdata->{accountlines_id};
- my $usth = $dbh->prepare(
- "UPDATE accountlines SET amountoutstanding= ?
- WHERE (accountlines_id = ?)"
- );
- $usth->execute( $newamtos, $thisacct );
- $usth->finish;
- $usth = $dbh->prepare(
- "INSERT INTO accountoffsets
- (borrowernumber, accountno, offsetaccount, offsetamount)
- VALUES (?,?,?,?)"
- );
- $usth->execute( $borrowernumber, $accdata->{'accountno'},
- $nextaccntno, $newamtos );
- $usth->finish;
- }
- $sth->finish;
- return ($amountleft);