From ef3da7a89bcbb5661cf389388975f4adb338aa75 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 29 Aug 2013 13:37:40 +0200 Subject: [PATCH] Bug 10855: New fields on adding/updating a subscription This patch adds the ability to add values for additional fields when adding/updating a subscription. Test plan (test the following on adding a new subscription and on editing an existent one): - 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(-) diff --git a/C4/Serials.pm b/C4/Serials.pm index a1ce054..e950e30 100644 --- a/C4/Serials.pm +++ b/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 diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt index 14f01ef..fd4b8cf 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt +++ b/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 diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt index 959f14f..ae1f7e0 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt +++ b/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 %]
diff --git a/serials/subscription-add.pl b/serials/subscription-add.pl index 1959b23..2f04d2b 100755 --- a/serials/subscription-add.pl +++ b/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; } diff --git a/serials/subscription-detail.pl b/serials/subscription-detail.pl index fc57d89..dd336fd 100755 --- a/serials/subscription-detail.pl +++ b/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, -- 1.7.10.4