Advertisement
Guest User

Ecommerce

a guest
Apr 23rd, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.63 KB | None | 0 0
  1. Sergey Lyudikov, [22.04.19 17:11]
  2. @Action(CheckMetrikaOrderStorage)
  3. CheckMetrikaOrderStorage({ dispatch }: StateContext<any>, { purchasedProducts }: CheckMetrikaOrderStorage) {
  4. let orderItems: OrderItem[] = LocStorage.getItem('orders', []);
  5.  
  6. // Исключить из данных всех до 3 Апреля 2019
  7. orderItems = orderItems.filter(i => (new Date(i.created_at).getTime() - new Date('04.03.2019').getTime()) > 0);
  8.  
  9. const intersectedOrderItems = intersectionBy(
  10. orderItems,
  11. purchasedProducts,
  12. 'order_item_id',
  13. );
  14.  
  15. const removeOrderFromStorage = () => {
  16. const diffOrderItems = differenceBy(orderItems, intersectedOrderItems, 'order_item_id');
  17. LocStorage.setItem('orders', diffOrderItems);
  18. };
  19.  
  20. if (intersectedOrderItems.length > 0) {
  21. const totalAmount = intersectedOrderItems.reduce((t, i) => t + parseInt((i.price as any), 10), 0);
  22. const id = intersectedOrderItems[0].id;
  23. const yandexCounterParams = {
  24. id,
  25. currency: 'RUB',
  26. order_price: totalAmount.toFixed(2),
  27. };
  28.  
  29. gtag('event', 'conversion', {
  30. 'send_to': 'AW-752053985/g39BCNP76pkBEOHdzeYC',
  31. 'value': totalAmount,
  32. 'currency': 'RUB',
  33. 'transaction_id': id,
  34. });
  35.  
  36. (window as any).dataLayer.push({
  37. ecommerce: {
  38. currencyCode: 'RUB',
  39. purchase: {
  40. actionField: {
  41. id,
  42. affiliation: 'egrn.realtycloud',
  43. revenue: totalAmount,
  44. },
  45. products: intersectedOrderItems.map((item) => {
  46. return {
  47. id: item.product_id,
  48. name: item.product_name,
  49. price: item.price,
  50. quantity: 1,
  51. };
  52. })
  53. }
  54. },
  55. 'event': 'gtm-ee-event',
  56. 'gtm-ee-event-category': 'Enhanced Ecommerce',
  57. 'gtm-ee-event-action': 'Purchase',
  58. 'gtm-ee-event-non-interaction': 'False',
  59. });
  60.  
  61. dispatch(new Goal('payment_success', { ya: yandexCounterParams }));
  62. dispatch(new AnalyticsEvent('payment_success'));
  63. removeOrderFromStorage();
  64. }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement