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

(-)a/C4/Serials.pm (-5 / +28 lines)
Lines 651-657 a table of hashref. Each hash containt the subscription. Link Here
651
sub SearchSubscriptions {
651
sub SearchSubscriptions {
652
    my ( $args ) = @_;
652
    my ( $args ) = @_;
653
653
654
    my $query = qq{
654
    my $additional_fields = $args->{additional_fields} // [];
655
    my $matching_record_ids_for_additional_fields = [];
656
    if ( @$additional_fields ) {
657
        $matching_record_ids_for_additional_fields = Koha::AdditionalField->get_matching_record_ids({
658
                fields => $args->{additional_fields},
659
                tablename => 'subscription',
660
        });
661
        return () unless @$matching_record_ids_for_additional_fields;
662
    }
663
664
    my $query = q|
655
        SELECT
665
        SELECT
656
            subscription.notes AS publicnotes,
666
            subscription.notes AS publicnotes,
657
            subscription.*,
667
            subscription.*,
Lines 665-677 sub SearchSubscriptions { Link Here
665
            LEFT JOIN biblio ON biblio.biblionumber = subscription.biblionumber
675
            LEFT JOIN biblio ON biblio.biblionumber = subscription.biblionumber
666
            LEFT JOIN biblioitems ON biblioitems.biblionumber = subscription.biblionumber
676
            LEFT JOIN biblioitems ON biblioitems.biblionumber = subscription.biblionumber
667
            LEFT JOIN aqbooksellers ON subscription.aqbooksellerid = aqbooksellers.id
677
            LEFT JOIN aqbooksellers ON subscription.aqbooksellerid = aqbooksellers.id
668
    };
678
    |;
679
    $query .= q| WHERE 1|;
669
    my @where_strs;
680
    my @where_strs;
670
    my @where_args;
681
    my @where_args;
671
    if( $args->{biblionumber} ) {
682
    if( $args->{biblionumber} ) {
672
        push @where_strs, "biblio.biblionumber = ?";
683
        push @where_strs, "biblio.biblionumber = ?";
673
        push @where_args, $args->{biblionumber};
684
        push @where_args, $args->{biblionumber};
674
    }
685
    }
686
675
    if( $args->{title} ){
687
    if( $args->{title} ){
676
        my @words = split / /, $args->{title};
688
        my @words = split / /, $args->{title};
677
        my (@strs, @args);
689
        my (@strs, @args);
Lines 708-722 sub SearchSubscriptions { Link Here
708
        push @where_strs, "subscription.closed = ?";
720
        push @where_strs, "subscription.closed = ?";
709
        push @where_args, "$args->{closed}";
721
        push @where_args, "$args->{closed}";
710
    }
722
    }
723
711
    if(@where_strs){
724
    if(@where_strs){
712
        $query .= " WHERE " . join(" AND ", @where_strs);
725
        $query .= ' AND ' . join(' AND ', @where_strs);
726
    }
727
    if ( @$additional_fields ) {
728
        $query .= ' AND subscriptionid IN ('
729
            . join( ', ', @$matching_record_ids_for_additional_fields )
730
        . ')';
713
    }
731
    }
714
732
715
    my $dbh = C4::Context->dbh;
733
    my $dbh = C4::Context->dbh;
716
    my $sth = $dbh->prepare($query);
734
    my $sth = $dbh->prepare($query);
717
    $sth->execute(@where_args);
735
    $sth->execute(@where_args);
718
    my $results = $sth->fetchall_arrayref( {} );
736
    my $results =  $sth->fetchall_arrayref( {} );
719
    $sth->finish;
720
737
721
    for my $subscription ( @$results ) {
738
    for my $subscription ( @$results ) {
722
        $subscription->{cannotedit} = not can_edit_subscription( $subscription );
739
        $subscription->{cannotedit} = not can_edit_subscription( $subscription );
Lines 724-729 sub SearchSubscriptions { Link Here
724
            ( C4::Context->preference("IndependentBranches") &&
741
            ( C4::Context->preference("IndependentBranches") &&
725
              C4::Context->userenv &&
742
              C4::Context->userenv &&
726
              $subscription->{branchcode} ne C4::Context->userenv->{'branch'} ) ? 1 : 0;
743
              $subscription->{branchcode} ne C4::Context->userenv->{'branch'} ) ? 1 : 0;
744
745
        my $additional_field_values = Koha::AdditionalField->fetch_all_values({
746
            record_id => $subscription->{subscriptionid},
747
            tablename => 'subscription'
748
        });
749
        $subscription->{addition_fields} = $additional_field_values->{$subscription->{subscriptionid}};
727
    }
750
    }
728
751
729
    return @$results;
752
    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 (-3 / +54 lines)
Lines 1-5 Link Here
1
[% INCLUDE 'doc-head-open.inc' %]
1
[% INCLUDE 'doc-head-open.inc' %]
2
[% USE KohaDates %]
2
[% USE KohaDates %]
3
[% USE KohaAuthorisedValues %]
3
<title>Koha &rsaquo; Serials [% biblionumber %]</title>
4
<title>Koha &rsaquo; Serials [% biblionumber %]</title>
4
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
5
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
5
[% INCLUDE 'doc-head-close.inc' %]
6
[% INCLUDE 'doc-head-close.inc' %]
Lines 14-19 Link Here
14
    [% END %]
15
    [% END %]
15
    var osrlt = $("#osrlt").dataTable($.extend(true, {}, dataTablesDefaults, {
16
    var osrlt = $("#osrlt").dataTable($.extend(true, {}, dataTablesDefaults, {
16
17
18
        // FIXME sort function of additional_fields!
17
        "aoColumnDefs": [
19
        "aoColumnDefs": [
18
            { "aTargets": [ -1, -2, -3 ], "bSortable": false, "bSearchable": false },
20
            { "aTargets": [ -1, -2, -3 ], "bSortable": false, "bSearchable": false },
19
        ],
21
        ],
Lines 21-26 Link Here
21
    } ) );
23
    } ) );
22
24
23
    var csrlt = $("#csrlt").dataTable($.extend(true, {}, dataTablesDefaults, {
25
    var csrlt = $("#csrlt").dataTable($.extend(true, {}, dataTablesDefaults, {
26
        // FIXME sort function of additional_fields!
24
        "aoColumnDefs": [
27
        "aoColumnDefs": [
25
            { "aTargets": [ -1, -2 ], "bSortable": false, "bSearchable": false },
28
            { "aTargets": [ -1, -2 ], "bSortable": false, "bSearchable": false },
26
        ],
29
        ],
Lines 92-97 Link Here
92
                    [% END %]
95
                    [% END %]
93
                  </select>
96
                  </select>
94
                </li>
97
                </li>
98
                [% FOR field IN additional_fields_for_subscription %]
99
                  <li>
100
                    <label for="additional_field_[% field.name %]"> [% field.name %]: </label>
101
                    [% IF field.authorised_value_choices %]
102
                      <select id="additional_field_[% field.name %]" name="additional_field_[% field.name %]_filter">
103
                        <option value="">All</option>
104
                        [% FOREACH av IN field.authorised_value_choices %]
105
                          <option value="[% av.authorised_value %]">[% av.lib %]</option>
106
                        [% END %]
107
                      </select>
108
                    [% ELSE %]
109
                      <input id="additional_field_[% field.name %]" type="text" value="[% additional_fields.${field.name} %]" name="additional_field_[% field.name %]_filter" />
110
                    [% END %]
111
                  </li>
112
                [% END %]
95
              </ol>
113
              </ol>
96
              <input type="hidden" name="searched" value="1" />
114
              <input type="hidden" name="searched" value="1" />
97
              <fieldset class="action">
115
              <fieldset class="action">
Lines 119-124 Link Here
119
                        <th>Library</th>
137
                        <th>Library</th>
120
                        <th>Call number</th>
138
                        <th>Call number</th>
121
                        <th>Expiration date</th>
139
                        <th>Expiration date</th>
140
                        [% FOR field IN additional_fields_for_subscription %]
141
                          <th>[% field.name %]</th>
142
                        [% END %]
122
                        [% IF ( routing && CAN_user_serials_routing ) %]
143
                        [% IF ( routing && CAN_user_serials_routing ) %]
123
                          <th>Routing list</th>
144
                          <th>Routing list</th>
124
                        [% END %]
145
                        [% END %]
Lines 134-139 Link Here
134
                      <td><input type="text" class="filter" data-column_num="3" placeholder="Search library" /></td>
155
                      <td><input type="text" class="filter" data-column_num="3" placeholder="Search library" /></td>
135
                      <td><input type="text" class="filter" data-column_num="4" placeholder="Search callnumber" /></td>
156
                      <td><input type="text" class="filter" data-column_num="4" placeholder="Search callnumber" /></td>
136
                      <td><input type="text" class="filter" data-column_num="5" placeholder="Search expiration date" /></td>
157
                      <td><input type="text" class="filter" data-column_num="5" placeholder="Search expiration date" /></td>
158
                      [% FOR field IN additional_fields_for_subscription %]
159
                        <td><input type="text" class="filter" data-column_num="[% loop.count + 5 %]" placeholder="Search [% field.name %]" /></td>
160
                      [% END %]
137
                      [% IF ( routing && CAN_user_serials_routing ) %]<td></td>[% END %]
161
                      [% IF ( routing && CAN_user_serials_routing ) %]<td></td>[% END %]
138
                      <td></td>
162
                      <td></td>
139
                      <td></td>
163
                      <td></td>
Lines 162-167 Link Here
162
                          [% IF ( subscription.enddate ) %][% subscription.enddate | $KohaDates %][% END %]
186
                          [% IF ( subscription.enddate ) %][% subscription.enddate | $KohaDates %][% END %]
163
                        </td>
187
                        </td>
164
                        [% IF ( routing && CAN_user_serials_routing ) %]
188
                        [% IF ( routing && CAN_user_serials_routing ) %]
189
                        [% END %]
190
                        [% FOR field IN additional_fields_for_subscription %]
191
                          [% IF field.authorised_value_category %]
192
                            <td>[% KohaAuthorisedValues.GetByCode( field.authorised_value_category, subscription.additional_fields.${field.name} ) %]</td>
193
                          [% ELSE %]
194
                            <td>[% subscription.additional_fields.${field.name} %]</td>
195
                          [% END %]
196
                        [% END %]
197
                        <td><a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]">Issue history</a>
198
                        </td>
165
                        <td>
199
                        <td>
166
                          [% IF ( subscription.cannotedit ) %]
200
                          [% IF ( subscription.cannotedit ) %]
167
                            &nbsp;
201
                            &nbsp;
Lines 174-182 Link Here
174
                            [% END %]
208
                            [% END %]
175
                          [% END %]
209
                          [% END %]
176
                        </td>
210
                        </td>
177
                        [% END %]
178
                        <td><a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]">Issue history</a>
179
                        </td>
180
                        <td>
211
                        <td>
181
                        [% IF ( CAN_user_serials_receive_serials ) %]
212
                        [% IF ( CAN_user_serials_receive_serials ) %]
182
                          <a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscription.subscriptionid %]&amp;serstatus=1,3,7">Serial receive</a>
213
                          <a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscription.subscriptionid %]&amp;serstatus=1,3,7">Serial receive</a>
Lines 196-201 Link Here
196
            <div id="closed">
227
            <div id="closed">
197
              [% IF closedsubscriptions %]
228
              [% IF closedsubscriptions %]
198
                <table id="csrlt">
229
                <table id="csrlt">
230
                <!-- FIXME add additional_fields for closed subs -->
199
                  <thead>
231
                  <thead>
200
                    <tr>
232
                    <tr>
201
                        <th>ISSN</th>
233
                        <th>ISSN</th>
Lines 314-319 Link Here
314
                    [% END %]
346
                    [% END %]
315
                  </select>
347
                  </select>
316
                </li>
348
                </li>
349
                [% FOR field IN additional_fields_for_subscription %]
350
                  <li>
351
                    <label for="additional_field_[% field.name %]"> [% field.name %]: </label>
352
                    [% IF field.authorised_value_choices %]
353
                      <select id="additional_field_[% field.name %]" name="additional_field_[% field.name %]_filter">
354
                        <option value="">All</option>
355
                        [% FOREACH av IN field.authorised_value_choices %]
356
                          [% IF av.authorised_value == additional_field_filters.${field.name} %]
357
                            <option value="[% av.authorised_value %]" selected="selected">[% av.lib %]</option>
358
                          [% ELSE %]
359
                            <option value="[% av.authorised_value %]">[% av.lib %]</option>
360
                          [% END %]
361
                        [% END %]
362
                      </select>
363
                    [% ELSE %]
364
                      <input id="additional_field_[% field.name %]" type="text" value="[% additional_field_filters.${field.name} %]" name="additional_field_[% field.name %]_filter" />
365
                    [% END %]
366
                  </li>
367
                [% END %]
317
              </ol>
368
              </ol>
318
              <input type="hidden" name="searched" value="1" />
369
              <input type="hidden" name="searched" value="1" />
319
              <fieldset class="action">
370
              <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
my $query         = new CGI;
41
my $query         = new CGI;
40
my $title         = $query->param('title_filter') || '';
42
my $title         = $query->param('title_filter') || '';
Lines 70-75 if ( $op and $op eq "close" ) { Link Here
70
    }
72
    }
71
}
73
}
72
74
75
76
my $additional_fields = Koha::AdditionalField->all( { table => 'subscription', searchable => 1 } );
77
my $additional_field_filters;
78
for my $field ( @$additional_fields ) {
79
    if ( my $filter_value = $query->param('additional_field_' . $field->{name} . '_filter') ) {
80
        $additional_field_filters->{ $field->{name} } = $filter_value;
81
    }
82
    if ( $field->{authorised_value_category} ) {
83
        $field->{authorised_value_choices} = GetAuthorisedValues( $field->{authorised_value_category} );
84
    }
85
}
86
73
my @subscriptions;
87
my @subscriptions;
74
if ($searched){
88
if ($searched){
75
    @subscriptions = SearchSubscriptions(
89
    @subscriptions = SearchSubscriptions(
Lines 81-86 if ($searched){ Link Here
81
            publisher    => $publisher,
95
            publisher    => $publisher,
82
            bookseller   => $bookseller,
96
            bookseller   => $bookseller,
83
            branch       => $branch,
97
            branch       => $branch,
98
            additional_fields => [ map{ { name => $_, value => $additional_field_filters->{$_}} } keys %$additional_field_filters ],
84
        }
99
        }
85
    );
100
    );
86
}
101
}
Lines 129-134 $template->param( Link Here
129
    branches_loop => \@branches_loop,
144
    branches_loop => \@branches_loop,
130
    done_searched => $searched,
145
    done_searched => $searched,
131
    routing       => $routing,
146
    routing       => $routing,
147
    additional_field_filters => $additional_field_filters,
148
    additional_fields_for_subscription => $additional_fields,
132
    marcflavour   => (uc(C4::Context->preference("marcflavour")))
149
    marcflavour   => (uc(C4::Context->preference("marcflavour")))
133
);
150
);
134
151
135
- 

Return to bug 10855