From 8983f6edfc7c0c0bf3770ea0faad599212c5225a Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Thu, 1 Nov 2018 12:26:35 +0000 Subject: [PATCH] Bug 21722: Use Koha::Account->add_debit in chargelostitem This patch updates C4::Accounts::chargelostitem to use the newly available add_debit method from Koha::Account. Known Side Effects: If the FinesLog is enabled then the 'action' recorded will change from the generic `create_fee` (for both the lost charge and any associated processing charge) to the more descriptive terms `create_processing` and `create_list_item`. --- C4/Accounts.pm | 99 +++++++++++--------------------------------------- 1 file changed, 22 insertions(+), 77 deletions(-) diff --git a/C4/Accounts.pm b/C4/Accounts.pm index d2c597a08a..ce7d463755 100644 --- a/C4/Accounts.pm +++ b/C4/Accounts.pm @@ -108,14 +108,12 @@ sub chargelostitem{ $replacementprice = $defaultreplacecost; } - my $branchcode = C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef; - + my $account = Koha::Account->new({ patron_d => $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', } @@ -127,86 +125,33 @@ sub chargelostitem{ my $issue_id = $checkout ? $checkout->issue_id : undef; #add processing fee if ($processfee && $processfee > 0){ - my $accountline = Koha::Account::Line->new( - { - borrowernumber => $borrowernumber, - issue_id => $issue_id, - 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, - branchcode => $branchcode, - } - )->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( - { - borrowernumber => $borrowernumber, - issue_id => $issue_id, - 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, - branchcode => $branchcode, - } - )->store(); - - my $account_offset = Koha::Account::Offset->new( + my $accountline = $account->add_debit( { - debit_id => $accountline->id, - type => 'Lost Item', - amount => $accountline->amount, + 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(); - - 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, - })); - } + ); } } } -- 2.19.2