@@ -, +, @@ - add/edit a subscription. - verify all additional fields appears into the "Additional fields" block. - fill a value for af1 and af3. - fill others values if you are adding a new subscription. - save. - verify values appears on the detail of the subscription page. - verify the af2 field is automatically filled with the specified marc field of the notice. --- C4/Serials.pm | 12 +++++- .../prog/en/modules/serials/subscription-add.tt | 33 +++++++++++++++ .../prog/en/modules/serials/subscription-detail.tt | 25 ++++++++++- serials/subscription-add.pl | 44 ++++++++++++++++++++ serials/subscription-detail.pl | 8 ++++ 5 files changed, 120 insertions(+), 2 deletions(-) --- a/C4/Serials.pm +++ a/C4/Serials.pm @@ -26,6 +26,7 @@ use POSIX qw(strftime); use C4::Biblio; use C4::Log; # logaction use C4::Debug; +use Koha::AdditionalField; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); @@ -345,7 +346,16 @@ sub GetSubscription { $debug and warn "query : $query\nsubsid :$subscriptionid"; my $sth = $dbh->prepare($query); $sth->execute($subscriptionid); - return $sth->fetchrow_hashref; + my $subscription = $sth->fetchrow_hashref; + + # Add additional fields to the subscription into a new key "additional_fields" + my $additional_field_values = Koha::AdditionalField->fetch_all_values({ + tablename => 'subscription', + record_id => $subscriptionid, + }); + my %sub = ( %$subscription, additional_fields => $additional_field_values->{$subscriptionid} ); + + return \%sub } =head2 GetFullSubscription --- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt @@ -1130,6 +1130,39 @@ $(document).ready(function() {
+[% IF additional_fields_for_subscription %] +
+
+ Additional fields +
    + [% FOR field IN additional_fields_for_subscription %] +
  1. + + [% IF field.authorised_value_choices %] + (Authorised values for [% field.authorised_value_category %]) + [% ELSE %] + [% IF field.marcfield %] + + This value will be filled with the [% field.marcfield %] subfield of the selected biblio. + [% ELSE %] + + [% END %] + [% END %] +
  2. + [% END %] +
+
+
+[% END %] +
Serials planning --- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt @@ -1,4 +1,5 @@ [% USE KohaBranchName %] +[% USE KohaAuthorisedValues %] [% INCLUDE 'doc-head-open.inc' %] Koha › Serials › Details for subscription #[% subscriptionid %] [% INCLUDE 'doc-head-close.inc' %] @@ -129,7 +130,29 @@ $(document).ready(function() {
- + + + [% IF additional_fields_for_subscription %] +
+
+
+ Additional fields: +
    + [% FOR field IN additional_fields_for_subscription %] +
  1. + [% field.name %]: + [% IF field.authorised_value_category %] + [% KohaAuthorisedValues.GetByCode( field.authorised_value_category, additional_fields.${field.name} ) %] + [% ELSE %] + [% additional_fields.${field.name} %] + [% END %] +
  2. + [% END %] +
+
+
+
+ [% END %]
--- a/serials/subscription-add.pl +++ a/serials/subscription-add.pl @@ -30,6 +30,7 @@ use C4::Context; use C4::Branch; # GetBranches use C4::Serials; use C4::Letters; +use Koha::AdditionalField; use Carp; #use Smart::Comments; @@ -141,6 +142,16 @@ my $locations_loop = GetAuthorisedValues("LOC",$subs->{'location'}); $template->param(branchloop => $branchloop, locations_loop=>$locations_loop, ); + + +my $additional_fields = Koha::AdditionalField->all( { table => 'subscription' } ); +for my $field ( @$additional_fields ) { + if ( $field->{authorised_value_category} ) { + $field->{authorised_value_choices} = GetAuthorisedValues( $field->{authorised_value_category} ); + } +} +$template->param( additional_fields_for_subscription => $additional_fields ); + # prepare template variables common to all $op conditions: if ($op!~/^mod/) { letter_loop(q{}, $template); @@ -256,6 +267,7 @@ sub redirect_add_subscription { my $missinglist = $query->param('missinglist'); my $opacnote = $query->param('opacnote'); my $librariannote = $query->param('librariannote'); + my $subscriptionid = NewSubscription($auser,$branchcode,$aqbooksellerid,$cost,$aqbudgetid,$biblionumber, $startdate,$periodicity,$dow,$numberlength,$weeklength,$monthlength, $add1,$every1,$whenmorethan1,$setto1,$lastvalue1,$innerloop1, @@ -267,6 +279,16 @@ sub redirect_add_subscription { ); ModSubscriptionHistory ($subscriptionid,$histstartdate,$histenddate,$recievedlist,$missinglist,$opacnote,$librariannote); + my $additional_fields = Koha::AdditionalField->all( { table => 'subscription' } ); + my @additional_field_values; + for my $field ( @$additional_fields ) { + my $af = Koha::AdditionalField->new({ id => $field->{id} }); + $af->{values} = { + $subscriptionid => $query->param('additional_fields_' . $field->{name}) + }; + $af->insert_values; + } + print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid"); return; } @@ -352,6 +374,28 @@ sub redirect_mod_subscription { $serialsadditems, $staffdisplaycount,$opacdisplaycount,$graceperiod,$location,$enddate,$subscriptionid ); ModSubscriptionHistory ($subscriptionid,$histstartdate,$histenddate,$recievedlist,$missinglist,$opacnote,$librariannote); + + + my $additional_fields = Koha::AdditionalField->all( { table => 'subscription' } ); + my @additional_field_values; + for my $field ( @$additional_fields ) { + my $af = Koha::AdditionalField->new({ id => $field->{id} })->fetch; + if ( $af->{marcfield} ) { + my $record = GetMarcBiblio( $biblionumber, 1 ); + my ( $field, $subfield ) = split /\$/, $af->{marcfield}; + next unless $field and $subfield; + my $value = $record->subfield( $field, $subfield ); + $af->{values} = { + $subscriptionid => $value + }; + } else { + $af->{values} = { + $subscriptionid => $query->param('additional_fields_' . $field->{name}) + }; + } + $af->insert_values; + } + print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid"); return; } --- a/serials/subscription-detail.pl +++ a/serials/subscription-detail.pl @@ -155,6 +155,14 @@ if ( defined $subscriptionid ) { } } +my $additional_fields = Koha::AdditionalField->all( { tablename => 'subscription' } ); +for my $field ( @$additional_fields ) { + if ( $field->{authorised_value_category} ) { + $field->{authorised_value_choices} = GetAuthorisedValues( $field->{authorised_value_category} ); + } +} +$template->param( additional_fields_for_subscription => $additional_fields ); + $template->param( subscriptionid => $subscriptionid, serialslist => \@serialslist, --