PageRenderTime 42ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/magehelp/application/views/invoice/invoice_items.php

https://bitbucket.org/jit_bec/shopifine
PHP | 313 lines | 238 code | 65 blank | 10 comment | 49 complexity | 51183fbbaf5114eb29a0b8c903d0aa11 MD5 | raw file
Possible License(s): LGPL-3.0
  1. <html>
  2. <head>
  3. <?php $this->load->view("common/header"); ?>
  4. <style>
  5. .ui-button {margin:.5em;}
  6. </style>
  7. </head>
  8. <body onLoad="extractOrder()">
  9. <?php $this->load->view("common/menubar"); ?>
  10. <?php if (isset($invoiceId)) :?>
  11. SKU: <input type="text" id="scannedSKU" name="scannedSKU" autofocus="autofocus"/>
  12. <form id="invoiceform" method="post" name="invoiceform">
  13. <div id ="formdata">
  14. <input type="hidden" id="invoiceId" name="invoiceId" value=""/>
  15. <table id="skutable" border="1">
  16. <thead>
  17. <tr>
  18. <th>Sku</th>
  19. <th>Name</th>
  20. <th>Number Invoiced</th>
  21. <th>Number Packed</th>
  22. </tr>
  23. </thead>
  24. <tbody>
  25. <tr/>
  26. </tbody>
  27. </table>
  28. <br/>
  29. <br/>
  30. <b id="commentsLabel" style="vertical-align:top;">Comments </b><textarea id="comments" name ="comments" rows="4" cols="40" ></textarea><br/>
  31. <input type="hidden" id ="isMatched" name="isMatched" value="1"/>
  32. <input type="hidden" id ="jsonItems" name="jsonItems" value=""/>
  33. <input type="hidden" id ="orderId" name="orderId" value=""/>
  34. <input type="submit" value="Pack and Get Another Invoice" onclick="formaction('addMore')"/>
  35. <input type="submit" value="Cancel and Get Another Invoice " onclick="formaction('cancel')"/>
  36. <input type="submit" value="Go For Shipment" onclick="formaction('shipment')"/>
  37. </div>
  38. </form>
  39. <?php else: ?>
  40. <a href="index.php/invoice/addInvoice">Get Magento Invoice</a>
  41. <?php endif; ?>
  42. </body>
  43. </html>
  44. <script>
  45. var skus = {};
  46. var isCancel = false;
  47. var invoiceIdJS = '<?php echo $invoiceId ?>';
  48. var orderId = null; ;
  49. //var entityIDs = new Array();
  50. $("#scannedSKU").keypress(function(event) {
  51. if ( event.which == 13 ) {
  52. event.preventDefault();
  53. var sku= $("#scannedSKU").val();
  54. if (sku) {
  55. if (typeof(skus[sku]) == 'undefined' || skus[sku] == null){
  56. alert ("The item your are trying to scan is not present in the Invoice. Please check")
  57. }
  58. else {
  59. var $rows = $("#skutable tr");
  60. for (i=0 ; i<$rows.length; i++){
  61. var $row = $rows.eq(i);
  62. var $sku =$row.find('td:eq(0)');
  63. if ($sku.length > 0){
  64. var newSku = $sku.html().trim();
  65. var itemInv = $row.find('td:eq(2)').html().trim();
  66. if (sku == newSku){
  67. var $itemScanned = $row.find('td:eq(3)');
  68. var noOfItems = $itemScanned.html().trim();
  69. noOfItems++;
  70. $itemScanned.html(noOfItems);
  71. skus[sku] = noOfItems;
  72. if (itemInv == noOfItems){
  73. $($row).css("background-color","#86B404");
  74. }
  75. break;
  76. }
  77. }
  78. }
  79. }
  80. }
  81. $("#scannedSKU").val("");
  82. }
  83. });
  84. function extractOrder() {
  85. var orderStr = jQuery.parseJSON('<?php echo $response ?>');
  86. for (i=0; i <orderStr.length; i++){
  87. var sku = orderStr[i]['sku'];
  88. var name = orderStr[i]['name'];
  89. if (orderId == null){
  90. orderId = orderStr[i]['order_id'];
  91. }
  92. if (typeof(skus[sku]) == 'undefined' || skus[sku] == null ){
  93. skus[sku] = 0;
  94. $("#skutable > tbody tr:last").after(
  95. "<tr class=" + "scannedRow" + ">\n\
  96. <td>"+ sku + "</td>\n\
  97. <td>"+ name + "</td>\n\
  98. <td>"+ 1 + "</td>\n\
  99. <td>"+ 0 +"</td>\n\
  100. </tr>");
  101. }
  102. else {
  103. var $rows = $("#skutable tr");
  104. for (j=0 ; j<$rows.length; j++){
  105. var $row = $rows.eq(j);
  106. var $sku =$row.find('td:eq(0)');
  107. if ($sku.length > 0){
  108. var newSku = $sku.html().trim();
  109. if (sku == newSku){
  110. var $itemScanned = $row.find('td:eq(2)');
  111. var noOfItems = $itemScanned.html().trim();
  112. noOfItems++;
  113. $itemScanned.html(noOfItems);
  114. }
  115. }
  116. }
  117. }
  118. }
  119. }
  120. // live update
  121. $(".scannedRow").live('click', function(event) {
  122. var sku = $(this).find('td:eq(0)').html().trim();
  123. var scannedItems = $(this).find('td:eq(3)').html().trim();
  124. var invItems = $(this).find('td:eq(2)').html().trim();
  125. if (scannedItems != 0){
  126. $(this).find('td:eq(3)').html(--scannedItems);
  127. if (invItems == scannedItems){
  128. $(this).css("background-color","#86B404");
  129. }
  130. else {
  131. $(this).css("background-color","#F5A9A9");
  132. //skus[sku] = 1;
  133. }
  134. skus[sku] = scannedItems;
  135. }
  136. });
  137. $("#invoiceform").submit(function(){
  138. var isValid = true;
  139. var flag = 0;
  140. var jsonVal =jsonify();
  141. if (isCancel){
  142. return isValid; //cancellation
  143. }
  144. if (!isMatched()){
  145. flag =1;
  146. $("#isMatched").val('0');
  147. }
  148. if (isNothingScanned()){
  149. isValid = false;
  150. $("#comments").after('<p class="validationMessage" id ="commentsvalidationMessage" style="color:#FF0040"> Nothing to pack</p>');
  151. $("#comments").focus();
  152. return isValid;
  153. }
  154. if (flag == 1 && !$.trim($("#comments").val())){
  155. if ($("#commentsLabel").children("."+ "required").length == 0){
  156. $("#commentsLabel").append('<em class = "required" style="color:#FF0040">*</em>&nbsp;&nbsp;&nbsp;&nbsp;');
  157. $("#comments").after('<p class="validationMessage" id ="commentsvalidationMessage" style="color:#FF0040"> Packed Items are not same as Invoiced. You Must tell us why</p>')
  158. }
  159. isValid = false;
  160. $("#comments").focus();
  161. return isValid;
  162. }
  163. if (isValid) {
  164. $("#jsonItems").val(jsonVal);
  165. $("#invoiceId").val(invoiceIdJS);
  166. $("#orderId").val(orderId);
  167. }
  168. // else {
  169. // preventDefault();
  170. // }
  171. return isValid;
  172. //return false;
  173. });
  174. function isMatched(){
  175. var matched = true;
  176. var $rows = $("#skutable tr");
  177. for (i=0 ; i<$rows.length; i++){
  178. var $row = $rows.eq(i);
  179. var $sku =$row.find('td:eq(0)');
  180. if ($sku.length > 0){
  181. var itemInv = $row.find('td:eq(2)').html().trim();
  182. var itemScanned = $row.find('td:eq(3)').html().trim();
  183. if (itemInv!=itemScanned){
  184. matched = false;
  185. }
  186. }
  187. }
  188. return matched;
  189. };
  190. function jsonify(){
  191. var json = "[";
  192. var $rows = $("#skutable tr");
  193. for (i=0 ; i<$rows.length; i++){
  194. var $row = $rows.eq(i);
  195. var $sku =$row.find('td:eq(0)');
  196. if ($sku.length > 0){
  197. var scanned =$row.find('td:eq(3)').html().trim();
  198. var sku = $sku.html().trim();
  199. json = json + "{" + "\"sku\":\"" + sku +"\"," + "\"items\":\"" + scanned + "\"}";
  200. if (i!=$rows.length - 1){
  201. json = json + ",";
  202. }
  203. }
  204. }
  205. json = json + "]";
  206. return json;
  207. };
  208. function formaction( str )
  209. {
  210. isCancel = false;
  211. switch( str )
  212. {
  213. case "addMore":
  214. document.invoiceform.action = 'index.php/invoice/addInvoice';
  215. //document.invoiceform.submit();
  216. break;
  217. case "shipment":
  218. document.invoiceform.action = 'index.php/invoice/ship';
  219. //document.invoiceform.submit();
  220. break;
  221. case "cancel":
  222. document.invoiceform.action = 'index.php/invoice/addInvoice';
  223. $("#invoiceId").val("");
  224. $("#isMatched").val("");
  225. $("#comments").val("");
  226. $("#jsonItems").val("");
  227. $("#orderId").val("");
  228. isCancel = true;
  229. //document.invoiceform.submit();
  230. break;
  231. }
  232. } ;
  233. function isNothingScanned(){
  234. var allEmpty = true;
  235. var $rows = $("#skutable tr");
  236. for (i=0 ; i<$rows.length; i++){
  237. var $row = $rows.eq(i);
  238. var $sku =$row.find('td:eq(0)');
  239. if ($sku.length > 0){
  240. var itemScanned = $row.find('td:eq(3)').html().trim();
  241. if ( itemScanned > 0 ){
  242. allEmpty = false;
  243. }
  244. }
  245. }
  246. return allEmpty;
  247. };
  248. </script>