X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FAccounts.pm;h=3fdf2d71b34dbd0f361ef76b4f19445ab575ece9;hb=4cd4ae7a3d6cc2a1fce7a2ae900bcc9a5ff2124b;hp=1adf8d4be249593427baea968d0497bc7bbe6b86;hpb=27a21083d9878f029f01fcc7256fa116ee15dc28;p=koha.git diff --git a/C4/Accounts.pm b/C4/Accounts.pm index 1adf8d4be2..3fdf2d71b3 100644 --- a/C4/Accounts.pm +++ b/C4/Accounts.pm @@ -23,13 +23,13 @@ use strict; use C4::Context; use C4::Stats; use C4::Members; -use C4::Circulation qw(ReturnLostItem); use C4::Log qw(logaction); use Koha::Account; use Koha::Account::Lines; use Koha::Account::Offsets; use Koha::Items; +use Mojo::Util qw(deprecated); use Data::Dumper qw(Dumper); use vars qw(@ISA @EXPORT); @@ -38,14 +38,7 @@ BEGIN { require Exporter; @ISA = qw(Exporter); @EXPORT = qw( - &manualinvoice - &getnextacctno - &getcharges - &ModNote - &getcredits - &getrefunds &chargelostitem - &ReversePayment &purge_zero_balance_fees ); } @@ -66,60 +59,6 @@ patron. =head1 FUNCTIONS -=head2 getnextacctno - - $nextacct = &getnextacctno($borrowernumber); - -Returns the next unused account number for the patron with the given -borrower number. - -=cut - -#' -# FIXME - Okay, so what does the above actually _mean_? -sub getnextacctno { - my ($borrowernumber) = shift or return; - my $sth = C4::Context->dbh->prepare( - "SELECT accountno+1 FROM accountlines - WHERE (borrowernumber = ?) - ORDER BY accountno DESC - LIMIT 1" - ); - $sth->execute($borrowernumber); - return ($sth->fetchrow || 1); -} - -=head2 fixaccounts (removed) - - &fixaccounts($accountlines_id, $borrowernumber, $accountnumber, $amount); - -#' -# FIXME - I don't understand what this function does. -sub fixaccounts { - my ( $accountlines_id, $borrowernumber, $accountno, $amount ) = @_; - my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare( - "SELECT * FROM accountlines WHERE accountlines_id=?" - ); - $sth->execute( $accountlines_id ); - my $data = $sth->fetchrow_hashref; - - # FIXME - Error-checking - my $diff = $amount - $data->{'amount'}; - my $outstanding = $data->{'amountoutstanding'} + $diff; - $sth->finish; - - $dbh->do(<new({ patron_id => $borrowernumber }); # first make sure the borrower hasn't already been charged for this item # FIXME this should be more exact # there is no reason a user can't lose an item, find and return it, and lost it again - my $existing_charges = Koha::Account::Lines->search( + my $existing_charges = $account->lines->search( { - borrowernumber => $borrowernumber, itemnumber => $itemnumber, accounttype => 'L', } @@ -157,84 +97,37 @@ sub chargelostitem{ # OK, they haven't unless ($existing_charges) { + my $checkout = Koha::Checkouts->find({ itemnumber => $itemnumber }); + my $issue_id = $checkout ? $checkout->issue_id : undef; #add processing fee if ($processfee && $processfee > 0){ - my $accountline = Koha::Account::Line->new( - { - borrowernumber => $borrowernumber, - accountno => getnextacctno($borrowernumber), - date => \'NOW()', - amount => $processfee, - description => $description, - accounttype => 'PF', - amountoutstanding => $processfee, - itemnumber => $itemnumber, - note => $processingfeenote, - manager_id => C4::Context->userenv ? C4::Context->userenv->{'number'} : 0, - } - )->store(); - - my $account_offset = Koha::Account::Offset->new( + my $accountline = $account->add_debit( { - debit_id => $accountline->id, - type => 'Processing Fee', - amount => $accountline->amount, + amount => $processfee, + description => $description, + note => $processingfeenote, + user_id => C4::Context->userenv ? C4::Context->userenv->{'number'} : 0, + library_id => C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef, + type => 'processing', + item_id => $itemnumber, + issue_id => $issue_id, } - )->store(); - - if ( C4::Context->preference("FinesLog") ) { - logaction("FINES", 'CREATE',$borrowernumber,Dumper({ - action => 'create_fee', - borrowernumber => $accountline->borrowernumber,, - accountno => $accountline->accountno, - amount => $accountline->amount, - description => $accountline->description, - accounttype => $accountline->accounttype, - amountoutstanding => $accountline->amountoutstanding, - note => $accountline->note, - itemnumber => $accountline->itemnumber, - manager_id => $accountline->manager_id, - })); - } + ); } #add replace cost if ($replacementprice > 0){ - my $accountline = Koha::Account::Line->new( + my $accountline = $account->add_debit( { - borrowernumber => $borrowernumber, - accountno => getnextacctno($borrowernumber), - date => \'NOW()', - amount => $replacementprice, - description => $description, - accounttype => 'L', - amountoutstanding => $replacementprice, - itemnumber => $itemnumber, - manager_id => C4::Context->userenv ? C4::Context->userenv->{'number'} : 0, + amount => $replacementprice, + description => $description, + note => undef, + user_id => C4::Context->userenv ? C4::Context->userenv->{'number'} : 0, + library_id => C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef, + type => 'lost_item', + item_id => $itemnumber, + issue_id => $issue_id, } - )->store(); - - my $account_offset = Koha::Account::Offset->new( - { - debit_id => $accountline->id, - type => 'Lost Item', - amount => $accountline->amount, - } - )->store(); - - if ( C4::Context->preference("FinesLog") ) { - logaction("FINES", 'CREATE',$borrowernumber,Dumper({ - action => 'create_fee', - borrowernumber => $accountline->borrowernumber,, - accountno => $accountline->accountno, - amount => $accountline->amount, - description => $accountline->description, - accounttype => $accountline->accounttype, - amountoutstanding => $accountline->amountoutstanding, - note => $accountline->note, - itemnumber => $accountline->itemnumber, - manager_id => $accountline->manager_id, - })); - } + ); } } } @@ -244,40 +137,26 @@ sub chargelostitem{ &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, C, C, C, C, C, C, -or C. -C<$itemnumber> is the item involved, if pertinent; otherwise, it -should be the empty string. +This function is now deprecated and not used anywhere within koha. It is due for complete removal in 19.11 =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 ) = @_; + + deprecated "C4::Accounts::manualinvoice is deprecated in favor of Koha::Account->add_debit"; + my $manager_id = 0; $manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv; my $dbh = C4::Context->dbh; my $insert; - my $accountno = getnextacctno($borrowernumber); my $amountleft = $amount; + my $branchcode = C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef; + my $accountline = Koha::Account::Line->new( { borrowernumber => $borrowernumber, - accountno => $accountno, date => \'NOW()', amount => $amount, description => $desc, @@ -286,6 +165,7 @@ sub manualinvoice { itemnumber => $itemnum || undef, note => $note, manager_id => $manager_id, + branchcode => $branchcode, } )->store(); @@ -301,7 +181,6 @@ sub manualinvoice { logaction("FINES", 'CREATE',$borrowernumber,Dumper({ action => 'create_fee', borrowernumber => $borrowernumber, - accountno => $accountno, amount => $amount, description => $desc, accounttype => $type, @@ -315,117 +194,6 @@ sub manualinvoice { return 0; } -sub getcharges { - my ( $borrowerno, $timestamp, $accountno ) = @_; - my $dbh = C4::Context->dbh; - my $timestamp2 = $timestamp - 1; - my $query = ""; - my $sth = $dbh->prepare( - "SELECT * FROM accountlines WHERE borrowernumber=? AND accountno = ?" - ); - $sth->execute( $borrowerno, $accountno ); - - my @results; - while ( my $data = $sth->fetchrow_hashref ) { - push @results,$data; - } - return (@results); -} - -sub ModNote { - my ( $accountlines_id, $note ) = @_; - my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare('UPDATE accountlines SET note = ? WHERE accountlines_id = ?'); - $sth->execute( $note, $accountlines_id ); -} - -sub getcredits { - my ( $date, $date2 ) = @_; - my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare( - "SELECT * FROM accountlines,borrowers - WHERE amount < 0 AND accounttype not like 'Pay%' AND accountlines.borrowernumber = borrowers.borrowernumber - AND timestamp >=TIMESTAMP(?) AND timestamp < TIMESTAMP(?)" - ); - - $sth->execute( $date, $date2 ); - my @results; - while ( my $data = $sth->fetchrow_hashref ) { - $data->{'date'} = $data->{'timestamp'}; - push @results,$data; - } - return (@results); -} - - -sub getrefunds { - my ( $date, $date2 ) = @_; - my $dbh = C4::Context->dbh; - - my $sth = $dbh->prepare( - "SELECT *,timestamp AS datetime - FROM accountlines,borrowers - WHERE (accounttype = 'REF' - AND accountlines.borrowernumber = borrowers.borrowernumber - AND date >=? AND date execute( $date, $date2 ); - - my @results; - while ( my $data = $sth->fetchrow_hashref ) { - push @results,$data; - - } - return (@results); -} - -#FIXME: ReversePayment should be replaced with a Void Payment feature -sub ReversePayment { - my ($accountlines_id) = @_; - my $dbh = C4::Context->dbh; - - my $accountline = Koha::Account::Lines->find($accountlines_id); - my $amount_outstanding = $accountline->amountoutstanding; - - my $new_amountoutstanding = - $amount_outstanding <= 0 ? $accountline->amount * -1 : 0; - - $accountline->description( $accountline->description . " Reversed -" ); - $accountline->amountoutstanding($new_amountoutstanding); - $accountline->store(); - - my $account_offset = Koha::Account::Offset->new( - { - credit_id => $accountline->id, - type => 'Reverse Payment', - amount => $amount_outstanding - $new_amountoutstanding, - } - )->store(); - - if ( C4::Context->preference("FinesLog") ) { - my $manager_id = 0; - $manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv; - - logaction( - "FINES", 'MODIFY', - $accountline->borrowernumber, - Dumper( - { - action => 'reverse_fee_payment', - borrowernumber => $accountline->borrowernumber, - old_amountoutstanding => $amount_outstanding, - new_amountoutstanding => $new_amountoutstanding, - , - accountlines_id => $accountline->id, - accountno => $accountline->accountno, - manager_id => $manager_id, - } - ) - ); - } -} - =head2 purge_zero_balance_fees purge_zero_balance_fees( $days );