Bug 7597 - Part 2 - move sub writeoff to C4::Accounts
Currently, the subroutine writeoff lives in pay.pl, which is a violation of the Koha coding guidelines, as it writes to the database. This commit restructures and moves writeoff to C4::Accounts::WriteOff(), and modifies pay.pl to use it. Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com> Tested all three patches together and was able to write off single and multiple fines and the data was correct in the stats table. Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>
This commit is contained in:
parent
535c4a7aa1
commit
7aec3044b9
|
|
@ -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
|
||||
&WriteOff
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -756,7 +764,51 @@ sub makepartialpayment {
|
|||
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 WriteOff {
|
||||
my ( $borrowernumber, $accountnum, $itemnum, $accounttype, $amount, $branch ) = @_;
|
||||
my $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)
|
||||
|
||||
|
|
|
|||
|
|
@ -53,9 +53,6 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
|
|||
}
|
||||
);
|
||||
|
||||
my $writeoff_sth;
|
||||
my $add_writeoff_sth;
|
||||
|
||||
my @names = $input->param;
|
||||
|
||||
my $borrowernumber = $input->param('borrowernumber');
|
||||
|
|
@ -90,7 +87,7 @@ if ($writeoff_all) {
|
|||
my $itemno = $input->param('itemnumber');
|
||||
my $account_type = $input->param('accounttype');
|
||||
my $amount = $input->param('amountoutstanding');
|
||||
writeoff( $accountno, $itemno, $account_type, $amount );
|
||||
WriteOff( $borrowernumber, $accountno, $itemno, $account_type, $amount, $branch );
|
||||
}
|
||||
|
||||
for (@names) {
|
||||
|
|
@ -107,23 +104,6 @@ add_accounts_to_template();
|
|||
|
||||
output_html_with_http_headers $input, $cookie, $template->output;
|
||||
|
||||
sub writeoff {
|
||||
my ( $accountnum, $itemnum, $accounttype, $amount ) = @_;
|
||||
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;
|
||||
get_writeoff_sth();
|
||||
$writeoff_sth->execute( $accountnum, $borrowernumber );
|
||||
|
||||
my $acct = getnextacctno($borrowernumber);
|
||||
$add_writeoff_sth->execute( $borrowernumber, $acct, $itemnum, $amount, $manager_id );
|
||||
|
||||
UpdateStats( $branch, 'writeoff', $amount, q{}, q{}, q{}, $borrowernumber );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sub add_accounts_to_template {
|
||||
|
||||
|
|
@ -202,7 +182,7 @@ sub writeoff_all {
|
|||
my $itemno = $input->param("itemnumber$value");
|
||||
my $amount = $input->param("amount$value");
|
||||
my $accountno = $input->param("accountno$value");
|
||||
writeoff( $accountno, $itemno, $accounttype, $amount );
|
||||
WriteOff( $borrowernumber, $accountno, $itemno, $accounttype, $amount, $branch );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -268,23 +248,3 @@ sub payselected {
|
|||
print $input->redirect($redirect);
|
||||
return;
|
||||
}
|
||||
|
||||
sub get_writeoff_sth {
|
||||
|
||||
# lets prepare these statement handles only once
|
||||
if ($writeoff_sth) {
|
||||
return;
|
||||
} else {
|
||||
my $dbh = C4::Context->dbh;
|
||||
|
||||
# Do we need to validate accounttype
|
||||
my $sql = 'Update accountlines set amountoutstanding=0 '
|
||||
. 'WHERE accountno=? and borrowernumber=?';
|
||||
$writeoff_sth = $dbh->prepare($sql);
|
||||
my $insert =
|
||||
q{insert into accountlines (borrowernumber,accountno,itemnumber,date,amount,description,accounttype,manager_id)}
|
||||
. q{values (?,?,?,now(),?,'Writeoff','W',?)};
|
||||
$add_writeoff_sth = $dbh->prepare($insert);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue