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

(-)a/C4/Serials.pm (-5 / +28 lines)
Lines 665-671 subscription expiration date. Link Here
665
sub SearchSubscriptions {
665
sub SearchSubscriptions {
666
    my ( $args ) = @_;
666
    my ( $args ) = @_;
667
667
668
    my $query = qq{
668
    my $additional_fields = $args->{additional_fields} // [];
669
    my $matching_record_ids_for_additional_fields = [];
670
    if ( @$additional_fields ) {
671
        $matching_record_ids_for_additional_fields = Koha::AdditionalField->get_matching_record_ids({
672
                fields => $args->{additional_fields},
673
                tablename => 'subscription',
674
        });
675
        return () unless @$matching_record_ids_for_additional_fields;
676
    }
677
678
    my $query = q|
669
        SELECT
679
        SELECT
670
            subscription.notes AS publicnotes,
680
            subscription.notes AS publicnotes,
671
            subscription.*,
681
            subscription.*,
Lines 679-691 sub SearchSubscriptions { Link Here
679
            LEFT JOIN biblio ON biblio.biblionumber = subscription.biblionumber
689
            LEFT JOIN biblio ON biblio.biblionumber = subscription.biblionumber
680
            LEFT JOIN biblioitems ON biblioitems.biblionumber = subscription.biblionumber
690
            LEFT JOIN biblioitems ON biblioitems.biblionumber = subscription.biblionumber
681
            LEFT JOIN aqbooksellers ON subscription.aqbooksellerid = aqbooksellers.id
691
            LEFT JOIN aqbooksellers ON subscription.aqbooksellerid = aqbooksellers.id
682
    };
692
    |;
693
    $query .= q| WHERE 1|;
683
    my @where_strs;
694
    my @where_strs;
684
    my @where_args;
695
    my @where_args;
685
    if( $args->{biblionumber} ) {
696
    if( $args->{biblionumber} ) {
686
        push @where_strs, "biblio.biblionumber = ?";
697
        push @where_strs, "biblio.biblionumber = ?";
687
        push @where_args, $args->{biblionumber};
698
        push @where_args, $args->{biblionumber};
688
    }
699
    }
700
689
    if( $args->{title} ){
701
    if( $args->{title} ){
690
        my @words = split / /, $args->{title};
702
        my @words = split / /, $args->{title};
691
        my (@strs, @args);
703
        my (@strs, @args);
Lines 734-748 sub SearchSubscriptions { Link Here
734
        push @where_strs, "subscription.closed = ?";
746
        push @where_strs, "subscription.closed = ?";
735
        push @where_args, "$args->{closed}";
747
        push @where_args, "$args->{closed}";
736
    }
748
    }
749
737
    if(@where_strs){
750
    if(@where_strs){
738
        $query .= " WHERE " . join(" AND ", @where_strs);
751
        $query .= ' AND ' . join(' AND ', @where_strs);
752
    }
753
    if ( @$additional_fields ) {
754
        $query .= ' AND subscriptionid IN ('
755
            . join( ', ', @$matching_record_ids_for_additional_fields )
756
        . ')';
739
    }
757
    }
740
758
741
    my $dbh = C4::Context->dbh;
759
    my $dbh = C4::Context->dbh;
742
    my $sth = $dbh->prepare($query);
760
    my $sth = $dbh->prepare($query);
743
    $sth->execute(@where_args);
761
    $sth->execute(@where_args);
744
    my $results = $sth->fetchall_arrayref( {} );
762
    my $results =  $sth->fetchall_arrayref( {} );
745
    $sth->finish;
746
763
747
    for my $subscription ( @$results ) {
764
    for my $subscription ( @$results ) {
748
        $subscription->{cannotedit} = not can_edit_subscription( $subscription );
765
        $subscription->{cannotedit} = not can_edit_subscription( $subscription );
Lines 750-755 sub SearchSubscriptions { Link Here
750
            ( C4::Context->preference("IndependentBranches") &&
767
            ( C4::Context->preference("IndependentBranches") &&
751
              C4::Context->userenv &&
768
              C4::Context->userenv &&
752
              $subscription->{branchcode} ne C4::Context->userenv->{'branch'} ) ? 1 : 0;
769
              $subscription->{branchcode} ne C4::Context->userenv->{'branch'} ) ? 1 : 0;
770
771
        my $additional_field_values = Koha::AdditionalField->fetch_all_values({
772
            record_id => $subscription->{subscriptionid},
773
            tablename => 'subscription'
774
        });
775
        $subscription->{addition_fields} = $additional_field_values->{$subscription->{subscriptionid}};
753
    }
776
    }
754
777
755
    return @$results;
778
    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 (-2 / +65 lines)
Lines 17-22 Link Here
17
    [% END %]
17
    [% END %]
18
    var osrlt = $("#osrlt").dataTable($.extend(true, {}, dataTablesDefaults, {
18
    var osrlt = $("#osrlt").dataTable($.extend(true, {}, dataTablesDefaults, {
19
19
20
        // FIXME sort function of additional_fields!
20
        "aoColumnDefs": [
21
        "aoColumnDefs": [
21
            { "aTargets": [ -1, -2, -3 ], "bSortable": false, "bSearchable": false },
22
            { "aTargets": [ -1, -2, -3 ], "bSortable": false, "bSearchable": false },
22
        ],
23
        ],
Lines 24-29 Link Here
24
    } ) );
25
    } ) );
25
26
26
    var csrlt = $("#csrlt").dataTable($.extend(true, {}, dataTablesDefaults, {
27
    var csrlt = $("#csrlt").dataTable($.extend(true, {}, dataTablesDefaults, {
28
        // FIXME sort function of additional_fields!
27
        "aoColumnDefs": [
29
        "aoColumnDefs": [
28
            { "aTargets": [ -1, -2 ], "bSortable": false, "bSearchable": false },
30
            { "aTargets": [ -1, -2 ], "bSortable": false, "bSearchable": false },
29
        ],
31
        ],
Lines 118-123 Link Here
118
                  <label for="to">Expires before:</label>
120
                  <label for="to">Expires before:</label>
119
                  <input type="text" id="to" name="expiration_date_filter" value="[% expiration_date_filter | $KohaDates %]" size="10" maxlength="10" class="datepickerto" />
121
                  <input type="text" id="to" name="expiration_date_filter" value="[% expiration_date_filter | $KohaDates %]" size="10" maxlength="10" class="datepickerto" />
120
                </li>
122
                </li>
123
                [% FOR field IN additional_fields_for_subscription %]
124
                  <li>
125
                    <label for="additional_field_[% field.id %]"> [% field.name %]: </label>
126
                    [% IF field.authorised_value_choices %]
127
                      <select id="additional_field_[% field.id %]" name="additional_field_[% field.id %]_filter">
128
                        <option value="">All</option>
129
                        [% FOREACH av IN field.authorised_value_choices %]
130
                          <option value="[% av.authorised_value %]">[% av.lib %]</option>
131
                        [% END %]
132
                      </select>
133
                    [% ELSE %]
134
                      <input id="additional_field_[% field.id %]" type="text" value="[% additional_fields.${field.name} %]" name="additional_field_[% field.id %]_filter" />
135
                    [% END %]
136
                  </li>
137
                [% END %]
121
              </ol>
138
              </ol>
122
              <input type="hidden" name="searched" value="1" />
139
              <input type="hidden" name="searched" value="1" />
123
              <fieldset class="action">
140
              <fieldset class="action">
Lines 146-151 Link Here
146
                        <th>Location</th>
163
                        <th>Location</th>
147
                        <th>Call number</th>
164
                        <th>Call number</th>
148
                        <th>Expiration date</th>
165
                        <th>Expiration date</th>
166
                        [% FOR field IN additional_fields_for_subscription %]
167
                          <th>[% field.name %]</th>
168
                        [% END %]
149
                        [% IF ( routing && CAN_user_serials_routing ) %]
169
                        [% IF ( routing && CAN_user_serials_routing ) %]
150
                          <th>Routing list</th>
170
                          <th>Routing list</th>
151
                        [% END %]
171
                        [% END %]
Lines 162-167 Link Here
162
                      <td><input type="text" class="filter" data-column_num="4" placeholder="Search location" /></td>
182
                      <td><input type="text" class="filter" data-column_num="4" placeholder="Search location" /></td>
163
                      <td><input type="text" class="filter" data-column_num="5" placeholder="Search callnumber" /></td>
183
                      <td><input type="text" class="filter" data-column_num="5" placeholder="Search callnumber" /></td>
164
                      <td><input type="text" class="filter" data-column_num="6" placeholder="Search expiration date" /></td>
184
                      <td><input type="text" class="filter" data-column_num="6" placeholder="Search expiration date" /></td>
185
                      [% FOR field IN additional_fields_for_subscription %]
186
                        <td><input type="text" class="filter" data-column_num="[% loop.count + 5 %]" placeholder="Search [% field.name %]" /></td>
187
                      [% END %]
165
                      [% IF ( routing && CAN_user_serials_routing ) %]<td></td>[% END %]
188
                      [% IF ( routing && CAN_user_serials_routing ) %]<td></td>[% END %]
166
                      <td></td>
189
                      <td></td>
167
                      <td></td>
190
                      <td></td>
Lines 192-197 Link Here
192
                        <td>
215
                        <td>
193
                          [% IF ( subscription.enddate ) %][% subscription.enddate | $KohaDates %][% END %]
216
                          [% IF ( subscription.enddate ) %][% subscription.enddate | $KohaDates %][% END %]
194
                        </td>
217
                        </td>
218
                        [% FOR field IN additional_fields_for_subscription %]
219
                          [% IF field.authorised_value_category %]
220
                            <td>[% AuthorisedValues.GetByCode( field.authorised_value_category, subscription.additional_fields.${field.name} ) %]</td>
221
                          [% ELSE %]
222
                            <td>[% subscription.additional_fields.${field.name} %]</td>
223
                          [% END %]
224
                        [% END %]
225
                        <td><a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]">Issue history</a>
226
                        </td>
195
                        [% IF ( routing && CAN_user_serials_routing ) %]
227
                        [% IF ( routing && CAN_user_serials_routing ) %]
196
                        <td>
228
                        <td>
197
                          [% IF ( subscription.cannotedit ) %]
229
                          [% IF ( subscription.cannotedit ) %]
Lines 206-213 Link Here
206
                          [% END %]
238
                          [% END %]
207
                        </td>
239
                        </td>
208
                        [% END %]
240
                        [% END %]
209
                        <td><a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]">Issue history</a>
210
                        </td>
211
                        <td>
241
                        <td>
212
                        [% IF ( CAN_user_serials_receive_serials ) %]
242
                        [% IF ( CAN_user_serials_receive_serials ) %]
213
                          <a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscription.subscriptionid %]&amp;serstatus=1,3,7">Serial receive</a>
243
                          <a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscription.subscriptionid %]&amp;serstatus=1,3,7">Serial receive</a>
Lines 227-232 Link Here
227
            <div id="closed">
257
            <div id="closed">
228
              [% IF closedsubscriptions %]
258
              [% IF closedsubscriptions %]
229
                <table id="csrlt">
259
                <table id="csrlt">
260
                <!-- FIXME add additional_fields for closed subs -->
230
                  <thead>
261
                  <thead>
231
                    <tr>
262
                    <tr>
232
                        <th>ISSN</th>
263
                        <th>ISSN</th>
Lines 235-240 Link Here
235
                        <th>Library</th>
266
                        <th>Library</th>
236
                        <th>Location</th>
267
                        <th>Location</th>
237
                        <th>Call number</th>
268
                        <th>Call number</th>
269
                        [% FOR field IN additional_fields_for_subscription %]
270
                          <th>[% field.name %]</th>
271
                        [% END %]
238
                        <th>&nbsp;</th>
272
                        <th>&nbsp;</th>
239
                        <th>&nbsp;</th>
273
                        <th>&nbsp;</th>
240
                    </tr>
274
                    </tr>
Lines 247-252 Link Here
247
                      <td><input type="text" class="filter" data-column_num="3" placeholder="Search library" /></td>
281
                      <td><input type="text" class="filter" data-column_num="3" placeholder="Search library" /></td>
248
                      <td><input type="text" class="filter" data-column_num="4" placeholder="Search location" /></td>
282
                      <td><input type="text" class="filter" data-column_num="4" placeholder="Search location" /></td>
249
                      <td><input type="text" class="filter" data-column_num="5" placeholder="Search callnumber" /></td>
283
                      <td><input type="text" class="filter" data-column_num="5" placeholder="Search callnumber" /></td>
284
                      [% FOR field IN additional_fields_for_subscription %]
285
                        <td><input type="text" class="filter" data-column_num="[% loop.count + 5 %]" placeholder="Search [% field.name %]" /></td>
286
                      [% END %]
250
                      <td></td>
287
                      <td></td>
251
                      <td></td>
288
                      <td></td>
252
                    </tr>
289
                    </tr>
Lines 276-281 Link Here
276
                        <td>
313
                        <td>
277
                          [% IF ( subscription.callnumber ) %][% subscription.callnumber %][% END %]
314
                          [% IF ( subscription.callnumber ) %][% subscription.callnumber %][% END %]
278
                        </td>
315
                        </td>
316
                        [% FOR field IN additional_fields_for_subscription %]
317
                          [% IF field.authorised_value_category %]
318
                            <td>[% KohaAuthorisedValues.GetByCode( field.authorised_value_category, subscription.additional_fields.${field.name} ) %]</td>
319
                          [% ELSE %]
320
                            <td>[% subscription.additional_fields.${field.name} %]</td>
321
                          [% END %]
322
                        [% END %]
279
                        <td>
323
                        <td>
280
                          [% UNLESS subscription.cannotedit %]
324
                          [% UNLESS subscription.cannotedit %]
281
                            <a href="/cgi-bin/koha/serials/serials-search.pl?subscriptionid=[% subscription.subscriptionid %]&amp;op=reopen&amp;routing=[% subscription.routing %]&amp;searched=1&amp;title_filter=[% title_filter %]&amp;ISSN_filter=[% ISSN_filter %]&amp;EAN_filter=[% EAN_filter %]&amp;published_filter=[% publisher_filter %]&amp;bookseller_filter=[% bookseller_filter %]&amp;branch_filter=[% branch_filter %]" id="reopensub">Reopen</a>
325
                            <a href="/cgi-bin/koha/serials/serials-search.pl?subscriptionid=[% subscription.subscriptionid %]&amp;op=reopen&amp;routing=[% subscription.routing %]&amp;searched=1&amp;title_filter=[% title_filter %]&amp;ISSN_filter=[% ISSN_filter %]&amp;EAN_filter=[% EAN_filter %]&amp;published_filter=[% publisher_filter %]&amp;bookseller_filter=[% bookseller_filter %]&amp;branch_filter=[% branch_filter %]" id="reopensub">Reopen</a>
Lines 374-379 Link Here
374
                  <input type="text" id="to" name="expiration_date_filter" value="[% expiration_date_filter | $KohaDates %]" size="10" maxlength="10" class="datepickerto" />
418
                  <input type="text" id="to" name="expiration_date_filter" value="[% expiration_date_filter | $KohaDates %]" size="10" maxlength="10" class="datepickerto" />
375
                </li>
419
                </li>
376
420
421
                [% FOR field IN additional_fields_for_subscription %]
422
                  <li>
423
                    <label for="additional_field_[% field.id %]ID"> [% field.name %]: </label>
424
                    [% IF field.authorised_value_choices %]
425
                      <select id="additional_field_[% field.id %]" name="additional_field_[% field.id %]_filter">
426
                        <option value="">All</option>
427
                        [% FOREACH av IN field.authorised_value_choices %]
428
                          [% IF av.authorised_value == additional_field_filters.${field.name} %]
429
                            <option value="[% av.authorised_value %]" selected="selected">[% av.lib %]</option>
430
                          [% ELSE %]
431
                            <option value="[% av.authorised_value %]">[% av.lib %]</option>
432
                          [% END %]
433
                        [% END %]
434
                      </select>
435
                    [% ELSE %]
436
                      <input id="additional_field_[% field.id %]" type="text" value="[% additional_field_filters.${field.name} %]" name="additional_field_[% field.id %]_filter" />
437
                    [% END %]
438
                  </li>
439
                [% END %]
377
              </ol>
440
              </ol>
378
              <input type="hidden" name="searched" value="1" />
441
              <input type="hidden" name="searched" value="1" />
379
              <fieldset class="action">
442
              <fieldset class="action">
(-)a/serials/serials-search.pl (-1 / +17 lines)
Lines 33-40 use CGI; 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