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

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

https://bitbucket.org/jit_bec/shopifine
PHP | 1171 lines | 955 code | 161 blank | 55 comment | 43 complexity | 52108dfdf092378a760e2cb18b43cf8e 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:45%;
  10. }
  11. .base-column{
  12. width:100%;
  13. }
  14. #content_area{
  15. width:1200px;
  16. }
  17. .extra-wide{
  18. width:95%;
  19. }
  20. .field{
  21. width:100%;
  22. }
  23. .ui-widget-header {height:12px;}
  24. .quote-column {
  25. float: left;
  26. padding-bottom: 0.5em;
  27. width: 95%;
  28. }
  29. .ui-combobox {
  30. width:14em;
  31. }
  32. .ui-combobox-input{
  33. width:12em;
  34. }
  35. #supplierOp-input{
  36. width:10em;
  37. }
  38. #warehouseOp-input{
  39. width:10em;
  40. }
  41. .calculated {
  42. color: green;
  43. font-size: 90%;
  44. }
  45. .row{
  46. width:100%;
  47. }
  48. .shopifine-ro-label {
  49. float: left;
  50. padding-right: 0.5em;
  51. width: 50%;
  52. word-wrap: break-word;
  53. color:#2E6E9E;
  54. font-size: 110%
  55. }
  56. .shopifine-output {
  57. float: right;
  58. width: 45%;
  59. word-wrap: break-word;
  60. font-weight:bold;
  61. }
  62. .ui-tabs {
  63. height: 80%;
  64. margin: 0 auto;
  65. width: 55%;
  66. left:0;
  67. }
  68. #notetab {
  69. height:30em;
  70. }
  71. #details {
  72. height:12em;
  73. }
  74. .ui-tabs-nav{
  75. height:22px;
  76. }
  77. .labeldiv {
  78. color: #2E6E9E;
  79. float: left;
  80. font-size: 110%;
  81. font-weight: bold;
  82. margin-right: .5em;
  83. width: 35%;
  84. word-wrap: break-word;
  85. }
  86. .valuediv {
  87. float: left;
  88. font-weight: bold;
  89. width: 45%;
  90. word-wrap: break-word;
  91. }
  92. label.error {
  93. width:8em ;
  94. margin-right: 0;
  95. }
  96. #status-message-li{
  97. color: red;
  98. font-size: 110%;
  99. font-style: italic;
  100. margin: 0 auto;
  101. width: 80%;
  102. }
  103. .help-message-left{
  104. color: green;
  105. font-size: 90%;
  106. font-style: italic;
  107. margin: 0 auto;
  108. width: 90%;
  109. float:left
  110. }
  111. .single-column-row{
  112. margin-left:0;
  113. }
  114. </style>
  115. <script type="text/javascript">
  116. $(function() {
  117. $.validator.addMethod('comboBoxrequired', function(value, element) {
  118. var selectId = element.id;
  119. var inputIdSelector = "#" + selectId + "-input";
  120. if (value == ""){
  121. inputVal = $(inputIdSelector).val();
  122. if (inputVal == "" || inputVal == null){
  123. return false;
  124. }
  125. }
  126. return true;
  127. }, 'Please select from the dropdown or add new element in box');
  128. $.validator.addMethod("threshold", function(value, element, params) {
  129. console.log("param"+ params + $(params).text());
  130. var hi = typeof params == "string" ?
  131. parseFloat($(params).text(), 10) :
  132. params;
  133. if (hi===""){
  134. hi=1;
  135. }
  136. console.log("limit"+hi);
  137. params=hi;
  138. if (isNaN(hi))
  139. return true;
  140. else
  141. return parseInt(value) >= hi;
  142. }, $.validator.format("{1} Can Not Be Less Than Than {0},The {1} Already in Partpayment Process "));
  143. $.validator.addMethod('lessthanallowednotdelivered', function (value, element, param) {
  144. var order_line_id= $("#order_line_ref_cnbd").val();
  145. var ordered = 0;
  146. if (order_line_id!=""){
  147. var already_received = parseInt($("#lineItems").getCell(order_line_id,'received_quantity'));
  148. var already_returned = parseInt($("#lineItems").getCell(order_line_id,'returned_quantity'));
  149. ordered = parseInt($("#lineItems").getCell(order_line_id,'quoted_quantity'));
  150. var total = already_received+already_returned + value;
  151. console.log("tital = " + total);
  152. if (total>ordered){
  153. return false;
  154. }
  155. }
  156. return true;
  157. },"{0} Quantity Can Not Be More Than Total Ordered For This Line Item");
  158. $.validator.addMethod('tallyquantity', function(value, element) {
  159. var ordered_quantity = parseInt($("#quantity").text());
  160. var already_received = parseInt($("#already_received").text());
  161. var already_returned = parseInt($("#already_returned").text());
  162. var undelivered = parseInt($("#cnbd_quantity").text());
  163. var received_quantity = parseInt($("#received_quantity").val());
  164. var returned_quantity = parseInt($("#returned_quantity").val());
  165. var subgrid=$("#subgrid_ref").val();
  166. var receipt_line_id = $("#receipt_line_ref").val();
  167. var action = $("#action").val();
  168. var oper = $("#oper").val();
  169. console.log("already_received" + already_received + "received_quantity" + received_quantity + "returned_quantity" + returned_quantity);
  170. var total_received = already_received + already_returned + undelivered + received_quantity + returned_quantity;
  171. if (action=='edit'){
  172. // for edit actionold values need to be subtracted
  173. total_received = total_received - $("#"+subgrid).getCell(receipt_line_id,'received_quantity')
  174. //}
  175. //else if (oper=="return"){
  176. total_received = total_received - $("#"+subgrid).getCell(receipt_line_id,'returned_quantity');
  177. //}
  178. }
  179. // console.log("total_received/returned/notdelivered" + total_received);
  180. // console.log("ordered_quantity" + ordered_quantity);
  181. if (total_received>ordered_quantity){
  182. return false;
  183. }
  184. return true;
  185. }, 'Total Received And Returned Can Not Be More Than Ordered');
  186. //form validation
  187. $("#quoteForm").validate();
  188. $("#cnbdItemForm").validate({
  189. rules:{
  190. cnbd_qty:{
  191. required:true,
  192. digits:true,
  193. min:1,
  194. lessthanallowednotdelivered:"Sum of Received/Returned/Not Delivered "
  195. }
  196. }
  197. });
  198. $("#itemForm").validate({
  199. ignore:".ignore-fields",
  200. rules:{
  201. received_quantity:{
  202. required:true,
  203. //noBlank:true,
  204. digits:true,
  205. min:1//,
  206. //threshold:'#pp_quantity_receipt'
  207. },
  208. received_value:{
  209. required:true,
  210. //noBlank:true,
  211. number:true,
  212. minStrict:0//,
  213. //threshold:'#pp_amount_receipt'
  214. },
  215. returned_quantity:{
  216. required:true,
  217. //noBlank:true,
  218. digits:true,
  219. min:1
  220. },
  221. returned_value:{
  222. required:true,
  223. //noBlank:true,
  224. number:true,
  225. minStrict:0
  226. },
  227. vat:{
  228. required:true,
  229. number:true,
  230. minStrict:0
  231. }
  232. }
  233. }
  234. );
  235. $("#paymentForm").validate({rules:{
  236. amount:{
  237. required:true,
  238. number:true,
  239. minStrict:0
  240. }
  241. }}
  242. );
  243. // datepicker for Add Form
  244. $( "#expiry_date" ).datepicker({
  245. showOn: "button",
  246. buttonImage: "images/calendar.gif",
  247. buttonImageOnly: true,
  248. dateFormat:"dd/mm/yy",
  249. minDate:0
  250. });
  251. function quotegriddates(id){
  252. jQuery("#"+id+"_needed_by_date","#orders").datepicker({dateFormat:"yy-mm-dd",minDate:0});
  253. }
  254. //end datepicker
  255. var myGridPkd = $("#lineItems");
  256. $( "#dialog-form" ).dialog({
  257. autoOpen: false,
  258. height: 'auto',
  259. width: '70%',
  260. position:[220,25],
  261. modal: true,
  262. buttons: {
  263. "DoneButton": {
  264. id:"doneBtn",
  265. text:"Done",
  266. click:function() {
  267. var isValid = $("#quoteForm").valid();
  268. if (isValid){
  269. $( this ).dialog( "close" );
  270. } //end ifvalid
  271. }}, //end of Create button
  272. Cancel: function() {
  273. //in cancel just recset notes
  274. $("#receivingNotes").val("");
  275. $( this ).dialog( "close" );
  276. }
  277. },//end buttons
  278. open: function(){
  279. $( "#tabs" ).tabs({
  280. //cache
  281. beforeLoad: function( event, ui ) {
  282. var tabcache = $("#tabcache").val();
  283. if (tabcache==1){
  284. if ( ui.tab.data( "loaded" ) ) {
  285. event.preventDefault();
  286. return;
  287. }
  288. ui.jqXHR.success(function() {
  289. ui.tab.data( "loaded", true );
  290. });
  291. }
  292. },
  293. beforeActivate: function (event,ui){
  294. if (ui.oldTab[0].id=="notesLink"){
  295. $("#tabcache").val("1");
  296. }
  297. },
  298. load: function(event,ui){
  299. $.ajax({
  300. method:"POST",
  301. url:'index.php/procurement/getOrderDetails',
  302. data:{orderId: myGrid.getGridParam('selrow')},
  303. success:function(response){
  304. //console.log(response);
  305. var resJson = JSON.parse(response);
  306. //console.log(resJson);
  307. $("#orderRef").text(resJson.reference);
  308. $("#supplierOP").text(resJson.supplier_name);
  309. $("#warehouseOP").text(resJson.warehouse);
  310. $("#quoteOP").text(resJson.quote_reference);
  311. $("#raisedByOP").text(resJson.raised_by_name);
  312. $("#approvedByOP").text(resJson.approved_by_name);
  313. $("#estValueOP").text(resJson.estimated_value);
  314. $("#receivingNotes").val(resJson.receiving_notes);
  315. //$("#receivingNotes").val("abcc");
  316. }
  317. });
  318. var settingsObj ={grid_id:'lineItems',pager:'pagerPk',multiselect:true};
  319. var subgridSettingsObj = {customButtons:{edit_received:true,edit_returned:true,columnchooser:true}};
  320. var order_id = myGrid.getGridParam('selrow');
  321. var owner_id = myGrid.getCell(order_id,'owner_id');
  322. var status = myGrid.getCell(order_id,'status');
  323. console.log("order_id" + order_id + "owner id = " +owner_id + "status "+ status)
  324. prepareOrderItemsGrid(settingsObj,{orderId: myGrid.getGridParam('selrow')},true,{},{needed_by_date:true,expected_price:true,comments:true},subgridSettingsObj)
  325. $("#lineItems").navGrid("#pagerPk",{edit:false,add:false,del:false,search:false,view:true},{},{},{},{},{});
  326. var buttons ={receive:true,return_item:true,cnbd_item:true};
  327. addCustomButtonsToOrderItemGrid('lineItems','pagerPk',buttons,owner_id,status);
  328. var settingsObj ={grid_id:'payments',pager:'pagerPayments'};
  329. var postData={orderId: order_id,type:'advance'};
  330. preparePaymentsGrid(settingsObj,postData);
  331. $("#payments").navGrid("#pagerPayments",{edit:false,add:false,del:false,search:false,view:true},{},{},{},{},{});
  332. var btns = {add:true,edit:true,data:{type:'advance',order_id:order_id,owner_id:owner_id}};
  333. addCustomButtonsInPaymentsGrid('payments','pagerPayments',null,btns);
  334. $("#payments").jqGrid('filterToolbar', {stringResult: true, searchOnEnter: true, defaultSearch : "cn"});
  335. }
  336. });
  337. },
  338. close: function() {
  339. $("#tabcache").val("0");
  340. $.ajax({url:"index.php/procurement/validateReceiving",
  341. type:"POST",
  342. data:{
  343. receiving_notes:$("#receivingNotes").val(),
  344. order_id: $("#orders").getGridParam('selrow')
  345. },
  346. success:function(response)
  347. {}
  348. }); //end ajax
  349. $("#quoteForm").data('validator').resetForm();
  350. $('#quoteForm')[0].reset();
  351. $("#lineItems").jqGrid("GridUnload");
  352. $("#tabs").tabs("destroy");
  353. $("#orders").trigger("reloadGrid");
  354. }
  355. });
  356. // Main Request For Quotation Grid
  357. var myGrid = $("#orders");
  358. var postData={_status:['open','receiving','received']}
  359. var settingsObj = {grid_id:'orders',pager:'pager',multiselect:true,width:'1000'};
  360. prepareOrdersGrid(settingsObj,postData,true,{},{},{});
  361. myGrid.navGrid("#pager",{edit:false,add:false,view:false,del:false,search:false},{height:280,reloadAfterSubmit:false,closeAfterEdit:true,recreateForm:true,checkOnSubmit:true},{},{},{},{});
  362. var buttons = {match:true,ready:true,comments:true,mark_receiver:true,assign:true,load_status_all:true,load_owner_all:true};
  363. addCustomButtonsOrderGrid(settingsObj,buttons);
  364. myGrid.jqGrid('filterToolbar', {stringResult: true, searchOnEnter: true, defaultSearch : "cn"});
  365. //line item dialog
  366. $( "#dialog-form-item" ).dialog({
  367. autoOpen: false,
  368. height: 'auto',
  369. width: '60%',
  370. position:[250,25],
  371. modal: true,
  372. buttons: {
  373. "Done": {
  374. id:"processItems",
  375. text:"Confirm",
  376. click:function() {
  377. var isvalid = $("#itemForm").valid();
  378. var grid = $(this).data('grid_data').grid_id;
  379. var order_line_id = $(this).data('grid_data').order_line_id;
  380. var oper = $(this).data('grid_data').oper;
  381. var url = $(this).data('grid_data').url;
  382. var order_id = myGrid.getGridParam('selrow');
  383. //relevant only in case of edit
  384. var subgrid = $(this).data('grid_data').sub_grid_id;
  385. var receipt_line_id = $(this).data('grid_data').receipt_line_id;
  386. var action = $(this).data('grid_data').action;
  387. // by default assume action is "add"
  388. var total_received_quantity = parseInt($("#received_quantity").val())+parseInt($("#already_received").text());
  389. var total_received_value = parseFloat($("#received_value").val())+parseFloat($("#already_received_value").text());
  390. var total_returned_quantity=parseInt($("#returned_quantity").val())+parseInt($("#already_returned").text());
  391. var total_returned_value=parseFloat($("#returned_value").val())+parseFloat($("#already_returned_value").text());
  392. if (action=='edit'){
  393. //if (oper=='receive'){
  394. //subtract old received
  395. total_received_value = total_received_value - $("#"+subgrid).getCell(receipt_line_id,'received_value');
  396. total_received_quantity = total_received_quantity - $("#"+subgrid).getCell(receipt_line_id,'received_quantity');
  397. //}
  398. //else if (oper=='return'){
  399. //subtract old returned
  400. total_returned_value = total_returned_value - $("#"+subgrid).getCell(receipt_line_id,'returned_value');
  401. total_returned_quantity = total_returned_quantity - $("#"+subgrid).getCell(receipt_line_id,'returned_quantity');
  402. //}
  403. }
  404. if (isvalid){
  405. $.ajax({
  406. url:url,
  407. type:"POST",
  408. data:{
  409. order_id:order_id,
  410. order_line_id:order_line_id,
  411. product_id:$("#"+grid).getCell(order_line_id,'product_id'),
  412. supplier_id:myGrid.getCell(order_id,'supplier_id'),
  413. receipt:$("#receiptOp").val(),
  414. receipt_ip:$("#receiptOp-input").val(),
  415. receipt_line_id:receipt_line_id,
  416. vat:$("#vat").val(),
  417. expiry_date:$("#expiry_date").val(),
  418. batch_number:$("#batch_number").val(),
  419. total_received_quantity:total_received_quantity,
  420. received_value:$("#received_value").val(),
  421. total_received_value:total_received_value,
  422. received_quantity:$("#received_quantity").val(),
  423. quantity:parseInt($("#quantity").text()),
  424. returned_quantity:$("#returned_quantity").val(),
  425. returned_value:$("#returned_value").val(),
  426. cnbd_quantity : parseInt($("#cnbd_quantity").text()),
  427. total_returned_quantity:total_returned_quantity,
  428. total_returned_value:total_returned_value,
  429. receiving_notes:$("#receiving_notes").val(),
  430. returned_notes:$("#returned_notes").val(),
  431. oper:$("#oper").val(),
  432. action:$("#action").val()
  433. },
  434. success:function (response){
  435. //console.log("grid " + grid);
  436. $("#"+grid).trigger("reloadGrid");
  437. //reload Main Grid
  438. }
  439. })
  440. $( this ).dialog( "close" );
  441. }
  442. }},
  443. Cancel: function() {
  444. $( this ).dialog( "close" );
  445. }
  446. },
  447. open: function(event,ui){
  448. var grid = $(this).data('grid_data').grid_id;
  449. var order_line_id = $(this).data('grid_data').order_line_id;
  450. var oper = $(this).data('grid_data').oper;
  451. var order_id = myGrid.getGridParam('selrow');
  452. //relevant only in case of edit
  453. var subgrid = $(this).data('grid_data').sub_grid_id;
  454. var receipt_line_id = $(this).data('grid_data').receipt_line_id;
  455. var action = $(this).data('grid_data').action;
  456. $.ajax({
  457. url:"index.php/procurement/populateReceiptOptions",
  458. method:"get",
  459. data:{order_id:order_id},
  460. success : function (response){
  461. $("#receiptOp option").remove();
  462. var opts = '<option value="">Choose ';
  463. opts +=response;
  464. $("#receiptOp").html(opts);
  465. if (action=="edit"){
  466. var selVal =$("#"+subgrid).getCell(receipt_line_id,'receipt_id') ;
  467. $("#receiptOp").val(selVal);
  468. $("#receiptOp").attr("disabled",true);
  469. }
  470. }
  471. })
  472. if (oper == "receive"){
  473. $("#received_quantity_cntnr,#received_value_cntnr,#receiving_notes_cntnr").show();
  474. $("#returned_quantity,#returned_value").val("0");
  475. //to be ignored by validation
  476. $("#returned_quantity,#returned_value").addClass("ignore-fields");
  477. $("#formHeaderItem").text("Receive Items");
  478. }
  479. else if (oper=="return"){
  480. $("#returned_quantity_cntnr,#returned_value_cntnr,#returned_notes_cntnr").show();
  481. $("#received_quantity,#received_value").val("0");
  482. //to be ignored by validation
  483. $("#received_quantity,#received_value").addClass("ignore-fields");
  484. $("#formHeaderItem").text("Return Items");
  485. }
  486. if (action=="edit"){
  487. $("#status-message-li").text("Warning!! You are about to edit earlier receive/return entry.This will \n\
  488. override previous entry. This is not for NEW entry.Use main grid buttons to add entries");
  489. $("#received_value").val($("#"+subgrid).getCell(receipt_line_id,'received_value'));
  490. $("#received_quantity").val($("#"+subgrid).getCell(receipt_line_id,'received_quantity'));
  491. $("#returned_value").val($("#"+subgrid).getCell(receipt_line_id,'returned_value'));
  492. $("#returned_quantity").val($("#"+subgrid).getCell(receipt_line_id,'returned_quantity'));
  493. var expDate = $("#"+subgrid).getCell(receipt_line_id,'expiry_date');
  494. if (expDate!=null && expDate!=""){
  495. var d1 = Date.parse(expDate);
  496. $("#expiry_date").val(d1.toString('dd/MM/yyyy'));
  497. }
  498. $("#batch_number").val($("#"+subgrid).getCell(receipt_line_id,'batch_number'));
  499. $("#vat").val($("#"+subgrid).getCell(receipt_line_id,'vat'));
  500. var pp_qty = parseInt($("#"+subgrid).getCell(receipt_line_id,'pp_quantity'));
  501. $("#autogen-batch,#batch-help").hide();
  502. if (pp_qty>0){
  503. $("#pp_cntnr").show();
  504. var pp_amt = $("#"+subgrid).getCell(receipt_line_id,'pp_value');
  505. $("#pp_amount_receipt").text(pp_amt);
  506. $("#pp_quantity_receipt").text(pp_qty);
  507. $("#received_quantity").rules("add", {
  508. threshold: '#pp_quantity_receipt',
  509. messages: {
  510. threshold: $.format("Quantity Can Not Be Less Than "+ pp_qty + ",The Quantity Already in Partpayment Process ")
  511. }
  512. });
  513. $("#received_value").rules("add", {
  514. threshold: '#pp_amount_receipt',
  515. messages: {
  516. threshold: $.format("Amount Can Not Be Less Than Than "+ pp_amt+ ",The Amount Already in Partpayment Process ")
  517. }
  518. });
  519. }
  520. // we need to store these for tally quantity validation
  521. $("#subgrid_ref").val(subgrid);
  522. $("#receipt_line_ref").val(receipt_line_id);
  523. }
  524. console.log($("#"+grid).getCell(order_line_id,'cnbd_quantity'));
  525. $("#cnbd_quantity").text($("#"+grid).getCell(order_line_id,'cnbd_quantity'));
  526. $("#oper").val(oper);
  527. $("#action").val(action);
  528. $("#product").text($("#"+grid).getCell(order_line_id,'name'));
  529. $("#neededdate").text($("#"+grid).getCell(order_line_id,'needed_by_date'));
  530. $("#quantity").text($("#"+grid).getCell(order_line_id,'quoted_quantity'));
  531. $("#already_received").text($("#"+grid).getCell(order_line_id,'received_quantity'));
  532. $("#already_returned").text($("#"+grid).getCell(order_line_id,'returned_quantity'));
  533. $("#pp_quantity").text($("#"+grid).getCell(order_line_id,'pp_quantity'));
  534. $("#pp_value").text($("#"+grid).getCell(order_line_id,'pp_value'));
  535. //$("#already_received").text(100);
  536. $("#orderprice").text($("#"+grid).getCell(order_line_id,'expected_price'));
  537. $("#estimated_value").text($("#"+grid).getCell(order_line_id,'estimated_value'));
  538. $("#already_received_value").text($("#"+grid).getCell(order_line_id,'received_value'));
  539. $("#already_returned_value").text($("#"+grid).getCell(order_line_id,'returned_value'));
  540. },
  541. close: function(event,ui) {
  542. $("#itemForm").data('validator').resetForm();
  543. $('#itemForm')[0].reset();
  544. $("#estValue,#pp_quantity_receipt,#pp_amount_receipt").text("");
  545. $("#curPrice").text("");
  546. $("#status-message-li").empty();
  547. $("#received_quantity,#received_value,#returned_quantity,#returned_value").removeClass("ignore-fields");
  548. $("#received_quantity_cntnr,#received_value_cntnr,\n\
  549. #returned_quantity_cntnr,#returned_value_cntnr\n\
  550. ,#receiving_notes_cntnr,#returned_notes_cntnr").hide();
  551. $(".inithide").hide();
  552. $("#autogen-batch,#batch-help").show();
  553. $("#receiptOp").attr("disbled",false);
  554. $("#received_quantity,#received_value").rules("remove", "threshold");
  555. //try to destroy only if action is not edit as we are not using this during edit action
  556. if ($(this).data('grid_data').action!='edit'){
  557. $("#receiptOp").combobox("destroy");
  558. }
  559. }
  560. });
  561. $( "#dialog-form-cnbd" ).dialog({
  562. autoOpen: false,
  563. height: 'auto',
  564. width: '35%',
  565. position:[450,25],
  566. modal: true,
  567. buttons: {
  568. "Done": {
  569. id:"processItems",
  570. text:"Register",
  571. click:function() {
  572. var isvalid = $("#cnbdItemForm").valid();
  573. var grid = $(this).data('grid_data').grid_id;
  574. var order_line_id = $(this).data('grid_data').order_line_id;
  575. if (isvalid){
  576. $.ajax({
  577. url:'index.php/procurement/registerUndelivered',
  578. type:"POST",
  579. data:{
  580. order_line_id:order_line_id,
  581. cnbd_quantity:$("#cnbd_qty").val(),
  582. received_quantity:$("#"+grid).getCell(order_line_id,'received_quantity'),
  583. returned_quantity:$("#"+grid).getCell(order_line_id,'returned_quantity'),
  584. ordered_quantity:$("#"+grid).getCell(order_line_id,'quoted_quantity'),
  585. cnbd_notes:$("#cnbd_notes").val()
  586. },
  587. success:function (response){
  588. //console.log("grid " + grid);
  589. $("#"+grid).trigger("reloadGrid");
  590. }
  591. })
  592. $( this ).dialog( "close" );
  593. }
  594. }},
  595. Cancel: function() {
  596. $( this ).dialog( "close" );
  597. }
  598. },
  599. open: function(event,ui){
  600. var grid = $(this).data('grid_data').grid_id;
  601. var order_line_id = $(this).data('grid_data').order_line_id;
  602. var oper = $(this).data('grid_data').oper;
  603. console.log("cnbd" + $("#"+grid).getCell(order_line_id,'cnbd_quantity'));
  604. $("#order_line_ref_cnbd").val(order_line_id);
  605. $("#cnbd_qty").val($("#"+grid).getCell(order_line_id,'cnbd_quantity'));
  606. },
  607. close: function(event,ui) {
  608. $("#cnbdItemForm").data('validator').resetForm();
  609. $('#cnbdItemForm')[0].reset();
  610. $("#status-message-li-cnbd").empty();
  611. //try to destroy only if action is not edit as we are not using this during edit action
  612. if ($(this).data('grid_data').action!='edit'){
  613. $("#receiptOp").combobox("destroy");
  614. }
  615. }
  616. });
  617. $("#received_value, #returned_value").change(function (){
  618. var ordered_quantity = parseInt($("#quantity").text());
  619. //
  620. var already_received = parseInt($("#already_received").text());
  621. var already_returned = parseInt($("#already_returned").text());
  622. var cnbd_quantity = parseInt($("#cnbd_quantity").text());
  623. var received_quantity = parseInt($("#received_quantity").val());
  624. var returned_quantity = parseInt($("#returned_quantity").val());
  625. var total_received = already_received + already_returned + cnbd_quantity+ received_quantity + returned_quantity;
  626. if (action=='edit'){
  627. if (returned_quantity>0){
  628. total_received = total_received - $("#"+subgrid).getCell(receipt_line_id,'returned_quantity');
  629. }
  630. else if (received_quantity>0){
  631. total_received = total_received - $("#"+subgrid).getCell(receipt_line_id,'received_quantity');
  632. }
  633. }
  634. //
  635. //
  636. // if (total_received>=ordered_quantity){
  637. var action = $("#action").val();
  638. var oper = $("#oper").val();
  639. var subgrid=$("#subgrid_ref").val();
  640. var receipt_line_id = $("#receipt_line_ref").val();
  641. var received = parseFloat($("#received_value").val());
  642. var returned = parseFloat($("#returned_value").val());
  643. var already_received_value = parseFloat($("#already_received_value").text());
  644. var estimated = parseFloat($("#estimated_value").text());
  645. var total = already_received_value + received + returned;
  646. console.log("already_received val " + already_received_value + "received_val" + received + "returned_val" + returned);
  647. if (action=='edit'){
  648. total = total - $("#"+subgrid).getCell(receipt_line_id,'received_value')- $("#"+subgrid).getCell(receipt_line_id,'returned_value');
  649. }
  650. console.log(total);
  651. var unit_price = total/total_received;
  652. var order_init_price = parseFloat($("#orderprice").text());
  653. if (unit_price>order_init_price){
  654. $("#status-message-li").text("Warning!! Current Unit Price Of Received/Returned Goods > Ordered");
  655. }
  656. else if (unit_price<order_init_price){
  657. $("#status-message-li").text("Warning!! Current Unit Price Of Received/Returned Goods < Ordered");
  658. }
  659. else {
  660. $("#status-message-li").empty();
  661. }
  662. //}
  663. });
  664. $( "#dialog-confirm" ).dialog({
  665. resizable: false,
  666. height:200,
  667. width:500,
  668. modal: true,
  669. autoOpen:false,
  670. buttons: {
  671. "I Am Sure": function() {
  672. $.ajax({
  673. url:"index.php/procurement/markForInvoicing",
  674. type:"POST",
  675. data:{orderIds:myGrid.getGridParam('selarrrow')
  676. },
  677. success:function (response){
  678. emptyMessages();
  679. showSuccessMessage("The Selected Orders Are Now Ready To Invoice")
  680. myGrid.trigger("reloadGrid");
  681. },
  682. error:function (response){
  683. emptyMessages();
  684. showErrorMessage("The Selected Orders Could Not Be Processed Due To Internal Error")
  685. }
  686. });
  687. $( this ).dialog( "close" );
  688. },
  689. Cancel: function() {
  690. $( this ).dialog( "close" );
  691. }
  692. }
  693. });
  694. $("#autogen-batch").change(
  695. function (){
  696. if (this.checked){
  697. $("#batch_number").removeClass("required");
  698. }
  699. else {
  700. $("#batch_number").addClass("required");
  701. }
  702. }
  703. );
  704. });
  705. $(window).load(function(){
  706. var warningDialogs={one:true,none:true,status:true,exactlyone:true,morethanone:true};
  707. initDialogs(warningDialogs);
  708. initPaymentDialog();
  709. initCommentsForQuote();
  710. initAssignmentCommon();
  711. //initErrorDialogs({total:true,advance:true});
  712. //this is from payment dialog.The Select Inout is in dialogs.php
  713. });
  714. </script>
  715. </head>
  716. <body>
  717. <?php $this->load->view("common/menubar"); ?>
  718. <?php $this->load->view("common/dialogs"); ?>
  719. <div id="dialog-confirm" title="Warning">
  720. <p><span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>
  721. Once Marked As "Ready For Invoice" Signifies All The Items For This Order Are
  722. Dispatched By The Supplier And Marked As Received/Returned.
  723. # Of Returned And Received Quantities Can Be Edited ONLY If REJECTED In Due Approval Process But Total Quantity Should Always Match Ordered.Are You Sure?</p>
  724. </div>
  725. <div id ="dialog-form">
  726. <h1 id="formHeader">Purchase Order # <span id="orderRef"></span> Details</h1>
  727. <form id="quoteForm">
  728. <fieldset>
  729. <div id="tabs">
  730. <ul>
  731. <li id="baseLink"><a id="basic" href="<?php echo site_url('procurement/loadFormFragment') ?>">Basic Details</a></li>
  732. <li id="notesLink"><a id="notes" href="<?php echo site_url('procurement/loadNotesFragment') ?>">Notes</a></li>
  733. </ul>
  734. </div>
  735. </fieldset>
  736. </form>
  737. <div class="table-grid" style="padding-top:2em;">
  738. <h1 id="pkdheader_item">Line Items For This Purchase Order</h1>
  739. <table id="lineItems"><tr><td/></tr></table>
  740. <div id="pagerPk"></div>
  741. </div>
  742. <div class="table-grid" style="padding-top:2em;">
  743. <h1 id="pkdheader_advance">Manage Advance Payments</h1>
  744. <table id="payments"><tr><td/></tr></table>
  745. <div id="pagerPayments"></div>
  746. </div>
  747. </div>
  748. <div style="display: block;height: 100%;" class="shopifine-ui-dialog ui-dialog-extra-wide ui-widget ui-widget-content ui-corner-all" tabindex="-1" role="dialog" aria-labelledby="ui-dialog-title-dialog-form">
  749. <?php $this->load->view("common/message"); ?>
  750. <div class="table-grid">
  751. <h1 id="table header">Open Purchase Orders</h1>
  752. <table id="orders"><tr><td/></tr></table>
  753. <div id="pager"></div>
  754. </div>
  755. </div>
  756. <div id ="dialog-form-item">
  757. <div id ="status-message-li" class="ui-corner-all">
  758. </div>
  759. <h1 id="formHeaderItem">Receive Items <div id="neededdate" name ="neededdate" style="float:right;color:green;font-style: italic;text-decoration: underline" ></div></h1>
  760. <form id="itemForm">
  761. <fieldset style="border:1px solid #A6C9E2">
  762. <legend style="color: #2E6E9E;font-size: 110%;font-weight: bold;margin-left: 15px;">
  763. Order Line Related Info </legend>
  764. <div class="row">
  765. <div class="column">
  766. <div class="field">
  767. <div class="labeldiv">Products:</div>
  768. <div class="valuediv" id="product" name ="product" class="required"></div>
  769. </div>
  770. </div>
  771. <div class="column">
  772. <div class="field">
  773. <div class="labeldiv">Unit Price:</div>
  774. <div class="valuediv" id="orderprice" name="orderprice" ></div>
  775. </div>
  776. </div>
  777. </div>
  778. <div class="row">
  779. <div class="column">
  780. <div class="field">
  781. <div class="labeldiv">Ordered Quantity:</div>
  782. <div class="valuediv" name="quantity" id="quantity" ></div>
  783. </div>
  784. </div>
  785. <div class="column">
  786. <div class="field">
  787. <div class="labeldiv">Ordered Value :</div>
  788. <div class="valuediv" id="estimated_value" name="estimated_value" ></div>
  789. </div>
  790. </div>
  791. </div>
  792. <div class="row">
  793. <div class="column">
  794. <div class="field">
  795. <div class="labeldiv">Received Quantity Till Date:</div>
  796. <div class="valuediv" name="already_received" id="already_received" ></div>
  797. <div id ="return-help" class="ui-corner-all help-message-left">
  798. (Ready For Payment Subject To Appropriate Approval)
  799. </div>
  800. </div>
  801. </div>
  802. <div class="column">
  803. <div class="field">
  804. <div class="labeldiv">Received Value Till Date:</div>
  805. <div class="valuediv" id="already_received_value" name="already_received_value" ></div>
  806. <div id ="return-help" class="ui-corner-all help-message-left">
  807. (Payment Amount Subject To Appropriate Approval)
  808. </div>
  809. </div>
  810. </div>
  811. </div>
  812. <div class="row">
  813. <div class="column">
  814. <div class="field">
  815. <div class="labeldiv">Quantity In Part Payment Process:</div>
  816. <div class="valuediv" name="pp_quantity" id="pp_quantity" ></div>
  817. <div id ="pp_quantity-help" class="ui-corner-all help-message-left">
  818. (Quantities Getting Processed For Part Payment, Not Necessarily Already Paid For)
  819. </div>
  820. </div>
  821. </div>
  822. <div class="column">
  823. <div class="field">
  824. <div class="labeldiv">Amount In Part Payment Process:</div>
  825. <div class="valuediv" id="pp_value" name="pp_value" ></div>
  826. <div id ="pp_value-help" class="ui-corner-all help-message-left">
  827. (Amount Getting Processed For Part Payment, Not Necessarily Already Paid)
  828. </div>
  829. </div>
  830. </div>
  831. </div>
  832. <div class="row">
  833. <div class="column">
  834. <div class="field">
  835. <div class="labeldiv">Marked For Return :</div>
  836. <div class="valuediv" name="already_returned" id="already_returned" ></div>
  837. <div id ="return-help" class="ui-corner-all help-message-left">
  838. (Till Date)
  839. </div>
  840. </div>
  841. </div>
  842. <div class="column">
  843. <div class="field">
  844. <div class="labeldiv">Marked For Return Value :</div>
  845. <div class="valuediv" id="already_returned_value" name="already_returned_value"></div>
  846. <div id ="return-help" class="ui-corner-all help-message-left">
  847. (Till Date)
  848. </div>
  849. </div>
  850. </div>
  851. </div>
  852. <div class="row">
  853. <div class="column">
  854. <div class="field">
  855. <div class="labeldiv">Could Not Be Delivered :</div>
  856. <div class="valuediv" name="cnbd_quantity" id="cnbd_quantity" ></div>
  857. <div id ="cnbd-help" class="ui-corner-all help-message-left">
  858. (Quantity Which Supplier Could Not Deliver)
  859. </div>
  860. </div>
  861. </div>
  862. </div>
  863. </fieldset>
  864. <fieldset>
  865. <div class="row">
  866. <div class="column">
  867. <div class="field">
  868. <label for="receipt" class="labeldiv">Receipt #:</label>
  869. <select name="receiptOp" id ="receiptOp" class="comboBoxrequired">
  870. </select>
  871. </div>
  872. </div>
  873. <div class="column">
  874. <div class="field">
  875. <label for="batch_number" class="labeldiv">Batch Number:</label>
  876. <input id="batch_number" name="batch_number" class="required"/>
  877. <input id="autogen-batch" name="autogen-batch"type ="checkbox"/>
  878. <div id ="batch-help" class="ui-corner-all help-message-left">
  879. Select The Check Box to Auto Generate ONLY If There Is No Batch Number In Exceptional Circumstances
  880. </div>
  881. </div>
  882. </div>
  883. </div>
  884. <div class="row">
  885. <div class="column">

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