Bug 7583 follow-up: Prevent users to cancel receipt if they can't
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / acqui / parcel.tt
1 [% INCLUDE 'doc-head-open.inc' %]
2 <title>Koha &rsaquo; Acquisitions &rsaquo; [% IF ( date ) %]
3             Receipt summary for [% name %] [% IF ( invoice ) %]invoice [% invoice %][% END %] on [% formatteddatereceived %][% ELSE %]Receive orders from [% name %][% END %]</title>
4 <link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
5 [% INCLUDE 'doc-head-close.inc' %]
6 <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.dataTables.min.js"></script>
7 [% INCLUDE 'datatables-strings.inc' %]
8 <script type="text/javascript" src="[% themelang %]/js/datatables.js"></script>
9 [% INCLUDE 'greybox.inc' %]
10 <script type="text/javascript" src="[% yuipath %]/json/json-min.js"></script>
11 <script type="text/javascript">
12 //<![CDATA[
13
14     dt_overwrite_html_sorting_localeCompare();
15
16     var rowsToCollapse = 5;
17     $(document).ready(function(){
18         var pendingt = $("#pendingt").dataTable($.extend(true, {}, dataTablesDefaults, {
19             "aoColumnDefs": [
20                 { "aTargets": [ 3, 7, 8 ], "bSortable": false, "bSearchable": false },
21             ],
22             "aoColumns": [
23                 { "sType": "num-html" },
24                 { "sType": "num-html" },
25                 { "sType": "html" },
26                 null,
27                 null,
28                 null,
29                 null,
30                 null,
31                 null,
32             ],
33             "sPaginationType": "four_button"
34         } ) );
35         var receivedt = $("#receivedt").dataTable($.extend(true, {}, dataTablesDefaults, {
36             "aoColumnDefs": [
37                 { "aTargets": [ 3 ], "bSortable": false, "bSearchable": false },
38             ],
39             "aoColumns": [
40                 { "sType": "num-html" },
41                 { "sType": "num-html" },
42                 { "sType": "html" },
43                 null,
44                 null,
45                 null,
46                 null,
47                 null,
48             ],
49             "sPaginationType": "four_button"
50         } ) );
51
52         rowCountPending  = $("#pendingt tbody.filterclass tr").length;
53         rowCountReceived = $("#receivedt tbody.filterclass tr").length;
54         if (rowCountPending > rowsToCollapse ) { if ( $.cookie("pendingKeepExpanded") != 1 ) { pendingCollapse(); } else { pendingExpand(); } }
55         if (rowCountReceived > rowsToCollapse ) { if ( $.cookie("receivedKeepExpanded") != 1 ) { receivedCollapse(); } else { receivedExpand(); } }
56     });
57
58      // Case-insensitive version of jquery's contains function
59      jQuery.extend(jQuery.expr[':'], {
60             icontains : "jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0"
61      });
62
63      // Contains exactly function
64      jQuery.extend(jQuery.expr[':'], {
65           containsExactly: "$(a).text() == m[3]"
66      });
67
68
69     // Collapse pending items table
70     function pendingCollapse() {
71         $.cookie("pendingKeepExpanded", 0, { path: "/", expires: 9999 });
72         $("#pendingcollapserow").remove();
73     $("#pendingt tr").show();
74         $("#pendingt tbody.filterclass tr:gt(" + (rowsToCollapse-1) + ")").hide();
75         $("#pendingt").before("<p id=\"pendingcollapserow\">" + _("Only the first ")  + rowsToCollapse +  _(" items are displayed.") + "<a href=\"javascript:pendingExpand();\">" + _("Click here to show all ")  + rowCountPending + _(" items") + "<\/a>.<\/p>");
76
77     }
78
79     // Expend pending items table
80     function pendingExpand() {
81         $.cookie("pendingKeepExpanded", 1, { path: "/", expires: 9999 });
82         $("#pendingcollapserow").remove();
83         $("#pendingt tr").show();
84     $("#pendingt tbody.filterclass tr.orderfound").remove();
85         $("#pendingt").before("<p id=\"pendingcollapserow\">" + rowCountPending + _(" items are displayed.") + "<a href=\"javascript:pendingCollapse();\">" + _("Click here to show only the first ") + rowsToCollapse + _(" items") + "<\/a>.<\/p>");
86     }
87
88     // Collapse already received items table
89     function receivedCollapse() {
90         $.cookie("receivedKeepExpanded", 0, { path: "/", expires: 9999 });
91         $("#receivedcollapserow").remove();
92         $("#receivedt tbody.filterclass tr:gt(" + (rowsToCollapse-1) + ")").hide();
93         $("#receivedt").before("<p id=\"receivedcollapserow\">" + _("Only the first ") + rowsToCollapse + _(" items are displayed.") + "<a href=\"javascript:receivedExpand();\">" + _("Click here to show all ") + rowCountReceived + _(" items") + "<\/a>.<\/p>");
94     }
95
96     // Expand already received items table
97     function receivedExpand() {
98         $.cookie("receivedKeepExpanded", 1, { path: "/", expires: 9999 });
99         $("#receivedcollapserow").remove();
100         $("#receivedt tr").show();
101         $("#receivedt").before("<p id=\"receivedcollapserow\">" + _("All ") + rowCountReceived + _(" items are displayed.") + "<a href=\"javascript:receivedCollapse();\">" + _("Click here to show only the first ") + rowsToCollapse + _(" items") + "<\/a>.<\/p>");
102     }
103
104 //]]>
105 </script>
106 <script type="text/javascript">
107 //<![CDATA[
108             function confirm_delete_item(ordernumber, basketno, biblionumber) {
109                 var is_confirmed = confirm(_('Are you sure you want to delete this order ?'));
110                 if (is_confirmed) {
111                     window.location = "addorder.pl?ordernumber="+ordernumber+"&basketno="+basketno+"&quantity=0&biblionumber="+biblionumber;
112                 }
113             }
114             
115             function confirm_delete_biblio(ordernumber, basketno, biblionumber) {
116                 var is_confirmed = confirm(_('Are you sure you want to delete this catalog record and order ?'));
117                 if (is_confirmed) {
118                     window.location = "addorder.pl?ordernumber="+ordernumber+"&basketno="+basketno+"&quantity=0&biblionumber="+biblionumber+"&delbiblio=1";
119                     }
120             }
121 //]]>
122 </script>
123 </head>
124 <body id="acq_parcel" class="acq">
125 [% INCLUDE 'header.inc' %]
126 [% INCLUDE 'acquisitions-search.inc' %]
127
128 <div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a> &rsaquo;  [% IF ( datereceived ) %]
129             Receipt summary for <i>[% name %]</i> [% IF ( invoice ) %]<i>[ [% invoice %] ]</i>[% END %] on <i>[% formatteddatereceived %]</i>
130         [% ELSE %]
131             Receive orders from [% name %]
132         [% END %]</div>
133
134 <div id="doc3" class="yui-t2">
135
136    <div id="bd">
137         <div id="yui-main">
138         <div class="yui-b">
139         [% IF ( receive_error ) %]
140         <div class="dialog alert">
141         <h3>Error adding items:</h3>
142         <ul>
143         [% FOREACH error_loo IN error_loop %]
144                 <li>[% error_loo.error_param %][% IF ( error_loo.error_duplicate_barcode ) %]Duplicate Barcode[% END %] <!-- todo: other error conditions come here. --></li>
145         [% END %]
146         </ul>
147         </div>
148         [% END %]
149     <h1>
150         [% IF ( datereceived ) %]
151             Receipt summary for <i>[% name %]</i> [% IF ( invoice ) %] <i> [ [% invoice %] ] </i>[% END %] on <i>[% formatteddatereceived %]</i>
152         [% ELSE %]
153             Receive orders from [% name %]
154         [% END %]
155     </h1>
156
157     [% IF ( success_delorder ) %]
158     <div class="dialog message">The order has been successfully canceled.</div>
159     [% ELSE %]
160         [% IF ( error_delitem ) %]
161             <div class="dialog alert">The order has been canceled, although one or more items could not have been deleted.</div>
162         [% END %]
163         [% IF ( error_delbiblio ) %]
164             <div class="dialog alert">The order has been canceled, although the record has not been deleted.</div>
165         [% END %]
166     [% END %]
167
168     [% IF (error_cancelling_receipt) %]
169       <div class="error">
170       Cannot cancel receipt. Possible reasons :
171       <ul>
172         <li>
173           The order line you trying to cancel was created from a partial receipt
174           of another order line which is already received. Try to cancel this
175           one first and retry.
176         </li>
177         <li>
178           The order line you trying to cancel was created from a partial receipt
179           of another order line which has been deleted. Cancellation is not
180           possible.
181         </li>
182       </ul>
183       </div>
184     [% END %]
185
186 <div id="acqui_receive_summary">
187 <p><strong>Invoice number:</strong> [% invoice %] <strong>Received by:</strong> [% loggedinusername %] <strong>On:</strong> [% formatteddatereceived %]</p>
188         <!-- TODO: Add date picker, change rcv date. -->
189 </div>
190 <div id="acqui_receive_search">
191     <h3>Pending orders</h3>
192
193  [% IF ( loop_orders ) %]<table id="pendingt">
194     <thead>
195         <tr>
196             <th>Basket</th>
197             <th>Order line</th>
198             <th>Summary</th>
199             <th>View record</th>
200             <th>Quantity</th>
201             <th>Unit cost</th>
202             <th>Order cost</th>
203             <th>&nbsp;</th>
204             <th>&nbsp;</th>
205         </tr>
206     </thead>
207                 <tfoot>
208             <tr><td colspan="4" class="total">TOTAL</td>
209                 <td> [% totalPquantity %] </td>
210                                 <td>&nbsp;</td>
211                 <td>[% ordergrandtotal %]</td>
212                                 <td>&nbsp;</td>
213                                 <td>&nbsp;</td>
214             </tr>
215                 </tfoot>
216     <tbody class="filterclass">
217         [% FOREACH loop_order IN loop_orders %]
218             <tr>
219                 <td class="basketfilterclass"><a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% loop_order.basketno %]">[% loop_order.basketno %]</a></td>
220                 <td class="orderfilterclass"><a href="neworderempty.pl?ordernumber=[% loop_order.ordernumber %]&amp;booksellerid=[% loop_order.booksellerid %]">[% loop_order.ordernumber %]</a></td>
221                 <td class="summaryfilterclass">
222                   <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% loop_order.biblionumber %]">[% loop_order.title |html %]</a>
223                 [% IF ( loop_order.author ) %] by [% loop_order.author %][% END %]
224                 [% IF ( loop_order.isbn ) %] &ndash; [% loop_order.isbn %][% END %]
225                 [% IF ( loop_order.publishercode ) %]<br />Publisher :[% loop_order.publishercode %][% END %]
226                 [% IF ( loop_order.suggestionid ) %]
227                     <br/>
228                     Suggested by: [% loop_order.surnamesuggestedby %][% IF ( loop_order.firstnamesuggestedby ) %], [% loop_order.firstnamesuggestedby %] [% END %]
229                     (<a href="/cgi-bin/koha/suggestion/suggestion.pl?suggestionid=[% loop_order.suggestionid %]&amp;op=show">suggestion #[% loop_order.suggestionid %]</a>)
230                 [% END %]
231                 <br />
232                 [% IF ( loop_order.notes ) %]
233                     <p class="ordernote"><strong>Note: </strong>[% loop_order.notes|html %] [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% loop_order.ordernumber %]&amp;referrer=/cgi-bin/koha/acqui/parcel.pl%3Fbooksellerid=[% loop_order.booksellerid %]&amp;datereceived=[% loop_order.invoicedatereceived %]&amp;invoice=[% loop_order.invoice %]">Change note</a>]</p>
234                 [% ELSE %]
235                     [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% loop_order.ordernumber %]&amp;referrer=/cgi-bin/koha/acqui/parcel.pl%3Fbooksellerid=[% loop_order.booksellerid %]&amp;datereceived=[% loop_order.invoicedatereceived %]&amp;invoice=[% loop_order.invoice %]">Add note</a>]
236                 [% END %]
237                 </td>
238                 <td><a href="/cgi-bin/koha/catalogue/showmarc.pl?id=[% loop_order.biblionumber %]" title="MARC" rel="gb_page_center[600,500]">MARC</a> | <a href="/cgi-bin/koha/catalogue/showmarc.pl?viewas=card&amp;id=[% loop_order.biblionumber %]" title="MARC" rel="gb_page_center[600,500]">Card</a></td>
239                 <td>[% loop_order.quantity %]</td>
240                 <td>[% loop_order.ecost %]</td>
241                 <td>[% loop_order.ordertotal %]</td>
242                                 <td>
243                               <a href="orderreceive.pl?ordernumber=[% loop_order.ordernumber %]&amp;datereceived=[% invoicedatereceived %]&amp;invoice=[% invoice %]&amp;gst=[% loop_order.gst %]&amp;freight=[% loop_order.freight %]&amp;booksellerid=[% loop_order.booksellerid %]">Receive</a>
244                                     
245                                 </td>
246                                 <td>
247                                     [% IF ( loop_order.left_holds_on_order ) %]
248                     <span class="button" title="Can't delete order, ([% loop_order.holds_on_order %]) holds are linked with this order cancel holds first">Can't delete order</span><br>
249                     [% ELSE %]
250                     <a href="javascript:confirm_delete_item([% loop_order.ordernumber %],[% loop_order.basketno %],[% loop_order.biblionumber %])" class="button">Delete order</a><br>
251                     [% END %]
252                     [% IF ( loop_order.can_del_bib ) %]
253                     <a href="javascript:confirm_delete_biblio([% loop_order.ordernumber %],[% loop_order.basketno %],[% loop_order.biblionumber %])" class="button">Delete order and catalog record</a><br>
254                     [% ELSE %]
255                     <span class="button" title="Can't delete catalog record, see constraints below">Can't delete order and catalog record</span><br>
256                     [% END %]
257                     [% IF ( loop_order.left_item ) %]
258                     <b title="Can't delete catalog record, because of [% loop_order.items %] existing item(s)" >[% loop_order.items %] item(s) left</b><br>
259                     [% END %]
260                     [% IF ( loop_order.left_biblio ) %]
261                     <b title="Can't delete catalog record, delete other orders linked to it first">[% loop_order.biblios %] order(s) left</b><br>
262                     [% END %]
263                     [% IF ( loop_order.left_subscription ) %]
264                     <b title="Can't delete catalog record, delete subscriptions first">[% loop_order.subscriptions %] subscription(s) left</b><br>
265                     [% END %]
266                     [% IF ( loop_order.left_holds ) %]
267                     <b title="Can't delete catalog record or order, cancel holds first">[% loop_order.holds %] hold(s) left</b>
268                     [% END %]
269                                 </td>
270             </tr>
271         [% END %]
272     </tbody>
273      </table>[% ELSE %]There are no pending orders.[% END %]
274    <div id="resultnumber">
275         <!-- Row of numbers corresponding to search result pages -->
276         [% IF ( displayprev ) %]
277                 <a href="parcel.pl?type=intra&amp;booksellerid=[% booksellerid %]&amp;startfrom=[% prevstartfrom %][% IF ( datereceived ) %]&amp;datereceived=[% datereceived %][% END %][% IF ( invoice ) %]&amp;invoice=[% invoice %][% END %][% IF ( resultsperpage ) %]&amp;resultsperpage=[% resultsperpage %][% END %]#resultnumber">&lt;&lt; Previous</a>
278         [% END %]
279         [% FOREACH number IN numbers %]
280                 [% IF ( number.highlight ) %]
281                 <span class="current">[% number.number %]</span>
282                 [% ELSE %]
283                 <a href="parcel.pl?type=intra&amp;booksellerid=[% booksellerid %]&amp;startfrom=[% number.startfrom %][% IF ( datereceived ) %]&amp;datereceived=[% datereceived %][% END %][% IF ( invoice ) %]&amp;invoice=[% invoice %][% END %][% IF ( resultsperpage ) %]&amp;resultsperpage=[% resultsperpage %][% END %]#resultnumber">[% number.number %]</a>
284                 [% END %]
285         [% END %]
286         [% IF ( displaynext ) %]
287                 <a href="parcel.pl?type=intra&amp;booksellerid=[% booksellerid %]&amp;startfrom=[% nextstartfrom %][% IF ( datereceived ) %]&amp;datereceived=[% datereceived %][% END %][% IF ( invoice ) %]&amp;invoice=[% invoice %][% END %][% IF ( resultsperpage ) %]&amp;resultsperpage=[% resultsperpage %][% END %]#resultnumber">Next &gt;&gt;</a>
288         [% END %]
289         </div>
290 </div>
291 <div id="acqui_receive_receivelist">
292     <h3>Already received</h3>
293
294
295    [% IF ( loop_received ) %]
296    <form action="/cgi-bin/koha/acqui/parcel.pl" method="get" name="orderform">
297     <table id="receivedt">
298         <thead>
299             <tr>
300                 <th>Basket</th>
301         <th>Order line</th>
302                 <th>Summary</th>
303         <th>View record</th>
304                 <th>Quantity</th>  
305                 <th>Est cost</th>
306                 <th>Actual cost</th>
307                 <th>TOTAL</th>
308         <th></th>
309             </tr>
310     </thead>
311     <tfoot>
312             <tr>
313                 <td colspan="4" class="total">SUBTOTAL</td>
314                 <td colspan="2">&nbsp;</td>
315                 <td>[% totalprice %]</td>
316                 <td>[% tototal %]</td>
317         <td></td>
318             </tr>
319               
320               [% IF ( totalfreight ) %]
321                     <tr>
322                         <td colspan="6">&nbsp;
323                 </td>
324                             <td>Shipping</td>
325                 <td>[% totalfreight %]</td>
326                 </tr> 
327             [% END %]
328               [% IF ( gst ) %]
329                     <tr>
330                         <td colspan="6">
331                 <p class="message">
332                             <b>HELP</b><br />
333                     The total at the bottom of the page should be within a few cents of the total for the invoice.
334                 </p>
335                 </td>
336                             <td><b>Tax rate</b></td>
337                 <td>[% gst %]</td>
338                 </tr> 
339             [% END %]
340             <tr>
341             <td colspan="4" class="total">TOTAL</td>
342                 <td>[% totalquantity %]</td>
343                 <td colspan="2">&nbsp;</td>
344                 <td>[% grandtot %]</td>
345         <td></td>
346             </tr>
347     </tfoot>
348         <tbody class="filterclass">
349             [% FOREACH loop_receive IN loop_received %]
350             <tr>
351                 <td><a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% loop_receive.basketno %]">[% loop_receive.basketno %]</a></td>
352                 <td><a href="neworderempty.pl?ordernumber=[% loop_receive.ordernumber %]&amp;booksellerid=[% booksellerid %]">[% loop_receive.ordernumber %]</a></td>
353                 <td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% loop_receive.biblionumber %]">[% loop_receive.title |html %]</a>
354                 [% IF ( loop_receive.author ) %] / [% loop_receive.author %][% END %]
355                 [% IF ( loop_receive.isbn ) %] - [% loop_receive.isbn %][% END %]
356                 [% IF ( loop_receive.publishercode ) %]<br />Publisher :[% loop_receive.publishercode %][% END %]
357                 [% IF ( loop_receive.suggestionid ) %]
358                     <br/>
359                     Suggested by: [% loop_receive.surnamesuggestedby %][% IF ( loop_receive.firstnamesuggestedby ) %], [% loop_receive.firstnamesuggestedby %] [% END %]
360                     (<a href="/cgi-bin/koha/suggestion/suggestion.pl?suggestionid=[% loop_receive.suggestionid %]&amp;op=show">suggestion #[% loop_receive.suggestionid %]</a>)
361                 [% END %]
362                 </td>
363                 <td><a href="/cgi-bin/koha/catalogue/showmarc.pl?id=[% loop_receive.biblionumber %]" title="MARC" rel="gb_page_center[600,500]">MARC</a> | <a href="/cgi-bin/koha/catalogue/showmarc.pl?viewas=card&amp;id=[% loop_receive.biblionumber %]" title="MARC" rel="gb_page_center[600,500]">Card</a></td>
364                 <td>[% loop_receive.quantityreceived %]</td>
365                 <td>[% loop_receive.ecost %]</td>
366                 <td>[% loop_receive.unitprice %]</td>
367                 <td>[% loop_receive.total %]</td>
368                 <td>
369                     [% IF (loop_receive.cannot_cancel) %]
370                         [% span_title = BLOCK %]
371                             Cannot cancel receipt of this order line because it
372                             was created from a partial receipt of order line no.
373                             [% loop_receive.parent_ordernumber %], which is
374                             already received. Try cancelling this one first and
375                             retry.
376                         [% END %]
377                         <span title="[% span_title | collapse %]">
378                             Can't cancel receipt
379                         </span>
380                     [% ELSE %]
381                         <a href="/cgi-bin/koha/acqui/parcel.pl?invoice=[% loop_receive.invoice %]&booksellerid=[% booksellerid %]&datereceived=[% datereceived %]&op=cancelreceipt&ordernumber=[% loop_receive.ordernumber %]">Cancel receipt</a>
382                     [% END %]
383                 </td>
384             </tr>
385             [% END %]
386         </tbody>
387     </table>
388     </form>
389         [% ELSE %]There are no received orders.[% END %]
390 </div>
391
392 <!--<form action="/cgi-bin/koha/acqui/parcels.pl?booksellerid=[% booksellerid %]" method="post">-->
393 <form action="parcels.pl?booksellerid=[% booksellerid %]" method="post">
394     <input type="hidden" name="booksellerid" value="[% booksellerid %]" />
395     <fieldset class="action">
396         <input type="submit" value="Finish receiving" />
397     </fieldset>
398 </form>
399
400 </div>
401 </div>
402 <div class="yui-b">
403 <form action="/cgi-bin/koha/acqui/parcel.pl" id="filterform" method="post">
404         <fieldset class="brief">
405
406             <h4>Filter</h4>
407
408             <ol>
409
410                 <li>
411                     <label for="summaryfilter">ISBN, author or title :</label>
412             <input type="text" name="summaryfilter" id="summaryfilter" value="[% summaryfilter %]"/>
413                 </li>
414
415                 <li>
416                     <label for="basketfilter">Basket :</label>
417             <input type="text" name="basketfilter" id="basketfilter" value="[% basketfilter %]"/>
418                 </li>
419
420                 <li>
421             <label for="orderfilter">Order line :</label>
422             <input type="text" name="orderfilter" id="orderfilter" value="[% orderfilter %]"/>
423                 </li>
424                 [% IF (UNIMARC) %]
425         <li>
426             <label for="eanfilter">EAN :</label>
427             <input type="text" name="eanfilter" id="eanfilter" value="[% eanfilter %]"/>
428         </li>
429                 [% END %]
430             </ol>
431                 <fieldset class="action">
432         <input type="hidden" value="search" name="op" />
433         <input type="hidden" value="[% booksellerid %]" name="booksellerid" />
434         <input type="hidden" value="[% invoice %]" name="invoice" />
435         <input type="hidden" value="[% invoicedatereceived %]" name="datereceived" />
436         <input type="submit" value="Filter" />
437         <a href="/cgi-bin/koha/acqui/parcel.pl?booksellerid=[% booksellerid %]&invoice=[% invoice %]&op=new&datereceived=[% formatteddatereceived %]">Clear</a>
438                 </fieldset>
439
440
441         </fieldset>
442     </form>
443 [% INCLUDE 'acquisitions-menu.inc' %]
444 </div>
445 </div>
446 [% INCLUDE 'intranet-bottom.inc' %]
447