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

(-)a/circ/overdue.pl (-1 / +11 lines)
Lines 248-259 if ($noreport) { Link Here
248
        items.replacementprice,
248
        items.replacementprice,
249
        items.enumchron,
249
        items.enumchron,
250
        items.itemnotes_nonpublic,
250
        items.itemnotes_nonpublic,
251
        items.itype
251
        items.itype,
252
        return_claims.created_on AS return_claim_created_on,
253
        return_claims.id AS return_claim_id
252
      FROM issues
254
      FROM issues
253
    LEFT JOIN borrowers   ON (issues.borrowernumber=borrowers.borrowernumber )
255
    LEFT JOIN borrowers   ON (issues.borrowernumber=borrowers.borrowernumber )
254
    LEFT JOIN items       ON (issues.itemnumber=items.itemnumber)
256
    LEFT JOIN items       ON (issues.itemnumber=items.itemnumber)
255
    LEFT JOIN biblioitems ON (biblioitems.biblioitemnumber=items.biblioitemnumber)
257
    LEFT JOIN biblioitems ON (biblioitems.biblioitemnumber=items.biblioitemnumber)
256
    LEFT JOIN biblio      ON (biblio.biblionumber=items.biblionumber )
258
    LEFT JOIN biblio      ON (biblio.biblionumber=items.biblionumber )
259
    LEFT JOIN return_claims ON (return_claims.borrowernumber=borrowers.borrowernumber AND return_claims.itemnumber=items.itemnumber)
257
    WHERE 1=1 "; # placeholder, since it is possible that none of the additional
260
    WHERE 1=1 "; # placeholder, since it is possible that none of the additional
258
                 # conditions will be selected by user
261
                 # conditions will be selected by user
259
    $strsth.=" AND date_due               < '" . $todaysdate     . "' " unless ($showall);
262
    $strsth.=" AND date_due               < '" . $todaysdate     . "' " unless ($showall);
Lines 301-306 if ($noreport) { Link Here
301
        my $pattrs = $borrowernumber_to_attributes{$data->{borrowernumber}} || {};  # patron attrs for this borrower
304
        my $pattrs = $borrowernumber_to_attributes{$data->{borrowernumber}} || {};  # patron attrs for this borrower
302
        # $pattrs is a hash { attrcode => [  [value,displayvalue], [value,displayvalue]... ] }
305
        # $pattrs is a hash { attrcode => [  [value,displayvalue], [value,displayvalue]... ] }
303
306
307
        my $return_claim_created_on = $data->{return_claim_created_on};
308
        if ( defined $return_claim_created_on ) {
309
            $return_claim_created_on = output_pref({ dt => dt_from_string( $return_claim_created_on ) });
310
        }
311
304
        my @patron_attr_value_loop;   # template array [ {value=>v1}, {value=>v2} ... } ]
312
        my @patron_attr_value_loop;   # template array [ {value=>v1}, {value=>v2} ... } ]
305
        for my $pattr_filter (grep { ! $_->{isclone} } @patron_attr_filter_loop) {
313
        for my $pattr_filter (grep { ! $_->{isclone} } @patron_attr_filter_loop) {
306
            my @displayvalues = map { $_->[1] } @{ $pattrs->{$pattr_filter->{code}} };   # grab second value from each subarray
314
            my @displayvalues = map { $_->[1] } @{ $pattrs->{$pattr_filter->{code}} };   # grab second value from each subarray
Lines 336-341 if ($noreport) { Link Here
336
            itemcallnumber         => $data->{itemcallnumber},
344
            itemcallnumber         => $data->{itemcallnumber},
337
            replacementprice       => $data->{replacementprice},
345
            replacementprice       => $data->{replacementprice},
338
            itemnotes_nonpublic    => $data->{itemnotes_nonpublic},
346
            itemnotes_nonpublic    => $data->{itemnotes_nonpublic},
347
            return_claim_created_on => $return_claim_created_on,
348
            return_claim_id        => $data->{return_claim_id},
339
            enumchron              => $data->{enumchron},
349
            enumchron              => $data->{enumchron},
340
            itemtype               => $data->{itype},
350
            itemtype               => $data->{itype},
341
            patron_attr_value_loop => \@patron_attr_value_loop,
351
            patron_attr_value_loop => \@patron_attr_value_loop,
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/checkouts-table.inc (-35 / +2 lines)
Lines 1-4 Link Here
1
[% USE Koha %]
1
[% USE Koha %]
2
[% PROCESS 'modal-claims.inc' %]
2
<div id="checkouts">
3
<div id="checkouts">
3
    [% IF ( issuecount ) %]
4
    [% IF ( issuecount ) %]
4
        <div id="issues-table-loading-message">
5
        <div id="issues-table-loading-message">
Lines 92-132 Link Here
92
</div>
93
</div>
93
94
94
<!-- Claims Returned Modal -->
95
<!-- Claims Returned Modal -->
95
<div class="modal fade" id="claims-returned-modal" tabindex="-1" role="dialog" aria-labelledby="claims-returned-modal-label">
96
[% PROCESS 'modal-claims-display' %]
96
  <div class="modal-dialog" role="document">
97
    <div class="modal-content">
98
      <div class="modal-header">
99
        <h4 class="modal-title" id="claims-returned-modal-label">Claim returned</h4>
100
      </div>
101
      <div class="modal-body">
102
103
          <div class="form-group">
104
            <label for="claims-returned-notes" class="control-label">Notes</label>
105
            <div>
106
              <textarea id="claims-returned-notes" class="form-control" rows="3"></textarea>
107
            </div>
108
          </div>
109
110
          [% IF Koha.Preference('ClaimReturnedChargeFee') == 'ask' %]
111
            <div class="form-group">
112
              <div class="checkbox">
113
                <label for="claims-returned-charge-lost-fee">
114
                  <input id="claims-returned-charge-lost-fee" type="checkbox" value="1">
115
                  Charge lost fee
116
                </label>
117
              </div>
118
            </div>
119
          [% END %]
120
121
          <input type="hidden" id="claims-returned-itemnumber" />
122
      </div>
123
      <div class="modal-footer">
124
        <button id="claims-returned-modal-btn-submit" type="button" class="btn btn-primary"><i class="fa fa-exclamation-circle"></i> Make claim</button>
125
        <button class="btn btn-default deny cancel" href="#" data-dismiss="modal" aria-hidden="true"><i class="fa fa-times"></i> Cancel</button>
126
      </div>
127
    </div>
128
  </div>
129
</div>
130
97
131
<!-- Resolve Return Claim Modal -->
98
<!-- Resolve Return Claim Modal -->
132
<div class="modal fade" id="claims-returned-resolved-modal" tabindex="-1" role="dialog" aria-labelledby="claims-returned-resolved-modal-label">
99
<div class="modal fade" id="claims-returned-resolved-modal" tabindex="-1" role="dialog" aria-labelledby="claims-returned-resolved-modal-label">
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/js-date-format.inc (-1 / +1 lines)
Lines 57-63 Link Here
57
57
58
        window.$time = function(value, options) {
58
        window.$time = function(value, options) {
59
            if(!value) return '';
59
            if(!value) return '';
60
            var tz = (opitons&&options.tz)||def_tz;
60
            var tz = (options&&options.tz)||def_tz;
61
            var m = moment(value);
61
            var m = moment(value);
62
            if(tz) m.tz(tz);
62
            if(tz) m.tz(tz);
63
63
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/modal-claims.inc (+104 lines)
Line 0 Link Here
1
2
[% USE Koha %]
3
<!-- modal-claims.inc -->
4
5
[% BLOCK 'modal-claims-display' %]
6
    <!-- Claims Returned Modal -->
7
    <div class="modal fade" id="claims-returned-modal" tabindex="-1" role="dialog" aria-labelledby="claims-returned-modal-label">
8
        <div class="modal-dialog" role="document">
9
            <div class="modal-content">
10
                <div class="modal-header">
11
                    <h4 class="modal-title" id="claims-returned-modal-label">Claim returned</h4>
12
                </div>
13
                <div class="modal-body">
14
15
                    <div class="form-group">
16
                        <label for="claims-returned-notes" class="control-label">Notes</label>
17
                        <div>
18
                        <textarea id="claims-returned-notes" class="form-control" rows="3"></textarea>
19
                        </div>
20
                    </div>
21
22
                    [% IF Koha.Preference('ClaimReturnedChargeFee') == 'ask' %]
23
                        <div class="form-group">
24
                        <div class="checkbox">
25
                            <label for="claims-returned-charge-lost-fee">
26
                            <input id="claims-returned-charge-lost-fee" type="checkbox" value="1">
27
                            Charge lost fee
28
                            </label>
29
                        </div>
30
                        </div>
31
                    [% END %]
32
33
                    <input type="hidden" id="claims-returned-itemnumber" />
34
                </div>
35
                <div class="modal-footer">
36
                    <button id="claims-returned-modal-btn-submit" type="button" class="btn btn-primary"><i class="fa fa-exclamation-circle"></i> Make claim</button>
37
                    <button class="btn btn-default deny cancel" href="#" data-dismiss="modal" aria-hidden="true"><i class="fa fa-times"></i> Cancel</button>
38
                </div>
39
            </div>
40
        </div>
41
    </div>
42
[% END %] 
43
44
[% BLOCK 'modal-claims-js' %]
45
<script>
46
47
    // Verify if the syspref is defined
48
    var ClaimReturnedLostValue = "[% Koha.Preference('ClaimReturnedLostValue') | html %]";
49
50
    var logged_in_user_borrowernumber = "[% logged_in_user.borrowernumber | html %]";
51
    var interface = "[% interface | html %]";
52
    var theme = "[% theme | html %]";
53
54
    // Handle return claims
55
    $(document).on("click", '.claim-returned-btn', function(e){
56
        e.preventDefault();
57
        itemnumber = $(this).data('itemnumber');
58
59
        $('#claims-returned-itemnumber').val(itemnumber);
60
        $('#claims-returned-notes').val("");
61
        $('#claims-returned-charge-lost-fee').attr('checked', false);
62
        $('#claims-returned-modal').modal();
63
    });
64
    $(document).on("click", '#claims-returned-modal-btn-submit', function(e){
65
        let itemnumber = $('#claims-returned-itemnumber').val();
66
        let notes = $('#claims-returned-notes').val();
67
        let fee = $('#claims-returned-charge-lost-fee').attr('checked') ? true : false;
68
69
        $('#claims-returned-modal').modal('hide');
70
71
        const button = $('.claim-returned-btn[data-itemnumber="' + itemnumber + '"]');
72
        const img = '<img id="return_claim_spinner_' + itemnumber + '" src="' + interface + '/' + theme + '/img/spinner-small.gif" />';
73
        button.replaceWith(img);
74
75
        params = {
76
            item_id: itemnumber,
77
            notes: notes,
78
            charge_lost_fee: fee,
79
            created_by: logged_in_user_borrowernumber,
80
        };
81
82
        $.post( '/api/v1/return_claims', JSON.stringify(params), function( data ) {
83
84
            id = "#return_claim_spinner_" + data.item_id;
85
86
            let created_on = new Date(data.created_on);
87
            let formated_date = $datetime(created_on);
88
89
            let content = "";
90
            if ( data.claim_id ) {
91
                content = '<span class="badge">' + formated_date + '</span>';
92
                $(id).parent().parent().addClass('ok');
93
            } else {
94
                content = __("Unable to claim as returned");
95
                $(id).parent().parent().addClass('warn');
96
            }
97
            
98
            $(id).replaceWith( content );
99
100
            $('body').trigger('refreshClaimModal');
101
        }, "json")
102
    });
103
</script>
104
[% END %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/overdue.tt (-2 / +25 lines)
Lines 2-7 Link Here
2
[% USE Asset %]
2
[% USE Asset %]
3
[% USE AuthorisedValues %]
3
[% USE AuthorisedValues %]
4
[% USE KohaDates %]
4
[% USE KohaDates %]
5
[% USE Koha %]
5
[%- USE Branches -%]
6
[%- USE Branches -%]
6
[%- USE Price -%]
7
[%- USE Price -%]
7
[%- USE ItemTypes -%]
8
[%- USE ItemTypes -%]
Lines 9-14 Link Here
9
[%- USE TablesSettings -%]
10
[%- USE TablesSettings -%]
10
[% SET footerjs = 1 %]
11
[% SET footerjs = 1 %]
11
[% INCLUDE 'doc-head-open.inc' %]
12
[% INCLUDE 'doc-head-open.inc' %]
13
[% PROCESS 'modal-claims.inc' %]
12
<title>Koha &rsaquo; Circulation &rsaquo; Items overdue as of [% todaysdate | html %]</title>
14
<title>Koha &rsaquo; Circulation &rsaquo; Items overdue as of [% todaysdate | html %]</title>
13
[% INCLUDE 'doc-head-close.inc' %]
15
[% INCLUDE 'doc-head-close.inc' %]
14
[% FILTER collapse %]
16
[% FILTER collapse %]
Lines 77-82 Link Here
77
          <th>Item type</th>
79
          <th>Item type</th>
78
          <th>Price</th>
80
          <th>Price</th>
79
          <th>Non-public note</th>
81
          <th>Non-public note</th>
82
          <th>Return claims</th>
80
        </tr>
83
        </tr>
81
      </thead>
84
      </thead>
82
      [%- BLOCK subject -%]Overdue:[%- END -%]
85
      [%- BLOCK subject -%]Overdue:[%- END -%]
Lines 100-111 Link Here
100
            <td>[% ItemTypes.GetDescription( overdueloo.itemtype ) | html %]</td>
103
            <td>[% ItemTypes.GetDescription( overdueloo.itemtype ) | html %]</td>
101
          <td>[% overdueloo.replacementprice | $Price %]</td>
104
          <td>[% overdueloo.replacementprice | $Price %]</td>
102
          <td>[% overdueloo.itemnotes_nonpublic | html %]</td>
105
          <td>[% overdueloo.itemnotes_nonpublic | html %]</td>
106
          <td>
107
            [% IF ( overdueloo.return_claim_created_on ) %]
108
                <span class="badge">[% overdueloo.return_claim_created_on %]</span>
109
            [% ELSIF Koha.Preference('ClaimReturnedLostValue') %]
110
                <a class="btn btn-default btn-xs claim-returned-btn" data-itemnumber=[% overdueloo.itemnum | html %]>
111
                    <i class="fa fa-exclamation-circle"></i> Claim returned
112
                </a>
113
            [% ELSE %]
114
                <a class="btn btn-default btn-xs" disabled="disabled" title="ClaimReturnedLostValue is not set, this feature is disabled">
115
                    <i class="fa fa-exclamation-circle"></i> Claim returned
116
                </a>    
117
            [% END %]
118
          </td>
103
        </tr>
119
        </tr>
104
      [% END %]
120
      [% END %]
105
      </tbody>
121
     </tbody>
106
    </table>
122
    </table>
107
  </div>
123
  </div>
108
124
125
  <!-- Claims Returned Modal -->
126
    [% PROCESS 'modal-claims-display' %]
127
109
[% ELSE %]
128
[% ELSE %]
110
129
111
  <h2>Overdue report</h2>
130
  <h2>Overdue report</h2>
Lines 249-255 Link Here
249
    [% INCLUDE 'datatables.inc' %]
268
    [% INCLUDE 'datatables.inc' %]
250
    [% INCLUDE 'columns_settings.inc' %]
269
    [% INCLUDE 'columns_settings.inc' %]
251
    [% INCLUDE 'select2.inc' %]
270
    [% INCLUDE 'select2.inc' %]
271
    [% INCLUDE 'js-date-format.inc' %]
272
    [% PROCESS 'modal-claims-js' %]
252
    <script>
273
    <script>
274
275
253
        function clone_input( node, original_id ) {
276
        function clone_input( node, original_id ) {
254
            var original = node;
277
            var original = node;
255
            var clone = original.clone();
278
            var clone = original.clone();
Lines 307-313 Link Here
307
                clone_input( $(this).parent(), $(this).data("original-id") );
330
                clone_input( $(this).parent(), $(this).data("original-id") );
308
            })
331
            })
309
        });
332
        });
310
  </script>
333
    </script>
311
[% END %]
334
[% END %]
312
335
313
[% INCLUDE 'intranet-bottom.inc' %]
336
[% INCLUDE 'intranet-bottom.inc' %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt (-2 / +3 lines)
Lines 914-919 Link Here
914
    [% INCLUDE 'calendar.inc' %]
914
    [% INCLUDE 'calendar.inc' %]
915
    [% Asset.js("lib/jquery/plugins/jquery-ui-timepicker-addon.min.js") | $raw %]
915
    [% Asset.js("lib/jquery/plugins/jquery-ui-timepicker-addon.min.js") | $raw %]
916
    [% INCLUDE 'timepicker.inc' %]
916
    [% INCLUDE 'timepicker.inc' %]
917
    [% INCLUDE 'js-date-format.inc' %]
918
    [% PROCESS 'modal-claims-js' %]
917
    <script>
919
    <script>
918
        /* Set some variable needed in circulation.js */
920
        /* Set some variable needed in circulation.js */
919
        var logged_in_user_borrowernumber = "[% logged_in_user.borrowernumber | html %]";
921
        var logged_in_user_borrowernumber = "[% logged_in_user.borrowernumber | html %]";
Lines 979-985 Link Here
979
                "bPaginate": false
981
                "bPaginate": false
980
            }));
982
            }));
981
983
982
983
            $("#view_restrictions").on("click",function(){
984
            $("#view_restrictions").on("click",function(){
984
                $('#debarments-tab-link').click();
985
                $('#debarments-tab-link').click();
985
            });
986
            });
Lines 994-1001 Link Here
994
                e.preventDefault();
995
                e.preventDefault();
995
                $("#picture-upload, #show-picture-upload").toggle();
996
                $("#picture-upload, #show-picture-upload").toggle();
996
            });
997
            });
997
998
         });
998
         });
999
999
        function uncheck_sibling(me){
1000
        function uncheck_sibling(me){
1000
            nodename=me.getAttribute("name");
1001
            nodename=me.getAttribute("name");
1001
            if (nodename =="barcodes[]"){
1002
            if (nodename =="barcodes[]"){
(-)a/koha-tmpl/intranet-tmpl/prog/js/checkouts.js (-49 / +4 lines)
Lines 888-943 $(document).ready(function() { Link Here
888
        } ).prop('checked', false);
888
        } ).prop('checked', false);
889
    }
889
    }
890
890
891
    // Handle return claims
891
    // Refresh after return claim
892
    $(document).on("click", '.claim-returned-btn', function(e){
892
    $('body').on('refreshClaimModal', function () {
893
        e.preventDefault();
893
        refreshReturnClaimsTable();
894
        itemnumber = $(this).data('itemnumber');
894
        issuesTable.api().ajax.reload();
895
896
        $('#claims-returned-itemnumber').val(itemnumber);
897
        $('#claims-returned-notes').val("");
898
        $('#claims-returned-charge-lost-fee').attr('checked', false)
899
        $('#claims-returned-modal').modal()
900
    });
901
    $(document).on("click", '#claims-returned-modal-btn-submit', function(e){
902
        let itemnumber = $('#claims-returned-itemnumber').val();
903
        let notes = $('#claims-returned-notes').val();
904
        let fee = $('#claims-returned-charge-lost-fee').attr('checked') ? true : false;
905
906
        $('#claims-returned-modal').modal('hide')
907
908
        $('.claim-returned-btn[data-itemnumber="' + itemnumber + '"]').replaceWith('<img id="return_claim_spinner_' + itemnumber + ' src=' + interface + '/' + theme + '/img/spinner-small.gif />');
909
910
        params = {
911
            item_id: itemnumber,
912
            notes: notes,
913
            charge_lost_fee: fee,
914
            created_by: logged_in_user_borrowernumber,
915
        };
916
917
        $.post( '/api/v1/return_claims', JSON.stringify(params), function( data ) {
918
919
            id = "#return_claim_spinner_" + data.item_id;
920
921
            let created_on = new Date(data.created_on);
922
923
            let content = "";
924
            if ( data.claim_id ) {
925
                content = '<span class="badge">' + created_on.toLocaleDateString() + '</span>';
926
                $(id).parent().parent().addClass('ok');
927
            } else {
928
                content = __("Unable to claim as returned");
929
                $(id).parent().parent().addClass('warn');
930
            }
931
932
            $(id).replaceWith( content );
933
934
            refreshReturnClaimsTable();
935
            issuesTable.api().ajax.reload();
936
        }, "json")
937
938
    });
895
    });
939
896
940
941
    // Don't load return claims table unless it is clicked on
897
    // Don't load return claims table unless it is clicked on
942
    var returnClaimsTable;
898
    var returnClaimsTable;
943
    $("#return-claims-tab").click( function() {
899
    $("#return-claims-tab").click( function() {
944
- 

Return to bug 29983