Bug 19919: Stop using paidfor altogether
authorMartin Renvoize <martin.renvoize@ptfs-europe.com>
Fri, 3 May 2019 14:44:35 +0000 (15:44 +0100)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Mon, 15 Jul 2019 10:28:05 +0000 (11:28 +0100)
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 <martin.renvoize@ptfs-europe.com>
Signed-off-by: Liz Rea <wizzyrea@gmail.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

C4/Circulation.pm
C4/Items.pm
Koha/Account/Line.pm
admin/columns_settings.yml
catalogue/moredetail.pl
koha-tmpl/intranet-tmpl/prog/en/columns.def

index 3b000cb..de4dc99 100644 (file)
@@ -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);
 }
 
 
index ab00a4c..e8251d2 100644 (file)
@@ -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'},
index 80582f3..f4f9498 100644 (file)
@@ -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
index 213ee00..43a2273 100644 (file)
@@ -273,8 +273,6 @@ modules:
         -
           columnname: holdingbranch
         -
-          columnname: paidfor
-        -
           columnname: timestamp
         -
           columnname: location
index e8736ff..57647ed 100755 (executable)
@@ -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();
index 05112eb..ffbfae0 100644 (file)
@@ -92,7 +92,6 @@
 <field name="items.itemnotes">Public note</field>
 <field name="items.itemnotes_nonpublic">Internal note</field>
 <field name="items.holdingbranch">Current library</field>
-<field name="items.paidfor">Paid for (unused)</field>
 <field name="items.timestamp">Timestamp</field>
 <field name="items.location">Shelving location</field>
 <field name="items.permanent_location">Permanent shelving location</field>