<tbody style='font-weight:bold;'>
<tr>
<td style='margin-top:30px;'>[% l('Owning Branch') %]</td>
- <td>[% l('Shelving Location') %]</td>
+ <td>[% l('Copy Location') %]</td>
<td>[% l('Collection Code') %]</td>
<td>[% l('Fund') %]</td>
<td>[% l('Circ Modifier') %]</td>
<tbody style='font-weight:bold;'>
<tr>
<td style='margin-top:30px;'>[% l('Owning Branch') %]</td>
- <td>[% l('Shelving Location') %]</td>
+ <td>[% l('Copy Location') %]</td>
<td>[% l('Collection Code') %]</td>
<td>[% l('Fund') %]</td>
<td>[% l('Circ Modifier') %]</td>
<tbody style='font-weight:bold;'>
<tr>
<td style='margin-top:30px;'>[% l('Owning Branch') %]</td>
- <td>[% l('Shelving Location') %]</td>
+ <td>[% l('Copy Location') %]</td>
<td>[% l('Circ Modifier') %]</td>
<td>[% l('Callnumber') %]</td>
<td>[% l('Barcode') %]</td>
<th>[% l('Activatable?') %]</th>
<td>
<span id="acq-po-activate-checking"></span>
- <a class="hidden" id="acq-po-activate-link" href="javascript:void(0);" onclick="activatePo()">[% l('Activate Order') %]</a>
+ <span class="hidden" id="acq-po-activate-link"><span dojoType="dijit.form.Button" onClick="activatePo()" jsId="activatePoButton">[% l('Activate Order') %]</span></span>
</td>
</tr>
<tr>
<tr>
<th>[% l('Total Encumbered') %]</th>
<td>[% l('$[_1]', '<span id="acq-po-view-total-enc"></span>') %]</td>
- <th>[% l('Invoicing') %]</th>
+ <th id="acq-po-invoice-label" class="hidden">[% l('Invoicing') %]</th>
<td id="acq-po-invoice-stuff" class="hidden">
<button dojoType="dijit.form.Button"
id="acq-po-view-invoice-link">
<button dojoType='dijit.form.Button' id='acq-po-return-to-invoice-button'>[% l('↖ Return to Invoice') %]</button>
</div>
</td>
- <th>[% l('Allow activation with <br/> zero-copy lineitems') %]</th>
- <td><input type='checkbox' id='acq-po-activate-zero-copies' onclick='checkCouldActivatePo()'/></td>
+ <th class="hidden" id="acq-po-zero-activate-label">[% l('Allow activation with <br/> zero-copy lineitems') %]</th>
+ <td class="hidden" id="acq-po-zero-activate"><input type='checkbox' id='acq-po-activate-zero-copies' onclick='checkCouldActivatePo()'/></td>
</tr>
<tr>
<td colspan='3'>
openils.Util.show("acq-po-invoice-stuff", "table-cell");
}
+/* renderPo() is the best place to add tests that depend on PO-state
+ * (or simple ordered-or-not? checks) to enable/disable UI elements
+ * across the whole interface. */
function renderPo() {
var po_state = PO.state();
dojo.byId("acq-po-view-id").innerHTML = PO.id();
} else if(po_state == "received") {
dojo.removeAttr('rollback_receive_po', 'disabled');
}
+
+ /* cancel widgets only make sense for activate (ordered) POs */
+ makeCancelWidget(
+ dojo.byId("acq-po-view-cancel-reason"),
+ dojo.byId("acq-po-cancel-label")
+ );
+
+ /* likewise for invoice features */
+ openils.Util.show("acq-po-invoice-label", "table-cell");
+ prepareInvoiceFeatures();
+ } else {
+ /* These things only make sense for not-ordered-yet POs */
+
+ openils.Util.show("acq-po-zero-activate-label", "table-cell");
+ openils.Util.show("acq-po-zero-activate", "table-cell");
+
+ openils.Util.show("acq-po-item-table-controls");
}
makePrepayWidget(
dojo.byId("acq-po-view-prepay"),
openils.Util.isTrue(PO.prepayment_required())
);
- makeCancelWidget(
- dojo.byId("acq-po-view-cancel-reason"),
- dojo.byId("acq-po-cancel-label")
- );
// dojo.byId("acq-po-view-notes").innerHTML = PO.notes().length;
poNoteTable.updatePoNotesCount();
}
);
}
-
- prepareInvoiceFeatures();
}
function checkCouldActivatePo() {
var d = dojo.byId("acq-po-activate-checking");
- var a = dojo.byId("acq-po-activate-link");
+ var a = dojo.byId("acq-po-activate-link"); /* <span> not <a> now, but no diff */
d.innerHTML = localeStrings.PO_CHECKING;
var warnings = [];
var stops = [];
if (!(warnings.length || stops.length || other.length)) {
d.innerHTML = localeStrings.PO_COULD_ACTIVATE;
openils.Util.show(a, "inline");
+ activatePoButton.attr("disabled", false);
} else {
if (other.length) {
/* XXX make the textcode part a tooltip one day */
]
);
openils.Util.show(a, "inline");
+ activatePoButton.attr("disabled", false);
}
}
}
}
function activatePo() {
+ activatePoButton.attr("disabled", true);
+
if (openils.Util.isTrue(PO.prepayment_required())) {
- if (!confirm(localeStrings.PREPAYMENT_REQUIRED_REMINDER))
+ if (!confirm(localeStrings.PREPAYMENT_REQUIRED_REMINDER)) {
+ activatePoButton.attr("disabled", false);
return false;
+ }
}
if (PO._warning_hack) {
- if (!confirm(localeStrings.PO_FUND_WARNING_CONFIRM))
+ if (!confirm(localeStrings.PO_FUND_WARNING_CONFIRM)) {
+ activatePoButton.attr("disabled", false);
return false;
+ }
}
liTable.showAssetCreator(activatePoStage2);
{zero_copy_activate : dojo.byId('acq-po-activate-zero-copies').checked}
],
"onresponse": function(r) {
+ progressDialog.hide();
+ activatePoButton.attr("disabled", false);
want_refresh = Boolean(openils.Util.readResponse(r));
},
"oncomplete": function() {
- progressDialog.hide();
if (want_refresh)
location.href = location.href;
}
--- /dev/null
+Acquisitions Purchase Order Improvements
+========================================
+
+Feature Summary
+---------------
+
+The following features, which primarily affect the user interface layer,
+improve Acquisitions work flows.
+
+ * Avoid double-activation of POs
+ * Disable invoice and cancel options for pending POs
+ * Disable zero-copy checkbox for activated POs
+ * Disable new charges for activated POs
+ * Replace "Shelving Location" with Copy Location
+
+ * Rearranging "actions" drop-down
+ * Disable / Allow batch updater operations depending on PO state