-
- # first make sure the borrower hasn't already been charged for this item
- my $sth1=$dbh->prepare("SELECT * from accountlines
- WHERE borrowernumber=? AND itemnumber=? and accounttype='L'");
- $sth1->execute($borrowernumber,$itemnumber);
- my $existing_charge_hashref=$sth1->fetchrow_hashref();
-
- # 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,manager_id)
- VALUES (?,?,now(),?,?,'L',?,?,?)");
- $sth2->execute($borrowernumber,$accountno,$amount,
- $description,$amount,$itemnumber,$manager_id);
- $sth2->finish;
- # FIXME: Log this ?
- }
-}
-
-=head2 manualinvoice
-
- &manualinvoice($borrowernumber, $itemnumber, $description, $type,
- $amount, $note);
-
-C<$borrowernumber> is the patron's borrower number.
-C<$description> is a description of the transaction.
-C<$type> may be one of C<CS>, C<CB>, C<CW>, C<CF>, C<CL>, C<N>, C<L>,
-or C<REF>.
-C<$itemnumber> is the item involved, if pertinent; otherwise, it
-should be the empty string.
-
-=cut
-
-#'
-# FIXME: In Koha 3.0 , the only account adjustment 'types' passed to this function
-# are :
-# 'C' = CREDIT
-# 'FOR' = FORGIVEN (Formerly 'F', but 'F' is taken to mean 'FINE' elsewhere)
-# 'N' = New Card fee
-# 'F' = Fine
-# 'A' = Account Management fee
-# 'M' = Sundry
-# 'L' = Lost Item
-#
-
-sub manualinvoice {
- my ( $borrowernumber, $itemnum, $desc, $type, $amount, $note ) = @_;
- my $manager_id = 0;
- $manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv;
- my $dbh = C4::Context->dbh;
- my $notifyid = 0;
- my $insert;
- my $accountno = getnextacctno($borrowernumber);
- my $amountleft = $amount;
-
-# if ( $type eq 'CS'
-# || $type eq 'CB'
-# || $type eq 'CW'
-# || $type eq 'CF'
-# || $type eq 'CL' )
-# {
-# my $amount2 = $amount * -1; # FIXME - $amount2 = -$amount
-# $amountleft =
-# fixcredit( $borrowernumber, $amount2, $itemnum, $type, $user );
-# }
- if ( $type eq 'N' ) {
- $desc .= " New Card";
- }
- if ( $type eq 'F' ) {
- $desc .= " Fine";
- }
- if ( $type eq 'A' ) {
- $desc .= " Account Management fee";
- }
- if ( $type eq 'M' ) {
- $desc .= " Sundry";
- }
-
- if ( $type eq 'L' && $desc eq '' ) {
-
- $desc = " Lost Item";
- }
-# if ( $type eq 'REF' ) {
-# $desc .= " Cash Refund";
-# $amountleft = refund( '', $borrowernumber, $amount );
-# }
- if ( ( $type eq 'L' )
- or ( $type eq 'F' )
- or ( $type eq 'A' )
- or ( $type eq 'N' )
- or ( $type eq 'M' ) )
- {
- $notifyid = 1;
- }
-
- if ( $itemnum ) {
- $desc .= ' ' . $itemnum;
- my $sth = $dbh->prepare(
- 'INSERT INTO accountlines
- (borrowernumber, accountno, date, amount, description, accounttype, amountoutstanding, itemnumber,notify_id, note, manager_id)
- VALUES (?, ?, now(), ?,?, ?,?,?,?,?,?)');
- $sth->execute($borrowernumber, $accountno, $amount, $desc, $type, $amountleft, $itemnum,$notifyid, $note, $manager_id) || return $sth->errstr;
- } else {
- my $sth=$dbh->prepare("INSERT INTO accountlines
- (borrowernumber, accountno, date, amount, description, accounttype, amountoutstanding,notify_id, note, manager_id)
- VALUES (?, ?, now(), ?, ?, ?, ?,?,?,?)"
- );
- $sth->execute( $borrowernumber, $accountno, $amount, $desc, $type,
- $amountleft, $notifyid, $note, $manager_id );
- }
- return 0;
-}
-
-=head2 fixcredit #### DEPRECATED
-
- $amountleft = &fixcredit($borrowernumber, $data, $barcode, $type, $user);
-
- This function is only used internally, not exported.
-
-=cut
-
-# This function is deprecated in 3.0
-
-sub fixcredit {
-
- #here we update both the accountoffsets and the account lines
- my ( $borrowernumber, $data, $barcode, $type, $user ) = @_;
- my $dbh = C4::Context->dbh;
- my $newamtos = 0;
- my $accdata = "";
- my $amountleft = $data;
- if ( $barcode ne '' ) {
- my $item = GetBiblioFromItemNumber( '', $barcode );
- my $nextaccntno = getnextacctno($borrowernumber);
- my $query = "SELECT * FROM accountlines WHERE (borrowernumber=?
- AND itemnumber=? AND amountoutstanding > 0)";
- if ( $type eq 'CL' ) {
- $query .= " AND (accounttype = 'L' OR accounttype = 'Rep')";
- }
- elsif ( $type eq 'CF' ) {
- $query .= " AND (accounttype = 'F' OR accounttype = 'FU' OR
- accounttype='Res' OR accounttype='Rent')";
- }
- elsif ( $type eq 'CB' ) {
- $query .= " and accounttype='A'";
- }
-
- # print $query;
- my $sth = $dbh->prepare($query);
- $sth->execute( $borrowernumber, $item->{'itemnumber'} );
- $accdata = $sth->fetchrow_hashref;
- $sth->finish;
- if ( $accdata->{'amountoutstanding'} < $amountleft ) {
- $newamtos = 0;
- $amountleft -= $accdata->{'amountoutstanding'};
- }
- else {
- $newamtos = $accdata->{'amountoutstanding'} - $amountleft;
- $amountleft = 0;