Browse Source

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.

Signed-off-by: Brendan Gallagher <brendan@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
3.22.x
Jonathan Druart 11 years ago
committed by Tomas Cohen Arazi
parent
commit
e153d095d4
  1. 10
      C4/Serials.pm
  2. 34
      koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt
  3. 25
      koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt
  4. 41
      serials/subscription-add.pl
  5. 8
      serials/subscription-detail.pl

10
C4/Serials.pm

@ -31,6 +31,7 @@ use C4::Log; # logaction
use C4::Debug;
use C4::Serials::Frequency;
use C4::Serials::Numberpattern;
use Koha::AdditionalField;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
@ -316,7 +317,16 @@ sub GetSubscription {
my $sth = $dbh->prepare($query);
$sth->execute($subscriptionid);
my $subscription = $sth->fetchrow_hashref;
$subscription->{cannotedit} = not can_edit_subscription( $subscription );
# 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,
});
$subscription->{additional_fields} = $additional_field_values->{$subscriptionid};
return $subscription;
}

34
koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tt

@ -851,6 +851,40 @@ $(document).ready(function() {
</div>
</ol>
</fieldset>
[% IF additional_fields_for_subscription %]
<div id="subscription_additional_fields">
<fieldset class="rows">
<legend>Additional fields</legend>
<ol>
[% FOR field IN additional_fields_for_subscription %]
<li>
<label for="additional_fields_[% field.name %]"> [% field.name %]: </label>
[% IF field.authorised_value_choices %]
<select name="additional_fields_[% field.name %]">
[% FOREACH av IN field.authorised_value_choices %]
[% IF av.authorised_value == additional_fields.${field.name} %]
<option value="[% av.authorised_value %]" selected="selected">[% av.lib %]</option>
[% ELSE %]
<option value="[% av.authorised_value %]">[% av.lib %]</option>
[% END %]
[% END %]
</select> (Authorised values for [% field.authorised_value_category %])
[% ELSE %]
[% IF field.marcfield %]
<input type="text" value="[% additional_fields.${field.name} %]" name="additional_fields_[% field.name %]" readonly="readonly" />
This value will be filled with the [% field.marcfield %] subfield of the selected biblio.
[% ELSE %]
<input type="text" value="[% additional_fields.${field.name} %]" name="additional_fields_[% field.name %]" />
[% END %]
[% END %]
</li>
[% END %]
</ol>
</fieldset>
</div>
[% END %]
<fieldset class="action">
<input type="button" value="<< Previous" onclick="show_page_1();" style="float:left;"/>
<input id="testpatternbutton" type="button" value="Test prediction pattern" onclick="testPredictionPattern();" />

25
koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt

@ -1,4 +1,5 @@
[% USE Branches %]
[% USE KohaAuthorisedValues %]
[% INCLUDE 'doc-head-open.inc' %]
<title>Koha &rsaquo; Serials &rsaquo; Details for subscription #[% subscriptionid %]</title>
[% INCLUDE 'doc-head-close.inc' %]
@ -122,7 +123,29 @@ $(document).ready(function() {
</ol>
</div>
</div>
</div>
</div>
[% IF additional_fields_for_subscription %]
<div class="yui-g">
<div class="yui-u first">
<div class="rows">
<legend>Additional fields:</legend>
<ol>
[% FOR field IN additional_fields_for_subscription %]
<li>
<span class="label">[% field.name %]:</span>
[% IF field.authorised_value_category %]
[% KohaAuthorisedValues.GetByCode( field.authorised_value_category, additional_fields.${field.name} ) %]
[% ELSE %]
[% additional_fields.${field.name} %]
[% END %]
</li>
[% END %]
</ol>
</div>
</div>
</div>
[% END %]
</div>
<div id="subscription_planning">

41
serials/subscription-add.pl

@ -32,6 +32,7 @@ use C4::Serials;
use C4::Serials::Frequency;
use C4::Serials::Numberpattern;
use C4::Letters;
use Koha::AdditionalField;
use Carp;
#use Smart::Comments;
@ -151,6 +152,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/) {
my $letters = get_letter_loop();
@ -333,6 +344,16 @@ sub redirect_add_subscription {
$skip_serialseq
);
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;
}
@ -408,6 +429,26 @@ sub redirect_mod_subscription {
$skip_serialseq
);
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;
}

8
serials/subscription-detail.pl

@ -139,6 +139,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,

Loading…
Cancel
Save