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

(-)a/C4/Items.pm (-4 / +8 lines)
Lines 807-812 sub GetItemsForInventory { Link Here
807
    my ( $parameters ) = @_;
807
    my ( $parameters ) = @_;
808
    my $minlocation  = $parameters->{'minlocation'}  // '';
808
    my $minlocation  = $parameters->{'minlocation'}  // '';
809
    my $maxlocation  = $parameters->{'maxlocation'}  // '';
809
    my $maxlocation  = $parameters->{'maxlocation'}  // '';
810
    my $class_source = $parameters->{'class_source'}  // C4::Context->preference('DefaultClassificationSource');
810
    my $location     = $parameters->{'location'}     // '';
811
    my $location     = $parameters->{'location'}     // '';
811
    my $itemtype     = $parameters->{'itemtype'}     // '';
812
    my $itemtype     = $parameters->{'itemtype'}     // '';
812
    my $ignoreissued = $parameters->{'ignoreissued'} // '';
813
    my $ignoreissued = $parameters->{'ignoreissued'} // '';
Lines 820-825 sub GetItemsForInventory { Link Here
820
    my $dbh = C4::Context->dbh;
821
    my $dbh = C4::Context->dbh;
821
    my ( @bind_params, @where_strings );
822
    my ( @bind_params, @where_strings );
822
823
824
    my $min_cnsort = GetClassSort($class_source,undef,$minlocation);
825
    my $max_cnsort = GetClassSort($class_source,undef,$maxlocation);
826
823
    my $select_columns = q{
827
    my $select_columns = q{
824
        SELECT items.itemnumber, barcode, itemcallnumber, title, author, biblio.biblionumber, biblio.frameworkcode, datelastseen, homebranch, location, notforloan, damaged, itemlost, withdrawn, stocknumber
828
        SELECT items.itemnumber, barcode, itemcallnumber, title, author, biblio.biblionumber, biblio.frameworkcode, datelastseen, homebranch, location, notforloan, damaged, itemlost, withdrawn, stocknumber
825
    };
829
    };
Lines 839-851 sub GetItemsForInventory { Link Here
839
    }
843
    }
840
844
841
    if ($minlocation) {
845
    if ($minlocation) {
842
        push @where_strings, 'itemcallnumber >= ?';
846
        push @where_strings, 'items.cn_sort >= ?';
843
        push @bind_params, $minlocation;
847
        push @bind_params, $min_cnsort;
844
    }
848
    }
845
849
846
    if ($maxlocation) {
850
    if ($maxlocation) {
847
        push @where_strings, 'itemcallnumber <= ?';
851
        push @where_strings, 'items.cn_sort <= ?';
848
        push @bind_params, $maxlocation;
852
        push @bind_params, $max_cnsort;
849
    }
853
    }
850
854
851
    if ($datelastseen) {
855
    if ($datelastseen) {
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/inventory.tt (-1 / +12 lines)
Lines 79-85 Link Here
79
                <input type="text" name="minlocation" id="minlocation" value="[% minlocation %]" /> (items.itemcallnumber)  </li>
79
                <input type="text" name="minlocation" id="minlocation" value="[% minlocation %]" /> (items.itemcallnumber)  </li>
80
           <li><label for="maxlocation">...and: </label>
80
           <li><label for="maxlocation">...and: </label>
81
                <input type="text" name="maxlocation" id="maxlocation" value="[% maxlocation %]" />
81
                <input type="text" name="maxlocation" id="maxlocation" value="[% maxlocation %]" />
82
        </li>
82
           <li>
83
            <label for="class_source">Callnumber classification scheme</label>
84
            <select name="class_source">
85
            [% FOREACH class_source IN class_sources %]
86
                [% IF class_source.cn_source == pref_class %]
87
                <option value="[% class_source.cn_source %]" selected="selected">[% class_source.description %] (default)</option>
88
                [% ELSE %]
89
                <option value="[% class_source.cn_source %]">[% class_source.description %]</option>
90
                [% END %]
91
            [% END %]
92
            </select>
93
          </li>
83
    </ol>
94
    </ol>
84
    </fieldset>
95
    </fieldset>
85
96
(-)a/t/db_dependent/Items/GetItemsForInventory.t (-1 / +1 lines)
Lines 79-85 subtest 'Use cn_sort rather than callnumber to determine correct location' => su Link Here
79
        minlocation => 'GT90',
79
        minlocation => 'GT90',
80
        class_source => $class_source->{cn_source},
80
        class_source => $class_source->{cn_source},
81
    });
81
    });
82
    is($item_count,1,"We should return GT95 as betwen GT90 and GT100");
82
    is($item_count,1,"We should return GT95 as between GT90 and GT100");
83
    $schema->storage->txn_rollback;
83
    $schema->storage->txn_rollback;
84
84
85
};
85
};
(-)a/tools/inventory.pl (-1 / +10 lines)
Lines 39-48 use Koha::Biblios; Link Here
39
use Koha::DateUtils;
39
use Koha::DateUtils;
40
use Koha::AuthorisedValues;
40
use Koha::AuthorisedValues;
41
use Koha::BiblioFrameworks;
41
use Koha::BiblioFrameworks;
42
use Koha::ClassificationSources;
42
use List::MoreUtils qw( none );
43
use List::MoreUtils qw( none );
43
44
44
my $minlocation=$input->param('minlocation') || '';
45
my $minlocation=$input->param('minlocation') || '';
45
my $maxlocation=$input->param('maxlocation');
46
my $maxlocation=$input->param('maxlocation');
47
my $class_source=$input->param('class_source');
46
$maxlocation=$minlocation.'Z' unless ( $maxlocation || ! $minlocation );
48
$maxlocation=$minlocation.'Z' unless ( $maxlocation || ! $minlocation );
47
my $location=$input->param('location') || '';
49
my $location=$input->param('location') || '';
48
my $ignoreissued=$input->param('ignoreissued');
50
my $ignoreissued=$input->param('ignoreissued');
Lines 114-119 for my $authvfield (@$statuses) { Link Here
114
    }
116
    }
115
}
117
}
116
118
119
my @class_sources = Koha::ClassificationSources->search();
120
my $pref_class = C4::Context->preference("DefaultClassificationSource");
121
122
117
$template->param(
123
$template->param(
118
    authorised_values        => \@authorised_value_list,
124
    authorised_values        => \@authorised_value_list,
119
    today                    => dt_from_string,
125
    today                    => dt_from_string,
Lines 126-131 $template->param( Link Here
126
    datelastseen             => $datelastseen,
132
    datelastseen             => $datelastseen,
127
    compareinv2barcd         => $compareinv2barcd,
133
    compareinv2barcd         => $compareinv2barcd,
128
    uploadedbarcodesflag     => $uploadbarcodes ? 1 : 0,
134
    uploadedbarcodesflag     => $uploadbarcodes ? 1 : 0,
135
    class_sources            => \@class_sources,
136
    pref_class               => $pref_class
129
);
137
);
130
138
131
# Walk through uploaded barcodes, report errors, mark as seen, check in
139
# Walk through uploaded barcodes, report errors, mark as seen, check in
Lines 225-230 if ( $op && ( !$uploadbarcodes || $compareinv2barcd )) { Link Here
225
    ( $inventorylist ) = GetItemsForInventory({
233
    ( $inventorylist ) = GetItemsForInventory({
226
      minlocation  => $minlocation,
234
      minlocation  => $minlocation,
227
      maxlocation  => $maxlocation,
235
      maxlocation  => $maxlocation,
236
      class_source => $class_source,
228
      location     => $location,
237
      location     => $location,
229
      ignoreissued => $ignoreissued,
238
      ignoreissued => $ignoreissued,
230
      datelastseen => $datelastseen,
239
      datelastseen => $datelastseen,
Lines 239-244 if( @scanned_items ) { Link Here
239
    ( $rightplacelist ) = GetItemsForInventory({
248
    ( $rightplacelist ) = GetItemsForInventory({
240
      minlocation  => $minlocation,
249
      minlocation  => $minlocation,
241
      maxlocation  => $maxlocation,
250
      maxlocation  => $maxlocation,
251
      class_source => $class_source,
242
      location     => $location,
252
      location     => $location,
243
      ignoreissued => undef,
253
      ignoreissued => undef,
244
      datelastseen => undef,
254
      datelastseen => undef,
245
- 

Return to bug 19915