ng-easycommerce 0.0.496 → 0.0.497

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.
@@ -0,0 +1,56 @@
1
+ # Parámetros básicos que se usan en el frontend.
2
+
3
+ ## Contenido
4
+ - [Introducción](#introducción)
5
+ - [Parámetros](#parámetros)
6
+ - [HEADER](#header)
7
+ - [FOOTER](#footer)
8
+ - [Redes Sociales](#redes-sociales)
9
+ - [Recaptcha](#recaptcha)
10
+ - [Cookies](#cookies)
11
+ - [Con varios canales](#con-varios-canales)
12
+
13
+ ## Introducción
14
+ En este documento se va describir los parámetros basicos que se usan por lo general en frontend.
15
+
16
+ >**Aclaración:** Puede que aun estando cargados los parámetros en el backoffice estos sigan sin ser visibles en el frontend y esto se puede dar debido a que no se han configurado en el `html` o quisas la clave sea distinta a la propuesta. Nunca fue algo estable y la idea de este documento es terminar con ese problema. Es por eso que se van a describir las claves mas usadas.
17
+
18
+ ## Parámetros
19
+ Paso a detallar los parámetros mas usados en el frontend.
20
+
21
+ ### HEADER
22
+
23
+ | Nombre | Donde se utiliza |
24
+ | ------ | ---------------- |
25
+ | `top_block` | Usado para mostrar la barra de anuncios |
26
+ | `logo_header` | Usado para cargar la imagen del logo de la página |
27
+
28
+ ### FOOTER
29
+
30
+ | Nombre | Donde se utiliza |
31
+ | ------ | ---------------- |
32
+ | `logo_footer` | Usado para cargar la imagen del logo que va en el pie de la página |
33
+ | `copyright` | Usado para mostrar el copyright y su contenido |
34
+ | `fiscal` | Usado para mostrar, por lo general, la imagen del QR de la **Data Fiscal** |
35
+
36
+ ### Redes Sociales
37
+ | Nombre | Donde se utiliza |
38
+ | ------ | ---------------- |
39
+ | `whatsapp` ó `wsp` | Usado para lo que tenga que ver con whatsapp y numero al que se pueden comunicar |
40
+ | `facebook` | Usado para lo que tenga que ver con facebook |
41
+ | `twitter` | Usado para lo que tenga que ver con twitter |
42
+ | `instagram` | Usado para lo que tenga que ver instagram |
43
+ | `linkedin` | Usado para lo que tenga que ver con LinkedIn |
44
+ | `pinterest` | Usado para lo que tenga que ver pinterest |
45
+ >Varias de estas clave son usadas en el componente `shared-block-ec` usado para compartir articulos en redes sociales, agregando al principio la clave `share_`. Ej. **`share_facebook`**.
46
+
47
+ ### Recaptcha
48
+ | Nombre | Donde se utiliza |
49
+ | ------ | ---------------- |
50
+ | `recaptcha_key` | En su valor debe contener la clave provista por [Google reCAPTCHA](https://www.google.com/recaptcha/about/) para que muestre en los formularios el reCAPTCHA |
51
+
52
+ ### Cookies
53
+ En este [documento](COOKIES.md) se explica en detalle como usar los parámetros para las cookies.
54
+
55
+ ## Con varios canales
56
+ Cuando el backoffice contiene varios canales lo ideal seria cargar el parámetro pero agregando el nombre del canal a donde apunta el parámetro. Por ejemplo, tenemos el parámetro `whatsapp` en una implementación donde tiene 2 canales cuyos nombres son `minorista` y `mayorista`, en este caso el parámetro deberia ser asi `whatsapp_minorista` o `whatsapp_mayorista`.
@@ -1820,8 +1820,8 @@
1820
1820
  _this.pagination.getNext();
1821
1821
  // SI SE ACTUALIZARAN LOS FILTROS DINAMICOS EN EL FUTURO
1822
1822
  // let filtersObj = this.filtersSubject.value;
1823
- // filtersObj.some(filter => filter.type() == 'dynamics')
1824
- // ? this.pagination.getNext(this.updateDynamicFilters)
1823
+ // filtersObj.some(filter => filter.type() == 'dynamics')
1824
+ // ? this.pagination.getNext(this.updateDynamicFilters)
1825
1825
  // : this.pagination.getNext();
1826
1826
  };
1827
1827
  /**
@@ -1913,7 +1913,7 @@
1913
1913
  });
1914
1914
  if (search_value)
1915
1915
  extra_params += ('&criteria[search][type]=contains&criteria[search][value]=' + search_value);
1916
- if (extra_params != '') {
1916
+ if (extra_params != '' && !extra_params.includes('attributeCodes')) {
1917
1917
  _this.options.getAttributes2(extra_params);
1918
1918
  }
1919
1919
  return _this.productsFilterApi(extra_params);
@@ -4513,7 +4513,7 @@
4513
4513
  // this.googleAnalytics.removeFromCart(product);
4514
4514
  _this.analyticsService.callEvent('remove_from_cart', __assign$9(__assign$9({}, product), { currency: _this.consts.currency.code }));
4515
4515
  };
4516
- this.addIfAllreadyExists = function (product, variant_id, quantityAdd) {
4516
+ this.addIfAllreadyExists = function (product, variant_id, quantityAdd, order_item_id, lot_quantity, unit_price, unit_total, ajustement_total, total_lot, lot_status, date_deliver, notes, shipping_address_id) {
4517
4517
  if (quantityAdd === void 0) { quantityAdd = 1; }
4518
4518
  return _this.items.find(function (item, index) {
4519
4519
  if (item.product.id == product.id && item.variant_id == variant_id) {
@@ -4551,14 +4551,23 @@
4551
4551
  * @public
4552
4552
  * CART CRUD
4553
4553
  */
4554
- this.addToCart = function (product, quantity, variant_id) {
4554
+ this.addToCart = function (product, quantity, variant_id, order_item_id, lot_quantity, unit_price, unit_total, ajustement_total, total_lot, lot_status, date_deliver, notes, shipping_address_id) {
4555
4555
  if (!_this.authService.isAbleToBuy()) {
4556
4556
  _this.toastrService.show('must-select-customer');
4557
4557
  return;
4558
4558
  }
4559
4559
  _this.requestInProcess.next(true);
4560
4560
  var added = _this.addIfAllreadyExists(product, variant_id, quantity);
4561
- !added && _this.connection.post(_this.addItemApi(), { productCode: product.id, quantity: quantity, variantCode: variant_id })
4561
+ !added && _this.connection.post(_this.addItemApi(), { productCode: product.id, quantity: quantity, variantCode: variant_id, order_item_id: order_item_id || '', lot_quantity: lot_quantity || '', unit_price: unit_price || '', unit_total: unit_total || '', ajustement_total: ajustement_total || '', total_lot: total_lot || '', lot_status: lot_status || '', date_deliver: date_deliver || '', notes: notes || '', shipping_address_id: shipping_address_id || '' })
4562
+ .subscribe(function (res) { return _this.appendToCart(res); }, function (err) { return _this.handleError(err); });
4563
+ };
4564
+ this.addToLot = function (product, quantity, variant_id, order_item_id, lot_quantity, unit_price, unit_total, ajustement_total, total_lot, lot_status, date_deliver, notes, shipping_address_id) {
4565
+ if (!_this.authService.isAbleToBuy()) {
4566
+ _this.toastrService.show('must-select-customer');
4567
+ return;
4568
+ }
4569
+ var added = '';
4570
+ !added && _this.connection.post(_this.addItemApi(), { productCode: product.id, quantity: quantity, variantCode: variant_id, order_item_id: order_item_id || '', lot_quantity: lot_quantity || '', unit_price: unit_price || '', unit_total: unit_total || '', ajustement_total: ajustement_total || '', total_lot: total_lot || '', lot_status: lot_status || '', date_deliver: date_deliver || '', notes: notes || '', shipping_address_id: shipping_address_id || '' })
4562
4571
  .subscribe(function (res) { return _this.appendToCart(res); }, function (err) { return _this.handleError(err); });
4563
4572
  };
4564
4573
  this.addToCartPromise = function (product, quantity, variant_id) { return __awaiter$5(_this, void 0, void 0, function () {
@@ -4758,6 +4767,7 @@
4758
4767
  item = {
4759
4768
  product: item.product,
4760
4769
  variant_id: item.product.variants[0].code,
4770
+ lot: item.orderItemLot,
4761
4771
  quantity: item.quantity,
4762
4772
  item_id: item.id,
4763
4773
  total: item.total
@@ -6006,7 +6016,7 @@
6006
6016
  AccountEcComponent = __decorate$F([
6007
6017
  core.Component({
6008
6018
  selector: 'app-account-ec',
6009
- template: "<section class=\"perfil mt-5\" id=\"accountEcComponent\">\n <div class=\"container row w-100 mx-auto py-md-3\">\n <div class=\"col-12 py-3\">\n <div class=\"row w-100 mx-auto border-bottom justify-content-between align-items-center py-3\">\n <h3 class=\"text-black w-auto\">MIS PEDIDOS</h3>\n <button class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto\" (click)=\"logout()\">CERRAR SESI\u00D3N</button>\n </div>\n <app-orders-ec></app-orders-ec>\n </div>\n </div>\n</section>",
6019
+ template: "<section class=\"perfil mt-5\" id=\"accountEcComponent\">\n <div class=\"container row w-100 mx-auto py-md-3\">\n <div class=\"col-12 py-3\">\n <div class=\"row w-100 mx-auto border-bottom justify-content-between align-items-center py-3\">\n <h3 class=\"text-black w-auto\">MIS PEDIDOS</h3>\n <button class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto\" (click)=\"logout()\">CERRAR SESI\u00D3N</button>\n </div>\n <app-orders-ec></app-orders-ec>\n </div>\n </div>\n</section>\n",
6010
6020
  styles: [".font-size-10{font-size:10px!important}"]
6011
6021
  })
6012
6022
  ], AccountEcComponent);
@@ -6973,6 +6983,75 @@
6973
6983
  path += variant.options.length ? "?variant=true" : "";
6974
6984
  this.router.navigateByUrl(path);
6975
6985
  };
6986
+ CartEcComponent.prototype.cargaModal = function (item) {
6987
+ console.log(item);
6988
+ var id = 1;
6989
+ document.getElementById('encabezadoModal').innerHTML = '<a href="product/' + item.variant_id + '" class="title text-dark text-decoration-none h5 d-block m-0 p-0 m-0 p-0"><p class="nombre mb-0" id="productName">' + item['product']['name'] + '</p><small class="text-secondary ps-2 ms-1" id="productRef">Ref:' + item['variant_id'] + '</small></a>';
6990
+ var cantidadTotal = item['quantity'];
6991
+ if (item.lot) {
6992
+ // alert(item.lot);
6993
+ var myTable = document.getElementById("lot_table");
6994
+ var bodyTable = document.getElementById("lot_body_table");
6995
+ bodyTable.innerHTML = '';
6996
+ item.lot.forEach(function (lot) {
6997
+ if (item.item_id == lot.order_item_id) {
6998
+ var row = bodyTable.insertRow(bodyTable.rows.length);
6999
+ var cell1 = row.insertCell(0);
7000
+ var cell2 = row.insertCell(1);
7001
+ var cell3 = row.insertCell(2);
7002
+ var cell4 = row.insertCell(3);
7003
+ var cell5 = row.insertCell(4);
7004
+ cell1.innerHTML = id.toString();
7005
+ cell2.innerHTML = '<input type="number" id="quantity' + id + '" value= "' + lot.quantity + '"class="form-control w-50" max="' + lot.quantity + '">';
7006
+ cell3.innerHTML = '<input type="date" value="' + lot.date_deliver + '" id="deliveryDate' + id + '" class="form-control w-75">';
7007
+ cell4.innerHTML = '<input type="text" id="shippingAddress' + id + '" value= "sede"class="form-control w-75">';
7008
+ cell5.innerHTML = '<div class="col-1 flex-grow-0 text-right btnBorrar d-none d-md-block d-none d-md-block"><button class="btn" id="botonBorrar"><img src="./assets/maquetado/img/ic-borrar.svg" alt=""> </butt></div>';
7009
+ id = id + 1;
7010
+ }
7011
+ });
7012
+ }
7013
+ document.getElementById('botonAgregar').onclick = function () {
7014
+ var cantidadTotal2 = 0;
7015
+ // // Se calcula la cantidad y el contador para que no exceda la cantidad de la linea al crear un nuevo lote.
7016
+ if (id > 1) {
7017
+ for (var index = 1; index < id; index++) {
7018
+ cantidadTotal2 = cantidadTotal2 + parseInt(document.getElementById("quantity" + index).value);
7019
+ }
7020
+ }
7021
+ // Se añade la linea siempre y cuando la cantidad restante no sea cero.
7022
+ if (cantidadTotal2 < cantidadTotal) {
7023
+ var row = bodyTable.insertRow(bodyTable.rows.length);
7024
+ var cell1 = row.insertCell(0);
7025
+ var cell2 = row.insertCell(1);
7026
+ var cell3 = row.insertCell(2);
7027
+ var cell4 = row.insertCell(3);
7028
+ var cell5 = row.insertCell(4);
7029
+ cell1.innerHTML = id.toString();
7030
+ cell2.innerHTML = '<input type="number" id="quantity' + id + '" value= "' + (cantidadTotal - cantidadTotal2) + '"class="form-control w-50" max="' + (cantidadTotal - cantidadTotal2) + '">';
7031
+ cell3.innerHTML = '<input type="date" id="deliveryDate' + id + '" class="form-control w-75">';
7032
+ cell4.innerHTML = '<input type="text" id="shippingAddress' + id + '" value= "sede"class="form-control w-75">';
7033
+ cell5.innerHTML = '<div class="col-1 flex-grow-0 text-right btnBorrar d-none d-md-block d-none d-md-block"><button class="btn" id="botonBorrar"><img src="./assets/maquetado/img/ic-borrar.svg" alt=""> </butt></div>';
7034
+ // console.log(item);
7035
+ id = id + 1;
7036
+ }
7037
+ else {
7038
+ alert('Ya ha sumado la cantidad máxima');
7039
+ }
7040
+ };
7041
+ var this_ = this;
7042
+ // Cuando se pulsa el boton para guardar el lote recorre la funcion y el for , recorre linea a linea y lanza el endpoint con una pausa para que no se pierda ninguno y no se quede pillado.
7043
+ $("#guardarLote").click(function () {
7044
+ var contador = 0;
7045
+ for (var index = 1; item.quantity > contador; index++) {
7046
+ var quantity = parseInt(document.getElementById("quantity" + index).value);
7047
+ var deliveryDate = document.getElementById("deliveryDate" + index).value;
7048
+ var shippingAddress = document.getElementById("shippingAddress" + index).value;
7049
+ contador = contador + quantity;
7050
+ this_.cartService.addToLot(item.product, 0, item.variant_id, item.item_id, quantity, item.product.price, item.quantity, 0, item.product.price * quantity, 'new', deliveryDate, 'nota prueba', 1);
7051
+ setTimeout(function () { }, 3000);
7052
+ }
7053
+ });
7054
+ };
6976
7055
  CartEcComponent.ctorParameters = function () { return [
6977
7056
  { type: CartService },
6978
7057
  { type: AuthService },