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

couponredemption.js 54KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690
  1. var Bizgaze;
  2. (function (Bizgaze) {
  3. let Apps;
  4. (function (Apps) {
  5. let PayBacks;
  6. (function (PayBacks) {
  7. let Components;
  8. (function (Components) {
  9. class CouponRedemption extends Unibase.Platform.Core.BaseComponent {
  10. constructor() {
  11. super(...arguments);
  12. this._totalamount = 0;
  13. this._isScannedCoupon = false;
  14. this._isSecondCoupon = false;
  15. this._totalAppliedCoupons = 0;
  16. }
  17. cssFiles() {
  18. return null;
  19. }
  20. jsFiles() {
  21. return ["apps/paybacks/components/couponredemption.js", "apps/transact/managers/invoicemanager.js", "apps/paybacks/managers/schememanager.js"];
  22. }
  23. html(id, containerid) {
  24. var html = "";
  25. return html;
  26. }
  27. load(id, containerid, callback) {
  28. }
  29. init(containerid) {
  30. var instance = this;
  31. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadCssFile("libs/simplebar/simplebar.min.css", null);
  32. this.fileCacheHelper.loadCssFile("tenants/themes/compact/css/coupons.css", null);
  33. this.fileCacheHelper.loadJsFile("apps/paybacks/managers/schememanager.js", null);
  34. this.fileCacheHelper.loadCssFile("platform/automation/components/notifier.js", null);
  35. this.fileCacheHelper.loadJsFile("platform/automation/enums/noitfyalerts.js", null);
  36. $('[data-toggle="tooltip"]').tooltip();
  37. $(document).on("click", '.coupon-modal-close', function (e) {
  38. $('.timeline-wrap').removeClass('d-none');
  39. $(this).closest('.coupon-modal').removeClass('d-block');
  40. $('.spn_cpnrd_errormsg').html('');
  41. return false;
  42. });
  43. $(document).ready(function () {
  44. $('#cpnRedemp_txtCouponNo').on("input", function () {
  45. if ($("#cpnRedemp_txtCouponNo").val().toString().length >= 15) {
  46. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().redeemCoupon();
  47. }
  48. });
  49. $(document).on("click", '#cpnrd_btn_ApplyNewCoupon', function (e) {
  50. var idTarget = $(this).attr('data-target');
  51. $('.div_cpnrd_coupon_submissions').addClass('d-none');
  52. $('.div_cpnrd_apply_coupon').removeClass('d-block');
  53. $(idTarget).addClass('d-block');
  54. $(idTarget).find('.input-focus').focus();
  55. $('.cpnrd_div_btn_acitons').addClass('hidden');
  56. $('.btn_cpnrd_SubmitCoupons').addClass('hidden');
  57. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().refreshData();
  58. return false;
  59. });
  60. $('#crpnrd_btn_OpenScanner').on("click", function () {
  61. $('#cpnRedemp_txtCouponNo').focusin();
  62. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().openScanner();
  63. });
  64. $('.btn_cpnrd_close_apply_coupon').on('click', function () {
  65. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().refreshData();
  66. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().loadCouponSubmissions($('#cpnRedemp_hfOrganizationId').val());
  67. $('.cpnrd_div_btn_acitons').removeClass('hidden');
  68. $('#cpnrd_divErrorsList').addClass('hidden');
  69. });
  70. });
  71. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().render(containerid);
  72. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().organizationAutoComplete();
  73. }
  74. organizationAutoComplete() {
  75. var instance = this;
  76. var isCustomer = Unibase.Platform.Membership.Infos.Identity.getCurrentUser().isRestrictedUser;
  77. var UserId = Unibase.Platform.Membership.Infos.Identity.getCurrentUser().userId;
  78. if (isCustomer) {
  79. instance.fileCacheHelper.loadJsFile("apps/crm/contacts/managers/contactmanager.js", function () {
  80. Bizgaze.Apps.Crm.Contacts.Managers.ContactManager.Instance().getOrgContact(UserId).then(function (response) {
  81. var contactId = response.result.OrgContactId;
  82. var orgContactName = response.result.OrgContactName;
  83. var organizationName = response.result.OrganizationName;
  84. var PhoneNumber = response.result.PhoneNumber;
  85. var SapCode = "";
  86. if (response.result.SAPCIN != null) {
  87. SapCode = response.result.SAPCIN;
  88. }
  89. var organiozationid = response.result.OrgId;
  90. var contactName = organizationName + '-' + SapCode + '-' + PhoneNumber;
  91. var contact = new Option(contactName, organiozationid.toString(), true);
  92. $('#cpnRedemp_hfOrganizationId').val(organiozationid);
  93. $("#cpnRedemp_txtOrganizationName").append(contact);
  94. if (contactId != 0) {
  95. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().loadOrganizationDetails(organiozationid);
  96. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().loadCouponSubmissions(organiozationid);
  97. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().refreshData();
  98. $('.timeline-wrap').removeClass('d-none');
  99. $('.coupon-modal-close').closest('.coupon-modal').removeClass('d-block');
  100. $('.spn_cpnrd_errormsg').html('');
  101. $('.btn_cpnrd_SubmitCoupons').addClass('hidden');
  102. $('.cpnRedemp_CouponSummary').removeClass('d-none');
  103. $(".cpnRedemp_ContactDetails").removeClass('hidden');
  104. }
  105. else {
  106. $('.cpnRedemp_CouponSummary').addClass('d-none');
  107. $(".cpnRedemp_ContactDetails").addClass('hidden');
  108. }
  109. });
  110. });
  111. }
  112. else {
  113. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().bindContact();
  114. }
  115. }
  116. bindContact() {
  117. var url = _appsettings.server_url() + '/apis/v4/bizgaze/paybacks/coupons/couponcontact';
  118. AutoCompleteHelper.getHelper().Create("#cpnRedemp_txtOrganizationName", "#cpnRedemp_hfOrganizationId", url, function (response) {
  119. var autocompletedata = response;
  120. if ($('#cpnRedemp_hfOrganizationId').val() != 0) {
  121. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().loadOrganizationDetails($('#cpnRedemp_hfOrganizationId').val());
  122. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().loadCouponSubmissions($('#cpnRedemp_hfOrganizationId').val());
  123. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().refreshData();
  124. $('.timeline-wrap').removeClass('d-none');
  125. $('.coupon-modal-close').closest('.coupon-modal').removeClass('d-block');
  126. $('.spn_cpnrd_errormsg').html('');
  127. $('.btn_cpnrd_SubmitCoupons').addClass('hidden');
  128. $('.cpnRedemp_CouponSummary').removeClass('d-none');
  129. $(".cpnRedemp_ContactDetails").removeClass('hidden');
  130. }
  131. else {
  132. $('.cpnRedemp_CouponSummary').addClass('d-none');
  133. $(".cpnRedemp_ContactDetails").addClass('hidden');
  134. }
  135. });
  136. }
  137. ;
  138. loadOrganizationDetails(organizationId) {
  139. var instance = this;
  140. instance.fileCacheHelper.loadJsFile("apps/paybacks/managers/schememanager.js", function () {
  141. Bizgaze.Apps.Paybacks.Managers.SchemeManager.Instance().getOrganizationDetails(organizationId).then(function (response) {
  142. var data = response.result;
  143. if (data != null) {
  144. $("#cpnrd_spnContactName").text(data.OrganizationName);
  145. $("#cpnrd_spnContactPhoneNumber").text(data.PhoneNumber);
  146. $("#cpnrd_spnContactEmailId").text(data.EmailAddress);
  147. $("#cpnrd_spnContactCityName").text(data.CityName);
  148. $("#cpnrd_spnContactStageName").text(data.StageName);
  149. $("#cpnrd_spnStateName").text(data.StateName);
  150. $("#cpnrd_spnContactAddress").text(data.AddressName);
  151. $("#cpnrd_spnContactTagName").text(data.TagName);
  152. $("#cpnrd_spnContactStateName").text(data.StateName);
  153. $("#hf_Coupon_Org_search").val(data.OrganizationId);
  154. $("#cpnrd_spnContactAddress").attr('title', data.AddressName);
  155. if (data.SapCIN == "0" || data.SapCIN == 0 || data.SapCIN == null)
  156. $("#cpnrd_spnContactId").text('NA');
  157. else
  158. $("#cpnrd_spnContactId").text(data.SapCIN);
  159. if (data.StageStatusName != 'Confirmed') {
  160. $('#cpnrd_btn_ApplyNewCoupon').addClass('disabled');
  161. $('#cpnrd_btn_ApplyNewCoupon').addClass('cpnrd-custom-disabled-btn');
  162. }
  163. else {
  164. $('#cpnrd_btn_ApplyNewCoupon').removeClass('disabled');
  165. $('#cpnrd_btn_ApplyNewCoupon').removeClass('cpnrd-custom-disabled-btn');
  166. }
  167. }
  168. });
  169. });
  170. }
  171. refreshData() {
  172. $('#cpnrd_CouponRdemptionList_Items').empty();
  173. $('.cpnrd_ulErrorsList').empty();
  174. $(".cpnrd_spnAppliedCouponsTotalAmount").text('');
  175. $(".cpnrd_spnCouponSubmissionNumber").text('');
  176. $(".cpnrd_spanAppliedCouponsCount").text('');
  177. $("#cpnrd_hfCouponSubmissionId").val(0);
  178. $("#cpnrd_hfCouponSubmissionNo").val('');
  179. $("#cpnrd_hf_AppliedCouponsAmount").val(0);
  180. $('.cpnrd_spanTotalMktValue').text('');
  181. $('.cpnrd_spanTotalMfgValue').text('');
  182. $("#cpnrd_hf_MktCouponsAmount").val(0);
  183. $("#cpnrd_hf_MfgCouponsAmount").val(0);
  184. $("#cpnRedemp_txtCouponNo").val('');
  185. $("#cpnrd_CouponRdemptionList_Items").html('<td class="hidden cpnrd_CouponRdemptionList_Items_li"></td>');
  186. $(".cpnrd_ulErrorsList").html('<li class="list-group-item cpnrd_ulErrorsList_li hidden"></li>');
  187. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance()._isSecondCoupon = false;
  188. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance()._totalAppliedCoupons = 0;
  189. }
  190. loadCouponSubmissions(contactid) {
  191. var instance = this;
  192. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile("apps/paybacks/managers/schememanager.js", function () {
  193. Bizgaze.Apps.Paybacks.Managers.SchemeManager.Instance().getTransactionLog(contactid).then(function (response) {
  194. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().bindSubmissionsHtml(response.result);
  195. $('.cpnrd_div_btn_acitons').removeClass('hidden');
  196. });
  197. });
  198. }
  199. bindSubmissionsHtml(logdata) {
  200. var html = '';
  201. if (logdata.length > 0) {
  202. for (var i = 0; i < logdata.length; i++) {
  203. let data = logdata[i];
  204. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().loadTransactionLogItems(data.CouponSubmissionId);
  205. html += '<div class="card trans-card coupon-applied">' +
  206. '<div class="card-header collapsed" data-toggle="collapse" data-target="#cpmRedemp_collapse_' + data.CouponSubmissionId + '" aria-expanded="false">' +
  207. '<div class="d-flex justify-content-between align-items-center">' +
  208. '<div class="media align-items-center">' +
  209. '<div class="media-img-wrap mr-15">' +
  210. '<div class="avatar avatar-sm">' +
  211. '<span class="avatar-icon avatar-icon-inv-orange rounded-circle"><span class="initial-wrap"><span class="nav-icon-wrap" > <i class="dripicons dripicons-ticket"> </i></span></span></span></div></div>' +
  212. '<div class="media-body">' +
  213. '<div class="font-14 text-dark font-weight-500">Coupon Submission<span class="badge badge-soft-danger ml-10">Sent</span></div><div>' +
  214. '<span class="font-14 text-dark"> Coupon Submission No : ' + data.SubmissionNo + ', Submission Date : ' + moment(data.SubmissionDate).format('DD/MM/YYYY') + '</span></div></div></div>' +
  215. '<div class="amount-display">₹' + data.SubmissionValue + '</div></div></div>' +
  216. '<div class="collapse" id="cpmRedemp_collapse_' + data.CouponSubmissionId + '">' +
  217. '<div class="card mb-0">' +
  218. '<div class="card-header bg-white"><div class="row col-12"><div class="col-sm-2"><h6><strong>Coupon Code</strong></h6></div>' +
  219. '<div class="col-sm-2"><h6><strong>Product Code</strong></h6></div> <div class="col-sm-2"><h6><strong>Amount</strong></h6></div> <div class="col-sm-2"><h6><strong>Is Scanned Coupon</strong></h6></div><div class="col-sm-2"><h6><strong>Marketing</strong></h6></div><div class="col-sm-2"><h6><strong>Manufacturing</strong></h6></div></div>' +
  220. '<div class="card-body pa-0 cpmRedemp_TransationLogItems_' + data.CouponSubmissionId + '" >' +
  221. '</div>' +
  222. '</div></div>' +
  223. '</div></div>';
  224. }
  225. }
  226. else {
  227. html += '<div class="card trans-card coupon-applied"><span class="text-center align-center"><h6 class="mb-10 mt-10 text-danger">No submissions found...</h6 ></span></div>';
  228. }
  229. $('.cpnRedmp_SubmissionList_li').html(html);
  230. }
  231. loadTransactionLogItems(couponsubmissionid) {
  232. this.fileCacheHelper.loadJsFile("apps/paybacks/managers/schememanager.js", function () {
  233. Bizgaze.Apps.Paybacks.Managers.SchemeManager.Instance().getTransactionLogItems(couponsubmissionid).then(function (response) {
  234. var logitemdata = response.result;
  235. var html = '<ul class="list-group">';
  236. for (var i = 0; i < logitemdata.length; i++) {
  237. var mktVal = 0;
  238. var mfgVal = 0;
  239. var data = logitemdata;
  240. if (data[i].ItemDivisionType == 'MKT')
  241. mktVal = data[i].CouponValue;
  242. else if (data[i].ItemDivisionType == 'MFG')
  243. mfgVal = data[i].CouponValue;
  244. html += '<li class="d-flex align-items-center justify-content-between list-group-item">';
  245. html += '<div class="row col-12">' +
  246. '<div class="col-sm-2 mt-2">' + data[i].CouponNo + '</div>' +
  247. '<div class="col-sm-2 mt-2" id=itemname>' + data[i].Sku + '</div>' +
  248. '<div class="col-sm-2 mt-2 d-flex align-items-center">₹' + data[i].CouponValue + '</div>' +
  249. '<div class="col-sm-2 mt-2 d-flex align-items-center">' + data[i].IsScannedCoupon + '</div>' +
  250. '<div class="col-sm-2 mt-2 d-flex align-items-center">₹' + mktVal + '</div>' +
  251. '<div class="col-sm-2 mt-2 d-flex align-items-center">₹' + mfgVal + '</div>' +
  252. '</div></div></li>';
  253. }
  254. html += '</ul>';
  255. $('.cpmRedemp_TransationLogItems_' + couponsubmissionid + '').html(html);
  256. });
  257. });
  258. }
  259. readScanner(capturedValue, uniqueId) {
  260. if (capturedValue != "" && capturedValue != null && capturedValue != undefined) {
  261. $("#cpnRedemp_txtCouponNo").val(capturedValue);
  262. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance()._isScannedCoupon = true;
  263. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().redeemCoupon();
  264. }
  265. }
  266. openScanner() {
  267. if (isMobileApp()) {
  268. Unibase.Platform.Helpers.MobileHelper.Instance().openQrScanner("Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().readScanner", "_Widget_User_Designed_Coupon_Rademption");
  269. }
  270. }
  271. andriodTextToSpeech(textToSpeech) {
  272. if (isMobileApp()) {
  273. Unibase.Platform.Helpers.MobileHelper.Instance().textToSpeech(textToSpeech);
  274. }
  275. }
  276. redeemCoupon() {
  277. var instance = this;
  278. $('.spn_cpnrd_errormsg').html('');
  279. let contactid = Number($('#cpnRedemp_hfOrganizationId').val());
  280. let couponno = $('#cpnRedemp_txtCouponNo').val().toString();
  281. var tempArray = [];
  282. let isSecondCoupon = instance._isSecondCoupon;
  283. let isScannedCoupon = instance._isScannedCoupon;
  284. let TotalAmount = Number($("#cpnrd_hf_AppliedCouponsAmount").val());
  285. let mktTotalAmount = Number($("#cpnrd_hf_MktCouponsAmount").val());
  286. let mfgTotalAmount = Number($("#cpnrd_hf_MfgCouponsAmount").val());
  287. let audiotype;
  288. if (contactid == 0) {
  289. MessageHelper.Instance().showError('Please select any customer... ', 'spn_cpnrd_errormsg');
  290. return null;
  291. }
  292. if (couponno == "" || couponno == undefined) {
  293. MessageHelper.Instance().showError('Coupon number can not be empty', 'spn_cpnrd_errormsg');
  294. return null;
  295. }
  296. this.fileCacheHelper.loadJsFile("apps/paybacks/managers/schememanager.js", function () {
  297. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile("apps/transact/managers/invoicemanager.js", function () {
  298. var coupon = {
  299. CouponNo: couponno,
  300. AppliedContactId: contactid,
  301. IsSecondCoupon: isSecondCoupon,
  302. IsRedeemed: true,
  303. CouponSubmissionId: Number($('#cpnrd_hfCouponSubmissionId').val()),
  304. CouponSubmissionNo: $('#cpnrd_hfCouponSubmissionNo').val(),
  305. IsScannedCoupon: isScannedCoupon,
  306. };
  307. Bizgaze.Apps.Paybacks.Managers.SchemeManager.Instance().RedeemCoupon(coupon).then(function (response) {
  308. if (response.errors != null) {
  309. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().bindTempErrorLog(couponno, response.message);
  310. MessageHelper.Instance().showError(response.message, 'spn_cpnrd_errormsg');
  311. if (isMobileApp())
  312. if (response.message.includes('redeemed'))
  313. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().andriodTextToSpeech("Coupon already redeemed");
  314. else
  315. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().andriodTextToSpeech(response.message);
  316. else {
  317. if (response.message.includes('Invalid/duplicate')) {
  318. audiotype = Unibase.Platform.Automation.Enums.NotifyAlerts.InvalidDuplicateCoupon;
  319. Unibase.Platform.Automation.Components.Notifier.Instance().playAudio(audiotype);
  320. }
  321. else if (response.message.includes('redeemed')) {
  322. audiotype = Unibase.Platform.Automation.Enums.NotifyAlerts.CouponAlreadyRedeemed;
  323. Unibase.Platform.Automation.Components.Notifier.Instance().playAudio(audiotype);
  324. }
  325. else if (response.message.includes('Unauthentic') || response.message.includes('unauthentic')) {
  326. audiotype = Unibase.Platform.Automation.Enums.NotifyAlerts.UnAuthenticCoupon;
  327. Unibase.Platform.Automation.Components.Notifier.Instance().playAudio(audiotype);
  328. }
  329. else if (response.message.includes('Scrapped') || response.message.includes('scrapped')) {
  330. audiotype = Unibase.Platform.Automation.Enums.NotifyAlerts.CouponScrapped;
  331. Unibase.Platform.Automation.Components.Notifier.Instance().playAudio(audiotype);
  332. }
  333. else {
  334. eval('unibase_tenants_themes_notificationrefresh.invalidDuplicateCoupon()');
  335. audiotype = Unibase.Platform.Automation.Enums.NotifyAlerts.InvalidDuplicateCoupon;
  336. Unibase.Platform.Automation.Components.Notifier.Instance().playAudio(audiotype);
  337. }
  338. }
  339. $("#cpnRedemp_txtCouponNo").val('');
  340. return null;
  341. }
  342. if (response.result != null) {
  343. var data = JSON.parse(response.result);
  344. data = data.Result;
  345. instance._isSecondCoupon = true;
  346. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance()._isScannedCoupon = false;
  347. $(".cpnrd_spnCouponSubmissionNumber").text(data.SubmissionNo);
  348. $("#cpnrd_hfCouponSubmissionId").val(data.CouponSubmissionId);
  349. $("#cpnrd_hfCouponSubmissionNo").val(data.SubmissionNo);
  350. let couponId = data.CouponId;
  351. TotalAmount = TotalAmount + Number(data.CouponValue);
  352. if (data.ItemDivisionType == "MKT")
  353. mktTotalAmount = mktTotalAmount + Number(data.CouponValue);
  354. else if (data.ItemDivisionType == "MFG")
  355. mfgTotalAmount = mfgTotalAmount + Number(data.CouponValue);
  356. $(".cpnrd_spnAppliedCouponsTotalAmount").text(TotalAmount);
  357. $("#cpnrd_hf_AppliedCouponsAmount").val(TotalAmount);
  358. $('#cpnrd_hf_CouponSubmissionNo').val(data.SubmissionNo);
  359. $("#cpnrd_hf_MktCouponsAmount").val(mktTotalAmount);
  360. $("#cpnrd_hf_MfgCouponsAmount").val(mfgTotalAmount);
  361. $('.cpnrd_spanTotalMktValue').text(mktTotalAmount);
  362. $('.cpnrd_spanTotalMfgValue').text(mfgTotalAmount);
  363. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().bindRedemptionHtml(data);
  364. if (isMobileApp())
  365. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().andriodTextToSpeech('Coupon Applied');
  366. else
  367. audiotype = Unibase.Platform.Automation.Enums.NotifyAlerts.CouponBeep;
  368. Unibase.Platform.Automation.Components.Notifier.Instance().playAudio(audiotype);
  369. $("#cpnRedemp_txtCouponNo").val('');
  370. }
  371. });
  372. });
  373. });
  374. this._totalamount = Number($("#cpnrd_hf_AppliedCouponsAmount").val());
  375. }
  376. bindTempErrorLog(couponNumber, message) {
  377. $('#cpnrd_divErrorsList').removeClass('hidden');
  378. var html = '<li class="list-group-item cpnrd_ulErrorsList_li"><div class="row">' +
  379. '<span class="h6 col-6 col-xs-12 text-danger">' + couponNumber + '</span>' +
  380. '<span class="h6 col-6 col-xs-12 text-right text-danger">' + message + '</span>' +
  381. '</div>';
  382. '</li>';
  383. $('.cpnrd_ulErrorsList_li:first').before(html);
  384. }
  385. submitCoupons() {
  386. let contactid = Number($('#cpnRedemp_hfOrganizationId').val());
  387. var postdata = {
  388. ContactId: contactid,
  389. IsSubmitted: true,
  390. ConsumedValue: Number($('.AvailableWalletAmount').text()),
  391. SubmissionNo: $('.cpnrd_spnCouponSubmissionNumber').text(),
  392. SubmissionId: $('#cpnrd_hfCouponSubmissionId').val(),
  393. };
  394. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile("apps/paybacks/managers/schememanager.js", function () {
  395. Bizgaze.Apps.Paybacks.Managers.SchemeManager.Instance().couponsubmition(postdata).then(function (response) {
  396. $('#cpnrd_CouponRdemptionList_Items').empty();
  397. $("#cpnrd_CouponRdemptionList_Items").html('<td class="hidden cpnrd_CouponRdemptionList_Items_li"></td>');
  398. $('.cpnrd_spanAppliedCouponsCount').text('0');
  399. $('.cpnrd_spnAppliedCouponsTotalAmount').text('0');
  400. var data = response;
  401. Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().loadCouponSubmissions($('#cpnRedemp_hfOrganizationId').val());
  402. if (response.errors != null) {
  403. MessageHelper.Instance().showError(response.message, 'spn_cpnrd_errormsg');
  404. }
  405. else {
  406. $('.timeline-wrap').removeClass('d-none');
  407. $('.coupon-modal-close').closest('.coupon-modal').removeClass('d-block');
  408. $('.spn_cpnrd_errormsg').html('');
  409. MessageHelper.Instance().showSuccess(response.message, 'spn_cpnrd_errormsg');
  410. return false;
  411. }
  412. });
  413. });
  414. }
  415. getcouponwallletamount(contactid) {
  416. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile("apps/paybacks/managers/schememanager.js", function () {
  417. Bizgaze.Apps.Paybacks.Managers.SchemeManager.Instance().getcouponwallletamount(contactid).then(function (response) {
  418. var data = response;
  419. var amount = data.result.WalletValue;
  420. $('.AvailableWalletAmount').text(amount);
  421. });
  422. });
  423. }
  424. bindRedemptionHtml(couponData) {
  425. let SubmissionNo = "";
  426. var instance = this;
  427. instance._totalAppliedCoupons += 1;
  428. SubmissionNo = couponData.SubmissionNo;
  429. var mktVal = 0;
  430. var mfgVal = 0;
  431. if (couponData.ItemDivisionType == "MKT")
  432. mktVal = couponData.CouponValue;
  433. else if (couponData.ItemDivisionType == "MFG")
  434. mfgVal = couponData.CouponValue;
  435. var html = '';
  436. var lastAss = '';
  437. if (couponData.LastAssignedTo != null || couponData.LastAssignedTo != '')
  438. lastAss = couponData.LastAssignedToName;
  439. html += '<tr class="cpnrd_CouponRdemptionList_Items_li">' +
  440. '<td colspan="2">' + couponData.CouponNo + '</td>' +
  441. '<td colspan="2">' + couponData.Sku + '</td>' +
  442. '<td colspan="2"><span class="discounted-amount">₹' + couponData.CouponValue + '</span></td>' +
  443. '<td colspan="2">' + mktVal + '</td>' +
  444. '<td colspan="2">' + mfgVal + '</td>' +
  445. '<td colspan="2">' + lastAss + '</td>' +
  446. '</tr>';
  447. if (SubmissionNo != "") {
  448. $('.btn_cpnrd_SubmitCoupons').removeClass('hidden');
  449. }
  450. $('.cpnrd_spanAppliedCouponsCount').text(instance._totalAppliedCoupons);
  451. $('.cpnrd_CouponRdemptionList_Items_li:first').after(html);
  452. }
  453. render(containerid) {
  454. var portletwidgetid = Number($("#hf_PortletWidgetId").val());
  455. $(".div_portletwidget_" + portletwidgetid).empty();
  456. var html = `
  457. <div class="biz_dashboard_coupon_redemption">
  458. <div class="biz-pg-body">
  459. <div class="biz-bldr-wrap biz-copn-pg">
  460. <div class="biz-copn-wrap pt-0">
  461. <div class="copn-body d">
  462. <div class="container-fluid">
  463. <div class="cpnRedemp_ContactSelection mb-1">
  464. <select id="cpnRedemp_txtOrganizationName" class="form-control text-control required" style="width:100%;" placeholder="Search" data-placeholder="Search"></select>
  465. <input type="hidden" id="cpnRedemp_hfOrganizationId" class="cpnRedemp_hfOrganizationId' form-control value-control" data-isdynamic="true" />
  466. </div>
  467. <div class="card cpnRedemp_ContactDetails hidden">
  468. <div class="card-header">
  469. <span><h4><strong>Contact Details</strong><h4></span>
  470. </div>
  471. <div class="card-body pt-5">
  472. <div class="row">
  473. <div class="col-md-6">
  474. <ul class="list-group list-group-flush">
  475. <li class="list-group-item"><div class="row"><span class="col-6 pl-0">Contact Name</span><span class="col-6 text-right" id="cpnrd_spnContactName"></span></div></li>
  476. <li class="list-group-item"><div class="row"><span class="col-6 pl-0">Phone Number</span><span class="col-6 text-right" id="cpnrd_spnContactPhoneNumber"></span></div></li>
  477. <li class="list-group-item"><div class="row"><span class="col-6 pl-0">Coupon Source</span><span class="col-6 text-right" id="cpnrd_spnContactTagName"></span></div></li>
  478. <li class="list-group-item"><div class="row"><span class="col-6 pl-0">City Name</span><span class="col-6 text-right" id="cpnrd_spnContactCityName"></span></div></li>
  479. <li class="list-group-item"><div class="row"><span class="col-6 pl-0">Address</span><span class="col-6 text-overflow text-right" data-toggle="tooltip" data-placement="top" id="cpnrd_spnContactAddress"></span></div></li>
  480. </ul>
  481. </div>
  482. <div class="col-md-6">
  483. <ul class="list-group list-group-flush">
  484. <li class="list-group-item"><div class="row"><span class="col-6 pl-0">SAP Code</span><span class="col-6 text-right" id="cpnrd_spnContactId"></span></div></li>
  485. <li class="list-group-item"><div class="row"><span class="col-6 pl-0">Email Id</span><span class="col-6 text-right" id="cpnrd_spnContactEmailId"></span></div></li>
  486. <li class="list-group-item"><div class="row"><span class="col-6 pl-0">Stage Name</span><span class="col-6 text-right" id="cpnrd_spnContactStageName"></span></div></li>
  487. <li class="list-group-item"><div class="row"><span class="col-6 pl-0">State Name</span><span class="col-6 text-right" id="cpnrd_spnStateName"></span></div></li>
  488. <li class="list-group-item hidden"></li>
  489. </ul>
  490. </div>
  491. </div>
  492. </div>
  493. </div>
  494. <!--Actions-->
  495. <div class="cpnRedemp_CouponSummary">
  496. <div class="copn-summary-wrap mb-40 ">
  497. <div class="row mb-5 hidden">
  498. <div class="col-md-12">
  499. <div class="card card-sm">
  500. <div class="card-body">
  501. <div class="d-flex align-items-center">
  502. <div class="avatar">
  503. <span class="avatar-icon avatar-icon-primary rounded-circle">
  504. <span class="initial-wrap"><span><i class="fa fa-shopping-cart"></i></span></span>
  505. </span>
  506. </div>
  507. <div class="ml-20">
  508. <div>Loyalty Points</div>
  509. <div class="font-20 text-dark font-weight-500">0</div>
  510. </div>
  511. </div>
  512. </div>
  513. </div>
  514. </div>
  515. </div>
  516. <div class="row cpnrd_div_btn_acitons">
  517. <div class="col-md-4">
  518. <a data-target="#coupon_modal_1" type="button" id="cpnrd_btn_ApplyNewCoupon" class="btn btn-block btn-theme coupon-modal-open mb-10" href="#">Apply New Coupon</a>
  519. </div>
  520. <div class="col-md-0 hidden">
  521. <a class="btn btn-block btn-success mb-10" href="#">Apply Loyalty Points</a>
  522. </div>
  523. <div class="col-md-0 hidden">
  524. <a class="btn btn-block btn-primary" href="#">Redeem Loyalty Points</a>
  525. </div>
  526. </div>
  527. </div>
  528. <!--Action Summary-->
  529. <div class="trans-timeline-wrap">
  530. <!--Submissions-->
  531. <div class="timeline-wrap div_cpnrd_coupon_submissions">
  532. <div class="d-flex justify-content-between align-items-center mb-30">
  533. <h5>Submissions</h5>
  534. <!--<div class="d-flex align-items-center">
  535. <select class="custom-select w-200p mr-10">
  536. <option selected="">All Transactions</option>
  537. <option value="1">Two</option>
  538. <option value="2">Three</option>
  539. </select>
  540. <a data-target="#" class="btn btn-icon btn-flush-dark btn-rounded flush-soft-hover flex-shrink-0 coupon-modal-open" href="#"></a>
  541. </div>-->
  542. </div>
  543. <div class="cpnRedmp_SubmissionList">
  544. <div class="cpnRedmp_SubmissionList_li"></div>
  545. </div>
  546. <!--<div class="d-flex justify-content-end">
  547. <nav class="pagination-wrap d-inline-block mt-50 mb-20" aria-label="Page navigation example">
  548. <ul class="pagination custom-pagination pagination-simple">
  549. <li class="page-item"><a class="page-link" href="#">Previous</a></li>
  550. <li class="page-item active"><a class="page-link" href="#">1</a></li>
  551. <li class="page-item"><a class="page-link" href="#">2</a></li>
  552. <li class="page-item"><a class="page-link" href="#">3</a></li>
  553. <li class="page-item"><a class="page-link" href="#">...</a></li>
  554. <li class="page-item"><a class="page-link" href="#">15</a></li>
  555. <li class="page-item"><a class="page-link" href="#">Next</a></li>
  556. </ul>
  557. </nav>
  558. </div>
  559. <div id="cpnRdemp_CouponSubmissionPagination" class="pagination custom-pagination pagination-rounded pull-right"></div>-->
  560. </div>
  561. <!--Apply Coupon-->
  562. <div id="coupon_modal_1" class="coupon-modal div_cpnrd_apply_coupon">
  563. <div class="d-flex justify-content-between align-items-center mb-30">
  564. <h5>Apply New Coupon</h5>
  565. <span class="close coupon-modal-close btn_cpnrd_close_apply_coupon"></span>
  566. </div>
  567. <span class="spn_cpnrd_errormsg text-danger text-center" id="spn_cpnrd_errormsg" ></span>
  568. <div class="card form-coupon mb-25">
  569. <div class="card-body pa-0">
  570. <div class="form-coupon-left">
  571. <div class="avatar">
  572. <span class="avatar-icon avatar-icon-inv-orange rounded-circle">
  573. <span class="initial-wrap"><span><i class="dripicons dripicons-ticket"></i></span></span>
  574. </span>
  575. </div>
  576. <div class="font-14 font-weight-500 text-dark">You can apply multiple coupons</div>
  577. </div>
  578. <div class="form-coupon-right">
  579. <div class="input-group">
  580. <input id="cpnRedemp_txtCouponNo" class="form-control input-focus text-center" placeholder="Enter coupon code" type="text" maxlength="20">
  581. <a href="#" id="crpnrd_btn_OpenScanner" class="input-group-append">
  582. <span class="input-group-text"><i class="fa fa-qrcode"></i></span>
  583. </a>
  584. </div>
  585. </div>
  586. </div>
  587. </div>
  588. <!--Submission Number-->
  589. <div class="card mb-1">
  590. <div class="card-header">
  591. <div class="row col-sm-12">
  592. <h6 class="col-sm-8"><strong>Submission Number : <span class="cpnrd_spnCouponSubmissionNumber"></span></strong></h6>
  593. <input type="hidden" id="cpnrd_hfCouponSubmissionId" value="0">
  594. <input type="hidden" id="cpnrd_hfCouponSubmissionNo" value="">
  595. </div>
  596. </div>
  597. </div>
  598. <!--End Submission Number-->
  599. <!--Error List-->
  600. <div class="card hidden" id="cpnrd_divErrorsList">
  601. <div class="card-header text-dark bg-light">
  602. <div class="row">
  603. <span class="h6 col-6 col-xs-12">Coupon Code<span class="badge badge-soft-pink badge-pill ml-5 cpnrd_divErrorList_CouponCode"></span></span>
  604. <span class="h6 col-6 col-xs-12 text-right">Error Message<span class="badge badge-soft-pink badge-pill ml-5 cpnrd_divErrorList_ErrorMessage"></span></span>
  605. </div>
  606. </div>
  607. <div class="">
  608. <ul class="list-group cpnrd_ulErrorsList">
  609. <li class="list-group-item cpnrd_ulErrorsList_li hidden"></li>
  610. <li class="list-group-item">
  611. <div class="row">
  612. <span class="h6 col-6 col-xs-12">Coupon Code</span>
  613. <span class="h6 col-6 col-xs-12 text-right">Error Message</span>
  614. </div>
  615. </li>
  616. </ul>
  617. </div>
  618. </div>
  619. <!--End Error List-->
  620. <div class="card">
  621. <div class="card-header bg-light">
  622. <div class="row">
  623. <span class="h6 col-6 col-xs-12">Applied Coupons<span class="badge badge-soft-pink badge-pill ml-5 cpnrd_spanAppliedCouponsCount">0</span></span>
  624. <span class="h6 col-6 col-xs-12 text-right">Total Amount<span class="badge badge-soft-pink badge-pill ml-5 cpnrd_spnAppliedCouponsTotalAmount">0</span></span>
  625. <input type="hidden" id="cpnrd_hf_AppliedCouponsAmount">
  626. <input type="hidden" id="cpnrd_hf_MktCouponsAmount">
  627. <input type="hidden" id="cpnrd_hf_MfgCouponsAmount">
  628. </div>
  629. </div>
  630. <div class="card-body pa-0" style="overflow: auto;max-height: 300px;">
  631. <table class="applied_coupons_table_verticalscroll coupon-code-list">
  632. <thead>
  633. <tr><th colspan="2">Coupon Code</th><th colspan="2">Product Code</th>
  634. <th colspan="2">Amount</th><th colspan="2">Marketing<span class="badge badge-soft-pink badge-pill ml-5 cpnrd_spanTotalMktValue">0</span></th>
  635. <th colspan="2">Manufacturing<span class="badge badge-soft-pink badge-pill ml-5 cpnrd_spanTotalMfgValue">0</span></th>
  636. <th colspan="2">Last Assigned To</th></tr>
  637. </thead>
  638. <tbody id="cpnrd_CouponRdemptionList_Items">
  639. <tr class="hidden cpnrd_CouponRdemptionList_Items_li"></tr>
  640. </tbody>
  641. </table>
  642. <li class="list-group-item btn_cpnrd_SubmitCoupons hidden"><a href="#" id="btnCoupons_redeem" onclick="Bizgaze.Apps.PayBacks.Components.CouponRedemption.Instance().submitCoupons()" class="btn btn-theme btn-block btnCoupons_redeem redeem-coupon">Submit Coupons</a></li>
  643. </ul>
  644. </div>
  645. </div>
  646. </div>
  647. <!--Settings-->
  648. <!--Purchase Items-->
  649. <!--Purchase Items-->
  650. <!--End -->
  651. </div>
  652. </div>
  653. </div><!--container end-->
  654. <div style="margin-top:100px; width:100%;">
  655. </div>`;
  656. $("#" + containerid).html(html);
  657. }
  658. static Instance() {
  659. if (this.instance === undefined) {
  660. this.instance = new CouponRedemption();
  661. }
  662. return this.instance;
  663. }
  664. }
  665. Components.CouponRedemption = CouponRedemption;
  666. })(Components = PayBacks.Components || (PayBacks.Components = {}));
  667. })(PayBacks = Apps.PayBacks || (Apps.PayBacks = {}));
  668. })(Apps = Bizgaze.Apps || (Bizgaze.Apps = {}));
  669. })(Bizgaze || (Bizgaze = {}));