PageSourceSearch

https://atrealt.ru/js/script-prices.js

js atrealt.ru collected 2026-10-07 06:18:55 UTC 13,040 bytes, 298 lines download raw bytes

1const urlStart = {
2  b24: 'https://www.bitrix24.ru/apps/app/ugpromedia.estateobjects/?p=1253570',
3  amo: 'https://atrealt.ru/amocrm/#howinstall',
4  atrealt: 'https://app.atrealt.com/install/new'
5}
6const pricingData = {
7  atrealt: [
8    {
9      name: 'Агент',
10      basePrice: 1490,
11      users: 1,
12      featured: false,
13      features: [
14        'Только 1 пользователь',
15        'До 20 объектов недвижимости',
16        '10 Гб файлового хранилища',
17        'Добавление и редактирование объектов',
18        'Автовыгрузка XML - один общий фид',
19        'Дополнительные поля',
20        'Разовый импорт',
21        'Подборки и веб-презентации',
22        'Мобильное приложение Android'
23      ]
24    },
25    {
26      name: 'Базовый',
27      basePrice: 3990,
28      users: 5,
29      featured: false,
30      features: [
31        'Добавление и редактирование объектов',
32        'Добавление сотрудников',
33        'Роли прав доступа',
34        'Ведение клиентов и воронки сделок',
35        'Задачи и календарь',
36        'Автовыгрузка XML - один общий фид',
37        'Дополнительные поля',
38        'Разовый импорт',
39        'Подборки и веб-презентации',
40        'Несколько шаблонов презентаций в PDF',
41        'Дублирование объектов',
42        'Внутренняя премодерация',
43      ]
44    },
45    {
46      name: 'Стандартный',
47      basePrice: 10990,
48      users: 15,
49      featured: true,
50      features: [
51        'Добавление и редактирование объектов',
52        'Добавление сотрудников',
53        'Роли прав доступа',
54        'Ведение клиентов и воронки сделок',
55        'Задачи и календарь',
56        'Автовыгрузка XML - общий фид',
57        'Автовыгрузка XML по типу недвижимости',
58        'Автоподборки в заявках',
59        'Дополнительные поля',
60        'Разовый импорт',
61        'Подборки и веб-презентации',
62        'Несколько шаблонов презентаций в PDF',
63        'Дублирование объектов',
64        'Внутренняя премодерация',
65        'Динамика цен в комплексах',
66        'Стадии строительства в комплексах',
67        'Мультиобъявления в коммерции',
68        'API',
69        'Свой домен в подборках и веб-презентациях объектов',
70      ]
71    },
72    {
73      name: 'Профессиональный',
74      basePrice: 16990,
75      users: 50,
76      featured: false,
77      features: [
78        'Добавление и редактирование объектов',
79        'Добавление сотрудников',
80        'Роли прав доступа',
81        'Ведение клиентов и воронки сделок',
82        'Задачи и календарь',
83        'Автовыгрузка XML - общий фид',
84        'Автовыгрузка XML по типу недвижимости',
85        'Автоподборки в заявках',
86        'Дополнительные поля',
87        'Разовый импорт',
88        'Автоматический периодический импорт',
89        'Подборки и веб-презентации',
90        'Несколько шаблонов презентаций в PDF',
91        'Дублирование объектов',
92        'Внутренняя премодерация',
93        'Динамика цен в комплексах',
94        'Стадии строительства в комплексах',
95        'Мультиобъявления в коммерции',
96        'API',
97        'Свой домен в подборках и веб-презентация
97х объектов',
98        'Бонус "Парсер 2 региона"'
99      ]
100    }
101  ],
102  b24: [
103    {
104      name: 'Бесплатный',
105      basePrice: 0,
106      users: 1,
107      featured: false,
108      features: [
109        'Только 1 пользователь',
110        'До 20 объектов недвижимости',
111        '500 МБ файлового хранилища',
112        'Добавление и редактирование объектов',
113        'Базовая интеграция с Битрикс24',
114        'Привязка объектов к контакту / сделке',
115        'Автовыгрузка XML - один общий фид',
116        'Веб-презентации',
117        'Мобильное приложение Android'
118      ]
119    },
120    {
121      name: 'Подписка "Про"',
122      basePrice: 690,
123      users: 'Без ограничений',
124      featured: false,
125      features: [
126        '<span><b>Неограниченное</b> количество пользователей</span>',
127        '<span><b>Неограниченное</b> количество объектов</span>',
128        '<span><b>Неограниченное</b> файловое хранилище</span>',
129        'Робот автоматизации на стадиях сделки',
130        'Автовыгрузка XML по всем типам недвижимости',
131        'Сопоставление полей сделки с параметрами объекта',
132        'История изменений в объекте',
133        'Дополнительные поля',
134        'Настройка фильтра',
135        'Презентации в PDF',
136        'Дублирование объектов',
137        'Внутренняя премодерация',
138        'Создание подборок',
139        'Мультиобъявления в коммерции',
140        'Динамика цен и стадии строительства комплекса',
141        'Импорт базы объектов',
142        'Отчётность из Авито и Циан',
143        'Массовые операции с объектами',
144        'Роли доступа по сотрудникам',
145        'Свой домен для подборок (от 6 мес.)',
146        'API',
147        'Мобильное приложение Android',
148        'Приоритетная поддержка',
149      ]
150    }
151  ],
152  amo: [
153    {
154      name: 'Подписка "Про"',
155      basePrice: 690,
156      users: 'Без ограничений',
157      featured: false,
158      features: [
159        'Автоматизация на статусах сделки',
160        'Автовыгрузка XML',
161        'Сопоставление полей сделки с параметрами объекта',
162        'История изменений в объекте',
163        'Дополнительные поля',
164        'Настройка фильтра',
165        'Презентации в PDF',
166        'Дублирование объектов',
167        'Внутренняя премодерация',
168        'Создание подборок',
169        'Мультиобъявления в коммерции',
170        'Динамика цен и стадии строительства комплекса',
171        'Импорт базы объектов',
172        'Отчётность из Авито и Циан',
173        'Массовые операции с объектами',
174        'Роли доступа по сотрудникам',
175        'Свой домен для подборок (от 6 мес.)',
176        'API',
177        'Мобильное приложение Android',
178        'Приоритетная поддержка',
179      ]
180    }
181  ]
182};
183
184let currentPeriod = 1;
185let currentCRM = 'atrealt';
186
187function calculatePrice(basePrice, months) {
188  if (basePrice === 0) return 0;
189
190  let multiplier = 1;
191  let discount = 0;
192
193  if (months === 6) {
194    multiplier = 0.9; // 10% discount
195    discount = 10;
196  } else if (months === 12) {
197    multiplier = 0.8; // 20% discount
198    discount = 20;
199  }
200
201  const totalPrice = Math.round(basePrice * months * multiplier);
202  const monthlyPrice = Math.round(basePrice * multiplier);
203
204  return {
205    total: totalPrice,
206    monthly: monthlyPrice,
207    originalMonthly: basePrice,
208    discount: discount
209  };
210}
211
212function formatPrice(price) {
213  return price.toLocaleString('ru-RU');
214}
215
216function renderCards() {
217  const container = document.getElementById('pricingCards');
218  const plans = pricingData[currentCRM];
219
220  container.innerHTML = '';
221
222  plans.forEach((plan, index) => {
223    const priceInfo = calculatePrice(plan.basePrice, currentPeriod);
224    const isFree = plan.basePrice === 0;
225
226    let priceHTML = '';
227    if (isFree) {
228      priceHTML = `
229                        <div class="current-price">Бесплатно</div>
230                        <div class="price-period">${currentCRM === 'b24' ? '<div class="fs-7 text-gray mt-2">с подпиской на "Битрикс24 Маркетплейс"</div>':'навсегда'}</div>
231                    `;
232    } else {
233      if (priceInfo.discount > 0) {
234        priceHTML = `
235                            <div class="original-price">${formatPrice(priceInfo.originalMonthly)} ₽/мес</div>
236                            <span class="discount-tag">−${priceInfo.discount}%</span>
237                            <div class="current-price">${formatPrice(priceInfo.monthly)} ₽<span class="price-period">/мес</span></div>
238                            <div class="fs-7 text-gray mt-2">
239                                ${currentPeriod > 1 ? `Всего ${formatPrice(priceInfo.total)} ₽ за ${currentPeriod} мес` : ''}
240                            </div>
241                            <div class="fs-7 text-gray mt-2">${typeof plan.users === 'number' ? plan.users > 1 ? 'цена за '+plan.users+' пользователей':'цена за 1 пользователя' : 'цена за 1 пользователя'}</div>
242                        `;
243      } else {
244        priceHTML = `
245                            <div class="current-price">${formatPrice(plan.basePrice)} ₽<span class="price-period">/мес</span></div><div class="fs-7 text-gray mt-2">${typeof plan.users === 'number' ? plan.users > 1 ? 'цена за '+plan.users+' пользователей':'цена за 1 пользователя' : 'цена за 1 пользователя'}</div>
246                        `;
247      }
248    }
249
250    const featuresHTML = plan.features.map(feature =>
251        `<li><span class="feature-icon available"><i class="bi bi-check-lg"></i></span> ${feature}</li>`
252    ).join('');
253
254    const featuredBadge = plan.featured ? '<div class="popular-badge">Популярный</div>' : '';
255
256    const cardHTML = `
257                    <div class="col-lg-${currentCRM === 'atrealt' ? '3' : '4'} col-md-6 ${plan.featured ? 'featured-wrapper' : ''}">
258                        <div class="price-card ${plan.featured ? 'featured' : ''} fade-in" style="animation-delay: ${index * 0.1}s">
259                            ${featuredBadge}
260                            <h3 class="plan-name">${plan.name}</h3>
261                            <div class="plan-users">
262                                <i class="bi bi-people"></i> <b>${plan.users}</b> ${typeof plan.users === 'number' ? plan.users > 1 ? 'пользователей':'пользователь' : ''}
263                            </div>
264                            <div class="price-container">
265                                ${priceHTML}
266                            </div>
267                            <a href="${urlStart[currentCRM]}" class="btn btn-primary btn-select" target="_blank">
268                                ${isFree ? 'Начать бесплатно' : 'Попробовать'}
269                            </a>
270                            <ul class="features-list mt-4">
271                                ${featuresHTML}
272                            </ul>
273                        </div>
274                    </div>
275                `;
276    container.innerHTML += cardHTML;
277  });
278}
279
280function switchCRM(crmType, element) {
281  currentCRM = crmType;
282  document.querySelectorAll('.crm-card').forEach(card => {
283    card.classList.remove('active');
284  });
285  element.classList.add('active');
286  renderCards();
287}
288
289function setPeriod(months, element) {
290  currentPeriod = months;
291  document.querySelectorAll('.period-btn').forEach(btn => {
292    btn.classList.remove('active');
293  });
294  element.classList.add('active');
295
296  renderCards();
297}
298renderCards();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.