From def9ff761b5801c7c2cb8dfc2cadaa570ba8c96c Mon Sep 17 00:00:00 2001
From: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Date: Fri, 19 Mar 2021 14:51:57 +0000
Subject: [PATCH] Bug 26704: Update Koha::Item to use Koha::Object::Messages

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
---
 C4/Circulation.pm | 49 ++++++++++++++++++++++++++---------------------
 Koha/Item.pm      | 23 +++++++++++++++++++---
 2 files changed, 47 insertions(+), 25 deletions(-)

diff --git a/C4/Circulation.pm b/C4/Circulation.pm
index c2edf81f94..7303c58fb7 100644
--- a/C4/Circulation.pm
+++ b/C4/Circulation.pm
@@ -2129,29 +2129,34 @@ sub AddReturn {
     if ($item_was_lost) {
         $messages->{'WasLost'} = 1;
         unless ( C4::Context->preference("BlockReturnOfLostItems") ) {
-            $messages->{'LostItemFeeRefunded'} = 1 if $updated_item->{_refunded};
-            $messages->{'LostItemFeeRestored'} = 1 if $updated_item->{_restored};
-
-            if ( $updated_item->{_charge} ) {
-                $issue //= Koha::Old::Checkouts->search(
-                    { itemnumber => $item->itemnumber },
-                    { order_by   => { '-desc' => 'returndate' }, rows => 1 } )
-                  ->single;
-                unless ( exists( $patron_unblessed->{branchcode} ) ) {
-                    my $patron = $issue->patron;
-                    $patron_unblessed = $patron->unblessed;
-                }
-                _CalculateAndUpdateFine(
-                    {
-                        issue       => $issue,
-                        item        => $item->unblessed,
-                        borrower    => $patron_unblessed,
-                        return_date => $return_date
+            my @object_messages = @{ $updated_item->messages };
+            for my $message (@object_messages) {
+                $messages->{'LostItemFeeRefunded'} = 1
+                  if $message->message eq 'lost_refunded';
+                $messages->{'LostItemFeeRestored'} = 1
+                  if $message->message eq 'lost_restored';
+
+                if ( $message->message eq 'lost_charge' ) {
+                    $issue //= Koha::Old::Checkouts->search(
+                        { itemnumber => $item->itemnumber },
+                        { order_by   => { '-desc' => 'returndate' }, rows => 1 }
+                    )->single;
+                    unless ( exists( $patron_unblessed->{branchcode} ) ) {
+                        my $patron = $issue->patron;
+                        $patron_unblessed = $patron->unblessed;
                     }
-                );
-                _FixOverduesOnReturn( $patron_unblessed->{borrowernumber},
-                    $item->itemnumber, undef, 'RETURNED' );
-                $messages->{'LostItemFeeCharged'} = 1;
+                    _CalculateAndUpdateFine(
+                        {
+                            issue       => $issue,
+                            item        => $item->unblessed,
+                            borrower    => $patron_unblessed,
+                            return_date => $return_date
+                        }
+                    );
+                    _FixOverduesOnReturn( $patron_unblessed->{borrowernumber},
+                        $item->itemnumber, undef, 'RETURNED' );
+                    $messages->{'LostItemFeeCharged'} = 1;
+                }
             }
         }
     }
diff --git a/Koha/Item.pm b/Koha/Item.pm
index d70fbc3f8f..e3332abe42 100644
--- a/Koha/Item.pm
+++ b/Koha/Item.pm
@@ -1151,7 +1151,13 @@ sub _set_found_trigger {
                     );
 
                     $credit->apply( { debits => [$lost_charge] } );
-                    $self->{_refunded} = 1;
+                    $self->add_message(
+                        {
+                            type    => 'info',
+                            message => 'lost_refunded',
+                            payload => { credit_id => $credit->id }
+                        }
+                    );
                 }
 
                 # Update the account status
@@ -1201,7 +1207,13 @@ sub _set_found_trigger {
                     if ( $refund ) {
                         # Revert the forgive credit
                         $refund->void({ interface => 'trigger' });
-                        $self->{_restored} = 1;
+                        $self->add_message(
+                            {
+                                type    => 'info',
+                                message => 'lost_restored',
+                                payload => { refund_id => $refund->id }
+                            }
+                        );
                     }
 
                     # Reconcile balances if required
@@ -1211,7 +1223,12 @@ sub _set_found_trigger {
                 }
             }
         } elsif ( $lostreturn_policy eq 'charge' ) {
-            $self->{_charge} = 1;
+            $self->add_message(
+                {
+                    type    => 'info',
+                    message => 'lost_charge',
+                }
+            );
         }
     }
 
-- 
2.32.0