Koha/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcels.tt
Jacek Ablewicz 51601176c6 Bug 13220 - Shipment date not saved when creating an invoice which has a duplicated number
When creating an invoice which has a duplicated number, if the user chooses to 'Create new invoice anyway', previously entered shipment date (todays date by default) is not being saved, because the date value is passed to the script in the wrong format (acqui/parcels.pl expects shipmentdate parameter to be in the system-configured date format, but what it's getting in such cases is ISO-formatted date instead). As a consequence (when receiving orders from invoice whith empty shipment date) 'datereceived' field in order records are also not being populated. Here and there, Koha is using datereceived field to establish if the order was received or not received, so such not-quite-complete orders:

- can be cancelled from the basket (even when they are de facto already received),
- it's not possible to cancel receipt of those orders from the invoice (because Koha is considering them as not yet received).

To reproduce:

1) Make sure you have some system date format configured in your test environment which is different from ISO format (e.g., DD/MM/YYYY) and the AcqWarnOnDuplicateInvoice syspref is enabled
2) Create some invoice with e.g. '11111' number,
3) Create another invoice with the same number (using 'Create new invoice anyway' button)
4) Try to create yet another invoice with the same number; observe that already existing invoice created in step 3) does have empty shipment date.
5) Optional: create some orders and receive them from the invoice with empty shipment date; observe that such orders are not being treated as received in all places (e.g. it's not possible to cancel receipts of such orders, and the message displayed is not in any way helpfull to determine why not).

To test:

1) Apply patch
2) Retest
3) Ensure that the issue is no longer reproductible, and that there are no apparent regressions of any kind.

Signed-off-by: simith <simith@inlibro.com>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Tiny change fixing a bad bug. No problems found, passes tests and QA script.

Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
2014-11-14 11:02:36 -03:00

232 lines
10 KiB
Text

[% USE KohaDates %]
[% INCLUDE 'doc-head-open.inc' %]
<title>Koha &rsaquo; Acquisitions &rsaquo; Receive shipment from vendor [% name %]</title>
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
[% INCLUDE 'doc-head-close.inc' %]
[% INCLUDE 'calendar.inc' %]
[% INCLUDE 'datatables.inc' %]
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
var parcelst = $("#parcelst").dataTable($.extend(true, {}, dataTablesDefaults, {
"aoColumnDefs": [
{ "sType": "title-string", "aTargets" : [ "title-string" ] }
],
"sPaginationType": "four_button"
} ) );
//keep a copy of all budgets before removing the inactives
var budgetId = $("#shipmentcost_budgetid");
var disabledBudgetsCopy = budgetId.html();
$('.b_inactive').remove();
$('#showallfunds').click(function() {
if ($(this).is(":checked")) {
budgetId.html(disabledBudgetsCopy); //Puts back all the funds
}
else {
$('.b_inactive').remove();
}
});
});
//]]>
</script>
</head>
<body id="acq_parcels" class="acq">
[% INCLUDE 'header.inc' %]
[% INCLUDE 'acquisitions-search.inc' %]
<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; <a href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% booksellerid %]">[% name %]</a> &rsaquo; Receive shipment from vendor [% name %]</div>
[% IF ( count ) %]<div id="doc3" class="yui-t2">[% ELSE %]<div id="doc" class="yui-t7">[% END %]
<div id="bd">
<div id="yui-main">
<div class="yui-b">
[% IF ( error_failed_to_create_invoice ) %]
<div id="error" class="dialog alert">
<p>An error has occurred. Invoice cannot be created.</p>
</div>
[% END %]
<h1>Receive shipment from vendor <a href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% booksellerid %]">[% name %]</a></h1>
[% IF duplicate_invoices %]
<div id="parcels_duplicate_invoice" class="dialog alert">
<p>This invoice number has already been used. Would you like to receive on an existing invoice?</p>
<table>
<thead><tr><th>Invoice no.</th><th>Shipment date</th><th></th></tr></thead>
<tbody>
[% FOREACH invoice IN duplicate_invoices %]
<tr>
<td>[% invoice.invoicenumber %]</td>
<td>[% invoice.shipmentdate | $KohaDates %]</td>
<td><a href="/cgi-bin/koha/acqui/parcel.pl?invoiceid=[% invoice.invoiceid %]">Receive</a></td>
</tr>
[% END %]
</tbody>
</table>
<form method="get" action="parcels.pl">
<input type="hidden" name="booksellerid" value="[% booksellerid %]" />
<input type="hidden" name="op" value="confirm" />
<input type="hidden" name="invoice" value="[% invoicenumber %]" />
<input type="hidden" name="shipmentdate" value="[% shipmentdate | $KohaDates %]" />
<input type="hidden" name="shipmentcost" value="[% shipmentcost %]" />
<input type="hidden" name="shipmentcost_budgetid" value="[% shipmentcost_budgetid %]" />
<input type="submit" class="button" value="Create new invoice anyway" />
</form>
</div>
[% END %]
[% IF ( count ) %]
<p> [% count %] shipments</p>
<div id="resultlist">
<!-- Search Results Table -->
<table class="small" id="parcelst">
<thead>
<tr>
<th>Line</th>
<th class="title-string">Date received</th>
<th>Invoice number</th>
<th>Item count</th>
<th>Biblio count</th>
<th>Items expected</th>
</tr>
</thead>
<tbody>
<!-- Actual Search Results -->
[% FOREACH searchresult IN searchresults %]
[% UNLESS ( loop.odd ) %]
<tr class="highlight">
[% ELSE %]
<tr>
[% END %]
<td>
[% searchresult.number %]
</td>
<td>
<span title="[% searchresult.datereceived %]">[% searchresult.datereceived | $KohaDates %]</span>
</td>
<td>
[% IF ( searchresult.code ) %]
<a href="/cgi-bin/koha/acqui/parcel.pl?invoiceid=[% searchresult.invoiceid %]">[% searchresult.code %]</a>
[% ELSE %]
<acronym title="not available">n/a</acronym>
[% END %]
</td>
<td>
[% searchresult.reccount %]
</td>
<td>
[% searchresult.bibcount %]
</td>
<td>
[% searchresult.itemcount %]
</td>
</tr>
[% END %]
</tbody>
</table>
<div id="resultnumber">
<!-- Row of numbers corresponding to search result pages -->
[% IF ( displayprev ) %]
<a href="parcels.pl?booksellerid=[% booksellerid %]&amp;startfrom=[% prevstartfrom %][% IF ( datefrom ) %]&amp;datefrom=[% datefrom %][% END %][% IF ( dateto ) %]&amp;dateto=[% dateto %][% END %][% IF ( code ) %]&amp;filter=[% code %][% END %][% IF ( orderby ) %]&amp;orderby=[% orderby %][% END %][% IF ( resultsperpage ) %]&amp;resultsperpage=[% resultsperpage %][% END %]&amp;type=intra">&lt;&lt; Previous</a>
[% END %]
[% FOREACH number IN numbers %]
[% IF ( number.highlight ) %]
<span class="current">[% number.number %]</span>
[% ELSE %]
<a href="parcels.pl?booksellerid=[% number.booksellerid %]&amp;startfrom=[% number.startfrom %][% IF ( number.datefrom ) %]&amp;datefrom=[% number.datefrom %][% END %][% IF ( number.dateto ) %]&amp;dateto=[% number.dateto %][% END %][% IF ( number.code ) %]&amp;filter=[% number.code %][% END %][% IF ( number.orderby ) %]&amp;orderby=[% number.orderby %][% END %][% IF ( number.resultsperpage ) %]&amp;resultsperpage=[% number.resultsperpage %][% END %]&amp;type=intra">[% number.number %]</a>
[% END %]
[% END %]
[% IF ( displaynext ) %]
<a href="parcels.pl?booksellerid=[% booksellerid %]&amp;startfrom=[% nextstartfrom %][% IF ( datefrom ) %]&amp;datefrom=[% datefrom %][% END %][% IF ( dateto ) %]&amp;dateto=[% dateto %][% END %][% IF ( code ) %]&amp;filter=[% code %][% END %][% IF ( orderby ) %]&amp;orderby=[% orderby %][% END %][% IF ( resultsperpage ) %]&amp;resultsperpage=[% resultsperpage %][% END %]&amp;type=intra">Next &gt;&gt;</a>
[% END %]
</div>
</div>
[% END %]
<div id="parcels_new_parcel">
<form method="get" action="parcels.pl">
<fieldset class="rows">
<legend>Receive a new shipment</legend>
<ol> <li>
<label for="invoice">Vendor invoice </label>
<input type="hidden" name="booksellerid" value="[% booksellerid %]" />
<input type="hidden" name="op" value="new" />
<input type="text" size="20" id="invoice" name="invoice" class="focus" />
</li>
[% IF ( gst ) %]
<li>
<label for="gst">GST:</label>
<input type="text" size="20" id="gst" name="gst" />
</li>
[% END %]
<!-- // Removing freight input until shipping can be proplerly handled .
<li>
<label for="freight">Shipping:</label>
<input type="text" size="20" id="freight" name="freight" />
</li> -->
<li>
<label for="shipmentdate">Shipment date: </label>
<input type="text" id="shipmentdate" name="shipmentdate" maxlength="10" size="10" value="[% shipmentdate_today %]" class="datepicker" />
<div class="hint">[% INCLUDE 'date-format.inc' %]</div>
</li>
<li>
<label for="shipmentcost">Shipping cost: </label>
<input type="text" id="shipmentcost" name="shipmentcost" size="10" />
</li>
<li>
<label for="shipmentcost_budgetid">Fund: </label>
<select id="shipmentcost_budgetid" name="shipmentcost_budgetid">
<option value="">No fund</option>
[% FOREACH budget IN budgets %]
[% IF ( budget.b_active ) %]
<option value="[% budget.b_id %]">[% budget.b_txt %]</option>
[% ELSE %]
<option value="[% budget.b_id %]" class="b_inactive">[% budget.b_txt %] (inactive)</option>
[% END %]
[% END %]
</select>
<label for="showallfunds" style="float:none;width:auto;">&nbsp;Show all:</label>
<input type="checkbox" id="showallfunds" />
</li>
</ol>
</fieldset>
<fieldset class="action"><input type="submit" class="button" value="Next" /> <a class="cancel" href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% booksellerid %]">Cancel</a></fieldset>
</form>
</div>
</div>
</div>
<div class="yui-b">
[% IF ( count ) %]<form method="get" action="parcels.pl">
<fieldset class="brief">
<h4>Filter</h4>
<ol>
<li> <input type="hidden" name="booksellerid" value="[% booksellerid %]" /></li>
<li><label for="filter">Invoice number:</label><input type="text" size="20" name="filter" value="[% filter %]" id="filter" /></li>
<li><label for="datefrom">From:</label><input type="text" size="9" id="datefrom" name="datefrom" value="[% datefrom %]" /><br />
<label for="dateto">To:</label><input type="text" size="9" id="dateto" name="dateto" value="[% dateto %]" /></li>
<li><label for="orderby">Sort by :</label><select name="orderby" id="orderby">
<option value="invoicenumber">Invoice number</option>
<option value="shipmentdate">Shipment date</option>
<option value="shipmentdate desc">Shipment date reverse</option>
<option value="invoicenumber desc">Invoice number reverse</option>
</select><br />
<label for="resultsperpage">Results per page :</label><select name="resultsperpage" id="resultsperpage">
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select></li>
</ol>
<fieldset class="action"><input type="submit" class="button" value="Filter" /> <a href="/cgi-bin/koha/acqui/parcels.pl?booksellerid=[% booksellerid %]">Clear</a></fieldset>
</fieldset>
</form>[% END %]
</div>
</div>
[% INCLUDE 'intranet-bottom.inc' %]