From 9c3908a18c28967373e24ad716c242bb946b322e Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Thu, 5 Jun 2014 11:26:40 -0400 Subject: [PATCH] Bug 12375 [4] - Replace use of DBI with Koha::Database in C4::Serials::NewIssue Currently, all serials enumeration data is stored in conglomerated fashion in serial.serialseq. This makes it extremely difficult to do any reporting based on the individual sequence values due to this fact. In addition to the formatted version of the sequence, we should be storing the individual values as well. Test Plan: 1) Apply this patch 2) Run updatedatabase.pl 3) Create a new subscription, and add serials to it. The new x y and z fields should be populated with the same data the replaces {X} {Y} and {Z} in the enumeration field. 4) Inspect some existing serials. The update script will have made a best effort to recover the existing enumeration data to store in separate fields. Signed-off-by: Paul Landers --- C4/Serials.pm | 37 ++++++++++++++++--------------------- 1 files changed, 16 insertions(+), 21 deletions(-) diff --git a/C4/Serials.pm b/C4/Serials.pm index 45fea56..7ce3888 100644 --- a/C4/Serials.pm +++ b/C4/Serials.pm @@ -1630,36 +1630,31 @@ sub NewIssue { } ); - my $dbh = C4::Context->dbh; my $serialid = $serial->serialid(); - my $query = qq| - SELECT missinglist,recievedlist - FROM subscriptionhistory - WHERE subscriptionid=? - |; - my $sth = $dbh->prepare($query); - $sth->execute($subscriptionid); - my ( $missinglist, $recievedlist ) = $sth->fetchrow; + my $subscription_history = $schema->resultset('Subscriptionhistory')->find($subscriptionid); + my $missinglist = $subscription_history->missinglist(); + my $recievedlist = $subscription_history->recievedlist(); if ( $status == 2 ) { - ### TODO Add a feature that improves recognition and description. - ### As such count (serialseq) i.e. : N18,2(N19),N20 - ### Would use substr and index But be careful to previous presence of () - $recievedlist .= "; $serialseq" unless (index($recievedlist,$serialseq)>0); + ### TODO Add a feature that improves recognition and description. + ### As such count (serialseq) i.e. : N18,2(N19),N20 + ### Would use substr and index But be careful to previous presence of () + $recievedlist .= "; $serialseq" + unless ( index( $recievedlist, $serialseq ) > 0 ); } if ( $status == 4 ) { - $missinglist .= "; $serialseq" unless (index($missinglist,$serialseq)>0); + $missinglist .= "; $serialseq" + unless ( index( $missinglist, $serialseq ) > 0 ); } - $query = qq| - UPDATE subscriptionhistory - SET recievedlist=?, missinglist=? - WHERE subscriptionid=? - |; - $sth = $dbh->prepare($query); + $recievedlist =~ s/^; //; $missinglist =~ s/^; //; - $sth->execute( $recievedlist, $missinglist, $subscriptionid ); + + $subscription_history->recievedlist($recievedlist); + $subscription_history->missinglist($missinglist); + $subscription_history->update(); + return $serialid; } -- 1.7.2.5