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

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