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.

cartitem.component.js 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. var Bizgaze;
  2. (function (Bizgaze) {
  3. let Apps;
  4. (function (Apps) {
  5. let Transact;
  6. (function (Transact) {
  7. let Controls;
  8. (function (Controls) {
  9. class CartItem extends Unibase.Platform.Core.BaseComponent {
  10. init() {
  11. var instance = this;
  12. instance.fileCacheHelper.loadJsFile("apps/transact/controls/invoices/pos.component.js", function () {
  13. instance._pos = Bizgaze.Apps.Transact.Controls.Pos.Instance();
  14. });
  15. }
  16. updateCartContainerHtml(itemId, productId) {
  17. var cartInfo = document.getElementsByClassName("cart-item-info");
  18. if (cartInfo.length > 0) {
  19. let cartContainerItemElement = document.querySelector(".cart-container [data-itemId='" + itemId + "'][data-productId='" + productId + "']");
  20. let currentCart = Bizgaze.Apps.Transact.Controls.Pos.Instance().userCart.find(x => x.productId == productId && x.itemId == itemId);
  21. if (cartContainerItemElement) {
  22. $(cartContainerItemElement).find(".item-quantity").val(currentCart.quantity.toString());
  23. $(cartContainerItemElement).find(".item-quantity").text(currentCart.quantity.toString());
  24. $(cartContainerItemElement).find(".total-price").text(((currentCart.quantity * currentCart.itemPrice).toFixed(2)).toString());
  25. $(cartContainerItemElement).find(".total-accessible-price").text(((currentCart.quantity * currentCart.accessibleAmount).toFixed(2)).toString());
  26. $(cartContainerItemElement).find('.item-weight .item-quantity').text(currentCart.quantity);
  27. if (currentCart.discountRate > 0) {
  28. $(cartContainerItemElement).find('.item-discount').removeClass("d-none");
  29. }
  30. }
  31. else {
  32. var html = "";
  33. var itemdetails = this._pos.userCart.find(x => x.itemId == itemId && x.productId == productId);
  34. if (itemdetails != undefined) {
  35. if (itemdetails["offerrefid"] != 0) {
  36. html = this.getCartItemsHtml(itemdetails, itemdetails.isFOC);
  37. }
  38. else {
  39. html = this.getCartItemsHtml(itemdetails);
  40. }
  41. $('#cart-container-items').last().append(html);
  42. }
  43. }
  44. if ($(cartContainerItemElement).find('.item-discount').text() != "") {
  45. $(cartContainerItemElement).find('.item-discount').removeClass("d-none");
  46. }
  47. }
  48. else {
  49. $(".cart-container").remove();
  50. $('#poscart_details').find('.Section').first().find(".card-body").first().append(this.getCartHtml());
  51. Bizgaze.Apps.Transact.Controls.Pos.Instance().cartInfoElement = null;
  52. Bizgaze.Apps.Transact.Controls.Pos.Instance().allEventsExecuted = false;
  53. Bizgaze.Apps.Transact.Controls.Pos.Instance().eventListeners();
  54. }
  55. Bizgaze.Apps.Transact.Controls.Pos.Instance().updateCheckoutPrice();
  56. var total = $("#grand_total_checkout").text();
  57. if ($('.section_PaymentInformation').is(':visible')) {
  58. $('#billDetailsWrap').removeClass('d-none');
  59. Bizgaze.Apps.Transact.Controls.Pos.Instance().applyCartBodyHeight();
  60. }
  61. $(".total-pay-price").text(total);
  62. this._pos.runVirtualKeyboard();
  63. this._pos.applyCartBodyHeight();
  64. }
  65. getCartHtml() {
  66. let html = "";
  67. var ins = Bizgaze.Apps.Transact.Controls.Pos.Instance();
  68. var totalQuantity = Bizgaze.Apps.Transact.Controls.Pos.Instance().userCart.length;
  69. for (var i = 0; i < Bizgaze.Apps.Transact.Controls.Pos.Instance().userCart.length; i++) {
  70. if (Bizgaze.Apps.Transact.Controls.Pos.Instance().userCart[i]["offerrefid"] != 0) {
  71. html += this.getCartItemsHtml(Bizgaze.Apps.Transact.Controls.Pos.Instance().userCart[i], Bizgaze.Apps.Transact.Controls.Pos.Instance().userCart[i].isFOC);
  72. }
  73. else {
  74. html += this.getCartItemsHtml(Bizgaze.Apps.Transact.Controls.Pos.Instance().userCart[i]);
  75. }
  76. }
  77. var total = Bizgaze.Apps.Transact.Controls.Pos.Instance().totalPrice(Bizgaze.Apps.Transact.Controls.Pos.Instance().userCart).toFixed(2);
  78. var display = "";
  79. if (Bizgaze.Apps.Transact.Controls.Pos.Instance().invoiceid == 0) {
  80. display = "d-none";
  81. }
  82. let taxamount = parseFloat(Bizgaze.Apps.Transact.Controls.Pos.Instance().totalTaxAmount).toFixed(2);
  83. return `<div class='cart-container'><div class='card-header cart-header px-10'><span id="cart-quantity" class="cart-quantity"><span class="cart-heading"><i class="las la-shopping-cart font-25 mr-5"></i> Order Details</span><span class="item-quantity">${totalQuantity}</span></span></div><div data-simplebar class='simple-scroll-bar card-body p-0 cart-body'><div id="cart-container-items">${html}</div></div><div class="cart-footer"><div id="billDetailsWrap" class="bill-details-wrap d-none"><div class="bill-details"><div class="coupon-wrapper"><a class="apply-coupon-link" href="javascript:;" id="applyCoupanLink" onclick="Bizgaze.Apps.Transact.Controls.CartItem.Instance().applyCoupan();">Apply Coupon</a><div class="coupon-input-wrap d-none"><input type="text" class="form-control coupon-input virtual-keyboard" data-kioskboard-type="all" data-kioskboard-specialcharacters="false" placeholder="Apply coupon"><a class="coupon-code-apply" href="javascript:;">Apply</a></div></div><span class="font-weight-500 text-dark-100 mb-1">Bill Details</span><ul class="bill-details-list"><li><span >Item Total</span><span class="detail-price" id="total_adjustmentprice">${parseFloat(ins.totalAdjustmentAmmount).toFixed(2)}</span></li><li><span>Discounts</span><span class="detail-price" id="total_discountprice">${ins.totalDiscountAmount}</span></li><li><span>Taxes</span><span class="detail-price" id="total_taxprice">${taxamount}</span></li></ul></div><div class="total-pay-price-wrap"><span>Total</span><span class="total-pay-price" id="total_price">${parseFloat(total).toFixed(2)}</span></div></div><div class="cart-checkout-btn ${display}"><a href="javascript:;">Checkout</a><span id="grand_total_checkout" class="total-price-box total-price">${parseFloat(total).toFixed(2)}</span></div></div></div>`;
  84. }
  85. getCartItemsHtml(cartItem, isOffer) {
  86. cartItem.itemPrice = parseFloat(cartItem.itemPrice).toFixed(2);
  87. let isHidden = '', isFree = '', productId = cartItem.productId, discount = '', hasdiscount = 'd-none';
  88. var discountvalue = 0;
  89. var accessibleAmount = (cartItem.quantity * cartItem.itemPrice).toFixed(2);
  90. if (cartItem.discountRate > 0) {
  91. discount = ' - (' + cartItem.discountRate + ') %';
  92. hasdiscount = '';
  93. }
  94. if (isOffer) {
  95. isHidden = 'd-none';
  96. isFree = '(free)';
  97. productId = 0;
  98. accessibleAmount = (cartItem.accessibleAmount * cartItem.quantity).toFixed(2);
  99. }
  100. var image = "";
  101. var imagepath = Bizgaze.Apps.Transact.Controls.Pos.Instance().itemImage.find(x => x.itemId == cartItem.itemId);
  102. if (imagepath != null && imagepath != undefined) {
  103. image = imagepath.image;
  104. }
  105. return `<div class="cart-item-info" data-itemId="${cartItem.itemId}" data-productId="${productId}">
  106. <input class="item-tax-amount hidden" style="" value ="${cartItem.TaxAmount}">
  107. <input class="discount_amount d-none hidden" value="${cartItem.DiscountAmount}">
  108. <div class="item-left-details"><img src="${image}" class="cart-item-img">
  109. <div class="cart-item-details">
  110. <span class="item-name">${cartItem.itemName} ${isFree}</span>
  111. <span class="item-weight"><span class="item-quantity">${cartItem.quantity}</span><span class="mx-1"><i class="las la-times"></i></span><span class="item-price">${cartItem.itemPrice}<span class="item-discount ${hasdiscount}">${discount}</span> </span></span>
  112. </div></div>
  113. <div class="item-right-details"><span class="total-accessible-price">${(accessibleAmount)}</span>
  114. <div class="cart-counter ${isHidden}">
  115. <a class="btn item-increment-btn control-btn" href="javascript:;"><i class="las la-plus"></i></a>
  116. <input type="number" value="${cartItem.quantity}" min="0" max="100" class="prodQuantity item-quantity virtual-keyboard" data-kioskboard-type="numpad">
  117. <a class="item-decrement-btn control-btn" href="javascript:;"><i class="las la-minus"></i></a>
  118. </div></div>
  119. <a class="btn item-remove-btn ${isHidden}" href="javascript:;"><i class="las la-times font-18"></i></a>
  120. </div>`;
  121. }
  122. loadControl(containerid, prop) {
  123. const self = this;
  124. var data = self.getCartHtml();
  125. $("#" + containerid).append(data);
  126. $('#poscart_details').find('.Section').first().addClass('mb-0 border-0').find('.card-header').first().addClass('d-none').siblings('.card-body').addClass('pa-0');
  127. }
  128. applyCoupan() {
  129. $('.coupon-input-wrap').toggleClass('d-none');
  130. $('.apply-coupon-link').toggleClass('active');
  131. this._pos.applyCartBodyHeight();
  132. }
  133. loadControlSettings(controlsettingjson, formpropertyid) {
  134. }
  135. loadPropertySettings(propertysettings, formpropertyid) {
  136. }
  137. bindEditFormDetails(formpropertyid, propval, DocPropertyName) {
  138. }
  139. static Instance() {
  140. if (this.instance === undefined) {
  141. this.instance = new CartItem();
  142. }
  143. return this.instance;
  144. }
  145. }
  146. Controls.CartItem = CartItem;
  147. })(Controls = Transact.Controls || (Transact.Controls = {}));
  148. })(Transact = Apps.Transact || (Apps.Transact = {}));
  149. })(Apps = Bizgaze.Apps || (Bizgaze.Apps = {}));
  150. })(Bizgaze || (Bizgaze = {}));