Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Sergey Lyudikov, [22.04.19 17:11]
- @Action(CheckMetrikaOrderStorage)
- CheckMetrikaOrderStorage({ dispatch }: StateContext<any>, { purchasedProducts }: CheckMetrikaOrderStorage) {
- let orderItems: OrderItem[] = LocStorage.getItem('orders', []);
- // Исключить из данных всех до 3 Апреля 2019
- orderItems = orderItems.filter(i => (new Date(i.created_at).getTime() - new Date('04.03.2019').getTime()) > 0);
- const intersectedOrderItems = intersectionBy(
- orderItems,
- purchasedProducts,
- 'order_item_id',
- );
- const removeOrderFromStorage = () => {
- const diffOrderItems = differenceBy(orderItems, intersectedOrderItems, 'order_item_id');
- LocStorage.setItem('orders', diffOrderItems);
- };
- if (intersectedOrderItems.length > 0) {
- const totalAmount = intersectedOrderItems.reduce((t, i) => t + parseInt((i.price as any), 10), 0);
- const id = intersectedOrderItems[0].id;
- const yandexCounterParams = {
- id,
- currency: 'RUB',
- order_price: totalAmount.toFixed(2),
- };
- gtag('event', 'conversion', {
- 'send_to': 'AW-752053985/g39BCNP76pkBEOHdzeYC',
- 'value': totalAmount,
- 'currency': 'RUB',
- 'transaction_id': id,
- });
- (window as any).dataLayer.push({
- ecommerce: {
- currencyCode: 'RUB',
- purchase: {
- actionField: {
- id,
- affiliation: 'egrn.realtycloud',
- revenue: totalAmount,
- },
- products: intersectedOrderItems.map((item) => {
- return {
- id: item.product_id,
- name: item.product_name,
- price: item.price,
- quantity: 1,
- };
- })
- }
- },
- 'event': 'gtm-ee-event',
- 'gtm-ee-event-category': 'Enhanced Ecommerce',
- 'gtm-ee-event-action': 'Purchase',
- 'gtm-ee-event-non-interaction': 'False',
- });
- dispatch(new Goal('payment_success', { ya: yandexCounterParams }));
- dispatch(new AnalyticsEvent('payment_success'));
- removeOrderFromStorage();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement