From 0f54a1f8c654e911c9e6254762586e3eeb786528 Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Fri, 3 May 2019 15:44:35 +0100 Subject: [PATCH] Bug 19919: Stop using paidfor altogether This patch removed references to setting and getting the items.paidfor field. Where it was used for display, in moredetail.pl, we replace it with a query on the accountlines. Test plan: 1) Apply patch 2) Pay off a LOST item 3) Check for the associated display of 'Paidfor?:' on the itemdetails page 4) Writeoff a LOST item 5) Check that a 'Paidfor?:' is not displayed on the itemdetails page. Signed-off-by: Martin Renvoize Signed-off-by: Liz Rea Signed-off-by: Kyle M Hall Signed-off-by: Martin Renvoize --- C4/Circulation.pm | 10 ------- C4/Items.pm | 3 -- Koha/Account/Line.pm | 13 +++++++++ admin/columns_settings.yml | 2 - catalogue/moredetail.pl | 38 +++++++++++++++++++++++++++ koha-tmpl/intranet-tmpl/prog/en/columns.def | 1 - 6 files changed, 51 insertions(+), 16 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 3b000cb..de4dc99 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2471,8 +2471,6 @@ sub _FixAccountForLostAndReturned { $accountline->discard_changes->status('RETURNED'); $accountline->store; - ModItem( { paidfor => '' }, undef, $itemnumber, { log_action => 0 } ); - if ( defined $account and C4::Context->preference('AccountAutoReconcile') ) { $account->reconcile_balance; } @@ -3677,15 +3675,7 @@ sub DeleteBranchTransferLimits { sub ReturnLostItem{ my ( $borrowernumber, $itemnum ) = @_; - MarkIssueReturned( $borrowernumber, $itemnum ); - my $patron = Koha::Patrons->find( $borrowernumber ); - my $item = Koha::Items->find($itemnum); - my $old_note = ($item->paidfor && ($item->paidfor ne q{})) ? $item->paidfor.' / ' : q{}; - my @datearr = localtime(time); - my $date = ( 1900 + $datearr[5] ) . "-" . ( $datearr[4] + 1 ) . "-" . $datearr[3]; - my $bor = $patron->firstname . ' ' . $patron->surname . ' ' . $patron->cardnumber; - ModItem({ paidfor => $old_note."Paid for by $bor $date" }, undef, $itemnum); } diff --git a/C4/Items.pm b/C4/Items.pm index ab00a4c..e8251d2 100644 --- a/C4/Items.pm +++ b/C4/Items.pm @@ -393,7 +393,6 @@ sub _build_default_values_for_mod_marc { materials => undef, new_status => undef, notforloan => 0, - # paidfor => undef, # commented, see bug 12817 price => undef, replacementprice => undef, replacementpricedate => undef, @@ -1576,7 +1575,6 @@ sub _koha_new_item { itemnotes = ?, itemnotes_nonpublic = ?, holdingbranch = ?, - paidfor = ?, location = ?, permanent_location = ?, onloan = ?, @@ -1620,7 +1618,6 @@ sub _koha_new_item { $item->{'itemnotes'}, $item->{'itemnotes_nonpublic'}, $item->{'holdingbranch'}, - $item->{'paidfor'}, $item->{'location'}, $item->{'permanent_location'}, $item->{'onloan'}, diff --git a/Koha/Account/Line.pm b/Koha/Account/Line.pm index 80582f3..f4f9498 100644 --- a/Koha/Account/Line.pm +++ b/Koha/Account/Line.pm @@ -41,6 +41,19 @@ Koha::Account::Line - Koha accountline Object class =cut +=head3 patron + +Return the patron linked to this account line + +=cut + +sub patron { + my ( $self ) = @_; + my $rs = $self->_result->borrowernumber; + return unless $rs; + return Koha::Patron->_new_from_dbic( $rs ); +} + =head3 item Return the item linked to this account line if exists diff --git a/admin/columns_settings.yml b/admin/columns_settings.yml index 213ee00..43a2273 100644 --- a/admin/columns_settings.yml +++ b/admin/columns_settings.yml @@ -273,8 +273,6 @@ modules: - columnname: holdingbranch - - columnname: paidfor - - columnname: timestamp - columnname: location diff --git a/catalogue/moredetail.pl b/catalogue/moredetail.pl index e8736ff..57647ed 100755 --- a/catalogue/moredetail.pl +++ b/catalogue/moredetail.pl @@ -174,6 +174,44 @@ foreach my $item (@items){ $item->{status_advisory} = 1; } + # Add paidfor info + if ( $item->{itemlost} ) { + my $accountlines = Koha::Account::Lines->search( + { + itemnumber => $item->{itemnumber}, + accounttype => 'LOST', + status => [ undef, { '<>' => 'RETURNED' } ], + amountoutstanding => 0 + }, + { + order_by => { '-desc' => 'date' }, + rows => 1 + } + ); + + if ( my $accountline = $accountlines->next ) { + my $payment_offsets = Koha::Account::Offsets->search( + { + debit_id => $accountline->id, + credit_id => { '!=' => undef }, # it is not the debit itself + type => { '!=' => [ 'Writeoff', 'Forgiven' ] }, + amount => { '<' => 0 } # credits are negative on the DB + }, + { order_by => { '-desc' => 'created_on' } } + ); + + if ($payment_offsets->count) { + my $patron = $accountline->patron; + my $payment_offset = $payment_offsets->next; + $item->{paidfor} = + $patron->firstname . " " + . $patron->surname . " " + . $patron->cardnumber . " " + . $payment_offset->created_on; + } + } + } + if (C4::Context->preference("IndependentBranches")) { #verifying rights my $userenv = C4::Context->userenv(); diff --git a/koha-tmpl/intranet-tmpl/prog/en/columns.def b/koha-tmpl/intranet-tmpl/prog/en/columns.def index 05112eb..ffbfae0 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/columns.def +++ b/koha-tmpl/intranet-tmpl/prog/en/columns.def @@ -92,7 +92,6 @@ Public note Internal note Current library -Paid for (unused) Timestamp Shelving location Permanent shelving location -- 1.7.2.5