From 55a3e0c0ba17f31f7419dd0f2b6ce29f4b727247 Mon Sep 17 00:00:00 2001
From: Kyle M Hall <kyle@bywatersolutions.com>
Date: Thu, 5 Jun 2014 10:52:30 -0400
Subject: [PATCH] Bug 12375 [3] - Store serials enumeration data in separate fields

Signed-off-by: Paul Landers <paul.landers@ttuhsc.edu>
---
 C4/Serials.pm |   57 ++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 40 insertions(+), 17 deletions(-)

diff --git a/C4/Serials.pm b/C4/Serials.pm
index bcb37e3..2e9c50c 100644
--- a/C4/Serials.pm
+++ b/C4/Serials.pm
@@ -31,6 +31,7 @@ use C4::Log;    # logaction
 use C4::Debug;
 use C4::Serials::Frequency;
 use C4::Serials::Numberpattern;
+use Koha::Database;
 
 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
 
@@ -1241,12 +1242,13 @@ sub ModSerialStatus {
         # next date (calculated from actual date & frequency parameters)
         my $nextpublisheddate = GetNextDate($subscription, $publisheddate, 1);
         my $nextpubdate = $nextpublisheddate;
-        NewIssue( $newserialseq, $subscriptionid, $subscription->{'biblionumber'}, 1, $nextpubdate, $nextpubdate );
         $query = "UPDATE subscription SET lastvalue1=?, lastvalue2=?, lastvalue3=?, innerloop1=?, innerloop2=?, innerloop3=?
                     WHERE  subscriptionid = ?";
         $sth = $dbh->prepare($query);
         $sth->execute( $newlastvalue1, $newlastvalue2, $newlastvalue3, $newinnerloop1, $newinnerloop2, $newinnerloop3, $subscriptionid );
 
+        NewIssue( $newserialseq, $subscriptionid, $subscription->{'biblionumber'}, 1, $nextpubdate, $nextpubdate );
+
         # check if an alert must be sent... (= a letter is defined & status became "arrived"
         if ( $subscription->{letter} && $status == 2 && $oldstatus != 2 ) {
             require C4::Letters;
@@ -1498,13 +1500,21 @@ sub NewSubscription {
 
     # calculate issue number
     my $serialseq = GetSeq($subscription, $pattern) || q{};
-    $query = qq|
-        INSERT INTO serial
-            (serialseq,subscriptionid,biblionumber,status, planneddate, publisheddate)
-        VALUES (?,?,?,?,?,?)
-    |;
-    $sth = $dbh->prepare($query);
-    $sth->execute( $serialseq, $subscriptionid, $biblionumber, 1, $firstacquidate, $firstacquidate );
+
+    my $serial_rs = Koha::Database->new()->schema()->resultset('Serial');
+    $serial_rs->create(
+        {
+            serialseq      => $serialseq,
+            serialseq_x    => $subscription->{'lastvalue1'},
+            serialseq_y    => $subscription->{'lastvalue2'},
+            serialseq_z    => $subscription->{'lastvalue3'},
+            subscriptionid => $subscriptionid,
+            biblionumber   => $biblionumber,
+            status         => 1,
+            planneddate    => $firstacquidate,
+            publisheddate  => $firstacquidate,
+        }
+    );
 
     logaction( "SERIAL", "ADD", $subscriptionid, "" ) if C4::Context->preference("SubscriptionLog");
 
@@ -1601,21 +1611,34 @@ sub NewIssue {
 
     return unless ($subscriptionid);
 
+    my $schema = Koha::Database->new()->schema();
+
+    my $subscription = $schema->resultset('Subscription')->find( $subscriptionid );
+
+    my $serial = $schema->resultset('Serial')->create(
+        {
+            serialseq      => $serialseq,
+            serialseq_x    => $subscription->lastvalue1(),
+            serialseq_y    => $subscription->lastvalue2(),
+            serialseq_z    => $subscription->lastvalue3(),
+            subscriptionid => $subscriptionid,
+            biblionumber   => $biblionumber,
+            status         => $status,
+            planneddate    => $planneddate,
+            publisheddate  => $publisheddate,
+            notes => $notes,
+        }
+    );
+
     my $dbh   = C4::Context->dbh;
+    my $serialid = $serial->serialid();
+
     my $query = qq|
-        INSERT INTO serial
-            (serialseq,subscriptionid,biblionumber,status,publisheddate,planneddate,notes)
-        VALUES (?,?,?,?,?,?,?)
-    |;
-    my $sth = $dbh->prepare($query);
-    $sth->execute( $serialseq, $subscriptionid, $biblionumber, $status, $publisheddate, $planneddate, $notes );
-    my $serialid = $dbh->{'mysql_insertid'};
-    $query = qq|
         SELECT missinglist,recievedlist
         FROM   subscriptionhistory
         WHERE  subscriptionid=?
     |;
-    $sth = $dbh->prepare($query);
+    my $sth = $dbh->prepare($query);
     $sth->execute($subscriptionid);
     my ( $missinglist, $recievedlist ) = $sth->fetchrow;
 
-- 
1.7.2.5