@@ -, +, @@
---
C4/Serials.pm | 34 +++++++++++++++----
.../prog/en/modules/serials/subscription-add.tt | 1 +
.../prog/en/modules/serials/subscription-detail.tt | 8 ++++-
.../intranet-tmpl/prog/js/subscription-add.js | 38 ++++++++++++++++++++--
serials/serials-collection.pl | 15 +++++++--
serials/showpredictionpattern.pl | 9 +++++
serials/subscription-add.pl | 8 +++++
7 files changed, 100 insertions(+), 13 deletions(-)
--- a/C4/Serials.pm
+++ a/C4/Serials.pm
@@ -862,8 +862,13 @@ sub GetNextSeq {
}
}
- my $numberingmethod = $pattern->{numberingmethod};
my $calculated = "";
+ my $numberingmethod = "";
+ if ($pattern eq "pubdate"){
+ $calculated = dt_from_string( $planneddate )->strftime( '%Y %B %d' );
+ } else {
+ $numberingmethod = $pattern->{numberingmethod};
+ }
if ($numberingmethod) {
$calculated = $numberingmethod;
my $locale = $subscription->{locale};
@@ -943,6 +948,10 @@ the sequence in string format
sub GetSeq {
my ($subscription, $pattern) = @_;
+ if ($pattern->{numberingmethod} eq ''){
+ return "pubdate";
+ }
+
return unless ($subscription and $pattern);
my $locale = $subscription->{locale};
@@ -1150,15 +1159,22 @@ sub ModSerialStatus {
my $subscription = GetSubscription($subscriptionid);
my $pattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern($subscription->{numberpattern});
+ my $nextpublisheddate = GetNextDate($subscription, $publisheddate, 1);
+ my ( $newserialseq, $newlastvalue1, $newlastvalue2, $newlastvalue3,
+ $newinnerloop1, $newinnerloop2, $newinnerloop3 );
+
+ if (!defined $pattern){
+ $pattern = "pubdate";
+ ( $newserialseq, $newlastvalue1, $newlastvalue2, $newlastvalue3,
+ $newinnerloop1, $newinnerloop2, $newinnerloop3 ) = GetNextSeq( $subscription, $pattern, $nextpublisheddate );
+ } else {
+ ( $newserialseq, $newlastvalue1, $newlastvalue2, $newlastvalue3,
+ $newinnerloop1, $newinnerloop2, $newinnerloop3 ) = GetNextSeq( $subscription, $pattern, $publisheddate );
+ }
+
# next issue number
- my (
- $newserialseq, $newlastvalue1, $newlastvalue2, $newlastvalue3,
- $newinnerloop1, $newinnerloop2, $newinnerloop3
- )
- = GetNextSeq( $subscription, $pattern, $publisheddate );
# next date (calculated from actual date & frequency parameters)
- my $nextpublisheddate = GetNextDate($subscription, $publisheddate, 1);
my $nextpubdate = $nextpublisheddate;
$query = "UPDATE subscription SET lastvalue1=?, lastvalue2=?, lastvalue3=?, innerloop1=?, innerloop2=?, innerloop3=?
WHERE subscriptionid = ?";
@@ -1424,6 +1440,10 @@ sub NewSubscription {
# calculate issue number
my $serialseq = GetSeq($subscription, $pattern) || q{};
+ if ($serialseq eq "pubdate"){
+ $serialseq = dt_from_string( $firstacquidate )->strftime('%Y %B %d');
+ }
+
Koha::Serial->new(
{
serialseq => $serialseq,
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt
@@ -302,6 +302,7 @@ fieldset.rows li.radio { width: 100%; } /* override staff-global.css */
[% numberpattern.label | html %]
[% END %]
+
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt
@@ -168,8 +168,13 @@
[% END %]
Number pattern:
- [% numberpattern.label | html %]
+ [% IF ( numberpattern ) %]
+ [% numberpattern.label | html %]
+ [% ELSE %]
+ Uses publication date
+ [% END %]
+ [% IF ( numberpattern ) %]
Starting with: |
@@ -196,6 +201,7 @@
[% END %]
+ [% END %]
[% IF ( irregular_issues ) %]
Irregularity: [% irregular_issues | html %] issues
--- a/koha-tmpl/intranet-tmpl/prog/js/subscription-add.js
+++ a/koha-tmpl/intranet-tmpl/prog/js/subscription-add.js
@@ -198,6 +198,24 @@ function modifyAdvancedPattern() {
advancedpatternlocked = 0;
}
+function clearAdvancedPattern() {
+ $("#patternname").prop('readOnly', false).val('');
+ $("#numberingmethod").prop('readOnly', false).val('');
+
+ $("#advancedpredictionpatternt input").each(function() {
+ $(this).prop('readOnly', false).val('');
+ });
+ $("#advancedpredictionpatternt select").each(function() {
+ $(this).prop('disabled', false).val('');
+ });
+
+ $("#restoreadvancedpatternbutton").hide();
+ $("#saveadvancedpatternbutton").hide();
+ $("#modifyadvancedpatternbutton").hide();
+
+ advancedpatternlocked = 1;
+}
+
function restoreAdvancedPattern() {
$("#patternname").prop('readOnly', true).val(globalnumpatterndata.label);
$("#numberingmethod").prop('readOnly', true).val(globalnumpatterndata.numberingmethod);
@@ -362,6 +380,15 @@ function show_page_2() {
displaymoreoptions();
}
+function usedatepattern() {
+ $("#more_options").hide();
+ clearAdvancedPattern();
+ if ($("#advancedpredictionpattern").is(":visible")){
+ $("#advancedpredictionpattern").toggle();
+ $(".toggle_advanced_pattern").toggle();
+ }
+}
+
$(document).ready(function() {
$("#aqbooksellerid").on('keypress', function(e) {
@@ -383,7 +410,12 @@ $(document).ready(function() {
});
$("select#numberpattern").change(function(){
patternneedtobetested = 1;
- numberpatternload();
+ console.log($("select#numberpattern").val());
+ if ($("select#numberpattern").val() == "0"){
+ usedatepattern();
+ } else {
+ numberpatternload();
+ }
});
$("#subtype").change(function(){
$("input[name='enddate']").val('');
@@ -432,7 +464,7 @@ $(document).ready(function() {
if($("#frequency").val() != ""){
frequencyload();
}
- if($("#numberpattern").val() != ""){
+ if($("#numberpattern").val() != "0" && $("#numberpattern").val() != ""){
numberpatternload();
}
@@ -496,4 +528,4 @@ $(document).ready(function() {
e.preventDefault();
testPredictionPattern();
});
-});
+});
--- a/serials/serials-collection.pl
+++ a/serials/serials-collection.pl
@@ -83,6 +83,10 @@ if($op eq 'gennext' && @subscriptionid){
$newinnerloop1, $newinnerloop2, $newinnerloop3
) = GetNextSeq($subscription, $pattern, $expected->{publisheddate});
+ if (!defined $pattern && !defined $newserialseq){
+ $newserialseq = $expected->{publisheddate};
+ }
+
## We generate the next publication date
my $nextpublisheddate = GetNextDate($subscription, $expected->{publisheddate}, 1);
my $planneddate = $date_received_today ? dt_from_string : $nextpublisheddate;
@@ -128,8 +132,11 @@ if (@subscriptionid){
$location = $subs->{'location'};
$callnumber = $subs->{callnumber};
my $frequency = C4::Serials::Frequency::GetSubscriptionFrequency($subs->{periodicity});
- my $numberpattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern($subs->{numberpattern});
$subs->{frequency} = $frequency;
+ my $numberpattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern($subs->{numberpattern});
+ if (!defined $numberpattern){
+ $numberpattern->{label} = "Uses publication date";
+ }
$subs->{numberpattern} = $numberpattern;
$subs->{'hasRouting'} = check_routing($subscriptionid);
push @$subscriptiondescs,$subs;
@@ -148,7 +155,11 @@ if (@subscriptionid){
my $frequency = C4::Serials::Frequency::GetSubscriptionFrequency($s->{periodicity});
my $numberpattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern($s->{numberpattern});
$s->{frequency} = $frequency;
- $s->{numberpattern} = $numberpattern;
+ if (!defined $numberpattern){
+ $numberpattern->{label} = "pubdate";
+ } else {
+ $s->{numberpattern} = $numberpattern;
+ }
}
my $subscriptioninformation = GetFullSubscriptionsFromBiblionumber($biblionumber);
$subscriptions=PrepareSerialsData($subscriptioninformation);
--- a/serials/showpredictionpattern.pl
+++ a/serials/showpredictionpattern.pl
@@ -31,6 +31,7 @@ publication date, based on frequency and first publication date.
use Modern::Perl;
use CGI qw ( -utf8 );
+use POSIX qw(strftime);
use Date::Calc qw(Today Day_of_Year Week_of_Year Day_of_Week Days_in_Year Delta_Days Add_Delta_Days Add_Delta_YM);
use C4::Auth;
use C4::Output;
@@ -112,6 +113,11 @@ if(defined $subscriptionid) {
my @predictions_loop;
my ($calculated) = GetSeq(\%subscription, \%pattern);
+
+if ($calculated eq "pubdate"){
+ $calculated = dt_from_string( $date )->strftime('%Y %B %d');
+}
+
push @predictions_loop, {
number => $calculated,
publicationdate => $date,
@@ -159,6 +165,9 @@ while( $i < 1000 ) {
($calculated, $subscription{'lastvalue1'}, $subscription{'lastvalue2'}, $subscription{'lastvalue3'}, $subscription{'innerloop1'}, $subscription{'innerloop2'}, $subscription{'innerloop3'}) = GetNextSeq(\%subscription, \%pattern);
$issuenumber++;
$line{'number'} = $calculated;
+ if ($calculated eq ''){
+ $line{'number'} = dt_from_string( $date )->strftime('%Y %B %d');
+ }
$line{'issuenumber'} = $issuenumber;
if(@irreg && $issuenumber == $irreg[0]){
$line{'not_published'} = 1;
--- a/serials/subscription-add.pl
+++ a/serials/subscription-add.pl
@@ -338,6 +338,10 @@ sub redirect_add_subscription {
}
}
+ if ($numberpattern == "0"){ # using publication date as numbering pattern
+ $numberpattern = undef;
+ }
+
my $subscriptionid = NewSubscription(
$auser, $branchcode, $aqbooksellerid, $cost, $aqbudgetid, $biblionumber,
$startdate, $periodicity, $numberlength, $weeklength,
@@ -422,6 +426,10 @@ sub redirect_mod_subscription {
$firstissuedate = $nextacquidate if($nextexpected->{isfirstissue});
}
+ if ($numberpattern == "0"){ # using publication date as numbering pattern
+ $numberpattern = undef;
+ }
+
ModSubscription(
$auser, $branchcode, $aqbooksellerid, $cost, $aqbudgetid, $startdate,
$periodicity, $firstacquidate, join(";",@irregularity),
--