Built files from Bizgaze WebServer
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

dues.component.js 51KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678
  1. var Bizgaze;
  2. (function (Bizgaze) {
  3. let Apps;
  4. (function (Apps) {
  5. let Transact;
  6. (function (Transact) {
  7. let Controls;
  8. (function (Controls) {
  9. class Dues extends Unibase.Platform.Core.BaseComponent {
  10. init(formpropertyid, prop, callback) {
  11. var instance = this;
  12. instance.flag = 0;
  13. instance.isDueLoading = false;
  14. var jsfiles = ['apps/transact/managers/payments/paymentmanager.js', 'platform/core/helpers/numberhelper/numberhelper.js'];
  15. instance.fileCacheHelper.loadJsFiles(jsfiles, function () {
  16. });
  17. }
  18. loadControl(containerid, prop) {
  19. var instance = this;
  20. instance.transactionId = prop.FormPropertyId;
  21. var html = '<div class="col-sm-12 transactonList_div transactonList_div_TRN' + instance.transactionId + ' p-0"><div class="transactonList_item transactonList_item_TRN' + instance.transactionId + '" name="' + instance.transactionId + '"><div id="dueControl_transactonListDiv" class="col-sm-12 transactonList_div transactonList_div_TRN2 p-0"><div class="row rowDues" id="dueControlList"><input type="hidden" id="hf_TotalDiscountAmount" value=""/><input type="hidden" id="hf_DiscountAccountId" value="0"/><input type="hidden" id="hf_PenalityAccountId" value="0"/><input type="hidden" id="hf_TDSAccountId" value="0"/><input type="hidden" id="hf_DiscountAccountName" value=""/><input type="hidden" id="hf_PenalityAccountName" value=""/><input type="hidden" id="hf_TDSAccountName" value=""/><div class="col-sm-3 mt-20 text-ul"><u><a href="javascript:;" class="h6" onclick="Bizgaze.Apps.Transact.Controls.Dues.Instance().toggleDues(\'TRN' + instance.transactionId + '\');" style="color:#5ba8fb;">Dues : <span class="txtDuesTotalAmt">0.00</span></a></u></div>' +
  22. '<div class="col-sm-3"></div><div class="d-none d-sm-block col-sm-3 text-right m-r-n"><div class="mt-10"><a href="javascript:;" name="disabled" class="btn btn-sm btn-success" onclick="Bizgaze.Apps.Transact.Controls.Dues.Instance().AutoAdjustDues(\'TRN' + instance.transactionId + '\');" id="btnAutoAdjustDues">Auto Adjust</a></div></div><div class="block d-sm-none col-sm-2 m-r-n"><div class="mt-10"><a href="javascript:;" name="disabled" class="btn btn-sm btn-success" onclick="Bizgaze.Apps.Transact.Controls.Dues.Instance().AutoAdjustDues(\'TRN' + instance.transactionId + '\');" id="btnAutoAdjustDues">Auto Adjust</a></div></div><div class="col-sm-3"><div class="floating-label-form-group m-t-md"><input data-trnid="TRN' + instance.transactionId + '" class="form-control txtTotalDueAdjusted txtTotalDueAdjusted_TRN' + instance.transactionId + ' floating-label-control m-b-n" type="text" style="cursor: not-allowed;" disabled="disabled"/></div></div></div>' +
  23. '<input type="hidden" id="hdn_duecontrol" class="value-control" value="Bizgaze.Apps.Transact.Controls.Dues.Instance().dueControlObj(\'TRN' + instance.transactionId + '\');"/>' +
  24. '<section class="mt-5 secDues secDues_TRN' + instance.transactionId + ' hidden"><div class="list-group divDue_List"></div></section>';
  25. $("#" + containerid).html(html);
  26. var controlType = "0";
  27. if (prop.PropertySettings != null) {
  28. for (var i = 0; i < prop.PropertySettings.length; i++) {
  29. var data = prop.PropertySettings[i];
  30. if (data.ControlPropertyName == "ControlType" && data.ControlPropertyValue != "") {
  31. controlType = data.ControlPropertyValue;
  32. }
  33. }
  34. }
  35. if (controlType == "1") {
  36. instance.journalTypeId = 2;
  37. }
  38. else if (controlType == "2") {
  39. instance.journalTypeId = 1;
  40. }
  41. else if (controlType == "3") {
  42. }
  43. }
  44. loadPaymentDues(contactId) {
  45. var instance = this;
  46. if (contactId != null && contactId != 0 && contactId != undefined) {
  47. var instance = this;
  48. var trnId = instance.transactionId;
  49. var paymentid = 0;
  50. if (Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.length != 0) {
  51. var InstalledAppId = Unibase.Themes.Providers.DetailHelper.installedAppId;
  52. var hiddenFieldPaymentId = Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_paymentid");
  53. if (hiddenFieldPaymentId != null || hiddenFieldPaymentId != undefined) {
  54. paymentid = Number(hiddenFieldPaymentId.Value);
  55. }
  56. }
  57. var lobid = Number($(".txtAutoComplete_lobid").val());
  58. if (isNaN(lobid)) {
  59. lobid = 0;
  60. }
  61. var date = "";
  62. var userDate = $(".date_journaldate").val();
  63. if (userDate != undefined && userDate != null && userDate != "") {
  64. var formattedUserDate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatServerDate(userDate);
  65. date = moment(formattedUserDate).format("YYYY-MM-DD");
  66. }
  67. else {
  68. var curDate = Unibase.Platform.Helpers.DateTimeHelper.Instance().currentDate();
  69. date = moment(curDate).format("YYYY-MM-DD");
  70. }
  71. var duesTotalBal = 0;
  72. var adjustedTotal = 0;
  73. instance.isDueLoading = true;
  74. instance.navigationHelper.showLoading();
  75. var element = $('.transactonList_item_TRN' + trnId + '');
  76. Bizgaze.Apps.Transact.Managers.PaymentManager.Instance().getPendings(Number(contactId), paymentid, null, instance.journalTypeId, lobid, date, "Dues").then(function (response) {
  77. var totalDue = 0;
  78. var result = response.result;
  79. var divDues = element.find('.divDue_List');
  80. $(divDues).empty();
  81. $(divDues).html('<div class="list-group-item m-b-n divDue_List_item hidden"></div>');
  82. if (result.length != 0) {
  83. for (var i = 0; i < result.length; i++) {
  84. var item = result[i];
  85. if (i == 0) {
  86. $("#hf_DiscountAccountId").val(item.DiscountAccountId);
  87. $("#hf_PenalityAccountId").val(item.PenalityAccountId);
  88. $("#hf_TDSAccountId").val(item.TDSAccountId);
  89. $("#hf_DiscountAccountName").val(item.DiscountAccountName);
  90. $("#hf_PenalityAccountName").val(item.PenalityAccountName);
  91. $("#hf_TDSAccountName").val(item.TDSAccountName);
  92. var accountsObj = {
  93. DiscountAccountId: item.DiscountAccountId,
  94. PenalityAccountId: item.PenalityAccountId,
  95. TDSAccountId: item.TDSAccountId,
  96. DiscountAccountName: item.DiscountAccountName,
  97. PenalityAccountName: item.PenalityAccountName,
  98. TDSAccountName: item.TDSAccountName,
  99. };
  100. Bizgaze.Apps.Transact.Controls.PaymentSummary.Instance().bindAccounts(accountsObj);
  101. }
  102. adjustedTotal += item.Amount;
  103. duesTotalBal += Number(item.JournalAlloc.TotalAmount - item.JournalAlloc.AdjustedAmount);
  104. function datediff(date2, today) {
  105. today = new Date(today.split('/')[2], today.split('/')[1] - 1, today.split('/')[0]);
  106. date2 = new Date(date2.split('/')[2], date2.split('/')[1] - 1, date2.split('/')[0]);
  107. var timeDiff = Math.abs(today.getTime() - date2.getTime());
  108. var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
  109. return diffDays;
  110. }
  111. var today = new Date();
  112. var dd = today.getDate();
  113. var mm = today.getMonth() + 1;
  114. var yyyy = today.getFullYear();
  115. if (dd < 10) {
  116. dd = '0' + dd;
  117. }
  118. if (mm < 10) {
  119. mm = '0' + mm;
  120. }
  121. today = dd + '/' + mm + '/' + yyyy;
  122. var dBalance = 0;
  123. var tBalance = 0;
  124. dBalance = Number(item.JournalAlloc.TotalAmount - item.JournalAlloc.AdjustedAmount);
  125. instance.damount = dBalance;
  126. tBalance = Number(item.JournalAlloc.TotalAmount);
  127. var date = $(".date_journaldate").val().toString();
  128. var NumOfDays = 0;
  129. if (paymentid == 0) {
  130. NumOfDays = datediff(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateformat(item.JournalAlloc.JournalDate, null), date);
  131. }
  132. else {
  133. var PaymentDate = Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_paymentdate").Value;
  134. NumOfDays = datediff(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateformat(item.JournalAlloc.JournalDate, null), date);
  135. }
  136. instance.bindDuesHtml(item, dBalance, NumOfDays, trnId, tBalance);
  137. }
  138. }
  139. if (duesTotalBal > 0)
  140. element.find('.txtDuesTotalAmt').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(duesTotalBal, 2));
  141. else
  142. element.find('.txtDuesTotalAmt').text("0.00");
  143. if (duesTotalBal > 0) {
  144. $(".anchor_totalDue").text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(duesTotalBal, 2));
  145. }
  146. else {
  147. $(".anchor_totalDue").text("0.00");
  148. }
  149. }).then(function () {
  150. $(".txtTotalDueAdjusted").val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(adjustedTotal, 2));
  151. $(".secDues").removeClass("hidden");
  152. element.find('.secDues_' + trnId + '').addClass('hidden');
  153. Bizgaze.Apps.Transact.Controls.PaymentSummary.Instance().updatePaymentSummaryTotal();
  154. instance.isDueLoading = false;
  155. var isWalletLoading = Bizgaze.Apps.Transact.Controls.Wallet.Instance().isWalletLoading;
  156. if (instance.isDueLoading == false && isWalletLoading == false) {
  157. instance.navigationHelper.hideLoading();
  158. }
  159. });
  160. }
  161. }
  162. toggleDues(trnId) {
  163. var instance = this;
  164. var element = $('.transactonList_item_' + trnId + '');
  165. element.find('.secDues_' + trnId + '').toggleClass('hidden');
  166. }
  167. AutoAdjustDues(trnId) {
  168. var instance = this;
  169. var element = $('.transactonList_item_' + trnId + '');
  170. var btnColor = $(element).find('#btnAutoAdjustDues').attr('class');
  171. if ($(element).find('#btnAutoAdjustDues').attr("name") == "enabled") {
  172. }
  173. else {
  174. $(element).find('#btnAutoAdjustDues').attr("name", "enabled");
  175. }
  176. instance.updatePayment(trnId);
  177. var totAdj = 0;
  178. $(element).find('.divDue_Item').each(function () {
  179. var xyz = Number($(this).find('.txtCurrentAmount').val());
  180. if (!isNaN(xyz))
  181. totAdj += xyz;
  182. });
  183. $('.txtTotalDueAdjusted').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(totAdj, 2));
  184. Bizgaze.Apps.Transact.Controls.PaymentSummary.Instance().updatePaymentSummaryTotal();
  185. }
  186. clearDues() {
  187. var instance = this;
  188. var trnId = "TRN" + instance.transactionId;
  189. var totalDueAdjAmt = Number($(".totAdjusted").first().text());
  190. var totalCreditAmt = Number($(".totAmount").first().text());
  191. if ((totalDueAdjAmt < totalCreditAmt) || (totalDueAdjAmt > totalCreditAmt)) {
  192. $(".txtTotalDueAdjusted").val(0);
  193. $(".totAdjusted").text(0.00);
  194. var elementforPayment = $('.transactonList_item_' + trnId + '');
  195. $(elementforPayment).find('.divDue_Item').each(function () {
  196. $(this).find('.txtCurrentAmount').val(0);
  197. var walletAmt = $(this).find('.hfDueAmount').val();
  198. $(this).find('.lblDueBalance').val(walletAmt);
  199. });
  200. }
  201. }
  202. updatePayment(trnId) {
  203. var instance = this;
  204. var element = $('.transactonList_item_' + trnId + '');
  205. var advanceAmt = 0;
  206. var total = 0;
  207. var ttWalAdj = Number($('.txtTotalWalletAdjusted').val());
  208. var totWalAdj = (isNaN(ttWalAdj)) ? 0 : Number($('.txtTotalWalletAdjusted').val());
  209. var prevamount = Number($("#txt_TotalCreditAmount").val()) + totWalAdj;
  210. $(".paymentmodelistitem").each(function () {
  211. if (!($(this).hasClass("hidden"))) {
  212. var amount = Number($(this).find('.paymentamount').val());
  213. $(this).find('.amount').text(amount);
  214. total = Number(prevamount) + Number(amount);
  215. prevamount = total;
  216. }
  217. });
  218. var paymentTotal = Number(total) == 0 ? prevamount : Number(total);
  219. $("#hf_TotalCreditAmount").val(paymentTotal);
  220. $(element).find('.divDue_Item').each(function (index) {
  221. var amount = Number($("#txt_TotalCreditAmount").val());
  222. var txtDiscountAmount = Number($(this).find('.txtDiscountAmount').val());
  223. var txtTdsAmount = Number($(this).find('.txtTdsAmount').val());
  224. var currentAmount = Number($(this).find('.txtCurrentAmount').val());
  225. var discamount = Number($(this).find('.hfDiscountAmount').val());
  226. var tdsamount = Number($(this).find('.hfTdsAmount').val());
  227. var dueAmount = 0;
  228. if ((discamount == 0) && (tdsamount == 0)) {
  229. $('.lblDueBalance').val();
  230. dueAmount = Number($(this).find('.hfDueAmount').val()) - txtDiscountAmount - txtTdsAmount;
  231. }
  232. if ((discamount != 0) && (tdsamount != 0)) {
  233. dueAmount = (Number($(this).find('.hfDueAmount').val()) + tdsamount + discamount) - txtDiscountAmount - txtTdsAmount;
  234. }
  235. if ((discamount != 0) && (tdsamount == 0)) {
  236. dueAmount = (Number($(this).find('.hfDueAmount').val()) + discamount) - txtDiscountAmount - txtTdsAmount;
  237. }
  238. if ((discamount == 0) && (tdsamount != 0)) {
  239. dueAmount = (Number($(this).find('.hfDueAmount').val()) + tdsamount) - txtDiscountAmount - txtTdsAmount;
  240. }
  241. var txtCurrentAmt = 0;
  242. if (paymentTotal >= dueAmount) {
  243. if (dueAmount != 0) {
  244. paymentTotal -= dueAmount;
  245. txtCurrentAmt = dueAmount;
  246. dueAmount = 0;
  247. advanceAmt = paymentTotal;
  248. }
  249. }
  250. else {
  251. dueAmount -= paymentTotal;
  252. txtCurrentAmt = paymentTotal;
  253. paymentTotal = 0;
  254. }
  255. if (Number(paymentTotal) < 0.01) {
  256. paymentTotal = 0;
  257. }
  258. $(this).find('.txtCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(txtCurrentAmt, 2));
  259. $(this).find('.lblDueBalance').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(dueAmount, 2));
  260. });
  261. }
  262. bindDuesHtml(item, dBalance, NumOfDays, formPropId, tBalance) {
  263. var instance = this;
  264. var discAmount = item.DiscountAmount;
  265. if (item.PaymentTermMode == 2) {
  266. discAmount = discAmount * -1;
  267. }
  268. var tdsAttr = "";
  269. if (item.TCSAmount > 0) {
  270. tdsAttr = "disabled";
  271. }
  272. var journalAlloc = item.JournalAlloc;
  273. var Amount = item.Amount;
  274. var html = '<div class="list-group-item divDue_Item" id="divDue_List_item_' + journalAlloc.JournalId + '"><div class="row">' +
  275. '<input type="hidden" class="hf_JournalAllocId" value="' + journalAlloc.JournalAllocId + '" />' +
  276. '<input type="hidden" class="hf_RefAllocId" value="' + journalAlloc.RefAllocId + '" />' +
  277. '<div class="col-sm-3"><div class="floating-label-form-group m-b floating-label-form-group-with-value" style="border:0px"><span class="h6">' + journalAlloc.JournalNo + ' (' + Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(tBalance, 2) + ')</span><br/><input class="form-control value-control text-dark" disabled type="text" value="' + Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateformat(journalAlloc.JournalDate, null) + ' (' + NumOfDays + ' days)"></div></div>' +
  278. '<div class="col-sm-2"><div class="floating-label-form-group m-b floating-label-form-group-with-value" style="border:0px"><span class="h6">Balance</span><input class="hfOrgDueAmount" type="hidden" value="' + Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(dBalance - discAmount - item.TDSAmount, 2) + '"><input class="hfDueAmount" type="hidden" value="' + Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(dBalance - discAmount - item.TDSAmount, 2) + '"><input id="lblDueBalance_' + journalAlloc.JournalId + '" class="form-control value-control lblDueBalance text-dark" disabled type="text" value="' + Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(dBalance - discAmount - Amount - item.TDSAmount, 2) + '" placeholder="Balance" data-label="Balance"></div></div>' +
  279. '<div class="col-sm-2"><div class="floating-label-form-group m-b floating-label-form-group-with-value"><span class="h6">Discount</span><br /><input class="hfDiscountAmount" type="hidden" value="' + Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(discAmount, 2) + '" /><input class="form-control value-control floating-label-control txtDiscountAmount" type="text" value="' + Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(discAmount, 2) + '" id="txtDiscountAmount_' + journalAlloc.JournalId + '" class="form-control value-control floating-label-control txtCurrentAmount" placeholder="Discount Amount" data-label="Discount Amount" onclick="this.select()" onkeypress="return Bizgaze.Apps.Transact.Controls.Dues.Instance().isSignDecimalplusNoLongPress(event,this.id)" onkeyup="Bizgaze.Apps.Transact.Controls.Dues.Instance().discountValidation(event,this.id,\'' + journalAlloc.JournalId + '\',\'' + "TRN" + formPropId + '\')" /></div></div>' +
  280. '<div class="col-sm-2"><div class="floating-label-form-group m-b floating-label-form-group-with-value"><span class="h6">TDS</span><br /><input class="hfTdsAmount" type="hidden" value="' + Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(item.TDSAmount, 2) + '" /><input class="form-control value-control floating-label-control txtTdsAmount" ' + tdsAttr + ' type="text" value="' + Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(item.TDSAmount, 2) + '" id="txtTdsAmount_' + journalAlloc.JournalId + '" class="form-control value-control floating-label-control" placeholder="TDS Amount" data-label="TDS Amount" onclick="this.select()" oninput="return Bizgaze.Apps.Transact.Controls.Dues.Instance().isDecimalplusNoLongPress(event,this.id)" onkeyup="Bizgaze.Apps.Transact.Controls.Dues.Instance().tdsValidation(event,this.id,\'' + journalAlloc.JournalId + '\',\'' + "TRN" + formPropId + '\')" /></div></div>' +
  281. '<div class="col-sm-3"><div class="floating-label-form-group m-b"><span class="h6">Adjusted Amount</span><br><input id="txtCurrentAmount_' + journalAlloc.JournalId + '" type="text" data-previousvalue="0" value="' + Amount + '" class="form-control value-control floating-label-control txtCurrentAmount" placeholder="Amount" data-label="Amount" onclick="this.select()" oninput="return Bizgaze.Apps.Transact.Controls.Dues.Instance().isDecimalplusNoLongPress(event,this.id)" onkeyup="Bizgaze.Apps.Transact.Controls.Dues.Instance().AdjustDueAmount(event,\'' + journalAlloc.JournalId + '\',\'' + "TRN" + formPropId + '\');"/></div></div>' +
  282. '</div></div>';
  283. var element = $('.transactonList_item_TRN' + formPropId + '');
  284. element.find('.divDue_List_item').before(html);
  285. }
  286. bindDueEvents() {
  287. }
  288. tdsValidation(evt, id, jId, trnId) {
  289. var instance = this;
  290. instance.flag = 0;
  291. var val = document.getElementById(id);
  292. var curDueAmount = Number(val.value);
  293. var elementforPayment = $('.transactonList_item_' + trnId);
  294. var element = elementforPayment.find('#divDue_List_item_' + jId);
  295. var tdsAccountId = Number($("#hf_TDSAccountId").val());
  296. var totDueAmount = Number($(element).find('.hfDueAmount').val());
  297. instance.AdjustDueAmount(evt, jId, trnId);
  298. if (totDueAmount < curDueAmount) {
  299. $(element).find('.txtTdsAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(0, 2));
  300. Unibase.Platform.Forms.Components.FormViewer.Instance().showError("TDSAmount cannot be greater than Due Amount");
  301. return false;
  302. }
  303. var adjustedAmt = $(element).find('.txtCurrentAmount').val();
  304. if (adjustedAmt != 0) {
  305. Bizgaze.Apps.Transact.Controls.PaymentSummary.Instance().updatePaymentSummaryTotal();
  306. }
  307. return true;
  308. }
  309. discountValidation(evt, id, jId, trnId) {
  310. var instance = this;
  311. instance.flag = 0;
  312. var val = document.getElementById(id);
  313. var isNegativeValue = (val.value.match(/-/g) || []).length;
  314. var curDueAmount = Number(val.value);
  315. var elementforPayment = $('.transactonList_item_' + trnId);
  316. var element = elementforPayment.find('#divDue_List_item_' + jId);
  317. var discountAccountId = Number($("#hf_DiscountAccountId").val());
  318. var penalityAccountId = Number($("#hf_PenalityAccountId").val());
  319. var totDueAmount = Number($(element).find('.hfDueAmount').val());
  320. var isDiscAmount = Math.sign(curDueAmount);
  321. if (isNaN(isDiscAmount)) {
  322. $(element).find('.txtDiscountAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(0, 2));
  323. return false;
  324. }
  325. instance.AdjustDueAmount(evt, jId, trnId);
  326. if (totDueAmount < curDueAmount) {
  327. $(element).find('.txtDiscountAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(0, 2));
  328. Unibase.Platform.Forms.Components.FormViewer.Instance().showError("Discount cannot be greater than Due Amount");
  329. return false;
  330. }
  331. var adjustedAmt = $(element).find('.txtCurrentAmount').val();
  332. if (adjustedAmt != 0) {
  333. Bizgaze.Apps.Transact.Controls.PaymentSummary.Instance().updatePaymentSummaryTotal();
  334. }
  335. return true;
  336. }
  337. AdjustDueAmount(event, jId, trnId) {
  338. var instance = this;
  339. instance.flag = 0;
  340. const maxAmt = Number($(event.target).parents('.divDue_Item').find('.hfOrgDueAmount').val());
  341. const currVal = Number($(event.target).val());
  342. if (currVal > maxAmt) {
  343. $(event.target).val(maxAmt);
  344. }
  345. var formId = $(".transactonList_div_" + trnId).parents("form").attr("id").split('_')[1];
  346. var elementforPayment = $('.transactonList_item_' + trnId + '');
  347. var totDue = 0;
  348. var totDueAmt = Number(elementforPayment.find('.txtDuesTotalAmt').text());
  349. $(elementforPayment).find('.divDue_Item').each(function () {
  350. var xyz = Number($(this).find('.txtCurrentAmount').val());
  351. if (!isNaN(xyz))
  352. totDue += xyz;
  353. });
  354. var element = elementforPayment.find('#divDue_List_item_' + jId + '');
  355. var previousValue = $(element).find('.txtCurrentAmount').data("previousvalue");
  356. var crAmt = totDueAmt;
  357. var totalAmt = Number($(".totAmount").first().text());
  358. var OrgdueAmount = Number($(element).find('.hfOrgDueAmount').val());
  359. var DueAmount = Number($(element).find('.hfDueAmount').val());
  360. var txtCurrentAmt = $(element).find('.txtCurrentAmount').val();
  361. var txtDiscountAmt = Number($(element).find('.txtDiscountAmount').val());
  362. var txtTDSAmt = Number($(element).find('.txtTdsAmount').val());
  363. var hf_DiscountAmount = Number($(element).find(".hfDiscountAmount").val());
  364. var hf_TDSAmount = Number($(element).find(".hfTdsAmount").val());
  365. var lblDueBalance = Number($(element).find(".lblDueBalance").val());
  366. var totalAmount = OrgdueAmount + hf_DiscountAmount + hf_TDSAmount;
  367. var txtDueBal = 0;
  368. if ((txtCurrentAmt == 0 || txtCurrentAmt == "") && txtDiscountAmt != 0 && txtTDSAmt != 0 && hf_DiscountAmount == 0 && hf_TDSAmount == 0) {
  369. txtDueBal = OrgdueAmount - txtDiscountAmt - txtTDSAmt;
  370. }
  371. else if ((txtCurrentAmt == 0 || txtCurrentAmt == "") && txtDiscountAmt != 0 && txtTDSAmt == 0 && hf_DiscountAmount == 0 && hf_TDSAmount == 0) {
  372. txtDueBal = OrgdueAmount - txtDiscountAmt - txtTDSAmt;
  373. }
  374. else if (txtCurrentAmt != 0 && txtDiscountAmt != 0 && txtTDSAmt != 0 && hf_DiscountAmount == 0 && hf_TDSAmount == 0) {
  375. txtDueBal = OrgdueAmount - txtDiscountAmt - txtTDSAmt;
  376. }
  377. else if ((txtCurrentAmt != 0) && txtDiscountAmt == 0 && txtTDSAmt != 0 && hf_DiscountAmount == 0 && hf_TDSAmount == 0) {
  378. txtDueBal = OrgdueAmount - txtDiscountAmt - txtTDSAmt;
  379. }
  380. else if ((txtCurrentAmt == 0 || txtCurrentAmt == "") && txtDiscountAmt == 0 && txtTDSAmt == 0 && hf_DiscountAmount != 0) {
  381. txtDueBal = OrgdueAmount + hf_DiscountAmount;
  382. }
  383. else if ((txtCurrentAmt == 0 || txtCurrentAmt == "") && txtDiscountAmt == 0 && txtTDSAmt != 0 && hf_DiscountAmount == 0 && hf_TDSAmount == 0) {
  384. txtDueBal = OrgdueAmount - txtDiscountAmt - txtTDSAmt;
  385. }
  386. else if ((txtCurrentAmt != 0) && txtDiscountAmt != 0 && txtTDSAmt != 0 && lblDueBalance != 0) {
  387. txtDueBal = totalAmount - txtDiscountAmt - txtTDSAmt;
  388. }
  389. else if ((txtCurrentAmt != 0) && txtDiscountAmt != 0 && hf_TDSAmount != 0 && lblDueBalance == 0 && totalAmount != txtCurrentAmt && hf_DiscountAmount == 0) {
  390. txtDueBal = Number(txtCurrentAmt) - txtDiscountAmt;
  391. }
  392. else if ((txtCurrentAmt != 0) && txtDiscountAmt != 0 && hf_TDSAmount != 0 && lblDueBalance == 0 && totalAmount != txtCurrentAmt && hf_DiscountAmount != 0 && txtTDSAmt != 0) {
  393. txtDueBal = totalAmount - txtDiscountAmt - txtTDSAmt;
  394. }
  395. else if ((txtCurrentAmt != 0) && txtDiscountAmt != 0 && txtTDSAmt != 0 && lblDueBalance == 0) {
  396. txtDueBal = OrgdueAmount - txtTDSAmt;
  397. }
  398. else if ((txtCurrentAmt == 0 || txtCurrentAmt == "") && txtDiscountAmt == 0 && txtTDSAmt != 0) {
  399. txtDueBal = OrgdueAmount + hf_DiscountAmount;
  400. }
  401. else if ((txtCurrentAmt == 0 || txtCurrentAmt == "") && txtDiscountAmt != 0 && txtTDSAmt == 0 && hf_DiscountAmount != 0) {
  402. txtDueBal = (OrgdueAmount + hf_TDSAmount + hf_DiscountAmount) - txtDiscountAmt;
  403. }
  404. else if ((txtCurrentAmt != 0) && txtDiscountAmt == 0 && txtTDSAmt == 0 && lblDueBalance == 0 && hf_DiscountAmount != 0) {
  405. txtDueBal = OrgdueAmount + hf_DiscountAmount;
  406. }
  407. else if ((txtDiscountAmt == 0 && hf_DiscountAmount != 0) && (txtTDSAmt == 0 && hf_TDSAmount != 0) && txtCurrentAmt == 0) {
  408. txtDueBal = totalAmount;
  409. }
  410. else if (txtCurrentAmt != 0 && txtDiscountAmt != 0 && txtTDSAmt == 0 && lblDueBalance != 0) {
  411. txtDueBal = totalAmount - txtDiscountAmt - txtTDSAmt;
  412. }
  413. else if (txtCurrentAmt != 0 && txtDiscountAmt == 0 && txtTDSAmt == 0 && lblDueBalance != 0) {
  414. txtDueBal = totalAmount - txtTDSAmt;
  415. }
  416. else if (txtCurrentAmt != 0 && txtDiscountAmt != 0 && txtTDSAmt == 0 && lblDueBalance == 0 && txtCurrentAmt == totalAmount) {
  417. txtDueBal = totalAmount - txtDiscountAmt;
  418. }
  419. else if (txtCurrentAmt != 0 && txtDiscountAmt != 0 && txtTDSAmt == 0 && lblDueBalance == 0) {
  420. txtDueBal = OrgdueAmount + hf_DiscountAmount - txtDiscountAmt;
  421. }
  422. else if (txtCurrentAmt == lblDueBalance && txtCurrentAmt != "" && txtCurrentAmt != 0) {
  423. txtDueBal = OrgdueAmount + hf_DiscountAmount + hf_TDSAmount;
  424. }
  425. else if (txtCurrentAmt != 0 && txtDiscountAmt != 0 && txtTDSAmt != 0 && hf_DiscountAmount == 0 && hf_TDSAmount == 0) {
  426. txtDueBal = OrgdueAmount - txtDiscountAmt - txtTDSAmt;
  427. }
  428. else if (txtCurrentAmt == 0 && DueAmount != 0 && OrgdueAmount != 0 && hf_DiscountAmount != 0 && hf_TDSAmount != 0 && txtDiscountAmt != 0 && txtTDSAmt != 0) {
  429. txtDueBal = OrgdueAmount;
  430. }
  431. else if (txtCurrentAmt == 0 && txtDiscountAmt != 0 && hf_TDSAmount != 0 && hf_DiscountAmount == 0 && hf_TDSAmount != 0) {
  432. txtDueBal = OrgdueAmount - txtDiscountAmt;
  433. }
  434. else if (totalAmount == txtCurrentAmt) {
  435. txtDueBal = totalAmount;
  436. }
  437. else {
  438. txtDueBal = OrgdueAmount;
  439. }
  440. if (txtDueBal < 0) {
  441. txtDueBal = 0;
  442. }
  443. $(' #lblDueBalance_' + jId + '').val(txtDueBal);
  444. if (totDue <= crAmt) {
  445. if (totDue <= totalAmt) {
  446. if (totDue <= totDueAmt) {
  447. if (txtCurrentAmt == 0 || txtCurrentAmt == undefined) {
  448. $(element).find('.txtCurrentAmount').val(0.00);
  449. $(element).find('.lblDueBalance').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(txtDueBal, 2));
  450. var ttWallet = 0;
  451. $(elementforPayment).find('.divDue_Item').each(function () {
  452. var pqr = Number($(this).find('.txtCurrentAmount').val());
  453. if (!isNaN(pqr))
  454. ttWallet += pqr;
  455. });
  456. $(elementforPayment).find('.txtTotalDueAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(ttWallet, 2));
  457. Bizgaze.Apps.Transact.Controls.PaymentSummary.Instance().updatePaymentSummaryTotal();
  458. var currentValue = Number($(element).find('.txtCurrentAmount').val());
  459. $(element).find('.txtCurrentAmount').data("previousvalue", currentValue);
  460. return false;
  461. }
  462. if (Number(txtCurrentAmt) + txtDiscountAmt + txtTDSAmt > OrgdueAmount) {
  463. var walletAmount_ = 0;
  464. if ((hf_DiscountAmount != 0 && txtDiscountAmt == 0)) {
  465. walletAmount_ = Number(hf_DiscountAmount);
  466. }
  467. else if ((hf_TDSAmount != 0 && txtTDSAmt == 0)) {
  468. walletAmount_ = walletAmount_ + Number(hf_TDSAmount);
  469. }
  470. if (txtDiscountAmt == 0) {
  471. $(element).find('.txtDiscountAmount').val(0.00);
  472. }
  473. if (txtTDSAmt == 0) {
  474. $(element).find('.txtTdsAmount').val(0.00);
  475. }
  476. $(element).find('.txtCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(txtDueBal, 2));
  477. if (txtCurrentAmt == totalAmount) {
  478. $(element).find('.lblDueBalance').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(0, 2));
  479. }
  480. else {
  481. $(element).find('.lblDueBalance').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(walletAmount_, 2));
  482. }
  483. }
  484. else {
  485. var walletAmount = txtDueBal - Number(txtCurrentAmt);
  486. if (walletAmount < 0) {
  487. walletAmount = 0;
  488. }
  489. if (hf_TDSAmount != 0 && txtTDSAmt == 0 && txtDiscountAmt == 0 && hf_DiscountAmount != 0) {
  490. walletAmount = hf_DiscountAmount + hf_TDSAmount + walletAmount;
  491. }
  492. $(element).find('.txtCurrentAmount').val(txtCurrentAmt);
  493. $(element).find('.lblDueBalance').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(walletAmount, 2));
  494. }
  495. var ttWallet = 0;
  496. $(elementforPayment).find('.divDue_Item').each(function () {
  497. var pqr = Number($(this).find('.txtCurrentAmount').val());
  498. if (!isNaN(pqr))
  499. ttWallet += pqr;
  500. });
  501. $(elementforPayment).find('.txtTotalDueAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(ttWallet, 2));
  502. }
  503. else {
  504. $(element).find('.txtCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(OrgdueAmount - txtDiscountAmt - txtTDSAmt, 2));
  505. $(element).find('.lblDueBalance').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(0, 2));
  506. var ttWallet = 0;
  507. $(elementforPayment).find('.divDue_List_item').each(function () {
  508. var pqr = Number($(this).find('.txtCurrentAmount').val());
  509. if (!isNaN(pqr))
  510. ttWallet += pqr;
  511. });
  512. $(elementforPayment).find('.txtTotalDueAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(ttWallet, 2));
  513. }
  514. }
  515. else {
  516. MessageHelper.Instance().showError("You cannot adjust without enough credits", 'div_ErrorMessage_' + formId);
  517. $(element).find('.txtCurrentAmount').val(previousValue);
  518. }
  519. }
  520. else {
  521. var ttWallet = 0;
  522. $(elementforPayment).find('.divDue_Item').each(function () {
  523. var pqr = Number($(this).find('.txtCurrentAmount').val());
  524. if (!isNaN(pqr))
  525. ttWallet += pqr;
  526. });
  527. var newAmt = Number(crAmt) - (Number(ttWallet) - Number(txtCurrentAmt));
  528. var OldCurAdjAmt = Number($(element).find('.txtCurrentAmount').val());
  529. if (newAmt >= 0) {
  530. if (newAmt >= Number($(element).find('.hfDueAmount').val())) {
  531. var curAdjAmt = ttWallet - OldCurAdjAmt;
  532. var newAdjAmt = txtDueBal;
  533. $(element).find('.txtCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(newAdjAmt, 2));
  534. $(element).find('.lblDueBalance').val(0.00);
  535. $(elementforPayment).find('.txtTotalDueAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(curAdjAmt + newAdjAmt, 2));
  536. }
  537. else {
  538. var curAdjAmt = ttWallet - OldCurAdjAmt;
  539. var newAdjAmt = OrgdueAmount - newAmt;
  540. $(element).find('.txtCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(newAmt, 2));
  541. $(element).find('.lblDueBalance').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(newAdjAmt, 2));
  542. $(elementforPayment).find('.txtTotalDueAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(curAdjAmt + newAdjAmt, 2));
  543. }
  544. }
  545. else {
  546. $(element).find('.txtCurrentAmount').val(0);
  547. $(element).find('.lblDueBalance').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(Number($(element).find('.hfWalletAmount').val()), 2));
  548. $(elementforPayment).find('.txtTotalDueAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(ttWallet, 2));
  549. }
  550. }
  551. Bizgaze.Apps.Transact.Controls.PaymentSummary.Instance().updatePaymentSummaryTotal();
  552. var currentValue = Number($(element).find('.txtCurrentAmount').val());
  553. $(element).find('.txtCurrentAmount').data("previousvalue", currentValue);
  554. }
  555. isDecimalplusNoLongPress(evt, id) {
  556. let value = $('#' + id).val();
  557. var charCode = (evt.which) ? evt.which : evt.keyCode;
  558. if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode == 46) {
  559. return false;
  560. }
  561. if (value) {
  562. if (value.split('.').length >= 2) {
  563. if (value.split('.')[1]) {
  564. if (value.split('.')[1].length >= 2) {
  565. let valNew = parseFloat(`${value}`).toFixed(2);
  566. $('#' + id).val(valNew);
  567. }
  568. }
  569. }
  570. }
  571. return true;
  572. }
  573. isSignDecimalplusNoLongPress(evt, id) {
  574. var instance = this;
  575. instance.flag++;
  576. var charCode = (evt.which) ? evt.which : evt.keyCode;
  577. if (instance.flag <= 4) {
  578. if (charCode == 46) {
  579. var val = document.getElementById(id);
  580. var txt = val.value;
  581. if (!(txt.indexOf(".") > -1)) {
  582. return true;
  583. }
  584. }
  585. if (charCode == 45) {
  586. return true;
  587. }
  588. if (charCode > 31 && (charCode < 48 || charCode > 57))
  589. return false;
  590. }
  591. else {
  592. return false;
  593. }
  594. return true;
  595. }
  596. initFlag() {
  597. var instance = this;
  598. instance.flag = 0;
  599. }
  600. loadControlSettings(controlsettingjson, formpropertyid) {
  601. return ``;
  602. }
  603. loadPropertySettings(propertysettings, formpropertyid) {
  604. if (propertysettings != null) {
  605. for (var i = 0; i < propertysettings.length; i++) {
  606. var data = propertysettings[i];
  607. if (data.ControlPropertyName == "ControlType" && data.ControlPropertyValue != "") {
  608. $("#hdn_" + formpropertyid).attr("ControlType", data.ControlPropertyValue);
  609. $("#hdn_" + formpropertyid).val(data.ControlPropertyValue);
  610. }
  611. }
  612. }
  613. }
  614. bindEditFormDetails(formpropertyid, propval, DocPropertyName) {
  615. return ``;
  616. }
  617. dueControlObj(trnId) {
  618. var walletamount = Number($('.txtTotalWalletAdjusted').val());
  619. var dueamount = Number($('.txtTotalDueAdjusted ').val());
  620. if (walletamount > 0 && dueamount == 0) {
  621. Unibase.Platform.Forms.Components.FormViewer.Instance().showError("Error! Wallet amount is not adjusted against Dues. Remove the excess amount from wallets & save!");
  622. return false;
  623. }
  624. var instance = this;
  625. var element = $('.transactonList_item_' + trnId + '');
  626. var data = new Array();
  627. element.find('.divDue_Item').each(function (index) {
  628. var balanceAmount = Number($(this).find('.lblDueBalance').val());
  629. var isDueObj = false;
  630. if ($(this).find('.txtCurrentAmount').val() != 0 && $(this).find('.txtCurrentAmount').val() != '' && $(this).find('.txtCurrentAmount').val() != undefined) {
  631. isDueObj = true;
  632. }
  633. else if (!isNaN(balanceAmount) && balanceAmount == 0) {
  634. isDueObj = true;
  635. }
  636. if (isDueObj) {
  637. var jAId = Number($(this).find('.hf_JournalAllocId').val());
  638. var journalTypeId = 2;
  639. var discountAmount = Number($(this).find('.txtDiscountAmount').val());
  640. var tdsAmount = Number($(this).find('.txtTdsAmount').val());
  641. if (instance.journalTypeId == 1) {
  642. data.push({
  643. JournalAllocId: isNaN(jAId) ? 0 : jAId,
  644. Credit: Number($(this).find('.txtCurrentAmount').val()),
  645. RefAllocId: Number($(this).find('.hf_RefAllocId').val()),
  646. AllocType: 2,
  647. AllocTypeId: 2,
  648. Discount: discountAmount,
  649. TDSAmount: tdsAmount,
  650. });
  651. }
  652. else if (journalTypeId == 2) {
  653. data.push({
  654. JournalAllocId: isNaN(jAId) ? 0 : jAId,
  655. Debit: Number($(this).find('.txtCurrentAmount').val()),
  656. RefAllocId: Number($(this).find('.hf_RefAllocId').val()),
  657. AllocType: 2,
  658. AllocTypeId: 2,
  659. Discount: discountAmount,
  660. TDSAmount: tdsAmount,
  661. });
  662. }
  663. }
  664. });
  665. return data;
  666. }
  667. static Instance() {
  668. if (this.instance === undefined) {
  669. this.instance = new Dues();
  670. }
  671. return this.instance;
  672. }
  673. }
  674. Controls.Dues = Dues;
  675. })(Controls = Transact.Controls || (Transact.Controls = {}));
  676. })(Transact = Apps.Transact || (Apps.Transact = {}));
  677. })(Apps = Bizgaze.Apps || (Bizgaze.Apps = {}));
  678. })(Bizgaze || (Bizgaze = {}));