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

voucher.component.js 136KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794
  1. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  2. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  3. return new (P || (P = Promise))(function (resolve, reject) {
  4. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  5. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  6. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  7. step((generator = generator.apply(thisArg, _arguments || [])).next());
  8. });
  9. };
  10. var Bizgaze;
  11. (function (Bizgaze) {
  12. let Apps;
  13. (function (Apps) {
  14. let Transact;
  15. (function (Transact) {
  16. let Controls;
  17. (function (Controls) {
  18. class Voucher extends Unibase.Platform.Core.BaseComponent {
  19. init(formpropertyid, prop, callback) {
  20. var container = "control-container-" + formpropertyid;
  21. var instance = this;
  22. instance.local_container = container;
  23. instance.editVoucher = false;
  24. instance.findtxtcrRdr = 2;
  25. instance.transactionId = parseInt('00001', 8);
  26. instance.flag = 0;
  27. instance.fileCacheHelper.loadJsFile('apps/transact/managers/vouchers/vouchermanager.js', function () {
  28. instance.fileCacheHelper.loadJsFile('platform/core/helpers/numberhelper/numberhelper.js', function () {
  29. instance.loadInitTransaction();
  30. $("#" + container).find("#btnAddNewTransaction").click(function () {
  31. instance.addTransaction(false);
  32. $(".transactonList_div").addClass("hidden");
  33. });
  34. if (callback != null) {
  35. callback();
  36. }
  37. setTimeout(function () {
  38. }, 500);
  39. });
  40. });
  41. }
  42. loadControl(container, prop) {
  43. var html = '<div class="font-14 card-header bg-light"><h6><div class="row"><div class="col-sm-8"><span class="col-sm-1"></span>Account Name <span class="text-danger">*</span></div><div class="d-none d-sm-block col-sm-2 text-center">Debit</div><div class="block d-sm-none col-sm-2"><span class="col-sm-1"></span>Debit</div><div class="d-none d-sm-block col-sm-2 text-center">Credit</div><div class="block d-sm-none col-sm-2"><span class="col-sm-1"></span>Credit</div></div></h6></div><input type="hidden" id="hdn_vouchercontrol" class="value-control" value="Bizgaze.Apps.Transact.Controls.Voucher.Instance().voucherControlObj();">' +
  44. '<div class="divTransactonList pl-20 pr-20"><div class="transactonList_item"></div></div>' +
  45. '<div class="row mt-20"><div class="col-sm-8"><a href="javascript:;" id="btnAddNewTransaction" class="btn btn-primary btn-sm">Add New Account</a></div>' +
  46. '<div class="col-sm-2 col-xs-6 m-t text-right"><strong id="Debittotal" class="h5 text-primary">0.00</strong></div>' +
  47. '<div class="col-sm-2 col-xs-6 m-t text-right"><strong id="credittotal" class="h5 text-info">0.00</strong></div></div>';
  48. $("#" + container).html(html);
  49. }
  50. loadControlSettings(controlsettingjson, formpropertyid) {
  51. return __awaiter(this, void 0, void 0, function* () {
  52. });
  53. }
  54. loadPropertySettings(propertysettings, formpropertyid) {
  55. }
  56. bindEditFormDetails(formpropertyid, propval, DocPropertyName) {
  57. var journalId = Number(propval);
  58. var instance = this;
  59. var transactionId = parseInt('00001', 8);
  60. instance.transactionId = transactionId;
  61. instance.editVoucher = true;
  62. Bizgaze.Apps.Transact.Managers.VoucherManager.Instance().getJournalData(journalId).then(function (response) {
  63. var data = response.result;
  64. if (data.JournalEntries.length > 0) {
  65. $(".divTransactonList").empty();
  66. $(".divTransactonList").html('<div class="transactonList_item"></div>');
  67. var totalCredit = 0;
  68. var totalDebit = 0;
  69. for (var i = 0; i < data.JournalEntries.length; i++) {
  70. var jEntry = data.JournalEntries[i];
  71. var j = $('.transactonList_item:last').attr("name");
  72. var tid = instance.addTransaction(true);
  73. transactionId = tid;
  74. var element = $('.transactonList_item_TRN' + transactionId + '');
  75. element.find('.hf_JournalEntryId').val(jEntry.JournalEntryId);
  76. element.find('.hf_JournalIdforJEntry').val(jEntry.JournalId);
  77. element.find('.hf_ContactId').val(jEntry.ContactId);
  78. element.find('.hf_AccountId').val(jEntry.LedgerId);
  79. element.find("#txt_AccountName_TRN" + transactionId).append('<option value="' + jEntry.LedgerId + '">' + jEntry.LedgerName + '</option>');
  80. element.find('.txt_Debit').val(jEntry.Debit);
  81. element.find('.txt_Credit').val(jEntry.Credit);
  82. totalCredit += Number(jEntry.Credit);
  83. totalDebit += Number(jEntry.Debit);
  84. $('#Debittotal').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(totalDebit, 2));
  85. $('#credittotal').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(totalCredit, 2));
  86. element.find('#Debittotal').val(jEntry.Debit);
  87. element.find('#txt_AcNarration').val(jEntry.Description);
  88. element.find('.rowAcNarrartion,.rowWallets,.rowDues,.transactonList_div_TRN' + transactionId).removeClass('hidden');
  89. $(".transactonList_div").addClass("hidden");
  90. var orgAutoComplete = element.find("#div_ddl_Cust");
  91. var emptyDiv = element.find("#div_empty");
  92. if (jEntry.ContactId == 0) {
  93. element.find(".rowWallets").addClass("hidden");
  94. element.find(".rowDues").addClass("hidden");
  95. $(emptyDiv).addClass("hidden");
  96. $(orgAutoComplete).removeClass("hidden");
  97. }
  98. else {
  99. $(emptyDiv).removeClass("hidden");
  100. $(orgAutoComplete).addClass("hidden");
  101. }
  102. if (jEntry.ContactId != 0) {
  103. if (jEntry.Debit == 0)
  104. instance.loadWalletsAndDues('TRN' + transactionId, data.JournalId, jEntry.ContactId, 'credit', false, '', true, true);
  105. else
  106. instance.loadWalletsAndDues('TRN' + transactionId, data.JournalId, jEntry.ContactId, 'debit', false, '', true, true);
  107. element.find("#ddl_Org_TRN" + transactionId).append('<option value="' + jEntry.ContactId + '">' + jEntry.ContactName + '</option>');
  108. }
  109. else {
  110. instance.loadWalletsAndDues('TRN' + transactionId, 0, 0, '', false, '', true, undefined);
  111. element.find('.rowWallets,.rowDues').addClass('hidden');
  112. }
  113. if (jEntry.LedgerId != 0) {
  114. Bizgaze.Apps.Transact.Managers.VoucherManager.Instance().getLedgerBalance(jEntry.LedgerId).then(function (response) {
  115. var result = response.result;
  116. instance.gettotbal(result, transactionId);
  117. });
  118. }
  119. if (jEntry.JournalAllocations != null && jEntry.JournalAllocations != undefined) {
  120. if (jEntry.JournalAllocations.length > 0) {
  121. if (jEntry.JournalAllocations[0].AllocTypeId == 3) {
  122. $('.rowAdvanceAmount_TRN' + transactionId).removeClass('hidden');
  123. $('.lblAdvanceAmount_TRN' + transactionId).text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(jEntry.JournalAllocations[0].Credit, 2));
  124. $('#hf_AdvanceJournalAllocId_TRN' + transactionId).val(jEntry.JournalAllocations[0].JournalAllocId);
  125. }
  126. }
  127. }
  128. }
  129. }
  130. eval('_floatingLabelHelper.init()');
  131. });
  132. }
  133. loadSeriesAutoComplete() {
  134. var installedAppId = Unibase.Platform.Forms.Components.FormViewer.Instance().InstalledAppId;
  135. if (installedAppId != 0 && installedAppId != undefined && installedAppId != null) {
  136. var seriesParameters = [{ "ColumnName": "installedappid", "Value": installedAppId, }];
  137. Unibase.Forms.Controls.AutoComplete.Instance().LoadAutoComplete($(".txtAutoComplete_seriesid"), seriesParameters);
  138. }
  139. }
  140. bindDefaultSeries() {
  141. var installedAppId = Unibase.Platform.Forms.Components.FormViewer.Instance().InstalledAppId;
  142. var pkid = Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + installedAppId + "_journalid");
  143. var voucherId = 0;
  144. if (pkid != null || pkid != undefined) {
  145. voucherId = Number(pkid.Value);
  146. }
  147. if (voucherId == 0 || isNaN(voucherId)) {
  148. Bizgaze.Apps.Transact.Managers.VoucherManager.Instance().getDefaultVoucherSeries().then(function (response) {
  149. var result = response.result;
  150. if (result != null) {
  151. var defaultSeries = new Option(result.SeriesName, result.SeriesId.toString(), false, false);
  152. $(".txtAutoComplete_seriesid").append(defaultSeries).trigger("change");
  153. }
  154. });
  155. }
  156. }
  157. deletevoucher() {
  158. var instance = this;
  159. bootbox.confirm("Are you sure you want delete this Voucher ?", function (result) {
  160. if (result) {
  161. instance.fileCacheHelper.loadJsFile('apps/transact/managers/vouchers/vouchermanager.js', function () {
  162. if (Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.length != 0) {
  163. var InstalledAppId = Unibase.Themes.Providers.DetailHelper.installedAppId;
  164. var journalid = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_pk_id").Value);
  165. if (journalid != 0 && journalid != null && journalid != undefined) {
  166. Bizgaze.Apps.Transact.Managers.VoucherManager.Instance().deleteVoucher(journalid).then(function (response) {
  167. if (response.status == Unibase.Data.Status.Success) {
  168. MessageHelper.Instance().showSuccess(response.message, '');
  169. Unibase.Platform.Helpers.NavigationHelper.Instance().loadList(Unibase.Themes.Providers.DetailHelper.installedAppId, null);
  170. }
  171. });
  172. }
  173. }
  174. });
  175. }
  176. });
  177. }
  178. loadInitTransaction() {
  179. var instance = this;
  180. $(".divTransactonList").html('<div class="transactonList_item"></div>');
  181. instance.addTransaction(false);
  182. instance.addTransaction(false);
  183. $(".transactonList_div").addClass("hidden");
  184. $("#chk_issingleaccount").change(function () {
  185. var chk_issingleaccount = $(this).is(":checked");
  186. if (chk_issingleaccount == true) {
  187. $(".divTransactonList").empty();
  188. $(".divTransactonList").html('<div class="transactonList_item"></div>');
  189. $("#btnAddNewTransaction").addClass("hidden");
  190. instance.addTransaction(false);
  191. }
  192. else {
  193. $(".divTransactonList").html('<div class="transactonList_item"></div>');
  194. instance.addTransaction(false);
  195. instance.addTransaction(false);
  196. $("#btnAddNewTransaction").removeClass("hidden");
  197. $(".transactonList_div").addClass("hidden");
  198. }
  199. });
  200. }
  201. addTransaction(checkIsEdit) {
  202. var instance = this;
  203. var errormsg = $(".bizgaze_FormErrorMessages:visible").attr("id");
  204. var html = '';
  205. instance.transactionId = instance.transactionId + 1;
  206. var idtfy;
  207. if (checkIsEdit)
  208. idtfy = 'old';
  209. else
  210. idtfy = 'new';
  211. html += '<div class="transactonList_item transactonList_item_TRN' + instance.transactionId + '" name="' + instance.transactionId + '" identityAttr="' + idtfy + '">' +
  212. '<input type="hidden" class="hf_TransactionType" />' +
  213. '<input type="hidden" class="hf_JournalEntryId" />' +
  214. '<input type="hidden" class="hf_JournalIdforJEntry" />' +
  215. '<input type="hidden" class="hf_TransactionId" value="TRN' + instance.transactionId + '"/>' +
  216. '<div class="row"><a class="fa fa-trash-o m-t fa-md fa-lg mt-15 btn btn-sm text-danger" style="position:absolute;" onclick="Bizgaze.Apps.Transact.Controls.Voucher.Instance().removeTransaction(\'TRN' + instance.transactionId + '\');"></a>' +
  217. '<div class="row ml-30 col-sm-12 mt-10"><div class="col-sm-8 pl-0 pr-0">' +
  218. '<div class="" id="div_AccountName">' +
  219. '<div class="input-group col-sm-12 pl-0">' +
  220. '<span class="col-sm-12 pl-0 pr-0"><select type="text" id="txt_AccountName_TRN' + instance.transactionId + '" style="width:100%" class="accountName required form-control floating-label-control" data-isdynamic="false" placeholder="Account" data-placeholder="Select Account" data-label="Account"></select></span>' +
  221. '<input type="hidden" id="hf_ContactIdSelected_TRN' + instance.transactionId + '" class="hf_ContactIdSelected form-control" data-isdynamic="true"/><input type="hidden" class="hf_AccountId" /> <input type="hidden" class="hf_ContactId" /><label for="Validation" id="lblValidation_AccountName"></label><input type="hidden" id="hfFormPropertyId" />' +
  222. '</div></div></div>' +
  223. '<div class="col-sm-2 pl-0"><div class="floating-label-form-group" id="div_Debit">' +
  224. '<input type="text" id="tx_Debit_TRN' + instance.transactionId + '" data-trnId="TRN' + instance.transactionId + '" class="form-control txt_Debit txt_Debit_TRN' + instance.transactionId + ' floating-label-control" data-isdynamic="false" placeholder="0.00" onkeypress="return Bizgaze.Apps.Transact.Controls.Voucher.Instance().isDecimal(event,this.id)" onkeyup="return Bizgaze.Apps.Transact.Controls.Voucher.Instance().update_Debtotal()"/>' +
  225. '<input type="hidden" id="hf_Debit" value=""><label for="Validation" id="lblValidation_Debit"></label>' +
  226. '<input type="hidden" id="hfFormPropertyId" /></div></div>' +
  227. '<div class="col-sm-2 pl-0"><div class="floating-label-form-group" id="div_Credit">' +
  228. '<input type="text" id="tx_Credit_TRN' + instance.transactionId + '" data-trnId="TRN' + instance.transactionId + '" class="form-control txt_Credit txt_Credit_TRN' + instance.transactionId + ' floating-label-control" data-isdynamic="false" placeholder="0.00" onkeypress="return Bizgaze.Apps.Transact.Controls.Voucher.Instance().isDecimal(event,this.id)" onkeyup="return Bizgaze.Apps.Transact.Controls.Voucher.Instance().update_Credtotal()"/>' +
  229. '<input type="hidden" id="hf_Credit" value=""><label for="Validation" id="lblValidation_Credit"></label>' +
  230. ' <input type="hidden" id="hfFormPropertyId" /></div></div></div>' +
  231. '<div class="col-sm-12 transactonList_div transactonList_div_TRN' + instance.transactionId + ' hidden">' +
  232. '<div class="row rowAcNarrartion hidden"><span class="col-sm-2 text-left mt-20"><b id="crRdr"></b></span>' +
  233. '<div class="col-sm-6 hidden" id="div_empty"></div><div class="col-sm-6 mt-20" id="div_ddl_Cust"><div class="input-group col-sm-12 pl-0"><span class="col-sm-12 pl-0 pr-0"><select type="text" id="ddl_Org_TRN' + instance.transactionId + '" style="width:100%" class="ddl_OrgAutocomplete form-control floating-label-control" data-isdynamic="false" placeholder="Contact" data-placeholder="Select Contact" data-label="Select Contact"></select></span><input id="hfddl_Org_TRN' + instance.transactionId + '" type="hidden" class="hfddl_OrgAutocomplete" /></div></div>' +
  234. '<div class="col-sm-4">' +
  235. '<div class="floating-label-form-group" id="div_AcNarration"> <label for="txt_AcNarration" id="lbl_AcNarration">Narration</label>' +
  236. '<input type="text" id="txt_AcNarration" class="form-control floating-label-control" data-isdynamic="false" placeholder="Narration" data-label="Narration" />' +
  237. '<input type="hidden" id="hf_AcNarration" value=""><label for="Validation" id="lblValidation_AcNarration"></label>' +
  238. '<input type="hidden" id="hfFormPropertyId" /></div></div></div>' +
  239. '<div class="row rowWallets hidden"><div class="col-sm-3 mt-20 text-ul"><u><a href="javascript:;" class="h6" onclick="Bizgaze.Apps.Transact.Controls.Voucher.Instance().toggleWalletsAndDues(\'TRN' + instance.transactionId + '\',\'Wallets\');" style="color:#5ba8fb;">Wallet : <span class="txtWalletsTotalAmt"></span></a></u></div>' +
  240. '<div class="col-sm-4"></div><div class="d-none d-sm-block col-sm-2 text-right m-r-n"><div class="mt-30"><label style="color:#5ba8fb;" class="h6">Adjusted : </label></div></div><div class="block d-sm-none col-sm-2 m-r-n"><div class="mt-30"><label style="color:#5ba8fb;" class="h6">Adjusted : </label></div></div><div class="col-sm-2"><div class="floating-label-form-group mt-15"><input data-trnid="TRN' + instance.transactionId + '" id="txtIdTotalWalletAdjusted_TRN' + instance.transactionId + '" class="form-control txtTotalWalletAdjusted txtTotalWalletAdjusted_TRN' + instance.transactionId + ' floating-label-control m-b-n" type="text" onkeypress="return Bizgaze.Apps.Transact.Controls.Voucher.Instance().isDecimal(event,this.id)" /></div></div></div>' +
  241. '<section class="mt-5 secWallets secWallets_TRN' + instance.transactionId + ' hidden"><input type="hidden" class="hf_JournalEntryId" value="0" /><div class="list-group divWallet_List"></div><div class="divWallet_List_Footer_TRN' + instance.transactionId + ' mt-10"><div class="d-flex flex-wrap justify-content-between align-items-center"><div class="walletListTotal"><span class="font-weight-500 text-dark">Total: </span><span class="visibleRowsCount"></span> of <span class="totalRowsCount"></span></div><div class="walletListMoreBtn hidden"><a href="javascript:;" onclick="Bizgaze.Apps.Transact.Controls.Voucher.Instance().loadMoreListItems(' + instance.transactionId + ',`Wallet`)" class="btn btn-success btn-sm text-white loadMoreBtn">More</a></div></div></div></section>' +
  242. '<div class="row rowDues hidden"><div class="col-sm-3 mt-20 text-ul"><u><a href="javascript:;" class="h6" onclick="Bizgaze.Apps.Transact.Controls.Voucher.Instance().toggleWalletsAndDues(\'TRN' + instance.transactionId + '\',\'Dues\');" style="color:#5ba8fb;">Dues : <span class="txtDuesTotalAmt"></span></a></u></div>' +
  243. '<div class="col-sm-4"></div><div class="d-none d-sm-block col-sm-2 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.Voucher.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.Voucher.Instance().AutoAdjustDues(\'TRN' + instance.transactionId + '\');" id="btnAutoAdjustDues">Auto Adjust</a></div></div><div class="col-sm-2"><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>' +
  244. '<section class="mt-5 secDues secDues_TRN' + instance.transactionId + ' hidden"><div class="list-group divDue_List"></div><div class="divDue_List_Footer_TRN' + instance.transactionId + ' mt-10"><div class="d-flex flex-wrap justify-content-between align-items-center"><div class="dueListTotal"><span class="font-weight-500 text-dark">Total: </span><span class="visibleRowsCount"></span> of <span class="totalRowsCount"></span></div><div class="dueListMoreBtn hidden"><a href="javascript:;" onclick="Bizgaze.Apps.Transact.Controls.Voucher.Instance().loadMoreListItems(' + instance.transactionId + ',`Due`);" class="btn btn-success btn-sm text-white loadMoreBtn">More</a></div></div></div></section>' +
  245. '</div>' +
  246. '<div class="col-sm-12 row rowAdvanceAmount_TRN' + instance.transactionId + ' hidden"><div class="col-sm-4 mt-10"><input type="hidden" class="hf_AdvanceJournalAllocId" id="hf_AdvanceJournalAllocId_TRN' + instance.transactionId + '" value=""><input type="hidden" class="hf_NewRefJournalAllocId" id="hf_NewRefJournalAllocId_TRN' + instance.transactionId + '" value="">' +
  247. '<span class="text-success h6">Advance Amount: </span><span class="h6 lblAdvanceAmount_TRN' + instance.transactionId + '"></span>' +
  248. '</div></div>' +
  249. '</div>';
  250. $('.transactonList_item:last').after(html);
  251. instance.accountAutoCompleteLoading('TRN' + instance.transactionId);
  252. $('.transactonList_item_TRN' + instance.transactionId + '').find(".accountName").on('select2:select', function (e) {
  253. var trnId = $(this).attr("id");
  254. var id = trnId.split('_');
  255. $(".transactonList_item").each(function () {
  256. var currentTrn = "transactonList_item_" + id[2];
  257. if (!$(this).hasClass(currentTrn)) {
  258. var accountId = Number($(this).find('.hf_AccountId').val());
  259. if ($('#txt_AccountName_' + id[2]).val() == accountId) {
  260. MessageHelper.Instance().showError("Account Already Selected", errormsg);
  261. instance.removeAccount(id[2]);
  262. instance.addTransaction(false);
  263. $(".transactonList_div").addClass("hidden");
  264. return false;
  265. }
  266. }
  267. });
  268. $('.transactonList_item_' + id[2] + '').attr("identityAttr", "new");
  269. instance.accountAutoCompleteOnChange(id[2]);
  270. });
  271. $('.transactonList_item_TRN' + instance.transactionId + '').find(".accountName").on("select2:open", function (e) {
  272. var trnId = $(this).attr("id");
  273. var id = trnId.split('_');
  274. instance.unhideTransaction(id[2]);
  275. });
  276. var orgurl = _appsettings.server_url() + '/apis/v4/bizgaze/crm/contacts/getorganizationdetails';
  277. AutoCompleteHelper.getHelper().Create("#ddl_Org_TRN" + instance.transactionId, "#hfddl_Org_TRN" + instance.transactionId, orgurl, function (response) {
  278. var data = response;
  279. });
  280. $('.txt_Debit_TRN' + instance.transactionId + '').on('keyup', function () {
  281. var trnId = $(this).data('trnid');
  282. var element = $('.transactonList_item_' + trnId + '');
  283. var contactids = element.find('.hf_ContactId').val();
  284. var voucherid = element.find('.hf_JournalIdforJEntry').val();
  285. if (element.find('.txt_Debit').val() != undefined && element.find('.txt_Debit').val() != 0) {
  286. instance.isTransactionDebit = true;
  287. element.find('.txt_Credit').val(0);
  288. element.find('.hf_TransactionType').val('debit');
  289. element.find('.txtTotalWalletAdjusted_' + trnId).val(0);
  290. if (instance.editVoucher == false)
  291. instance.loadWalletsAndDues(trnId, 0, contactids, 'debit', false, '', true, false);
  292. else
  293. instance.loadWalletsAndDues(trnId, voucherid, contactids, 'debit', false, '', true, false);
  294. instance.update_Debtotal(trnId);
  295. instance.update_Credtotal(trnId);
  296. }
  297. instance.updatePayment(trnId, 'debit', true, false);
  298. instance.updatePayment(trnId, 'due', true, false);
  299. });
  300. $('.txt_Credit_TRN' + instance.transactionId + '').on('keyup', function (evt, id) {
  301. var trnId = $(this).data('trnid');
  302. var element = $('.transactonList_item_' + trnId + '');
  303. var contactids = element.find('.hf_ContactId').val();
  304. var voucherid = element.find('.hf_JournalIdforJEntry').val();
  305. if (element.find('.txt_Credit').val() != undefined && element.find('.txt_Credit').val() != 0) {
  306. instance.isTransactionDebit = false;
  307. element.find('.txt_Debit').val(0);
  308. element.find('.hf_TransactionType').val('credit');
  309. element.find('.txtTotalWalletAdjusted_' + trnId).val(0);
  310. if (instance.editVoucher == false)
  311. instance.loadWalletsAndDues(trnId, 0, contactids, 'credit', false, '', true, false);
  312. else
  313. instance.loadWalletsAndDues(trnId, voucherid, contactids, 'credit', false, '', true, false);
  314. instance.update_Debtotal(trnId);
  315. instance.update_Credtotal(trnId);
  316. }
  317. instance.updatePayment(trnId, 'credit', true, false);
  318. instance.updatePayment(trnId, 'due', true, false);
  319. });
  320. $('.txtTotalWalletAdjusted_TRN' + instance.transactionId + '').on('keyup', function (evt, id) {
  321. var id = $(this).attr("id").split('_');
  322. instance.transactionId = id[1].charAt(3);
  323. var charCode = (evt.which) ? evt.which : evt.keyCode;
  324. if (charCode == 46) {
  325. var val = document.getElementById(id);
  326. var txt = val.value;
  327. if (!(txt.indexOf(".") > -1))
  328. return true;
  329. }
  330. var trnId = $(this).data('trnid');
  331. var element = $('.transactonList_item_' + trnId + '');
  332. if (element.find("#tx_Debit_TRN" + instance.transactionId).val() > 0) {
  333. var debit = element.find("#tx_Debit_TRN" + instance.transactionId).val();
  334. var totAdjAmt = Number(element.find('.txtTotalWalletAdjusted_TRN' + instance.transactionId).val());
  335. if (totAdjAmt > debit) {
  336. element.find('.txtTotalWalletAdjusted_TRN' + instance.transactionId).val(debit);
  337. MessageHelper.Instance().showError("Cannot adjust more than your debits", errormsg);
  338. if (element.find(".txt_Debit_" + trnId).val() == 0)
  339. instance.update_Credtotal(trnId);
  340. if (element.find(".txt_Credit_" + trnId).val() == 0)
  341. instance.update_Debtotal(trnId);
  342. instance.updatePayment(trnId, 'wallet', true, false);
  343. instance.updatePayment(trnId, 'due', true, false);
  344. return false;
  345. }
  346. }
  347. var totWalletAmt = Number(element.find('.txtWalletsTotalAmt').text());
  348. var totAdjAmt = Number(element.find('.txtTotalWalletAdjusted_TRN' + instance.transactionId).val());
  349. if (totAdjAmt > totWalletAmt) {
  350. element.find('.txtTotalWalletAdjusted_TRN' + instance.transactionId).val(totWalletAmt);
  351. MessageHelper.Instance().showError("You don't have enough amount in that wallet", errormsg);
  352. }
  353. var trnType = element.find('.hf_TransactionType').val();
  354. if (trnType == '' || trnType == null)
  355. trnType = 'credit';
  356. if (element.find(".txt_Debit_" + trnId).val() == 0)
  357. instance.update_Credtotal(trnId);
  358. if (element.find(".txt_Credit_" + trnId).val() == 0)
  359. instance.update_Debtotal(trnId);
  360. instance.updatePayment(trnId, 'wallet', true, false);
  361. instance.updatePayment(trnId, 'due', true, false);
  362. });
  363. $('.txtTotalDueAdjusted_TRN' + instance.transactionId + '').keyup(function () {
  364. instance.isTransactionDebit = false;
  365. var trnId = $(this).data('trnid');
  366. var element = $('.transactonList_item_' + trnId + '');
  367. var trnType = element.find('.hf_TransactionType').val();
  368. if (trnType == '' || trnType == null)
  369. trnType = 'credit';
  370. instance.update_Debtotal(trnId);
  371. instance.update_Credtotal(trnId);
  372. });
  373. return Bizgaze.Apps.Transact.Controls.Voucher.Instance().transactionId;
  374. }
  375. AutoAdjustDues(trnId) {
  376. var instance = this;
  377. var element = $('.transactonList_item_' + trnId + '');
  378. var btnColor = $(element).find('#btnAutoAdjustDues').attr('class');
  379. if ($(element).find('#btnAutoAdjustDues').attr("name") == "enabled") {
  380. $(element).find('.txtTotalDueAdjusted_' + trnId).val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(0, 2));
  381. $(element).find('.txtCurrentAmount').val(0.00);
  382. }
  383. else {
  384. $(element).find('#btnAutoAdjustDues').attr("name", "enabled");
  385. }
  386. instance.RefreshDues(trnId);
  387. }
  388. RefreshDues(trnId) {
  389. var instance = this;
  390. var element = $('.transactonList_item_' + trnId + '');
  391. var contactids = element.find('.hf_ContactId').val();
  392. var voucherid = element.find('.hf_JournalIdforJEntry').val();
  393. if (element.find('.txt_Credit').val() != undefined && element.find('.txt_Credit').val() != 0 || element.find('.txtTotalWalletAdjusted').val() > 0) {
  394. element.find('.hf_TransactionType').val('credit');
  395. if (instance.editVoucher == false)
  396. instance.loadWalletsAndDues(trnId, 0, contactids, 'credit', false, '', false, false);
  397. else
  398. instance.loadWalletsAndDues(trnId, voucherid, contactids, 'credit', false, '', false, false);
  399. instance.update_Debtotal(trnId);
  400. instance.update_Credtotal(trnId);
  401. instance.updatePayment(trnId, 'credit', false, false);
  402. instance.updatePayment(trnId, 'due', false, false);
  403. }
  404. if (element.find('.txt_Debit').val() != undefined && element.find('.txt_Debit').val() != 0) {
  405. element.find('.hf_TransactionType').val('debit');
  406. if (instance.editVoucher == false)
  407. instance.loadWalletsAndDues(trnId, 0, contactids, 'debit', false, '', false, false);
  408. else
  409. instance.loadWalletsAndDues(trnId, voucherid, contactids, 'debit', false, '', false, false);
  410. instance.update_Debtotal(trnId);
  411. instance.update_Credtotal(trnId);
  412. instance.updatePayment(trnId, 'debit', false, false);
  413. }
  414. }
  415. AdjustDueAmount(jId, trnId) {
  416. var instance = this;
  417. var errormsg = $(".bizgaze_FormErrorMessages:visible").attr("id");
  418. instance.initFlag();
  419. var x = document.getElementById("divDue_List_item_" + jId).parentElement.parentElement.getAttribute("class");
  420. var elementforPayment = $('.transactonList_item_' + trnId + '');
  421. var totDue = 0;
  422. var totDueAmt = Number(elementforPayment.find('.txtDuesTotalAmt').text());
  423. $(elementforPayment).find('.divDue_List_item').each(function () {
  424. var xyz = Number($(this).find('.txtCurrentAmount').val());
  425. if (!isNaN(xyz))
  426. totDue += xyz;
  427. });
  428. var element = elementforPayment.find('#divDue_List_item_' + jId + '');
  429. var dueAmount = $('#lblDueBalance_' + jId + '').text();
  430. var cr = $(elementforPayment).find("#tx_Credit_" + trnId).val();
  431. var crwallet = $(elementforPayment).find('.txtTotalWalletAdjusted_' + trnId + '').val();
  432. var crAmt = Number(cr) + Number(crwallet);
  433. let enteredAmount = $(element).find('.txtCurrentAmount').val();
  434. if (totDue <= crAmt) {
  435. if (totDue <= totDueAmt) {
  436. var OrgdueAmount = Number($(element).find('.hfDueAmount').val());
  437. var txtWalletCurrentAmount = 0;
  438. var txtCurrentAmt = 0;
  439. txtCurrentAmt = Number($(element).find('.txtCurrentAmount').val());
  440. if (txtCurrentAmt == 0 || txtCurrentAmt == undefined) {
  441. $(element).find('.txtCurrentAmount').val(enteredAmount);
  442. $(element).find('.lblDueBalance').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(OrgdueAmount, 2));
  443. var ttWallet = 0;
  444. $(elementforPayment).find('.divDue_List_item').each(function () {
  445. var pqr = Number($(this).find('.txtCurrentAmount').val());
  446. if (!isNaN(pqr))
  447. ttWallet += pqr;
  448. });
  449. $(elementforPayment).find('.txtTotalDueAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(ttWallet, 2));
  450. if (elementforPayment.find(".txt_Debit_" + trnId).val() == 0)
  451. instance.update_Credtotal(trnId);
  452. if (elementforPayment.find(".txt_Credit_" + trnId).val() == 0)
  453. instance.update_Debtotal(trnId);
  454. instance.updatePayment(trnId, 'due', false, true);
  455. return false;
  456. }
  457. if (txtCurrentAmt > OrgdueAmount) {
  458. $(element).find('.txtCurrentAmount').val(OrgdueAmount);
  459. $(element).find('.lblDueBalance').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(0, 2));
  460. }
  461. else {
  462. var walletAmount = OrgdueAmount - txtCurrentAmt;
  463. if (enteredAmount === '.')
  464. enteredAmount = 0;
  465. $(element).find('.txtCurrentAmount').val(enteredAmount);
  466. $(element).find('.lblDueBalance').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(walletAmount, 2));
  467. }
  468. var ttWallet = 0;
  469. $(elementforPayment).find('.divDue_List_item').each(function () {
  470. var pqr = Number($(this).find('.txtCurrentAmount').val());
  471. if (!isNaN(pqr))
  472. ttWallet += pqr;
  473. });
  474. $(elementforPayment).find('.txtTotalDueAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(ttWallet, 2));
  475. }
  476. else {
  477. MessageHelper.Instance().showError("You don't have enough amount", errormsg);
  478. $(element).find('.txtCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(Number($(element).find('.hfDueAmount').val()), 2));
  479. $(element).find('.lblDueBalance').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(0, 2));
  480. var ttWallet = 0;
  481. $(elementforPayment).find('.divDue_List_item').each(function () {
  482. var pqr = Number($(this).find('.txtCurrentAmount').val());
  483. if (!isNaN(pqr))
  484. ttWallet += pqr;
  485. });
  486. $(elementforPayment).find('.txtTotalDueAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(ttWallet, 2));
  487. }
  488. }
  489. else {
  490. MessageHelper.Instance().showError("You cannot adjust without enough credits", errormsg);
  491. var dueAmt = $(element).find('.hfDueAmount').val();
  492. var curAmt = $(element).find('.txtCurrentAmount').val();
  493. var ttWallet = 0;
  494. $(elementforPayment).find('.divDue_List_item').each(function () {
  495. var pqr = Number($(this).find('.txtCurrentAmount').val());
  496. if (!isNaN(pqr))
  497. ttWallet += pqr;
  498. });
  499. var newAmt = Number(crAmt) - (Number(ttWallet) - Number(curAmt));
  500. if (newAmt >= 0) {
  501. if (newAmt >= Number($(element).find('.hfDueAmount').val())) {
  502. $(element).find('.txtCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(Number($(element).find('.hfDueAmount').val()), 2));
  503. $(element).find('.lblDueBalance').text(0.00);
  504. $(elementforPayment).find('.txtTotalDueAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(crAmt, 2));
  505. }
  506. else {
  507. $(element).find('.txtCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(newAmt, 2));
  508. $(element).find('.lblDueBalance').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(Number(Number($(element).find('.hfDueAmount').val()) - newAmt), 2));
  509. $(elementforPayment).find('.txtTotalDueAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(crAmt, 2));
  510. }
  511. }
  512. else {
  513. if (enteredAmount === '.')
  514. enteredAmount = 0;
  515. $(element).find('.txtCurrentAmount').val(enteredAmount);
  516. $(element).find('.lblDueBalance').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(Number($(element).find('.hfWalletAmount').val()), 2));
  517. $(elementforPayment).find('.txtTotalDueAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(crAmt, 2));
  518. }
  519. }
  520. if (elementforPayment.find(".txt_Debit_" + trnId).val() == 0)
  521. instance.update_Credtotal(trnId);
  522. if (elementforPayment.find(".txt_Credit_" + trnId).val() == 0)
  523. instance.update_Debtotal(trnId);
  524. instance.updatePayment(trnId, 'due', false, true);
  525. }
  526. AdjustWalletAmount(jId, trnId) {
  527. var instance = this;
  528. instance.AutoAdjustDues(trnId);
  529. var errormsg = $(".bizgaze_FormErrorMessages:visible").attr("id");
  530. instance.initFlag();
  531. var x = document.getElementById("divWallet_List_item_" + jId).parentElement.parentElement.getAttribute("class");
  532. var elementforPayment = $('.transactonList_item_' + trnId + '');
  533. var totAdjustment = $(elementforPayment).find('.txtTotalWalletAdjusted_' + trnId + '').val();
  534. var totWallet = 0;
  535. var totWalletAmt = Number(elementforPayment.find('.txtWalletsTotalAmt').text());
  536. $(elementforPayment).find('.divWallet_List_item').each(function () {
  537. var xyz = Number($(this).find('.txtWalletCurrentAmount').val());
  538. if (!isNaN(xyz))
  539. totWallet += xyz;
  540. });
  541. var totWalletAdj = totWallet;
  542. var element = elementforPayment.find('#divWallet_List_item_' + jId + '');
  543. var drAmt = $(elementforPayment).find("#tx_Debit_" + trnId).val();
  544. var crAmt = $(elementforPayment).find('#tx_Credit_' + trnId).val();
  545. var Amt = 0;
  546. if (crAmt > 0)
  547. Amt = Number(crAmt);
  548. if (drAmt > 0)
  549. Amt = Number(drAmt);
  550. var totWalletAmt = Number(totWallet) + Number(crAmt);
  551. var totDueAmt = Number(elementforPayment.find('.txtDuesTotalAmt').text());
  552. let enteredAmt = $(element).find('.txtWalletCurrentAmount').val();
  553. if (totWalletAmt <= totDueAmt) {
  554. if (totWallet <= totWalletAmt) {
  555. var OrgwalletAmount = Number($(element).find('.hfWalletAmount').val());
  556. var txtWalletCurrentAmount = 0;
  557. txtWalletCurrentAmount = Number($(element).find('.txtWalletCurrentAmount').val());
  558. if (txtWalletCurrentAmount == 0 || txtWalletCurrentAmount == undefined) {
  559. $(element).find('.txtWalletCurrentAmount').val(enteredAmt);
  560. $(element).find('.lblWalletRemaing').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(OrgwalletAmount, 2));
  561. var ttWallet = 0;
  562. $(elementforPayment).find('.divWallet_List_item').each(function () {
  563. var pqr = Number($(this).find('.txtWalletCurrentAmount').val());
  564. if (!isNaN(pqr))
  565. ttWallet += pqr;
  566. });
  567. $(elementforPayment).find('.txtTotalWalletAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(ttWallet, 2));
  568. if (elementforPayment.find(".txt_Debit_" + trnId).val() == 0)
  569. instance.update_Credtotal(trnId);
  570. if (elementforPayment.find(".txt_Credit_" + trnId).val() == 0)
  571. instance.update_Debtotal(trnId);
  572. instance.updatePayment(trnId, 'due', false, false);
  573. return false;
  574. }
  575. if (txtWalletCurrentAmount > OrgwalletAmount) {
  576. $(element).find('.txtWalletCurrentAmount').val(OrgwalletAmount);
  577. $(element).find('.lblWalletRemaing').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(0, 2));
  578. }
  579. else {
  580. var walletAmount = OrgwalletAmount - txtWalletCurrentAmount;
  581. if (enteredAmt === '.')
  582. enteredAmt = 0;
  583. $(element).find('.txtWalletCurrentAmount').val(enteredAmt);
  584. $(element).find('.lblWalletRemaing').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(walletAmount, 2));
  585. }
  586. var ttWallet = 0;
  587. $(elementforPayment).find('.divWallet_List_item').each(function () {
  588. var pqr = Number($(this).find('.txtWalletCurrentAmount').val());
  589. if (!isNaN(pqr))
  590. ttWallet += pqr;
  591. });
  592. $(elementforPayment).find('.txtTotalWalletAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(ttWallet, 2));
  593. }
  594. else {
  595. MessageHelper.Instance().showError("You don't have enough amount in that wallets", errormsg);
  596. $(element).find('.txtWalletCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(Number($(element).find('.hfWalletAmount').val()), 2));
  597. $(element).find('.lblWalletRemaing').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(0, 2));
  598. var ttWallet = 0;
  599. $(elementforPayment).find('.divWallet_List_item').each(function () {
  600. var pqr = Number($(this).find('.txtWalletCurrentAmount').val());
  601. if (!isNaN(pqr))
  602. ttWallet += pqr;
  603. });
  604. $(elementforPayment).find('.txtTotalWalletAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(ttWallet, 2));
  605. }
  606. }
  607. else {
  608. var curWalletAmt = Number($(element).find('.hfWalletAmount').val());
  609. if (totWalletAmt > totDueAmt) {
  610. MessageHelper.Instance().showError("You cannot adjust wallets without enough dues.", errormsg);
  611. $(element).find('.txtWalletCurrentAmount').val(0.00);
  612. $(element).find('.lblWalletRemaing').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(curWalletAmt, 2));
  613. }
  614. else {
  615. var curLblWallAmt = -Number(totDueAmt);
  616. MessageHelper.Instance().showError("You cannot adjust wallets without enough dues.", errormsg);
  617. $(element).find('.txtWalletCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(totDueAmt, 2));
  618. $(element).find('.lblWalletRemaing').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(curLblWallAmt, 2));
  619. var ttWallet = 0;
  620. $(elementforPayment).find('.divWallet_List_item').each(function () {
  621. var pqr = Number($(this).find('.txtWalletCurrentAmount').val());
  622. if (!isNaN(pqr))
  623. ttWallet += pqr;
  624. });
  625. $(elementforPayment).find('.txtTotalWalletAdjusted_' + trnId + '').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(ttWallet, 2));
  626. }
  627. var curWallAmt = Number(totWalletAmt) - Number(totDueAmt);
  628. }
  629. if (elementforPayment.find(".txt_Debit_" + trnId).val() == 0)
  630. instance.update_Credtotal(trnId);
  631. if (elementforPayment.find(".txt_Credit_" + trnId).val() == 0)
  632. instance.update_Debtotal(trnId);
  633. instance.updatePayment(trnId, 'due', false, false);
  634. }
  635. gettotbal(totbal, trnId) {
  636. var instance = this;
  637. if (instance.findtxtcrRdr <= trnId) {
  638. if (Number(totbal) < 0) {
  639. totbal = Unibase.Core.Helpers.NumberHelper.Instance().roundNumber((-1 * totbal), 2) + " Dr";
  640. }
  641. else {
  642. totbal = Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(totbal, 2) + " Cr";
  643. }
  644. var element = $('.transactonList_item_TRN' + instance.findtxtcrRdr + '');
  645. var rowAcNarration = element.find(".rowAcNarrartion");
  646. var crrdrr = rowAcNarration.find("#crRdr");
  647. $(crrdrr).html(totbal);
  648. }
  649. instance.findtxtcrRdr++;
  650. }
  651. journalEntries() {
  652. var instance = this;
  653. var journalEntries = new Array();
  654. $('.transactonList_item').each(function (index) {
  655. var element = $(this);
  656. if (index > 0) {
  657. var debit = Number(element.find('.txt_Debit').val());
  658. var credit = Number(element.find('.txt_Credit').val());
  659. var wAdjusted = Number(element.find('.txtTotalWalletAdjusted').val());
  660. var dAdjusted = Number(element.find('.txtTotalDueAdjusted').val());
  661. var trnType = element.find('.hf_TransactionType').val();
  662. var trnId = element.find('.hf_TransactionId').val();
  663. var journalEntryId = element.find('.hf_JournalEntryId').val();
  664. if (trnType == "" || trnType == undefined) {
  665. if (debit == 0)
  666. trnType = "credit";
  667. else
  668. trnType = "debit";
  669. }
  670. var contactId = element.find('.hf_ContactId').val();
  671. var allocations = new Array();
  672. if (contactId != "0")
  673. allocations = instance.journalAllocations(trnId);
  674. var jE_ContactId = Number(element.find('.hf_ContactId').val());
  675. if (jE_ContactId == 0) {
  676. jE_ContactId = Number(element.find('.hfddl_OrgAutocomplete').val());
  677. }
  678. journalEntries.push({
  679. JournalEntryId: Number(element.find('.hf_JournalEntryId').val()),
  680. JournalId: Number(element.find('.hf_JournalIdforJEntry').val()),
  681. RefJournalId: Number(element.find('.hf_RefJournalId').val()),
  682. ContactId: jE_ContactId,
  683. Debit: Number(debit),
  684. Credit: Number(credit),
  685. LedgerId: Number(element.find('.hf_AccountId').val()),
  686. LedgerName: element.find('.accountName ').val(),
  687. Description: element.find('#txt_AcNarration').val(),
  688. TransactonType: trnType,
  689. JournalAllocations: allocations,
  690. });
  691. }
  692. });
  693. return journalEntries;
  694. }
  695. journalAllocations(trnId) {
  696. var instance = this;
  697. var element = $('.transactonList_item_' + trnId + '');
  698. var data = new Array();
  699. element.find('.divDue_List_item').each(function (index) {
  700. if (index > 0) {
  701. if ($(this).find('.txtCurrentAmount').val() != 0 && $(this).find('.txtCurrentAmount').val() != '' && $(this).find('.txtCurrentAmount').val() != undefined) {
  702. var jAId = Number($(this).find('.hf_JournalAllocId').val());
  703. data.push({
  704. JournalAllocId: isNaN(jAId) ? 0 : jAId,
  705. Credit: Number($(this).find('.txtCurrentAmount').val()),
  706. RefAllocId: Number($(this).find('.hf_RefAllocId').val()),
  707. AllocType: 2,
  708. AllocTypeId: 2
  709. });
  710. }
  711. }
  712. });
  713. element.find('.divWallet_List_item').each(function (index) {
  714. if (index > 0) {
  715. if ($(this).find('.txtWalletCurrentAmount').val() != 0 && $(this).find('.txtWalletCurrentAmount').val() != '' && $(this).find('.txtWalletCurrentAmount').val() != undefined) {
  716. var jAId = Number($(this).find('.hf_JournalAllocId').val());
  717. data.push({
  718. JournalAllocId: isNaN(jAId) ? 0 : jAId,
  719. Debit: Number($(this).find('.txtWalletCurrentAmount').val()),
  720. RefAllocId: Number($(this).find('.hf_RefAllocId').val()),
  721. AllocType: 2,
  722. AllocTypeId: 2
  723. });
  724. }
  725. }
  726. });
  727. $('.transactonList_item').each(function (index) {
  728. if (!($(this).find('.lblAdvanceAmount_' + trnId).attr('class') == 'lblAdvanceAmount_' + trnId + ' hidden')) {
  729. if (index > 0) {
  730. if (Number($(this).find('.lblAdvanceAmount_' + trnId).text()) != 0 && $(this).find('.lblAdvanceAmount_' + trnId).text() != '' && $(this).find('.lblAdvanceAmount_' + trnId).text() != undefined) {
  731. var jAId = Number($(this).find('.hf_AdvanceJournalAllocId').val());
  732. data.push({
  733. JournalAllocId: isNaN(jAId) ? 0 : jAId,
  734. LedgerId: Number($(this).find('.hf_AccountId').val()),
  735. Credit: Number($(this).find('.lblAdvanceAmount_' + trnId).text()),
  736. AllocType: 3,
  737. AllocTypeId: 3,
  738. RefAllocId: 0,
  739. });
  740. }
  741. }
  742. }
  743. });
  744. if ((element.find('.hf_ContactId').val() != 0) && ((element.find('.txt_Debit').val() != 0) || (element.find('.txt_Credit').val() != 0))) {
  745. var credit = 0;
  746. var debit = Number(element.find('.txt_Debit').val());
  747. if (debit == 0 || debit == undefined || debit == null) {
  748. debit = 0;
  749. credit = Number(element.find('.txt_Credit').val());
  750. }
  751. var jAId = Number(element.find('#hf_NewRefJournalAllocId_' + trnId).val());
  752. data.push({
  753. JournalAllocId: isNaN(jAId) ? 0 : jAId,
  754. LedgerId: Number(element.find('.hf_AccountId').val()),
  755. Debit: debit,
  756. Credit: credit,
  757. AllocType: 1,
  758. AllocTypeId: 1,
  759. RefAllocId: 0,
  760. });
  761. }
  762. return data;
  763. }
  764. accountAutoCompleteLoading(trnId) {
  765. var element = $('.transactonList_item_' + trnId + '');
  766. var controlId = element.find(".accountName");
  767. var hiddenFieldControlId = element.find("#hf_ContactIdSelected_TRN" + trnId + "");
  768. var url = _appsettings.server_url() + '/apis/v4/bizgaze/transact/ledgers/ledgerautocomplete';
  769. AutoCompleteHelper.getHelper().Create(controlId, hiddenFieldControlId, url, null);
  770. }
  771. accountAutoCompleteOnChange(trnId) {
  772. var instance = this;
  773. var element = $('.transactonList_item_' + trnId + '');
  774. var listDiv = element.find(".transactonList_div_" + trnId + "");
  775. var controlId = element.find(".accountName");
  776. var hiddenFieldControlId = element.find("#hf_ContactIdSelected_" + trnId + "");
  777. var rowAcNarration = element.find(".rowAcNarrartion");
  778. var rowDues = element.find(".rowDues");
  779. var rowWallets = element.find(".rowWallets");
  780. var secWallets = element.find(".secWallets");
  781. var secDues = element.find(".secDues");
  782. var orgAutoComplete = element.find("#div_ddl_Cust");
  783. var emptyDiv = element.find("#div_empty");
  784. var accountId = element.find(".accountName").val();
  785. var accountName = element.find(".accountName").text();
  786. var accountAddlData = Number(element.find(".accountName").data("addldata"));
  787. if (accountId == "0")
  788. accountName = "Select Account";
  789. if (accountId == "-1" || accountId == -1)
  790. accountName = "Create New";
  791. if (accountName == "Create New") {
  792. $(".accountName").val(null).trigger("change");
  793. var FormUniqueId = "Bizgaze_Extension_Transact_Ledgers_App_Ledgers_CreateForm";
  794. var AppConfigurationUnique = "Bizgaze_Extension_Transact_Ledgers_AppConfiguration_CreateLedgers";
  795. Unibase.Platform.Forms.Managers.FormManager.Instance().getFormbyUniqueId(FormUniqueId).then(function (response) {
  796. var obj = {
  797. controlid: controlId,
  798. hiddenid: hiddenFieldControlId
  799. };
  800. var successobj = {
  801. CallBack: function (id, obj) {
  802. Bizgaze.Apps.Transact.Managers.LedgerManager.Instance().getLedgerById(id).then(function (response) {
  803. var createdLedger = new Option(response.result.LedgerName, response.result.LedgerId, true);
  804. var controlIdAttr = obj.controlid.attr("id");
  805. $("#" + controlIdAttr + " option").remove();
  806. $(obj.controlid).append(createdLedger).trigger('change');
  807. $(obj.hiddenid).val(response.result.LedgerId);
  808. $(obj.controlid).parents(".transactonList_item").find('.hf_AccountId').val(response.result.LedgerId);
  809. });
  810. },
  811. Parameters: obj,
  812. };
  813. var formviewerObj = {
  814. FormId: response.result.FormId,
  815. AppConfigurationId: 0,
  816. Pk_Value: 0,
  817. PortletWidgetId: 0,
  818. OnSuccess: successobj,
  819. OnFail: null,
  820. OnLoad: null,
  821. };
  822. instance.fileCacheHelper.loadJsFile("apps/transact/managers/ledgers/ledgermanager.js", function () {
  823. Unibase.Platform.Forms.Components.FormViewer.instance.init(formviewerObj);
  824. });
  825. });
  826. }
  827. $('.lblAdvanceAmount_' + trnId).removeClass('hidden');
  828. if ($(controlId).val() != '') {
  829. if ($("#hf_pk_value").val() == 0)
  830. $(listDiv).removeClass("hidden");
  831. else
  832. $(listDiv).addClass("hidden");
  833. $(rowAcNarration).removeClass("hidden");
  834. $(rowWallets).removeClass("hidden");
  835. $(rowDues).removeClass("hidden");
  836. element.find('.hf_AccountId').val(accountId);
  837. if (Number(accountId) != 0 && !isNaN(Number(accountId))) {
  838. Bizgaze.Apps.Transact.Managers.VoucherManager.Instance().getLedgerDetails(Number(accountId)).then(function (ledgerResponse) {
  839. var result = ledgerResponse.result;
  840. if (result.length > 0) {
  841. element.find('.hf_ContactId').val(result[0].contactid);
  842. var contactids = result[0].contactid;
  843. if (contactids == 0) {
  844. $(rowWallets).addClass("hidden");
  845. $(rowDues).addClass("hidden");
  846. $(secWallets).find('.divWallet_List').empty();
  847. $(secDues).find('.divDue_List').empty();
  848. $(emptyDiv).addClass("hidden");
  849. $(orgAutoComplete).removeClass("hidden");
  850. }
  851. else {
  852. $(rowWallets).removeClass("hidden");
  853. $(rowDues).removeClass("hidden");
  854. $(secWallets).addClass("hidden");
  855. $(secDues).addClass("hidden");
  856. $(emptyDiv).removeClass("hidden");
  857. $(orgAutoComplete).addClass("hidden");
  858. }
  859. if ($('.transactonList_item_' + trnId + '').attr("identityAttr") == 'new') {
  860. if (contactids != 0) {
  861. if (element.find('.txt_Debit').val() == 0)
  862. instance.loadWalletsAndDues(trnId, 0, contactids, 'credit', false, '', true, false);
  863. else
  864. instance.loadWalletsAndDues(trnId, 0, contactids, 'debit', false, '', true, false);
  865. }
  866. else {
  867. instance.loadWalletsAndDues(trnId, 0, 0, '', false, '', true, false);
  868. }
  869. instance.updatePayment(trnId, 'due', false, false);
  870. }
  871. }
  872. });
  873. }
  874. if (accountAddlData != 0 && !isNaN(accountAddlData)) {
  875. $('#hf_jContactId').val(accountAddlData);
  876. var bal = "Balance Not Found";
  877. if (accountAddlData < 0) {
  878. bal = Unibase.Core.Helpers.NumberHelper.Instance().roundNumber((-1 * accountAddlData), 2) + " Dr";
  879. }
  880. else {
  881. bal = Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(accountAddlData, 2) + " Cr";
  882. }
  883. }
  884. var ledgerid = accountId;
  885. if (ledgerid > 0) {
  886. var crrdrr = rowAcNarration.find("#crRdr");
  887. $(crrdrr).html(bal);
  888. var crtot = Number($('#credittotal').html());
  889. var drtot = Number($('#Debittotal').html());
  890. if (crtot < drtot && element.find("#tx_Debit_" + trnId).val() == "")
  891. element.find("#tx_Credit_" + trnId).val(drtot - crtot);
  892. else if (crtot > drtot && element.find("#tx_Credit_" + trnId).val() == "")
  893. element.find("#tx_Debit_" + trnId).val(crtot - drtot);
  894. if ((drtot - crtot) > 0) {
  895. $('.txt_Credit_' + trnId).keyup();
  896. }
  897. if ((crtot - drtot) > 0) {
  898. $('.txt_Debit_' + trnId).keyup();
  899. }
  900. instance.update_Debtotal(trnId);
  901. instance.update_Credtotal(trnId);
  902. }
  903. element.find('.txtWalletsTotalAmt').text('');
  904. element.find('.txtDuesTotalAmt').text('');
  905. }
  906. }
  907. updatePayment(trnId, updateFrom, refreshWallets, refreshDues) {
  908. var instance = this;
  909. var element = $('.transactonList_item_' + trnId + '');
  910. var advanceAmt = 0;
  911. var paymentTotal = 0;
  912. var debitInput = element.find('.txt_Debit').val();
  913. var creditInput = element.find('.txt_Credit').val();
  914. var walletsTotal = instance.walletsTotal(trnId);
  915. var duesTotal = element.find('.txtTotalDueAdjusted').val();
  916. var transactionType = element.find('.hf_TransactionType').val();
  917. if (updateFrom == 'credit') {
  918. paymentTotal = Number(creditInput);
  919. if (paymentTotal != undefined) {
  920. if ($(element).find('#btnAutoAdjustDues').attr("name") != "disabled" && (element.find("#tx_Debit_" + trnId).val() == 0 || element.find("#tx_Debit_" + trnId).val() == undefined)) {
  921. if ($("#tx_Debit_" + trnId).val() == 0)
  922. $(element).find('.txtTotalDueAdjusted').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(paymentTotal, 2));
  923. $(element).find('.divDue_List_item').each(function (index) {
  924. var dueAmount = Number($(this).find('.hfDueAmount').val());
  925. var txtCurrentAmt = 0;
  926. if (index > 0 && paymentTotal != 0) {
  927. if (paymentTotal >= dueAmount) {
  928. if (dueAmount != 0) {
  929. paymentTotal -= dueAmount;
  930. txtCurrentAmt = dueAmount;
  931. dueAmount = 0;
  932. advanceAmt = paymentTotal;
  933. }
  934. }
  935. else {
  936. dueAmount -= paymentTotal;
  937. txtCurrentAmt = paymentTotal;
  938. paymentTotal = 0;
  939. }
  940. }
  941. $(this).find('.txtCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(txtCurrentAmt, 2));
  942. $(this).find('.lblDueBalance').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(dueAmount, 2));
  943. });
  944. }
  945. if (Number(walletsTotal) != 0 && refreshWallets == true) {
  946. element.find('.txtTotalWalletAdjusted').val(walletsTotal);
  947. $(element).find('.divWallet_List_item').each(function (index) {
  948. var wAmount = Number($(this).find('.hfWalletAmount').val());
  949. var wCurrentAmt = 0;
  950. if (index > 0) {
  951. if (walletsTotal >= wAmount) {
  952. if (wAmount != 0) {
  953. walletsTotal -= wAmount;
  954. wCurrentAmt = wAmount;
  955. wAmount = 0;
  956. }
  957. }
  958. else {
  959. wAmount -= walletsTotal;
  960. wCurrentAmt = walletsTotal;
  961. walletsTotal = 0;
  962. }
  963. $(this).find('.txtWalletCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(wCurrentAmt, 2));
  964. $(this).find('.lblWalletRemaing').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(wAmount, 2));
  965. }
  966. });
  967. }
  968. }
  969. }
  970. else if (updateFrom == 'debit') {
  971. paymentTotal = Number(debitInput);
  972. if (paymentTotal != undefined) {
  973. if ($(element).find('#btnAutoAdjustDues').attr("name") != "disabled" && (element.find("#tx_Debit_" + trnId).val() == 0 || element.find("#tx_Debit_" + trnId).val() == undefined)) {
  974. if ($("#tx_Debit_" + trnId).val() == 0)
  975. $(element).find('.txtTotalDueAdjusted').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(paymentTotal, 2));
  976. $(element).find('.divDue_List_item').each(function (index) {
  977. var dueAmount = Number($(this).find('.hfDueAmount').val());
  978. var txtCurrentAmt = 0;
  979. if (index > 0 && paymentTotal != 0) {
  980. if (paymentTotal >= dueAmount) {
  981. if (dueAmount != 0) {
  982. paymentTotal -= dueAmount;
  983. txtCurrentAmt = dueAmount;
  984. dueAmount = 0;
  985. advanceAmt = paymentTotal;
  986. }
  987. }
  988. else {
  989. dueAmount -= paymentTotal;
  990. txtCurrentAmt = paymentTotal;
  991. paymentTotal = 0;
  992. }
  993. }
  994. $(this).find('.txtCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(txtCurrentAmt, 2));
  995. $(this).find('.lblDueBalance').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(dueAmount, 2));
  996. });
  997. }
  998. if (Number(walletsTotal) != 0 && refreshWallets == true) {
  999. element.find('.txtTotalWalletAdjusted').val(walletsTotal);
  1000. $(element).find('.divWallet_List_item').each(function (index) {
  1001. var wAmount = Number($(this).find('.hfWalletAmount').val());
  1002. var wCurrentAmt = 0;
  1003. if (index > 0) {
  1004. if (walletsTotal >= wAmount) {
  1005. if (wAmount != 0) {
  1006. walletsTotal -= wAmount;
  1007. wCurrentAmt = wAmount;
  1008. wAmount = 0;
  1009. }
  1010. }
  1011. else {
  1012. wAmount -= walletsTotal;
  1013. wCurrentAmt = walletsTotal;
  1014. walletsTotal = 0;
  1015. }
  1016. $(this).find('.txtWalletCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(wCurrentAmt, 2));
  1017. $(this).find('.lblWalletRemaing').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(wAmount, 2));
  1018. }
  1019. });
  1020. }
  1021. }
  1022. }
  1023. else if (updateFrom == 'wallet') {
  1024. paymentTotal = Number(creditInput) + Number(debitInput) + Number(walletsTotal);
  1025. if (paymentTotal != 0) {
  1026. if ($(element).find('#btnAutoAdjustDues').attr("name") != "disabled" && (element.find("#tx_Debit_" + trnId).val() == 0 || element.find("#tx_Debit_" + trnId).val() == undefined)) {
  1027. if ($("#tx_Debit_" + trnId).val() == 0)
  1028. $(element).find('.txtTotalDueAdjusted').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(paymentTotal, 2));
  1029. $(element).find('.divDue_List_item').each(function (index) {
  1030. var dueAmount = Number($(this).find('.hfDueAmount').val());
  1031. var txtCurrentAmt = 0;
  1032. if (index > 0 && paymentTotal != 0) {
  1033. if (paymentTotal >= dueAmount) {
  1034. if (dueAmount != 0) {
  1035. paymentTotal -= dueAmount;
  1036. txtCurrentAmt = dueAmount;
  1037. dueAmount = 0;
  1038. advanceAmt = paymentTotal;
  1039. }
  1040. }
  1041. else {
  1042. dueAmount -= paymentTotal;
  1043. txtCurrentAmt = paymentTotal;
  1044. paymentTotal = 0;
  1045. }
  1046. }
  1047. $(this).find('.txtCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(txtCurrentAmt, 2));
  1048. $(this).find('.lblDueBalance').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(dueAmount, 2));
  1049. });
  1050. }
  1051. if (Number(walletsTotal) != 0 && refreshWallets == true) {
  1052. element.find('.txtTotalWalletAdjusted').val(walletsTotal);
  1053. $(element).find('.divWallet_List_item').each(function (index) {
  1054. var wAmount = Number($(this).find('.hfWalletAmount').val());
  1055. var wCurrentAmt = 0;
  1056. if (index > 0) {
  1057. if (walletsTotal >= wAmount) {
  1058. if (wAmount != 0) {
  1059. walletsTotal -= wAmount;
  1060. wCurrentAmt = wAmount;
  1061. wAmount = 0;
  1062. }
  1063. }
  1064. else {
  1065. wAmount -= walletsTotal;
  1066. wCurrentAmt = walletsTotal;
  1067. walletsTotal = 0;
  1068. }
  1069. $(this).find('.txtWalletCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(wCurrentAmt, 2));
  1070. $(this).find('.lblWalletRemaing').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(wAmount, 2));
  1071. }
  1072. });
  1073. }
  1074. else if (Number(walletsTotal) == 0) {
  1075. element.find('.txtTotalWalletAdjusted').val(walletsTotal);
  1076. element.find('.txtWalletCurrentAmount').val(walletsTotal);
  1077. }
  1078. }
  1079. }
  1080. else if (updateFrom == 'due') {
  1081. paymentTotal = Number(creditInput) + Number(debitInput) + Number(walletsTotal);
  1082. if (!refreshDues) {
  1083. if (paymentTotal != 0) {
  1084. if ($(element).find('#btnAutoAdjustDues').attr("name") != "disabled" && (element.find("#tx_Debit_" + trnId).val() == 0 || element.find("#tx_Debit_" + trnId).val() == undefined)) {
  1085. $(element).find('.txtTotalDueAdjusted').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(paymentTotal, 2));
  1086. }
  1087. if ($(element).find('#btnAutoAdjustDues').attr("name") != "disabled" && (element.find("#tx_Credit_" + trnId).val() == 0 || element.find("#tx_Credit_" + trnId).val() == undefined)) {
  1088. $(element).find('.txtTotalDueAdjusted').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(paymentTotal, 2));
  1089. }
  1090. }
  1091. if ($(element).find('#btnAutoAdjustDues').attr("name") != "disabled" && (element.find("#tx_Debit_" + trnId).val() == 0 || element.find("#tx_Debit_" + trnId).val() == undefined)) {
  1092. $(element).find('.divDue_List_item').each(function (index) {
  1093. var dueAmount = Number($(this).find('.hfDueAmount').val());
  1094. var txtCurrentAmt = 0;
  1095. if (index > 0) {
  1096. if (paymentTotal >= dueAmount) {
  1097. if (dueAmount != 0) {
  1098. paymentTotal -= dueAmount;
  1099. txtCurrentAmt = dueAmount;
  1100. dueAmount = 0;
  1101. advanceAmt = paymentTotal;
  1102. }
  1103. }
  1104. else {
  1105. dueAmount -= paymentTotal;
  1106. txtCurrentAmt = paymentTotal;
  1107. paymentTotal = 0;
  1108. }
  1109. if (Number(paymentTotal) < 0.01) {
  1110. paymentTotal = 0;
  1111. }
  1112. }
  1113. $(this).find('.txtCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(txtCurrentAmt, 2));
  1114. $(this).find('.lblDueBalance').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(dueAmount, 2));
  1115. });
  1116. }
  1117. if ($(element).find('#btnAutoAdjustDues').attr("name") != "disabled" && (element.find("#tx_Credit_" + trnId).val() == 0 || element.find("#tx_Credit_" + trnId).val() == undefined)) {
  1118. $(element).find('.divDue_List_item').each(function (index) {
  1119. var dueAmount = Number($(this).find('.hfDueAmount').val());
  1120. var txtCurrentAmt = 0;
  1121. if (index > 0) {
  1122. if (paymentTotal >= dueAmount) {
  1123. if (dueAmount != 0) {
  1124. paymentTotal -= dueAmount;
  1125. txtCurrentAmt = dueAmount;
  1126. dueAmount = 0;
  1127. advanceAmt = paymentTotal;
  1128. }
  1129. }
  1130. else {
  1131. dueAmount -= paymentTotal;
  1132. txtCurrentAmt = paymentTotal;
  1133. paymentTotal = 0;
  1134. }
  1135. if (Number(paymentTotal) < 0.01) {
  1136. paymentTotal = 0;
  1137. }
  1138. }
  1139. $(this).find('.txtCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(txtCurrentAmt, 2));
  1140. $(this).find('.lblDueBalance').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(dueAmount, 2));
  1141. });
  1142. }
  1143. if (Number(walletsTotal) != 0 && refreshWallets == true) {
  1144. element.find('.txtTotalWalletAdjusted').val(walletsTotal);
  1145. $(element).find('.divWallet_List_item').each(function (index) {
  1146. var wAmount = Number($(this).find('.hfWalletAmount').val());
  1147. var wCurrentAmt = 0;
  1148. if (index > 0) {
  1149. if (walletsTotal >= wAmount) {
  1150. if (wAmount != 0) {
  1151. walletsTotal -= wAmount;
  1152. wCurrentAmt = wAmount;
  1153. wAmount = 0;
  1154. }
  1155. }
  1156. else {
  1157. wAmount -= walletsTotal;
  1158. wCurrentAmt = walletsTotal;
  1159. walletsTotal = 0;
  1160. }
  1161. if (Number(walletsTotal) < 0.01) {
  1162. walletsTotal = 0;
  1163. }
  1164. $(this).find('.txtWalletCurrentAmount').val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(wCurrentAmt, 2));
  1165. $(this).find('.lblWalletRemaing').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(wAmount, 2));
  1166. }
  1167. });
  1168. }
  1169. }
  1170. }
  1171. advanceAmt = paymentTotal;
  1172. if (updateFrom == 'due') {
  1173. var ttWallet = 0;
  1174. $(element).find('.divDue_List_item').each(function () {
  1175. var pqr = Number($(this).find('.txtCurrentAmount').val());
  1176. if (!isNaN(pqr))
  1177. ttWallet += pqr;
  1178. });
  1179. var credit = element.find('.txt_Credit').val();
  1180. if (Number(credit) == 0) {
  1181. credit = element.find('.txt_Debit').val();
  1182. }
  1183. var Amt = parseFloat(credit);
  1184. if ((Amt - ttWallet) > 0)
  1185. advanceAmt = (Amt - ttWallet);
  1186. else
  1187. advanceAmt = 0;
  1188. var curAdvAmt = Number($('.lblAdvanceAmount_' + trnId).text());
  1189. if (!instance.editVoucher && !isNaN(curAdvAmt) && curAdvAmt > 0) {
  1190. if (advanceAmt > 0) {
  1191. $('.rowAdvanceAmount_' + trnId).removeClass('hidden');
  1192. $('.lblAdvanceAmount_' + trnId).text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(advanceAmt, 2));
  1193. }
  1194. }
  1195. if (advanceAmt == 0) {
  1196. $('.lblAdvanceAmount_' + trnId).text(0.00);
  1197. $('.rowAdvanceAmount_' + trnId).addClass('hidden');
  1198. }
  1199. $(element).find('.txtTotalDueAdjusted_' + trnId).val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(ttWallet, 2));
  1200. }
  1201. else {
  1202. if (element.find(".txt_Credit_" + trnId).val() == 0) {
  1203. $('.lblAdvanceAmount_' + trnId).text(0.00);
  1204. $('.rowAdvanceAmount_' + trnId).addClass('hidden');
  1205. }
  1206. }
  1207. if (element.find(".rowWallets").hasClass('hidden')) {
  1208. $('.lblAdvanceAmount_' + trnId).text(0.00);
  1209. $('.rowAdvanceAmount_' + trnId).addClass('hidden');
  1210. }
  1211. }
  1212. walletsTotal(trnId) {
  1213. var instance = this;
  1214. var element = $('.transactonList_item_' + trnId + '');
  1215. var amount = 0;
  1216. var wTotals = element.find('.txtTotalWalletAdjusted').val();
  1217. wTotals = Number(wTotals);
  1218. if (wTotals > 0)
  1219. amount += wTotals;
  1220. return amount;
  1221. }
  1222. loadWalletsAndDues(trnId, voucherId, contactId, trnType, updatePayment, updateFrom, refreshWallets, refreshDues) {
  1223. var instance = this;
  1224. var element = $('.transactonList_item_' + trnId + '');
  1225. if (contactId != 0) {
  1226. var divDues = element.find('.divDue_List');
  1227. var divWallets = element.find('.divWallet_List');
  1228. $(divDues).html('<div class="list-group-item m-b-n divDue_List_item hidden"></div>');
  1229. $(divDues).html('<div class="list-group-item divDue_List_item"><div class="row"><small class="ml-10 text-danger">No data found...</small></div></div>');
  1230. if (refreshWallets) {
  1231. $(divWallets).html('<div class="list-group-item m-b-n divWallet_List_item hidden"></div>');
  1232. $(divWallets).html('<div class="list-group-item divWallet_List_item"><div class="row"><small class="ml-10 text-danger">No data found...</small></div></div>');
  1233. }
  1234. Bizgaze.Apps.Transact.Managers.VoucherManager.Instance().getVoucherItems(voucherId, contactId, trnType).then(function (response) {
  1235. var result = response.result;
  1236. var html = '';
  1237. var html2 = '';
  1238. var walletsTotalBal = 0;
  1239. var duesTotalBal = 0;
  1240. var walletsTotalAdj = 0;
  1241. var duesTotalAdj = 0;
  1242. if (result.length != 0) {
  1243. $(divDues).empty();
  1244. $(divDues).html('<div class="list-group-item m-b-n divDue_List_item hidden"></div>');
  1245. if (refreshWallets) {
  1246. $(divWallets).empty();
  1247. $(divWallets).html('<div class="list-group-item m-b-n divWallet_List_item hidden"></div>');
  1248. }
  1249. for (var i = (result.length) - 1; i >= 0; i--) {
  1250. var journalAlloc = result[i].JournalAlloc;
  1251. if (!(journalAlloc.JournalNo.startsWith("#"))) {
  1252. var data = result[i];
  1253. function datediff(date2, today) {
  1254. today = new Date(today.split('/')[2], today.split('/')[1] - 1, today.split('/')[0]);
  1255. date2 = new Date(date2.split('/')[2], date2.split('/')[1] - 1, date2.split('/')[0]);
  1256. var timeDiff = Math.abs(today.getTime() - date2.getTime());
  1257. var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
  1258. return diffDays;
  1259. }
  1260. var today = new Date();
  1261. var dd = today.getDate();
  1262. var mm = today.getMonth() + 1;
  1263. var yyyy = today.getFullYear();
  1264. if (dd < 10) {
  1265. dd = '0' + dd;
  1266. }
  1267. if (mm < 10) {
  1268. mm = '0' + mm;
  1269. }
  1270. today = dd + '/' + mm + '/' + yyyy;
  1271. var NumOfDays = datediff(Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateformat(journalAlloc.JournalDate, null), today);
  1272. var JournalId = journalAlloc.JournalId;
  1273. if (data.IsWallet == false) {
  1274. duesTotalAdj += data.Amount;
  1275. var dBalance = Number(journalAlloc.TotalAmount - journalAlloc.AdjustedAmount);
  1276. var hfDueBalance = Number(journalAlloc.TotalAmount - journalAlloc.AdjustedAmount);
  1277. if (dBalance > 0) {
  1278. if (instance.editVoucher) {
  1279. duesTotalBal += Number(journalAlloc.TotalAmount - journalAlloc.AdjustedAmount);
  1280. dBalance = Number(journalAlloc.TotalAmount - journalAlloc.AdjustedAmount);
  1281. var dd = element.find(".hf_JournalEntryId");
  1282. JournalId = journalAlloc.JournalAllocId;
  1283. if (JournalId == 0)
  1284. JournalId = journalAlloc.JournalId;
  1285. }
  1286. else {
  1287. duesTotalBal += Number(journalAlloc.TotalAmount - journalAlloc.AdjustedAmount);
  1288. }
  1289. html += '<div class="list-group-item divDue_List_item hidden" id="divDue_List_item_' + JournalId + '"><div class="row">' +
  1290. '<input type="hidden" class="hf_JournalAllocId" value="' + journalAlloc.JournalAllocId + '" />' +
  1291. '<input type="hidden" class="hf_RefAllocId" value="' + journalAlloc.RefAllocId + '" />' +
  1292. '<input type="hidden" class="hf_JournalId" value="' + journalAlloc.JournalId + '" />' +
  1293. '<input type="hidden" class="hf_RefJournalId" value="' + journalAlloc.RefJournalId + '" />' +
  1294. '<div class="col-sm-4"><span class="h6">' + journalAlloc.JournalNo + ' (' + Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(dBalance, 2) + ')</span><br /><small>' + Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateformat(journalAlloc.JournalDate, null) + ' (' + NumOfDays + ' days)</small></div>' +
  1295. '<div class="col-sm-4"><span class="h6">Balance</span><br /><input class="hfDueAmount" type="hidden" value="' + hfDueBalance + '" /><small id="lblDueBalance_' + JournalId + '" class="lblDueBalance">' + Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(dBalance - data.Amount, 2) + '</small></div>' +
  1296. '<div class="col-sm-4"><div class="floating-label-form-group m-b"><input id="txtCurrentAmount_' + JournalId + '" type="text" value="' + data.Amount + '" class="form-control value-control floating-label-control txtCurrentAmount" placeholder="Amount" data-label="Amount" onkeypress="return Bizgaze.Apps.Transact.Controls.Voucher.Instance().isDecimalplusNoLongPress(event,this.id)" onkeyup="Bizgaze.Apps.Transact.Controls.Voucher.Instance().AdjustDueAmount(\'' + JournalId + '\',\'' + trnId + '\');" /></div></div>' +
  1297. '</div></div>';
  1298. }
  1299. }
  1300. else {
  1301. walletsTotalAdj += data.Amount;
  1302. var wBalance = Number(journalAlloc.TotalAmount - journalAlloc.AdjustedAmount);
  1303. var hfWalletBalance = Number(journalAlloc.TotalAmount - journalAlloc.AdjustedAmount);
  1304. if (wBalance > 0) {
  1305. if (instance.editVoucher) {
  1306. walletsTotalBal += Number(journalAlloc.TotalAmount - journalAlloc.AdjustedAmount);
  1307. wBalance = Number(journalAlloc.TotalAmount - journalAlloc.AdjustedAmount);
  1308. JournalId = journalAlloc.JournalAllocId;
  1309. if (JournalId == 0)
  1310. JournalId = journalAlloc.JournalId;
  1311. }
  1312. else {
  1313. walletsTotalBal += Number(journalAlloc.TotalAmount - journalAlloc.AdjustedAmount);
  1314. }
  1315. html2 += '<div class="list-group-item divWallet_List_item hidden" id="divWallet_List_item_' + JournalId + '"><div class="row">' +
  1316. '<input type="hidden" class="hf_JournalAllocId" value="' + journalAlloc.JournalAllocId + '" />' +
  1317. '<input type="hidden" class="hf_RefAllocId" value="' + journalAlloc.RefAllocId + '" />' +
  1318. '<div class="col-sm-4"><span class="h6">' + journalAlloc.JournalNo + ' (' + Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(wBalance, 2) + ')</span><br /><small>' + Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateformat(journalAlloc.JournalDate, null) + ' (' + NumOfDays + ' days)</small></div>' +
  1319. '<div class="col-sm-4"><span class="h6">Remaining Amt</span><br /><input class="hfWalletAmount" type="hidden" value="' + hfWalletBalance + '" /><small id="lblWalletRemaing_' + JournalId + '" class="lblWalletRemaing">' + Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(wBalance - data.Amount, 2) + '</small></div>' +
  1320. '<div class="col-sm-4"><div class="floating-label-form-group m-b"><input id="txtWalletCurrentAmount_' + JournalId + '" type="text" value="' + data.Amount + '" class="form-control txtWalletCurrentAmount floating-label-control value-control" placeholder="Amount" data-label="Amount" onkeypress="return Bizgaze.Apps.Transact.Controls.Voucher.Instance().isDecimalplusNoLongPress(event,this.id)" onkeyup="Bizgaze.Apps.Transact.Controls.Voucher.Instance().AdjustWalletAmount(\'' + JournalId + '\',\'' + trnId + '\');" /></div></div>' +
  1321. '</div></div>';
  1322. }
  1323. }
  1324. }
  1325. }
  1326. element.find('.divDue_List_item').after(html);
  1327. instance.showFirstFiveListItems(trnId, 'Due');
  1328. if (refreshWallets) {
  1329. element.find('.divWallet_List_item').after(html2);
  1330. instance.showFirstFiveListItems(trnId, 'Wallet');
  1331. }
  1332. }
  1333. if (walletsTotalBal > 0)
  1334. element.find('.txtWalletsTotalAmt').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(walletsTotalBal, 2));
  1335. else
  1336. element.find('.txtWalletsTotalAmt').text(0.00);
  1337. if (duesTotalBal > 0)
  1338. element.find('.txtDuesTotalAmt').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(duesTotalBal, 2));
  1339. else
  1340. element.find('.txtDuesTotalAmt').text(0.00);
  1341. var credit = element.find('.txt_Credit').val();
  1342. if (html == '') {
  1343. $(divDues).empty();
  1344. $(divDues).html('<div class="list-group-item divDue_List_item"><div class="row"><small class="ml-10 text-danger">No data found...</small></div></div>');
  1345. }
  1346. if (refreshWallets) {
  1347. if (html2 == '') {
  1348. $(divWallets).empty();
  1349. $(divWallets).html('<div class="list-group-item divWallet_List_item"><div class="row"><small class="ml-10 text-danger">No data found...</small></div></div>');
  1350. }
  1351. }
  1352. if (element.find("#tx_Debit_" + trnId).val() == 0 || element.find("#tx_Debit_" + trnId).val() == undefined) {
  1353. if (Number(element.find('.txtDuesTotalAmt').text()) == 0) {
  1354. element.find('.txtTotalWalletAdjusted_' + trnId).attr("style", "cursor: not-allowed;");
  1355. element.find('.txtTotalWalletAdjusted_' + trnId).attr("disabled", "disabled");
  1356. element.find('.txtWalletCurrentAmount').attr("style", "cursor: not-allowed;");
  1357. element.find('.txtWalletCurrentAmount').attr("disabled", "disabled");
  1358. element.find('.txtCurrentAmount').attr("style", "cursor: not-allowed;");
  1359. element.find('.txtCurrentAmount').attr("disabled", "disabled");
  1360. }
  1361. else {
  1362. element.find('.txtTotalWalletAdjusted_' + trnId).removeAttr("style");
  1363. element.find('.txtTotalWalletAdjusted_' + trnId).removeAttr("disabled");
  1364. element.find('.txtWalletCurrentAmount').removeAttr("style");
  1365. element.find('.txtWalletCurrentAmount').removeAttr("disabled");
  1366. element.find('.txtCurrentAmount').removeAttr("style");
  1367. element.find('.txtCurrentAmount').removeAttr("disabled");
  1368. }
  1369. }
  1370. else {
  1371. if (Number(element.find('.txtDuesTotalAmt').text()) == 0) {
  1372. element.find('.txtTotalWalletAdjusted_' + trnId).attr("style", "cursor: not-allowed;");
  1373. element.find('.txtTotalWalletAdjusted_' + trnId).attr("disabled", "disabled");
  1374. element.find('.txtWalletCurrentAmount').attr("style", "cursor: not-allowed;");
  1375. element.find('.txtWalletCurrentAmount').attr("disabled", "disabled");
  1376. element.find('.txtCurrentAmount').attr("style", "cursor: not-allowed;");
  1377. element.find('.txtCurrentAmount').attr("disabled", "disabled");
  1378. }
  1379. else {
  1380. element.find('.txtTotalWalletAdjusted_' + trnId).removeAttr("style");
  1381. element.find('.txtTotalWalletAdjusted_' + trnId).removeAttr("disabled");
  1382. element.find('.txtWalletCurrentAmount').removeAttr("style");
  1383. element.find('.txtWalletCurrentAmount').removeAttr("disabled");
  1384. element.find('.txtCurrentAmount').removeAttr("style");
  1385. element.find('.txtCurrentAmount').removeAttr("disabled");
  1386. }
  1387. }
  1388. if (updatePayment == true && updateFrom != '')
  1389. instance.updatePayment(trnId, updateFrom, refreshWallets, refreshDues);
  1390. element.find('.txtTotalDueAdjusted_' + trnId).val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(0, 2));
  1391. if (!instance.editVoucher) {
  1392. if ($("#tx_Debit_" + trnId).val() == 0)
  1393. instance.updatePayment(trnId, 'due', refreshWallets, false);
  1394. if ($("#tx_Credit_" + trnId).val() == 0)
  1395. instance.updatePayment(trnId, 'due', refreshWallets, false);
  1396. }
  1397. else {
  1398. if (element.find("#tx_Debit_" + trnId).val() == 0 || element.find("#tx_Debit_" + trnId).val() == undefined)
  1399. element.find('.txtTotalDueAdjusted_' + trnId).val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(Number(credit) - Number(walletsTotalAdj), 2));
  1400. else
  1401. element.find('.txtTotalDueAdjusted_' + trnId).val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(0, 2));
  1402. if (refreshWallets) {
  1403. element.find('.txtTotalWalletAdjusted_' + trnId).val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(walletsTotalAdj, 2));
  1404. }
  1405. instance.updatePayment(trnId, 'due', false, refreshDues);
  1406. }
  1407. });
  1408. }
  1409. else {
  1410. element.find('.txtTotalDueAdjusted_' + trnId).val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(0, 2));
  1411. element.find('.rowWallets,.rowDues').addClass('hidden');
  1412. }
  1413. }
  1414. showFirstFiveListItems(trnId, section) {
  1415. let sectionClass = "";
  1416. if (section == "Wallet") {
  1417. sectionClass = ".secWallets_" + trnId;
  1418. }
  1419. else {
  1420. sectionClass = ".secDues_" + trnId;
  1421. }
  1422. $(sectionClass + ' .div' + section + '_List_item').not(':first').each(function (index, item) {
  1423. if (index < 5) {
  1424. $(item).removeClass('hidden');
  1425. let totalRowsCount = $(sectionClass + ' .div' + section + '_List_item').not(':first').length;
  1426. let visibleRowsCount = totalRowsCount - $(sectionClass + ' .div' + section + '_List_item.hidden').not(':first').length;
  1427. $('.div' + section + '_List_Footer_' + trnId).find('span.totalRowsCount').text(totalRowsCount);
  1428. $('.div' + section + '_List_Footer_' + trnId).find('span.visibleRowsCount').text(visibleRowsCount);
  1429. }
  1430. else {
  1431. return false;
  1432. }
  1433. });
  1434. if ($(sectionClass + ' .div' + section + '_List_item').not(':first').length >= 5) {
  1435. $('.div' + section + '_List_Footer_' + trnId + ' .' + section.toLowerCase() + 'ListMoreBtn').removeClass('hidden');
  1436. }
  1437. }
  1438. loadMoreListItems(trnId, section) {
  1439. let sectionClass = "";
  1440. if (section == "Wallet") {
  1441. sectionClass = ".secWallets_TRN" + trnId;
  1442. }
  1443. else {
  1444. sectionClass = ".secDues_TRN" + trnId;
  1445. }
  1446. $(sectionClass + ' .div' + section + '_List_item.hidden').not(':first').each(function (index, item) {
  1447. if (index < 5) {
  1448. $(item).removeClass('hidden');
  1449. let totalRowsCount = $(sectionClass + ' .div' + section + '_List_item').not(':first').length;
  1450. let visibleRowsCount = totalRowsCount - $(sectionClass + ' .div' + section + '_List_item.hidden').not(':first').length;
  1451. $('.div' + section + '_List_Footer_TRN' + trnId).find('span.visibleRowsCount').text(visibleRowsCount);
  1452. if (visibleRowsCount == totalRowsCount) {
  1453. $('.div' + section + '_List_Footer_TRN' + trnId + ' .' + section.toLowerCase() + 'ListMoreBtn').addClass('hidden');
  1454. }
  1455. }
  1456. else {
  1457. return false;
  1458. }
  1459. });
  1460. }
  1461. toggleWalletsAndDues(trnId, type) {
  1462. var instance = this;
  1463. var element = $('.transactonList_item_' + trnId + '');
  1464. if (type == 'Dues')
  1465. element.find('.secDues_' + trnId + '').toggleClass('hidden');
  1466. else if (type == 'Wallets')
  1467. element.find('.secWallets_' + trnId + '').toggleClass('hidden');
  1468. }
  1469. removeAccount(trnId) {
  1470. var instance = this;
  1471. var prevTrnId = parseInt(trnId.charAt(3)) - 1;
  1472. var prevElement = $('.transactonList_item_TRN' + prevTrnId + '');
  1473. var prevDiv = prevElement.find(".transactonList_div_TRN" + prevTrnId + "");
  1474. $(prevDiv).removeClass("hidden");
  1475. var element = $('.transactonList_item_' + trnId + '');
  1476. element.remove();
  1477. instance.update_Debtotal(trnId);
  1478. instance.update_Credtotal(trnId);
  1479. }
  1480. removeTransaction(trnId) {
  1481. var instance = this;
  1482. var prevTrnId = parseInt(trnId.charAt(3)) - 1;
  1483. var prevElement = $('.transactonList_item_TRN' + prevTrnId + '');
  1484. var prevDiv = prevElement.find(".transactonList_div_TRN" + prevTrnId + "");
  1485. $(prevDiv).removeClass("hidden");
  1486. var element = $('.transactonList_item_' + trnId + '');
  1487. element.remove();
  1488. instance.update_Debtotal(trnId);
  1489. instance.update_Credtotal(trnId);
  1490. }
  1491. unhideTransaction(trnId) {
  1492. var instance = this;
  1493. $(".transactonList_div").addClass("hidden");
  1494. var element = $('.transactonList_item_' + trnId + '');
  1495. if ($('#txt_AccountName_' + trnId).val() != null) {
  1496. element.find('.rowAcNarrartion,.transactonList_div_' + trnId).removeClass('hidden');
  1497. if (element.find('.hf_ContactId').val() != 0)
  1498. element.find('.rowWallets,.rowDues').removeClass('hidden');
  1499. else
  1500. element.find('.rowWallets,.rowDues').addClass('hidden');
  1501. }
  1502. }
  1503. clear() {
  1504. var instance = this;
  1505. $('.transactonList_item').each(function (index) {
  1506. if (index > 0) {
  1507. var elemnet = $(this);
  1508. elemnet.find('.txt_Debit').val(0);
  1509. elemnet.find('.txt_Credit').val(0);
  1510. elemnet.find('.txtTotalDueAdjusted').text('0.00');
  1511. elemnet.find('.txtTotalWalletAdjusted').text('');
  1512. elemnet.find('.txtTotalWalletAdjusted').each(function () {
  1513. $(this).val(0);
  1514. });
  1515. elemnet.find('.txtCurrentAmount').each(function () {
  1516. $(this).val(0);
  1517. });
  1518. }
  1519. });
  1520. }
  1521. update_Debtotal(rowno) {
  1522. var instance = this;
  1523. $('#Debittotal').text('');
  1524. var totaldebit = 0;
  1525. var j = Number($('.transactonList_item:last').attr("name"));
  1526. for (var i = 2; i <= j; i++) {
  1527. let debit = 0;
  1528. var wAdjustment = 0;
  1529. var element = $('.transactonList_item_TRN' + i + '');
  1530. var dr = element.find(".txt_Debit_TRN" + i).val();
  1531. debit = (dr != undefined && dr != "" && dr != null) ? Number(element.find(".txt_Debit_TRN" + i).val()) : 0;
  1532. wAdjustment = Number(element.find(".txtTotalWalletAdjusted_TRN" + i).val());
  1533. if (debit == undefined)
  1534. debit = 0;
  1535. if (debit == 0 || wAdjustment == undefined || element.find(".hf_TransactionType").val() == "credit")
  1536. wAdjustment = 0;
  1537. if (!isNaN(debit))
  1538. totaldebit += Number(debit);
  1539. if (isNaN(Number(wAdjustment))) {
  1540. wAdjustment = 0;
  1541. }
  1542. }
  1543. if (rowno == undefined)
  1544. rowno = "TRN" + j;
  1545. $('#Debittotal').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(totaldebit, 2));
  1546. var debit = Number($('#txtDebit_' + rowno).val());
  1547. var credit = $('#txtCredit_' + rowno).val();
  1548. }
  1549. update_Credtotal(rowno) {
  1550. var instance = this;
  1551. $('#credittotal').text('');
  1552. var totalcredit = 0;
  1553. var j = Number($('.transactonList_item:last').attr("name"));
  1554. for (var i = 2; i <= j; i++) {
  1555. let credit = 0;
  1556. var wAdjustment = 0;
  1557. var element = $('.transactonList_item_TRN' + i + '');
  1558. var cr = element.find(".txt_Credit_TRN" + i).val();
  1559. credit = (cr != undefined && cr != "" && cr != null) ? Number(element.find(".txt_Credit_TRN" + i).val()) : 0;
  1560. wAdjustment = Number(element.find(".txtTotalWalletAdjusted_TRN" + i).val());
  1561. if (credit == undefined)
  1562. credit = 0;
  1563. if (wAdjustment == undefined || element.find(".hf_TransactionType").val() == "debit")
  1564. wAdjustment = 0;
  1565. if (!isNaN(credit) || debit != '')
  1566. totalcredit += Number(credit);
  1567. if (isNaN(Number(wAdjustment))) {
  1568. wAdjustment = 0;
  1569. }
  1570. }
  1571. if (rowno == undefined)
  1572. rowno = "TRN" + j;
  1573. $('#credittotal').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(totalcredit, 2));
  1574. var debit = $('#txtDebit_' + rowno).val();
  1575. var credit = $('#txtCredit_' + rowno).val();
  1576. }
  1577. isDecimal(evt, id) {
  1578. var charCode = (evt.which) ? evt.which : evt.keyCode;
  1579. if (charCode == 46) {
  1580. var val = document.getElementById(id);
  1581. var txt = val.value;
  1582. if (!(txt.indexOf(".") > -1)) {
  1583. return true;
  1584. }
  1585. }
  1586. if (charCode > 31 && (charCode < 48 || charCode > 57))
  1587. return false;
  1588. return true;
  1589. }
  1590. isDecimalplusNoLongPress(evt, id) {
  1591. var instance = this;
  1592. var el = document.getElementById(id);
  1593. var txt = el.value;
  1594. const isValid = instance.validateFloatKeyPress(el, evt);
  1595. if (!isValid)
  1596. return false;
  1597. instance.flag++;
  1598. var charCode = (evt.which) ? evt.which : evt.keyCode;
  1599. if (instance.flag <= 4) {
  1600. if (charCode == 46) {
  1601. if (!(txt.indexOf(".") > -1)) {
  1602. return true;
  1603. }
  1604. }
  1605. if (charCode > 31 && (charCode < 48 || charCode > 57))
  1606. return false;
  1607. }
  1608. else {
  1609. return false;
  1610. }
  1611. return true;
  1612. }
  1613. validateFloatKeyPress(el, evt) {
  1614. var charCode = (evt.which) ? evt.which : evt.keyCode;
  1615. var number = el.value.split('.');
  1616. if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
  1617. return false;
  1618. }
  1619. if (number.length > 1 && charCode == 46) {
  1620. return false;
  1621. }
  1622. var caratPos = el.selectionStart;
  1623. var dotPos = el.value.indexOf(".");
  1624. if (caratPos > dotPos && dotPos > -1 && (number[1].length > 1)) {
  1625. return false;
  1626. }
  1627. return true;
  1628. }
  1629. initFlag() {
  1630. var instance = this;
  1631. instance.flag = 0;
  1632. }
  1633. voucherControlObj() {
  1634. var instance = this;
  1635. var crtot = Number($('#credittotal').html());
  1636. var drtot = Number($('#Debittotal').html());
  1637. var errormsg = $(".bizgaze_FormErrorMessages:visible").attr("id");
  1638. var issingle = $("#chk_issingleaccount").is(":checked");
  1639. if (issingle == false) {
  1640. if (crtot != drtot) {
  1641. MessageHelper.Instance().showError("Credit Total and Debit Total should be Equal", errormsg);
  1642. return false;
  1643. }
  1644. else {
  1645. var countOfTrns = $(".divTransactonList").children().length;
  1646. if (countOfTrns < 3) {
  1647. MessageHelper.Instance().showError("Please Add altleast two Accounts", "" + errormsg);
  1648. return false;
  1649. }
  1650. if (crtot == 0 || drtot == 0) {
  1651. MessageHelper.Instance().showError("Credit Total and Debit Total should be greater than Zero", "" + errormsg);
  1652. return false;
  1653. }
  1654. }
  1655. }
  1656. var flag = 0;
  1657. var journalEntries = new Array();
  1658. $('.transactonList_item').each(function (index) {
  1659. var element = $(this);
  1660. if (index > 0) {
  1661. var debit = Number(element.find('.txt_Debit').val());
  1662. var credit = Number(element.find('.txt_Credit').val());
  1663. if (debit == 0 && credit == 0) {
  1664. MessageHelper.Instance().showError('Please remove the account "' + element.find('.accountName').text() + '" which has no debits or credits.', '' + errormsg);
  1665. flag = 1;
  1666. }
  1667. var trnId = element.find('.hf_TransactionId').val();
  1668. var wAdjusted = Number(element.find('.txtTotalWalletAdjusted').val());
  1669. var dAdjusted = Number(element.find('.txtTotalDueAdjusted').val());
  1670. if (debit != 0 || credit != 0) {
  1671. if (wAdjusted > (debit + credit)) {
  1672. MessageHelper.Instance().showError("Adjusted amount should be not be greater than debit and credit amount", "" + errormsg);
  1673. flag = 1;
  1674. Bizgaze.Apps.Transact.Controls.Voucher.Instance().AutoAdjustDues(trnId);
  1675. }
  1676. }
  1677. var trnType = element.find('.hf_TransactionType').val();
  1678. var journalEntryId = element.find('.hf_JournalEntryId').val();
  1679. trnId = element.find('.hf_TransactionId').val();
  1680. if (trnType == "" || trnType == undefined) {
  1681. if (debit == 0)
  1682. trnType = "credit";
  1683. else
  1684. trnType = "debit";
  1685. }
  1686. var contactId = element.find('.hf_ContactId').val();
  1687. var issingle = $("#chk_issingleaccount").is(":checked");
  1688. var allocations = new Array();
  1689. if (contactId != "0") {
  1690. if (issingle == false) {
  1691. allocations = instance.journalAllocations(trnId);
  1692. }
  1693. }
  1694. var jE_ContactId = Number(element.find('.hf_ContactId').val());
  1695. if (jE_ContactId == 0) {
  1696. jE_ContactId = Number(element.find('.hfddl_OrgAutocomplete').val());
  1697. }
  1698. journalEntries.push({
  1699. JournalEntryId: Number(element.find('.hf_JournalEntryId').val()),
  1700. JournalId: Number(element.find('.hf_JournalIdforJEntry').val()),
  1701. RefJournalId: Number(element.find('.hf_RefJournalId').val()),
  1702. ContactId: jE_ContactId,
  1703. Debit: Number(debit),
  1704. Credit: Number(credit),
  1705. LedgerId: Number(element.find('.hf_AccountId').val()),
  1706. LedgerName: element.find('.accountName ').val(),
  1707. Description: element.find('#txt_AcNarration').val(),
  1708. TransactonType: trnType,
  1709. JournalAllocations: allocations,
  1710. PaymentAmount: Number($('#credittotal').html()),
  1711. });
  1712. }
  1713. });
  1714. if (flag == 1) {
  1715. return false;
  1716. }
  1717. return journalEntries;
  1718. }
  1719. bindVoucherEntriesAccount(reconOBJ) {
  1720. var instance = this;
  1721. var element = $('.transactonList_item_TRN2');
  1722. element.find('.hf_AccountId').val(reconOBJ.ledgerid);
  1723. $('.txt_refno').val(reconOBJ.refno);
  1724. $('.date_journaldate').val(reconOBJ.transactiondate);
  1725. element.find("#txt_AccountName_TRN2").empty();
  1726. element.find("#txt_AccountName_TRN2").attr('data-addlData', reconOBJ.closingbal);
  1727. element.find("#txt_AccountName_TRN2").append('<option value="' + reconOBJ.ledgerid + '" data-addlData="' + reconOBJ.closingbal + '">' + reconOBJ.ledgername + '</option>').trigger("change");
  1728. if (reconOBJ.bankaction == "spent" && Number(reconOBJ.debit) > 0) {
  1729. reconOBJ.credit = reconOBJ.debit;
  1730. reconOBJ.debit = 0;
  1731. }
  1732. else {
  1733. if (reconOBJ.bankaction == "received" && Number(reconOBJ.credit) > 0) {
  1734. reconOBJ.debit = reconOBJ.credit;
  1735. reconOBJ.credit = 0;
  1736. }
  1737. }
  1738. element.find('.txt_Debit').val(reconOBJ.debit);
  1739. element.find('.txt_Credit').val(reconOBJ.credit);
  1740. $("#txt_AccountName_TRN2").attr("disabled", "disabled");
  1741. if (reconOBJ.debit > 0) {
  1742. $('.txt_Debit_TRN2').keyup();
  1743. }
  1744. if (reconOBJ.credit > 0) {
  1745. $('.txt_Credit_TRN2').keyup();
  1746. }
  1747. $(".divCustomProperties_issystemgenerated").find(".hdn_issystemgenerated").val('true');
  1748. }
  1749. ;
  1750. printVoucher() {
  1751. var instance = this;
  1752. if ($(".printsetting").length != 0) {
  1753. var printhtml = $(".printsetting")[0].outerHTML;
  1754. $(".printsetting").remove();
  1755. $("#div_App_DefaultWidgetSettings").find(".row").append(printhtml);
  1756. $(".printsetting").find(".pull-right").removeClass("pull-right");
  1757. }
  1758. let detailContainer = "#" + Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds[Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds.length - 1];
  1759. $(detailContainer).find('.DetailSetting_' + Unibase.Themes.Providers.DetailHelper.installedAppId + '_Print').html('<span><i class=\"fa fa-print\"></i></span>');
  1760. $(detailContainer).find('.DetailSetting_' + Unibase.Themes.Providers.DetailHelper.installedAppId + '_Print').click(function () {
  1761. var VoucherId = Unibase.Themes.Providers.DetailHelper.recordId;
  1762. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile("apps/transact/managers/vouchers/vouchermanager.js", function () {
  1763. Bizgaze.Apps.Transact.Managers.VoucherManager.Instance().PrintVouchers(VoucherId).then(function (response) {
  1764. var result = response.result;
  1765. if (isMobileApp()) {
  1766. Unibase.Platform.Helpers.MobileHelper.Instance().previewHtml(result.PrintHTML);
  1767. }
  1768. else {
  1769. instance.printPopup(result.PrintHTML);
  1770. }
  1771. });
  1772. });
  1773. });
  1774. }
  1775. printPopup(data) {
  1776. var mywindow = window.open('', 'my Print', 'height=400,width=850');
  1777. var content = '<html><head><title>Print</title><link rel="stylesheet" href="lib/bizgaze/print.css" /><link rel="stylesheet" href="lib/bootstrap/bootstrap-theme.min.css" /></head><body>';
  1778. content += data;
  1779. content += "<script>print();</script>";
  1780. content += '</body></html>';
  1781. mywindow.document.write(content);
  1782. return true;
  1783. }
  1784. static Instance() {
  1785. if (this._instance === undefined)
  1786. this._instance = new Voucher();
  1787. return this._instance;
  1788. }
  1789. }
  1790. Controls.Voucher = Voucher;
  1791. })(Controls = Transact.Controls || (Transact.Controls = {}));
  1792. })(Transact = Apps.Transact || (Apps.Transact = {}));
  1793. })(Apps = Bizgaze.Apps || (Bizgaze.Apps = {}));
  1794. })(Bizgaze || (Bizgaze = {}));