Bug 16289: Refactore code and add tests
[koha-ffzg.git] / C4 / Serials.pm
index b162ae1..5c942b2 100644 (file)
@@ -32,9 +32,11 @@ use C4::Serials::Frequency;
 use C4::Serials::Numberpattern;
 use Koha::AdditionalField;
 use Koha::DateUtils;
-use Koha::Database;
+use Koha::Serial;
+use Koha::Subscriptions;
+use Koha::Subscription::Histories;
 
-use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
+use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
 
 # Define statuses
 use constant {
@@ -59,7 +61,6 @@ use constant MISSING_STATUSES => (
 );
 
 BEGIN {
-    $VERSION = 3.07.00.049;    # set version for version checking
     require Exporter;
     @ISA    = qw(Exporter);
     @EXPORT = qw(
@@ -1447,8 +1448,7 @@ sub NewSubscription {
     # calculate issue number
     my $serialseq = GetSeq($subscription, $pattern) || q{};
 
-    my $serial_rs = Koha::Database->new()->schema()->resultset('Serial');
-    $serial_rs->create(
+    Koha::Serial->new(
         {
             serialseq      => $serialseq,
             serialseq_x    => $subscription->{'lastvalue1'},
@@ -1460,7 +1460,7 @@ sub NewSubscription {
             planneddate    => $firstacquidate,
             publisheddate  => $firstacquidate,
         }
-    );
+    )->store();
 
     logaction( "SERIAL", "ADD", $subscriptionid, "" ) if C4::Context->preference("SubscriptionLog");
 
@@ -1560,27 +1560,27 @@ sub NewIssue {
 
     my $schema = Koha::Database->new()->schema();
 
-    my $subscription = $schema->resultset('Subscription')->find( $subscriptionid );
+    my $subscription = Koha::Subscriptions->find( $subscriptionid );
 
-    my $serial = $schema->resultset('Serial')->create(
+    my $serial = Koha::Serial->new(
         {
-            serialseq      => $serialseq,
-            serialseq_x    => $subscription->lastvalue1(),
-            serialseq_y    => $subscription->lastvalue2(),
-            serialseq_z    => $subscription->lastvalue3(),
-            subscriptionid => $subscriptionid,
-            biblionumber   => $biblionumber,
-            status         => $status,
-            planneddate    => $planneddate,
-            publisheddate  => $publisheddate,
+            serialseq         => $serialseq,
+            serialseq_x       => $subscription->lastvalue1(),
+            serialseq_y       => $subscription->lastvalue2(),
+            serialseq_z       => $subscription->lastvalue3(),
+            subscriptionid    => $subscriptionid,
+            biblionumber      => $biblionumber,
+            status            => $status,
+            planneddate       => $planneddate,
+            publisheddate     => $publisheddate,
             publisheddatetext => $publisheddatetext,
-            notes => $notes,
+            notes             => $notes,
         }
-    );
+    )->store();
 
     my $serialid = $serial->id();
 
-    my $subscription_history = $schema->resultset('Subscriptionhistory')->find($subscriptionid);
+    my $subscription_history = Koha::Subscription::Histories->find($subscriptionid);
     my $missinglist = $subscription_history->missinglist();
     my $recievedlist = $subscription_history->recievedlist();
 
@@ -2483,8 +2483,11 @@ sub GetNextDate {
 _numeration returns the string corresponding to $value in the num_type
 num_type can take :
     -dayname
+    -dayabrv
     -monthname
+    -monthabrv
     -season
+    -seasonabrv
 =cut
 
 #'
@@ -2495,7 +2498,7 @@ sub _numeration {
     $num_type //= '';
     $locale ||= 'en';
     my $string;
-    if ( $num_type =~ /^dayname$/ ) {
+    if ( $num_type =~ /^dayname$/ or $num_type =~ /^dayabrv$/ ) {
         # 1970-11-01 was a Sunday
         $value = $value % 7;
         my $dt = DateTime->new(
@@ -2504,19 +2507,27 @@ sub _numeration {
             day     => $value + 1,
             locale  => $locale,
         );
-        $string = $dt->strftime("%A");
-    } elsif ( $num_type =~ /^monthname$/ ) {
+        $string = $num_type =~ /^dayname$/
+            ? $dt->strftime("%A")
+            : $dt->strftime("%a");
+    } elsif ( $num_type =~ /^monthname$/ or $num_type =~ /^monthabrv$/ ) {
         $value = $value % 12;
         my $dt = DateTime->new(
             year    => 1970,
             month   => $value + 1,
             locale  => $locale,
         );
-        $string = $dt->strftime("%B");
+        $string = $num_type =~ /^monthname$/
+            ? $dt->strftime("%B")
+            : $dt->strftime("%b");
     } elsif ( $num_type =~ /^season$/ ) {
         my @seasons= qw( Spring Summer Fall Winter );
         $value = $value % 4;
         $string = $seasons[$value];
+    } elsif ( $num_type =~ /^seasonabrv$/ ) {
+        my @seasonsabrv= qw( Spr Sum Fal Win );
+        $value = $value % 4;
+        $string = $seasonsabrv[$value];
     } else {
         $string = $value;
     }