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

(-)a/C4/Letters.pm (-1 / +7 lines)
Lines 1848-1854 sub _get_tt_params { Link Here
1848
            singular => 'illrequest',
1848
            singular => 'illrequest',
1849
            plural   => 'illrequests',
1849
            plural   => 'illrequests',
1850
            pk       => 'illrequest_id'
1850
            pk       => 'illrequest_id'
1851
        }
1851
        },
1852
        preservation_train_items => {
1853
            module   => 'Koha::Preservation::Train::Items',
1854
            singular => 'train_item',
1855
            plural   => 'train_items',
1856
            pk       => 'train_item_id'
1857
        },
1852
    };
1858
    };
1853
1859
1854
    foreach my $table ( keys %$tables ) {
1860
    foreach my $table ( keys %$tables ) {
(-)a/Koha/Preservation/Train/Item.pm (+12 lines)
Lines 62-67 sub catalogue_item { Link Here
62
    return Koha::Item->_new_from_dbic($item_rs);
62
    return Koha::Item->_new_from_dbic($item_rs);
63
}
63
}
64
64
65
=head3 train
66
67
Return the train object for this item
68
69
=cut
70
71
sub train {
72
    my ( $self ) = @_;
73
    my $rs = $self->_result->train;
74
    return Koha::Preservation::Train->_new_from_dbic($rs);
75
}
76
65
=head3 attributes
77
=head3 attributes
66
78
67
Getter and setter for the attributes
79
Getter and setter for the attributes
(-)a/api/v1/swagger/definitions/preservation_processing.yaml (+5 lines)
Lines 8-13 properties: Link Here
8
  name:
8
  name:
9
    description: name of the processing
9
    description: name of the processing
10
    type: string
10
    type: string
11
  letter_code:
12
    description: Letter code of the letter to use for printing slips
13
    type:
14
      - string
15
      - "null"
11
  attributes:
16
  attributes:
12
    description: attributes of the processing
17
    description: attributes of the processing
13
    items:
18
    items:
(-)a/api/v1/swagger/paths/preservation_trains.yaml (+1 lines)
Lines 166-171 Link Here
166
            - items.attributes
166
            - items.attributes
167
            - items.attributes+strings
167
            - items.attributes+strings
168
            - items.attributes.processing_attribute
168
            - items.attributes.processing_attribute
169
            - items.processing
169
            - default_processing
170
            - default_processing
170
            - default_processing.attributes
171
            - default_processing.attributes
171
        collectionFormat: csv
172
        collectionFormat: csv
(-)a/debian/templates/apache-shared-intranet.conf (+1 lines)
Lines 21-26 RewriteRule ^/issn/([^\/]*)/?$ /search?q=issn:$1 [PT] Link Here
21
RewriteRule ^(.*)_[0-9]{2}\.[0-9]{7}\.(js|css)$ $1.$2 [L]
21
RewriteRule ^(.*)_[0-9]{2}\.[0-9]{7}\.(js|css)$ $1.$2 [L]
22
22
23
RewriteRule ^/cgi-bin/koha/erm/.*$ /cgi-bin/koha/erm/erm.pl [PT]
23
RewriteRule ^/cgi-bin/koha/erm/.*$ /cgi-bin/koha/erm/erm.pl [PT]
24
RewriteCond %{REQUEST_URI} !^/cgi-bin/koha/preservation/.*.pl$
24
RewriteRule ^/cgi-bin/koha/preservation/.*$ /cgi-bin/koha/preservation/home.pl [PT]
25
RewriteRule ^/cgi-bin/koha/preservation/.*$ /cgi-bin/koha/preservation/home.pl [PT]
25
26
26
Alias "/api" "/usr/share/koha/api"
27
Alias "/api" "/usr/share/koha/api"
(-)a/installer/data/mysql/atomicupdate/bug_33547.pl (+37 lines)
Line 0 Link Here
1
use Modern::Perl;
2
3
return {
4
    bug_number => "33547",
5
    description => "Add a new notice template 'PRES_TRAIN_ITEM'",
6
    up => sub {
7
        my ($args) = @_;
8
        my ($dbh, $out) = @$args{qw(dbh out)};
9
10
        unless ( column_exists('preservation_processings', 'letter_code') ) {
11
            $dbh->do(q{
12
                ALTER TABLE preservation_processings
13
                ADD COLUMN `letter_code` varchar(20) DEFAULT NULL COMMENT 'Foreign key to the letters table' AFTER `name`
14
            });
15
        }
16
17
        my $notice_template = q{[%~ SET train = train_item.train ~%]
18
[%~ SET item = train_item.catalogue_item ~%]
19
Train name: [% train.name %]
20
Sent on: [% train.sent_on | $KohaDates %]
21
22
[% train.default_processing.name %]
23
24
Item number #[% train_item.user_train_item_id %]
25
26
[% FOREACH item_attribute IN train_item.attributes %]
27
    [% item_attribute.processing_attribute.name %]: [% item_attribute.value %]
28
[% END %]};
29
30
        $dbh->do(q{
31
            INSERT IGNORE INTO letter
32
            (module,code,branchcode,name,is_html,title,content,message_transport_type,lang)
33
            VALUES
34
            ('preservation','PRES_TRAIN_ITEM','','Train item slip',0,'Train item slip',?, 'print','default')}, undef, $notice_template);
35
        say $out "Added new letter 'PRES_TRAIN_ITEM' (print)";
36
    },
37
};
(-)a/installer/data/mysql/en/mandatory/sample_notices.yml (+22 lines)
Lines 2381-2383 tables: Link Here
2381
            - "[% IF ( biblio.items.count > 0 ) %]<br>Items: <ul>[% FOREACH item IN biblio.items %]<li>[% Branches.GetName( item.holdingbranch ) | html %]"
2381
            - "[% IF ( biblio.items.count > 0 ) %]<br>Items: <ul>[% FOREACH item IN biblio.items %]<li>[% Branches.GetName( item.holdingbranch ) | html %]"
2382
            - "[% IF ( item.location ) %], [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => item.location ) | html %][% END %][% IF item.itemcallnumber %]([% item.itemcallnumber | html %])[% END %][% item.barcode | html %]</li>[% END %]</ul>[% END %]"
2382
            - "[% IF ( item.location ) %], [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => item.location ) | html %][% END %][% IF item.itemcallnumber %]([% item.itemcallnumber | html %])[% END %][% item.barcode | html %]</li>[% END %]</ul>[% END %]"
2383
            - "<hr></li>[% END %]</ol>"
2383
            - "<hr></li>[% END %]</ol>"
2384
2385
        - module: preservation
2386
          code: PRES_TRAIN_ITEM
2387
          branchcode: ""
2388
          name: "Train item slip"
2389
          is_html: 0
2390
          title: "Train item slip"
2391
          message_transport_type: print
2392
          lang: default
2393
          content:
2394
            - "[%~ SET train = train_item.train ~%]"
2395
            - "[%~ SET item = train_item.catalogue_item ~%]"
2396
            - "Train name: [% train.name %]"
2397
            - "Sent on: [% train.sent_on | $KohaDates %]"
2398
            - ""
2399
            - "[% train.default_processing.name %]"
2400
            - ""
2401
            - "Item number #[% train_item.user_train_item_id %]"
2402
            - ""
2403
            - "[% FOREACH item_attribute IN train_item.attributes %]"
2404
            - "    [% item_attribute.processing_attribute.name %]: [% item_attribute.value %]"
2405
            - "[% END %]"
(-)a/installer/data/mysql/kohastructure.sql (+1 lines)
Lines 4797-4802 DROP TABLE IF EXISTS `preservation_processings`; Link Here
4797
CREATE TABLE `preservation_processings` (
4797
CREATE TABLE `preservation_processings` (
4798
  `processing_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
4798
  `processing_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
4799
  `name` varchar(80) NOT NULL COMMENT 'name of the processing',
4799
  `name` varchar(80) NOT NULL COMMENT 'name of the processing',
4800
  `letter_code` varchar(20) DEFAULT NULL COMMENT 'Foreign key to the letters table',
4800
  PRIMARY KEY (`processing_id`)
4801
  PRIMARY KEY (`processing_id`)
4801
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
4802
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
4802
/*!40101 SET character_set_client = @saved_cs_client */;
4803
/*!40101 SET character_set_client = @saved_cs_client */;
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/preservation/home.tt (+1 lines)
Lines 34-39 Link Here
34
        const authorised_value_categories = [% To.json(AuthorisedValues.GetCategories()) | $raw %].map(c => c.category);
34
        const authorised_value_categories = [% To.json(AuthorisedValues.GetCategories()) | $raw %].map(c => c.category);
35
        const db_columns = [% To.json(db_columns) | $raw %];
35
        const db_columns = [% To.json(db_columns) | $raw %];
36
        const api_mappings = [% To.json(api_mappings) | $raw %];
36
        const api_mappings = [% To.json(api_mappings) | $raw %];
37
        const notice_templates = [% To.json(notice_templates || []) | $raw %];
37
38
38
        const csrf_token = "[% Koha.GenerateCSRF | $raw %]";
39
        const csrf_token = "[% Koha.GenerateCSRF | $raw %]";
39
40
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/letter.tt (+7 lines)
Lines 168-173 Link Here
168
                                <li><a href="/cgi-bin/koha/tools/letter.pl?op=add_form&amp;module=ill">Interlibrary loans</a></li>
168
                                <li><a href="/cgi-bin/koha/tools/letter.pl?op=add_form&amp;module=ill">Interlibrary loans</a></li>
169
                                <li><a href="/cgi-bin/koha/tools/letter.pl?op=add_form&amp;module=orderacquisition">Order acquisition</a></li>
169
                                <li><a href="/cgi-bin/koha/tools/letter.pl?op=add_form&amp;module=orderacquisition">Order acquisition</a></li>
170
                                <li><a href="/cgi-bin/koha/tools/letter.pl?op=add_form&amp;module=members">Patrons</a></li>
170
                                <li><a href="/cgi-bin/koha/tools/letter.pl?op=add_form&amp;module=members">Patrons</a></li>
171
                                <li><a href="/cgi-bin/koha/tools/letter.pl?op=add_form&amp;module=preservation">Preservation</a></li>
171
                                <li><a href="/cgi-bin/koha/tools/letter.pl?op=add_form&amp;module=serial">Serials (new issue)</a></li>
172
                                <li><a href="/cgi-bin/koha/tools/letter.pl?op=add_form&amp;module=serial">Serials (new issue)</a></li>
172
                                <li><a href="/cgi-bin/koha/tools/letter.pl?op=add_form&amp;module=suggestions">Suggestions</a></li>
173
                                <li><a href="/cgi-bin/koha/tools/letter.pl?op=add_form&amp;module=suggestions">Suggestions</a></li>
173
                                <li><a href="/cgi-bin/koha/tools/letter.pl?op=add_form&amp;module=pos">Point of sale</a></li>
174
                                <li><a href="/cgi-bin/koha/tools/letter.pl?op=add_form&amp;module=pos">Point of sale</a></li>
Lines 225-230 Link Here
225
                                                    [% CASE 'reserves' %]<span>Holds</span>
226
                                                    [% CASE 'reserves' %]<span>Holds</span>
226
                                                    [% CASE 'ill' %]<span>Interlibrary loans</span>
227
                                                    [% CASE 'ill' %]<span>Interlibrary loans</span>
227
                                                    [% CASE 'members' %]<span>Patrons</span>
228
                                                    [% CASE 'members' %]<span>Patrons</span>
229
                                                    [% CASE 'preservation' %]<span>Preservation</span>
228
                                                    [% CASE 'serial' %]<span>Serials (new issue)</span>
230
                                                    [% CASE 'serial' %]<span>Serials (new issue)</span>
229
                                                    [% CASE 'suggestions' %]<span>Suggestions</span>
231
                                                    [% CASE 'suggestions' %]<span>Suggestions</span>
230
                                                    [% CASE 'pos' %]<span>Point of sale</span>
232
                                                    [% CASE 'pos' %]<span>Point of sale</span>
Lines 389-394 Link Here
389
                                        [% ELSE %]
391
                                        [% ELSE %]
390
                                            <option value="members">Patrons</option>
392
                                            <option value="members">Patrons</option>
391
                                        [% END %]
393
                                        [% END %]
394
                                        [% IF ( module == "preservation" ) %]
395
                                            <option value="preservation" selected="selected">Preservation</option>
396
                                        [% ELSE %]
397
                                            <option value="preservation">Preservation</option>
398
                                        [% END %]
392
                                        [% IF ( module == "serial" ) %]
399
                                        [% IF ( module == "serial" ) %]
393
                                            <option value="serial" selected="selected">Serials (new issue)</option>
400
                                            <option value="serial" selected="selected">Serials (new issue)</option>
394
                                        [% ELSE %]
401
                                        [% ELSE %]
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Preservation/SettingsProcessingsFormAdd.vue (+15 lines)
Lines 21-26 Link Here
21
                            />
21
                            />
22
                            <span class="required">{{ $__("Required") }}</span>
22
                            <span class="required">{{ $__("Required") }}</span>
23
                        </li>
23
                        </li>
24
                        <li>
25
                            <label for="letter_code"
26
                                >{{
27
                                    $__("Letter template for printing slip")
28
                                }}:</label
29
                            >
30
                            <v-select
31
                                id="letter_code"
32
                                label="name"
33
                                v-model="processing.letter_code"
34
                                :options="notice_templates"
35
                                :reduce="n => n.code"
36
                            />
37
                        </li>
24
                    </ol>
38
                    </ol>
25
                </fieldset>
39
                </fieldset>
26
                <fieldset class="rows">
40
                <fieldset class="rows">
Lines 199-204 export default { Link Here
199
            setWarning,
213
            setWarning,
200
            authorised_value_categories,
214
            authorised_value_categories,
201
            db_column_options,
215
            db_column_options,
216
            notice_templates,
202
        }
217
        }
203
    },
218
    },
204
    data() {
219
    data() {
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Preservation/SettingsProcessingsShow.vue (+24 lines)
Lines 24-29 Link Here
24
                            {{ processing.name }}
24
                            {{ processing.name }}
25
                        </span>
25
                        </span>
26
                    </li>
26
                    </li>
27
                    <li v-if="notice_template">
28
                        <label
29
                            >{{
30
                                $__("Letter template for printing slip")
31
                            }}:</label
32
                        >
33
                        <span>
34
                            {{ notice_template.name }}
35
                            <a
36
                                :href="`/cgi-bin/koha/tools/letter.pl?op=add_form&module=preservation&code=${notice_template.code}`"
37
                                ><i class="fa fa-edit"></i>
38
                                {{ $__("Edit this template") }}</a
39
                            >
40
                        </span>
41
                    </li>
27
                </ol>
42
                </ol>
28
            </fieldset>
43
            </fieldset>
29
            <fieldset class="rows">
44
            <fieldset class="rows">
Lines 77-90 export default { Link Here
77
        const { setConfirmationDialog, setMessage } = inject("mainStore")
92
        const { setConfirmationDialog, setMessage } = inject("mainStore")
78
93
79
        return {
94
        return {
95
            notice_templates,
80
            setConfirmationDialog,
96
            setConfirmationDialog,
81
            setMessage,
97
            setMessage,
82
        }
98
        }
83
    },
99
    },
100
    computed: {
101
        notice_template() {
102
            return this.notice_templates.find(
103
                n => n.id == this.processing.letter_code
104
            )
105
        },
106
    },
84
    data() {
107
    data() {
85
        return {
108
        return {
86
            processing: {
109
            processing: {
87
                processing_id: null,
110
                processing_id: null,
111
                letter_code: null,
88
                name: "",
112
                name: "",
89
                attributes: [],
113
                attributes: [],
90
            },
114
            },
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Preservation/TrainsShow.vue (-2 / +32 lines)
Lines 437-442 export default { Link Here
437
                }
437
                }
438
            )
438
            )
439
        },
439
        },
440
        printSlip(train_item_id) {
441
            window.open(
442
                "/cgi-bin/koha/preservation/print_slip.pl?train_item_id=" +
443
                    train_item_id,
444
                "_blank"
445
            )
446
        },
440
        selectTrainForCopy(train_item_id) {
447
        selectTrainForCopy(train_item_id) {
441
            this.show_modal = true
448
            this.show_modal = true
442
            this.train_item_id_to_copy = train_item_id
449
            this.train_item_id_to_copy = train_item_id
Lines 469-474 export default { Link Here
469
            let item_table = this.item_table
476
            let item_table = this.item_table
470
            let removeItem = this.removeItem
477
            let removeItem = this.removeItem
471
            let editItem = this.editItem
478
            let editItem = this.editItem
479
            let printSlip = this.printSlip
472
            let selectTrainForCopy = this.selectTrainForCopy
480
            let selectTrainForCopy = this.selectTrainForCopy
473
            let train = this.train
481
            let train = this.train
474
482
Lines 481-488 export default { Link Here
481
                    var api = new $.fn.dataTable.Api(settings)
489
                    var api = new $.fn.dataTable.Api(settings)
482
                    $.each($(this).find("td.actions"), function (index, e) {
490
                    $.each($(this).find("td.actions"), function (index, e) {
483
                        let tr = $(this).parent()
491
                        let tr = $(this).parent()
484
                        let train_item_id = api.row(tr).data()
492
                        let train_item = api.row(tr).data().item
485
                            .item.train_item_id
493
                        let train_item_id = train_item.train_item_id
486
494
487
                        let editButton = createVNode(
495
                        let editButton = createVNode(
488
                            "a",
496
                            "a",
Lines 547-552 export default { Link Here
547
                            )
555
                            )
548
                        }
556
                        }
549
557
558
                        if (train_item.processing.letter_code !== null) {
559
                            let printButton = createVNode(
560
                                "a",
561
                                {
562
                                    class: "btn btn-default btn-xs",
563
                                    role: "button",
564
                                    onClick: () => {
565
                                        printSlip(train_item_id)
566
                                    },
567
                                },
568
                                [
569
                                    createVNode("i", {
570
                                        class: "fa fa-print",
571
                                        "aria-hidden": "true",
572
                                    }),
573
                                    __("Print slip"),
574
                                ]
575
                            )
576
                            buttons.push(" ")
577
                            buttons.push(printButton)
578
                        }
579
550
                        let n = createVNode("span", {}, buttons)
580
                        let n = createVNode("span", {}, buttons)
551
                        render(n, e)
581
                        render(n, e)
552
                    })
582
                    })
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/preservation-api-client.js (-1 / +1 lines)
Lines 23-29 export class PreservationAPIClient extends HttpClient { Link Here
23
                    endpoint: "trains/" + id,
23
                    endpoint: "trains/" + id,
24
                    headers: {
24
                    headers: {
25
                        "x-koha-embed":
25
                        "x-koha-embed":
26
                            "default_processing,default_processing.attributes,items,items.attributes,items.attributes+strings,items.attributes.processing_attribute",
26
                            "default_processing,default_processing.attributes,items,items.attributes,items.attributes+strings,items.attributes.processing_attribute,items.processing",
27
                    },
27
                    },
28
                }),
28
                }),
29
            getAll: (query = {}) =>
29
            getAll: (query = {}) =>
(-)a/preservation/home.pl (+5 lines)
Lines 22-27 use C4::Auth qw( get_template_and_user ); Link Here
22
use C4::Output qw( output_html_with_http_headers );
22
use C4::Output qw( output_html_with_http_headers );
23
23
24
use Koha::Database::Columns;
24
use Koha::Database::Columns;
25
use Koha::Notice::Templates;
25
26
26
my $query = CGI->new;
27
my $query = CGI->new;
27
my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user(
28
my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user(
Lines 47-52 $template->param( Link Here
47
        biblioitems => Koha::Biblioitem->to_api_mapping,
48
        biblioitems => Koha::Biblioitem->to_api_mapping,
48
        biblio => Koha::Biblio->to_api_mapping,
49
        biblio => Koha::Biblio->to_api_mapping,
49
    },
50
    },
51
    notice_templates =>
52
      [ map { { id => $_->id, code => $_->code, name => $_->name } }
53
          Koha::Notice::Templates->search( { module => 'preservation' } )
54
          ->as_list ],
50
);
55
);
51
56
52
output_html_with_http_headers $query, $cookie, $template->output;
57
output_html_with_http_headers $query, $cookie, $template->output;
(-)a/preservation/print_slip.pl (+75 lines)
Line 0 Link Here
1
#!/usr/bin/perl
2
3
# This file is part of Koha.
4
#
5
# Koha is free software; you can redistribute it and/or modify it
6
# under the terms of the GNU General Public License as published by
7
# the Free Software Foundation; either version 3 of the License, or
8
# (at your option) any later version.
9
#
10
# Koha is distributed in the hope that it will be useful, but
11
# WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
# GNU General Public License for more details.
14
#
15
# You should have received a copy of the GNU General Public License
16
# along with Koha; if not, see <http://www.gnu.org/licenses>.
17
18
19
use Modern::Perl;
20
use CGI qw ( -utf8 );
21
use C4::Context;
22
use C4::Auth qw( get_template_and_user );
23
use C4::Output qw( output_and_exit_if_error output_and_exit output_html_with_http_headers );
24
use C4::Letters;
25
use Koha::Patrons;
26
use Koha::Preservation::Train::Items;
27
28
my $input = CGI->new;
29
my $train_item_id = $input->param('train_item_id');
30
31
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
32
    {
33
        template_name   => "circ/printslip.tt",
34
        query           => $input,
35
        type            => "intranet",
36
        flagsrequired   => { preservation => '*' },
37
    }
38
);
39
40
my $logged_in_user = Koha::Patrons->find($loggedinuser);
41
my $branch = C4::Context->userenv->{'branch'};
42
43
my $train_item = Koha::Preservation::Train::Items->find($train_item_id);
44
45
unless ($train_item){
46
    print $input->redirect("/cgi-bin/koha/errors/404.pl");
47
    exit;
48
}
49
50
my $train = $train_item->train;
51
52
my $letter = C4::Letters::GetPreparedLetter(
53
    module      => 'preservation',
54
    letter_code => $train_item->processing->letter_code,
55
    branchcode  => $branch,
56
    lang        => $logged_in_user->lang,
57
    tables      => {
58
        preservation_train_items => $train_item_id,
59
    },
60
    message_transport_type => 'print'
61
);
62
63
my $slip    = $letter->{content};
64
my $is_html = $letter->{is_html};
65
66
$template->param(
67
    slip => $slip,
68
    plain => !$is_html,
69
    caller => 'preservation',
70
    stylesheet => C4::Context->preference("SlipCSS"),
71
);
72
73
$template->param( IntranetSlipPrinterJS => C4::Context->preference('IntranetSlipPrinterJS' ) );
74
75
output_html_with_http_headers $input, $cookie, $template->output;
(-)a/t/db_dependent/Koha/Preservation/Trains.t (-2 / +5 lines)
Lines 53-59 subtest 'default_processing' => sub { Link Here
53
};
53
};
54
54
55
subtest 'add_items & items' => sub {
55
subtest 'add_items & items' => sub {
56
    plan tests => 14;
56
    plan tests => 15;
57
57
58
    $schema->storage->txn_begin;
58
    $schema->storage->txn_begin;
59
59
Lines 99-104 subtest 'add_items & items' => sub { Link Here
99
    is( $item_2->get_from_storage->notforloan, 0 );
99
    is( $item_2->get_from_storage->notforloan, 0 );
100
    is( $item_3->get_from_storage->notforloan, $not_for_loan_train_in );
100
    is( $item_3->get_from_storage->notforloan, $not_for_loan_train_in );
101
101
102
    is( ref( $item_train_1->train ),
103
        'Koha::Preservation::Train',
104
        'Train::Item->train returns a Koha::Preservation::Train object' );
105
102
    warning_is {
106
    warning_is {
103
        $train->add_item( { item_id => $item_2->itemnumber }, { skip_waiting_list_check => 1 } );
107
        $train->add_item( { item_id => $item_2->itemnumber }, { skip_waiting_list_check => 1 } );
104
    } '';
108
    } '';
105
- 

Return to bug 33547