Bug 20773: (bug 20724 follow-up) Add a simple db revision
authorMarcel de Rooy <m.de.rooy@rijksmuseum.nl>
Wed, 16 May 2018 13:39:04 +0000 (15:39 +0200)
committerFridolin Somers <fridolin.somers@biblibre.com>
Mon, 24 Sep 2018 13:09:28 +0000 (15:09 +0200)
We should correct bad data too.
This is a trivial, pragmatic approach. Instead of doing a complex
calculation with holidays etc. (as was done on 12063), we just add
MaxPickupDelay or 7 days to today probably resulting in a little bonus
time. Only for waiting holds. When the ReservesNeedReturns pref was not
Automatic, there should be no changes.

== Test plan ==
1. git checkout c585f1149770ec401f188e061211501897cec0bf~1
     This the commit before bug 20724's patches.
     We need that to be able to generate "corrupted data"
2. Set ReservesNeedReturns to "Automatically"
3. Place a hold on a specific item
4. The hold should have an *empty* expiration date
     record page → Hold → "Expiration" column
5. Apply this patch
6. Run updatedatabase.pl
7. Refresh the page
8. The hold should have an expiration date (not empty)
9. Celebrate! 🎉🎊🥳

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Victor Grousset <victor.grousset@biblibre.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>

Bug 20773: (followup) Remove MySQLism

Signed-off-by: Victor Grousset <victor.grousset@biblibre.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
(cherry picked from commit a4ec768e3787ff3ee426949c0f03188dd4d15e82)
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
(cherry picked from commit 6eb334e244a2cbaf84d8ac874348c1443252e656)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
(cherry picked from commit 800ca2f6d88217a8ca706999eb603d98e6487d2f)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>

installer/data/mysql/atomicupdate/bug_20773.perl [new file with mode: 0644]

diff --git a/installer/data/mysql/atomicupdate/bug_20773.perl b/installer/data/mysql/atomicupdate/bug_20773.perl
new file mode 100644 (file)
index 0000000..d93d304
--- /dev/null
@@ -0,0 +1,11 @@
+$DBversion = 'XXX';  # will be replaced by the RM
+if( CheckVersion( $DBversion ) ) {
+    my $dtf   = Koha::Database->new->schema->storage->datetime_parser;
+    my $days = C4::Context->preference('MaxPickupDelay') || 7;
+    my $date = DateTime->now()->add( days => $days );
+    my $sql = q|UPDATE reserves SET expirationdate = ? WHERE expirationdate IS NULL AND waitingdate IS NOT NULL|;
+    $dbh->do( $sql, undef, $dtf->format_datetime($date) );
+
+    SetVersion( $DBversion );
+    print "Upgrade to $DBversion done (Bug 20724 - expirationdate filled for waiting holds)\n";
+}