From 508fbb0fafc7efe6b03af624784492eb4edee8a0 Mon Sep 17 00:00:00 2001 From: Katrin Fischer Date: Thu, 4 May 2023 12:15:36 +0000 Subject: [PATCH] Bug 33262: Store the biblionumber of a deleted record in the order line When a bibliographic record is deleted and linked to an order in the acquisition module, the biblionumber in the order line is currently deleted as well. This makes it impossible to tell what was ordered in the first place. This is a big issue for libraries that need to be able to track how money was spent over long periods of time. With this patch the biblionumber of the deleted record will be moved to a new column deleted_biblionumber in the order line, keeping the FK on biblionumber. To test: * Apply patch, run dataase update * Create a order/basket in the acquisitions module * Order several things, you can use existing records from the sample data * Make sure you order one of the records at least twice * Take a look at the aqorders table in your database, using a report: SELECT biblionumber, deleted_biblionumber, ordernumber from aqorders; * From the catalog, delete the items on the records and then the records Note: There is a warning about attached orders warning about consequences for acquisitions. I have chosen to keep it at this point in time, as there are still visible side effects of deleting the record, like bug 10758. * Re-run the report and compare results to the first run. deleted_biblionumber should now be filled with the biblionumber of the deleted record. biblionumber should be NULL/empty. Signed-off-by: David Nind Signed-off-by: Nick Clemens Signed-off-by: Tomas Cohen Arazi (cherry picked from commit c8faeac4cd4cfdeab04c25bedb534d3823bbe83c) Signed-off-by: Martin Renvoize --- C4/Biblio.pm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/C4/Biblio.pm b/C4/Biblio.pm index 7a49f47df7..dbb4026816 100644 --- a/C4/Biblio.pm +++ b/C4/Biblio.pm @@ -519,6 +519,10 @@ sub DelBiblio { $hold->cancel({ skip_holds_queue => 1 }); } + # We update any existing orders + my $orders = $biblio->orders; + $orders->update({ deleted_biblionumber => $biblionumber}, { no_triggers => 1 }); + unless ( $params->{skip_record_index} ){ my $indexer = Koha::SearchEngine::Indexer->new({ index => $Koha::SearchEngine::BIBLIOS_INDEX }); $indexer->index_records( $biblionumber, "recordDelete", "biblioserver" ); -- 2.39.5