Bug 22563: (QA follow-up) Catch LOST maninvoice cases

One could add a manual invoice of type LOST but we would not associate
it with an issue_id. This patch tries to catch such cases and
extrapolate an issue_id to add to the accountline.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
This commit is contained in:
Martin Renvoize 2019-06-15 07:17:46 +01:00
parent 40c0ebb219
commit c437f84a65
Signed by: martin.renvoize
GPG key ID: 422B469130441A0F
2 changed files with 17 additions and 4 deletions

View file

@ -87,9 +87,7 @@ sub chargelostitem {
my $issue_id = $checkout ? $checkout->issue_id : undef;
my $account = Koha::Account->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
# first make sure the borrower hasn't already been charged for this item (for this issuance)
my $existing_charges = $account->lines->search(
{
itemnumber => $itemnumber,
@ -156,6 +154,20 @@ sub manualinvoice {
my $branchcode = C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef;
my $issue_id;
if ( $type eq 'LOST' && $itemnum ) {
my $checkouts = Koha::Checkouts->search(
{ itemnumber => $itemnum, borrowernumber => $borrowernumber } );
my $checkout =
$checkouts->count
? $checkouts->next
: Koha::Old::Checkouts->search(
{ itemnumber => $itemnum, borrowernumber => $borrowernumber },
{ order_by => { 'DESC' => 'returndate' }, rows => 1 }
)->next;
$issue_id = $checkout ? $checkout->issue_id : undef;
}
my $accountline = Koha::Account::Line->new(
{
borrowernumber => $borrowernumber,
@ -165,6 +177,7 @@ sub manualinvoice {
accounttype => $type,
amountoutstanding => $amountleft,
itemnumber => $itemnum || undef,
issue_id => $issue_id,
note => $note,
manager_id => $manager_id,
interface => C4::Context->interface,

View file

@ -44,7 +44,7 @@
<li>
<label for="type">Type: </label>
<select name="type" id="invoice_type">
<option value="L">Lost item</option>
<option value="LOST">Lost item</option>
<option value="F">Fine</option>
<option value="A">Account management fee</option>
<option value="N">New card</option>