View | Details | Raw Unified | Return to bug 10855
Collapse All | Expand All

(-)a/C4/Serials.pm (-5 / +28 lines)
Lines 614-620 subscription expiration date. Link Here
614
sub SearchSubscriptions {
614
sub SearchSubscriptions {
615
    my ( $args ) = @_;
615
    my ( $args ) = @_;
616
616
617
    my $query = qq{
617
    my $additional_fields = $args->{additional_fields} // [];
618
    my $matching_record_ids_for_additional_fields = [];
619
    if ( @$additional_fields ) {
620
        $matching_record_ids_for_additional_fields = Koha::AdditionalField->get_matching_record_ids({
621
                fields => $args->{additional_fields},
622
                tablename => 'subscription',
623
        });
624
        return () unless @$matching_record_ids_for_additional_fields;
625
    }
626
627
    my $query = q|
618
        SELECT
628
        SELECT
619
            subscription.notes AS publicnotes,
629
            subscription.notes AS publicnotes,
620
            subscription.*,
630
            subscription.*,
Lines 628-640 sub SearchSubscriptions { Link Here
628
            LEFT JOIN biblio ON biblio.biblionumber = subscription.biblionumber
638
            LEFT JOIN biblio ON biblio.biblionumber = subscription.biblionumber
629
            LEFT JOIN biblioitems ON biblioitems.biblionumber = subscription.biblionumber
639
            LEFT JOIN biblioitems ON biblioitems.biblionumber = subscription.biblionumber
630
            LEFT JOIN aqbooksellers ON subscription.aqbooksellerid = aqbooksellers.id
640
            LEFT JOIN aqbooksellers ON subscription.aqbooksellerid = aqbooksellers.id
631
    };
641
    |;
642
    $query .= q| WHERE 1|;
632
    my @where_strs;
643
    my @where_strs;
633
    my @where_args;
644
    my @where_args;
634
    if( $args->{biblionumber} ) {
645
    if( $args->{biblionumber} ) {
635
        push @where_strs, "biblio.biblionumber = ?";
646
        push @where_strs, "biblio.biblionumber = ?";
636
        push @where_args, $args->{biblionumber};
647
        push @where_args, $args->{biblionumber};
637
    }
648
    }
649
638
    if( $args->{title} ){
650
    if( $args->{title} ){
639
        my @words = split / /, $args->{title};
651
        my @words = split / /, $args->{title};
640
        my (@strs, @args);
652
        my (@strs, @args);
Lines 683-701 sub SearchSubscriptions { Link Here
683
        push @where_strs, "subscription.closed = ?";
695
        push @where_strs, "subscription.closed = ?";
684
        push @where_args, "$args->{closed}";
696
        push @where_args, "$args->{closed}";
685
    }
697
    }
698
686
    if(@where_strs){
699
    if(@where_strs){
687
        $query .= " WHERE " . join(" AND ", @where_strs);
700
        $query .= ' AND ' . join(' AND ', @where_strs);
701
    }
702
    if ( @$additional_fields ) {
703
        $query .= ' AND subscriptionid IN ('
704
            . join( ', ', @$matching_record_ids_for_additional_fields )
705
        . ')';
688
    }
706
    }
689
707
690
    my $dbh = C4::Context->dbh;
708
    my $dbh = C4::Context->dbh;
691
    my $sth = $dbh->prepare($query);
709
    my $sth = $dbh->prepare($query);
692
    $sth->execute(@where_args);
710
    $sth->execute(@where_args);
693
    my $results = $sth->fetchall_arrayref( {} );
711
    my $results =  $sth->fetchall_arrayref( {} );
694
    $sth->finish;
695
712
696
    for my $subscription ( @$results ) {
713
    for my $subscription ( @$results ) {
697
        $subscription->{cannotedit} = not can_edit_subscription( $subscription );
714
        $subscription->{cannotedit} = not can_edit_subscription( $subscription );
698
        $subscription->{cannotdisplay} = not can_show_subscription( $subscription );
715
        $subscription->{cannotdisplay} = not can_show_subscription( $subscription );
716
717
        my $additional_field_values = Koha::AdditionalField->fetch_all_values({
718
            record_id => $subscription->{subscriptionid},
719
            tablename => 'subscription'
720
        });
721
        $subscription->{addition_fields} = $additional_field_values->{$subscription->{subscriptionid}};
699
    }
722
    }
700
723
701
    return @$results;
724
    return @$results;
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-menu.inc (+1 lines)
Lines 30-33 Link Here
30
            Manage numbering patterns
30
            Manage numbering patterns
31
        </a>
31
        </a>
32
    </li>
32
    </li>
33
    <li><a href="/cgi-bin/koha/serials/add_fields.pl">Add subscription fields</a></li>
33
</ul>
34
</ul>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt (+63 lines)
Lines 20-25 Link Here
20
    } ) );
20
    } ) );
21
21
22
    var csrlt = $("#csrlt").dataTable($.extend(true, {}, dataTablesDefaults, {
22
    var csrlt = $("#csrlt").dataTable($.extend(true, {}, dataTablesDefaults, {
23
        // FIXME sort function of additional_fields!
23
        "sPaginationType": "four_button",
24
        "sPaginationType": "four_button",
24
        "aoColumnDefs": [
25
        "aoColumnDefs": [
25
            { 'bSortable': false, 'aTargets': [ 'NoSort' ] },
26
            { 'bSortable': false, 'aTargets': [ 'NoSort' ] },
Lines 116-121 Link Here
116
                  <label for="to">Expires before:</label>
117
                  <label for="to">Expires before:</label>
117
                  <input type="text" id="to" name="expiration_date_filter" value="[% expiration_date_filter | $KohaDates %]" size="10" maxlength="10" class="datepickerto" />
118
                  <input type="text" id="to" name="expiration_date_filter" value="[% expiration_date_filter | $KohaDates %]" size="10" maxlength="10" class="datepickerto" />
118
                </li>
119
                </li>
120
                [% FOR field IN additional_fields_for_subscription %]
121
                  <li>
122
                    <label for="additional_field_[% field.id %]"> [% field.name %]: </label>
123
                    [% IF field.authorised_value_choices %]
124
                      <select id="additional_field_[% field.id %]" name="additional_field_[% field.id %]_filter">
125
                        <option value="">All</option>
126
                        [% FOREACH av IN field.authorised_value_choices %]
127
                          <option value="[% av.authorised_value %]">[% av.lib %]</option>
128
                        [% END %]
129
                      </select>
130
                    [% ELSE %]
131
                      <input id="additional_field_[% field.id %]" type="text" value="[% additional_fields.${field.name} %]" name="additional_field_[% field.id %]_filter" />
132
                    [% END %]
133
                  </li>
134
                [% END %]
119
              </ol>
135
              </ol>
120
              <input type="hidden" name="searched" value="1" />
136
              <input type="hidden" name="searched" value="1" />
121
              <fieldset class="action">
137
              <fieldset class="action">
Lines 144-149 Link Here
144
                        <th>Location</th>
160
                        <th>Location</th>
145
                        <th>Call number</th>
161
                        <th>Call number</th>
146
                        <th class="title-string">Expiration date</th>
162
                        <th class="title-string">Expiration date</th>
163
                        [% FOR field IN additional_fields_for_subscription %]
164
                          <th>[% field.name %]</th>
165
                        [% END %]
147
                        <th class="NoSort">Actions</th>
166
                        <th class="NoSort">Actions</th>
148
                    </tr>
167
                    </tr>
149
                  </thead>
168
                  </thead>
Lines 156-161 Link Here
156
                      <td><input type="text" class="dt-filter" data-column_num="4" placeholder="Search location" /></td>
175
                      <td><input type="text" class="dt-filter" data-column_num="4" placeholder="Search location" /></td>
157
                      <td><input type="text" class="dt-filter" data-column_num="5" placeholder="Search callnumber" /></td>
176
                      <td><input type="text" class="dt-filter" data-column_num="5" placeholder="Search callnumber" /></td>
158
                      <td><input type="text" class="dt-filter" data-column_num="6" placeholder="Search expiration date" /></td>
177
                      <td><input type="text" class="dt-filter" data-column_num="6" placeholder="Search expiration date" /></td>
178
                      [% FOR field IN additional_fields_for_subscription %]
179
                        <td><input type="text" class="dt-filter" data-column_num="[% loop.count + 6 %]" placeholder="Search [% field.name %]" /></td>
180
                      [% END %]
159
                      <td></td>
181
                      <td></td>
160
                    </tr>
182
                    </tr>
161
                  </tfoot>
183
                  </tfoot>
Lines 189-194 Link Here
189
                            [% END %]
211
                            [% END %]
190
                        </td>
212
                        </td>
191
213
214
                        [% FOR field IN additional_fields_for_subscription %]
215
                          [% IF field.authorised_value_category %]
216
                            <td>[% AuthorisedValues.GetByCode( field.authorised_value_category, subscription.additional_fields.${field.name} ) %]</td>
217
                          [% ELSE %]
218
                            <td>[% subscription.additional_fields.${field.name} %]</td>
219
                          [% END %]
220
                        [% END %]
221
192
                        <td>
222
                        <td>
193
                            <div class="dropdown">
223
                            <div class="dropdown">
194
                                <a class="btn btn-mini dropdown-toggle" id="subactions[% subscription.subscriptionid %]" role="button" data-toggle="dropdown" href="#">
224
                                <a class="btn btn-mini dropdown-toggle" id="subactions[% subscription.subscriptionid %]" role="button" data-toggle="dropdown" href="#">
Lines 237-242 Link Here
237
            <div id="closed">
267
            <div id="closed">
238
              [% IF closedsubscriptions %]
268
              [% IF closedsubscriptions %]
239
                <table id="csrlt">
269
                <table id="csrlt">
270
                <!-- FIXME add additional_fields for closed subs -->
240
                  <thead>
271
                  <thead>
241
                    <tr>
272
                    <tr>
242
                        <th>ISSN</th>
273
                        <th>ISSN</th>
Lines 245-250 Link Here
245
                        <th>Library</th>
276
                        <th>Library</th>
246
                        <th>Location</th>
277
                        <th>Location</th>
247
                        <th>Call number</th>
278
                        <th>Call number</th>
279
                        [% FOR field IN additional_fields_for_subscription %]
280
                          <th>[% field.name %]</th>
281
                        [% END %]
248
                        <th class="NoSort">Actions</th>
282
                        <th class="NoSort">Actions</th>
249
                    </tr>
283
                    </tr>
250
                  </thead>
284
                  </thead>
Lines 256-261 Link Here
256
                      <td><input type="text" class="dt-filter" data-column_num="3" placeholder="Search library" /></td>
290
                      <td><input type="text" class="dt-filter" data-column_num="3" placeholder="Search library" /></td>
257
                      <td><input type="text" class="dt-filter" data-column_num="4" placeholder="Search location" /></td>
291
                      <td><input type="text" class="dt-filter" data-column_num="4" placeholder="Search location" /></td>
258
                      <td><input type="text" class="dt-filter" data-column_num="5" placeholder="Search callnumber" /></td>
292
                      <td><input type="text" class="dt-filter" data-column_num="5" placeholder="Search callnumber" /></td>
293
                      [% FOR field IN additional_fields_for_subscription %]
294
                        <td><input type="text" class="dt-filter" data-column_num="[% loop.count + 5 %]" placeholder="Search [% field.name %]" /></td>
295
                      [% END %]
259
                      <td></td>
296
                      <td></td>
260
                    </tr>
297
                    </tr>
261
                  </tfoot>
298
                  </tfoot>
Lines 284-289 Link Here
284
                        <td>
321
                        <td>
285
                          [% IF ( subscription.callnumber ) %][% subscription.callnumber %][% END %]
322
                          [% IF ( subscription.callnumber ) %][% subscription.callnumber %][% END %]
286
                        </td>
323
                        </td>
324
                        [% FOR field IN additional_fields_for_subscription %]
325
                          [% IF field.authorised_value_category %]
326
                            <td>[% KohaAuthorisedValues.GetByCode( field.authorised_value_category, subscription.additional_fields.${field.name} ) %]</td>
327
                          [% ELSE %]
328
                            <td>[% subscription.additional_fields.${field.name} %]</td>
329
                          [% END %]
330
                        [% END %]
287
                        <td>
331
                        <td>
288
                            <div class="dropdown">
332
                            <div class="dropdown">
289
                                <a class="btn btn-mini dropdown-toggle" id="closedsubactions[% subscription.subscriptionid %]" role="button" data-toggle="dropdown" href="#">
333
                                <a class="btn btn-mini dropdown-toggle" id="closedsubactions[% subscription.subscriptionid %]" role="button" data-toggle="dropdown" href="#">
Lines 394-399 Link Here
394
                  <input type="text" id="to" name="expiration_date_filter" value="[% expiration_date_filter | $KohaDates %]" size="10" maxlength="10" class="datepickerto" />
438
                  <input type="text" id="to" name="expiration_date_filter" value="[% expiration_date_filter | $KohaDates %]" size="10" maxlength="10" class="datepickerto" />
395
                </li>
439
                </li>
396
440
441
                [% FOR field IN additional_fields_for_subscription %]
442
                  <li>
443
                    <label for="additional_field_[% field.id %]ID"> [% field.name %]: </label>
444
                    [% IF field.authorised_value_choices %]
445
                      <select id="additional_field_[% field.id %]" name="additional_field_[% field.id %]_filter">
446
                        <option value="">All</option>
447
                        [% FOREACH av IN field.authorised_value_choices %]
448
                          [% IF av.authorised_value == additional_field_filters.${field.name} %]
449
                            <option value="[% av.authorised_value %]" selected="selected">[% av.lib %]</option>
450
                          [% ELSE %]
451
                            <option value="[% av.authorised_value %]">[% av.lib %]</option>
452
                          [% END %]
453
                        [% END %]
454
                      </select>
455
                    [% ELSE %]
456
                      <input id="additional_field_[% field.id %]" type="text" value="[% additional_field_filters.${field.name} %]" name="additional_field_[% field.id %]_filter" />
457
                    [% END %]
458
                  </li>
459
                [% END %]
397
              </ol>
460
              </ol>
398
              <input type="hidden" name="searched" value="1" />
461
              <input type="hidden" name="searched" value="1" />
399
              <fieldset class="action">
462
              <fieldset class="action">
(-)a/serials/serials-search.pl (-1 / +17 lines)
Lines 33-40 use CGI qw ( -utf8 ); Link Here
33
use C4::Auth;
33
use C4::Auth;
34
use C4::Branch;
34
use C4::Branch;
35
use C4::Context;
35
use C4::Context;
36
use C4::Koha qw( GetAuthorisedValues );
36
use C4::Output;
37
use C4::Output;
37
use C4::Serials;
38
use C4::Serials;
39
use Koha::AdditionalField;
38
40
39
use Koha::DateUtils;
41
use Koha::DateUtils;
40
42
Lines 75-80 if ( $op and $op eq "close" ) { Link Here
75
    }
77
    }
76
}
78
}
77
79
80
81
my $additional_fields = Koha::AdditionalField->all( { table => 'subscription', searchable => 1 } );
82
my $additional_field_filters;
83
for my $field ( @$additional_fields ) {
84
    if ( my $filter_value = $query->param('additional_field_' . $field->{name} . '_filter') ) {
85
        $additional_field_filters->{ $field->{name} } = $filter_value;
86
    }
87
    if ( $field->{authorised_value_category} ) {
88
        $field->{authorised_value_choices} = GetAuthorisedValues( $field->{authorised_value_category} );
89
    }
90
}
91
78
my $expiration_date_dt = $expiration_date ? dt_from_string( $expiration_date ) : undef;
92
my $expiration_date_dt = $expiration_date ? dt_from_string( $expiration_date ) : undef;
79
my @subscriptions;
93
my @subscriptions;
80
if ($searched){
94
if ($searched){
Lines 88-93 if ($searched){ Link Here
88
            publisher    => $publisher,
102
            publisher    => $publisher,
89
            bookseller   => $bookseller,
103
            bookseller   => $bookseller,
90
            branch       => $branch,
104
            branch       => $branch,
105
            additional_fields => [ map{ { name => $_, value => $additional_field_filters->{$_}} } keys %$additional_field_filters ],
91
            location     => $location,
106
            location     => $location,
92
            expiration_date => $expiration_date_dt,
107
            expiration_date => $expiration_date_dt,
93
        }
108
        }
Lines 141-146 $template->param( Link Here
141
    branches_loop => \@branches_loop,
156
    branches_loop => \@branches_loop,
142
    done_searched => $searched,
157
    done_searched => $searched,
143
    routing       => $routing,
158
    routing       => $routing,
159
    additional_field_filters => $additional_field_filters,
160
    additional_fields_for_subscription => $additional_fields,
144
    marcflavour   => (uc(C4::Context->preference("marcflavour")))
161
    marcflavour   => (uc(C4::Context->preference("marcflavour")))
145
);
162
);
146
163
147
- 

Return to bug 10855