PageRenderTime 40ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/opensourcepos/application/views/utilities/add_packaging.php

https://bitbucket.org/jit_bec/shopifine
PHP | 570 lines | 479 code | 75 blank | 16 comment | 15 complexity | 8dde5f57e3e8b110f87b0d9fd526058c 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. <script>
  6. $(document).ready(function(){
  7. $.validator.addMethod('notZero', function(value, element) {
  8. return (value != '0');
  9. }, 'Please select an option.');
  10. $.validator.addMethod("greaterThanZero", function(value, element) {
  11. return this.optional(element) || (parseInt(value) > 0);
  12. }, "Denomination must be greater than zero");
  13. $("#packagingForm").validate({
  14. ignore: ":hidden",
  15. onfocusout: false,
  16. rules: {
  17. packageOptions: {
  18. notZero: true
  19. },
  20. uomOp: {
  21. notZero: true
  22. },
  23. denomIp: {
  24. number:true,
  25. greaterThanZero:true
  26. }
  27. }
  28. });
  29. $("#packagingFormNew").validate({
  30. ignore: ":hidden",
  31. onfocusout: false,
  32. rules: {
  33. packagingFormNew: {
  34. notZero: true
  35. }
  36. ,
  37. denomIp: {
  38. number:true,
  39. greaterThanZero:true
  40. }
  41. }
  42. });
  43. });
  44. </script>
  45. <script type="text/javascript">
  46. $(function() {
  47. $("#tabs").tabs();
  48. $( "#dialog-form" ).dialog({
  49. autoOpen: false,
  50. height: 200,
  51. width: 300,
  52. modal: true,
  53. buttons: {
  54. "Create package type": function() {
  55. var value = $("#nameType").val();
  56. if ( value!= ""){
  57. $("#typeOp").append("<OPTION VALUE=\"" + value + "\">" + value);
  58. $( this ).dialog( "close" );
  59. }
  60. },
  61. Cancel: function() {
  62. $( this ).dialog( "close" );
  63. }
  64. },
  65. close: function() {
  66. //allFields.val( "" ).removeClass( "ui-state-error" );
  67. }
  68. });
  69. $( "#newTypeDefLink" )
  70. .click(function() {
  71. $( "#dialog-form" ).dialog( "open" );
  72. });
  73. $("#existingPkgBtn").click(function(){
  74. var bValid = $("#packagingForm").valid();
  75. if (bValid ){
  76. var packageOptions = $("#packageOptions").val();
  77. var packtype = $("#packtype").val();
  78. var uomOp = $("#uomOpTabOne").val();
  79. var sizeOp = $("#sizeOpTabOne").val();
  80. var uomIp = $("#uomIpTabOne").val();
  81. var denomIp = $("#denomIpTabOne").val();
  82. $.ajax({url:"index.php/utilities/createPackagingUnits",
  83. type:"POST",
  84. data:{packageOptions:packageOptions,packtype:packtype,uomOp:uomOp,sizeOp:sizeOp,uomIp:uomIp,denomIp:denomIp},
  85. success:function(response)
  86. {
  87. //myGrid.trigger("reloadGrid");
  88. console.log("success");
  89. }
  90. })
  91. }
  92. });
  93. $("#newPkgBtn").click(function(){
  94. var bValid = $("#packagingFormNew").valid();
  95. if (bValid ){
  96. var namePkg = $("#namePkg").val();
  97. var desc = $("#desc").val();
  98. var typeOp = $("#typeOp").val();
  99. var uomOp = $("#uomOpTabTwo").val();
  100. var sizeOp = $("#uomOpTabTwo").val();
  101. var uomIp = $("#uomOpTabTwo").val();
  102. var denomIp = $("#uomOpTabTwo").val();
  103. $.ajax({url:"index.php/utilities/createPackagingUnits",
  104. type:"POST",
  105. data:{namePkg:namePkg,desc:desc,uomOp:uomOp,typeOp:typeOp,sizeOp:sizeOp,uomIp:uomIp,denomIp:denomIp},
  106. success:function(response)
  107. {
  108. //myGrid.trigger("reloadGrid");
  109. console.log("success");
  110. }
  111. })
  112. }
  113. });
  114. //package grid
  115. function selectValueCheck(value,colname){
  116. //var success = /^\d{5}$/.test(value);
  117. if (value==0 || value =="" || value ==null)
  118. return [false,"Invalid packageType. Please enter Package Type "];
  119. else
  120. return [true,""];
  121. }
  122. var myGrid = $("#packages"),lastsel2;
  123. var editparameters = {
  124. "keys" : true,
  125. "oneditfunc" : null,
  126. "successfunc" : function(){
  127. myGrid.trigger("reloadGrid");
  128. return true;
  129. },
  130. "aftersavefunc" : null,
  131. "errorfunc": null,
  132. "afterrestorefunc" : null,
  133. "restoreAfterError" : true,
  134. "mtype" : "POST"
  135. };
  136. myGrid.jqGrid({
  137. url:'index.php/utilities/populatePackageInGrid',
  138. datatype: 'json',
  139. mtype: 'GET',
  140. colNames:['Package Name','Description','Package Type'],
  141. colModel :[
  142. {name:'package_name', index:'package_name', width:80, align:'right',editable:false},
  143. {name:'package_description', index:'package_description', width:140, align:'right',editable:true,editoptions:{size:"20",maxlength:"30"}},
  144. {name:'package_type',index:'package_type', width:80, align:'right',editrules:{custom:true,custom_func:selectValueCheck},editable:true,edittype:"select",editoptions:{dataUrl:"index.php/utilities/populatePackageTypesEdit",buildSelect:function(response)
  145. {
  146. var select = "<select name=" + "pkgOpEdit" + "id =" +"pkgOpEdit" +">" +
  147. "<option value=" + ">Select one..." + response + "</select>";
  148. return select;
  149. }}}
  150. ],
  151. pager: '#pager',
  152. rowNum:10,
  153. rowList:[5,10,20],
  154. sortname: 'package_id',
  155. sortorder: 'desc',
  156. viewrecords: true,
  157. gridview: true,
  158. ignoreCase:true,
  159. rownumbers:true,
  160. height:'auto',
  161. width:680,
  162. caption: 'Packaging',
  163. jsonReader : {
  164. root:"packagingdata",
  165. page: "page",
  166. total: "total",
  167. records: "records",
  168. cell: "dprow",
  169. id: "package_id"
  170. },
  171. onSelectRow: function(id){if(id && id!==lastsel2){
  172. myGrid.restoreRow(lastsel2);
  173. myGrid.editRow(id,editparameters);
  174. lastsel2=id;
  175. }
  176. }
  177. ,editurl:'index.php/utilities/updatePackages',
  178. subGrid:true,
  179. subGridRowExpanded: function(subgrid_id, row_id) {
  180. // we pass two parameters
  181. // subgrid_id is a id of the div tag created whitin a table data
  182. // the id of this elemenet is a combination of the "sg_" + id of the row
  183. // the row_id is the id of the row
  184. // If we wan to pass additinal parameters to the url we can use
  185. // a method getRowData(row_id) - which returns associative array in type name-value
  186. // here we can easy construct the flowing
  187. var subgrid_table_id, pager_id;
  188. subgrid_table_id = subgrid_id+"_t";
  189. pager_id = "p_"+subgrid_table_id;
  190. $("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' class='scroll'></table><div id='"+pager_id+"' class='scroll'></div>");
  191. jQuery("#"+subgrid_table_id).jqGrid({
  192. url:'index.php/utilities/populateUomInSubgrid?q=2&id='+row_id,
  193. datatype: 'json',
  194. colNames: ['Denomination','Unit'],
  195. colModel: [
  196. {name:"denom",index:"denom",width:80},
  197. {name:"uom",index:"uom",width:130},
  198. ],
  199. rowNum:20,
  200. pager: pager_id,
  201. sortname: 'uom',
  202. sortorder: "asc",
  203. height: '100%',
  204. jsonReader : {
  205. root:"uomdata",
  206. page: "page",
  207. total: "total",
  208. records: "records",
  209. cell: "dprow",
  210. id: "id"
  211. }
  212. });
  213. jQuery("#"+subgrid_table_id).jqGrid('navGrid',"#"+pager_id,{edit:false,add:false,del:false,search:false})
  214. },
  215. subGridRowColapsed: function(subgrid_id, row_id) {
  216. // this function is called before removing the data
  217. //var subgrid_table_id;
  218. //subgrid_table_id = subgrid_id+"_t";
  219. //jQuery("#"+subgrid_table_id).remove();
  220. }
  221. }).navGrid("#pager",{edit:false,add:false,del:false,search:false},{height:280,reloadAfterSubmit:false,closeAfterEdit:true,recreateForm:true,checkOnSubmit:true},{},{},{},{});
  222. myGrid.jqGrid('filterToolbar', {stringResult: true, searchOnEnter: true, defaultSearch : "cn"});
  223. });
  224. </script>
  225. <style>
  226. .ui-widget-header {height:23.5px;}
  227. </style>
  228. </head>
  229. <body onload="init()">
  230. <?php $this->load->view("common/menubar"); ?>
  231. <div style="display: block;height: auto;" class="shopifine-ui-dialog ui-widget ui-widget-content ui-corner-all" tabindex="-1" role="dialog" aria-labelledby="ui-dialog-title-dialog-form">
  232. <div class="form-container tab-container">
  233. <div id="tabs">
  234. <ul>
  235. <li><a href="#tabs-1">Existing Package</a></li>
  236. <li><a href="#tabs-2">New Package</a></li>
  237. </ul>
  238. <div></div>
  239. <div id="tabs-1" class="tab">
  240. <form id="packagingForm">
  241. <div class="row single-column-row">
  242. <div id="packDiv">
  243. <div class="column single-column">
  244. <label for="packageOptions">Available Package Types:</label>
  245. <select name="packageOptions" id ="packageOptions" class="opt required">
  246. <option value=0>Choose
  247. <?=$options?>
  248. </select>
  249. </div>
  250. <div class="column single-column" style="display:none">
  251. <div id="typeCon" class="field">
  252. <label for="packtype">Package Type: </label>
  253. <input id="packtype" name ="packtype" type="text"/>
  254. </div>
  255. </div>
  256. </div>
  257. </div>
  258. <div class="row single-column-row" >
  259. <div id="existingUOMContainerTabOne">
  260. <div class="column single-column">
  261. <div class="field">
  262. <label for="uomOpTabOne">Choose Unit</label>
  263. <select name="uomOp" id="uomOpTabOne">
  264. <option value=0>Choose
  265. <?=$uomOptions?>
  266. </select>
  267. </div>
  268. </div>
  269. <div class="column single-column">
  270. <div class="field">
  271. <label for="sizeOpTabOne">Choose Size</label>
  272. <select name="sizeOp" id="sizeOpTabOne">
  273. </select>
  274. </div>
  275. </div>
  276. </div>
  277. </div>
  278. <div class="row single-column-row" style="display:none">
  279. <div id="newUOMContainerTabOne">
  280. <div class="column single-column">
  281. <div class="field">
  282. <label for="uomIpTabOne">Define Unit : </label>
  283. <input id="uomIpTabOne" name ="uomIp" type="text" class="required"/>
  284. </div>
  285. </div>
  286. <div class="column single-column">
  287. <div class="field">
  288. <label>Denomination : </label>
  289. <input id ="denomIpTabOne" name ="denomIp" type="text" class="required"/>
  290. </div>
  291. </div>
  292. </div>
  293. </div>
  294. <div class="row single-column-row">
  295. <div class="column single-column" id="newMeasurementTypeLinkContainerTabOne">
  296. <h6> Didn't Find The Right Unit of Measurement? </h6>
  297. <a id="newMeasurementTypeLinkTabOne" href="#">Define A New Measurement Unit</a>
  298. </div>
  299. </div>
  300. <div class="row single-column-row" style="display:none">
  301. <div class="column single-column" id="existingMeasurementTypeLinkContainerTabOne">
  302. <h6> Want to check Existing Measurement Types </h6>
  303. <a id="existMeasurementTypeLinkTabOne" href="#">Show Existing Measurement Types</a>
  304. </div>
  305. </div>
  306. </form>
  307. <div class="ui-dialog-buttonpane">
  308. <div class="shopifine-ui-dialog-buttonset">
  309. <button id="existingPkgBtn" type="button" class="shopifine-ui-button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false">
  310. <span class="ui-button-text">Create Package</span>
  311. </div>
  312. </div>
  313. </div>
  314. <div id="tabs-2" class="tab">
  315. <form id="packagingFormNew">
  316. <div class="row single-column-row">
  317. <div class="packContainer">
  318. <div class="column single-column">
  319. <div class="field">
  320. <label for="namePkg">Name of Packaging:</label>
  321. <input id="namePkg" name ="namePkg" type="text" class="required"/>
  322. </div>
  323. </div>
  324. <div class="column single-column">
  325. <div class="field">
  326. <label for="desc">Description:</label>
  327. <input id="desc" name ="desc" type="text"/>
  328. </div>
  329. </div>
  330. </div>
  331. </div>
  332. <div class="row single-column-row">
  333. <div id ="existTypeContainer" class="packContainer">
  334. <div class="column single-column">
  335. <div class="field">
  336. <label for="typeOp">Type :</label>
  337. <select name="typeOp" id="typeOp" class="notZero">
  338. <option value=0>Choose
  339. <?=$typeOptions?>
  340. </select>
  341. <a id ="newTypeDefLink" title="Add new type" class="shopifine-ui-icon-link">
  342. <span class="ui-icon ui-icon-plus"></span>
  343. </a>
  344. </div>
  345. </div>
  346. </div>
  347. </div>
  348. <div class="row single-column-row" >
  349. <div id="existingUOMContainerTabTwo">
  350. <div class="column single-column">
  351. <div class="field">
  352. <label for="uomOpTabTwo">Choose Unit</label>
  353. <select name="uomOp" id="uomOpTabTwo">
  354. <option value=0>Choose
  355. <?=$uomOptions?>
  356. </select>
  357. </div>
  358. </div>
  359. <div class="column single-column">
  360. <div class="field">
  361. <label for="sizeOpTabTwo">Choose Size</label>
  362. <select name="sizeOp" id="sizeOpTabTwo">
  363. </select>
  364. </div>
  365. </div>
  366. </div>
  367. </div>
  368. <div class="row single-column-row" style="display:none">
  369. <div id="newUOMContainerTabTwo">
  370. <div class="column single-column">
  371. <div class="field">
  372. <label for="uomIpTabTwo">Define Unit : </label>
  373. <input id="uomIpTabTwo" name ="uomIp" type="text" class="required"/>
  374. </div>
  375. </div>
  376. <div class="column single-column">
  377. <div class="field">
  378. <label for="denomIpTabtwo">Denomination : </label>
  379. <input id ="denomIpTabtwo" name ="denomIp" type="text" class="required"/>
  380. </div>
  381. </div>
  382. </div>
  383. </div>
  384. <div class="row single-column-row">
  385. <div class="column single-column" id="newMeasurementTypeLinkContainerTabTwo">
  386. <h6> Didn't Find The Right Unit of Measurement? </h6>
  387. <a id="newMeasurementTypeLinkTabTwo" href="#">Define A New Measurement Unit</a>
  388. </div>
  389. </div>
  390. <div class="row single-column-row" style="display:none">
  391. <div class="column single-column" id="existingMeasurementTypeLinkContainerTabTwo">
  392. <h6> Want to check Existing Measurement Types </h6>
  393. <a id="existMeasurementTypeLinkTabTwo" href="#">Show Existing Measurement Types</a>
  394. </div>
  395. </div>
  396. </form>
  397. <div class="ui-dialog-buttonpane">
  398. <div class="shopifine-ui-dialog-buttonset">
  399. <button id="newPkgBtn" type="button" class="shopifine-ui-button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false">
  400. <span class="ui-button-text">Create Package</span>
  401. </div>
  402. </div>
  403. </div>
  404. </div>
  405. </div>
  406. <div class="table-grid">
  407. <h1 id="table header">Packages</h1>
  408. <table id="packages"><tr><td/></tr></table>
  409. <div id="pager"></div>
  410. </div>
  411. </div>
  412. <div id="dialog-form" title="Create New Type">
  413. <form>
  414. <label for="nameType">Name of Type: </label>
  415. <input type="text" name="nameType" id="nameType" class="text ui-widget-content ui-corner-all" />
  416. </form>
  417. </div>
  418. <?php $this->load->view("partial/footer"); ?>
  419. </body>
  420. </html>
  421. <script type="text/javascript">
  422. function init(){
  423. var options = '<?php echo $options ?>';
  424. if (!options){
  425. $("#packDiv").hide();
  426. }
  427. }
  428. </script>
  429. <script>
  430. $("#existMeasurementTypeLinkTabOne").click (function(event){
  431. event.preventDefault();
  432. if ($("#existingUOMContainerTabOne").parent().is(":hidden")){
  433. $("#existingUOMContainerTabOne").parent().show();
  434. $("#newUOMContainerTabOne").parent().hide();
  435. $("#newMeasurementTypeLinkContainerTabOne").parent().show();
  436. $("#existingMeasurementTypeLinkContainerTabOne").parent().hide()
  437. }
  438. });
  439. $("#newMeasurementTypeLinkTabOne").click (function(event){
  440. event.preventDefault();
  441. if ($("#newUOMContainerTabOne").parent().is(":hidden")){
  442. $("#newUOMContainerTabOne").parent().show();
  443. $("#existingUOMContainerTabOne").parent().hide();
  444. $("#existingMeasurementTypeLinkContainerTabOne").parent().show();
  445. $("#newMeasurementTypeLinkContainerTabOne").parent().hide();
  446. }
  447. });
  448. $(".opt").change(function(event){
  449. event.preventDefault();
  450. var optionsMap =jQuery.parseJSON('<?php echo $packageMap ?>');
  451. var type = optionsMap[$(this).val()];
  452. $("#typeCon").parent().show();
  453. $("#packtype").val(type);
  454. $("#packtype").prop('disabled',true);
  455. });
  456. $("#uomOpTabOne").change(function(){
  457. var val = $(this).val();
  458. $.ajax({type:"post",
  459. url:"index.php/utilities/loadSize/"+val,
  460. success: function(sizeHtml){
  461. $("#sizeOpTabOne").children().remove();
  462. $("#sizeOpTabOne").append(sizeHtml);
  463. }});
  464. });
  465. $("#existMeasurementTypeLinkTabTwo").click (function(event){
  466. event.preventDefault();
  467. if ($("#existingUOMContainerTabTwo").parent().is(":hidden")){
  468. $("#existingUOMContainerTabTwo").parent().show();
  469. $("#newUOMContainerTabTwo").parent().hide();
  470. $("#newMeasurementTypeLinkContainerTabTwo").parent().show();
  471. $("#existingMeasurementTypeLinkContainerTabTwo").parent().hide()
  472. }
  473. });
  474. $("#newMeasurementTypeLinkTabTwo").click (function(event){
  475. event.preventDefault();
  476. if ($("#newUOMContainerTabTwo").parent().is(":hidden")){
  477. $("#newUOMContainerTabTwo").parent().show();
  478. $("#existingUOMContainerTabTwo").parent().hide();
  479. $("#existingMeasurementTypeLinkContainerTabTwo").parent().show();
  480. $("#newMeasurementTypeLinkContainerTabTwo").parent().hide();
  481. }
  482. });
  483. </script>