PageRenderTime 60ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/magehelp/application/views/procurement/purchaseorder/purchase_order_grid_3.php

https://bitbucket.org/jit_bec/shopifine
PHP | 1640 lines | 1356 code | 205 blank | 79 comment | 60 complexity | fd5357fdc61b35d4d806dfda44f5b529 MD5 | raw file
Possible License(s): LGPL-3.0

Large files files are truncated, but you can click here to view the full file

  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:47%;
  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:100%;
  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. font-size: 110%
  49. }
  50. .shopifine-output {
  51. float: right;
  52. width: 45%;
  53. word-wrap: break-word;
  54. font-weight:bold;
  55. }
  56. .ui-tabs {
  57. height: 80%;
  58. margin: 0 auto;
  59. width: 85%;
  60. left:0;
  61. }
  62. #notetab {
  63. height:30em;
  64. }
  65. #details {
  66. height:12em;
  67. }
  68. .ui-tabs-nav{
  69. height:22px;
  70. }
  71. .labeldiv {
  72. color: #2E6E9E;
  73. float: left;
  74. font-size: 110%;
  75. font-weight: bold;
  76. margin-right: .5em;
  77. width: 35%;
  78. word-wrap: break-word;
  79. }
  80. .valuediv {
  81. float: left;
  82. font-weight: bold;
  83. width: 45%;
  84. word-wrap: break-word;
  85. }
  86. label.error {
  87. width:8em ;
  88. margin-right: 0;
  89. }
  90. #status-message-li{
  91. color: red;
  92. font-size: 110%;
  93. font-style: italic;
  94. margin: 0 auto;
  95. width: 80%;
  96. }
  97. .help-message-left{
  98. color: green;
  99. font-size: 90%;
  100. font-style: italic;
  101. margin: 0 auto;
  102. width: 90%;
  103. float:left
  104. }
  105. </style>
  106. <script type="text/javascript">
  107. $(function() {
  108. $.validator.addMethod('comboBoxrequired', function(value, element) {
  109. var selectId = element.id;
  110. var inputIdSelector = "#" + selectId + "-input";
  111. if (value == ""){
  112. inputVal = $(inputIdSelector).val();
  113. if (inputVal == "" || inputVal == null){
  114. return false;
  115. }
  116. }
  117. return true;
  118. }, 'Please select from the dropdown or add new element in box');
  119. $.validator.addMethod('lessthanallowed', function (value, element, param) {
  120. var allowed_id = element.id + '-total';
  121. if (parseFloat(value)>parseFloat($("#"+allowed_id).val())){
  122. return false;
  123. }
  124. return true;
  125. },"{0} Quantity Can Not Be More Than Total Received/Returned For This Line Item");
  126. $.validator.addMethod('tallyquantity', function(value, element) {
  127. var ordered_quantity = parseInt($("#quantity").text());
  128. var already_received = parseInt($("#already_received").text());
  129. var received_quantity = parseInt($("#received_quantity").val());
  130. var returned_quantity = parseInt($("#returned_quantity").val());
  131. var subgrid=$("#subgrid_ref").val();
  132. var receipt_line_id = $("#receipt_line_ref").val();
  133. var action = $("#action").val();
  134. var oper = $("#oper").val();
  135. console.log("already_received" + already_received + "received_quantity" + received_quantity + "returned_quantity" + returned_quantity);
  136. var total_received = already_received + received_quantity + returned_quantity;
  137. if (action=='edit'){
  138. // for edit actionold values need to be subtracted
  139. total_received = total_received - $("#"+subgrid).getCell(receipt_line_id,'received_quantity')
  140. //}
  141. //else if (oper=="return"){
  142. total_received = total_received - $("#"+subgrid).getCell(receipt_line_id,'returned_quantity');
  143. //}
  144. }
  145. console.log("total_received/returned" + total_received);
  146. console.log("ordered_quantity" + ordered_quantity);
  147. if (total_received>ordered_quantity){
  148. return false;
  149. }
  150. return true;
  151. }, 'Total Received And Returned Can Not Be More Than Ordered');
  152. //form validation
  153. $("#quoteForm").validate();
  154. $("#ppItemForm").validate({
  155. rules:{
  156. pp_quantity_received:
  157. {required:true,
  158. lessthanallowed:"Part Payable Received"}
  159. }
  160. });
  161. $("#itemForm").validate({
  162. ignore:".ignore-fields",
  163. rules:{
  164. received_quantity:{
  165. required:true,
  166. //noBlank:true,
  167. digits:true,
  168. min:1
  169. },
  170. received_value:{
  171. required:true,
  172. //noBlank:true,
  173. number:true,
  174. minStrict:0
  175. },
  176. returned_quantity:{
  177. required:true,
  178. //noBlank:true,
  179. digits:true,
  180. min:1
  181. },
  182. returned_value:{
  183. required:true,
  184. //noBlank:true,
  185. number:true,
  186. minStrict:0
  187. },
  188. vat:{
  189. required:true,
  190. number:true,
  191. minStrict:0
  192. },
  193. free_items:{
  194. digits:true,
  195. min:1
  196. },
  197. discount:{
  198. number:true,
  199. minStrict:0
  200. }
  201. }
  202. }
  203. );
  204. // datepicker for Add Form
  205. $( "#expiry_date" ).datepicker({
  206. showOn: "button",
  207. buttonImage: "images/calendar.gif",
  208. buttonImageOnly: true,
  209. dateFormat:"dd/mm/yy",
  210. minDate:0
  211. });
  212. function quotegriddates(id){
  213. jQuery("#"+id+"_needed_by_date","#orders").datepicker({dateFormat:"yy-mm-dd",minDate:0});
  214. }
  215. //end datepicker
  216. var myGridPkd = $("#lineItems");
  217. $( "#dialog-form" ).dialog({
  218. autoOpen: false,
  219. height: 'auto',
  220. width: '65%',
  221. position:[220,25],
  222. modal: true,
  223. buttons: {
  224. "DoneButton": {
  225. id:"doneBtn",
  226. text:"Done",
  227. click:function() {
  228. var isValid = $("#quoteForm").valid();
  229. if (isValid){
  230. $( this ).dialog( "close" );
  231. } //end ifvalid
  232. }}, //end of Create button
  233. Cancel: function() {
  234. //in cancel just recset notes
  235. $("#receivingNotes").val("");
  236. $( this ).dialog( "close" );
  237. }
  238. },//end buttons
  239. open: function(){
  240. $( "#tabs" ).tabs({
  241. //cache
  242. beforeLoad: function( event, ui ) {
  243. var tabcache = $("#tabcache").val();
  244. if (tabcache==1){
  245. if ( ui.tab.data( "loaded" ) ) {
  246. event.preventDefault();
  247. return;
  248. }
  249. ui.jqXHR.success(function() {
  250. ui.tab.data( "loaded", true );
  251. });
  252. }
  253. },
  254. beforeActivate: function (event,ui){
  255. if (ui.oldTab[0].id=="notesLink"){
  256. $("#tabcache").val("1");
  257. }
  258. },
  259. load: function(event,ui){
  260. $.ajax({
  261. method:"POST",
  262. url:'index.php/procurement/getOrderDetails',
  263. data:{orderId: myGrid.getGridParam('selrow')},
  264. success:function(response){
  265. //console.log(response);
  266. var resJson = JSON.parse(response);
  267. //console.log(resJson);
  268. $("#orderRef").text(resJson.reference);
  269. $("#supplierOP").text(resJson.supplier_name);
  270. $("#warehouseOP").text(resJson.warehouse);
  271. $("#quoteOP").text(resJson.quote_reference);
  272. $("#raisedByOP").text(resJson.raised_by_name);
  273. $("#approvedByOP").text(resJson.approved_by_name);
  274. $("#estValueOP").text(resJson.estimated_value);
  275. $("#receivingNotes").val(resJson.receiving_notes);
  276. //$("#receivingNotes").val("abcc");
  277. }
  278. })
  279. $("#lineItems").jqGrid({
  280. url:'index.php/procurement/populateOrderItems',
  281. datatype: 'json',
  282. mtype: 'POST',
  283. postData:{orderId: myGrid.getGridParam('selrow')},
  284. colNames:['Product id','Product','Quantity','Received','Returned','Not Deliver','Need By Date','Price','Ordered Value','Received Value','Returned Value'/*'Notes'*/],
  285. colModel :[
  286. {name:'product_id', index:'product_id',editable:false, hidden:true},
  287. {name:'name', index:'name',editable:false, width:160, align:'right'},
  288. {name:'quoted_quantity', index:'quoted_quantity', editable:false,width:60, align:'right'},
  289. {name:'received_quantity', index:'received_quantity', editable:false,width:60, align:'right'},
  290. {name:'returned_quantity', index:'returned_quantity', editable:false,width:60, align:'right'},
  291. {name:'cnbd_quantity', index:'cnbd_quantity', editable:false,width:60, align:'right'},
  292. {name:'needed_by_date',index:'needed_by_date',editable:false, width:80, align:'right',hidden:true},
  293. {name:'expected_price',index:'expected_price',editable:false, width:60, align:'right',hidden:true},
  294. {name:'estimated_value', index:'estimated_value',editable:false, width:100, align:'right'},
  295. {name:'received_value', index:'received_value',editable:false, width:100, align:'right'},
  296. {name:'returned_value', index:'returned_value',editable:false, width:100, align:'right'},
  297. // {name:'comments', index:'comments',editable:true, width:180, align:'right'}
  298. ],
  299. pager: '#pagerPk',
  300. rowNum:10,
  301. rowList:[5,10,20],
  302. sortname: 'id',
  303. sortorder: 'desc',
  304. viewrecords: true,
  305. gridview: true,
  306. ignoreCase:true,
  307. rownumbers:true,
  308. multiselect:true,
  309. height:'auto',
  310. width:'60%',
  311. caption: 'Line Items',
  312. jsonReader : {
  313. root:"orderitemdata",
  314. page: "page",
  315. total: "total",
  316. records: "records",
  317. cell: "dprow",
  318. id: "id"
  319. },
  320. //receipt Item subgrid
  321. subGrid:true,
  322. subGridRowExpanded: function(subgrid_id, row_id) {
  323. var subgrid_table_id, pager_id;
  324. subgrid_table_id = subgrid_id+"_t";
  325. pager_id = "p_"+subgrid_table_id;
  326. $("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' class='scroll'></table><div id='"+pager_id+"' class='scroll'></div>");
  327. jQuery("#"+subgrid_table_id).jqGrid({
  328. url:'index.php/procurement/populateReceiptItems?oper='+"orderline"+'&orderLineId='+row_id,
  329. datatype: 'json',
  330. colNames:['Line ref','Supplier Receipt','Reference','Receipt Id','Order Line Id','Order Line Ref','Product Id','Product','Qty','Qty Rcvd','Rcvd Value','Qty Rtrnd','Rtrnd Value','Rcvd Notes','Rtrnd Notes'],
  331. colModel :[
  332. {name:'line_reference', index:'line_reference',editable:false,width:60, align:'right',hidden:true},
  333. {name:'supplier_receipt_number', index:'supplier_receipt_number',editable:false,width:120, align:'right'},
  334. {name:'reference', index:'reference',editable:false,width:60, align:'right'},
  335. {name:'receipt_id', index:'receipt_id',editable:false, hidden:true},
  336. {name:'order_line_id', index:'order_line_id',editable:false, hidden:true},
  337. {name:'product_id', index:'product_id',editable:false, hidden:true},
  338. {name:'order_line_ref', index:'order_line_ref',editable:false, width:100, align:'right',hidden:true},
  339. {name:'name', index:'name',editable:false, width:100, align:'right',hidden:true},
  340. {name:'ordered_quantity', index:'ordered_quantity', editable:false,width:60, align:'right'},
  341. {name:'received_quantity', index:'received_quantity', editable:false,width:60, align:'right'},
  342. {name:'received_value', index:'received_value',editable:false, width:80, align:'right'},
  343. {name:'returned_quantity', index:'returned_quantity', editable:false,width:60, align:'right'},
  344. {name:'returned_value', index:'returned_value',editable:false, width:80, align:'right'},
  345. {name:'receiving_notes', index:'receiving_notes',editable:false, width:160, align:'right',hidden:true},
  346. {name:'returned_notes', index:'returned_notes', editable:false,width:160, align:'right',hidden:true}
  347. // {name:'comments', index:'comments',editable:false, width:160, align:'right'}
  348. ],
  349. rowNum:20,
  350. pager: pager_id,
  351. sortname: 'id',
  352. sortorder: "asc",
  353. height: '100%',
  354. multiselect:true,
  355. jsonReader : {
  356. root:"receiptitemdata",
  357. page: "page",
  358. total: "total",
  359. records: "records",
  360. cell: "dprow",
  361. id: "id"
  362. }
  363. });
  364. $("#"+subgrid_table_id).jqGrid('navGrid',"#"+pager_id,{edit:false,add:false,del:false,search:false,view:true});
  365. // subgrid custom buttin navigation bar
  366. $("#"+subgrid_table_id).jqGrid ('navButtonAdd', "#"+pager_id,
  367. {
  368. caption:"",
  369. title:"Edit Received For This Receipt",
  370. buttonicon:"ui-icon-newwin",
  371. id:"receive_lineItems",
  372. onClickButton : function () {
  373. //need to pass grid id for dynamic reload;
  374. var noOfRows = $("#"+subgrid_table_id).getGridParam("selarrrow").length;
  375. if (noOfRows == 1){
  376. var lineId = $("#"+subgrid_table_id).getGridParam("selrow");
  377. // grid id would help us in getting order line related info from lineItem grid using order_line_id
  378. // Sub grid would help us in getting receipt related information using receipt id
  379. var gridData ={'grid_id':'lineItems','sub_grid_id':subgrid_table_id,'order_line_id':$("#"+subgrid_table_id).getCell(lineId,'order_line_id'),
  380. 'receipt_line_id':$("#"+subgrid_table_id).getGridParam("selrow"),'action':'edit','oper':'receive','url':"index.php/procurement/receiveItems"}
  381. $( "#dialog-form-item" ).data('grid_data',gridData).dialog( "open" );
  382. }
  383. else {
  384. $( "#modal-warning" ).dialog("open") ;
  385. }
  386. }
  387. });
  388. $("#"+subgrid_table_id).jqGrid ('navButtonAdd', "#"+pager_id,
  389. {
  390. caption:"",
  391. title:"Edit Returned For This Receipt",
  392. buttonicon:"ui-icon-arrowreturnthick-1-w",
  393. id:"return_lineItems",
  394. onClickButton : function () {
  395. //need to pass grid id for dynamic reload;
  396. var noOfRows = $("#"+subgrid_table_id).getGridParam("selarrrow").length;
  397. if (noOfRows == 1){
  398. var lineId = $("#"+subgrid_table_id).getGridParam("selrow");
  399. // grid id would help us in getting order line related info from lineItem grid using order_line_id
  400. // Sub grid would help us in getting receipt related information using receipt id
  401. var gridData ={'grid_id':'lineItems','sub_grid_id':subgrid_table_id,'order_line_id':$("#"+subgrid_table_id).getCell(lineId,'order_line_id'),
  402. 'receipt_line_id':$("#"+subgrid_table_id).getGridParam("selrow"),'action':'edit','oper':'return','url':"index.php/procurement/receiveItems"}
  403. $( "#dialog-form-item" ).data('grid_data',gridData).dialog( "open" );
  404. }
  405. else {
  406. $( "#modal-warning" ).dialog("open") ;
  407. }
  408. }
  409. });
  410. $("#"+subgrid_table_id).jqGrid ('navButtonAdd', "#"+pager_id,
  411. {
  412. caption:"",
  413. title:"Process For Part Payment",
  414. buttonicon:"ui-icon-clipboard",
  415. id:"pp_lineItems",
  416. onClickButton : function () {
  417. //need to pass grid id for dynamic reload;
  418. var noOfRows = $("#"+subgrid_table_id).getGridParam("selarrrow").length;
  419. if (noOfRows == 1){
  420. var lineId = $("#"+subgrid_table_id).getGridParam("selrow");
  421. // grid id would help us in getting order line related info from lineItem grid using order_line_id
  422. // Sub grid would help us in getting receipt related information using receipt id
  423. var gridData ={'grid_id':'lineItems','sub_grid_id':subgrid_table_id,'order_line_id':$("#"+subgrid_table_id).getCell(lineId,'order_line_id'),
  424. 'receipt_line_id':$("#"+subgrid_table_id).getGridParam("selrow"),'action':'edit','oper':'return','url':"index.php/procurement/receiveItems"}
  425. $( "#dialog-form-partpayment" ).dialog('option','title','REC-'+$("#"+subgrid_table_id).getCell(lineId,'line_reference'))
  426. $( "#dialog-form-partpayment" ).data('grid_data',gridData).dialog( "open" );
  427. }
  428. else {
  429. $( "#modal-warning" ).dialog("open") ;
  430. }
  431. }
  432. });
  433. $("#"+subgrid_table_id).jqGrid ('navButtonAdd', "#"+pager_id,
  434. { caption: "", buttonicon: "ui-icon-calculator",
  435. title: "Choose Columns",
  436. onClickButton: function() {
  437. $("#"+subgrid_table_id).jqGrid('columnChooser');
  438. }
  439. });
  440. //end sub grid navigator custom buttons
  441. }
  442. }).navGrid("#pagerPk",{edit:false,add:false,del:false,search:false,view:true},{},{},{},{},{});
  443. $("#lineItems").jqGrid('navButtonAdd','#pagerPk',{
  444. caption:"",
  445. title:"Receive Items",
  446. buttonicon:"ui-icon-newwin",
  447. id:"receive_lineItems",
  448. onClickButton : function () {
  449. //need to pass grid id for dynamic reload;
  450. var noOfRows = $("#lineItems").getGridParam("selarrrow").length;
  451. if (noOfRows == 1){
  452. var gridData ={'grid_id':'lineItems','order_line_id':$("#lineItems").getGridParam("selrow"),
  453. 'action':'add','oper':'receive','url':"index.php/procurement/receiveItems"}
  454. $( "#dialog-form-item" ).data('grid_data',gridData).dialog( "open" );
  455. $("#receiptOp").combobox();
  456. }
  457. else {
  458. $( "#modal-warning" ).dialog("open") ;
  459. }
  460. }
  461. });
  462. $("#lineItems").jqGrid('navButtonAdd','#pagerPk',{
  463. caption:"",
  464. title:"Return Items",
  465. buttonicon:"ui-icon-arrowreturnthick-1-w",
  466. id:"return_lineItems",
  467. onClickButton : function () {
  468. //need to pass grid id for dynamic reload;
  469. var noOfRows = $("#lineItems").getGridParam("selarrrow").length;
  470. if (noOfRows == 1){
  471. var gridData ={'grid_id':'lineItems','order_line_id':$("#lineItems").getGridParam("selrow"),
  472. 'action':'add','oper':'return','url':"index.php/procurement/receiveItems"}
  473. $( "#dialog-form-item" ).data('grid_data',gridData).dialog( "open" );
  474. $("#receiptOp").combobox();
  475. }
  476. else {
  477. $( "#modal-warning" ).dialog("open") ;
  478. }
  479. }
  480. });
  481. }
  482. });
  483. },
  484. close: function() {
  485. $("#tabcache").val("0");
  486. $.ajax({url:"index.php/procurement/validateReceiving",
  487. type:"POST",
  488. data:{
  489. receiving_notes:$("#receivingNotes").val(),
  490. order_id: $("#orders").getGridParam('selrow')
  491. },
  492. success:function(response)
  493. {}
  494. }); //end ajax
  495. $("#quoteForm").data('validator').resetForm();
  496. $('#quoteForm')[0].reset();
  497. $("#lineItems").jqGrid("GridUnload");
  498. $("#tabs").tabs("destroy");
  499. $("#orders").trigger("reloadGrid");
  500. }
  501. });
  502. // Main Request For Quotation Grid
  503. var myGrid = $("#orders");
  504. myGrid.jqGrid({
  505. url:'index.php/procurement/populatePOToReceive',
  506. datatype: 'json',
  507. mtype: 'GET',
  508. colNames:['Reference','Supplier Id','Supplier','Estimated Value',/*'Owner',*/'Status','Raised By',/*'Owner',*/'Needed By Date'],
  509. colModel :[
  510. {name:'reference', index:'reference', width:80, align:'right',editable:false},
  511. {name:'supplier_id', index:'supplier_id',hidden:true},
  512. {name:'supplier_name', index:'supplier_name', width:140, align:'right',editable:false},
  513. {name:'estimated_value', index:'estimated_value', width:100, align:'right',editable:false,editoptions:{size:"20",maxlength:"30"}},
  514. // {name:'owner', index:'owner', width:140, align:'right',editable:true,editoptions:{size:"20",maxlength:"30"}},
  515. {name:'status', index:'status', width:60, align:'right',editable:false,editoptions:{size:"20",maxlength:"30"}},
  516. {name:'raised_by_name', index:'raised_by_name',editable:false, width:80, align:'right'},
  517. // {name:'owner_name', index:'owner_name',editable:false, width:80, align:'right'},
  518. {name:'needed_by_date', index:'needed_by_date',editable:false, width:120, sorttype:'date'}
  519. ],
  520. pager: '#pager',
  521. rowNum:10,
  522. rowList:[5,10,20],
  523. sortname: 'id',
  524. sortorder: 'desc',
  525. viewrecords: true,
  526. gridview: true,
  527. multiselect:true,
  528. ignoreCase:true,
  529. rownumbers:true,
  530. height:'auto',
  531. width:680,
  532. caption: 'Purchase Orders',
  533. jsonReader : {
  534. root:"quotedata",
  535. page: "page",
  536. total: "total",
  537. records: "records",
  538. cell: "dprow",
  539. id: "id"
  540. },
  541. subGrid:true,
  542. subGridRowExpanded: function(subgrid_id, row_id) {
  543. var subgrid_table_id, pager_id;
  544. subgrid_table_id = subgrid_id+"_t";
  545. pager_id = "p_"+subgrid_table_id;
  546. $("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' class='scroll'></table><div id='"+pager_id+"' class='scroll'></div>");
  547. jQuery("#"+subgrid_table_id).jqGrid({
  548. url:'index.php/procurement/populateOrderItems?q=2&orderId='+row_id,
  549. datatype: 'json',
  550. colNames:['Product Id','Product','Quantity','Received','Returned','Could Not Deliver','Need By Date','Unit Price','Estimated Value','Received Value','Returned Value','Notes'],
  551. colModel :[
  552. {name:'product_id', index:'product_id',editable:false, hidden:true},
  553. {name:'name', index:'name',editable:false, width:120, align:'right'},
  554. {name:'quoted_quantity', index:'quoted_quantity', editable:false,width:50, align:'right'},
  555. {name:'received_quantity', index:'received_quantity', editable:false,width:50, align:'right'},
  556. {name:'returned_quantity', index:'returned_quantity', editable:false,width:50, align:'right'},
  557. {name:'cnbd_quantity', index:'cnbd_quantity', editable:false,width:50, align:'right'},
  558. {name:'needed_by_date',index:'needed_by_date',editable:false, width:60, align:'right',hidden:true},
  559. {name:'expected_price',index:'expected_price',hidden:true, width:50, align:'right'},
  560. {name:'estimated_value', index:'estimated_value',editable:false, width:60, align:'right'},
  561. {name:'received_value', index:'received_value',editable:false, width:60, align:'right'},
  562. {name:'returned_value', index:'returned_value',editable:false, width:60, align:'right',hidden:true},
  563. {name:'comments', index:'comments',editable:false, width:160, align:'right'}
  564. ],
  565. rowNum:20,
  566. pager: pager_id,
  567. sortname: 'id',
  568. sortorder: "asc",
  569. height: '100%',
  570. jsonReader : {
  571. root:"orderitemdata",
  572. page: "page",
  573. total: "total",
  574. records: "records",
  575. cell: "dprow",
  576. id: "id"
  577. }
  578. });
  579. jQuery("#"+subgrid_table_id).jqGrid('navGrid',"#"+pager_id,{edit:false,add:false,del:false,search:false,view:true});
  580. }
  581. }).navGrid("#pager",{edit:false,add:false,view:false,del:false,search:false},{height:280,reloadAfterSubmit:false,closeAfterEdit:true,recreateForm:true,checkOnSubmit:true},{},{},{},{});
  582. myGrid.jqGrid('navButtonAdd','#pager',{
  583. caption:"",
  584. title:"Match With Received Goods",
  585. buttonicon:"ui-icon-newwin",
  586. id:"add_orders",
  587. onClickButton : function () {
  588. var selectRows = myGrid.getGridParam('selarrrow');
  589. var noOfRows = selectRows.length;
  590. if (noOfRows != 1){
  591. $( "#modal-warning" ).dialog("open");
  592. }
  593. else {
  594. $( "#dialog-form" ).dialog( "open" );
  595. }
  596. }
  597. });
  598. myGrid.jqGrid('navButtonAdd','#pager',{
  599. caption:"",
  600. title:"Ready For Invoice",
  601. buttonicon:"ui-icon-tag",
  602. id:"ready_orders",
  603. onClickButton : function () {
  604. var selectRows = myGrid.getGridParam('selarrrow');
  605. var noOfRows = selectRows.length;
  606. var mismatch = 0;
  607. if (noOfRows == 0){
  608. $( "#modal-warning-none" ).dialog("open");
  609. }
  610. else {
  611. for (i=0;i<noOfRows;i++){
  612. //console.log(selectRows[i]);
  613. var status = myGrid.getCell(selectRows[i],'status');
  614. if (status!='received'){
  615. $( "#modal-warning-status" ).dialog("open");
  616. mismatch = 1;
  617. break;
  618. }
  619. }
  620. if (mismatch==0){
  621. $( "#dialog-confirm" ).dialog( "open" );
  622. }
  623. }
  624. }
  625. });
  626. myGrid.jqGrid('filterToolbar', {stringResult: true, searchOnEnter: true, defaultSearch : "cn"});
  627. //line item dialog
  628. $( "#dialog-form-item" ).dialog({
  629. autoOpen: false,
  630. height: 'auto',
  631. width: '60%',
  632. position:[250,25],
  633. modal: true,
  634. buttons: {
  635. "Done": {
  636. id:"processItems",
  637. text:"Confirm",
  638. click:function() {
  639. var isvalid = $("#itemForm").valid();
  640. var grid = $(this).data('grid_data').grid_id;
  641. var order_line_id = $(this).data('grid_data').order_line_id;
  642. var oper = $(this).data('grid_data').oper;
  643. var url = $(this).data('grid_data').url;
  644. var order_id = myGrid.getGridParam('selrow');
  645. //relevant only in case of edit
  646. var subgrid = $(this).data('grid_data').sub_grid_id;
  647. var receipt_line_id = $(this).data('grid_data').receipt_line_id;
  648. var action = $(this).data('grid_data').action;
  649. // by default assume action is "add"
  650. var total_received_quantity = parseInt($("#received_quantity").val())+parseInt($("#already_received").text());
  651. var total_received_value = parseFloat($("#received_value").val())+parseFloat($("#already_received_value").text());
  652. var total_returned_quantity=parseInt($("#returned_quantity").val())+parseInt($("#already_returned").text());
  653. var total_returned_value=parseFloat($("#returned_value").val())+parseFloat($("#already_returned_value").text());
  654. if (action=='edit'){
  655. //if (oper=='receive'){
  656. //subtract old received
  657. total_received_value = total_received_value - $("#"+subgrid).getCell(receipt_line_id,'received_value');
  658. total_received_quantity = total_received_quantity - $("#"+subgrid).getCell(receipt_line_id,'received_quantity');
  659. //}
  660. //else if (oper=='return'){
  661. //subtract old returned
  662. total_returned_value = total_returned_value - $("#"+subgrid).getCell(receipt_line_id,'returned_value');
  663. total_returned_quantity = total_returned_quantity - $("#"+subgrid).getCell(receipt_line_id,'returned_quantity');
  664. //}
  665. }
  666. if (isvalid){
  667. $.ajax({
  668. url:url,
  669. type:"POST",
  670. data:{
  671. order_id:order_id,
  672. order_line_id:order_line_id,
  673. product_id:$("#"+grid).getCell(order_line_id,'product_id'),
  674. supplier_id:myGrid.getCell(order_id,'supplier_id'),
  675. receipt:$("#receiptOp").val(),
  676. receipt_ip:$("#receiptOp-input").val(),
  677. discount:$("#discount").val(),
  678. vat:$("#vat").val(),
  679. expiry_date:$("#expiry_date").val(),
  680. batch_number:$("#batch_number").val(),
  681. free_items:$("#free_items").val(),
  682. total_received_quantity:total_received_quantity,
  683. received_value:$("#received_value").val(),
  684. total_received_value:total_received_value,
  685. received_quantity:$("#received_quantity").val(),
  686. quantity:parseInt($("#quantity").text()),
  687. returned_quantity:$("#returned_quantity").val(),
  688. returned_value:$("#returned_value").val(),
  689. total_returned_quantity:total_returned_quantity,
  690. total_returned_value:total_returned_value,
  691. receiving_notes:$("#receiving_notes").val(),
  692. returned_notes:$("#returned_notes").val(),
  693. oper:$("#oper").val(),
  694. action:$("#action").val()
  695. },
  696. success:function (response){
  697. //console.log("grid " + grid);
  698. $("#"+grid).trigger("reloadGrid");
  699. //reload Main Grid
  700. }
  701. })
  702. $( this ).dialog( "close" );
  703. }
  704. }},
  705. Cancel: function() {
  706. $( this ).dialog( "close" );
  707. }
  708. },
  709. open: function(event,ui){
  710. var grid = $(this).data('grid_data').grid_id;
  711. var order_line_id = $(this).data('grid_data').order_line_id;
  712. var oper = $(this).data('grid_data').oper;
  713. var order_id = myGrid.getGridParam('selrow');
  714. //relevant only in case of edit
  715. var subgrid = $(this).data('grid_data').sub_grid_id;
  716. var receipt_line_id = $(this).data('grid_data').receipt_line_id;
  717. var action = $(this).data('grid_data').action;
  718. $.ajax({
  719. url:"index.php/procurement/populateReceiptOptions",
  720. method:"get",
  721. data:{order_id:order_id},
  722. success : function (response){
  723. $("#receiptOp option").remove();
  724. var opts = '<option value="">Choose ';
  725. opts +=response;
  726. console.log(opts);
  727. $("#receiptOp").html(opts);
  728. if (action=="edit"){
  729. var selVal =$("#"+subgrid).getCell(receipt_line_id,'receipt_id') ;
  730. $("#receiptOp").val(selVal);
  731. $("#receiptOp").attr("disabled",true);
  732. }
  733. }
  734. })
  735. if (oper == "receive"){
  736. $("#received_quantity_cntnr,#received_value_cntnr,#receiving_notes_cntnr").show();
  737. $("#returned_quantity,#returned_value").val("0");
  738. //to be ignored by validation

Large files files are truncated, but you can click here to view the full file