invoice search add-to-invoice action; prevent re-add; clear search form on re-search
authorBill Erickson <berick@esilibrary.com>
Mon, 16 Jul 2012 19:48:50 +0000 (15:48 -0400)
committerBill Erickson <berick@esilibrary.com>
Wed, 25 Jul 2012 14:36:25 +0000 (10:36 -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 b3a14f4..83a6c92 100644 (file)
                         </div>
                         <div>
                             <button
-                                onclick="resultManager.go(termManager.buildSearchObject())">
+                                onclick="clearSearchResTable(); resultManager.go(termManager.buildSearchObject())">
                                 [% l('Search') %]
                             </button>
                             <button 
index 300ecf9..4e8209a 100644 (file)
@@ -284,7 +284,13 @@ function searchResultsLoader() {
         console.log('Adding search result lineitem ' + li_id);
         var row = resultsRow.cloneNode(true);
         resultsTbody.appendChild(row);
-        dojo.query('[name=search-results-checkbox]', row)[0].setAttribute('lineitem', li_id);
+        var checkbox = dojo.query('[name=search-results-checkbox]', row)[0];
+        checkbox.setAttribute('lineitem', li_id);
+
+        // this lineitem is already part of the invoice
+        if (dojo.query('[entry_lineitem_row=' + li_id + ']')[0])
+            checkbox.disabled = true;
+
         openils.acq.Lineitem.fetchAndRender(
             li_id, {}, 
             function(li, html) { 
@@ -301,11 +307,17 @@ function addSelectedToInvoice() {
             if (checkbox.checked) {
                 attachLi = checkbox.getAttribute('lineitem');
                 doAttachLi(true);
+                checkbox.disabled = true;
             }
         }
     );
 }
 
+function clearSearchResTable() {
+    while (resultsTbody.childNodes[0])
+        resultsTbody.removeChild(resultsTbody.childNodes[0]);
+}
+
 function updateTotalCost() {
 
     var totalCost = 0;    
@@ -581,6 +593,7 @@ function addInvoiceEntry(entry) {
 
     var row = entryTemplate.cloneNode(true);
     row.setAttribute('lineitem', entry.lineitem());
+    row.setAttribute('entry_lineitem_row', entry.lineitem());
 
     openils.acq.Lineitem.fetchAndRender(
         entry.lineitem(), {},