Built files from Bizgaze WebServer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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 = {}));