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

(-)a/Koha/Library.pm (+28 lines)
Lines 51-56 sub stockrotationstages { Link Here
51
    return Koha::StockRotationStages->_new_from_dbic( $rs );
51
    return Koha::StockRotationStages->_new_from_dbic( $rs );
52
}
52
}
53
53
54
=head3 outgoing_transfers
55
56
  my $outgoing_transfers = Koha::Library->outgoing_transfers;
57
58
Returns the outgoing item transfers associated with this Library.
59
60
=cut
61
62
sub outgoing_transfers {
63
    my ( $self ) = @_;
64
    my $rs = $self->_result->branchtransfers_frombranches;
65
    return Koha::Item::Transfers->_new_from_dbic( $rs );
66
}
67
68
=head3 inbound_transfers
69
70
  my $inbound_transfers = Koha::Library->inbound_transfers;
71
72
Returns the inbound item transfers associated with this Library.
73
74
=cut
75
76
sub inbound_transfers {
77
    my ( $self ) = @_;
78
    my $rs = $self->_result->branchtransfers_tobranches;
79
    return Koha::Item::Transfers->_new_from_dbic( $rs );
80
}
81
54
=head3 get_effective_marcorgcode
82
=head3 get_effective_marcorgcode
55
83
56
    my $marcorgcode = Koha::Libraries->find( $library_id )->get_effective_marcorgcode();
84
    my $marcorgcode = Koha::Libraries->find( $library_id )->get_effective_marcorgcode();
(-)a/Koha/StockRotationItem.pm (+43 lines)
Lines 277-282 sub advance { Link Here
277
    return $transfer;
277
    return $transfer;
278
}
278
}
279
279
280
=head3 toggle_indemand
281
282
  $sritem->toggle_indemand;
283
284
Toggle this items in_demand status.
285
286
If the item is in the process of being advanced to the next stage then we cancel
287
the transfer, revert the advancement and reset the 'StockrotationAdvance' counter,
288
as though 'in_demand' had been set prior to the call to advance, by updating the
289
in progress transfer.
290
291
=cut
292
293
sub toggle_indemand {
294
    my ( $self ) = @_;
295
296
    # Toggle the item's indemand flag
297
    my $new_indemand = ($self->indemand == 1) ? 0 : 1;
298
299
    # Cancel 'StockrotationAdvance' transfer if one is in progress
300
    if ($new_indemand) {
301
        my $item = $self->itemnumber;
302
        my $transfer = $item->get_transfer;
303
        if ($transfer && $transfer->reason eq 'StockrotationAdvance') {
304
            my $stage = $self->stage;
305
            my $new_stage;
306
            if ( $stage->rota->cyclical && !$stage->first_sibling ) { # First stage
307
                $new_stage = $stage->last_sibling;
308
            } else {
309
                $new_stage = $stage->previous_sibling;
310
            }
311
            $self->stage_id($new_stage->stage_id)->store;        # Revert stage change
312
            $item->homebranch($new_stage->branchcode_id)->store; # Revert update homebranch
313
            $new_indemand = 0;                                   # Reset indemand
314
            $transfer->tobranch($new_stage->branchcode_id);      # Reset StockrotationAdvance
315
            $transfer->datearrived(dt_from_string);              # Reset StockrotationAdvance
316
            $transfer->store;
317
        }
318
    }
319
320
    $self->indemand($new_indemand)->store;
321
}
322
280
=head3 investigate
323
=head3 investigate
281
324
282
  my $report = $item->investigate;
325
  my $report = $item->investigate;
(-)a/Koha/Util/StockRotation.pm (-8 / +3 lines)
Lines 97-117 sub get_stages { Link Here
97
97
98
sub toggle_indemand {
98
sub toggle_indemand {
99
99
100
    my ($item_id, $stage_id) = @_;
100
    my ($item_id) = @_;
101
101
102
    # Get the item object
102
    # Get the item object
103
    my $item = Koha::StockRotationItems->find(
103
    my $sr_item = Koha::StockRotationItems->find(
104
        {
104
        {
105
            itemnumber_id => $item_id,
105
            itemnumber_id => $item_id,
106
            stage_id      => $stage_id
107
        }
106
        }
108
    );
107
    );
109
108
110
    # Toggle the item's indemand flag
109
    $sr_item->toggle_indemand;
111
    my $new_indemand = ($item->indemand == 1) ? 0 : 1;
112
113
    $item->indemand($new_indemand)->store;
114
115
}
110
}
116
111
117
=head2 move_to_next_stage
112
=head2 move_to_next_stage
(-)a/circ/transfers_to_send.pl (+64 lines)
Line 0 Link Here
1
#!/usr/bin/perl
2
3
# Copyright 2019 PTFS-Europe Ltd.
4
#
5
# This file is part of Koha.
6
#
7
# Koha is free software; you can redistribute it and/or modify it
8
# under the terms of the GNU General Public License as published by
9
# the Free Software Foundation; either version 3 of the License, or
10
# (at your option) any later version.
11
#
12
# Koha is distributed in the hope that it will be useful, but
13
# WITHOUT ANY WARRANTY; without even the implied warranty of
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
# GNU General Public License for more details.
16
#
17
# You should have received a copy of the GNU General Public License
18
# along with Koha; if not, see <http://www.gnu.org/licenses>.
19
20
use Modern::Perl;
21
use CGI qw ( -utf8 );
22
use C4::Context;
23
use C4::Auth;
24
use C4::Output;
25
26
use Koha::DateUtils;
27
28
my $input      = CGI->new;
29
my $itemnumber = $input->param('itemnumber');
30
31
my ( $template, $loggedinuser, $cookie, $flags ) = get_template_and_user(
32
    {
33
        template_name => "circ/transfers_to_send.tt",
34
        query         => $input,
35
        type          => "intranet",
36
        flagsrequired => { circulate => "circulate_remaining_permissions" },
37
        debug         => 1,
38
    }
39
);
40
41
# set the userenv branch
42
my $branchcode = C4::Context->userenv->{'branch'};
43
44
# transfers requested but not yet sent
45
my @transfers = Koha::Libraries->search(
46
    {
47
        'branchtransfers_tobranches.frombranch'    => $branchcode,
48
        'branchtransfers_tobranches.daterequested' => { '!=' => undef },
49
        'branchtransfers_tobranches.datesent'      => undef,
50
        'branchtransfers_tobranches.datearrived'   => undef,
51
        'branchtransfers_tobranches.datecancelled' => undef,
52
    },
53
    {
54
        prefetch => 'branchtransfers_tobranches',
55
        order_by => 'branchtransfers_tobranches.tobranch'
56
    }
57
);
58
59
$template->param(
60
    libraries => \@transfers,
61
    show_date => dt_from_string
62
);
63
64
output_html_with_http_headers $input, $cookie, $template->output;
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation-home.tt (+3 lines)
Lines 98-103 Link Here
98
                        </li>
98
                        </li>
99
                    [% END %]
99
                    [% END %]
100
                    <li>
100
                    <li>
101
                        <a class="circ-button" href="/cgi-bin/koha/circ/transfers_to_send.pl"><i class="fa fa-sign-out"></i> Transfers to send</a>
102
                    </li>
103
                    <li>
101
                        <a class="circ-button" href="/cgi-bin/koha/circ/transferstoreceive.pl"><i class="fa fa-sign-in"></i> Transfers to receive</a>
104
                        <a class="circ-button" href="/cgi-bin/koha/circ/transferstoreceive.pl"><i class="fa fa-sign-in"></i> Transfers to receive</a>
102
                    </li>
105
                    </li>
103
                </ul>
106
                </ul>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/transfers_to_send.tt (-1 / +115 lines)
Line 0 Link Here
0
- 
1
[% USE raw %]
2
[% USE Asset %]
3
[% USE Koha %]
4
[% USE KohaDates %]
5
[% USE Branches %]
6
[% SET footerjs = 1 %]
7
[% INCLUDE 'doc-head-open.inc' %]
8
<title>Koha &rsaquo; Circulation &rsaquo; Transfers to send</title>
9
[% INCLUDE 'doc-head-close.inc' %]
10
</head>
11
12
<body id="circ_transferstosend" class="circ">
13
[% INCLUDE 'header.inc' %]
14
[% INCLUDE 'circ-search.inc' %]
15
16
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/circ/circulation-home.pl">Circulation</a>  &rsaquo; Transfers to send</div>
17
18
<div class="main container-fluid">
19
    <div class="row">
20
        <div class="col-sm-12">
21
            <main>
22
                <div class="row">
23
24
                    [% IF Koha.Preference('CircSidebar') %]
25
                    <div class="col-sm-10 col-sm-push-2">
26
                    [% ELSE %]
27
                    <div class="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2">
28
                    [% END %]
29
30
                        <h1>Transfers requested of your library as of [% show_date | $KohaDates %]</h1>
31
32
                        [% IF ( libraries ) %]
33
                        <p>Your library is the origin for the following transfer(s)</p>
34
                        <div id="resultlist">
35
                            [% FOREACH library IN libraries %]
36
                                [% IF ( library.branchcode ) %]
37
                                <table style="width: 100%" id="transferst[% library.branchcode | html %]">
38
                                    <caption>Sending to [% library.branchname | html %]</caption>
39
                                    <thead>
40
                                        <tr>
41
                                            <th class="title-string">Date of request</th>
42
                                            <th class="anti-the">Title</th>
43
                                            <th>Reason</th>
44
                                            <th>On loan</th>
45
                                            <th>Home library</th>
46
                                            <th>Call no.</th>
47
                                            <th>Actions</th>
48
                                        </tr>
49
                                    </thead>
50
                                    <tbody>
51
                                        [% FOREACH transfer IN library.inbound_transfers %]
52
                                            [% UNLESS transfer.datesent %]
53
                                            <tr>
54
                                                <td><p><span title="[% transfer.daterequested | html %]">[% transfer.daterequested | $KohaDates %]</span></p></td>
55
                                                <td>
56
                                                    [% INCLUDE 'biblio-title.inc' biblio = transfer.item.biblio link = 1 %][% IF ( transfer.item.biblio.author ) %] by [% transfer.item.biblio.author | html %][% END %]
57
                                                    [% IF ( transfer.item.effective_itemtype ) %] (<b>[% transfer.item.effective_itemtype | html %]</b>)[% END %]
58
                                                    <br />Barcode: [% transfer.item.barcode | html %]
59
                                                </td>
60
                                                <td><p>[% transfer.reason | html %]</p></td>
61
                                                <td>[% IF transfer.item.onloan %]Due [% transfer.item.onloan | $KohaDates %][% ELSE %]On shelf[% END %]</td>
62
                                                <td>[% Branches.GetName( transfer.item.homebranch ) | html %]</td>
63
                                                <td>[% transfer.item.itemcallnumber | html %]</td>
64
                                                <td class="actions">
65
                                                    [% IF transfer.reason == 'StockrotationAdvance' %]
66
                                                    <a href="/cgi-bin/koha/catalogue/stockrotation.pl?op=toggle_in_demand&stage_id=4&item_id=[% transfer.itemnumber | uri %]&biblionumber=[% transfer.item.biblionumber | uri %]" class="btn btn-default btn-xs"><i class="fa fa-fire"></i> Mark "In demand"</a>
67
                                                    [% END %]
68
                                                </td>
69
                                            </tr>
70
                                            [% END %]
71
                                        [% END %]
72
                                    </tbody>
73
                                </table>
74
                                [% END %]
75
                            [% END %]
76
                        </div>
77
                        [% ELSE %]
78
                        <p>No transfers to send</p>
79
                        [% END %]
80
81
                    </div> <!-- /.col-sm-10.col-sm-push-2 OR /.col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2-->
82
83
                    [% IF Koha.Preference('CircSidebar') %]
84
                    <div class="col-sm-2 col-sm-pull-10">
85
                        <aside>
86
                            [% INCLUDE 'circ-nav.inc' %]
87
                        </aside>
88
                    </div> <!-- /.col-sm-2.col-sm-pull-10 -->
89
                    [% END %]
90
91
                </div> <!-- /.row -->
92
            </main>
93
        </div> <!-- /.col-sm-12 -->
94
    </div> <!-- /.row -->
95
96
[% MACRO jsinclude BLOCK %]
97
    [% INCLUDE 'datatables.inc' %]
98
    <script>
99
        $(document).ready(function() {
100
            [% FOREACH library IN libraries %]
101
            $("#transferst[% library.branchcode | html %]").dataTable($.extend(true, {}, dataTablesDefaults, {
102
                "aoColumnDefs": [
103
                    { "aTargets": [ -1 ], "bSortable": false, "bSearchable": false },
104
                    { "sType": "anti-the", "aTargets" : [ "anti-the" ] },
105
                    { "sType": "title-string", "aTargets" : [ "title-string" ] }
106
                ],
107
                "sDom": 't',
108
                "bPaginate": false
109
            }));
110
            [% END %]
111
        });
112
    </script>
113
[% END %]
114
115
[% INCLUDE 'intranet-bottom.inc' %]

Return to bug 22569