<div id="acq-unified-add-term">
<button onclick="termManager.addRow()">Add Search Term</button>
</div>
- <div>
- <button onclick="performSearch()">[% l('Search') %]</button>
- <button onclick='addSelectedToInvoice()'>
- [% l('Add Selected Items to Invoice') %]
- </button>
- <span style='padding-left: 20px;'>
- <span>
- <input type='checkbox' id='acq-invoice-search-limit-provider' checked='checked'/>
- [% l('Limit Resutls to Invoice Provider') %]
- </span>
- <span style='padding-left: 5px;'>
- <input type='checkbox' id='acq-invoice-search-limit-onorder' checked='checked'/>
- [% l('Limit Resutls to "on-order" Lineitems') %]
- </span>
- </span>
- </div>
+ <table width='100%'><tr>
+ <td align='left'>
+ <button onclick="performSearch()">[% l('Search') %]</button>
+ <button onclick='addSelectedToInvoice()'>
+ [% l('Add Selected Items to Invoice') %]
+ </button>
+ </td>
+ <td align='right'>
+ <input type='checkbox' id='acq-invoice-search-limit-invoiceable' checked='checked'/>
+ [% l('Limit to Invoiceable Items') %]
+ </td>
+ </tr></table>
</div> <!-- end search form -->
<div id='acq-unified-results-lineitem'>
<style>
dojo.cookie('invs', base64Encode(searchObject));
dojo.cookie('invc', dojo.byId("acq-unified-conjunction").getValue());
- // if no provider filter is applied and a provider has been selected
- // for this invoice, limit lineitems to the those using the invoice provider
- var provider = invoicePane.getFieldValue('provider');
- if (provider && dojo.byId('acq-invoice-search-limit-provider').checked) {
+ if (dojo.byId('acq-invoice-search-limit-invoiceable').checked) {
if (!searchObject.jub)
searchObject.jub = [];
- if (!searchObject.jub.filter(function(i) { return i.provider != null }).length)
- searchObject.jub.push({provider : provider});
- }
- if (dojo.byId('acq-invoice-search-limit-onorder').checked) {
- if (!searchObject.jub)
- searchObject.jub = [];
- if (!searchObject.jub.filter(function(i) { return i.state != null }).length)
- searchObject.jub.push({state : 'on-order'});
+ // exclude lineitems that are "cancelled" (sidebar: 'Mericans spell it 'canceled')
+ searchObject.jub.push({state : 'cancelled', '__not' : true});
+
+ // exclude lineitems already linked to this invoice
+ if (invoice && invoice.id() > 0) {
+ if (!searchObject.acqinv)
+ searchObject.acqinv = [];
+ searchObject.acqinv.push({id : invoice.id(), '__not' : true});
+ }
+
+ // limit to lineitems that have invoiceable copies
+ searchObject.acqlisumi = [{item_count : 1, '_gte' : true}];
+
+ // limit to provider if a provider is selected
+ var provider = invoicePane.getFieldValue('provider');
+ if (provider) {
+ console.log('provider = ' + provider);
+ if (!searchObject.jub.filter(function(i) { return i.provider != null }).length)
+ searchObject.jub.push({provider : provider});
+ }
}
resultManager.go(searchObject)