[Koha-patches] [PATCH] Bug 10209 - The ability to order multiple copies of the same

Amit Gupta amitddng135 at gmail.com
Wed Jun 12 07:13:44 CEST 2013


Test Plan:
1) Create a basket.
2) Click on new order empty record.
3) Give title, quantity and select fund.
4) Order multiple copies of the same item click
on Add fund and quantity button it will add one more
fund and quantity by default quantity will be 1.
5) For delete fund and quantity simply click on
Delete fund and quantity.
---
 acqui/addorder.pl                                  |   18 ++-
 koha-tmpl/intranet-tmpl/prog/en/js/additem.js      |    1 +
 .../prog/en/modules/acqui/neworderempty.tt         |  126 +++++++++++++++-----
 3 files changed, 115 insertions(+), 30 deletions(-)

diff --git a/acqui/addorder.pl b/acqui/addorder.pl
index 077adaf..ba82e25 100755
--- a/acqui/addorder.pl
+++ b/acqui/addorder.pl
@@ -156,6 +156,9 @@ $orderinfo->{'uncertainprice'} ||= 0;
 $orderinfo->{subscriptionid} ||= undef;
 
 my $user = $input->remote_user;
+my $budget_id = $input->param('budget_id');
+my $quantity = $input->param('quantity');
+my $max_budget = $input->param('max_budget');
 
 # create, modify or delete biblio
 # create if $quantity>=0 and $existing='no'
@@ -204,8 +207,21 @@ if ( $orderinfo->{quantity} ne '0' ) {
     if ($$orderinfo{ordernumber}) {
         ModOrder( $orderinfo);
     }
-    else { # else, it's a new line
+    else { # else, it's a new line        
+        $orderinfo->{budget_id} = $budget_id;             
+        $orderinfo->{quantity} = $quantity;
         @$orderinfo{qw(basketno ordernumber )} = NewOrder($orderinfo);
+        
+        for (my $j = 2; $j <= $max_budget; $j++) {                   
+            my $b = $input->param("b"."$j");           
+            my $q = $input->param("q"."$j");           
+            if (defined $b) {
+                $orderinfo->{budget_id} = $b;         
+                $orderinfo->{quantity} = $q;
+                @$orderinfo{qw(basketno ordernumber )} = NewOrder($orderinfo);         
+           }
+        }
+        
     }
 
     # now, add items if applicable
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/additem.js b/koha-tmpl/intranet-tmpl/prog/en/js/additem.js
index 2c15b04..1962685 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/js/additem.js
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/additem.js
@@ -14,6 +14,7 @@ function addItem( node, unique_item_fields ) {
             addItemInList(index, unique_item_fields);
             $("#" + index).find("a[name='buttonPlus']").text("Update");
             $("#quantity").val(current_qty + 1).change();
+	    document.getElementById("quantity").readOnly = false;
         } else if ( current_qty >= max_qty ) {
             alert(window.MSG_ADDITEM_JS_CANT_RECEIVE_MORE_ITEMS
                 || "You can't receive any more items.");
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt
index 87cfa8a..5c81add 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt
@@ -149,6 +149,70 @@ $(document).ready(function()
     });
 //]]>
 </script>
+<script language="javascript">
+    var maximum_budget = 1;
+    
+    function addRow(tableID) {
+        maximum_budget++;        
+        document.getElementById('max_budget').value = maximum_budget;                
+        var table = document.getElementById(tableID); 
+        var rowCount = table.rows.length;
+        var row = table.insertRow(rowCount);
+        var cell1 = row.insertCell(0);
+        var element1 = document.createElement("input");
+        element1.type = "checkbox";
+        element1.name="chkbox[]";
+        cell1.appendChild(element1);
+ 
+        var cell2 = row.insertCell(1);
+        var b_id = 'b' + maximum_budget;
+        var createSelect  = "<select name='" + b_id +"'"+ "id='" + b_id +"'>";
+        var createOption = "";
+        var object1 = document.getElementById('budget_id');               
+        for (i = 1; i < object1.options.length; i++) {
+            createOption =  createOption + "<option value ='" + object1.options[i].value+"'>"+object1.options[i].text + "</option>";
+  
+        }
+        
+        createSelect   = createSelect + createOption + "</select>";
+        cell2.innerHTML = createSelect;
+        var cell3 = row.insertCell(2);
+        var element2 = document.createElement("input");        
+        var q_id = 'q' + maximum_budget;
+        element2.type = "text";
+        element2.name = q_id;
+        element2.id= q_id;
+        element2.value = 1;
+        cell3.appendChild(element2);         
+        }
+ 
+        function deleteRow(tableID) {
+            try {
+                    var table = document.getElementById(tableID);
+                    var rowCount = table.rows.length;
+                    var checkedRowCount = 1;
+                    for(var i=0; i<rowCount; i++) {
+                        var row = table.rows[i];
+                        var chkbox = row.cells[0].childNodes[0];
+                        if(null != chkbox && true == chkbox.checked) {
+                            checkedRowCount ++;
+                        }
+                    }                   
+       
+        for(var i=0; i<rowCount; i++) {
+            var row = table.rows[i];
+            var chkbox = row.cells[0].childNodes[0];
+            if(null != chkbox && true == chkbox.checked) {
+                    table.deleteRow(i);
+                    rowCount--;
+                    i--;
+            } 
+        }
+        } catch(e) {
+            alert(e);
+          }
+        } 
+</script>
 </head>
 <body id="acq_neworderempty" class="acq">
 
@@ -391,13 +455,37 @@ $(document).ready(function()
     [% END %][%# IF (AcqCreateItemOrdering) %]
     <fieldset class="rows">
         <legend>Accounting Details</legend>
-        <ol>
-            <li>
-                [% IF ( close ) %]
-            <span class="label required">Quantity: </span>
+        <ol>[% IF ( biblionumber ) %] [% ELSE %]             
+        <input type="button" value="Add fund and quantity" onclick="addRow('dataTable')" />
+        <input type="button" value="Delete fund and quantity" onclick="deleteRow('dataTable')" />
+        <input type="hidden" size="20" name="max_budget" id ="max_budget" value= 1 />
+        [% END %]                
+        <table id="dataTable" width="350px" border="1">
+        <tr>
+        <td></td>
+        <td><label class="required" for="budget_id">Fund: </label></td>
+        <td><label class="required" for="quantity">Quantity: </label></td>
+        </tr>
+        <tr>
+            <td>   </td>           
+            <td> [% IF ( close ) %]            
+                    <input type="hidden" size="20" name="budget_id" id="budget_id" value="[% budget_id %]" />[% Budget_name %]
+                [% ELSE %]                
+                <select id="budget_id" onchange="fetchSortDropbox(this.form)" size="1" name="budget_id">
+                    <option value="">Select a budget</option>
+                [% FOREACH budget_loo IN budget_loop %]
+                    [% IF ( budget_loo.b_sel ) %]
+                        <option value="[% budget_loo.b_id %]" selected="selected">[% budget_loo.b_txt %]</option>
+                    [% ELSE %]
+                        [% IF ( budget_loo.b_active ) %]<option value="[% budget_loo.b_id %]">[% budget_loo.b_txt %]</option>
+                        [% ELSE %]<option value="[% budget_loo.b_id %]" class="b_inactive">[% budget_loo.b_txt %]</option>
+                        [% END %]
+                    [% END %]
+                [% END %]
+                </select> [% END %]</td>
+            <td> [% IF ( close ) %]            
                     <input type="hidden" size="20" name="quantity" value="[% quantity %]" />[% quantity %]
-                [% ELSE %]
-                    <label class="required" for="quantity">Quantity: </label>
+                [% ELSE %]                    
                     [% IF (AcqCreateItemOrdering) %]
                         [% IF subscriptionid %]
                             <input type="text" readonly="readonly" size="20" id="quantity" name="quantity" value="1" />
@@ -413,29 +501,9 @@ $(document).ready(function()
                     [% END %]
                 [% END %]
                 <!-- origquantityrec only here for javascript compatibility (additem.js needs it, useless here, usefull when receiveing an order -->
-                <input id="origquantityrec" readonly="readonly" type="hidden" name="origquantityrec" value="1" />
-            </li>
-            <li>
-                [% IF ( close ) %]
-            <span class="label required">Fund: </span>
-                    <input type="hidden" size="20" name="budget_id" id="budget_id" value="[% budget_id %]" />[% Budget_name %]
-                [% ELSE %]
-                <label class="required" for="budget_id">Fund: </label>
-                <select id="budget_id" onchange="fetchSortDropbox(this.form)" size="1" name="budget_id">
-                        <option value="">Select a budget</option>
-                [% FOREACH budget_loo IN budget_loop %]
-                    [% IF ( budget_loo.b_sel ) %]
-                        <option value="[% budget_loo.b_id %]" selected="selected">[% budget_loo.b_txt %]</option>
-                    [% ELSE %]
-                        [% IF ( budget_loo.b_active ) %]<option value="[% budget_loo.b_id %]">[% budget_loo.b_txt %]</option>
-                        [% ELSE %]<option value="[% budget_loo.b_id %]" class="b_inactive">[% budget_loo.b_txt %]</option>
-                        [% END %]
-                    [% END %]
-                [% END %]
-                </select>
-                <label for="showallbudgets" style="float:none;width:auto;"> Show all:</label>
-                <input type="checkbox" id="showallbudgets" />
-                [% END %]
+                <input id="origquantityrec" readonly="readonly" type="hidden" name="origquantityrec" value="1" /></td>
+        </tr>
+        </table>
             </li>
 		<li>
                 [% IF ( close ) %]
-- 
1.7.9.5



More information about the Koha-patches mailing list