@@ -, +, @@
---
C4/Serials.pm | 29 +++++++++++++++--
.../prog/en/modules/serials/subscription-add.tt | 1 +
.../prog/en/modules/serials/subscription-detail.tt | 8 ++++-
.../intranet-tmpl/prog/js/subscription-add.js | 36 ++++++++++++++++++++--
serials/serials-collection.pl | 15 +++++++--
serials/showpredictionpattern.pl | 9 ++++++
serials/subscription-add.pl | 9 ++++++
7 files changed, 100 insertions(+), 7 deletions(-)
--- a/C4/Serials.pm
+++ a/C4/Serials.pm
@@ -859,8 +859,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};
@@ -940,6 +945,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};
@@ -1147,6 +1156,19 @@ sub ModSerialStatus {
my $pattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern($subscription->{numberpattern});
my $frequency = C4::Serials::Frequency::GetSubscriptionFrequency($subscription->{periodicity});
+ 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,
@@ -1155,7 +1177,6 @@ sub ModSerialStatus {
= GetNextSeq( $subscription, $pattern, $frequency, $publisheddate );
# next date (calculated from actual date & frequency parameters)
- my $nextpublisheddate = GetNextDate($subscription, $publisheddate, $frequency, 1);
my $nextpubdate = $nextpublisheddate;
$query = "UPDATE subscription SET lastvalue1=?, lastvalue2=?, lastvalue3=?, innerloop1=?, innerloop2=?, innerloop3=?
WHERE subscriptionid = ?";
@@ -1437,6 +1458,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
@@ -316,6 +316,7 @@ fieldset.rows table { clear: none; margin: 0; }
[% numberpattern.label | html %]
[% END %]
+
Required
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt
@@ -166,8 +166,13 @@
[% END %]
Number pattern:
- [% numberpattern.label | html %]
+ [% IF ( numberpattern ) %]
+ [% numberpattern.label | html %]
+ [% ELSE %]
+ Uses publication date
+ [% END %]
+ [% IF ( numberpattern ) %]
Starting with: |
@@ -194,6 +199,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
@@ -227,6 +227,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);
@@ -529,6 +547,15 @@ function hidePredcitionPatternTest(){
$("#page_2 > div").attr("class","col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2");
}
+function usedatepattern() {
+ $("#more_options").hide();
+ clearAdvancedPattern();
+ if ($("#advancedpredictionpattern").is(":visible")){
+ $("#advancedpredictionpattern").toggle();
+ $(".toggle_advanced_pattern").toggle();
+ }
+}
+
$(document).ready(function() {
if ( mana_enabled == 1 ) {
mana_search();
@@ -561,7 +588,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('');
@@ -610,7 +642,7 @@ $(document).ready(function() {
if($("#frequency").val() != ""){
frequencyload();
}
- if($("#numberpattern").val() != ""){
+ if($("#numberpattern").val() != "0" && $("#numberpattern").val() != ""){
numberpatternload();
}
--- a/serials/serials-collection.pl
+++ a/serials/serials-collection.pl
@@ -84,6 +84,10 @@ if($op eq 'gennext' && @subscriptionid){
$newinnerloop1, $newinnerloop2, $newinnerloop3
) = GetNextSeq($subscription, $pattern, $frequency, $expected->{publisheddate});
+ if (!defined $pattern && !defined $newserialseq){
+ $newserialseq = $expected->{publisheddate};
+ }
+
## We generate the next publication date
$frequency = C4::Serials::Frequency::GetSubscriptionFrequency($subscription->{periodicity});
my $nextpublisheddate = GetNextDate($subscription, $expected->{publisheddate}, $frequency, 1);
@@ -127,8 +131,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;
@@ -147,7 +154,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;
@@ -125,6 +126,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,
@@ -172,6 +178,9 @@ while( $i < 1000 ) {
($calculated, $subscription{'lastvalue1'}, $subscription{'lastvalue2'}, $subscription{'lastvalue3'}, $subscription{'innerloop1'}, $subscription{'innerloop2'}, $subscription{'innerloop3'}) = GetNextSeq(\%subscription, \%pattern, $frequency);
$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
@@ -367,6 +367,11 @@ sub redirect_add_subscription {
$enddate = _guess_enddate($startdate, $periodicity, $numberlength, $weeklength, $monthlength)
}
}
+
+ if ($numberpattern == "0"){ # using publication date as numbering pattern
+ $numberpattern = undef;
+ }
+
my $subscriptionid = NewSubscription(
$auser, $branchcode, $aqbooksellerid, $cost, $aqbudgetid, $biblionumber,
$startdate, $periodicity, $numberlength, $weeklength,
@@ -490,6 +495,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),
--