ng-easycommerce 0.0.639 → 0.0.641

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/README.md +5 -0
  2. package/bundles/ng-easycommerce.umd.js +71 -26
  3. package/bundles/ng-easycommerce.umd.js.map +1 -1
  4. package/bundles/ng-easycommerce.umd.min.js +1 -1
  5. package/bundles/ng-easycommerce.umd.min.js.map +1 -1
  6. package/esm2015/lib/ec-component/cart-ec/cart-ec.component.js +8 -1
  7. package/esm2015/lib/ec-component/checkout-ec/success-ec/success-ec.component.js +7 -3
  8. package/esm2015/lib/ec-component/widgets-ec/place-to-pay-ec/place-to-pay-ec.component.js +23 -3
  9. package/esm2015/lib/ec-component/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.js +10 -1
  10. package/esm2015/lib/services/cart.service.js +6 -2
  11. package/esm2015/lib/services/products/product-detail.service.js +23 -22
  12. package/esm5/lib/ec-component/cart-ec/cart-ec.component.js +8 -1
  13. package/esm5/lib/ec-component/checkout-ec/success-ec/success-ec.component.js +7 -3
  14. package/esm5/lib/ec-component/widgets-ec/place-to-pay-ec/place-to-pay-ec.component.js +23 -3
  15. package/esm5/lib/ec-component/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.js +10 -1
  16. package/esm5/lib/services/cart.service.js +6 -2
  17. package/esm5/lib/services/products/product-detail.service.js +23 -22
  18. package/fesm2015/ng-easycommerce.js +71 -26
  19. package/fesm2015/ng-easycommerce.js.map +1 -1
  20. package/fesm5/ng-easycommerce.js +71 -26
  21. package/fesm5/ng-easycommerce.js.map +1 -1
  22. package/lib/ec-component/cart-ec/cart-ec.component.d.ts +1 -0
  23. package/lib/ec-component/widgets-ec/place-to-pay-ec/place-to-pay-ec.component.d.ts +4 -0
  24. package/ng-easycommerce.metadata.json +1 -1
  25. package/package.json +1 -1
package/README.md CHANGED
@@ -1,3 +1,8 @@
1
+ # version 0.0.641
2
+ - evitar spam al actualizar cantidades de items del pedido.
3
+ # version 0.0.640
4
+ - `place-to-pay`: agregar manejo de pago rechazado
5
+ - `product-detail.service`: se toma el saleprice de `taxLegendInfo`
1
6
  # version 0.0.639
2
7
  - se actualizo la funcionalidad de impuestos nacionales, por cambios en el endpoint del backend.
3
8
  # version 0.0.638
@@ -4927,7 +4927,11 @@
4927
4927
  };
4928
4928
  this.updateItemQuantity = function (item, quantity) {
4929
4929
  if (_this.validateQuantity(item, quantity) && (_this.validatePriceAndCredits(item, quantity))) {
4930
- _this.connection.put(_this.updateItemQuantityApi(_this.findItemByIdVariant(item.variant_id)), { 'quantity': Number(quantity) }).subscribe(function (res) { return _this.updateCartObj(res) && _this.updateCartItemQuantity(item.variant_id, Number(quantity)); }, function (err) { return _this.handleError(err); });
4930
+ _this.requestInProcess.next(true);
4931
+ _this.connection
4932
+ .put(_this.updateItemQuantityApi(_this.findItemByIdVariant(item.variant_id)), { 'quantity': Number(quantity) })
4933
+ .pipe(operators.finalize(function () { return _this.requestInProcess.next(false); }))
4934
+ .subscribe(function (res) { return _this.updateCartObj(res) && _this.updateCartItemQuantity(item.variant_id, Number(quantity)); }, function (err) { return _this.handleError(err); });
4931
4935
  }
4932
4936
  };
4933
4937
  this.validateQuantity = function (item, quantity) {
@@ -7483,6 +7487,7 @@
7483
7487
  _this.hideTaxes = false;
7484
7488
  _this.creditAccountShowPrices = null;
7485
7489
  _this.showTaxLegend = false;
7490
+ _this.cartLoading = false;
7486
7491
  _this.toDecimal = function (amount) { return _this.consts.toDecimal(amount); };
7487
7492
  _this.redirectRegister = function () { return _this.router.navigateByUrl("/auth/login"); };
7488
7493
  _this.getVariants = function (product) {
@@ -7558,11 +7563,17 @@
7558
7563
  this.cartService.showPrice$.subscribe(function (showPrice) {
7559
7564
  _this.creditAccountShowPrices = showPrice;
7560
7565
  });
7566
+ this.cartService.loading.subscribe(function (isLoading) {
7567
+ _this.cartLoading = isLoading;
7568
+ });
7561
7569
  this.ecOnInit();
7562
7570
  };
7563
7571
  CartEcComponent.prototype.actualizarCantidad = function (item, cantidad, stock, id) {
7564
7572
  var _this = this;
7565
7573
  var _a;
7574
+ if (this.cartLoading) {
7575
+ return;
7576
+ }
7566
7577
  var multipleQuantity = ((_a = item.product) === null || _a === void 0 ? void 0 : _a.variants) && item.product.variants.length > 0 ? item.product.variants[0].multipleQuantity : 0;
7567
7578
  var step = multipleQuantity && multipleQuantity > 0 ? multipleQuantity : 1;
7568
7579
  var newQuantity;
@@ -9114,7 +9125,7 @@
9114
9125
  SuccessEcComponent.prototype.ngOnInit = function () {
9115
9126
  var _this = this;
9116
9127
  this.checkoutService.order$.subscribe(function (res) {
9117
- var _a, _b, _c, _d, _e, _f, _g, _h;
9128
+ var _a, _b, _c, _d, _e;
9118
9129
  //console.log('LO QUE LLEGA EN ORDEN', res);
9119
9130
  ((_a = res) === null || _a === void 0 ? void 0 : _a.number) ? _this.params = {
9120
9131
  external_reference: res.number,
@@ -9122,7 +9133,11 @@
9122
9133
  //this.payments = [{method:{code:'bank_transsfer'}}]
9123
9134
  _this.payments = ((_b = res) === null || _b === void 0 ? void 0 : _b.payments) ? res.payments : null;
9124
9135
  if (((_e = (_d = (_c = _this.payments) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.method) === null || _e === void 0 ? void 0 : _e.code) && _this.isPlaceToPay(_this.payments[0].method.code)) {
9125
- _this.totalAmount = (_h = (_g = (_f = res) === null || _f === void 0 ? void 0 : _f.totals) === null || _g === void 0 ? void 0 : _g.total, (_h !== null && _h !== void 0 ? _h : null));
9136
+ var stored = localStorage.getItem('total_amount');
9137
+ if (stored !== null) {
9138
+ _this.totalAmount = parseFloat(stored);
9139
+ localStorage.removeItem('total_amount');
9140
+ }
9126
9141
  var now = new Date();
9127
9142
  _this.paymentDate = now.toLocaleDateString('es-AR', {
9128
9143
  day: '2-digit',
@@ -10792,18 +10807,19 @@
10792
10807
  options && options.forEach(function (option) { return Object.keys(option).forEach(function (key) { return _this.setOption(key, option[key]); }); });
10793
10808
  };
10794
10809
  this.generateAsociatedDataFromVariants = function () {
10795
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4;
10810
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6;
10796
10811
  var asociated = {};
10797
10812
  if (_this.isReady()) {
10798
10813
  asociated.stock = _this.variants[0].stock;
10799
10814
  // Precio: si viene taxLegendInfo usamos su price, si no el v.price
10800
10815
  var rawPrice = (_b = (_a = _this.variants[0].taxLegendInfo) === null || _a === void 0 ? void 0 : _a.price, (_b !== null && _b !== void 0 ? _b : _this.variants[0].price));
10801
10816
  asociated.price = rawPrice.toString();
10802
- asociated.saleprice = _this.variants[0].saleprice && _this.variants[0].saleprice.toString() || undefined;
10803
- asociated.discount = ((_c = _this.variants[0]) === null || _c === void 0 ? void 0 : _c.discount) || undefined;
10817
+ var rawSalePrice = (_d = (_c = _this.variants[0].taxLegendInfo) === null || _c === void 0 ? void 0 : _c.saleprice, (_d !== null && _d !== void 0 ? _d : _this.variants[0].saleprice));
10818
+ asociated.saleprice = rawSalePrice ? rawSalePrice.toString() : undefined;
10819
+ asociated.discount = ((_e = _this.variants[0]) === null || _e === void 0 ? void 0 : _e.discount) || undefined;
10804
10820
  asociated.properties = _this.variants[0].properties ? _this.beautifyProperties(_this.variants[0].properties) : undefined;
10805
- asociated.uniqueExternalCode = ((_d = _this.variants[0]) === null || _d === void 0 ? void 0 : _d.uniqueExternalCode) || undefined;
10806
- asociated.multipleQuantity = ((_e = _this.variants[0]) === null || _e === void 0 ? void 0 : _e.multipleQuantity) || undefined;
10821
+ asociated.uniqueExternalCode = ((_f = _this.variants[0]) === null || _f === void 0 ? void 0 : _f.uniqueExternalCode) || undefined;
10822
+ asociated.multipleQuantity = ((_g = _this.variants[0]) === null || _g === void 0 ? void 0 : _g.multipleQuantity) || undefined;
10807
10823
  }
10808
10824
  else {
10809
10825
  asociated.price = _this.cratePrice();
@@ -10814,31 +10830,31 @@
10814
10830
  ('images' in _this.variants[0] && _this.variants[0].images.length > 0)
10815
10831
  ? asociated.picture = _this.variants[0].images[0]
10816
10832
  : asociated.picture = (_this.asociatedDataSubject.value.picture || _this.productSubject.value.picturesdefault[0]);
10817
- asociated.maximumAmount = ((_f = _this.variants[0]) === null || _f === void 0 ? void 0 : _f.maximumAmount) || 0;
10818
- asociated.minimumAmount = ((_g = _this.variants[0]) === null || _g === void 0 ? void 0 : _g.minimumAmount) || 0;
10819
- asociated.maximumItemsQuantity = ((_h = _this.variants[0]) === null || _h === void 0 ? void 0 : _h.stock) > 0 && 'maximumItemsQuantity' in _this.variants[0] ? (_j = _this.variants[0]) === null || _j === void 0 ? void 0 : _j.maximumItemsQuantity : (_k = _this.variants[0]) === null || _k === void 0 ? void 0 : _k.stock;
10820
- asociated.minimumItemsQuantity = ((_l = _this.variants[0]) === null || _l === void 0 ? void 0 : _l.stock) > 0 && 'minimumItemsQuantity' in _this.variants[0]
10821
- && ((_m = _this.variants[0]) === null || _m === void 0 ? void 0 : _m.minimumItemsQuantity) > 0 ? (_o = _this.variants[0]) === null || _o === void 0 ? void 0 : _o.minimumItemsQuantity : (((_p = _this.variants[0]) === null || _p === void 0 ? void 0 : _p.multipleQuantity) ? (_q = _this.variants[0]) === null || _q === void 0 ? void 0 : _q.multipleQuantity : 1);
10833
+ asociated.maximumAmount = ((_h = _this.variants[0]) === null || _h === void 0 ? void 0 : _h.maximumAmount) || 0;
10834
+ asociated.minimumAmount = ((_j = _this.variants[0]) === null || _j === void 0 ? void 0 : _j.minimumAmount) || 0;
10835
+ asociated.maximumItemsQuantity = ((_k = _this.variants[0]) === null || _k === void 0 ? void 0 : _k.stock) > 0 && 'maximumItemsQuantity' in _this.variants[0] ? (_l = _this.variants[0]) === null || _l === void 0 ? void 0 : _l.maximumItemsQuantity : (_m = _this.variants[0]) === null || _m === void 0 ? void 0 : _m.stock;
10836
+ asociated.minimumItemsQuantity = ((_o = _this.variants[0]) === null || _o === void 0 ? void 0 : _o.stock) > 0 && 'minimumItemsQuantity' in _this.variants[0]
10837
+ && ((_p = _this.variants[0]) === null || _p === void 0 ? void 0 : _p.minimumItemsQuantity) > 0 ? (_q = _this.variants[0]) === null || _q === void 0 ? void 0 : _q.minimumItemsQuantity : (((_r = _this.variants[0]) === null || _r === void 0 ? void 0 : _r.multipleQuantity) ? (_s = _this.variants[0]) === null || _s === void 0 ? void 0 : _s.multipleQuantity : 1);
10822
10838
  asociated.finalConsumer = {
10823
- finalConsumerPrice: (_r = _this.variants[0]) === null || _r === void 0 ? void 0 : _r.final_consumer_price,
10824
- originalFinalConsumerPrice: (_s = _this.variants[0]) === null || _s === void 0 ? void 0 : _s.original_final_consumer_price,
10839
+ finalConsumerPrice: (_t = _this.variants[0]) === null || _t === void 0 ? void 0 : _t.final_consumer_price,
10840
+ originalFinalConsumerPrice: (_u = _this.variants[0]) === null || _u === void 0 ? void 0 : _u.original_final_consumer_price,
10825
10841
  };
10826
10842
  asociated.taxes = {
10827
- taxIncluded: (_t = _this.variants[0]) === null || _t === void 0 ? void 0 : _t.taxIncluded,
10828
- taxCategory: (_u = _this.variants[0]) === null || _u === void 0 ? void 0 : _u.taxCategory,
10843
+ taxIncluded: (_v = _this.variants[0]) === null || _v === void 0 ? void 0 : _v.taxIncluded,
10844
+ taxCategory: (_w = _this.variants[0]) === null || _w === void 0 ? void 0 : _w.taxCategory,
10829
10845
  };
10830
10846
  // Segun version del backend
10831
- if ((_v = _this.variants[0]) === null || _v === void 0 ? void 0 : _v.taxLegendInfo) {
10847
+ if ((_x = _this.variants[0]) === null || _x === void 0 ? void 0 : _x.taxLegendInfo) {
10832
10848
  // Nuevo backend
10833
- asociated.priceWithoutTaxes = (_w = _this.variants[0]) === null || _w === void 0 ? void 0 : _w.taxLegendInfo.priceWithoutTaxes;
10834
- asociated.taxeAmount = (_x = _this.variants[0]) === null || _x === void 0 ? void 0 : _x.taxLegendInfo.taxes;
10835
- asociated.taxRate = (_y = _this.variants[0]) === null || _y === void 0 ? void 0 : _y.taxLegendInfo.taxRate;
10849
+ asociated.priceWithoutTaxes = (_y = _this.variants[0]) === null || _y === void 0 ? void 0 : _y.taxLegendInfo.priceWithoutTaxes;
10850
+ asociated.taxeAmount = (_z = _this.variants[0]) === null || _z === void 0 ? void 0 : _z.taxLegendInfo.taxes;
10851
+ asociated.taxRate = (_0 = _this.variants[0]) === null || _0 === void 0 ? void 0 : _0.taxLegendInfo.taxRate;
10836
10852
  }
10837
10853
  else {
10838
10854
  // Backend antiguo
10839
- asociated.priceWithoutTaxes = (_0 = (_z = _this.variants[0]) === null || _z === void 0 ? void 0 : _z.priceWithoutTaxes, (_0 !== null && _0 !== void 0 ? _0 : undefined));
10840
- asociated.taxeAmount = (_2 = (_1 = _this.variants[0]) === null || _1 === void 0 ? void 0 : _1.taxes, (_2 !== null && _2 !== void 0 ? _2 : undefined));
10841
- asociated.taxRate = (_4 = (_3 = _this.variants[0]) === null || _3 === void 0 ? void 0 : _3.taxRate, (_4 !== null && _4 !== void 0 ? _4 : undefined));
10855
+ asociated.priceWithoutTaxes = (_2 = (_1 = _this.variants[0]) === null || _1 === void 0 ? void 0 : _1.priceWithoutTaxes, (_2 !== null && _2 !== void 0 ? _2 : undefined));
10856
+ asociated.taxeAmount = (_4 = (_3 = _this.variants[0]) === null || _3 === void 0 ? void 0 : _3.taxes, (_4 !== null && _4 !== void 0 ? _4 : undefined));
10857
+ asociated.taxRate = (_6 = (_5 = _this.variants[0]) === null || _5 === void 0 ? void 0 : _5.taxRate, (_6 !== null && _6 !== void 0 ? _6 : undefined));
10842
10858
  }
10843
10859
  _this.asociatedDataSubject.next(asociated);
10844
10860
  };
@@ -12743,15 +12759,24 @@
12743
12759
  case '200':
12744
12760
  state = 'success';
12745
12761
  _this.setStateInLocal('Su pago fue procesado con éxito.', state);
12762
+ if (queryParams.total_amount) {
12763
+ localStorage.setItem('total_amount', queryParams.total_amount);
12764
+ }
12746
12765
  break;
12747
12766
  case 'success':
12748
12767
  _this.setStateInLocal('Su pago fue procesado con éxito.', state);
12768
+ if (queryParams.total_amount) {
12769
+ localStorage.setItem('total_amount', queryParams.total_amount);
12770
+ }
12749
12771
  break;
12750
12772
  case 'pending':
12751
12773
  _this.setStateInLocal('Su pago fue procesado con éxito.', state);
12752
12774
  break;
12753
12775
  case 'failure':
12754
12776
  _this.setStateInLocal('Se ha cancelado el proceso de pago.', state);
12777
+ if (queryParams.total_amount) {
12778
+ localStorage.setItem('total_amount', queryParams.total_amount);
12779
+ }
12755
12780
  break;
12756
12781
  case 'cancel':
12757
12782
  _this.setStateInLocal('Se ha cancelado el proceso de pago.', state);
@@ -19278,6 +19303,10 @@
19278
19303
  _this.ready = new core.EventEmitter();
19279
19304
  _this.loading = false;
19280
19305
  _this.closeModal = '';
19306
+ _this.hasPreviousFailure = false;
19307
+ _this.previousFailureAmount = null;
19308
+ _this.previousFailureDate = null;
19309
+ _this.buttonText = 'Pagar';
19281
19310
  _this.dataRedirect = function () {
19282
19311
  return _this.consts.getUrlBase() + 'shop-api/' + _this.consts.getChannel() + '/place-to-pay/' + _this.cartService.cart_token + '/process-payment';
19283
19312
  };
@@ -19300,17 +19329,33 @@
19300
19329
  var _a, _b, _c, _d;
19301
19330
  var state = _this.closeModal !== '' ? _this.closeModal : localStorage.getItem('state');
19302
19331
  !state && ((_a = _this.ventana) === null || _a === void 0 ? void 0 : _a.closed) && (state = 'cancel');
19332
+ _this.hasPreviousFailure = false;
19303
19333
  _this.loading = true;
19304
19334
  if (state) {
19305
- _this.loading = false;
19306
19335
  localStorage.removeItem('state');
19307
19336
  if (state === 'success' || state === 'pending') {
19308
19337
  (_b = _this.ventana) === null || _b === void 0 ? void 0 : _b.close();
19309
19338
  _this.ready.emit(true);
19310
19339
  return;
19311
19340
  }
19341
+ _this.loading = false;
19312
19342
  if (state === 'failure' || state === 'cancel') {
19313
19343
  (_c = _this.ventana) === null || _c === void 0 ? void 0 : _c.close();
19344
+ if (state === 'failure') {
19345
+ var amt = localStorage.getItem('total_amount');
19346
+ if (amt) {
19347
+ _this.hasPreviousFailure = true;
19348
+ _this.previousFailureAmount = parseFloat(amt);
19349
+ _this.previousFailureDate = new Date().toLocaleDateString('es-AR', {
19350
+ day: '2-digit',
19351
+ month: '2-digit',
19352
+ year: 'numeric',
19353
+ });
19354
+ _this.buttonText = 'Reintentar pago';
19355
+ localStorage.removeItem('total_amount');
19356
+ localStorage.removeItem('payment_date');
19357
+ }
19358
+ }
19314
19359
  _this.getPreference();
19315
19360
  _this.processError(state === 'cancel' ? 'Se canceló el pago con Place to Pay' : '');
19316
19361
  return;
@@ -19373,7 +19418,7 @@
19373
19418
  PlaceToPayEcComponent = __decorate$20([
19374
19419
  core.Component({
19375
19420
  selector: 'app-place-to-pay-ec',
19376
- template: "<div class=\"text-center\">\n <ng-container *ngIf=\"url; else loadingUrl\">\n <ng-container *ngIf=\"!loading; else loadingTemp\">\n <button (click)=\"iniciar()\" class=\"btn btn-outline-secondary rounded-0 comprar mt-3\">Pagar</button>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #loadingUrl>\n <div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n <app-loading-full-ec></app-loading-full-ec>\n </div>\n</ng-template>\n\n<ng-template #loadingTemp>\n <div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n <h3>Procesando el pago por Place to Pay</h3>\n <h5>Recuerde hacer click en \"Volver al sitio\" desde Place to Pay para finalizar la compra.</h5>\n <app-loading-full-ec></app-loading-full-ec>\n </div>\n <div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-5\">\n <hr>\n </div>\n <div class=\"col-2 text-center\">\n <label>o</label>\n </div>\n <div class=\"col-5\">\n <hr>\n </div>\n </div>\n </div>\n <div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n <button (click)=\"clickClose()\" class=\"btn btn-outline-secondary rounded-0 comprar\">Cancelar pago</button>\n </div>\n</ng-template>",
19421
+ template: "<div class=\"text-center\">\n <ng-container *ngIf=\"url; else loadingUrl\">\n <ng-container *ngIf=\"!loading; else loadingTemp\">\n <button (click)=\"iniciar()\" class=\"btn btn-outline-secondary rounded-0 comprar mt-3\">\n {{ buttonText }}\n </button>\n\n <!-- Mensaje de intento previo fallido -->\n <div *ngIf=\"hasPreviousFailure\" class=\"alert alert-danger mt-3\">\n El pago no se pudo realizar el {{ previousFailureDate }}\n por un monto de {{ previousFailureAmount | ecCurrencySymbol }}.\n </div>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #loadingUrl>\n <div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n <app-loading-full-ec></app-loading-full-ec>\n </div>\n</ng-template>\n\n<ng-template #loadingTemp>\n <div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n <h3>Procesando el pago por Place to Pay</h3>\n <h5>Recuerde hacer click en \"Volver al sitio\" desde Place to Pay para finalizar la compra.</h5>\n <app-loading-full-ec></app-loading-full-ec>\n </div>\n <div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-5\">\n <hr>\n </div>\n <div class=\"col-2 text-center\">\n <label>o</label>\n </div>\n <div class=\"col-5\">\n <hr>\n </div>\n </div>\n </div>\n <div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n <button (click)=\"clickClose()\" class=\"btn btn-outline-secondary rounded-0 comprar\">Cancelar pago</button>\n </div>\n</ng-template>",
19377
19422
  styles: [""]
19378
19423
  })
19379
19424
  ], PlaceToPayEcComponent);