PageRenderTime 49ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/magehelp/application/views/procurement/purchaseorder/rejected/receipt_rejected_grid_1.php

https://bitbucket.org/jit_bec/shopifine
PHP | 525 lines | 447 code | 55 blank | 23 comment | 9 complexity | 1071465122f96f35cc04e8de07d508a5 MD5 | raw file
Possible License(s): LGPL-3.0
  1. <html>
  2. <head>
  3. <?php $this->load->view("common/header"); ?>
  4. <!-- <script type="text/javascript" src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>-->
  5. <style>
  6. .column {
  7. float: left;
  8. padding: 1em;
  9. width:45%;
  10. }
  11. .extra-wide{
  12. width:95%;
  13. }
  14. .field{
  15. width:100%;
  16. }
  17. .ui-widget-header {height:12px;}
  18. .quote-column {
  19. float: left;
  20. padding-bottom: 0.5em;
  21. width: 95%;
  22. }
  23. .ui-combobox {
  24. width:14em;
  25. }
  26. .ui-combobox-input{
  27. width:12em;
  28. }
  29. #supplierOp-input{
  30. width:10em;
  31. }
  32. #warehouseOp-input{
  33. width:10em;
  34. }
  35. .calculated {
  36. color: green;
  37. font-size: 90%;
  38. }
  39. .row{
  40. width:95%;
  41. }
  42. .shopifine-ro-label {
  43. float: left;
  44. padding-right: 0.5em;
  45. width: 50%;
  46. word-wrap: break-word;
  47. color:#2E6E9E;
  48. }
  49. .shopifine-output {
  50. float: right;
  51. width: 45%;
  52. word-wrap: break-word;
  53. font-weight:bold;
  54. }
  55. .ui-tabs {
  56. height: 80%;
  57. margin: 0 auto;
  58. width: 70%;
  59. left:0;
  60. }
  61. #notetab {
  62. height:30em;
  63. }
  64. #details {
  65. height:12em;
  66. }
  67. .ui-tabs-nav{
  68. height:22px;
  69. }
  70. .labeldiv {
  71. color: #2E6E9E;
  72. float: left;
  73. font-size: 110%;
  74. font-weight: bold;
  75. margin-right: .5em;
  76. width: 35%;
  77. word-wrap: break-word;
  78. }
  79. .valuediv {
  80. float: left;
  81. font-weight: bold;
  82. width: 45%;
  83. word-wrap: break-word;
  84. }
  85. label.error {
  86. margin-right: .5em;
  87. }
  88. #status-message-li{
  89. color: red;
  90. font-size: 110%;
  91. font-style: italic;
  92. margin: 0 auto;
  93. width: 80%;
  94. }
  95. .help-message-left{
  96. color: green;
  97. font-size: 90%;
  98. font-style: italic;
  99. margin: 0 auto;
  100. width: 90%;
  101. float:left
  102. }
  103. </style>
  104. <script type="text/javascript">
  105. $(function() {
  106. $.validator.addMethod('tallyquantity', function(value, element) {
  107. var total_quantity = parseInt($("#total_quantity").text());
  108. var received_quantity = parseInt($("#received_quantity").val());
  109. var returned_quantity = parseInt($("#returned_quantity").val());
  110. var new_total = received_quantity + returned_quantity;
  111. console.log("old total" + total_quantity);
  112. console.log("new total" + new_total);
  113. if (total_quantity!=new_total){
  114. return false;
  115. }
  116. return true;
  117. }, ' Received And Returned Must Match Total For This Line Item');
  118. $.validator.addMethod('nonzeroval', function(value, element,param) {
  119. var crrspndng_qty = $("#"+element.id.split("_")[0]+"_quantity").val();
  120. console.log("crrspndng_qty" + crrspndng_qty);
  121. if (crrspndng_qty>0 && value <= 0){
  122. return false;
  123. }
  124. return true
  125. }, '{0} Value Must Be Non-Zero For Non-Zero {0} Quantity');
  126. $("#notesForm").validate({
  127. rules:{
  128. received_quantity:{
  129. //required:true,
  130. //noBlank:true,
  131. digits:true
  132. },
  133. received_value:{
  134. nonzeroval:"Received",
  135. //required:true,
  136. //noBlank:true,
  137. number:true
  138. },
  139. returned_quantity:{
  140. //required:true,
  141. //noBlank:true,
  142. digits:true
  143. },
  144. returned_value:{
  145. nonzeroval:"Returned",
  146. //required:true,
  147. //noBlank:true,
  148. number:true
  149. }
  150. }
  151. });
  152. // Main Request For Quotation Grid
  153. var myGrid = $("#orders");
  154. myGrid.jqGrid({
  155. url:"index.php/procurement/populateReceipts?_status=rejected",
  156. datatype: 'json',
  157. mtype: 'GET',
  158. colNames:['Receipt Reference','Supplier Receipt','Supplier',/*'Estimated Value','Owner',*/'Status','Order Id','Order Ref','Quote Ref'/*,'Owner','Needed By Date'*/],
  159. colModel :[
  160. {name:'reference', index:'reference', width:100, align:'right',editable:false},
  161. {name:'supplier_receipt_number',width:140, index:'supplier_receipt_number',editable:false,align:'right'},
  162. {name:'supplier_name', index:'supplier_name', width:140, align:'right',editable:false},
  163. {name:'status', index:'status', width:100, align:'right',editable:false,editoptions:{size:"20",maxlength:"30"}},
  164. {name:'order_id', index:'order_id',hidden:true},
  165. {name:'order_reference', index:'order_reference',editable:false, width:100, align:'right'},
  166. {name:'quote_reference', index:'quote_reference',editable:false, width:100, align:'right'},
  167. ],
  168. pager: '#pager',
  169. rowNum:10,
  170. rowList:[5,10,20],
  171. sortname: 'id',
  172. sortorder: 'desc',
  173. viewrecords: true,
  174. gridview: true,
  175. multiselect:true,
  176. ignoreCase:true,
  177. rownumbers:true,
  178. height:'auto',
  179. width:'90%',
  180. caption: 'Receipts',
  181. jsonReader : {
  182. root:"quotedata",
  183. page: "page",
  184. total: "total",
  185. records: "records",
  186. cell: "dprow",
  187. id: "id"
  188. },
  189. subGrid:true,
  190. subGridRowExpanded: function(subgrid_id, row_id) {
  191. // we pass two parameters
  192. // subgrid_id is a id of the div tag created whitin a table data
  193. // the id of this elemenet is a combination of the "sg_" + id of the row
  194. // the row_id is the id of the row
  195. // If we wan to pass additinal parameters to the url we can use
  196. // a method getRowData(row_id) - which returns associative array in type name-value
  197. // here we can easy construct the flowing
  198. var subgrid_table_id, pager_id;
  199. subgrid_table_id = subgrid_id+"_t";
  200. pager_id = "p_"+subgrid_table_id;
  201. $("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' class='scroll'></table><div id='"+pager_id+"' class='scroll'></div>");
  202. jQuery("#"+subgrid_table_id).jqGrid({
  203. url:'index.php/procurement/populateReceiptItems?oper='+"receipt"+'&receiptId='+row_id,
  204. datatype: 'json',
  205. colNames:['Line Reference','Supplier Receipt','Reference','Order Line','Receipt Id','Order Line Id','Product Id','Product','Qty Ordrd','Qty Rcvd','Rcvd Value','Qty Rtrnd','Rtrnd Value','Rcvd Notes','Rtrnd Notes'],
  206. colModel :[
  207. {name:'line_reference', index:'line_reference',editable:false,width:60, align:'right',hidden:true},
  208. {name:'supplier_receipt_number', index:'supplier_receipt_number',editable:false,width:120, align:'right'},
  209. {name:'reference', index:'reference',editable:false,width:60, align:'right'},
  210. {name:'receipt_id', index:'receipt_id',editable:false, hidden:true},
  211. {name:'order_line_id', index:'order_line_id',editable:false, hidden:true},
  212. {name:'order_line_reference', index:'order_line_id',editable:false, width:60},
  213. {name:'product_id', index:'product_id',editable:false, hidden:true},
  214. {name:'name', index:'name',editable:false, width:100, align:'right'},
  215. {name:'ordered_quantity', index:'ordered_quantity', editable:false,width:60, align:'right'},
  216. {name:'received_quantity', index:'received_quantity', editable:false,width:60, align:'right'},
  217. {name:'received_value', index:'received_value',editable:false, width:80, align:'right'},
  218. {name:'returned_quantity', index:'returned_quantity', editable:false,width:60, align:'right'},
  219. {name:'returned_value', index:'returned_value',editable:false, width:80, align:'right'},
  220. {name:'receiving_notes', index:'receiving_notes',editable:false, width:160, align:'right',hidden:true},
  221. {name:'returned_notes', index:'returned_notes', editable:false,width:160, align:'right',hidden:true}
  222. // {name:'comments', index:'comments',editable:false, width:160, align:'right'}
  223. ],
  224. rowNum:20,
  225. pager: pager_id,
  226. sortname: 'id',
  227. sortorder: "asc",
  228. height: '100%',
  229. //multiselect:true,
  230. jsonReader : {
  231. root:"receiptitemdata",
  232. page: "page",
  233. total: "total",
  234. records: "records",
  235. cell: "dprow",
  236. id: "id"
  237. }
  238. });
  239. jQuery("#"+subgrid_table_id).jqGrid('navGrid',"#"+pager_id,{edit:false,add:false,del:false,search:false,view:true});
  240. $("#"+subgrid_table_id).jqGrid('navButtonAdd',"#"+pager_id,{
  241. caption:"",
  242. title:"Resubmit For Approval",
  243. buttonicon:"ui-icon-flag",
  244. id:"approve_"+subgrid_table_id,
  245. onClickButton : function () {
  246. var selectRows = $("#"+subgrid_table_id).getGridParam('selrow');
  247. var noOfRows = selectRows.length;
  248. if (noOfRows ==0){
  249. $( "#modal-warning" ).dialog("open");
  250. }
  251. else {
  252. var receiptLineId = $("#"+subgrid_table_id).getGridParam('selrow');
  253. var grid_data = {'grid_id':subgrid_table_id,'url':"index.php/procurement/resubmitReceiptLineItem",'receiptLineId':receiptLineId,'receiptId':$("#"+subgrid_table_id).getCell(receiptLineId,'receipt_id')}
  254. $( "#dialog-receipt-items" ).data('grid_data',grid_data).dialog("open") ;
  255. }
  256. }
  257. });
  258. }
  259. }).navGrid("#pager",{edit:false,add:false,view:false,del:false,search:false},{},{},{},{},{});
  260. myGrid.jqGrid('navButtonAdd','#pager',{
  261. caption:"",
  262. title:"Resubmit For Approval",
  263. buttonicon:"ui-icon-flag",
  264. id:"invoice_orders",
  265. onClickButton : function () {
  266. var selectRows = myGrid.getGridParam('selarrrow');
  267. var noOfRows = selectRows.length;
  268. if (noOfRows ==0){
  269. $( "#modal-warning" ).dialog("open");
  270. }
  271. else {
  272. $.ajax({
  273. type:"POST",
  274. url:"index.php/procurement/resubmitReceipts",
  275. data:{receipt_ids:selectRows
  276. },
  277. success:function (jqXHR){
  278. var jsonRespons = JSON.parse(jqXHR)
  279. console.log(jsonRespons);
  280. emptyMessages();
  281. if (jsonRespons.success!=undefined){
  282. showSuccessMessage("Receipt(s) " + jsonRespons.success + " Has Been Suceesfuly Resubmitted For Re-Approval.");
  283. $("orders").trigger("reloadGrid");
  284. }
  285. if (jsonRespons.failed!=undefined){
  286. showSuccessMessage(" Receipt(s) " + jsonRespons.failed + " Could Not Be Resubmitted As These Still Has 'Rejected Line Items.");
  287. }
  288. }
  289. })
  290. }
  291. }
  292. });
  293. myGrid.jqGrid('filterToolbar', {stringResult: true, searchOnEnter: true, defaultSearch : "cn"});
  294. //$("#del_orders").insertAfter("#add_orders");
  295. $( "#modal-warning" ).dialog({
  296. autoOpen:false,
  297. height: 80,
  298. modal: true
  299. });
  300. $( "#modal-warning-order" ).dialog({
  301. autoOpen:false,
  302. height: 80,
  303. modal: true
  304. });
  305. $( "#dialog-receipt-items" ).dialog({
  306. autoOpen: false,
  307. height: 'auto',
  308. width: '35%',
  309. position:[450,25],
  310. modal: true,
  311. buttons: {
  312. "DoneButton": {
  313. id:"doneBtn",
  314. text:"Done",
  315. click:function() {
  316. var isvalid = $("#notesForm").valid();
  317. var url = $(this).data('grid_data').url;
  318. var receiptLineId = $(this).data('grid_data').receiptLineId;
  319. var receiptId = $(this).data('grid_data').receiptId;
  320. if (isvalid){
  321. $.ajax({
  322. url:url,
  323. type:"POST",
  324. data:{
  325. receiptId:receiptId,
  326. received_value:$("#received_value").val(),
  327. received_quantity:$("#received_quantity").val(),
  328. returned_quantity:$("#returned_quantity").val(),
  329. returned_value:$("#returned_value").val(),
  330. receiving_notes:$("#receiving_notes").val(),
  331. returned_notes:$("#returned_notes").val(),
  332. receiptLineId:receiptLineId
  333. },
  334. success:function (response){
  335. //console.log("grid " + grid);
  336. emptyMessages();
  337. showSuccessMessage("Selected Receipt Has Been Rejected ")
  338. $("#orders").trigger("reloadGrid");
  339. },
  340. error:function (response){
  341. //console.log("grid " + grid);
  342. emptyMessages();
  343. showErrorMessage("Selected Receipt Could Not Be Processed For Internal Error ")
  344. }
  345. })
  346. $( this ).dialog( "close" );
  347. }
  348. }
  349. },
  350. Cancel: function() {
  351. $( this ).dialog( "close" );
  352. }
  353. },
  354. open: function(){
  355. var grid_id = $(this).data('grid_data').grid_id;
  356. var receiptLineId = $(this).data('grid_data').receiptLineId;
  357. $("#total_quantity").text(parseFloat($("#"+grid_id).getCell(receiptLineId,'received_quantity'))+parseFloat($("#"+grid_id).getCell(receiptLineId,'returned_quantity')))
  358. $("#received_value").val($("#"+grid_id).getCell(receiptLineId,'received_value'));
  359. $("#received_quantity").val($("#"+grid_id).getCell(receiptLineId,'received_quantity'));
  360. //$("#receiving_notes").val($("#"+subgrid).getCell(receipt_line_id,'receiving_notes'));
  361. $("#returned_value").val($("#"+grid_id).getCell(receiptLineId,'returned_value'));
  362. $("#returned_quantity").val($("#"+grid_id).getCell(receiptLineId,'returned_quantity'));
  363. },
  364. close: function() {
  365. $("#notesForm").data('validator').resetForm();
  366. $('#notesForm')[0].reset();
  367. }
  368. });
  369. });
  370. </script>
  371. </head>
  372. <body>
  373. <?php $this->load->view("common/menubar"); ?>
  374. <div id="modal-warning" title="Warning">
  375. <p>Please Select Row(s)</p>
  376. </div>
  377. <div id="modal-warning-order" title="Warning">
  378. <p>Please Select Receipt with The Same Order Reference</p>
  379. </div>
  380. <div style="display: block;height: 100%;" class="shopifine-ui-dialog ui-widget ui-widget-content ui-corner-all" tabindex="-1" role="dialog" aria-labelledby="ui-dialog-title-dialog-form">
  381. <?php $this->load->view("common/message"); ?>
  382. <div class="table-grid">
  383. <h1 id="table header">Rejected Receipts</h1>
  384. <table id="orders"><tr><td/></tr></table>
  385. <div id="pager"></div>
  386. </div>
  387. </div>
  388. <div id="dialog-receipt-items">
  389. <h3 id="formHeaderItem">Modify Line Item For Approval</h3>
  390. <div id ="status-message-li" class="ui-corner-all"></div>
  391. <form id="notesForm">
  392. <fieldset>
  393. <div class="row single-column-row">
  394. <div class="column quote-column single-column">
  395. <div class="field">
  396. <div class="labeldiv">Total Quantity:</div>
  397. <div class="valuediv" name="total_quantity" id="total_quantity" ></div>
  398. <div id ="return-help" class="ui-corner-all help-message-left">
  399. (Total Quantity For This Receipt Line. Received and Returned Must Add Up To This)
  400. </div>
  401. </div>
  402. </div>
  403. </div>
  404. <div id="received_quantity_cntnr" class="row single-column-row" >
  405. <div class="column quote-column single-column">
  406. <div class="field">
  407. <label for="received_quantity" class="labeldiv">Received Quantity:</label>
  408. <input id="received_quantity" name="received_quantity" class="tallyquantity noBlank"/>
  409. </div>
  410. </div>
  411. </div>
  412. <div id="received_value_cntnr" class="row single-column-row" >
  413. <div class="column quote-column single-column">
  414. <div class="field">
  415. <label for="received_value" class="labeldiv">Received Value:</label>
  416. <input id="received_value" name="received_value" class="noBlank"/>
  417. </div>
  418. </div>
  419. </div>
  420. <div id="returned_quantity_cntnr" class="row single-column-row" >
  421. <div class="column quote-column single-column">
  422. <div class="field">
  423. <label for="returned_quantity" class="labeldiv">Returned Quantity:</label>
  424. <input id="returned_quantity" name="returned_quantity" class="tallyquantity noBlank"/>
  425. </div>
  426. </div>
  427. </div>
  428. <div id="returned_value_cntnr" class="row single-column-row" >
  429. <div class="column quote-column single-column">
  430. <div class="field">
  431. <label for="returned_value" class="labeldiv">Returned Value:</label>
  432. <input id="returned_value" name="returned_value" class="noBlank"/>
  433. </div>
  434. </div>
  435. </div>
  436. <div id="receiving_notes_cntnr" class="row single-column-row">
  437. <div class="column quote-column single-column">
  438. <div class="field">
  439. <label for="receiving_notes" class="labeldiv">Receiving Notes:</label>
  440. <textarea id="receiving_notes" name="receiving_notes" row="5" col="50"></textarea>
  441. </div>
  442. </div>
  443. </div>
  444. <div id="returned_notes_cntnr" class="row single-column-row">
  445. <div class="column quote-column single-column">
  446. <div class="field">
  447. <label for="returned_notes" class="labeldiv">Returned Notes:</label>
  448. <textarea id="returned_notes" name="returned_notes" row="5" col="50"></textarea>
  449. </div>
  450. </div>
  451. </div>
  452. <input id ="receipt_line_ref" name ="receiptreceipt_line_ref_line" type="hidden" value="">
  453. </fieldset>
  454. </form>
  455. </div>
  456. <?php $this->load->view("partial/footer"); ?>
  457. </body>
  458. </html>