X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=C4%2FAccounts.pm;h=b7aef01ec8b49962a909f082fa8eb6d736d2ce87;hb=2a6f09cdc8018d18ccf94efd6bb9d0f7688833e2;hp=e822b6a0737737440326caec5187becd85bf7240;hpb=f9e4c6424aaf07c0e7480f6e6e463c787beeb15c;p=koha_gimpoz diff --git a/C4/Accounts.pm b/C4/Accounts.pm index e822b6a073..b7aef01ec8 100644 --- a/C4/Accounts.pm +++ b/C4/Accounts.pm @@ -33,12 +33,20 @@ BEGIN { 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 ); } @@ -201,10 +209,10 @@ sub makepayment { 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; } @@ -725,6 +733,8 @@ sub recordpayment_selectaccts { # 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; } @@ -743,18 +753,62 @@ sub makepartialpayment { # 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)