From acba39f096ccb296979c4afa4bada9c3db0887d5 Mon Sep 17 00:00:00 2001
From: Adrien Saurat <adrien.saurat@biblibre.com>
Date: Tue, 22 Jan 2013 14:46:38 +0100
Subject: [PATCH] Bug 7241: circulation action logs record biblionumber
 instead of item number
Content-Type: text/plain; charset="utf-8"

Issue log and and circulation logs are incorrectly recording biblionumber instead of item number, creating incorrect logs.
This patch corrects this, and modifies the action_logs table in two ways:
- the timestamp is not updated anymore with UPDATES (but still automatically filled when INSERTing)
- to partially correct the broken logs, the log history is filled with the first found item for each biblio

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
---
 C4/Circulation.pm                      |    4 ++--
 installer/data/mysql/kohastructure.sql |    2 +-
 installer/data/mysql/updatedatabase.pl |    9 +++++++++
 3 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/C4/Circulation.pm b/C4/Circulation.pm
index 05b5b7e..b5a5172 100644
--- a/C4/Circulation.pm
+++ b/C4/Circulation.pm
@@ -1317,7 +1317,7 @@ sub AddIssue {
         }
     }
 
-    logaction("CIRCULATION", "ISSUE", $borrower->{'borrowernumber'}, $biblio->{'biblionumber'})
+    logaction("CIRCULATION", "ISSUE", $borrower->{'borrowernumber'}, $biblio->{'itemnumber'})
         if C4::Context->preference("IssueLog");
   }
   return ($datedue);	# not necessarily the same as when it came in!
@@ -1885,7 +1885,7 @@ sub AddReturn {
         });
     }
     
-    logaction("CIRCULATION", "RETURN", $borrowernumber, $item->{'biblionumber'})
+    logaction("CIRCULATION", "RETURN", $borrowernumber, $item->{'itemnumber'})
         if C4::Context->preference("ReturnLog");
     
     # FIXME: make this comment intelligible.
diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql
index c74c39b..2909dcd 100644
--- a/installer/data/mysql/kohastructure.sql
+++ b/installer/data/mysql/kohastructure.sql
@@ -2524,7 +2524,7 @@ CREATE TABLE `accountoffsets` (
 DROP TABLE IF EXISTS `action_logs`;
 CREATE TABLE `action_logs` ( -- logs of actions taken in Koha (requires that the logs be turned on)
   `action_id` int(11) NOT NULL auto_increment, -- unique identifier for each action
-  `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- the date and time the action took place
+  `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP, -- the date and time the action took place
   `user` int(11) NOT NULL default 0, -- the staff member who performed the action (borrowers.borrowernumber)
   `module` text, -- the module this action was taken against
   `action` text, -- the action (includes things like DELETED, ADDED, MODIFY, etc)
diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
index 222428d..1edbc4e 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -6655,6 +6655,15 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
     SetVersion($DBversion);
 }
 
+$DBversion = "3.11.00.XXX";
+if ( CheckVersion($DBversion) ) {
+    $dbh->do("ALTER TABLE action_logs CHANGE timestamp timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;");
+    $dbh->do("UPDATE action_logs SET info=(SELECT itemnumber FROM items WHERE biblionumber= action_logs.info LIMIT 1) WHERE module='CIRCULATION' AND action in ('ISSUE','RETURN');");
+    print "Upgrade to $DBversion done (Bug 7241: Changing timestamp autoupdate on action_logs; setting items to circulation logs where missing)\n";
+    SetVersion($DBversion);
+}
+
+
 =head1 FUNCTIONS
 
 =head2 TableExists($table)
-- 
1.7.7.6