BEGIN {
# set the version for version checking
- $VERSION = 3.03;
+ $VERSION = 3.07.00.049;
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 $accdata = "";
my $branch = C4::Context->userenv->{'branch'};
my $amountleft = $data;
+ my $manager_id = 0;
+ $manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv;
# begin transaction
my $nextaccntno = getnextacctno($borrowernumber);
# create new line
my $usth = $dbh->prepare(
"INSERT INTO accountlines
- (borrowernumber, accountno,date,amount,description,accounttype,amountoutstanding)
- VALUES (?,?,now(),?,'Payment,thanks','Pay',?)"
+ (borrowernumber, accountno,date,amount,description,accounttype,amountoutstanding,manager_id)
+ VALUES (?,?,now(),?,'Payment,thanks','Pay',?,?)"
);
- $usth->execute( $borrowernumber, $nextaccntno, 0 - $data, 0 - $amountleft );
+ $usth->execute( $borrowernumber, $nextaccntno, 0 - $data, 0 - $amountleft, $manager_id );
$usth->finish;
UpdateStats( $branch, 'payment', $data, '', '', '', $borrowernumber, $nextaccntno );
$sth->finish;
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'} );
}
}
# OK, they haven't
unless ($existing_charge_hashref) {
+ my $manager_id = 0;
+ $manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv;
# This item is on issue ... add replacement cost to the borrower's record and mark it returned
# Note that we add this to the account even if there's no replacement price, allowing some other
# process (or person) to update it, since we don't handle any defaults for replacement prices.
my $accountno = getnextacctno($borrowernumber);
my $sth2=$dbh->prepare("INSERT INTO accountlines
- (borrowernumber,accountno,date,amount,description,accounttype,amountoutstanding,itemnumber)
- VALUES (?,?,now(),?,?,'L',?,?)");
+ (borrowernumber,accountno,date,amount,description,accounttype,amountoutstanding,itemnumber,manager_id)
+ VALUES (?,?,now(),?,?,'L',?,?,?)");
$sth2->execute($borrowernumber,$accountno,$amount,
- $description,$amount,$itemnumber);
+ $description,$amount,$itemnumber,$manager_id);
$sth2->finish;
# FIXME: Log this ?
}
my $accdata = q{};
my $branch = C4::Context->userenv->{branch};
my $amountleft = $amount;
+ my $manager_id = 0;
+ $manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv;
my $sql = 'SELECT * FROM accountlines WHERE (borrowernumber = ?) ' .
'AND (amountoutstanding<>0) ';
if (@{$accts} ) {
# create new line
$sql = 'INSERT INTO accountlines ' .
- '(borrowernumber, accountno,date,amount,description,accounttype,amountoutstanding) ' .
- q|VALUES (?,?,now(),?,'Payment,thanks','Pay',?)|;
- $dbh->do($sql,{},$borrowernumber, $nextaccntno, 0 - $amount, 0 - $amountleft );
+ '(borrowernumber, accountno,date,amount,description,accounttype,amountoutstanding,manager_id) ' .
+ q|VALUES (?,?,now(),?,'Payment,thanks','Pay',?,?)|;
+ $dbh->do($sql,{},$borrowernumber, $nextaccntno, 0 - $amount, 0 - $amountleft, $manager_id );
UpdateStats( $branch, 'payment', $amount, '', '', '', $borrowernumber, $nextaccntno );
return;
}
# 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)