fadlyshafa

Untitled

Jun 19th, 2020
69
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <script>
  2.  
  3. var yi = 0; /* Set Global Variable i */
  4. var j = 0; /* Set Global Variable i */
  5. var k = 0; /* Set Global Variable i */
  6. var product_data = new Array();
  7. var additional_data = new Array();
  8. var service_data = new Array();
  9.  
  10. function storedatatemp()
  11. {
  12. var container = document.getElementById("kurscontainer");
  13. var children = container.childNodes;
  14.  
  15. var e = document.getElementById("terminnumber");
  16. var number2 = e.options[e.selectedIndex].value;
  17. var container2 = document.getElementById("termincontainer");
  18.  
  19.  
  20. var iyv = 0;
  21. var iyx = 0;
  22. var iyy = 0;
  23. var iyz = 0;
  24. var iya = 0;
  25. var iyb = 0;
  26.  
  27. for (ik = 0; ik < number2; ik++)
  28. {
  29. var a = document.getElementsByName("terminvalue[]"), i;
  30. localStorage.removeItem("terminvalue" + ik);
  31. localStorage.setItem("terminvalue" + ik, a[ik].value);
  32. var b = document.getElementsByName("tanggalterminvalue[]"), i;
  33. localStorage.removeItem("tanggalterminvalue" + ik);
  34. localStorage.setItem("tanggalterminvalue" + ik, b[ik].value);
  35. var c = document.getElementsByName("terminket[]"), i;
  36. localStorage.removeItem("terminket" + ik);
  37. localStorage.setItem("terminket" + ik, c[ik].value);
  38. }
  39.  
  40.  
  41. for (var im = 0; im < children.length; im++)
  42. {
  43.  
  44. if (children[im].tagName == "INPUT" && children[im].name == 'kursdatavalue[]')
  45. {
  46. var v = document.getElementsByName("kursdatavalue[]"), i;
  47. localStorage.removeItem("kursdatavalue" + iyv);
  48. localStorage.setItem("kursdatavalue" + iyv, v[iyv].value);
  49. iyv++;
  50. }
  51.  
  52.  
  53. }
  54.  
  55. }
  56.  
  57. $(document).ready(function () {
  58. $('#customer').val(<?php echo $data[0]->customer_id; ?>).trigger('change');
  59.  
  60. $('input[name=paymenterms][value=<?php echo $data[0]->paid_by; ?>]').prop('checked', true).click();
  61. if ('termin' == '<?php echo $data[0]->paid_by; ?>') {
  62.  
  63. var e = document.getElementById("terminnumber");
  64. var number = e.options[e.selectedIndex].value;
  65. getfromaddFields = number;
  66. var container = document.getElementById("termincontainer");
  67. while (container.hasChildNodes())
  68. {
  69. container.removeChild(container.lastChild);
  70. }
  71. $("#kursdata").val(<?php echo $data[0]->kurs_id; ?>).trigger('change');
  72.  
  73. var mode_of_transport = $("#mode_of_transport").val();
  74. var transporter_name = $("#transporter_name").val();
  75. var transporter_code = $("#transporter_code").val();
  76. var vehicle_regn_no = $("#vehicle_regn_no").val();
  77. if (mode_of_transport || transporter_name || vehicle_regn_no) {
  78. $("#transporter").prop('checked', false).click();
  79. }
  80.  
  81. var container = container.appendChild(document.createElement("table"));
  82. container.className = "table table-bordered";
  83. var container = container.appendChild(document.createElement("tbody"));
  84. var artermin = <?php echo json_encode($termin); ?>;
  85. for (i = 0; i < number; i++)
  86. {
  87. var containertr = container.appendChild(document.createElement("tr"));
  88. var containertd = containertr.appendChild(document.createElement("td"));
  89. z = document.createElement('span');
  90. z.innerHTML = "Termin Ke % " + (i + 1) + " :";
  91. z.className = "text-danger";
  92. containertd.appendChild(z);
  93. var input = document.createElement("input");
  94. input.type = "number";
  95. input.name = "terminvalue[" + (i + 1) + "]";
  96. input.id = "terminvalue[" + (i + 1)+"]";
  97. input.className = "getterminvalue";
  98. input.value = artermin[i].persen;
  99. input.min = 1;
  100. input.max = 100;
  101. input.maxlength = "2";
  102. // input.onkeypress = isNumber_max_100;
  103. var containertd = containertr.appendChild(document.createElement("td"));
  104. containertd.appendChild(input);
  105. z = document.createElement('span');
  106. z.className = "text-primary";
  107. z.innerHTML = ' Ket: ';
  108. var containertd = containertr.appendChild(document.createElement("td"));
  109. containertd.appendChild(z);
  110. var input2 = document.createElement("input");
  111. input2.type = "text";
  112. input2.name = "terminket[" + (i + 1) + "]";
  113. input2.id = "terminket[" + (i + 1)+"]";
  114. input2.className = "getterminket";
  115. input2.value = artermin[i].keterangan;
  116. var containertd = containertr.appendChild(document.createElement("td"));
  117. containertd.appendChild(input2);
  118. }
  119. }
  120.  
  121. var counter = 1;
  122. var aritem = <?php echo json_encode($items); ?>;
  123. console.log(aritem);
  124. for (itemrec = 0; itemrec < aritem.length; itemrec++) {
  125. (function (counter) {
  126. var getnewRow;
  127. var quotationid = aritem[itemrec].id;
  128. var itemquantity = aritem[itemrec].qty;
  129. var itemprice = aritem[itemrec].qprice;
  130. var itemdiscountid = aritem[itemrec].discount_id;
  131. var desc = aritem[itemrec].serial_no;
  132. var itemdiscountvalue = aritem[itemrec].discount_value;
  133. var itemdiscount = aritem[itemrec].discount;
  134. var itemgross_total = aritem[itemrec].gross_total;
  135. var product_id = aritem[itemrec].product_id;
  136. var flag = 0;
  137. $('#err_product').text('');
  138. $.ajax({
  139. async : false,
  140. url: "<?php echo base_url('sales/getProduct_old') ?>/" + product_id,
  141. type: "GET",
  142. dataType: "JSON",
  143. data: {
  144. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  145. },
  146. success: function (data) {
  147. $("table.product_table").find('input[name^="product_id"]').each(function () {
  148. // if (data[0].product_id == +$(this).val()) {
  149. // flag = 1;
  150. // }
  151. });
  152. if (flag == 0) {
  153. var id = data[0].product_id;
  154. var price = itemprice;
  155. var code = data[0].code;
  156. var name = data[0].name;
  157. var product_bonus = data[0].product_bonus;
  158. var item_namebyp = data[0].item_namebyp;
  159. var product = {"product_id": id,
  160. "price": price
  161. };
  162.  
  163. // discount
  164. //de
  165.  
  166. product_data[yi] = product;
  167. length = product_data.length - 1;
  168.  
  169. var select_discount = "";
  170. select_discount += '<div class="form-group">';
  171. select_discount += '<select class="form-control select2" id="item_discount" name="item_discount" style="width: 100%;">';
  172. select_discount += '<option value="">Select</option>';
  173. var selected = '';
  174. for (a = 0; a < data['discount'].length; a++) {
  175. if (data['discount'][a].discount_id == itemdiscountid) {
  176. selected = 'selected ';
  177. } else {
  178. selected = '';
  179. }
  180. select_discount += '<option ' + selected + 'value="' + data['discount'][a].discount_id + '">' + data['discount'][a].discount_name + '(' + data['discount'][a].discount_value + '%)' + '</option>';
  181. }
  182. select_discount += '</select></div>';
  183.  
  184. var select_bonus = "";
  185. select_bonus += '<div class="form-group">';
  186. select_bonus += '<select class="form-control select2" id="item_discount" name="item_discount" style="width: 100%;">';
  187. select_bonus += '<option value="">Select</option>';
  188. for (a = 0; a < data['bonus1'].length; a++) {
  189. select_bonus += '<option ' + selected + 'value="' + data['bonus1'][a].product + '">' + data['bonus1'][a].product_bonus + '</option>';
  190. }
  191.  
  192. select_bonus += '</select></div>';
  193.  
  194. var newRow = $("<tr id='tr" + yi + "'>");
  195. var cols = "";
  196. cols += "<td><a class='deleteRow'> <img src='<?php echo base_url(); ?>assets/images/bin3.png' /> </a><input type='hidden' name='id' name='id' value=" + yi + "><input type='hidden' name='product_id' name='product_id' value=" + id + "></td>";
  197. cols += "<td>" + code + "</td>";
  198. cols += "<td>"
  199. + "<input type='hidden' value='" + data[0].name + "' name='nameProduct" + counter + "' id='nameProduct" + counter + "'>"
  200. + "<input type='hidden' value='" + data[0].product_id + "' name='idProduct" + counter + "' id='idProduct" + counter + "'>"
  201. + name + "</td>";
  202.  
  203.  
  204. // total
  205. // "<input type='hidden' value='" + data[0].name + "' name='penanda[]' id=''>";
  206.  
  207. cols += "<td><input type='hidden' id='discount_value' name='discount_value'><input type='hidden' id='hidden_discount' name='hidden_discount'>" + select_bonus + "<input type='hidden' value='" + id + "' name='idProducts[]' id='idProduct[]'><input type='hidden' class='form-control text-center' value='" + itemquantity + "' data-rule='quantity' name='quantitys[]' id='qty[]' min='1' max='" + itemquantity + "'><input step='0.01' type='hidden' class='form-control text-right' value='" + price + "' name='prices[]' id='price[]'></td><input type='hidden' class='form-control text-right' style='' value='" + itemgross_total + "' name='totals[]' id='total[]'>";
  208.  
  209. // tambahan
  210. // cols += "";
  211.  
  212. // cols += "";
  213.  
  214. // cols += "";
  215.  
  216. // cols += "";
  217.  
  218. // cols += "<input type='hidden' id='hidden_discount' name='hidden_discount' value='"+data['discount'][a].discount_id+"'>";
  219.  
  220. cols += "<input value='" + itemdiscountvalue + "' type='hidden' id='discount_value' name='discount_values[]'>";
  221. // end tambahan
  222.  
  223. cols += "<td><input type='text' name='description" + counter + "' id='description"+ counter + "' value='" + desc + "' class='form-control'></td>";
  224. cols += "<td>"
  225. + "<input type='number' class='form-control text-center' value='" + itemquantity + "' data-rule='quantity' name='qty" + counter + "' id='qty" + counter + "' min='1' max='" + itemquantity + "'>"
  226. + "</td>";
  227. cols += "<td>" + data[0].quantity
  228. + "<input type='hidden' name='available_quantity" + counter + "' id='available_quantity" + counter + "' value='" + data[0].quantity + "'>"
  229. + "</td>";
  230. cols += "<td>" + data[0].unit + "</td>";
  231. cols += "<td align='right'>"
  232. + "<span>"
  233. + "<input step='0.01' type='text' class='form-control text-right' value='" + price + "' name='price" + counter + "' id='price" + counter + "'>"
  234. + "</span>"
  235. + "</td>";
  236. cols += "<td>"
  237. + "<span id='sub_total'>"
  238. + "<input type='text' class='form-control text-right subtotal' style='' value='" + itemgross_total + "' name='linetotal" + counter + "' id='linetotal" + counter + "' readonly>"
  239. + "</span>"
  240. + "</td>";
  241. cols += '<td><input value="' + itemdiscountvalue + '" type="hidden" id="discount_value" name="discount_value"><input type="hidden" id="hidden_discount" name="hidden_discount">' + select_discount + '</td>';
  242.  
  243. cols += '<td><input type="text" class="form-control text-right salestotal" id="product_total" name="product_total" readonly>';
  244.  
  245.  
  246.  
  247. cols += '</td>';
  248.  
  249. cols += "</tr>";
  250.  
  251.  
  252.  
  253. newRow.append(cols);
  254. getnewRow = newRow;
  255. $("table.product_table").append(newRow);
  256. calculateRow($('tr#tr' + yi));
  257. $.calculateDiscount($('tr#tr' + yi));
  258. $.calculateGrandTotal();
  259. counter++;
  260. var table_data = JSON.stringify(product_data);
  261. $('#table_data').val(table_data);
  262. yi++;
  263. } else {
  264. $('#err_product').text('Product Already Added').animate({opacity: '0.0'}, 2000).animate({opacity: '0.0'}, 1000).animate({opacity: '1.0'}, 2000);
  265. }
  266. }
  267. });
  268. })(itemrec);
  269. }
  270.  
  271. var aritem = <?php echo json_encode($additional); ?>;
  272. for (itemrec = 0; itemrec < aritem.length; itemrec++) {
  273. (function (counter) {
  274. var getnewRow;
  275. var quotationid = aritem[itemrec].id;
  276. var itemquantity = aritem[itemrec].quantity;
  277. var itemprice = aritem[itemrec].qprice;
  278. var itemdiscountid = aritem[itemrec].discount_id;
  279. var desc = aritem[itemrec].desc;
  280. var itemdiscountvalue = aritem[itemrec].discount_value;
  281. var itemdiscount = aritem[itemrec].discount;
  282.  
  283. var itemgross_total = aritem[itemrec].gross_total;
  284. var product_id = aritem[itemrec].product_id;
  285. var flag = 0;
  286. $('#err_product').text('');
  287. $.ajax({
  288. async : false,
  289. url: "<?php echo base_url('sales/getProduct') ?>/" + product_id,
  290. type: "GET",
  291. dataType: "JSON",
  292. data: {
  293. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  294. },
  295. success: function (data) {
  296. $("table.additional_table").find('input[name^="additional_id"]').each(function () {
  297. // if (data[0].product_id == +$(this).val()) {
  298. // flag = 1;
  299. // }
  300. });
  301. if (flag == 0) {
  302. var id = data[0].product_id;
  303. var price = itemprice;
  304. var code = data[0].code;
  305. var name = data[0].name;
  306. var item_namebyp = data[0].item_namebyp;
  307.  
  308. var product = {"additional_id": id,
  309. "price": price
  310. };
  311. additional_data[j] = product;
  312. length = additional_data.length - 1;
  313. var select_discount = "";
  314. select_discount += '<div class="form-group">';
  315. select_discount += '<select class="form-control select2" id="item_discount" name="item_discount" style="width: 100%;">';
  316. select_discount += '<option value="">Select</option>';
  317. var selected = '';
  318. for (a = 0; a < data['discount'].length; a++) {
  319. if (data['discount'][a].discount_id == itemdiscountid) {
  320. selected = 'selected ';
  321. } else {
  322. selected = '';
  323. }
  324. select_discount += '<option ' + selected + 'value="' + data['discount'][a].discount_id + '">' + data['discount'][a].discount_name + '(' + data['discount'][a].discount_value + '%)' + '</option>';
  325. }
  326. select_discount += '</select></div>';
  327.  
  328. var newRow = $("<tr id='tra" + j + "'>");
  329. var cols = "";
  330. cols += "<td><a class='deleteRow'> <img src='<?php echo base_url(); ?>assets/images/bin3.png' /> </a><input type='hidden' name='id' name='id' value=" + j + "><input type='hidden' name='product_id' name='product_id' value=" + id + "></td>";
  331. cols += "<td>" + code + "</td>";
  332. cols += "<td>"
  333. + "<input type='hidden' value='" + data[0].name + "' name='nameProduct" + counter + "' id='nameProduct" + counter + "'>"
  334. + "<input type='hidden' value='" + data[0].product_id + "' name='idProduct" + counter + "' id='idProduct" + counter + "'>"
  335. + name + "</td>";
  336. cols += "<td>" + item_namebyp + "</td>";
  337. cols += "<td><input type='text' name='description" + counter + "' id='description"+ counter + "' value='" + desc + "' class='form-control'></td>";
  338. cols += "<td>"
  339. + "<input type='number' class='form-control text-center' value='" + itemquantity + "' data-rule='quantity' name='qty" + counter + "' id='qty" + counter + "' min='1' max='" + itemquantity + "'>"
  340. + "</td>";
  341. cols += "<td>" + data[0].quantity
  342. + "<input type='hidden' name='available_quantity" + counter + "' id='available_quantity" + counter + "' value='" + data[0].quantity + "'>"
  343. + "</td>";
  344. cols += "<td>" + data[0].unit + "</td>";
  345. cols += "<td align='right'>"
  346. + "<span>"
  347. + "<input step='0.01' type='text' class='form-control text-right' value='" + price + "' name='price" + counter + "' id='price" + counter + "'>"
  348. + "</span>"
  349. + "</td>";
  350. cols += "<td>"
  351. + "<span id='sub_total'>"
  352. + "<input type='text' class='form-control text-right' style='' value='" + itemgross_total + "' name='linetotal" + counter + "' id='linetotal" + counter + "' readonly>"
  353. + "</span>"
  354. + "</td>";
  355. cols += '<td><input value="' + itemdiscountvalue + '" type="hidden" id="discount_value" name="discount_value"><input type="hidden" id="hidden_discount" name="hidden_discount">' + select_discount + '</td>';
  356.  
  357. cols += '<td><input type="text" class="form-control text-right" id="product_total" name="product_total" readonly></td>';
  358. cols += "</tr>";
  359.  
  360. newRow.append(cols);
  361. getnewRow = newRow;
  362. $("table.additional_table").append(newRow);
  363. calculateRowAdditional($('tr#tra' + j));
  364. $.calculateDiscountAdditional($('tr#tra' + j));
  365. $.calculateGrandTotal();
  366. counter++;
  367. var table_data = JSON.stringify(additional_data);
  368. $('#tableadditional_data').val(table_data);
  369. j++;
  370. } else {
  371. $('#err_product').text('Product Already Added').animate({opacity: '0.0'}, 2000).animate({opacity: '0.0'}, 1000).animate({opacity: '1.0'}, 2000);
  372. }
  373. }
  374. });
  375. })(itemrec);
  376. }
  377.  
  378. var aritem = <?php echo json_encode($serviceitems); ?>;
  379. for (itemrec = 0; itemrec < aritem.length; itemrec++) {
  380. (function (counter) {
  381. var getnewRowService;
  382. var quotationid = aritem[itemrec].id;
  383. var itemquantity = aritem[itemrec].quantity;
  384. var itemprice = aritem[itemrec].price;
  385. var itemdiscountid = aritem[itemrec].discount_id;
  386. var itemdiscountvalue = aritem[itemrec].discount_value;
  387. var itemdiscount = aritem[itemrec].discount;
  388.  
  389. var itemgross_total = aritem[itemrec].gross_total;
  390. var service_id = aritem[itemrec].service_id;
  391. var flag = 0;
  392. $('#err_service').text('');
  393. $.ajax({
  394. url: "<?php echo base_url('sales/getService') ?>/" + service_id,
  395. type: "GET",
  396. dataType: "JSON",
  397. data: {
  398. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  399. },
  400. success: function (data) {
  401.  
  402. $("table.service_table").find('input[name^="service_id"]').each(function () {
  403. if (data[0].service_id == +$(this).val()) {
  404. flag = 1;
  405. }
  406. });
  407. if (flag == 0)
  408. {
  409. var id = data[0].service_id;
  410. var code = data[0].code;
  411. var name = data[0].service_title;
  412. var hsn_sac_code = '';
  413. var price = itemprice;
  414. var tax_id = data[0].tax_id;
  415. var tax_value = data[0].tax_value;
  416. if (tax_value == null) {
  417. tax_value = 0;
  418. }
  419. var product = {"service_id": id,
  420. "price": price
  421. };
  422. service_data[k] = product;
  423. length = service_data.length - 1;
  424. var select_discount = "";
  425. select_discount += '<div class="form-group">';
  426. select_discount += '<select class="form-control select2" id="item_discountservice" name="item_discountservice" style="width: 100%;">';
  427. select_discount += '<option value="">Select</option>';
  428. var selected = '';
  429. for (a = 0; a < data['discount'].length; a++) {
  430. if (data['discount'][a].discount_id == itemdiscountid) {
  431. selected = 'selected ';
  432. } else {
  433. selected = '';
  434. }
  435. select_discount += '<option ' + selected + 'value="' + data['discount'][a].discount_id + '">' + data['discount'][a].discount_name + '(' + data['discount'][a].discount_value + '%)' + '</option>';
  436. }
  437. select_discount += '</select></div>';
  438.  
  439. var newRowService = $("<tr id='trv" + counter + "'>");
  440. var cols = "";
  441. cols += "<td><a class='deleteRow'> <img src='<?php echo base_url(); ?>assets/images/bin3.png' /> </a><input type='hidden' name='idservice' value=" + k + "><input type='hidden' name='service_id' name='service_id' value=" + id + "></td>";
  442. cols += "<td>" + code + "</td>";
  443. cols += "<td>"
  444. + "<input type='hidden' value='' name='nameService" + counter + "' id='nameService" + counter + "'>"
  445. + name + "</td>";
  446. cols += "<td>"
  447. + "<input type='number' class='form-control text-center' value='" + itemquantity + "' data-rule='quantity' name='qtyservice" + counter + "' id='qtyservice" + counter + "' min='0' max='2'>"
  448. + "</td>";
  449. cols += "<td align='right'>"
  450. + "<span id='price'>"
  451. + "<input step='0.01' type='text' class='form-control text-right' name='priceservice" + counter + "' id='priceservice" + counter + "' value='" + price
  452. + "'>"
  453. + "</span>"
  454. + "</td>";
  455. cols += "<td>"
  456. + "<span id='sub_total'>"
  457. + "<input type='text' class='form-control text-right' style='' value='" + itemgross_total + "' name='linetotalservice" + counter + "' id='linetotalservice" + counter + "' readonly>"
  458. + "</span>"
  459. + "</td>";
  460. cols += '<td><input type="hidden" value="' + itemdiscountvalue + '" id="discountservice_value" name="discountservice_value"><input type="hidden" id="hidden_discountservice" name="hidden_discountservice">' + select_discount + '</td>';
  461.  
  462. cols += '<td><input type="text" class="form-control text-right" id="service_total" name="service_total" readonly></td>';
  463. cols += "</tr>";
  464. newRowService.append(cols);
  465. getnewRowService = newRowService;
  466. $("table.service_table").append(newRowService);
  467. calculateRowService($('tr#trv' + counter));
  468. $.calculateDiscountService($('tr#trv' + counter));
  469. $.calculateGrandTotal();
  470. counter++;
  471. var table_data = JSON.stringify(service_data);
  472. $('#tableservice_data').val(table_data);
  473. k++;
  474. } else {
  475. $('#err_product').text('Product Already Added').animate({opacity: '0.0'}, 2000).animate({opacity: '0.0'}, 1000).animate({opacity: '1.0'}, 2000);
  476. }
  477. }
  478. });
  479. })(itemrec);
  480. }
  481.  
  482. function calculateRow(row) {
  483.  
  484. var key = +row.find('input[name^="id"]').val();
  485. var price = +row.find('input[name^="price"]').val();
  486. var desc = row.find('input[name^="description"]').val();
  487. var qty = +row.find('input[name^="qty"]').val();
  488.  
  489. row.find('input[name^="linetotal"]').val((price * qty).toFixed(2));
  490. product_data[key].quantity = qty;
  491. product_data[key].desc = desc;
  492. product_data[key].total = (price * qty).toFixed(2);
  493. var table_data = JSON.stringify(product_data);
  494. $('#table_data').val(table_data);
  495. }
  496.  
  497. function calculateRowAdditional(row) {
  498.  
  499. var key = +row.find('input[name^="id"]').val();
  500. var price = +row.find('input[name^="price"]').val();
  501. var desc = row.find('input[name^="description"]').val();
  502. var qty = +row.find('input[name^="qty"]').val();
  503.  
  504. row.find('input[name^="linetotal"]').val((price * qty).toFixed(2));
  505. additional_data[key].quantity = qty;
  506. additional_data[key].desc = desc;
  507. additional_data[key].total = (price * qty).toFixed(2);
  508. var table_data = JSON.stringify(additional_data);
  509. $('#tableadditional_data').val(table_data);
  510. }
  511.  
  512. function calculateRowService(row)
  513. {
  514. var key = +row.find('input[name^="idservice"]').val();
  515. var price = +row.find('input[name^="priceservice"]').val();
  516. var qty = +row.find('input[name^="qtyservice"]').val();
  517. var total = +row.find('input[name^="linetotalservice"]').val();
  518. row.find('input[name^="linetotalservice"]').val((price * qty).toFixed(2));
  519. service_data[key].price = price;
  520. service_data[key].quantity = qty;
  521. service_data[key].total = total;
  522. var table_data = JSON.stringify(service_data);
  523. $('#tableservice_data').val(table_data);
  524. }
  525.  
  526. });
  527.  
  528.  
  529.  
  530. $(document).ready(function () {
  531. $("button#submitBooking").click(function (e) {
  532. if (e.target instanceof HTMLAnchorElement)
  533. e.preventDefault();
  534. $.ajax({
  535. type: "POST",
  536. url: "<?php echo base_url('item_request/addSales') ?>",
  537. data: $('form.bookingmodal').serialize(),
  538. success: function (message) {
  539. alert(message);
  540.  
  541. var formObj = {};
  542. var inputs = $('form.bookingmodal').serializeArray()
  543. $.each(inputs, function (i, input) {
  544. formObj[input.name] = input.value;
  545. });
  546. var qty = +$('#'+formObj.type).find('input[name^="available_quantity"]').val();
  547. var z = +formObj.qty + +qty;
  548. $('#'+formObj.type).find('input[name^="qty"]').attr("max", z);
  549. $('#'+formObj.type).find('input[name^="qty"]').val(z);
  550.  
  551. $("#bookingmodal").modal('hide');
  552. },
  553. error: function () {
  554. alert("Error");
  555. }
  556. });
  557. return false;
  558. });
  559.  
  560.  
  561. $(document).on('change', '#kursdata', function ()
  562. {
  563. $.calculateGrandTotal();
  564.  
  565. });
  566.  
  567. $(document).on('change', '#taxx', function ()
  568. {
  569. $.calculateGrandTotal();
  570.  
  571. });
  572.  
  573. $(document).on('keyup', '#shipping_charge', function ()
  574. {
  575. $.calculateGrandTotal();
  576. });
  577. $(document).on('keyup', '#totalDiscountUmum', function ()
  578. {
  579. $.calculateGrandTotal();
  580. });
  581. $(document).on('keyup', '#DiscountFix', function ()
  582. {
  583. $.calculateGrandTotal();
  584. });
  585. $(document).on('keyup', '#diskonpersen_text', function ()
  586. {
  587. var diskonval = 0;
  588. var diskonval2 = 0;
  589. var diskonpersen = 0;
  590. diskonpersen = $('#diskonpersen_text').val();
  591. $.calculateGrandTotal();
  592. diskonval2 = $('#grand_total').val();
  593. diskonval = (diskonpersen / 100) * diskonval2;
  594. $('#totalDiscountUmum').text(diskonval.toFixed(2));
  595. $('#totalDiscountUmum').val(diskonval.toFixed(2));
  596. $.calculateGrandTotal();
  597. });
  598. $(document).on('keyup', '#DiscountPersen', function ()
  599. {
  600. $.calculateGrandTotal();
  601. });
  602. });
  603. </script>
  604. <script type="text/javascript">
  605. $(document).ready(function () {
  606.  
  607. $(".getterminvalue").on("change paste", function () {
  608. var id_data = $(this).attr("id");
  609. var valdata_cek = $(this).val();
  610. if (valdata_cek.match(/^\d+$/)) {
  611. $(".getterminvalue").each(function (index, element) {
  612. valueget = $(element).val();
  613.  
  614. })
  615. } else {
  616. alert('Data Must Numeric');
  617. }
  618.  
  619. });
  620.  
  621. //datepicker
  622. $('.datepicker').datepicker({
  623. autoclose: true,
  624. format: "yyyy-mm-dd",
  625. todayHighlight: true,
  626. orientation: "auto",
  627. todayBtn: true,
  628. todayHighlight: true,
  629. });
  630. });
  631. function transport() {
  632. $('.transporter').toggle();
  633. }
  634. </script>
  635. <!-- close datepicker -->
  636. <script>
  637. function addRevisi() {
  638. var e = document.getElementById("status");
  639. var number = e.options[e.selectedIndex].value;
  640.  
  641. if (number == 3) {
  642. document.getElementById('divrevisi').style.display = 'block';
  643.  
  644. } else {
  645. document.getElementById('divrevisi').style.display = 'none';
  646. }
  647. }
  648.  
  649. function addFields()
  650. {
  651. var e = document.getElementById("terminnumber");
  652. var number = e.options[e.selectedIndex].value;
  653. getfromaddFields = number;
  654. var container = document.getElementById("termincontainer");
  655. while (container.hasChildNodes())
  656. {
  657. container.removeChild(container.lastChild);
  658. }
  659.  
  660. var container = container.appendChild(document.createElement("table"));
  661. container.className = "table table-bordered";
  662. var container = container.appendChild(document.createElement("tbody"));
  663.  
  664. for (i = 0; i < number; i++)
  665. {
  666. var containertr = container.appendChild(document.createElement("tr"));
  667. var containertd = containertr.appendChild(document.createElement("td"));
  668. z = document.createElement('span');
  669. z.innerHTML = "Termin Ke % " + (i + 1) + " :";
  670. z.className = "text-danger";
  671. containertd.appendChild(z);
  672. var input = document.createElement("input");
  673. input.type = "number";
  674. input.name = "terminvalue[" + (i + 1) + "]";
  675. input.id = "terminvalue" + (i + 1);
  676. input.className = "getterminvalue";
  677. input.min = 1;
  678. input.max = 100;
  679. input.maxlength = "2";
  680. // input.onkeypress = isNumber_max_100;
  681. var containertd = containertr.appendChild(document.createElement("td"));
  682. containertd.appendChild(input);
  683. z = document.createElement('span');
  684. z.className = "text-primary";
  685. z.innerHTML = ' Ket: ';
  686. var containertd = containertr.appendChild(document.createElement("td"));
  687. containertd.appendChild(z);
  688. var input2 = document.createElement("input");
  689. input2.type = "text";
  690. input2.name = "terminket[" + (i + 1) + "]";
  691. input2.id = "terminket" + (i + 1);
  692. input2.className = "getterminket";
  693. var containertd = containertr.appendChild(document.createElement("td"));
  694. containertd.appendChild(input2);
  695. }
  696. }
  697.  
  698. function showc1()
  699. {
  700. var container = document.getElementById("kurscontainer");
  701.  
  702. while (container.hasChildNodes())
  703. {
  704. container.removeChild(container.lastChild);
  705. }
  706.  
  707. document.getElementById('divc1').style.display = 'block';
  708. document.getElementById('divc2').style.display = 'none';
  709. }
  710.  
  711. function showc2()
  712. {
  713. document.getElementById('divc2').style.display = 'block';
  714. document.getElementById('divc1').style.display = 'none';
  715. addKursFields();
  716. }
  717.  
  718. function addKursFields()
  719. {
  720. var e = document.getElementById("kursid2");
  721. var options = document.getElementById('kursid2').options, count = 0;
  722. var options2 = document.getElementById('kursdata');
  723.  
  724. var arrayman = [];
  725. var arraymankurs = [];
  726. for (var i = 0; i < options.length; i++)
  727. {
  728. arraymankurs[count] = options2[i].value;
  729. if (options[i].selected)
  730. {
  731. arrayman[count] = e.options[i].text;
  732. count++;
  733. }
  734. }
  735.  
  736. //var number = document.getElementById("terminnumber").value;
  737. var container = document.getElementById("kurscontainer");
  738.  
  739. while (container.hasChildNodes())
  740. {
  741. container.removeChild(container.lastChild);
  742. }
  743.  
  744.  
  745.  
  746. for (i = 0; i < count; i++)
  747. {
  748. container.appendChild(document.createTextNode("Nilai Kurs " + arrayman[i] + " :"));
  749. var input = document.createElement("input");
  750. input.type = "number";
  751. input.name = "kursdatavalue[]";
  752. input.id = "kursdatavalue" + (i + 1);
  753. input.min = 1;
  754.  
  755. input.value = localStorage.getItem("kursdatavalue" + i);
  756.  
  757. input.onkeyup = function ()
  758. {
  759.  
  760. var container = document.getElementById("kurscontainer");
  761. var children = container.childNodes;
  762.  
  763. var iy = 0;
  764. for (var im = 0; im < children.length; im++)
  765. {
  766. if (children[im].tagName == "INPUT" && children[im].name == 'kursdatavalue[]')
  767. {
  768. var rate = document.getElementsByName("rate")[0].value;
  769.  
  770. var nominal = children[im].value;
  771. var numberPattern = /\d+/g;
  772. nominal = nominal.replace(/\D/g, "");
  773. nominal = parseFloat(nominal);
  774.  
  775. var y = document.getElementsByName("premikursdatavalue[]"), i;
  776.  
  777. if (nominal.length == 0)
  778. {
  779. nominal = 1;
  780. }
  781.  
  782. if (rate.length == 0)
  783. {
  784. rate = 1;
  785. }
  786.  
  787. var hasil = (nominal * rate) / 100;
  788.  
  789. y[iy].value = hasil;
  790.  
  791. iy++;
  792. }
  793. }
  794.  
  795. storedatatemp();
  796. };
  797.  
  798.  
  799. container.appendChild(input);
  800. container.appendChild(document.createElement("br"));
  801.  
  802.  
  803. input.min = 1;
  804. container.appendChild(input);
  805. container.appendChild(document.createElement("br"));
  806.  
  807. container.appendChild(document.createElement("br"));
  808. container.appendChild(document.createElement("br"));
  809. }
  810. }
  811.  
  812. function showo1() {
  813. var container = document.getElementById("termincontainer");
  814. while (container.hasChildNodes()) {
  815. container.removeChild(container.lastChild);
  816. }
  817. document.getElementById('divo1').style.display = 'block';
  818. document.getElementById('divo2').style.display = 'none';
  819. document.getElementById('divo3').style.display = 'none';
  820. }
  821.  
  822. function showo2() {
  823. document.getElementById('divo1').style.display = 'none';
  824. document.getElementById('divo2').style.display = 'block';
  825. document.getElementById('divo3').style.display = 'none';
  826. }
  827.  
  828. function showo3() {
  829. var container = document.getElementById("termincontainer");
  830. while (container.hasChildNodes()) {
  831. container.removeChild(container.lastChild);
  832. }
  833. document.getElementById('divo1').style.display = 'none';
  834. document.getElementById('divo2').style.display = 'none';
  835. document.getElementById('divo3').style.display = 'block';
  836. }
  837.  
  838. function showdis1()
  839. {
  840. document.getElementById('divdis1').style.display = 'block';
  841. document.getElementById('divdis2').style.display = 'none';
  842. }
  843.  
  844. function showdis2() {
  845. document.getElementById('divdis1').style.display = 'none';
  846. document.getElementById('divdis2').style.display = 'block';
  847. }
  848.  
  849.  
  850. $(document).ready(function () {
  851. $('#customer').change(function () {
  852. var customer_id = $(this).val();
  853. $.ajax({
  854. url: "<?php echo base_url('sales/getCustomerData') ?>/" + customer_id,
  855. type: "GET",
  856. dataType: "JSON",
  857. data: {
  858. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  859. },
  860. success: function (data) {
  861.  
  862. $('#company_id').text('');
  863. $('#company_name').text('');
  864. $('#customer_name').text('');
  865. $('#mobilephone').text('');
  866. $('#email').text('');
  867. $('#npwp').text('');
  868. $('#alamat_npwp').text('');
  869. $('#npwp').val(data['data'][0].gstid);
  870. $('#alamat_npwp').val(data['data'][0].cf2);
  871. $('#company_id').val(data['data'][0].cf1);
  872. $('#company_name').val(data['data'][0].company_name);
  873. $('#customer_name').val(data['data'][0].customer_name);
  874. $('#mobilephone').val(data['data'][0].mobile);
  875. $('#email').val(data['data'][0].email);
  876.  
  877. if (typeof data['address'][0] != 'undefined') {
  878. var cid = data['address'][0].customer_id;
  879. for (a = 0; a < data['address'].length; a++) {
  880. if (data['address'][a].type == 0) {
  881. $('#customer_address').append('<option value="' + data['address'][a].id + '">' + data['address'][a].address + '</option>');
  882. }
  883. }
  884. } else {
  885. var cid = "";
  886. }
  887.  
  888. if (typeof data['address'][0] != 'undefined') {
  889. var cid = data['address'][0].customer_id;
  890. for (a = 0; a < data['address'].length; a++) {
  891. if (data['address'][a].type == 1) {
  892. $('#customer_addressa').append('<option value="' + data['address'][a].id + '">' + data['address'][a].address + '</option>');
  893. }
  894. }
  895. } else {
  896. var cid = "";
  897. }
  898.  
  899. $("#reference_no").empty().trigger("change");
  900. var customer_id = $('#customer').val();
  901. $.ajax({
  902. url: "<?php echo base_url('sales/getRecordAjax') ?>/" + customer_id,
  903. type: "GET",
  904. dataType: "JSON",
  905. data: {
  906. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  907. },
  908. success: function (data) {
  909. for (a = 0; a < data['data'].length; a++) {
  910. if (data['data'][a].reference_no2 != null) {
  911. number = data['data'][a].reference_no2;
  912. } else {
  913. number = data['data'][a].reference_no;
  914. }
  915. $('#reference_no').append('<option value="' + data['data'][a].quotation_id + '">' + number + '</option>').trigger('change');
  916. }
  917. $("#reference_no").trigger({
  918. type: 'select2:select',
  919. });
  920. var selectstr = <?php echo json_encode(unserialize($data[0]->reference_no)); ?>;
  921. $('#preference_no').find('#reference_no').val(selectstr).trigger('change');
  922. }
  923. });
  924.  
  925. $('#customer_address').val(<?php echo $data[0]->shipto; ?>).trigger('change');
  926. $('#customer_addressa').val(<?php echo $data[0]->billto; ?>).trigger('change');
  927. }
  928. });
  929. }).change();
  930. });
  931.  
  932. $(document).ready(function () {
  933. $('#customer_address').change(function () {
  934. var customerAddress_id = $(this).val();
  935. $.ajax({
  936. url: "<?php echo base_url('sales/getCustomerAddressData') ?>/" + customerAddress_id,
  937. type: "GET",
  938. dataType: "JSON",
  939. data: {
  940. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  941. },
  942. success: function (data) {
  943. $('#country').text('');
  944. $('#state').text('');
  945. $('#city').text('');
  946. $('#err_country').text('');
  947. $('#err_state').text('');
  948. $('#err_city').text('');
  949. $('#country').val(data['address'][0].cname);
  950. $('#state').val(data['address'][0].sname);
  951. $('#city').val(data['address'][0].ctname);
  952. var s = data['address'][0].baddress;
  953. tinyMCE.get('addresscustomer').setContent(s);
  954. }
  955. });
  956. }).change();
  957. });
  958.  
  959. $(document).ready(function () {
  960. $('#customer_addressa').change(function () {
  961. var customerAddress_id = $(this).val();
  962. $.ajax({
  963. url: "<?php echo base_url('sales/getCustomerAddressData') ?>/" + customerAddress_id,
  964. type: "GET",
  965. dataType: "JSON",
  966. data: {
  967. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  968. },
  969. success: function (data) {
  970. $('#countrya').text('');
  971. $('#statea').text('');
  972. $('#citya').text('');
  973. $('#err_countrya').text('');
  974. $('#err_statea').text('');
  975. $('#err_citya').text('');
  976. $('#countrya').val(data['address'][0].coname);
  977. $('#statea').val(data['address'][0].sname);
  978. $('#citya').val(data['address'][0].ciname);
  979. var s = data['address'][0].baddress;
  980. tinyMCE.get('addresscustomera').setContent(s);
  981. }
  982. });
  983. }).change();
  984. });
  985. </script>
  986.  
  987. <script>
  988. $(document).ready(function () {
  989. var counter = 1;
  990. $('#brand').change(function () {
  991. $('#code_item').html('');
  992. $('#code_item').html('<option value="">Select Part Number</option>');
  993. var brand_id = $('#brand').val();
  994. $.ajax({
  995. url: "<?php echo base_url('sales/getPartNumber') ?>/" + brand_id,
  996. type: "GET",
  997. dataType: "JSON",
  998. data: {
  999. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  1000. },
  1001. success: function (data) {
  1002. for (a = 0; a < data.length; a++) {
  1003. $('#code_item').append('<option value="' + data[a].code + '">' + data[a].code + '</option>');
  1004. }
  1005. }
  1006. });
  1007. });
  1008.  
  1009. $('#code_item').change(function () {
  1010. $('#product').html('');
  1011. $('#product').html('<option value="">Select Product</option>');
  1012. var code = $('#code_item').val();
  1013. $.ajax({
  1014. url: "<?php echo base_url('sales/getCodeProduct') ?>/" + code,
  1015. type: "GET",
  1016. dataType: "JSON",
  1017. data: {
  1018. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  1019. },
  1020. success: function (data) {
  1021. for (a = 0; a < data.length; a++) {
  1022. $('#product').append('<option value="' + data[a].product_id + '">' + data[a].name + '</option>');
  1023. }
  1024. }
  1025. });
  1026. });
  1027.  
  1028. $('#product').change(function () {
  1029. var id = $(this).val();
  1030. var product_id = $('#product').val();
  1031.  
  1032. var flag = 0;
  1033. $('#err_product').text('');
  1034. $.ajax({
  1035. url: "<?php echo base_url('sales/getProduct') ?>/" + product_id,
  1036. type: "GET",
  1037. dataType: "JSON",
  1038. data: {
  1039. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  1040. },
  1041. success: function (data) {
  1042. $("table.product_table").find('input[name^="product_id"]').each(function () {
  1043. // if (data[0].product_id == +$(this).val()) {
  1044. // flag = 1;
  1045. // }
  1046. });
  1047. if (flag == 0) {
  1048. var id = data[0].product_id;
  1049. var code = data[0].code;
  1050. var name = data[0].name;
  1051. var item_namebyp = data[0].item_namebyp;
  1052. var price = data[0].cost;
  1053.  
  1054. var product = {"product_id": id,
  1055. "price": price
  1056. };
  1057. product_data[yi] = product;
  1058. length = product_data.length - 1;
  1059.  
  1060. var select_discount = "";
  1061. select_discount += '<div class="form-group">';
  1062. select_discount += '<select class="form-control select2" id="item_discount" name="item_discount" style="width: 100%;">';
  1063. select_discount += '<option value="">Select</option>';
  1064. for (a = 0; a < data['discount'].length; a++) {
  1065. select_discount += '<option value="' + data['discount'][a].discount_id + '">' + data['discount'][a].discount_name + '(' + data['discount'][a].discount_value + '%)' + '</option>';
  1066. }
  1067. select_discount += '</select></div>';
  1068.  
  1069.  
  1070. var newRow = $("<tr id='tr"+ yi +"'>");
  1071. var cols = "";
  1072. cols += "<td><a class='deleteRow'> <img src='<?php echo base_url(); ?>assets/images/bin3.png' /> </a><input type='hidden' name='id' name='id' value=" + yi + "><input type='hidden' name='product_id' name='product_id' value=" + id + "></td>";
  1073. cols += "<td>" + code + "</td>";
  1074. cols += "<td><input type='hidden' value='" + data[0].name + "' name='nameProduct" + counter + "' id='nameProduct" + counter + "'><input type='hidden' value='" + data[0].product_id + "' name='idProduct" + counter + "' id='idProduct" + counter + "'>" + name + "</td>";
  1075. cols += "<td>" + item_namebyp + "</td>";
  1076. cols += "<td><input type='text' name='description" + counter + "' id='description"+ counter + "' value='" + name + "' class='form-control'></td>";
  1077. cols += "<td><input type='number' class='form-control text-center' value='0' data-rule='quantity' name='qty" + counter + "' id='qty" + counter + "' min='1' max='" + data[0].quantity + "'></td>";
  1078. cols += "<td>" + data[0].quantity + "<input type='hidden' name='available_quantity" + counter + "' id='available_quantity" + counter + "' value='" + data[0].quantity + "'></td>";
  1079. cols += "<td>" + data[0].unit + "</td>";
  1080. cols += "<td step='0.01' align='right'><span id='price'><input type='text' class='form-control text-right' name='price" + counter + "' id='price" + counter + "' value='" + price + "'></span></td>";
  1081. cols += "<td><span id='sub_total'><input type='text' class='form-control text-right' style='' value='0.00' name='linetotal" + counter + "' id='linetotal" + counter + "' readonly></span></td>";
  1082. cols += '<td><input type="hidden" id="discount_value" name="discount_value"><input type="hidden" id="hidden_discount" name="hidden_discount">' + select_discount + '</td>';
  1083.  
  1084. cols += '<td><input type="text" class="form-control text-right" id="product_total" name="product_total" readonly></td>';
  1085. cols += "</tr>";
  1086. counter++;
  1087. newRow.append(cols);
  1088. $("table.product_table").append(newRow);
  1089. var table_data = JSON.stringify(product_data);
  1090. $('#table_data').val(table_data);
  1091. yi++;
  1092. } else {
  1093. $('#err_product').text('Product Already Added').animate({opacity: '0.0'}, 2000).animate({opacity: '0.0'}, 1000).animate({opacity: '1.0'}, 2000);
  1094. }
  1095. }
  1096. });
  1097. });
  1098.  
  1099. $('#a_brand').change(function () {
  1100. $('#a_code_item').html('');
  1101. $('#a_code_item').html('<option value="">Select Part Number</option>');
  1102. var brand_id = $('#a_brand').val();
  1103. $.ajax({
  1104. url: "<?php echo base_url('sales/getPartNumber') ?>/" + brand_id,
  1105. type: "GET",
  1106. dataType: "JSON",
  1107. data: {
  1108. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  1109. },
  1110. success: function (data) {
  1111. for (a = 0; a < data.length; a++) {
  1112. $('#a_code_item').append('<option value="' + data[a].code + '">' + data[a].code + '</option>');
  1113. }
  1114. }
  1115. });
  1116. });
  1117.  
  1118. $('#a_code_item').change(function () {
  1119. $('#a_product').html('');
  1120. $('#a_product').html('<option value="">Select Product</option>');
  1121. var code = $('#a_code_item').val();
  1122. $.ajax({
  1123. url: "<?php echo base_url('sales/getCodeProduct') ?>/" + code,
  1124. type: "GET",
  1125. dataType: "JSON",
  1126. data: {
  1127. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  1128. },
  1129. success: function (data) {
  1130. for (a = 0; a < data.length; a++) {
  1131. $('#a_product').append('<option value="' + data[a].product_id + '">' + data[a].name + '</option>');
  1132. }
  1133. }
  1134. });
  1135. });
  1136.  
  1137. $('#a_product').change(function () {
  1138. var id = $(this).val();
  1139. var product_id = $('#a_product').val();
  1140. var flag = 0;
  1141. $('#err_a_product').text('');
  1142. $.ajax({
  1143. url: "<?php echo base_url('sales/getProduct') ?>/" + product_id,
  1144. type: "GET",
  1145. dataType: "JSON",
  1146. data: {
  1147. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  1148. },
  1149. success: function (data) {
  1150.  
  1151. $("table.additional_table").find('input[name^="product_id"]').each(function () {
  1152. if (data[0].additional_id == +$(this).val()) {
  1153. flag = 1;
  1154. }
  1155. });
  1156.  
  1157. if (flag == 0) {
  1158. var id = data[0].product_id;
  1159. var price = data[0].cost;
  1160. var code = data[0].code;
  1161. var name = data[0].name;
  1162. var itembyp = data[0].item_namebyp;
  1163. var stock = data[0].quantity;
  1164. var uom = data[0].uom;
  1165. var product = {"additional_id": id, "price": 0
  1166. };
  1167.  
  1168. additional_data[j] = product;
  1169. length = additional_data.length - 1;
  1170.  
  1171. var select_discount = "";
  1172. select_discount += '<div class="form-group">';
  1173. select_discount += '<select class="form-control select2" id="item_discount" name="item_discount" style="width: 100%;">';
  1174. select_discount += '<option value="">Select</option>';
  1175. for (a = 0; a < data['discount'].length; a++) {
  1176. select_discount += '<option value="' + data['discount'][a].discount_id + '">' + data['discount'][a].discount_name + '(' + data['discount'][a].discount_value + '%)' + '</option>';
  1177. }
  1178. select_discount += '</select></div>';
  1179.  
  1180. var newRow = $("<tr id='tra"+ j +"'>");
  1181. var cols = "";
  1182. cols += "<td><a class='deleteRow'> <img src='<?php echo base_url(); ?>assets/images/bin3.png' /> </a><input type='hidden' name='id' name='id' value=" + j + "><input type='hidden' name='additional_id' name='additional_id' value=" + id + "></td>";
  1183. cols += "<td>" + code + "</td>";
  1184. cols += "<td><input type='hidden' value='" + data[0].name + "' name='nameProduct" + counter + "' id='nameProduct" + counter + "'><input type='hidden' value='" + data[0].product_id + "' name='idProduct" + counter + "' id='idProduct" + counter + "'>" + name + "</td>";
  1185. cols += "<td>" + itembyp + "</td>";
  1186. cols += "<td><input type='text' name='description" + counter + "' id='description"+ counter + "' value='" + name + "' class='form-control'></td>";
  1187. cols += "<td>"
  1188. + "<input type='number' class='form-control text-center' value='0' data-rule='quantity' name='qty" + counter + "' id='qty" + counter + "' min='1' max='" + data[0].quantity + "'>"
  1189. + "</td>";
  1190. cols += "<td>" + data[0].quantity + "<input type='hidden' name='available_quantity" + counter + "' id='available_quantity" + counter + "' value='" + data[0].quantity + "'></td>";
  1191. cols += "<td>" + data[0].unit + "</td>";
  1192. cols += "<td align='right'><span id='price" + counter + "'><input type='number' class='form-control text-right' name='price" + counter + "' step='0.01' id='price" + counter + "' value='"+ price +"'></span></td>";
  1193. cols += "<td><span id='sub_total'><input type='text' class='form-control text-right' style='' value='0.00' name='linetotal" + counter + "' id='linetotal" + counter + "' readonly></span></td>";
  1194. cols += '<td><input type="hidden" id="discount_value" name="discount_value"><input type="hidden" id="hidden_discount" name="hidden_discount">' + select_discount + '</td>';
  1195.  
  1196. cols += '<td><input type="text" class="form-control text-right" id="product_total" name="product_total" readonly></td>';
  1197. cols += "</tr>";
  1198. counter++;
  1199. newRow.append(cols);
  1200. $("table.additional_table").append(newRow);
  1201. var table_data = JSON.stringify(additional_data);
  1202. $('#tableadditional_data').val(table_data);
  1203. j++;
  1204. } else {
  1205. $('#err_product').text('Product Already Added').animate({opacity: '0.0'}, 2000).animate({opacity: '0.0'}, 1000).animate({opacity: '1.0'}, 2000);
  1206. }
  1207. }
  1208. });
  1209. });
  1210.  
  1211. $('#service').change(function () {
  1212. var id = $(this).val();
  1213. var service_id = $('#service').val();
  1214.  
  1215. var flag = 0;
  1216. $('#err_service').text('');
  1217. $.ajax({
  1218. url: "<?php echo base_url('sales/getService') ?>/" + service_id,
  1219. type: "GET",
  1220. dataType: "JSON",
  1221. data: {
  1222. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  1223. },
  1224. success: function (data) {
  1225. $("table.service_table").find('input[name^="service_id"]').each(function () {
  1226. if (data[0].service_id == +$(this).val()) {
  1227. flag = 1;
  1228. }
  1229. });
  1230. if (flag == 0) {
  1231. var id = data[0].service_id;
  1232. var code = data[0].code;
  1233. var name = data[0].service_title;
  1234. var hsn_sac_code = '';
  1235. var price = data[0].price;
  1236.  
  1237. var product = {"service_id": id,
  1238. "price": price
  1239. };
  1240. service_data[k] = product;
  1241.  
  1242. length = service_data.length - 1;
  1243.  
  1244. var select_discount = "";
  1245. select_discount += '<div class="form-group">';
  1246. select_discount += '<select class="form-control select2" id="item_discountservice" name="item_discountservice" style="width: 100%;">';
  1247. select_discount += '<option value="">Select</option>';
  1248. for (a = 0; a < data['discount'].length; a++) {
  1249. select_discount += '<option value="' + data['discount'][a].discount_id + '">' + data['discount'][a].discount_name + '(' + data['discount'][a].discount_value + '%)' + '</option>';
  1250. }
  1251. select_discount += '</select></div>';
  1252.  
  1253. var newRow = $("<tr>");
  1254. var cols = "";
  1255. cols += "<td><a class='deleteRow'> <img src='<?php echo base_url(); ?>assets/images/bin3.png' /> </a><input type='hidden' name='idservice' name='idservice' value=" + k + "><input type='hidden' name='service_id' value=" + id + "></td>";
  1256. cols += "<td>" + code + "</td>";
  1257. cols += "<td>" + name + "</td>";
  1258. cols += "<td>"
  1259. + "<input type='number' class='form-control text-center' value='0' data-rule='quantity' name='qtyservice" + counter + "' id='qtyservice" + counter + "' min='0' max='2'>"
  1260. + "</td>";
  1261. cols += "<td align='right'>"
  1262. + "<span id='price'>"
  1263. + "<input type='text' step='0.01' class='form-control text-right' name='priceservice" + counter + "' id='priceservice" + counter + "' value='" + price
  1264. + "'>"
  1265. + "</span>"
  1266. + "</td>";
  1267. cols += "<td>"
  1268. + "<span id='sub_total'>"
  1269. + "<input type='text' class='form-control text-right' style='' value='0.00' name='linetotalservice" + counter + "' id='linetotalservice" + counter + "' readonly>"
  1270. + "</span>"
  1271. + "</td>";
  1272. cols += '<td><input type="hidden" id="discountservice_value" name="discountservice_value"><input type="hidden" id="hidden_discountservice" name="hidden_discountservice">' + select_discount + '</td>';
  1273.  
  1274. cols += '<td><input type="text" class="form-control text-right" id="service_total" name="service_total" readonly></td>';
  1275. cols += "</tr>";
  1276. counter++;
  1277.  
  1278. newRow.append(cols);
  1279. $("table.service_table").append(newRow);
  1280. var table_data = JSON.stringify(service_data);
  1281. $('#tableservice_data').val(table_data);
  1282. k++;
  1283. } else {
  1284. $('#err_product').text('Product Already Added').animate({opacity: '0.0'}, 2000).animate({opacity: '0.0'}, 1000).animate({opacity: '1.0'}, 2000);
  1285. }
  1286. }
  1287. });
  1288. });
  1289.  
  1290.  
  1291.  
  1292.  
  1293. $("table.product_table").on("click", "a.deleteRow", function (event) {
  1294. deleteRow($(this).closest("tr"));
  1295. $(this).closest("tr").remove();
  1296. $.calculateGrandTotal();
  1297. });
  1298.  
  1299. $("table.additional_table").on("click", "a.deleteRow", function (event) {
  1300. deleteRowAdditional($(this).closest("tr"));
  1301. $(this).closest("tr").remove();
  1302. $.calculateGrandTotal();
  1303. });
  1304.  
  1305.  
  1306. $("table.service_table").on("click", "a.deleteRow", function (event) {
  1307. deleteRowService($(this).closest("tr"));
  1308. $(this).closest("tr").remove();
  1309. $.calculateGrandTotal();
  1310. });
  1311.  
  1312. function deleteRow(row) {
  1313. var id = +row.find('input[name^="id"]').val();
  1314. var array_id = product_data[id].product_id;
  1315. product_data[id] = null;
  1316. var table_data = JSON.stringify(product_data);
  1317. $('#table_data').val(table_data);
  1318. }
  1319.  
  1320. function deleteRowAdditional(row) {
  1321. var id = +row.find('input[name^="id"]').val();
  1322. additional_data[id] = null;
  1323. var table_data = JSON.stringify(additional_data);
  1324. $('#tableadditional_data').val(table_data);
  1325. }
  1326.  
  1327. function deleteRowService(row) {
  1328. var id = +row.find('input[name^="idservice"]').val();
  1329. service_data[id] = null;
  1330. var table_data = JSON.stringify(service_data);
  1331. $('#tableservice_data').val(table_data);
  1332. }
  1333.  
  1334. $("table.product_table").on("change", 'input[name^="price"], input[name^="qty"]', function (event) {
  1335.  
  1336. calculateRow($(this).closest("tr"));
  1337. $.calculateDiscount($(this).closest("tr"));
  1338. $.calculateGrandTotal();
  1339.  
  1340. });
  1341.  
  1342. $("table.product_table").on("change", 'input[name^="qty"]', function (event) {
  1343. row = $(this).closest("tr");
  1344. var key = +row.find('input[name^="id"]').val();
  1345. var price = +row.find('input[name^="price"]').val();
  1346. var qty = +row.find('input[name^="qty"]').val();
  1347. var desc = row.find('input[name^="description"]').val();
  1348. var nqty = row.find('input[name^="qty"]').attr('name');
  1349. var availableqty = +row.find('input[name^="available_quantity"]').val();
  1350. var nameproductval = row.find('input[name^="nameProduct"]').val();
  1351. var idproductval = +row.find('input[name^="idProduct"]').val();
  1352. var bookqty = qty - availableqty;
  1353. if (bookqty > 0) {
  1354. $("#m_id_product").val(idproductval);
  1355. $("#qtytitle").text(nqty);
  1356. $("#m_name_product").val(nameproductval);
  1357. $("#m_ref").val($('#sales_order').text());
  1358. $("#m_type").val('tr'+key);
  1359. $("#m_qty").val(bookqty);
  1360. $("#m_price").val(price);
  1361. $("#m_date").val($('#sales_date').val());
  1362. $("#bookingmodal").modal("show");
  1363. }
  1364. });
  1365.  
  1366. $("table.additional_table").on("change", 'input[name^="price"], input[name^="qty"]', function (event) {
  1367.  
  1368. calculateRowAdditional($(this).closest("tr"));
  1369. $.calculateDiscountAdditional($(this).closest("tr"));
  1370. $.calculateGrandTotal();
  1371.  
  1372. });
  1373.  
  1374. $("table.additional_table").on("change", 'input[name^="qty"]', function (event) {
  1375. row = $(this).closest("tr");
  1376. var key = +row.find('input[name^="id"]').val();
  1377. var price = +row.find('input[name^="price"]').val();
  1378. var qty = +row.find('input[name^="qty"]').val();
  1379. var desc = row.find('input[name^="description"]').val();
  1380. var nqty = row.find('input[name^="qty"]').attr('name');
  1381. var availableqty = +row.find('input[name^="available_quantity"]').val();
  1382. var nameproductval = row.find('input[name^="nameProduct"]').val();
  1383. var idproductval = +row.find('input[name^="idProduct"]').val();
  1384. var bookqty = qty - availableqty;
  1385. if (bookqty > 0) {
  1386. $("#m_id_product").val(idproductval);
  1387. $("#qtytitle").text(nqty);
  1388. $("#m_name_product").val(nameproductval);
  1389. $("#m_ref").val($('#sales_order').text());
  1390. $("#m_type").val('tr'+key);
  1391. $("#m_qty").val(bookqty);
  1392. $("#m_price").val(price);
  1393. $("#m_date").val($('#sales_date').val());
  1394. $("#bookingmodal").modal("show");
  1395. }
  1396. });
  1397.  
  1398. $("table.service_table").on("change", 'input[name^="priceservice"], input[name^="qtyservice"]', function (event) {
  1399.  
  1400. calculateRowService($(this).closest("tr"));
  1401. $.calculateDiscountService($(this).closest("tr"));
  1402. $.calculateGrandTotal();
  1403. });
  1404.  
  1405. $("table.product_table").on("change", 'input[name ^= "linetotal"]', function (event) {
  1406.  
  1407. calculateRow2($(this).closest("tr"));
  1408. $.calculateDiscount($(this).closest("tr"));
  1409. $.calculateGrandTotal();
  1410. });
  1411.  
  1412. $("table.additional_table").on("change", 'input[name ^= "linetotal"]', function (event) {
  1413.  
  1414. calculateRowAdditional2($(this).closest("tr"));
  1415. $.calculateDiscountAdditional($(this).closest("tr"));
  1416. $.calculateGrandTotal();
  1417. });
  1418.  
  1419. $("table.service_table").on("change", 'input[name^="linetotalservice"]', function (event)
  1420. {
  1421.  
  1422. calculateRowService2($(this).closest("tr"));
  1423. $.calculateDiscountService($(this).closest("tr"));
  1424. $.calculateGrandTotal();
  1425. });
  1426.  
  1427. nilai_diskon = 0;
  1428.  
  1429. $("table.product_table").on("change", '#item_discount', function (event) {
  1430. var row = $(this).closest("tr");
  1431. var discount = +row.find('#item_discount').val();
  1432. var diskon = $(this).val();
  1433. // console.log(diskon);
  1434. if (diskon != "") {
  1435. $.ajax({
  1436. url: '<?php echo base_url('purchase/getDiscountValue/') ?>' + diskon,
  1437. type: "GET",
  1438. data: {
  1439. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  1440. },
  1441. datatype: JSON,
  1442. success: function (value) {
  1443. data = JSON.parse(value);
  1444. console.log(data);
  1445. // row.find('#discount_value').val(data[0].discount_value);
  1446. // $.calculateDiscount(row, data[0].discount_value);
  1447. // $.calculateGrandTotal();
  1448.  
  1449. var diskon = data[0].discount_value / 100;
  1450. diskon = parseFloat(diskon);
  1451.  
  1452. var subtotal = row.find('.subtotal').val();
  1453. subtotal = parseFloat(subtotal);
  1454. console.log(diskon);
  1455.  
  1456. diskon = diskon * subtotal;
  1457. nilai_diskon += diskon;
  1458.  
  1459. subtotal = subtotal - diskon;
  1460.  
  1461. row.find('.salestotal').val(subtotal);
  1462.  
  1463. }
  1464. });
  1465. } else {
  1466. // row.find('#discount_value').val('0');
  1467. // $.calculateDiscount(row, 0);
  1468. // $.calculateGrandTotal();
  1469. }
  1470. });
  1471.  
  1472. $("table.additional_table").on("change", '#item_discount', function (event) {
  1473. var row = $(this).closest("tr");
  1474. var discount = +row.find('#item_discount').val();
  1475. if (discount != "") {
  1476. $.ajax({
  1477. url: '<?php echo base_url('purchase/getDiscountValue/') ?>' + discount,
  1478. type: "GET",
  1479. data: {
  1480. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  1481. },
  1482. datatype: JSON,
  1483. success: function (value) {
  1484. data = JSON.parse(value);
  1485. row.find('#discount_value').val(data[0].discount_value);
  1486. $.calculateDiscountAdditional(row, data[0].discount_value);
  1487. $.calculateGrandTotal();
  1488. }
  1489. });
  1490. } else {
  1491. row.find('#discount_value').val('0');
  1492. $.calculateDiscountAdditional(row, 0);
  1493. $.calculateGrandTotal();
  1494. }
  1495. });
  1496.  
  1497. $("table.service_table").on("change", '#item_discountservice', function (event) {
  1498. var row = $(this).closest("tr");
  1499. var discount = +row.find('#item_discountservice').val();
  1500. if (discount != "") {
  1501. $.ajax({
  1502. url: '<?php echo base_url('purchase/getDiscountValue/') ?>' + discount,
  1503. type: "GET",
  1504. data: {
  1505. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  1506. },
  1507. datatype: JSON,
  1508. success: function (value) {
  1509. data = JSON.parse(value);
  1510. row.find('#discountservice_value').val(data[0].discount_value);
  1511. $.calculateDiscountService(row, data[0].discount_value);
  1512. $.calculateGrandTotal();
  1513. }
  1514. });
  1515. } else {
  1516. row.find('#discountservice_value').val('0');
  1517. $.calculateDiscountService(row, 0);
  1518. $.calculateGrandTotal();
  1519. }
  1520. });
  1521.  
  1522. function calculateRow(row) {
  1523. var key = +row.find('input[name^="id"]').val();
  1524. var price = +row.find('input[name^="price"]').val();
  1525. var desc = row.find('input[name^="description"]').val();
  1526. var qty = +row.find('input[name^="qty"]').val();
  1527.  
  1528. row.find('input[name^="linetotal"]').val((price * qty).toFixed(2));
  1529. product_data[key].price = price;
  1530. product_data[key].quantity = qty;
  1531. product_data[key].desc = desc;
  1532. product_data[key].total = (price * qty).toFixed(2);
  1533. var table_data = JSON.stringify(product_data);
  1534. $('#table_data').val(table_data);
  1535. }
  1536.  
  1537. function calculateRowAdditional(row) {
  1538. var key = +row.find('input[name^="id"]').val();
  1539. var price = +row.find('input[name^="price"]').val();
  1540. var desc = row.find('input[name^="description"]').val();
  1541. var qty = +row.find('input[name^="qty"]').val();
  1542.  
  1543. row.find('input[name^="linetotal"]').val((price * qty).toFixed(2));
  1544. additional_data[key].price = price;
  1545. additional_data[key].quantity = qty;
  1546. additional_data[key].desc = desc;
  1547. additional_data[key].total = (price * qty).toFixed(2);
  1548. var table_data = JSON.stringify(additional_data);
  1549. $('#tableadditional_data').val(table_data);
  1550. }
  1551.  
  1552. function calculateRowService(row)
  1553. {
  1554. var key = +row.find('input[name^="idservice"]').val();
  1555. var price = +row.find('input[name^="priceservice"]').val();
  1556. var qty = +row.find('input[name^="qtyservice"]').val();
  1557. var total = +row.find('input[name^="linetotalservice"]').val();
  1558. row.find('input[name^="linetotalservice"]').val((price * qty).toFixed(2));
  1559. service_data[key].price = price;
  1560. service_data[key].quantity = qty;
  1561. service_data[key].total = total;
  1562. var table_data = JSON.stringify(service_data);
  1563. $('#tableservice_data').val(table_data);
  1564. }
  1565.  
  1566.  
  1567. });
  1568.  
  1569. </script>
  1570. <script>
  1571. $(document).ready(function () {
  1572. $('#previewmodal').on('hidden.bs.modal', function () {
  1573. $("#view_table-body tr").remove();
  1574. $("#table-termin-body tr").remove();
  1575. $("#ptotal").text('');
  1576. $("#pdiscount").text('');
  1577. $("#pdiskonumum").text('');
  1578. $("#ptax").text('');
  1579. $("#pshipping").text('');
  1580. $("#pbalance").text('');
  1581. $("#pcurrency").text('');
  1582. $("#pinternal_note").text('');
  1583. $("#pnote").text('');
  1584. $("#main").text('');
  1585. $("#cc").text('');
  1586. $("#ppaid_by").text('');
  1587. $("#preference_no").text('');
  1588. $("#pdate").text('');
  1589. $("#pcostumer_name").text('');
  1590. $("#pcostumer_address").text('');
  1591. $("#pcostumer_jalan").text('');
  1592. $("#pcostumer_city").text('');
  1593. $("#pcostumer_country").text('');
  1594. $("#pcostumer_mobile").text('');
  1595. $("#pcostumer_email").text('');
  1596. $("#pcompany_name").text('');
  1597. $("#pwarehouse_name").text('');
  1598. $("#pbranch_address").text('');
  1599. $("#pbranch_city").text('');
  1600. $("#pcompany_phone").text('');
  1601. $("#company_email").text('');
  1602. $('#pctrade').text('');
  1603. $('#termin-other-value').text('');
  1604. });
  1605.  
  1606. $('#preview').on('click',function(){
  1607.  
  1608. var id_customer =$('#customer').val();
  1609. var internal_note =$('#internal_note').val();
  1610. var note =$('#note').val();
  1611. var upcc =$('#main').val();
  1612. var upcc2 =$('#cc').val();
  1613. var radios = document.getElementsByName('paymenterms');
  1614. var reference_no =$('#quotanumb').val();
  1615. var date =$('#quotadate').val();
  1616. var table_data = $('#table_data').val();
  1617. var tableadditional_data =$('#tableadditional_data').val();
  1618. var tableservice_data =$('#tableservice_data').val();
  1619. var ptotal =$('#totalValue').text();
  1620. var pdiscount =$('#DiscountProduct').text();
  1621. var ptax =$('#totalTax').text();
  1622. var dpersen =$('#JumlahDiskonPersen').text();
  1623. var dfix =$('#DiscountFix').text();
  1624. var pshipping =$('#shipping_charge').text();
  1625. var pbalance =$('#grandTotal').text();
  1626. var pcurrency =$('#grandCurrency').text();
  1627. var othervalue =$('#others').text();
  1628. var additional_description =$('#additional_description').val();
  1629. var service_description =$('#service_description').val();
  1630. var counter = 1;
  1631. var product = new Array();
  1632. var additional = new Array();
  1633. var service = new Array();
  1634.  
  1635. for (var i = 0, length = radios.length; i < length; i++)
  1636. {
  1637. if (radios[i].checked)
  1638. {
  1639. paid_by = radios[i].value;
  1640. break;
  1641. }
  1642. }
  1643.  
  1644. $("#ptotal").text(ptotal);
  1645. $("#pdiscount").text(pdiscount);
  1646. $("#pdiskonumum").text(dpersen + dfix);
  1647. $("#ptax").text(ptax);
  1648. $("#pshipping").text(pshipping);
  1649. $("#pbalance").text(pbalance);
  1650. $("#pcurrency").text(pcurrency);
  1651. $("#pinternal_note").text(internal_note);
  1652. $("#pnote").text(note);
  1653. $("#pupcc").text(upcc);
  1654. $("#pupcc2").text(upcc2);
  1655. $("#ppaid_by").text(paid_by);
  1656. $("#preference_no").text(reference_no);
  1657. $("#pdate").text(date);
  1658.  
  1659. if (table_data) {
  1660. product = JSON.parse(table_data);
  1661. }
  1662.  
  1663. if (product.length > 0) {
  1664. for (a = 0; a < product.length; a++) {
  1665.  
  1666. var getnewRow;
  1667. var product_id = product[a].product_id;
  1668. var desc = product[a].desc;
  1669. var quantity = product[a].quantity;
  1670. var price = product[a].price;
  1671. var discount = product[a].discount;
  1672. var tax = product[a].tax;
  1673. $.ajax({
  1674. async : false,
  1675. url: "<?php echo base_url('sales/getProduct') ?>/" + product_id,
  1676. type: "GET",
  1677. dataType: "JSON",
  1678. data: {
  1679. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  1680. },
  1681. success: function (data) {
  1682. var id = data[0].product_id;
  1683. var code = data[0].code;
  1684. var name = data[0].name;
  1685. var itembyp = data[0].item_namebyp;
  1686. var unit = data[0].unit;
  1687.  
  1688. var newRow = $("<tr>");
  1689. var cols = "";
  1690. cols += "<td>" + counter + "</td>";
  1691. cols += "<td>" + code + "</td>";
  1692. cols += "<td>" + name + "</td>";
  1693. cols += "<td>" + desc + "</td>";
  1694. cols += "<td>" + quantity + "</td>";
  1695. cols += "<td>" + unit + "</td>";
  1696. cols += "<td>" + price + "</td>";
  1697. cols += "<td>" + (price * quantity) + "</td>";
  1698. cols += "<td>" + discount + "</td>";
  1699. cols += "<td>" + ((price * quantity) - discount) + "</td>";
  1700. cols += "<td>" + tax + "</td>";
  1701. cols += "<td>" + (((price * quantity) - discount) + tax) + "</td>";
  1702. cols += "</tr>";
  1703. newRow.append(cols);
  1704. getnewRow = newRow;
  1705. $("#view_table-body").append(newRow);
  1706. counter++;
  1707. }
  1708. });
  1709. }
  1710. }
  1711.  
  1712. if (tableadditional_data) {
  1713. additional = JSON.parse(tableadditional_data);
  1714. }
  1715.  
  1716. if (additional.length > 0) {
  1717. if (additional_description) {
  1718. var newRow = $("<tr>");
  1719. var cols = "";
  1720. cols += "<td colspan='12' align='left'>" + additional_description + "</td>";
  1721. cols += "</tr>";
  1722. newRow.append(cols);
  1723. getnewRow = newRow;
  1724. $("#view_table-body").append(newRow);
  1725. }
  1726.  
  1727. for (itemrec = 0; itemrec < additional.length; itemrec++) {
  1728.  
  1729. var additional_id = additional[itemrec].additional_id;
  1730. var desc = additional[itemrec].desc;
  1731. var quantity = additional[itemrec].quantity;
  1732. var price = additional[itemrec].price;
  1733. var discount = additional[itemrec].discount;
  1734. var tax = additional[itemrec].tax;
  1735. var flag = 0;
  1736. $.ajax({
  1737. async: false,
  1738. url: "<?php echo base_url('sales/getProduct') ?>/" + additional_id,
  1739. type: "GET",
  1740. dataType: "JSON",
  1741. data: {
  1742. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  1743. },
  1744. success: function (data) {
  1745. var id = data[0].product_id;
  1746. var code = data[0].code;
  1747. var name = data[0].name;
  1748. var itembyp = data[0].item_namebyp;
  1749. var unit = data[0].unit;
  1750.  
  1751. var newRow = $("<tr>");
  1752. var cols = "";
  1753. cols += "<td>" + counter + "</td>";
  1754. cols += "<td>" + code + "</td>";
  1755. cols += "<td>" + name + "</td>";
  1756. cols += "<td>" + desc + "</td>";
  1757. cols += "<td>" + quantity + "</td>";
  1758. cols += "<td>" + unit + "</td>";
  1759. cols += "<td>" + price + "</td>";
  1760. cols += "<td>" + (price * quantity) + "</td>";
  1761. cols += "<td>" + discount + "</td>";
  1762. cols += "<td>" + ((price * quantity) - discount) + "</td>";
  1763. cols += "<td>" + tax + "</td>";
  1764. cols += "<td>" + (((price * quantity) - discount) + tax) + "</td>";
  1765. cols += "</tr>";
  1766. newRow.append(cols);
  1767. getnewRow = newRow;
  1768. $("#view_table-body").append(newRow);
  1769. counter++;
  1770. }
  1771. });
  1772. }
  1773. }
  1774.  
  1775.  
  1776. if (tableservice_data) {
  1777. service = JSON.parse(tableservice_data);
  1778. }
  1779.  
  1780. if (service.length > 0) {
  1781. if (service_description) {
  1782. var newRow = $("<tr>");
  1783. var cols = "";
  1784. cols += "<td colspan='12' align='left'>" + service_description + "</td>";
  1785. cols += "</tr>";
  1786. newRow.append(cols);
  1787. getnewRow = newRow;
  1788. $("#view_table-body").append(newRow);
  1789. }
  1790. for (b = 0; b < service.length; b++) {
  1791. var getnewRow;
  1792. var service_id = service[b].service_id;
  1793. var quantity = service[b].quantity;
  1794. var price = service[b].price;
  1795. var discount = service[b].discount;
  1796. var tax = service[b].tax;
  1797. var flag = 0;
  1798. $.ajax({
  1799. async : false,
  1800. url: "<?php echo base_url('sales/getService') ?>/" + service_id,
  1801. type: "GET",
  1802. dataType: "JSON",
  1803. data: {
  1804. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  1805. },
  1806. success: function (data) {
  1807. var code = data[0].code;
  1808. var name = data[0].service_title;
  1809. var itembyp = data[0].item_namebyp;
  1810. var unit = data[0].unit;
  1811.  
  1812. var newRow = $("<tr>");
  1813. var cols = "";
  1814. cols += "<td>" + counter + "</td>";
  1815. cols += "<td>" + code + "</td>";
  1816. cols += "<td>" + name + "</td>";
  1817. cols += "<td>-</td>";
  1818. cols += "<td>" + quantity + "</td>";
  1819. cols += "<td>-</td>";
  1820. cols += "<td>" + price + "</td>";
  1821. cols += "<td>" + (price * quantity) + "</td>";
  1822. cols += "<td>" + discount + "</td>";
  1823. cols += "<td>" + ((price * quantity) - discount) + "</td>";
  1824. cols += "<td>" + tax + "</td>";
  1825. cols += "<td>" + (((price * quantity) - discount) + tax) + "</td>";
  1826. cols += "</tr>";
  1827. newRow.append(cols);
  1828. getnewRow = newRow;
  1829. $("#view_table-body").append(newRow);
  1830. counter++;
  1831. }
  1832. });
  1833. }
  1834. }
  1835.  
  1836.  
  1837. if (id_customer) {
  1838. $.ajax({
  1839. url : "<?php echo base_url('quotation/customer/') ?>" + id_customer,
  1840. type: "GET",
  1841. data: {
  1842. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  1843. },
  1844. datatype: "JSON",
  1845. success: function (data)
  1846. {
  1847. customer = JSON.parse(data);
  1848. var customer_name = customer[0].customer_name;
  1849. var customer_address = customer[0].address;
  1850. var customer_jalan = customer[0].jalan;
  1851. var customer_city = customer[0].ciname;
  1852. var customer_country = customer[0].coname;
  1853. var customer_mobile = customer[0].mobile;
  1854. var customer_email = customer[0].email;
  1855. $("#pcostumer_name").text(customer_name);
  1856. $("#pcostumer_address").text(customer_address);
  1857. $("#pcostumer_jalan").text(customer_jalan);
  1858. $("#pcostumer_city").text(customer_city);
  1859. $("#pcostumer_country").text(customer_country);
  1860. $("#pcostumer_mobile").text(customer_mobile);
  1861. $("#pcostumer_email").text(customer_email);
  1862.  
  1863. },
  1864. error: function (xhr, status, error)
  1865. {
  1866. alert(error);
  1867. }
  1868.  
  1869. });
  1870. }
  1871.  
  1872. $.ajax({
  1873. url : "<?php echo base_url('quotation/company/') ?>",
  1874. type: "GET",
  1875. data: {
  1876. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  1877. },
  1878. datatype: "JSON",
  1879. success: function (data)
  1880. {
  1881. customer = JSON.parse(data);
  1882. var company_name = customer[0].name;
  1883. var company_city = customer[0].city_name;
  1884. var company_country = customer[0].country_name;
  1885. var company_address = customer[0].billing_address;
  1886. var company_phone = customer[0].phone;
  1887. var company_email = customer[0].email;
  1888.  
  1889. $("#pcompany_name").text(company_name);
  1890. $("#pwarehouse_name").text(company_name);
  1891. $("#pbranch_address").text(company_address);
  1892. $("#pbranch_city").text(company_city);
  1893. $("#pcompany_phone").text(company_phone);
  1894. $("#company_email").text(company_email);
  1895.  
  1896. },
  1897. error: function (xhr, status, error)
  1898. {
  1899. alert(error);
  1900. }
  1901.  
  1902. });
  1903.  
  1904. var id = $('#kursdata').val();
  1905. $.ajax({
  1906. url: "<?php echo base_url('sales/getCurrencyAjax') ?>/" + id,
  1907. type: "GET",
  1908. data: {
  1909. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  1910. },
  1911. datatype: "JSON",
  1912. success: function (d)
  1913. {
  1914. data = JSON.parse(d);
  1915. var nominalkurs = data[0].nominal;
  1916. $('#pctrade').text(nominalkurs);
  1917. },
  1918. error: function (xhr, status, error)
  1919. {
  1920. alert(error);
  1921. }
  1922.  
  1923. });
  1924.  
  1925. if (paid_by == 'advance') {
  1926. document.getElementById('termin-other').style.display = 'none';
  1927. document.getElementById('termin-bulan').style.display = 'none';
  1928. }
  1929. if (paid_by == 'termin') {
  1930. document.getElementById('termin-bulan').style.display = 'block';
  1931. document.getElementById('termin-other').style.display = 'none';
  1932.  
  1933. var termins =$('#terminnumber').val();
  1934.  
  1935.  
  1936.  
  1937. for (var i = 1, length = termins; i <= termins; i++)
  1938. {
  1939. var nominal = $('#terminvalue'+i).val();
  1940. var ket = $('#terminket'+i).val();
  1941. var newRow = $("<tr>");
  1942. var cols = "";
  1943. cols += "<td>" + i + "</td>";
  1944. cols += "<td>" + ((nominal * pbalance)/100) + "</td>";
  1945. cols += "<td>" + nominal + "</td>";
  1946. cols += "<td>" + ket + "</td>";
  1947. cols += "</tr>";
  1948. newRow.append(cols);
  1949. getnewRow = newRow;
  1950. $("#table-termin-body").append(newRow);
  1951. }
  1952.  
  1953. }
  1954. if (paid_by == 'others') {
  1955. document.getElementById('termin-bulan').style.display = 'none';
  1956. document.getElementById('termin-other').style.display = 'block';
  1957. $('#termin-other-value').text(othervalue);
  1958. }
  1959. });
  1960.  
  1961. $("#submit").click(function (event) {
  1962. var name_regex = /^[a-zA-Z]+$/;
  1963. var sname_regex = /^[a-zA-Z0-9]+$/;
  1964. var num_regex = /^[0-9]+$/;
  1965. var date_regex = /^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/;
  1966. var date = $('#date').val();
  1967. var reference_no = $('#reference_no').val();
  1968. var biller = $('#biller').val();
  1969. var product = $('#product').val();
  1970. var customer = $('#customer').val();
  1971. var discount = $('#discount').val();
  1972. var internal_note = $('#internal_note').val();
  1973. var grand_total = $('#grand_total').val();
  1974.  
  1975. if (customer == "") {
  1976. $("#err_customer").text("Please Enter Customer");
  1977. $('#customer').focus();
  1978. return false;
  1979. } else {
  1980. $("#err_customer").text("");
  1981. }
  1982. //customer code validation complite.
  1983.  
  1984. if (grand_total == "" || grand_total == null || grand_total == 0.00) {
  1985. ;
  1986. $("#err_product").text("Please Select Product");
  1987. $('#product').focus();
  1988. return false;
  1989. }
  1990.  
  1991. });
  1992.  
  1993. $("#customer").change(function (event) {
  1994. var customer = $('#customer').val();
  1995. if (customer == "") {
  1996. $("#err_customer").text("Please Enter Customer");
  1997. $('#customer').focus();
  1998. return false;
  1999. } else {
  2000. $("#err_customer").text("");
  2001. }
  2002. });
  2003.  
  2004. $("#discount").change(function (event) {
  2005. var discount = $('#discount').val();
  2006. if (discount == "") {
  2007. $("#err_discount").text("Please Enter Discount");
  2008. $('#discount').focus();
  2009. return false;
  2010. } else {
  2011. $("#err_discount").text("");
  2012. }
  2013. if (discount != "") {
  2014. $.ajax({
  2015. url: "<?php echo base_url('sales/getDiscountAjax') ?>/" + discount,
  2016. type: "get",
  2017. dataType: "json",
  2018. success: function (data) {
  2019. var type = data[0].discount_type;
  2020. var value = data[0].discount_value;
  2021. var amount = parseInt(data[0].amount);
  2022. var grand_total = $('#grand_total').val();
  2023. $('#discount_type').val(type);
  2024. $('#total_discount').val(value);
  2025. $('#discount_amount').val(amount);
  2026. if (grand_total > 0 && grand_total != null) {
  2027. if (type == "Fixed") {
  2028. var t = grand_total - value;
  2029. if (grand_total < amount) {
  2030. var t = grand_total;
  2031. }
  2032. $('#lasttotal').text(t);
  2033. $('#last_total').val(t);
  2034. $('#totaldiscount').text(value);
  2035. $('#total_discount').val(value);
  2036. $('#discount_type').val(type);
  2037. $('#discount_amount').val(amount);
  2038. $('#showdiscount').text(" (Rs " + value + ")");
  2039. } else {
  2040. var total = (grand_total * value) / 100;
  2041. var t = grand_total - total;
  2042. $('#totaldiscount').text(total);
  2043. $('#total_discount').val(value);
  2044. $('#discount_type').val('');
  2045. $('#discount_amount').val('');
  2046. $('#lasttotal').text(t);
  2047. $('#last_total').val(t);
  2048. $('#showdiscount').text(" (" + value + "%)");
  2049. }
  2050. }
  2051. }
  2052. });
  2053. }
  2054. });
  2055.  
  2056. $("#product").blur(function (event) {
  2057. var sname_regex = /^[a-zA-Z0-9]+$/;
  2058. var product = $('#product').val();
  2059. if (product == null || product == "") {
  2060. $("#err_product").text("Please Enter Product Code/Name");
  2061. $('#product').focus();
  2062. return false;
  2063. } else {
  2064. $("#err_product").text("");
  2065. }
  2066. if (!product.match(sname_regex)) {
  2067. $('#err_product').text(" Please Enter Valid Product Code/Name ");
  2068. $('#product').focus();
  2069. return false;
  2070. } else {
  2071. $("#err_product").text("");
  2072. }
  2073. });
  2074. });
  2075. </script>
  2076. <script type="text/javascript">
  2077. var hitung = 1;
  2078. var getfromaddFields = 123;
  2079.  
  2080. function isNumber(evt) {
  2081. evt = (evt) ? evt : window.event;
  2082. var charCode = (evt.which) ? evt.which : evt.keyCode;
  2083. if (charCode > 31 && (charCode < 48 || charCode > 57)) {
  2084. return true;
  2085. }
  2086. return true;
  2087. }
  2088.  
  2089. function isNumber_max_100(evt) {
  2090. evt = (evt) ? evt : window.event;
  2091. var charCode = (evt.which) ? evt.which : evt.keyCode;
  2092. if (charCode > 31 && (charCode < 48 || charCode > 57)) {
  2093. return false;
  2094. }
  2095. getvarhit = hitung;
  2096. get_nax_100(getvarhit);
  2097. return true;
  2098. }
  2099.  
  2100. function get_nax_100(getvarhitloop) {
  2101. if (getvarhitloop == 1) {
  2102. $(".getterminvalue").on("change paste", function () {
  2103.  
  2104. hitjumlah = 0;
  2105. for (i = 0; i < getfromaddFields; i++) {
  2106. new_id = "terminvalue" + (i + 1);
  2107. number = document.getElementById(new_id).value;
  2108. if (number) {
  2109. hitjumlah = parseInt(hitjumlah) + parseInt(number);
  2110. }
  2111. }
  2112. if (hitjumlah > 100) {
  2113. alert('Termin melebihi 100')
  2114. }
  2115. });
  2116. }
  2117. hitung = 2;
  2118. }
  2119.  
  2120. jQuery.calculateDiscount = function calculateDiscount(row, data = 0) {
  2121. var discount;
  2122. if (data == 0) {
  2123. discount = +row.find('#discount_value').val();
  2124. } else {
  2125. discount = data;
  2126. }
  2127.  
  2128. var sales_total = +row.find('input[name^="linetotal"]').val();
  2129. var total_discount = sales_total * discount / 100;
  2130. row.find('#product_total').val(sales_total - total_discount);
  2131. row.find('#hidden_discount').val(total_discount);
  2132. var key = +row.find('input[name^="id"]').val();
  2133. product_data[key].discount = total_discount;
  2134. product_data[key].discount_value = +row.find('#discount_value').val();
  2135. product_data[key].discount_id = +row.find('#item_discount').val();
  2136. var table_data = JSON.stringify(product_data);
  2137. $('#table_data').val(table_data);
  2138. }
  2139.  
  2140. jQuery.calculateDiscountAdditional = function calculateDiscountAdditional(row, data = 0) {
  2141. var discount;
  2142.  
  2143. if (data == 0) {
  2144. discount = +row.find('#discount_value').val();
  2145. } else {
  2146. discount = data;
  2147. }
  2148.  
  2149. var sales_total = +row.find('input[name^="linetotal"]').val();
  2150. var total_discount = sales_total * discount / 100;
  2151.  
  2152. row.find('#product_total').val(sales_total - total_discount);
  2153. row.find('#hidden_discount').val(total_discount);
  2154.  
  2155. var key = +row.find('input[name^="id"]').val();
  2156. additional_data[key].discount = total_discount;
  2157. additional_data[key].discount_value = +row.find('#discount_value').val();
  2158. additional_data[key].discount_id = +row.find('#item_discount').val();
  2159.  
  2160. var table_data = JSON.stringify(additional_data);
  2161. $('#tableadditional_data').val(table_data);
  2162. }
  2163.  
  2164. jQuery.calculateDiscountService = function calculateDiscountService(row, data = 0)
  2165. {
  2166. var discount;
  2167.  
  2168. if (data == 0) {
  2169. discount = +row.find('#discountservice_value').val();
  2170. } else {
  2171. discount = data;
  2172. }
  2173.  
  2174. var sales_total = +row.find('input[name^="linetotalservice"]').val();
  2175. var total_discount = sales_total * discount / 100;
  2176.  
  2177. row.find('#service_total').val(sales_total - total_discount);
  2178. row.find('#hidden_discountservice').val(total_discount);
  2179.  
  2180. var key = +row.find('input[name^="idservice"]').val();
  2181. service_data[key].discount = total_discount;
  2182. service_data[key].discount_value = +row.find('#discountservice_value').val();
  2183. service_data[key].discount_id = +row.find('#item_discountservice').val();
  2184.  
  2185. var table_data = JSON.stringify(service_data);
  2186. $('#tableservice_data').val(table_data);
  2187.  
  2188. }
  2189.  
  2190. jQuery.calculateGrandTotal = function calculateGrandTotal(discountdatatext) {
  2191.  
  2192. var totalValue = 0;
  2193. var DiscountProduct = 0;
  2194. var grandTax = 0;
  2195. var grandTotal = 0;
  2196. var grandDiskon = 0;
  2197. var shippingCharge = 0;
  2198. $("table.service_table").find('input[name^="linetotalservice"]').each(function () {
  2199. totalValue += +$(this).val();
  2200. });
  2201. $("table.service_table").find('input[name^="hidden_discountservice"]').each(function () {
  2202. DiscountProduct += +$(this).val();
  2203. });
  2204.  
  2205. $("table.servicetable").find('input[name^="service_total"]').each(function () {
  2206. grandTotal += +$(this).val();
  2207. });
  2208. $("table.product_table").find('input[name^="linetotal"]').each(function () {
  2209. totalValue += +$(this).val();
  2210. });
  2211. $("table.product_table").find('input[name^="hidden_discount"]').each(function () {
  2212. DiscountProduct += +$(this).val();
  2213. });
  2214.  
  2215. $("table.product_table").find('input[name^="product_total"]').each(function () {
  2216. grandTotal += +$(this).val();
  2217. });
  2218. $("table.summary_table").find('input[name^="shipping_charge"]').each(function () {
  2219. shippingCharge = +$(this).val();
  2220. });
  2221.  
  2222. $("table.additional_table").find('input[name^="linetotal"]').each(function () {
  2223. totalValue += +$(this).val();
  2224. });
  2225. $("table.additional_table").find('input[name^="hidden_discount"]').each(function () {
  2226. DiscountProduct += +$(this).val();
  2227. });
  2228.  
  2229. $("table.additional_table").find('input[name^="product_total"]').each(function () {
  2230. grandTotal += +$(this).val();
  2231. });
  2232.  
  2233.  
  2234. var totaldiskon = 0;
  2235. grandDiskon = DiscountProduct;
  2236. var diskonval = 0;
  2237. var diskonval2 = 0;
  2238. var diskonpersen = 0;
  2239. diskonpersen = +$('#DiscountPersen').val();
  2240. diskonval2 = totalValue - DiscountProduct;
  2241. diskonval = (diskonpersen / 100) * diskonval2;
  2242. grandDiskon += diskonval;
  2243. grandDiskon += +$('#DiscountFix').val();
  2244. $('Span#totalDiscount').text(grandDiskon);
  2245. totaldiskon = grandDiskon;
  2246. grandTotal = grandTotal - totaldiskon + shippingCharge;
  2247.  
  2248. var taxx = $('#taxx').val();
  2249. grandTax = ((totalValue - totaldiskon) + shippingCharge) * (taxx / 100);
  2250. grandTotal = totalValue - totaldiskon + shippingCharge + grandTax;
  2251.  
  2252. var id = $('#kursdata').val();
  2253. $.ajax({
  2254. url: "<?php echo base_url('sales/getCurrencyAjax') ?>/" + id,
  2255. type: "GET",
  2256. data: {
  2257. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  2258. },
  2259. datatype: "JSON",
  2260. success: function (d)
  2261. {
  2262. //alert(d);
  2263. data = JSON.parse(d);
  2264. var symbolkurs = data[0].symbol;
  2265. var nominalkurs = data[0].nominal;
  2266. var grandval = $('#grand_total').val();
  2267. var totalkurs = (grandval * nominalkurs);
  2268.  
  2269. $('#kurs_symbol').text(symbolkurs);
  2270. $('#kurs_symbol1').text(symbolkurs);
  2271. $('#kurs_symbol2').text(symbolkurs);
  2272. $('#kurs_symbol3').text(symbolkurs);
  2273. $('#kurs_symbol4').text(symbolkurs);
  2274. $('#kurs_symbol5').text(symbolkurs);
  2275. $('#kurs_symbol6').text(symbolkurs);
  2276. $('#kurs_symbol7').text(symbolkurs);
  2277. $('#grandCurrency').text("Rp. " + totalkurs.toFixed(2));
  2278. $('#grandCurrency').val("Rp. " + totalkurs.toFixed(2));
  2279. $('#grand_currency').val(totalkurs.toFixed(2));
  2280. },
  2281. error: function (xhr, status, error)
  2282. {
  2283. alert(error);
  2284. }
  2285.  
  2286. });
  2287. $('#totalValue').text(totalValue.toFixed(2));
  2288. $('#total_value').val(totalValue.toFixed(2));
  2289. $('#DiscountProduct').text(DiscountProduct.toFixed(2));
  2290. $('#total_discount').val(totaldiskon);
  2291. $('#totalTax').text(grandTax.toFixed(2));
  2292. $('#total_tax').val(grandTax.toFixed(2));
  2293. $('#grandTotal').text(grandTotal.toFixed(2));
  2294. $('#grand_total').val(grandTotal.toFixed(2));
  2295. }
  2296. </script>
  2297. <script type="text/javascript">
  2298.  
  2299. $('#customer').change(function () {
  2300. var customer_id = $(this).val();
  2301. $.ajax({
  2302. url: "<?php echo base_url('sales/getCustomerData') ?>/" + customer_id,
  2303. type: "GET",
  2304. dataType: "JSON",
  2305. data: {
  2306. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  2307. },
  2308. success: function (data) {
  2309.  
  2310. $('#company_id').text('');
  2311. $('#company_name').text('');
  2312. $('#customer_name').text('');
  2313. $('#mobilephone').text('');
  2314. $('#email').text('');
  2315. $('#npwp').text('');
  2316. $('#alamat_npwp').text('');
  2317. $('#npwp').val(data['data'][0].gstid);
  2318. $('#alamat_npwp').val(data['data'][0].cf2);
  2319. $('#company_id').val(data['data'][0].cf1);
  2320. $('#company_name').val(data['data'][0].company_name);
  2321. $('#po_cust').val(data['data'][0].company_name);
  2322. $('#customer_name').val(data['data'][0].customer_name);
  2323. $('#mobilephone').val(data['data'][0].mobile);
  2324. $('#email').val(data['data'][0].email);
  2325.  
  2326. $('#customer_address')
  2327. .find('option')
  2328. .remove()
  2329. .end()
  2330. .append('<option value="">Select Shipping</option>')
  2331. ;
  2332.  
  2333. $('#customer_addressa')
  2334. .find('option')
  2335. .remove()
  2336. .end()
  2337. .append('<option value="">Select Billing</option>')
  2338. ;
  2339.  
  2340. $('#country').val('');
  2341. $('#state').val('');
  2342. $('#city').val('');
  2343.  
  2344. if (typeof data['address'][0] != 'undefined') {
  2345. var cid = data['address'][0].customer_id;
  2346. for (a = 0; a < data['address'].length; a++) {
  2347. if (data['address'][a].type == 0) {
  2348. $('#customer_address').append('<option value="' + data['address'][a].id + '">' + data['address'][a].address + '</option>');
  2349. }
  2350. }
  2351. } else {
  2352. var cid = "";
  2353. }
  2354.  
  2355. if (typeof data['address'][0] != 'undefined') {
  2356. var cid = data['address'][0].customer_id;
  2357. for (a = 0; a < data['address'].length; a++) {
  2358. if (data['address'][a].type == 1) {
  2359. $('#customer_addressa').append('<option value="' + data['address'][a].id + '">' + data['address'][a].address + '</option>');
  2360. }
  2361. }
  2362. } else {
  2363. var cid = "";
  2364. }
  2365. }
  2366. });
  2367.  
  2368. $("#single-input").empty().trigger("change");
  2369. number = '';
  2370. $('#single-input')
  2371. .find('option')
  2372. .remove()
  2373. .end()
  2374. .append('<option value="">Select Quotation</option>')
  2375. ;
  2376. $.ajax({
  2377. url: "<?php echo base_url('sales/getRecordAjax') ?>/" + customer_id,
  2378. type: "GET",
  2379. dataType: "JSON",
  2380. data: {
  2381. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  2382. },
  2383. success: function (data) {
  2384. for (a = 0; a < data['data'].length; a++) {
  2385. if (data['data'][a].reference_no2 != null) {
  2386. number = data['data'][a].reference_no2;
  2387. } else {
  2388. number = data['data'][a].reference_no;
  2389. }
  2390. $('#single-input').append('<option value="' + data['data'][a].quotation_id + '">' + number + '</option>');
  2391. }
  2392. },
  2393. error: function (jqxhr, status, exception) {
  2394. alert('Exception:', exception);
  2395. }
  2396. });
  2397.  
  2398. $("#multiple-input").empty().trigger("change");
  2399. number = '';
  2400. $('#multiple-input')
  2401. .find('option')
  2402. .remove()
  2403. .end()
  2404. .append('<option value="">Select Quotation</option>')
  2405. ;
  2406. $.ajax({
  2407. async: false,
  2408. url: "<?php echo base_url('sales/getRecordAjax') ?>/" + customer_id,
  2409. type: "GET",
  2410. dataType: "JSON",
  2411. data: {
  2412. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  2413. },
  2414. success: function (data) {
  2415. for (a = 0; a < data['data'].length; a++) {
  2416. if (data['data'][a].reference_no2 != null) {
  2417. number = data['data'][a].reference_no2;
  2418. } else {
  2419. number = data['data'][a].reference_no;
  2420. }
  2421. $('#multiple-input').append('<option value="' + data['data'][a].quotation_id + '">' + number + '</option>');
  2422. $("#multiple-input").trigger("change");
  2423. }
  2424. },
  2425. error: function (jqxhr, status, exception) {
  2426. alert('Exception:', exception);
  2427. }
  2428. });
  2429.  
  2430. });
  2431.  
  2432. $('#selectmultiple').change(function (){
  2433. var select = $(this).val();
  2434. if (select == 1) {
  2435. $('.single').show();
  2436. $('#single-input').attr('name', 'reference_no');
  2437. $('.multiple').hide();
  2438. $('#multiple-input').removeAttr('name','');
  2439. document.getElementById('preference_no').style.display = 'none';
  2440. } else {
  2441. $('.single').hide();
  2442. $('#single-input').attr('name', 'reference_no');
  2443. $('.multiple').show();
  2444. $('#multiple-input').removeAttr('name','');
  2445. document.getElementById('preference_no').style.display = 'none';
  2446. }
  2447. });
  2448.  
  2449. $('#multiple-input').change(function () {
  2450. var single = $('#selectmultiple').val();
  2451. if (single == 1) {
  2452. var refno = $(this).val();
  2453. if (refno != null) {
  2454. $.ajax({
  2455. url: "<?php echo base_url('quotation/getDataQuotation') ?>/" + refno,
  2456. type: "GET",
  2457. dataType: "JSON",
  2458. data: refno,
  2459. success: function (data) {
  2460. $('#DiscountPersen').val(parseInt(data[0].diskonpersen));
  2461. $('#DiscountFix').val(parseInt(data[0].diskon));
  2462. $('#shipping_charge').val(parseInt(data[0].shipping_charge));
  2463. $('#note').val(data[0].note);
  2464. $('#internal_note').val(data[0].internal_note);
  2465. $('#term_and_condition').val(data[0].term_and_condition);
  2466. $('#upcc').val(data[0].upcc);
  2467. $('#upcc2').val(data[0].upcc2);
  2468. $('#tax option[value='+ data[0].attn +']').attr('selected','selected');
  2469. $('#terminnumber option[value='+ data['termin'].length +']').attr('selected','selected');
  2470.  
  2471. $('input[name=paymenterms][value='+ data[0].paid_by +']').prop('checked', true).click();
  2472. if ('termin' == data[0].paid_by) {
  2473. var e = document.getElementById("terminnumber");
  2474. var number = e.options[e.selectedIndex].value;
  2475. getfromaddFields = number;
  2476. var container = document.getElementById("termincontainer");
  2477. while (container.hasChildNodes())
  2478. {
  2479. container.removeChild(container.lastChild);
  2480. }
  2481.  
  2482.  
  2483. var container = container.appendChild(document.createElement("table"));
  2484. container.className = "table table-bordered";
  2485. var container = container.appendChild(document.createElement("tbody"));
  2486. var artermin = data['termin'];
  2487. for (i = 0; i < number; i++)
  2488. {
  2489. var containertr = container.appendChild(document.createElement("tr"));
  2490. var containertd = containertr.appendChild(document.createElement("td"));
  2491. z = document.createElement('span');
  2492. z.innerHTML = "Termin Ke % " + (i + 1) + " :";
  2493. z.className = "text-danger";
  2494. containertd.appendChild(z);
  2495. var input = document.createElement("input");
  2496. input.type = "number";
  2497. input.name = "terminvalue[" + (i + 1) + "]";
  2498. input.id = "terminvalue[" + (i + 1)+"]";
  2499. input.className = "getterminvalue";
  2500. input.value = artermin[i].persen;
  2501. input.min = 1;
  2502. input.max = 100;
  2503. input.maxlength = "2";
  2504. input.onkeypress = isNumber_max_100;
  2505. var containertd = containertr.appendChild(document.createElement("td"));
  2506. containertd.appendChild(input);
  2507. z = document.createElement('span');
  2508. z.className = "text-primary";
  2509. z.innerHTML = ' Ket: ';
  2510. var containertd = containertr.appendChild(document.createElement("td"));
  2511. containertd.appendChild(z);
  2512. var input2 = document.createElement("input");
  2513. input2.type = "text";
  2514. input2.name = "terminket[" + (i + 1) + "]";
  2515. input2.id = "terminket[" + (i + 1)+"]";
  2516. input2.className = "getterminket";
  2517. input2.value = artermin[i].keterangan;
  2518. var containertd = containertr.appendChild(document.createElement("td"));
  2519. containertd.appendChild(input2);
  2520. }
  2521. }
  2522. },
  2523. error: function (jqxhr, status, exception) {
  2524. }
  2525. });
  2526. }
  2527. } else {
  2528. var refno = $(this).val().join('_');
  2529. }
  2530. $.ajax({
  2531. url: "<?php echo base_url('quotation/getQuotationItemsAjax') ?>/" + refno,
  2532. type: "GET",
  2533. dataType: "JSON",
  2534. data: refno,
  2535. success: function (data) {
  2536. product_data = Array();
  2537. $.generateItem(data);
  2538. },
  2539. error: function (jqxhr, status, exception) {
  2540. }
  2541. });
  2542. $.ajax({
  2543. url: "<?php echo base_url('quotation/getQuotationAdditionalAjax') ?>/" + refno,
  2544. type: "GET",
  2545. dataType: "JSON",
  2546. data: refno,
  2547. success: function (data) {
  2548. additional_data = Array();
  2549. $.generateAdditionalItem(data);
  2550. },
  2551. error: function (jqxhr, status, exception) {
  2552. }
  2553. });
  2554. $.ajax({
  2555. url: "<?php echo base_url('quotation/getQuotationServiceItemsAjax') ?>/" + refno,
  2556. type: "GET",
  2557. dataType: "JSON",
  2558. data: refno,
  2559. success: function (data) {
  2560. service_data = Array();
  2561. $.generateServiceItem(data);
  2562. },
  2563. error: function (jqxhr, status, exception) {
  2564. }
  2565. });
  2566. });
  2567.  
  2568. $('#single-input').change(function () {
  2569. var single = $('#selectmultiple').val();
  2570. if (single == 1) {
  2571. var refno = $(this).val();
  2572. if (refno != null) {
  2573. $.ajax({
  2574. url: "<?php echo base_url('quotation/getDataQuotation') ?>/" + refno,
  2575. type: "GET",
  2576. dataType: "JSON",
  2577. data: refno,
  2578. success: function (data) {
  2579. $('#DiscountPersen').val(parseInt(data[0].diskonpersen));
  2580. $('#DiscountFix').val(parseInt(data[0].diskon));
  2581. $('#shipping_charge').val(parseInt(data[0].shipping_charge));
  2582. $('#note').val(data[0].note);
  2583. $('#internal_note').val(data[0].internal_note);
  2584. $('#term_and_condition').val(data[0].term_and_condition);
  2585. $('#upcc').val(data[0].upcc);
  2586. $('#upcc2').val(data[0].upcc2);
  2587. $('#tax option[value='+ data[0].attn +']').attr('selected','selected');
  2588. $('#terminnumber option[value='+ data['termin'].length +']').attr('selected','selected');
  2589.  
  2590. $('input[name=paymenterms][value='+ data[0].paid_by +']').prop('checked', true).click();
  2591. if ('termin' == data[0].paid_by) {
  2592. var e = document.getElementById("terminnumber");
  2593. var number = e.options[e.selectedIndex].value;
  2594. getfromaddFields = number;
  2595. var container = document.getElementById("termincontainer");
  2596. while (container.hasChildNodes())
  2597. {
  2598. container.removeChild(container.lastChild);
  2599. }
  2600.  
  2601.  
  2602. var container = container.appendChild(document.createElement("table"));
  2603. container.className = "table table-bordered";
  2604. var container = container.appendChild(document.createElement("tbody"));
  2605. var artermin = data['termin'];
  2606. for (i = 0; i < number; i++)
  2607. {
  2608. var containertr = container.appendChild(document.createElement("tr"));
  2609. var containertd = containertr.appendChild(document.createElement("td"));
  2610. z = document.createElement('span');
  2611. z.innerHTML = "Termin Ke % " + (i + 1) + " :";
  2612. z.className = "text-danger";
  2613. containertd.appendChild(z);
  2614. var input = document.createElement("input");
  2615. input.type = "number";
  2616. input.name = "terminvalue[" + (i + 1) + "]";
  2617. input.id = "terminvalue[" + (i + 1)+"]";
  2618. input.className = "getterminvalue";
  2619. input.value = artermin[i].persen;
  2620. input.min = 1;
  2621. input.max = 100;
  2622. input.maxlength = "2";
  2623. input.onkeypress = isNumber_max_100;
  2624. var containertd = containertr.appendChild(document.createElement("td"));
  2625. containertd.appendChild(input);
  2626. z = document.createElement('span');
  2627. z.className = "text-primary";
  2628. z.innerHTML = ' Ket: ';
  2629. var containertd = containertr.appendChild(document.createElement("td"));
  2630. containertd.appendChild(z);
  2631. var input2 = document.createElement("input");
  2632. input2.type = "text";
  2633. input2.name = "terminket[" + (i + 1) + "]";
  2634. input2.id = "terminket[" + (i + 1)+"]";
  2635. input2.className = "getterminket";
  2636. input2.value = artermin[i].keterangan;
  2637. var containertd = containertr.appendChild(document.createElement("td"));
  2638. containertd.appendChild(input2);
  2639. }
  2640. }
  2641. },
  2642. error: function (jqxhr, status, exception) {
  2643. }
  2644. });
  2645. }
  2646. } else {
  2647. var refno = $(this).val().join('_');
  2648. }
  2649. $.ajax({
  2650. url: "<?php echo base_url('quotation/getQuotationItemsAjax') ?>/" + refno,
  2651. type: "GET",
  2652. dataType: "JSON",
  2653. data: refno,
  2654. success: function (data) {
  2655. product_data = Array();
  2656. $.generateItem(data);
  2657. },
  2658. error: function (jqxhr, status, exception) {
  2659. }
  2660. });
  2661. $.ajax({
  2662. url: "<?php echo base_url('quotation/getQuotationAdditionalAjax') ?>/" + refno,
  2663. type: "GET",
  2664. dataType: "JSON",
  2665. data: refno,
  2666. success: function (data) {
  2667. additional_data = Array();
  2668. $.generateAdditionalItem(data);
  2669. },
  2670. error: function (jqxhr, status, exception) {
  2671. }
  2672. });
  2673. $.ajax({
  2674. url: "<?php echo base_url('quotation/getQuotationServiceItemsAjax') ?>/" + refno,
  2675. type: "GET",
  2676. dataType: "JSON",
  2677. data: refno,
  2678. success: function (data) {
  2679. service_data = Array();
  2680. $.generateServiceItem(data);
  2681. },
  2682. error: function (jqxhr, status, exception) {
  2683. }
  2684. });
  2685. });
  2686.  
  2687. jQuery.generateItem = function generateItem(items) {
  2688.  
  2689. var counter = 1;
  2690. var aritem = items;
  2691. for (itemrec = 0; itemrec < aritem.length; itemrec++) {
  2692. (function (counter) {
  2693. var getnewRow;
  2694. var quotationid = aritem[itemrec].id;
  2695. var itemquantity = aritem[itemrec].quantity;
  2696. var itemprice = aritem[itemrec].qprice;
  2697. var itemdiscountid = aritem[itemrec].discount_id;
  2698. var itemdiscountid = aritem[itemrec].discount_id;
  2699. var itemdiscountvalue = aritem[itemrec].discount_value;
  2700. var itemdiscount = aritem[itemrec].discount;
  2701. var itemgross_total = aritem[itemrec].gross_total;
  2702. var product_id = aritem[itemrec].product_id;
  2703. var itemdesc = aritem[itemrec].serial_no;
  2704.  
  2705. if (product_id == null) {
  2706. alert('Product Tidak Terdaftar Lagi');
  2707. } else {
  2708. var flag = 0;
  2709. $('#err_product').text('');
  2710. $.ajax({
  2711. url: "<?php echo base_url('sales/getProduct') ?>/" + product_id,
  2712. type: "GET",
  2713. dataType: "JSON",
  2714. data: {
  2715. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  2716. },
  2717. success: function (data) {
  2718. $("table.product_table").find('input[name^="product_id"]').each(function () {
  2719. // if (data[0].product_id == +$(this).val()) {
  2720. // flag = 1;
  2721. // }
  2722. });
  2723. if (flag == 0) {
  2724. var id = data[0].product_id;
  2725. var price = itemprice;
  2726. var code = data[0].code;
  2727. var name = data[0].name;
  2728. var itembyp = data[0].item_namebyp;
  2729. var product = {"product_id": id,
  2730. "price": price, "desc": itemdesc
  2731. };
  2732. product_data[yi] = product;
  2733. length = product_data.length - 1;
  2734.  
  2735. var select_discount = "";
  2736. select_discount += '<div class="form-group">';
  2737. select_discount += '<select class="form-control select2" id="item_discount" name="item_discount" style="width: 100%;">';
  2738. select_discount += '<option value="">Select</option>';
  2739. var selected = '';
  2740. for (a = 0; a < data['discount'].length; a++) {
  2741. if (data['discount'][a].discount_id == itemdiscountid) {
  2742. selected = 'selected ';
  2743. } else {
  2744. selected = '';
  2745. }
  2746. select_discount += '<option ' + selected + 'value="' + data['discount'][a].discount_id + '">' + data['discount'][a].discount_name + '(' + data['discount'][a].discount_value + '%)' + '</option>';
  2747. }
  2748. select_discount += '</select></div>';
  2749.  
  2750. var newRow = $("<tr id='tr" + yi + "'>");
  2751. var cols = "";
  2752. cols += "<td><a class='deleteRow'> <img src='<?php echo base_url(); ?>assets/images/bin3.png' /> </a><input type='hidden' name='id' name='id' value=" + yi + "><input type='hidden' name='product_id' name='product_id' value=" + id + "></td>";
  2753. cols += "<td>" + code + "</td>";
  2754. cols += "<td>"
  2755. + "<input type='hidden' value='" + data[0].code + "' name='nameProduct" + counter + "' id='nameProduct" + counter + "'>"
  2756. + "<input type='hidden' value='" + data[0].product_id + "' name='idProduct" + counter + "' id='idProduct" + counter + "'>"
  2757. + name + "</td>";
  2758. cols += "<td>" + itembyp + "</td>";
  2759. cols += "<td><input type='text' class='form-control text-center' value='" + itemdesc + "' name='description" + counter + "' id='description" + counter + "' ></td>";
  2760. cols += "<td><input type='number' class='form-control text-center' value='" + itemquantity + "' data-rule='quantity' name='qty" + counter + "' id='qty" + counter + "' min='1' max='" + data[0].quantity + "'></td>";
  2761. cols += "<td id='column-color'>" + data[0].quantity + "<input type='hidden' name='available_quantity" + counter + "' id='available_quantity" + counter + "' value='" + data[0].quantity + "'></td>";
  2762. cols += "<td>" + data[0].unit + "</td>";
  2763.  
  2764. cols += "<td align='right'><span><input type='text' class='form-control text-right' value='" + price + "' name='price" + counter + "' id='price" + counter + "'></span></td>";
  2765.  
  2766. cols += "<td><span id='sub_total'><input type='text' class='form-control text-right' style='' value='" + itemgross_total + "' name='linetotal" + counter + "' id='linetotal" + counter + "' readonly></span></td>";
  2767.  
  2768. cols += '<td><input value="' + itemdiscountvalue + '" type="hidden" id="discount_value" name="discount_value"><input type="hidden" id="hidden_discount" name="hidden_discount">' + select_discount + '</td>';
  2769.  
  2770. cols += '<td><input type="text" class="form-control text-right" id="product_total" name="product_total" readonly></td>';
  2771. cols += "</tr>";
  2772.  
  2773. newRow.append(cols);
  2774. getnewRow = newRow;
  2775. $("table.product_table").append(newRow);
  2776. calculateRow($('tr#tr' + yi));
  2777. $.calculateDiscount($('tr#tr' + yi));
  2778. $.calculateGrandTotal();
  2779. counter++;
  2780. var table_data = JSON.stringify(product_data);
  2781. $('#table_data').val(table_data);
  2782. yi++;
  2783. } else {
  2784. $('#err_product').text('Product Already Added').animate({opacity: '0.0'}, 2000).animate({opacity: '0.0'}, 1000).animate({opacity: '1.0'}, 2000);
  2785. }
  2786. }
  2787. });
  2788. }
  2789. })(itemrec);
  2790. }
  2791.  
  2792.  
  2793.  
  2794. function calculateRow(row) {
  2795.  
  2796. var key = +row.find('input[name^="id"]').val();
  2797. var price = +row.find('input[name^="price"]').val();
  2798. var qty = +row.find('input[name^="qty"]').val();
  2799. var desc = row.find('input[name^="description"]').val();
  2800.  
  2801. row.find('input[name^="linetotal"]').val((price * qty).toFixed(2));
  2802.  
  2803. var availableqty = +row.find('input[name^="available_quantity"]').val();
  2804. var bookqty = qty - availableqty;
  2805. if (bookqty > 0) {
  2806. row.find('td[id^="column-color"]').css({'background-color': 'red'});
  2807. }
  2808.  
  2809. product_data[key].quantity = qty;
  2810. product_data[key].price = price;
  2811. product_data[key].desc = desc;
  2812. product_data[key].total = (price * qty).toFixed(2);
  2813. var table_data = JSON.stringify(product_data);
  2814. $('#table_data').val(table_data);
  2815. }
  2816.  
  2817. }
  2818.  
  2819. jQuery.generateAdditionalItem = function generateAdditionalItem(additional) {
  2820.  
  2821. var counter = 1;
  2822. var aritem = additional;
  2823. for (itemrec = 0; itemrec < aritem.length; itemrec++) {
  2824. (function (counter) {
  2825. var getnewRow;
  2826. var quotationid = aritem[itemrec].id;
  2827. var itemquantity = aritem[itemrec].quantity;
  2828. var itemprice = aritem[itemrec].qprice;
  2829. var itemdiscountid = aritem[itemrec].discount_id;
  2830. var itemdiscountid = aritem[itemrec].discount_id;
  2831. var itemdiscountvalue = aritem[itemrec].discount_value;
  2832. var itemdiscount = aritem[itemrec].discount;
  2833. var itemgross_total = aritem[itemrec].gross_total;
  2834. var product_id = aritem[itemrec].product_id;
  2835. var itemdesc = aritem[itemrec].desc;
  2836.  
  2837. if (product_id == null) {
  2838. alert('Additional Product Tidak Terdaftar Lagi');
  2839. } else {
  2840.  
  2841. var flag = 0;
  2842. $('#err_product').text('');
  2843. $.ajax({
  2844. url: "<?php echo base_url('sales/getProduct') ?>/" + product_id,
  2845. type: "GET",
  2846. dataType: "JSON",
  2847. data: {
  2848. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  2849. },
  2850. success: function (data) {
  2851. $("table.additional_table").find('input[name^="additional_id"]').each(function () {
  2852. // if (data[0].product_id == +$(this).val()) {
  2853. // flag = 1;
  2854. // }
  2855. });
  2856. if (flag == 0) {
  2857. var id = data[0].product_id;
  2858. var price = itemprice;
  2859. var code = data[0].code;
  2860. var name = data[0].name;
  2861. var itembyp = data[0].item_namebyp;
  2862. var product = {"additional_id": id,
  2863. "price": price, "desc": itemdesc
  2864. };
  2865. additional_data[j] = product;
  2866. length = additional_data.length - 1;
  2867.  
  2868. var select_discount = "";
  2869. select_discount += '<div class="form-group">';
  2870. select_discount += '<select class="form-control select2" id="item_discount" name="item_discount" style="width: 100%;">';
  2871. select_discount += '<option value="">Select</option>';
  2872. var selected = '';
  2873. for (a = 0; a < data['discount'].length; a++) {
  2874. if (data['discount'][a].discount_id == itemdiscountid) {
  2875. selected = 'selected ';
  2876. } else {
  2877. selected = '';
  2878. }
  2879. select_discount += '<option ' + selected + 'value="' + data['discount'][a].discount_id + '">' + data['discount'][a].discount_name + '(' + data['discount'][a].discount_value + '%)' + '</option>';
  2880. }
  2881. select_discount += '</select></div>';
  2882.  
  2883. var newRow = $("<tr id='tra" + j + "'>");
  2884. var cols = "";
  2885. cols += "<td><a class='deleteRow'> <img src='<?php echo base_url(); ?>assets/images/bin3.png' /> </a><input type='hidden' name='id' name='id' value=" + j + "><input type='hidden' name='additional_id' name='additional_id' value=" + id + "></td>";
  2886. cols += "<td>" + code + "</td>";
  2887. cols += "<td>"
  2888. + "<input type='hidden' value='" + data[0].code + "' name='nameProduct" + counter + "' id='nameProduct" + counter + "'>"
  2889. + "<input type='hidden' value='" + data[0].product_id + "' name='idProduct" + counter + "' id='idProduct" + counter + "'>"
  2890. + name + "</td>";
  2891. cols += "<td>" + itembyp + "</td>";
  2892. cols += "<td><input type='text' class='form-control text-center' value='" + itemdesc + "' name='description" + counter + "' id='description" + counter + "' ></td>";
  2893. cols += "<td><input type='number' class='form-control text-center' value='" + itemquantity + "' data-rule='quantity' name='qty" + counter + "' id='qty" + counter + "' min='1' max='" + data[0].quantity + "'></td>";
  2894. cols += "<td>" + data[0].quantity + "<input type='hidden' name='available_quantity" + counter + "' id='available_quantity" + counter + "' value='" + data[0].quantity + "'></td>";
  2895. cols += "<td>" + data[0].unit + "</td>";
  2896.  
  2897. cols += "<td align='right'><span><input type='text' class='form-control text-right' value='" + price + "' name='price" + counter + "' id='price" + counter + "'></span></td>";
  2898.  
  2899. cols += "<td><span id='sub_total'><input type='text' class='form-control text-right' style='' value='" + itemgross_total + "' name='linetotal" + counter + "' id='linetotal" + counter + "' readonly></span></td>";
  2900.  
  2901. cols += '<td><input value="' + itemdiscountvalue + '" type="hidden" id="discount_value" name="discount_value"><input type="hidden" id="hidden_discount" name="hidden_discount">' + select_discount + '</td>';
  2902.  
  2903. cols += '<td><input type="text" class="form-control text-right" id="product_total" name="product_total" readonly></td>';
  2904. cols += "</tr>";
  2905.  
  2906. newRow.append(cols);
  2907. getnewRow = newRow;
  2908. $("table.additional_table").append(newRow);
  2909. calculateRowAdditional($('tr#tra' + j));
  2910. $.calculateDiscountAdditional($('tr#tra' + j));
  2911. $.calculateGrandTotal();
  2912. counter++;
  2913. var table_data = JSON.stringify(additional_data);
  2914. $('#tableadditional_data').val(table_data);
  2915. j++;
  2916. } else {
  2917. $('#err_product').text('Product Already Added').animate({opacity: '0.0'}, 2000).animate({opacity: '0.0'}, 1000).animate({opacity: '1.0'}, 2000);
  2918. }
  2919. }
  2920. });
  2921. }
  2922. })(itemrec);
  2923. }
  2924.  
  2925.  
  2926.  
  2927. function calculateRowAdditional(row) {
  2928.  
  2929. var key = +row.find('input[name^="id"]').val();
  2930. var price = +row.find('input[name^="price"]').val();
  2931. var qty = +row.find('input[name^="qty"]').val();
  2932. var desc = row.find('input[name^="description"]').val();
  2933.  
  2934. row.find('input[name^="linetotal"]').val((price * qty).toFixed(2));
  2935.  
  2936. var availableqty = +row.find('input[name^="available_quantity"]').val();
  2937. var bookqty = qty - availableqty;
  2938. if (bookqty > 0) {
  2939. row.find('td[id^="column-color"]').css({'background-color': 'red'});
  2940. }
  2941.  
  2942. additional_data[key].quantity = qty;
  2943. additional_data[key].price = price;
  2944. additional_data[key].desc = desc;
  2945. additional_data[key].total = (price * qty).toFixed(2);
  2946. var table_data = JSON.stringify(additional_data);
  2947. $('#tableadditional_data').val(table_data);
  2948. }
  2949.  
  2950. }
  2951.  
  2952. jQuery.generateServiceItem = function generateServiceItem(serviceitem) {
  2953. var counter = 1;
  2954. var aritem = serviceitem;
  2955. for (itemrec = 0; itemrec < aritem.length; itemrec++) {
  2956. (function (counter) {
  2957. var getnewRowService;
  2958. var quotationid = aritem[itemrec].id;
  2959. var itemquantity = aritem[itemrec].quantity;
  2960. var itemprice = aritem[itemrec].qprice;
  2961. var itemdiscountid = aritem[itemrec].discount_id;
  2962. var itemdiscountvalue = aritem[itemrec].discount_value;
  2963. var itemdiscount = aritem[itemrec].discount;
  2964. var itemgross_total = aritem[itemrec].gross_total;
  2965. var service_id = aritem[itemrec].service_id;
  2966. var flag = 0;
  2967. $('#err_service').text('');
  2968. $.ajax({
  2969. url: "<?php echo base_url('sales/getService') ?>/" + service_id,
  2970. type: "GET",
  2971. dataType: "JSON",
  2972. data: {
  2973. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  2974. },
  2975. success: function (data) {
  2976. $("table.service_table").find('input[name^="service_id"]').each(function () {
  2977. if (data[0].service_id == +$(this).val()) {
  2978. flag = 1;
  2979. }
  2980. });
  2981. if (flag == 0)
  2982. {
  2983. var id = data[0].service_id;
  2984. var code = data[0].code;
  2985. var name = data[0].service_title;
  2986. var price = itemprice;
  2987. if (price == null) {
  2988. price = 0;
  2989. }
  2990. var product = {"service_id": id,
  2991. "price": price
  2992. };
  2993. service_data[k] = product;
  2994. length = service_data.length - 1;
  2995.  
  2996. var select_discount = "";
  2997. select_discount += '<div class="form-group">';
  2998. select_discount += '<select class="form-control select2" id="item_discountservice" name="item_discountservice" style="width: 100%;">';
  2999. select_discount += '<option value="">Select</option>';
  3000. var selected = '';
  3001. for (a = 0; a < data['discount'].length; a++) {
  3002. if (data['discount'][a].discount_id == itemdiscountid) {
  3003. selected = 'selected ';
  3004. } else {
  3005. selected = '';
  3006. }
  3007. select_discount += '<option ' + selected + 'value="' + data['discount'][a].discount_id + '">' + data['discount'][a].discount_name + '(' + data['discount'][a].discount_value + '%)' + '</option>';
  3008. }
  3009. select_discount += '</select></div>';
  3010.  
  3011. var newRowService = $("<tr id='trv" + counter + "'>");
  3012. var cols = "";
  3013. cols += "<td><a class='deleteRow'> <img src='<?php echo base_url(); ?>assets/images/bin3.png' /> </a><input type='hidden' name='idservice' name='idservice' value=" + k + "><input type='hidden' name='service_id' name='service_id' value=" + id + "></td>";
  3014. cols += "<td>" + code + "</td>";
  3015. cols += "<td>"
  3016. + "<input type='hidden' value='' name='nameService" + counter + "' id='nameService" + counter + "'>"
  3017. + name + "</td>";
  3018. cols += "<td>"
  3019. + "<input type='number' class='form-control text-center' value='" + itemquantity + "' data-rule='quantity' name='qtyservice" + counter + "' id='qtyservice" + counter + "' min='0' max='2'>"
  3020. + "</td>";
  3021. cols += "<td align='right'>"
  3022. + "<span id='price'>"
  3023. + "<input type='text' class='form-control text-right' name='priceservice" + counter + "' id='priceservice" + counter + "' value='" + price
  3024. + "'>"
  3025. + "</span>"
  3026. + "</td>";
  3027. cols += "<td>"
  3028. + "<span id='sub_total'>"
  3029. + "<input type='text' class='form-control text-right' style='' value='" + itemgross_total + "' name='linetotalservice" + counter + "' id='linetotalservice" + counter + "' readonly>"
  3030. + "</span>"
  3031. + "</td>";
  3032. cols += '<td><input type="hidden" value="' + itemdiscountvalue + '" id="discountservice_value" name="discountservice_value"><input type="hidden" id="hidden_discountservice" name="hidden_discountservice">' + select_discount + '</td>';
  3033. cols += '<td><input type="text" class="form-control text-right" id="service_total" name="service_total" readonly></td>';
  3034. cols += "</tr>";
  3035. newRowService.append(cols);
  3036. getnewRowService = newRowService;
  3037. $("table.service_table").append(newRowService);
  3038. calculateRowService($('tr#trv' + k));
  3039. $.calculateDiscountService($('tr#trv' + k));
  3040. $.calculateGrandTotal();
  3041. counter++;
  3042. var table_data = JSON.stringify(service_data);
  3043. $('#tableservice_data').val(table_data);
  3044. k++;
  3045. } else {
  3046. $('#err_product').text('Product Already Added').animate({opacity: '0.0'}, 2000).animate({opacity: '0.0'}, 1000).animate({opacity: '1.0'}, 2000);
  3047. }
  3048. }
  3049. });
  3050. })(itemrec);
  3051. }
  3052.  
  3053. function calculateRowService(row)
  3054. {
  3055. var key = +row.find('input[name^="idservice"]').val();
  3056. var price = +row.find('input[name^="priceservice"]').val();
  3057. var qty = +row.find('input[name^="qtyservice"]').val();
  3058. var total = +row.find('input[name^="linetotalservice"]').val();
  3059. row.find('input[name^="linetotalservice"]').val((price * qty).toFixed(2));
  3060. service_data[key].price = price;
  3061. service_data[key].quantity = qty;
  3062. service_data[key].total = total;
  3063. var table_data = JSON.stringify(service_data);
  3064. $('#tableservice_data').val(table_data);
  3065. }
  3066. }
  3067. </script>
  3068. <script>
  3069. $(document).ready(function () {
  3070. $.ajax({
  3071. url: "<?php echo base_url('customer/getState') ?>/" + 102,
  3072. type: "GET",
  3073. dataType: "JSON",
  3074. data: {
  3075. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  3076. },
  3077. success: function (data) {
  3078. for (a = 0; a < data.length; a++) {
  3079. $('#statec').append('<option value="' + data[a].id + '">' + data[a].name + '</option>');
  3080. }
  3081. }
  3082. });
  3083. });
  3084.  
  3085. $('#countryc').change(function () {
  3086. $('#statec').html('');
  3087. $('#statec').html('<option value="">Select State</option>');
  3088. var country_id = $('#countryc').val();
  3089. $.ajax({
  3090. url: "<?php echo base_url('customer/getState') ?>/" + country_id,
  3091. type: "GET",
  3092. dataType: "JSON",
  3093. data: {
  3094. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  3095. },
  3096. success: function (data) {
  3097. for (a = 0; a < data.length; a++) {
  3098. $('#statec').append('<option value="' + data[a].id + '">' + data[a].name + '</option>');
  3099. }
  3100. }
  3101. });
  3102. });
  3103.  
  3104. $('#statec').change(function () {
  3105. $('#cityc').html('');
  3106. $('#cityc').html('<option value="">Select City</option>');
  3107. var state_id = $('#statec').val();
  3108. $.ajax({
  3109. url: "<?php echo base_url('customer/getCity') ?>/" + state_id,
  3110. type: "GET",
  3111. dataType: "JSON",
  3112. data: {
  3113. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  3114. },
  3115. success: function (data) {
  3116. for (a = 0; a < data.length; a++) {
  3117. $('#cityc').append('<option value="' + data[a].id + '">' + data[a].name + '</option>');
  3118. }
  3119. }
  3120. });
  3121. });
  3122.  
  3123. $('#btn_submit').click(function (e) {
  3124. e.preventDefault();
  3125. $.ajax({
  3126. url: '<?php echo base_url('customer/test') ?>',
  3127. datatype: 'JSON',
  3128. method: 'POST',
  3129. data: {
  3130. 'customer_name': $('#c_name').val(),
  3131. 'address': $("#c_address").val(),
  3132. 'country': $("#countryc").val(),
  3133. 'state': $("#statec").val(),
  3134. 'city': $("#cityc").val(),
  3135. 'mobile': $('#c_mobile').val()
  3136. },
  3137. success: function (data) {
  3138. if (data == 1) {
  3139. $('#myModal').modal('hide');
  3140. updateCostumer();
  3141. } else {
  3142. alert("Try again");
  3143. }
  3144. }
  3145. })
  3146. })
  3147.  
  3148. function updateCostumer() {
  3149. $('#customer').html('');
  3150. $('#customer').html('<option value="">Select Customer</option>');
  3151. $.ajax({
  3152. url: "<?php echo base_url('customer/getData') ?>",
  3153. type: "GET",
  3154. dataType: "JSON",
  3155. data: {
  3156. '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  3157. },
  3158. success: function (data) {
  3159. for (a = 0; a < data.length; a++) {
  3160. $('#customer').append('<option value="' + data[a].customer_id + '">' + data[a].customer_name + '</option>');
  3161. }
  3162. }
  3163. });
  3164. }
  3165.  
  3166. function checkAvailability() {
  3167. $("#loaderIcon").show();
  3168. jQuery.ajax({
  3169. url: "<?php echo base_url('customer/checkCompany_name') ?>",
  3170. data: 'company_name=' + $("#company_name").val(),
  3171. type: "POST",
  3172. success: function(data) {
  3173. $("#user-availability-status").html(data);
  3174. $("#loaderIcon").hide();
  3175. },
  3176. error: function() {}
  3177. });
  3178. }
  3179. </script>
RAW Paste Data