@@ -, +, @@ --- C4/Serials.pm | 29 ++- .../en/modules/serials/subscription-add.tt | 1 + .../en/modules/serials/subscription-detail.tt | 215 ++++++++++++++++++ .../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, 308 insertions(+), 6 deletions(-) --- a/C4/Serials.pm +++ a/C4/Serials.pm @@ -840,8 +840,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}; @@ -922,6 +927,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}; @@ -1126,6 +1135,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, @@ -1134,7 +1156,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 = ?"; @@ -1454,6 +1475,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 @@ -370,6 +370,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 @@ -82,6 +82,221 @@

[% END %] +
+
+
+
+
    +
  1. Beginning date: [% startdate | html %] +
  2. +
  3. Frequency: + [% frequency.description | html %] +
  4. +
  5. + Manual history: + [% IF ( manualhistory ) %] + Enabled Edit history + [% ELSE %] + Disabled + [% END %] +
  6. +
  7. Number pattern: + [% IF ( numberpattern ) %] + [% numberpattern.label | html %] + [% ELSE %] + Uses publication date + [% END %] +
  8. + [% IF ( numberpattern ) %] +
  9. + + + [% IF (has_X) %] + + [% END %] + [% IF (has_Y) %] + + [% END %] + [% IF (has_Z) %] + + [% END %] + + + + [% IF (has_X) %] + + [% END %] + [% IF (has_Y) %] + + [% END %] + [% IF (has_Z) %] + + [% END %] + +
    Starting with:[% lastvalue1 | html %][% lastvalue2 | html %][% lastvalue3 | html %]
    Rollover:[% numberpattern.whenmorethan1 | html %][% numberpattern.whenmorethan2 | html %][% numberpattern.whenmorethan3 | html %]
  10. + [% END %] + [% IF ( irregular_issues ) %] +
  11. Irregularity: [% irregular_issues | html %] issues +
  12. + [% END %] +
  13. First arrival: [% firstacquidate | html %] +
  14. + [% IF ( numberlength ) %]
  15. Number of issues: [% numberlength | html %]
  16. [% END %] + [% IF ( weeklength ) %]
  17. Number of weeks: [% weeklength | html %]
  18. [% END %] + [% IF ( monthlength ) %]
  19. Number of months: [% monthlength | html %]
  20. [% END %] +
+
+
+
+
+ +
+ + + + + + + + + [% FOREACH serialslis IN serialslist %] + + + + + + + + [% END %] +
Issue numberPlanned datePublished datePublished date (text)Status
+ [% serialslis.serialseq | html %] + + [% IF serialslis.planneddate %] + [% serialslis.planneddate | html %] + [% ELSE %] + Unknown + [% END %] + + [% IF serialslis.publisheddate %] + [% serialslis.publisheddate | html %] + [% ELSE %] + Unknown + [% END %] + + [% serialslis.publisheddatetext | html %] + + [% IF ( serialslis.status1 ) %]Expected[% END %] + [% IF ( serialslis.status2 ) %]Arrived[% END %] + [% IF ( serialslis.status3 ) %]Late[% END %] + [% IF ( serialslis.status4 ) %]Missing[% END %] + [% IF ( serialslis.status41 ) %]Missing (never received)[% END %] + [% IF ( serialslis.status42 ) %]Missing (sold out)[% END %] + [% IF ( serialslis.status43 ) %]Missing (damaged)[% END %] + [% IF ( serialslis.status44 ) %]Missing (lost)[% END %] + [% IF ( serialslis.status5 ) %]Not issued[% END %] + [% IF ( serialslis.status6 ) %]Delete[% END %] + [% IF ( serialslis.status7 ) %] + Claimed + [% IF ( serialslis.claimdate ) %] + [% serialslis.claimdate | html %] + [% END %] + [% END %] + [% IF ( serialslis.status8 ) %]Stopped[% END %] +
+
+
+
+
+
+
    +
  1. Start date: [% startdate | html %]
  2. +
  3. End date: [% enddate | html %]
  4. +
  5. History start date: [% histstartdate | html %]
  6. +
  7. History end date: [% histenddate | html %]
  8. +
  9. Received issues:[% recievedlist | html | html_line_break %]
  10. +
  11. Missing issues:[% missinglist | html | html_line_break %]
  12. +
  13. Nonpublic note:[% internalnotes | html | html_line_break %]
  14. +
  15. Public note:[% notes | html | html_line_break %]
  16. +
  17. History staff note:[% librariannote | html | html_line_break %]
  18. +
  19. History OPAC note:[% opacnote | html | html_line_break %]
  20. +
+
+
+
+
+ + [% IF orders_grouped.size %] +
+

Acquisition details

+ + [% WRAPPER tabs id= "subscription_description" %] [% WRAPPER tabs_nav %] --- a/koha-tmpl/intranet-tmpl/prog/js/subscription-add.js +++ a/koha-tmpl/intranet-tmpl/prog/js/subscription-add.js @@ -252,6 +252,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); @@ -553,6 +571,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(); @@ -585,7 +612,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(''); @@ -634,7 +666,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 @@ -81,6 +81,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 my $nextpublisheddate = GetNextDate($subscription, $expected->{publisheddate}, $frequency, 1); my $planneddate = $date_received_today ? dt_from_string : $nextpublisheddate; @@ -151,8 +155,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; @@ -171,7 +178,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 @@ -35,6 +35,7 @@ use Date::Calc qw( Add_Delta_Days Add_Delta_YM Day_of_Week Delta_Days ); use C4::Auth qw( get_template_and_user ); use C4::Output qw( output_html_with_http_headers ); use C4::Serials qw( GetSubscription GetFictiveIssueNumber GetSeq GetSubscriptionIrregularities GetNextDate GetNextSeq ); +use POSIX qw(strftime); use C4::Serials::Frequency; use Koha::DateUtils qw( dt_from_string ); @@ -119,6 +120,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, @@ -166,6 +172,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 @@ -349,6 +349,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, @@ -467,6 +472,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), --
+ + Hide already received orders + | Show all orders + | Expand all + | Collapse all + +