acq : invoice search limit to invoiceable, not-cancelled, not on this invoice
authorBill Erickson <berick@esilibrary.com>
Fri, 20 Jul 2012 15:20:53 +0000 (11:20 -0400)
committerBill Erickson <berick@esilibrary.com>
Fri, 20 Jul 2012 15:21:35 +0000 (11:21 -0400)
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/src/templates/acq/invoice/view.tt2
Open-ILS/web/js/ui/default/acq/invoice/view.js

index 678543a..d14c999 100644 (file)
                         <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>
index e1c945b..2739c3d 100644 (file)
@@ -230,21 +230,30 @@ function performSearch() {
     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)