+ # 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 accountlines_id = ? AND borrowernumber = ?
+ ";
+ $sth = $dbh->prepare( $query );
+ $sth->execute( $accountlines_id, $borrowernumber );
+
+ if ( C4::Context->preference("FinesLog") ) {
+ logaction("FINES", 'MODIFY', $borrowernumber, Dumper({
+ action => 'fee_writeoff',
+ borrowernumber => $borrowernumber,
+ accountlines_id => $accountlines_id,
+ manager_id => $manager_id,
+ }));
+ }
+
+ $query ="
+ INSERT INTO accountlines
+ ( borrowernumber, accountno, itemnumber, date, amount, description, accounttype, manager_id, note )
+ VALUES ( ?, ?, ?, NOW(), ?, 'Writeoff', 'W', ?, ? )
+ ";
+ $sth = $dbh->prepare( $query );
+ my $acct = getnextacctno($borrowernumber);
+ $sth->execute( $borrowernumber, $acct, $itemnum, $amount, $manager_id, $payment_note );
+
+ if ( C4::Context->preference("FinesLog") ) {
+ logaction("FINES", 'CREATE',$borrowernumber,Dumper({
+ action => 'create_writeoff',
+ borrowernumber => $borrowernumber,
+ accountno => $acct,
+ amount => 0 - $amount,
+ accounttype => 'W',
+ itemnumber => $itemnum,
+ accountlines_paid => [ $accountlines_id ],
+ manager_id => $manager_id,
+ }));
+ }
+
+ UpdateStats( $branch, 'writeoff', $amount, q{}, q{}, q{}, $borrowernumber );
+
+}