Built files from Bizgaze WebServer
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

dues.component.js 54KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704
  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_conversionrate" value=""/><input type="hidden" id="hf_currencyid" 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 conversionRate = item.ConversionRate;
  128. $("#hf_conversionrate").val(conversionRate);
  129. var currencyId = item.CurrencyId;
  130. $("#hf_currencyid").val(currencyId);
  131. var date = $(".date_journaldate").val().toString();
  132. var NumOfDays = 0;
  133. if (paymentid == 0) {
  134. NumOfDays = datediff(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateformat(item.JournalAlloc.JournalDate, null), date);
  135. }
  136. else {
  137. var PaymentDate = Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_paymentdate").Value;
  138. NumOfDays = datediff(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateformat(item.JournalAlloc.JournalDate, null), date);
  139. }
  140. instance.bindDuesHtml(item, dBalance, NumOfDays, trnId, tBalance);
  141. }
  142. }
  143. if (duesTotalBal > 0)
  144. element.find('.txtDuesTotalAmt').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(duesTotalBal, 2));
  145. else
  146. element.find('.txtDuesTotalAmt').text("0.00");
  147. if (duesTotalBal > 0) {
  148. $(".anchor_totalDue").text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(duesTotalBal, 2));
  149. }
  150. else {
  151. $(".anchor_totalDue").text("0.00");
  152. }
  153. }).then(function () {
  154. $(".txtTotalDueAdjusted").val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(adjustedTotal, 2));
  155. $(".secDues").removeClass("hidden");
  156. element.find('.secDues_' + trnId + '').addClass('hidden');
  157. Bizgaze.Apps.Transact.Controls.PaymentSummary.Instance().updatePaymentSummaryTotal();
  158. instance.isDueLoading = false;
  159. var isWalletLoading = Bizgaze.Apps.Transact.Controls.Wallet.Instance().isWalletLoading;
  160. if (instance.isDueLoading == false && isWalletLoading == false) {
  161. instance.navigationHelper.hideLoading();
  162. }
  163. });
  164. }
  165. }
  166. toggleDues(trnId) {
  167. var instance = this;
  168. var element = $('.transactonList_item_' + trnId + '');
  169. element.find('.secDues_' + trnId + '').toggleClass('hidden');
  170. }
  171. AutoAdjustDues(trnId) {
  172. var instance = this;
  173. var element = $('.transactonList_item_' + trnId + '');
  174. var btnColor = $(element).find('#btnAutoAdjustDues').attr('class');
  175. if ($(element).find('#btnAutoAdjustDues').attr("name") == "enabled") {
  176. }
  177. else {
  178. $(element).find('#btnAutoAdjustDues').attr("name", "enabled");
  179. }
  180. instance.updatePayment(trnId);
  181. var totAdj = 0;
  182. $(element).find('.divDue_Item').each(function () {
  183. var xyz = Number($(this).find('.txtCurrentAmount').val());
  184. if (!isNaN(xyz))
  185. totAdj += xyz;
  186. });
  187. $('.txtTotalDueAdjusted').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(totAdj, 2));
  188. Bizgaze.Apps.Transact.Controls.PaymentSummary.Instance().updatePaymentSummaryTotal();
  189. }
  190. clearDues() {
  191. var instance = this;
  192. var trnId = "TRN" + instance.transactionId;
  193. var totalDueAdjAmt = Number($(".totAdjusted").first().text());
  194. var totalCreditAmt = Number($(".totAmount").first().text());
  195. if ((totalDueAdjAmt < totalCreditAmt) || (totalDueAdjAmt > totalCreditAmt)) {
  196. $(".txtTotalDueAdjusted").val(0);
  197. $(".totAdjusted").text(0.00);
  198. var elementforPayment = $('.transactonList_item_' + trnId + '');
  199. $(elementforPayment).find('.divDue_Item').each(function () {
  200. $(this).find('.txtCurrentAmount').val(0);
  201. var walletAmt = $(this).find('.hfDueAmount').val();
  202. $(this).find('.lblDueBalance').val(walletAmt);
  203. });
  204. }
  205. }
  206. updatePayment(trnId) {
  207. var instance = this;
  208. var element = $('.transactonList_item_' + trnId + '');
  209. var advanceAmt = 0;
  210. var total = 0;
  211. var ttWalAdj = Number($('.txtTotalWalletAdjusted').val());
  212. var totWalAdj = (isNaN(ttWalAdj)) ? 0 : Number($('.txtTotalWalletAdjusted').val());
  213. var prevamount = Number($("#txt_TotalCreditAmount").val()) + totWalAdj;
  214. $(".paymentmodelistitem").each(function () {
  215. if (!($(this).hasClass("hidden"))) {
  216. var amount = Number($(this).find('.paymentamount').val());
  217. $(this).find('.amount').text(amount);
  218. total = Number(prevamount) + Number(amount);
  219. prevamount = total;
  220. }
  221. });
  222. var paymentTotal = Number(total) == 0 ? prevamount : Number(total);
  223. $("#hf_TotalCreditAmount").val(paymentTotal);
  224. $(element).find('.divDue_Item').each(function (index) {
  225. var amount = Number($("#txt_TotalCreditAmount").val());
  226. var txtDiscountAmount = Number($(this).find('.txtDiscountAmount').val());
  227. var txtTdsAmount = Number($(this).find('.txtTdsAmount').val());
  228. var currentAmount = Number($(this).find('.txtCurrentAmount').val());
  229. var discamount = Number($(this).find('.hfDiscountAmount').val());
  230. var tdsamount = Number($(this).find('.hfTdsAmount').val());
  231. var dueAmount = 0;
  232. if ((discamount == 0) && (tdsamount == 0)) {
  233. $('.lblDueBalance').val();
  234. dueAmount = Number($(this).find('.hfDueAmount').val()) - txtDiscountAmount - txtTdsAmount;
  235. }
  236. if ((discamount != 0) && (tdsamount != 0)) {
  237. dueAmount = (Number($(this).find('.hfDueAmount').val()) + tdsamount + discamount) - txtDiscountAmount - txtTdsAmount;
  238. }
  239. if ((discamount != 0) && (tdsamount == 0)) {
  240. dueAmount = (Number($(this).find('.hfDueAmount').val()) + discamount) - txtDiscountAmount - txtTdsAmount;
  241. }
  242. if ((discamount == 0) && (tdsamount != 0)) {
  243. dueAmount = (Number($(this).find('.hfDueAmount').val()) + tdsamount) - txtDiscountAmount - txtTdsAmount;
  244. }
  245. var txtCurrentAmt = 0;
  246. if (paymentTotal >= dueAmount) {
  247. if (dueAmount != 0) {
  248. paymentTotal -= dueAmount;
  249. txtCurrentAmt = dueAmount;
  250. dueAmount = 0;
  251. advanceAmt = paymentTotal;
  252. }
  253. }
  254. else {
  255. dueAmount -= paymentTotal;
  256. txtCurrentAmt = paymentTotal;
  257. paymentTotal = 0;
  258. }
  259. if (Number(paymentTotal) < 0.01) {
  260. paymentTotal = 0;
  261. }
  262. $(this).find('.txtCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(txtCurrentAmt, 2));
  263. $(this).find('.lblDueBalance').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(dueAmount, 2));
  264. });
  265. }
  266. bindDuesHtml(item, dBalance, NumOfDays, formPropId, tBalance) {
  267. var instance = this;
  268. var discAmount = item.DiscountAmount;
  269. if (item.PaymentTermMode == 2) {
  270. discAmount = discAmount * -1;
  271. }
  272. var tdsAttr = "";
  273. if (item.TCSAmount > 0) {
  274. tdsAttr = "disabled";
  275. }
  276. var journalAlloc = item.JournalAlloc;
  277. var Amount = item.Amount;
  278. var html = '<div class="list-group-item divDue_Item" id="divDue_List_item_' + journalAlloc.JournalId + '"><div class="row">' +
  279. '<input type="hidden" class="hf_JournalAllocId" value="' + journalAlloc.JournalAllocId + '" />' +
  280. '<input type="hidden" class="hf_RefAllocId" value="' + journalAlloc.RefAllocId + '" />' +
  281. '<input type="hidden" class="hf_conversionrate" value="' + item.ConversionRate + '" />' +
  282. '<input type="hidden" class="hf_currencyid" value="' + item.CurrencyId + '" />' +
  283. '<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>' +
  284. '<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>' +
  285. '<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>' +
  286. '<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>' +
  287. '<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>' +
  288. '</div></div>';
  289. var element = $('.transactonList_item_TRN' + formPropId + '');
  290. element.find('.divDue_List_item').before(html);
  291. }
  292. bindDueEvents() {
  293. }
  294. tdsValidation(evt, id, jId, trnId) {
  295. var instance = this;
  296. instance.flag = 0;
  297. var val = document.getElementById(id);
  298. var curDueAmount = Number(val.value);
  299. var elementforPayment = $('.transactonList_item_' + trnId);
  300. var element = elementforPayment.find('#divDue_List_item_' + jId);
  301. var tdsAccountId = Number($("#hf_TDSAccountId").val());
  302. var totDueAmount = Number($(element).find('.hfDueAmount').val());
  303. instance.AdjustDueAmount(evt, jId, trnId);
  304. if (totDueAmount < curDueAmount) {
  305. $(element).find('.txtTdsAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(0, 2));
  306. Unibase.Platform.Forms.Components.FormViewer.Instance().showError("TDSAmount cannot be greater than Due Amount");
  307. return false;
  308. }
  309. var adjustedAmt = $(element).find('.txtCurrentAmount').val();
  310. if (adjustedAmt != 0) {
  311. Bizgaze.Apps.Transact.Controls.PaymentSummary.Instance().updatePaymentSummaryTotal();
  312. }
  313. return true;
  314. }
  315. discountValidation(evt, id, jId, trnId) {
  316. var instance = this;
  317. instance.flag = 0;
  318. var val = document.getElementById(id);
  319. var isNegativeValue = (val.value.match(/-/g) || []).length;
  320. var curDueAmount = Number(val.value);
  321. var elementforPayment = $('.transactonList_item_' + trnId);
  322. var element = elementforPayment.find('#divDue_List_item_' + jId);
  323. var discountAccountId = Number($("#hf_DiscountAccountId").val());
  324. var penalityAccountId = Number($("#hf_PenalityAccountId").val());
  325. var totDueAmount = Number($(element).find('.hfDueAmount').val());
  326. var isDiscAmount = Math.sign(curDueAmount);
  327. if (isNaN(isDiscAmount)) {
  328. $(element).find('.txtDiscountAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(0, 2));
  329. return false;
  330. }
  331. instance.AdjustDueAmount(evt, jId, trnId);
  332. if (totDueAmount < curDueAmount) {
  333. $(element).find('.txtDiscountAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(0, 2));
  334. Unibase.Platform.Forms.Components.FormViewer.Instance().showError("Discount cannot be greater than Due Amount");
  335. return false;
  336. }
  337. var adjustedAmt = $(element).find('.txtCurrentAmount').val();
  338. if (adjustedAmt != 0) {
  339. Bizgaze.Apps.Transact.Controls.PaymentSummary.Instance().updatePaymentSummaryTotal();
  340. }
  341. return true;
  342. }
  343. AdjustDueAmount(event, jId, trnId) {
  344. var instance = this;
  345. instance.flag = 0;
  346. const maxAmt = Number($(event.target).parents('.divDue_Item').find('.hfOrgDueAmount').val());
  347. const currVal = Number($(event.target).val());
  348. if (currVal > maxAmt) {
  349. $(event.target).val(maxAmt);
  350. }
  351. var formId = $(".transactonList_div_" + trnId).parents("form").attr("id").split('_')[1];
  352. var elementforPayment = $('.transactonList_item_' + trnId + '');
  353. var totDue = 0;
  354. var totDueAmt = Number(elementforPayment.find('.txtDuesTotalAmt').text());
  355. $(elementforPayment).find('.divDue_Item').each(function () {
  356. var xyz = Number($(this).find('.txtCurrentAmount').val());
  357. if (!isNaN(xyz))
  358. totDue += xyz;
  359. });
  360. var element = elementforPayment.find('#divDue_List_item_' + jId + '');
  361. var previousValue = $(element).find('.txtCurrentAmount').data("previousvalue");
  362. var crAmt = totDueAmt;
  363. var totalAmt = Number($(".totAmount").first().text());
  364. var OrgdueAmount = Number($(element).find('.hfOrgDueAmount').val());
  365. var DueAmount = Number($(element).find('.hfDueAmount').val());
  366. var txtCurrentAmt = $(element).find('.txtCurrentAmount').val();
  367. var txtDiscountAmt = Number($(element).find('.txtDiscountAmount').val());
  368. var txtTDSAmt = Number($(element).find('.txtTdsAmount').val());
  369. var hf_DiscountAmount = Number($(element).find(".hfDiscountAmount").val());
  370. var hf_TDSAmount = Number($(element).find(".hfTdsAmount").val());
  371. var lblDueBalance = Number($(element).find(".lblDueBalance").val());
  372. var totalAmount = OrgdueAmount + hf_DiscountAmount + hf_TDSAmount;
  373. var txtDueBal = 0;
  374. if ((txtCurrentAmt == 0 || txtCurrentAmt == "") && txtDiscountAmt != 0 && txtTDSAmt != 0 && hf_DiscountAmount == 0 && hf_TDSAmount == 0) {
  375. txtDueBal = OrgdueAmount - txtDiscountAmt - txtTDSAmt;
  376. }
  377. else if ((txtCurrentAmt == 0 || txtCurrentAmt == "") && txtDiscountAmt != 0 && txtTDSAmt == 0 && hf_DiscountAmount == 0 && hf_TDSAmount == 0) {
  378. txtDueBal = OrgdueAmount - txtDiscountAmt - txtTDSAmt;
  379. }
  380. else if (txtCurrentAmt != 0 && txtDiscountAmt != 0 && txtTDSAmt != 0 && hf_DiscountAmount == 0 && hf_TDSAmount == 0) {
  381. txtDueBal = OrgdueAmount - txtDiscountAmt - txtTDSAmt;
  382. }
  383. else if ((txtCurrentAmt != 0) && txtDiscountAmt == 0 && txtTDSAmt != 0 && hf_DiscountAmount == 0 && hf_TDSAmount == 0) {
  384. txtDueBal = OrgdueAmount - txtDiscountAmt - txtTDSAmt;
  385. }
  386. else if ((txtCurrentAmt == 0 || txtCurrentAmt == "") && txtDiscountAmt == 0 && txtTDSAmt == 0 && hf_DiscountAmount != 0) {
  387. txtDueBal = OrgdueAmount + hf_DiscountAmount;
  388. }
  389. else if ((txtCurrentAmt == 0 || txtCurrentAmt == "") && txtDiscountAmt == 0 && txtTDSAmt != 0 && hf_DiscountAmount == 0 && hf_TDSAmount == 0) {
  390. txtDueBal = OrgdueAmount - txtDiscountAmt - txtTDSAmt;
  391. }
  392. else if ((txtCurrentAmt != 0) && txtDiscountAmt != 0 && txtTDSAmt != 0 && lblDueBalance != 0) {
  393. txtDueBal = totalAmount - txtDiscountAmt - txtTDSAmt;
  394. }
  395. else if ((txtCurrentAmt != 0) && txtDiscountAmt != 0 && hf_TDSAmount != 0 && lblDueBalance == 0 && totalAmount != txtCurrentAmt && hf_DiscountAmount == 0) {
  396. txtDueBal = Number(txtCurrentAmt) - txtDiscountAmt;
  397. }
  398. else if ((txtCurrentAmt != 0) && txtDiscountAmt != 0 && hf_TDSAmount != 0 && lblDueBalance == 0 && totalAmount != txtCurrentAmt && hf_DiscountAmount != 0 && txtTDSAmt != 0) {
  399. txtDueBal = totalAmount - txtDiscountAmt - txtTDSAmt;
  400. }
  401. else if ((txtCurrentAmt != 0) && txtDiscountAmt != 0 && txtTDSAmt != 0 && lblDueBalance == 0) {
  402. txtDueBal = OrgdueAmount - txtTDSAmt;
  403. }
  404. else if ((txtCurrentAmt == 0 || txtCurrentAmt == "") && txtDiscountAmt == 0 && txtTDSAmt != 0) {
  405. txtDueBal = OrgdueAmount + hf_DiscountAmount;
  406. }
  407. else if ((txtCurrentAmt == 0 || txtCurrentAmt == "") && txtDiscountAmt != 0 && txtTDSAmt == 0 && hf_DiscountAmount != 0) {
  408. txtDueBal = (OrgdueAmount + hf_TDSAmount + hf_DiscountAmount) - txtDiscountAmt;
  409. }
  410. else if ((txtCurrentAmt != 0) && txtDiscountAmt == 0 && txtTDSAmt == 0 && lblDueBalance == 0 && hf_DiscountAmount != 0) {
  411. txtDueBal = OrgdueAmount + hf_DiscountAmount;
  412. }
  413. else if ((txtDiscountAmt == 0 && hf_DiscountAmount != 0) && (txtTDSAmt == 0 && hf_TDSAmount != 0) && txtCurrentAmt == 0) {
  414. txtDueBal = totalAmount;
  415. }
  416. else if (txtCurrentAmt != 0 && txtDiscountAmt != 0 && txtTDSAmt == 0 && lblDueBalance != 0) {
  417. txtDueBal = totalAmount - txtDiscountAmt - txtTDSAmt;
  418. }
  419. else if (txtCurrentAmt != 0 && txtDiscountAmt == 0 && txtTDSAmt == 0 && lblDueBalance != 0) {
  420. txtDueBal = totalAmount - txtTDSAmt;
  421. }
  422. else if (txtCurrentAmt != 0 && txtDiscountAmt != 0 && txtTDSAmt == 0 && lblDueBalance == 0 && txtCurrentAmt == totalAmount) {
  423. txtDueBal = totalAmount - txtDiscountAmt;
  424. }
  425. else if (txtCurrentAmt != 0 && txtDiscountAmt != 0 && txtTDSAmt == 0 && lblDueBalance == 0) {
  426. txtDueBal = OrgdueAmount + hf_DiscountAmount - txtDiscountAmt;
  427. }
  428. else if (txtCurrentAmt == lblDueBalance && txtCurrentAmt != "" && txtCurrentAmt != 0) {
  429. txtDueBal = OrgdueAmount + hf_DiscountAmount + hf_TDSAmount;
  430. }
  431. else if (txtCurrentAmt != 0 && txtDiscountAmt != 0 && txtTDSAmt != 0 && hf_DiscountAmount == 0 && hf_TDSAmount == 0) {
  432. txtDueBal = OrgdueAmount - txtDiscountAmt - txtTDSAmt;
  433. }
  434. else if (txtCurrentAmt == 0 && DueAmount != 0 && OrgdueAmount != 0 && hf_DiscountAmount != 0 && hf_TDSAmount != 0 && txtDiscountAmt != 0 && txtTDSAmt != 0) {
  435. txtDueBal = OrgdueAmount;
  436. }
  437. else if (txtCurrentAmt == 0 && txtDiscountAmt != 0 && hf_TDSAmount != 0 && hf_DiscountAmount == 0 && hf_TDSAmount != 0) {
  438. txtDueBal = OrgdueAmount - txtDiscountAmt;
  439. }
  440. else if (totalAmount == txtCurrentAmt) {
  441. txtDueBal = totalAmount;
  442. }
  443. else {
  444. txtDueBal = OrgdueAmount;
  445. }
  446. if (txtDueBal < 0) {
  447. txtDueBal = 0;
  448. }
  449. $(' #lblDueBalance_' + jId + '').val(txtDueBal);
  450. if (totDue <= crAmt) {
  451. if (totDue <= totalAmt) {
  452. if (totDue <= totDueAmt) {
  453. if (txtCurrentAmt == 0 || txtCurrentAmt == undefined) {
  454. $(element).find('.txtCurrentAmount').val(0.00);
  455. $(element).find('.lblDueBalance').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(txtDueBal, 2));
  456. var ttWallet = 0;
  457. $(elementforPayment).find('.divDue_Item').each(function () {
  458. var pqr = Number($(this).find('.txtCurrentAmount').val());
  459. if (!isNaN(pqr))
  460. ttWallet += pqr;
  461. });
  462. $(elementforPayment).find('.txtTotalDueAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(ttWallet, 2));
  463. Bizgaze.Apps.Transact.Controls.PaymentSummary.Instance().updatePaymentSummaryTotal();
  464. var currentValue = Number($(element).find('.txtCurrentAmount').val());
  465. $(element).find('.txtCurrentAmount').data("previousvalue", currentValue);
  466. return false;
  467. }
  468. if (Number(txtCurrentAmt) + txtDiscountAmt + txtTDSAmt > OrgdueAmount) {
  469. var walletAmount_ = 0;
  470. if ((hf_DiscountAmount != 0 && txtDiscountAmt == 0)) {
  471. walletAmount_ = Number(hf_DiscountAmount);
  472. }
  473. else if ((hf_TDSAmount != 0 && txtTDSAmt == 0)) {
  474. walletAmount_ = walletAmount_ + Number(hf_TDSAmount);
  475. }
  476. if (txtDiscountAmt == 0) {
  477. $(element).find('.txtDiscountAmount').val(0.00);
  478. }
  479. if (txtTDSAmt == 0) {
  480. $(element).find('.txtTdsAmount').val(0.00);
  481. }
  482. $(element).find('.txtCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(txtDueBal, 2));
  483. if (txtCurrentAmt == totalAmount) {
  484. $(element).find('.lblDueBalance').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(0, 2));
  485. }
  486. else {
  487. $(element).find('.lblDueBalance').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(walletAmount_, 2));
  488. }
  489. }
  490. else {
  491. var walletAmount = txtDueBal - Number(txtCurrentAmt);
  492. if (walletAmount < 0) {
  493. walletAmount = 0;
  494. }
  495. if (hf_TDSAmount != 0 && txtTDSAmt == 0 && txtDiscountAmt == 0 && hf_DiscountAmount != 0) {
  496. walletAmount = hf_DiscountAmount + hf_TDSAmount + walletAmount;
  497. }
  498. $(element).find('.txtCurrentAmount').val(txtCurrentAmt);
  499. $(element).find('.lblDueBalance').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(walletAmount, 2));
  500. }
  501. var ttWallet = 0;
  502. $(elementforPayment).find('.divDue_Item').each(function () {
  503. var pqr = Number($(this).find('.txtCurrentAmount').val());
  504. if (!isNaN(pqr))
  505. ttWallet += pqr;
  506. });
  507. $(elementforPayment).find('.txtTotalDueAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(ttWallet, 2));
  508. }
  509. else {
  510. $(element).find('.txtCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(OrgdueAmount - txtDiscountAmt - txtTDSAmt, 2));
  511. $(element).find('.lblDueBalance').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(0, 2));
  512. var ttWallet = 0;
  513. $(elementforPayment).find('.divDue_List_item').each(function () {
  514. var pqr = Number($(this).find('.txtCurrentAmount').val());
  515. if (!isNaN(pqr))
  516. ttWallet += pqr;
  517. });
  518. $(elementforPayment).find('.txtTotalDueAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(ttWallet, 2));
  519. }
  520. }
  521. else {
  522. MessageHelper.Instance().showError("You cannot adjust without enough credits", 'div_ErrorMessage_' + formId);
  523. $(element).find('.txtCurrentAmount').val(previousValue);
  524. }
  525. }
  526. else {
  527. var ttWallet = 0;
  528. $(elementforPayment).find('.divDue_Item').each(function () {
  529. var pqr = Number($(this).find('.txtCurrentAmount').val());
  530. if (!isNaN(pqr))
  531. ttWallet += pqr;
  532. });
  533. var newAmt = Number(crAmt) - (Number(ttWallet) - Number(txtCurrentAmt));
  534. var OldCurAdjAmt = Number($(element).find('.txtCurrentAmount').val());
  535. if (newAmt >= 0) {
  536. if (newAmt >= Number($(element).find('.hfDueAmount').val())) {
  537. var curAdjAmt = ttWallet - OldCurAdjAmt;
  538. var newAdjAmt = txtDueBal;
  539. $(element).find('.txtCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(newAdjAmt, 2));
  540. $(element).find('.lblDueBalance').val(0.00);
  541. $(elementforPayment).find('.txtTotalDueAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(curAdjAmt + newAdjAmt, 2));
  542. }
  543. else {
  544. var curAdjAmt = ttWallet - OldCurAdjAmt;
  545. var newAdjAmt = OrgdueAmount - newAmt;
  546. $(element).find('.txtCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(newAmt, 2));
  547. $(element).find('.lblDueBalance').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(newAdjAmt, 2));
  548. $(elementforPayment).find('.txtTotalDueAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(curAdjAmt + newAdjAmt, 2));
  549. }
  550. }
  551. else {
  552. $(element).find('.txtCurrentAmount').val(0);
  553. $(element).find('.lblDueBalance').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(Number($(element).find('.hfWalletAmount').val()), 2));
  554. $(elementforPayment).find('.txtTotalDueAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(ttWallet, 2));
  555. }
  556. }
  557. Bizgaze.Apps.Transact.Controls.PaymentSummary.Instance().updatePaymentSummaryTotal();
  558. var currentValue = Number($(element).find('.txtCurrentAmount').val());
  559. $(element).find('.txtCurrentAmount').data("previousvalue", currentValue);
  560. }
  561. isDecimalplusNoLongPress(evt, id) {
  562. let value = $('#' + id).val();
  563. var charCode = (evt.which) ? evt.which : evt.keyCode;
  564. if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode == 46) {
  565. return false;
  566. }
  567. if (value) {
  568. if (value.split('.').length >= 2) {
  569. if (value.split('.')[1]) {
  570. if (value.split('.')[1].length >= 2) {
  571. let valNew = parseFloat(`${value}`).toFixed(2);
  572. $('#' + id).val(valNew);
  573. }
  574. }
  575. }
  576. }
  577. return true;
  578. }
  579. isSignDecimalplusNoLongPress(evt, id) {
  580. var instance = this;
  581. instance.flag++;
  582. var charCode = (evt.which) ? evt.which : evt.keyCode;
  583. if (instance.flag <= 4) {
  584. if (charCode == 46) {
  585. var val = document.getElementById(id);
  586. var txt = val.value;
  587. if (!(txt.indexOf(".") > -1)) {
  588. return true;
  589. }
  590. }
  591. if (charCode == 45) {
  592. return true;
  593. }
  594. if (charCode > 31 && (charCode < 48 || charCode > 57))
  595. return false;
  596. }
  597. else {
  598. return false;
  599. }
  600. return true;
  601. }
  602. initFlag() {
  603. var instance = this;
  604. instance.flag = 0;
  605. }
  606. loadControlSettings(controlsettingjson, formpropertyid) {
  607. return ``;
  608. }
  609. loadPropertySettings(propertysettings, formpropertyid) {
  610. if (propertysettings != null) {
  611. for (var i = 0; i < propertysettings.length; i++) {
  612. var data = propertysettings[i];
  613. if (data.ControlPropertyName == "ControlType" && data.ControlPropertyValue != "") {
  614. $("#hdn_" + formpropertyid).attr("ControlType", data.ControlPropertyValue);
  615. $("#hdn_" + formpropertyid).val(data.ControlPropertyValue);
  616. }
  617. }
  618. }
  619. }
  620. bindEditFormDetails(formpropertyid, propval, DocPropertyName) {
  621. return ``;
  622. }
  623. dueControlObj(trnId) {
  624. var walletamount = Number($('.txtTotalWalletAdjusted').val());
  625. var dueamount = Number($('.txtTotalDueAdjusted ').val());
  626. if (walletamount > 0 && dueamount == 0) {
  627. Unibase.Platform.Forms.Components.FormViewer.Instance().showError("Error! Wallet amount is not adjusted against Dues. Remove the excess amount from wallets & save!");
  628. return false;
  629. }
  630. var instance = this;
  631. var element = $('.transactonList_item_' + trnId + '');
  632. var data = new Array();
  633. element.find('.divDue_Item').each(function (index) {
  634. var balanceAmount = Number($(this).find('.lblDueBalance').val());
  635. var isDueObj = false;
  636. if ($(this).find('.txtCurrentAmount').val() != 0 && $(this).find('.txtCurrentAmount').val() != '' && $(this).find('.txtCurrentAmount').val() != undefined) {
  637. isDueObj = true;
  638. }
  639. else if (!isNaN(balanceAmount) && balanceAmount == 0) {
  640. isDueObj = true;
  641. }
  642. if (isDueObj) {
  643. var jAId = Number($(this).find('.hf_JournalAllocId').val());
  644. var conversionRate = Number($(this).find('.hf_conversionrate').val());
  645. var currencyId = Number($(this).find('.hf_currencyid').val());
  646. var journalTypeId = 2;
  647. var discountAmount = Number($(this).find('.txtDiscountAmount').val());
  648. var tdsAmount = Number($(this).find('.txtTdsAmount').val());
  649. if (instance.journalTypeId == 1) {
  650. data.push({
  651. JournalAllocId: isNaN(jAId) ? 0 : jAId,
  652. Credit: Number($(this).find('.txtCurrentAmount').val()),
  653. RefAllocId: Number($(this).find('.hf_RefAllocId').val()),
  654. AllocType: 2,
  655. AllocTypeId: 2,
  656. Discount: discountAmount,
  657. TDSAmount: tdsAmount,
  658. ConversionRate: conversionRate,
  659. CurrencyId: currencyId,
  660. });
  661. }
  662. else if (journalTypeId == 2) {
  663. data.push({
  664. JournalAllocId: isNaN(jAId) ? 0 : jAId,
  665. Debit: Number($(this).find('.txtCurrentAmount').val()),
  666. RefAllocId: Number($(this).find('.hf_RefAllocId').val()),
  667. AllocType: 2,
  668. AllocTypeId: 2,
  669. Discount: discountAmount,
  670. TDSAmount: tdsAmount,
  671. });
  672. }
  673. }
  674. });
  675. return data;
  676. }
  677. checkConversionnRateByOrganization(curContactId) {
  678. Bizgaze.Apps.Transact.Managers.PaymentManager.Instance().CheckConversionRateByOrganization(curContactId).then(function (response) {
  679. if (response.result != null) {
  680. $(".divCustomProperties_conversionrate").removeClass("hidden");
  681. $(".number_conversionrate").addClass("required");
  682. $("#div_ForeignExchange").removeClass("hidden");
  683. $("#txtAutoComplete_ForeignExchangeAccount").addClass("required");
  684. }
  685. else {
  686. $(".divCustomProperties_conversionrate").addClass("hidden");
  687. $(".number_conversionrate").removeClass("required");
  688. $("#div_ForeignExchange").addClass("hidden");
  689. $("#txtAutoComplete_ForeignExchangeAccount").removeClass("required");
  690. }
  691. });
  692. }
  693. static Instance() {
  694. if (this.instance === undefined) {
  695. this.instance = new Dues();
  696. }
  697. return this.instance;
  698. }
  699. }
  700. Controls.Dues = Dues;
  701. })(Controls = Transact.Controls || (Transact.Controls = {}));
  702. })(Transact = Apps.Transact || (Apps.Transact = {}));
  703. })(Apps = Bizgaze.Apps || (Bizgaze.Apps = {}));
  704. })(Bizgaze || (Bizgaze = {}));