require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(
- &recordpayment &makepayment &manualinvoice
- &getnextacctno &reconcileaccount &getcharges &ModNote &getcredits
- &getrefunds &chargelostitem
+ &recordpayment
+ &makepayment
+ &manualinvoice
+ &getnextacctno
+ &reconcileaccount
+ &getcharges
+ &ModNote
+ &getcredits
+ &getrefunds
+ &chargelostitem
&ReversePayment
- makepartialpayment
- recordpayment_selectaccts
+ &makepartialpayment
+ &recordpayment_selectaccts
+ &WriteOffFee
);
}
my $ins =
$dbh->prepare(
"INSERT
- INTO accountlines (borrowernumber, accountno, date, amount, description, accounttype, amountoutstanding)
- VALUES ( ?, ?, now(), ?, 'Payment,thanks', 'Pay', 0)"
+ INTO accountlines (borrowernumber, accountno, date, amount, itemnumber, description, accounttype, amountoutstanding, manager_id)
+ VALUES ( ?, ?, now(), ?, ?, 'Payment,thanks', 'Pay', 0, ?)"
);
- $ins->execute($borrowernumber, $nextaccntno, $payment);
+ $ins->execute($borrowernumber, $nextaccntno, $payment, $data->{'itemnumber'}, $manager_id);
$ins->finish;
}
#check to see what accounttype
if ( $data->{'accounttype'} eq 'Rep' || $data->{'accounttype'} eq 'L' ) {
- ReturnLostItem( $borrowernumber, $data->{'itemnumber'} );
+ C4::Circulation::ReturnLostItem( $borrowernumber, $data->{'itemnumber'} );
}
}
# fills in
sub makepartialpayment {
my ( $borrowernumber, $accountno, $amount, $user, $branch ) = @_;
+ my $manager_id = 0;
+ $manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv;
if (!$amount || $amount < 0) {
return;
}
# create new line
my $insert = 'INSERT INTO accountlines (borrowernumber, accountno, date, amount, '
- . 'description, accounttype, amountoutstanding) '
- . ' VALUES (?, ?, now(), ?, ?, ?, 0)';
+ . 'description, accounttype, amountoutstanding, itemnumber, manager_id) '
+ . ' VALUES (?, ?, now(), ?, ?, ?, 0, ?, ?)';
$dbh->do( $insert, undef, $borrowernumber, $nextaccntno, $amount,
- "Payment, thanks - $user", 'Pay');
+ "Payment, thanks - $user", 'Pay', $data->{'itemnumber'}, $manager_id);
UpdateStats( $user, 'payment', $amount, '', '', '', $borrowernumber, $accountno );
return;
}
+=head2 WriteOff
+
+ WriteOff( $borrowernumber, $accountnum, $itemnum, $accounttype, $amount, $branch );
+
+Write off a fine for a patron.
+C<$borrowernumber> is the patron's borrower number.
+C<$accountnum> is the accountnumber of the fee to write off.
+C<$itemnum> is the itemnumber of of item whose fine is being written off.
+C<$accounttype> is the account type of the fine being written off.
+C<$amount> is a floating-point number, giving the amount that is being written off.
+C<$branch> is the branchcode of the library where the writeoff occurred.
+=cut
+
+sub WriteOffFee {
+ my ( $borrowernumber, $accountnum, $itemnum, $accounttype, $amount, $branch ) = @_;
+ $branch ||= C4::Context->userenv->{branch};
+ my $manager_id = 0;
+ $manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv;
+
+ # if no item is attached to fine, make sure to store it as a NULL
+ $itemnum ||= undef;
+
+ my ( $sth, $query );
+ my $dbh = C4::Context->dbh();
+
+ $query = "
+ UPDATE accountlines SET amountoutstanding = 0
+ WHERE accountno = ? AND borrowernumber = ?
+ ";
+ $sth = $dbh->prepare( $query );
+ $sth->execute( $accountnum, $borrowernumber );
+
+ $query ="
+ INSERT INTO accountlines
+ ( borrowernumber, accountno, itemnumber, date, amount, description, accounttype, manager_id )
+ VALUES ( ?, ?, ?, NOW(), ?, 'Writeoff', 'W', ? )
+ ";
+ $sth = $dbh->prepare( $query );
+ my $acct = getnextacctno($borrowernumber);
+ $sth->execute( $borrowernumber, $acct, $itemnum, $amount, $manager_id );
+
+ UpdateStats( $branch, 'writeoff', $amount, q{}, q{}, q{}, $borrowernumber );
+
+}
END { } # module clean-up code here (global destructor)