@@ -, +, @@ non-manual invoices in chargelostitem --- C4/Accounts.pm | 75 +++++++++++++++++++++- installer/data/mysql/account_offset_types.sql | 1 + .../data/mysql/atomicupdate/processing_fee.sql | 1 + t/db_dependent/Circulation/Chargelostitem.t | 9 ++- 4 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/processing_fee.sql --- a/C4/Accounts.pm +++ a/C4/Accounts.pm @@ -159,11 +159,82 @@ sub chargelostitem{ unless ($existing_charges) { #add processing fee if ($processfee && $processfee > 0){ - manualinvoice($borrowernumber, $itemnumber, $description, 'PF', $processfee, $processingfeenote, 1); + 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( + { + debit_id => $accountline->id, + type => 'Processing Fee', + 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, + })); + } } #add replace cost if ($replacementprice > 0){ - manualinvoice($borrowernumber, $itemnumber, $description, 'L', $replacementprice, undef, 1); + my $accountline = Koha::Account::Line->new( + { + 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, + } + )->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, + })); + } } } } --- a/installer/data/mysql/account_offset_types.sql +++ a/installer/data/mysql/account_offset_types.sql @@ -2,6 +2,7 @@ INSERT INTO account_offset_types ( type ) VALUES ('Writeoff'), ('Payment'), ('Lost Item'), +('Processing Fee'), ('Manual Debit'), ('Reverse Payment'), ('Forgiven'), --- a/installer/data/mysql/atomicupdate/processing_fee.sql +++ a/installer/data/mysql/atomicupdate/processing_fee.sql @@ -0,0 +1, @@ +INSERT IGNORE INTO account_offset_types ( type ) VALUES ( 'Processing Fee' ); --- a/t/db_dependent/Circulation/Chargelostitem.t +++ a/t/db_dependent/Circulation/Chargelostitem.t @@ -2,7 +2,7 @@ use Modern::Perl; -use Test::More tests => 4; +use Test::More tests => 6; use Test::MockModule; use t::lib::Mocks; use t::lib::TestBuilder; @@ -62,6 +62,7 @@ AddIssue($borrower, '0101'); AddIssue($borrower, '0203'); # Begin tests... +Koha::Account::Offsets->delete(); my $issue = Koha::Checkouts->search( { borrowernumber => $borrowernumber } )->next()->unblessed(); C4::Accounts::chargelostitem( $borrowernumber, $issue->{itemnumber}, '1.00'); @@ -70,3 +71,9 @@ my $accountline = Koha::Account::Lines->search( { borrowernumber => $borrowernum is( int($accountline->amount), $itemtype->{processfee}, "The accountline amount should be precessfee value " ); is( $accountline->itemnumber, $itemnumber1, "The accountline itemnumber should the linked with barcode '0101'" ); is( $accountline->note, C4::Context->preference("ProcessingFeeNote"), "The accountline description should be 'test'" ); + +my $lost_ao = Koha::Account::Offsets->single( { type => 'Lost Item' } ); +ok( $lost_ao, 'Account offset of type "Lost Item" created' ); + +my $processing_fee_ao = Koha::Account::Offsets->single( { type => 'Processing Fee' } ); +ok( $processing_fee_ao, 'Account offset of type "Processing Fee" created' ); --