]>
gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/log
fomichev [Wed, 22 Apr 2026 07:57:40 +0000 (10:57 +0300)]
fix: перехват ошибки экспорта — возврат JSON вместо 500
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fomichev [Wed, 22 Apr 2026 07:52:57 +0000 (10:52 +0300)]
fix: правильный регистр исключённых категорий (строчные буквы)
В БД категории хранятся строчными: 'букет', 'сборка', 'сервис'.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fomichev [Wed, 22 Apr 2026 07:46:39 +0000 (10:46 +0300)]
fix: фильтрация категорий Букет/Сборка/Сервис после кэша
Перенесена фильтрация исключённых категорий из SQL-запроса внутри кэша
в PHP-фильтр после getOrSet — работает немедленно независимо от состояния кэша.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fomichev [Wed, 22 Apr 2026 07:43:55 +0000 (10:43 +0300)]
fix cache
fomichev [Wed, 22 Apr 2026 07:29:26 +0000 (10:29 +0300)]
fix mapping
fomichev [Wed, 22 Apr 2026 07:13:27 +0000 (10:13 +0300)]
fix marking
fomichev [Wed, 22 Apr 2026 07:03:22 +0000 (10:03 +0300)]
fix producer
fomichev [Wed, 22 Apr 2026 06:48:20 +0000 (09:48 +0300)]
fix plantation
fomichev [Wed, 22 Apr 2026 06:32:56 +0000 (09:32 +0300)]
fix plantation
fomichev [Tue, 21 Apr 2026 14:01:26 +0000 (17:01 +0300)]
delete
fomichev [Tue, 21 Apr 2026 12:58:08 +0000 (15:58 +0300)]
migration
fomichev [Tue, 21 Apr 2026 12:36:47 +0000 (15:36 +0300)]
fix button
fomichev [Tue, 21 Apr 2026 12:20:54 +0000 (15:20 +0300)]
fix button
fomichev [Tue, 21 Apr 2026 12:18:37 +0000 (15:18 +0300)]
fix button
fomichev [Tue, 21 Apr 2026 10:19:41 +0000 (13:19 +0300)]
фикс появления после создания
fomichev [Tue, 21 Apr 2026 08:36:43 +0000 (11:36 +0300)]
фикс удаления
fomichev [Tue, 21 Apr 2026 06:56:40 +0000 (09:56 +0300)]
фикс удаления
fomichev [Tue, 21 Apr 2026 06:56:09 +0000 (09:56 +0300)]
фикс вкладки
fomichev [Fri, 17 Apr 2026 10:48:07 +0000 (13:48 +0300)]
Фикс по фильтры
fomichev [Fri, 17 Apr 2026 09:40:36 +0000 (12:40 +0300)]
Фикс по фильтры
fomichev [Fri, 17 Apr 2026 09:23:38 +0000 (12:23 +0300)]
Фикс по js
fomichev [Fri, 17 Apr 2026 07:26:57 +0000 (10:26 +0300)]
Фикс по маппингу
Vladimir Fomichev [Tue, 14 Apr 2026 07:32:43 +0000 (10:32 +0300)]
Каталог поставщика
Vladimir Fomichev [Tue, 14 Apr 2026 07:32:34 +0000 (10:32 +0300)]
Каталог поставщика
Vladimir Fomichev [Thu, 9 Apr 2026 06:39:09 +0000 (09:39 +0300)]
feat(ERP-318): справочник поставщиков — Model + Controller + View + JS
Реализован CRUD справочника поставщиков с модальными окнами (AJAX),
GridView + PJAX и каскадной деактивацией связанных записей.
Компоненты:
- Supplier (AR модель с TimestampBehavior + BlameableBehavior)
- SupplierSearch (search модель без пагинации)
- SupplierController (AJAX CRUD, наследует BaseController)
- views/supplier/index.php (GridView + модалка + JS)
- views/supplier/_form.php (форма для модалки)
- BuyerReferenceController + view (контейнер с табами)
Бейджи типа и статуса — по UI-guideline из spec-supplier-reference.html.
Валидация: name unique varchar(200), lead_time >= 0, type/currency enum.
Soft delete через is_active=false с каскадом на markings и product_mappings.
Write-операции обёрнуты в DB-транзакции.
Артефакты workflow: docs/jira/ERP-318/
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Aleksey Filippov [Thu, 2 Apr 2026 16:11:58 +0000 (16:11 +0000)]
Merge branch 'fix_filippov_BC-248_max_chatbot_source' into 'develop'
fix(BC-248): защита миграции purchase_date от повторного применения
See merge request gitlab-instance/yii-erp24!1158
Aleksey Filippov [Thu, 2 Apr 2026 16:11:06 +0000 (19:11 +0300)]
fix(BC-248): защита миграции purchase_date от повторного применения
Проверка наличия колонки через getTableSchema перед ALTER TABLE.
Aleksey Filippov [Wed, 1 Apr 2026 16:12:06 +0000 (16:12 +0000)]
Merge branch 'fix_filippov_BC-248_max_chatbot_source' into 'develop'
feat(BC-248): добавить поле purchase_date в обращения KikFeedback
See merge request gitlab-instance/yii-erp24!1156
Aleksey Filippov [Wed, 1 Apr 2026 16:08:35 +0000 (19:08 +0300)]
feat(BC-248): добавить поле purchase_date в обращения KikFeedback
- Миграция: колонка purchase_date (date, nullable) в kik_feedback_request
- Модель KikFeedbackRequest: PHPDoc, rules, attributeLabels
- API2 KikController: приём purchase_date из bodyParams
- API3 KikService + FeedbackInput: приём purchase_date, маппинг max_chatbot
- View: отображение "Дата покупки" в карточке обращения
Aleksey Filippov [Wed, 1 Apr 2026 14:42:40 +0000 (14:42 +0000)]
Merge branch 'fix_filippov_BC-248_max_chatbot_source' into 'develop'
fix(BC-248): actionGetStores — вернуть UUID из Products1c вместо числового ID из CityStore
See merge request gitlab-instance/yii-erp24!1155
Aleksey Filippov [Wed, 1 Apr 2026 14:41:26 +0000 (17:41 +0300)]
fix(BC-248): actionGetStores — вернуть UUID из Products1c вместо числового ID из CityStore
Max-бот ожидает UUID магазинов (Products1c.id), а не числовой ID из CityStore.
Удалён закомментированный дубликат метода.
Aleksey Filippov [Wed, 1 Apr 2026 13:40:14 +0000 (13:40 +0000)]
Merge branch 'fix_filippov_BC-248_max_chatbot_source' into 'develop'
fix(BC-248): добавить источник max_chatbot в маппинг KikFeedback
See merge request gitlab-instance/yii-erp24!1154
Aleksey Filippov [Wed, 1 Apr 2026 13:33:38 +0000 (16:33 +0300)]
fix(BC-248): добавить источник max_chatbot в маппинг KikFeedback
Обратная связь из Max-бота записывалась с source=0 (неизвестный)
вместо source=11 (Макс), т.к. маппинг не содержал max_chatbot.
Aleksey Filippov [Wed, 1 Apr 2026 07:44:17 +0000 (07:44 +0000)]
Merge branch 'feature_filippov_ERP-280_reduce_cleanup_period' into 'develop'
feat(ERP-280): клиентская валидация суммарного размера файлов (лимит 2.5 ГБ)
See merge request gitlab-instance/yii-erp24!1153
Aleksey Filippov [Wed, 1 Apr 2026 06:39:53 +0000 (09:39 +0300)]
feat(ERP-280): клиентская валидация суммарного размера файлов (лимит 2.5 ГБ)
Предотвращает отправку формы списания, если суммарный размер вложений
превышает 2.5 ГБ. Показывает пользователю фактический и допустимый размер.
Aleksey Filippov [Tue, 31 Mar 2026 14:54:24 +0000 (14:54 +0000)]
Merge branch 'feature_filippov_ERP-280_reduce_cleanup_period' into 'develop'
fix(ERP-280): сократить срок подготовки файлов списания до 5 дней
See merge request gitlab-instance/yii-erp24!1152
Aleksey Filippov [Tue, 31 Mar 2026 14:53:26 +0000 (17:53 +0300)]
fix(ERP-280): сократить срок подготовки файлов списания до 5 дней
Было: -1 month, стало: -5 days в export-old, print-old и связанных методах модели.
Aleksey Filippov [Tue, 24 Mar 2026 17:04:00 +0000 (17:04 +0000)]
Merge branch 'fix_filippov_batch_sync_pdo_binding' into 'develop'
fix: BatchSyncService PDO binding — $N плейсхолдеры → :pN
See merge request gitlab-instance/yii-erp24!1150
Aleksey Filippov [Tue, 24 Mar 2026 16:46:06 +0000 (19:46 +0300)]
fix: BatchSyncService PDO binding — $N плейсхолдеры → :pN
PDO::bindValue() требует индекс ≥ 1, а $params был 0-индексированным
массивом с PostgreSQL-нативными $1,$2,$3 плейсхолдерами. Это вызывало:
PDOStatement::bindValue(): Argument #1 ($param) must be >= 1
Результат на проде: Balances::deleteAll() удалял данные магазина,
BatchSyncService->upsertBalances() падал → магазин терял ВСЕ строки.
Fix: именованные :p1,:p2,:p3 плейсхолдеры вместо $1,$2,$3.
Проверено на реальной БД: 5 магазинов (419-499 товаров) + characteristics.
Aleksey Filippov [Tue, 24 Mar 2026 14:19:31 +0000 (14:19 +0000)]
Merge branch 'feature_filippov_ERP-33_stock_state_scd2' into 'develop'
Feature filippov erp 33 stock state scd2
See merge request gitlab-instance/yii-erp24!1149
Aleksey Filippov [Tue, 24 Mar 2026 14:16:52 +0000 (17:16 +0300)]
fix(ERP-33): SendTelegramMessageJob namespace app\jobs, не yii_app\jobs
Aleksey Filippov [Tue, 24 Mar 2026 13:59:46 +0000 (13:59 +0000)]
Merge branch 'task-JIRA-ERP-33-
20260324070448 ' into 'develop'
Task jira erp 33
20260324070448
See merge request gitlab-instance/yii-erp24!1148
Aleksey Filippov [Tue, 24 Mar 2026 13:59:15 +0000 (13:59 +0000)]
Merge branch 'develop' into 'task-JIRA-ERP-33-
20260324070448 '
# Conflicts:
# erp24/services/StockStateService.php
Aleksey Filippov [Tue, 24 Mar 2026 13:41:41 +0000 (16:41 +0300)]
fix(ERP-33): safe cast components — пустые строки и NULL в products_1c
Aleksey Filippov [Tue, 24 Mar 2026 13:41:41 +0000 (16:41 +0300)]
fix(ERP-33): safe cast components — пустые строки и NULL в products_1c
Aleksey Filippov [Tue, 24 Mar 2026 13:39:32 +0000 (13:39 +0000)]
Merge branch 'feature_filippov_ERP-33_stock_state_scd2' into 'develop'
[ERP-33]: cast components::jsonb + TelegramTarget multiline fix
See merge request gitlab-instance/yii-erp24!1147
Aleksey Filippov [Tue, 24 Mar 2026 13:36:36 +0000 (16:36 +0300)]
fix(ERP-33): cast components::jsonb + TelegramTarget multiline fix
1. StockStateService: pp.components::jsonb cast — products_1c хранит
components как text, stock_state ожидает JSONB
2. TelegramTarget: экранировать \n при записи в error_tracking.log —
многострочные ошибки ломали формат файла и спамили stderr
Aleksey Filippov [Tue, 24 Mar 2026 13:26:39 +0000 (16:26 +0300)]
fix(ERP-33): cast pp.components::jsonb в INSERT для совместимости с products_1c
Aleksey Filippov [Tue, 24 Mar 2026 13:15:10 +0000 (13:15 +0000)]
Merge branch 'task-JIRA-ERP-33-
20260324070448 ' into 'develop'
fix(ERP-33): TelegramTarget — экранировать \n в error_tracking.log
See merge request gitlab-instance/yii-erp24!1146
Aleksey Filippov [Tue, 24 Mar 2026 11:57:09 +0000 (14:57 +0300)]
refactor(ERP-33): убрать actionCleanup — очистка не нужна
Aleksey Filippov [Tue, 24 Mar 2026 11:49:26 +0000 (14:49 +0300)]
fix(ERP-33): TelegramTarget — экранировать \n в error_tracking.log
Многострочные ошибки (содержащие $_SERVER dump) ломали формат
файла error_tracking.log: file() разбивала одну запись на
множество строк, каждая выводилась как "Некорректная строка".
Фикс: str_replace \n → \\n при записи, убран error_log спам.
Aleksey Filippov [Tue, 24 Mar 2026 11:42:53 +0000 (11:42 +0000)]
Merge branch 'task-JIRA-ERP-33-
20260324070448 ' into 'develop'
fix(ERP-33): namespace app\ → yii_app\ для совместимости с продом
See merge request gitlab-instance/yii-erp24!1145
Aleksey Filippov [Tue, 24 Mar 2026 11:38:04 +0000 (14:38 +0300)]
fix(ERP-33): namespace app\ → yii_app\ для совместимости с продом
Aleksey Filippov [Tue, 24 Mar 2026 10:01:19 +0000 (10:01 +0000)]
Merge branch 'task-JIRA-ERP-33-
20260324070448 ' into 'develop'
[ERP-33]: add unit tests for StockHistoryService (11 tests)
See merge request gitlab-instance/yii-erp24!1144
Aleksey Filippov [Tue, 24 Mar 2026 09:48:40 +0000 (12:48 +0300)]
feat(ERP-33): заменить StockHistory (snapshot) на StockState (SCD-2)
Полная переделка подхода хранения остатков:
- StockHistory (полные снимки 11400 INSERT/запуск) → StockState (SCD-2, 2 SQL)
- Без партиций — одна таблица с valid_from/valid_to (TIMESTAMP)
- valid_to = '2100-01-01 00:00:00' для активных, закрытие на секунду раньше
- is_active boolean для быстрой фильтрации
- batch_ts — единый timestamp пакета на запуск
- Экономия ~78% объёма (660 MB vs 3 GB за 2 года)
- 10 unit-тестов, 29 assertions
Auto-Claude Orchestrator [Tue, 24 Mar 2026 08:04:06 +0000 (08:04 +0000)]
feat(task-JIRA-ERP-33-
20260324070448 ): Сбор данных по остаткам на день
Auto-Claude Orchestrator [Tue, 24 Mar 2026 08:02:44 +0000 (08:02 +0000)]
feat(task-JIRA-ERP-33-
20260324070448 ): Сбор данных по остаткам на день
Auto-Claude Orchestrator [Tue, 24 Mar 2026 08:00:24 +0000 (08:00 +0000)]
feat(task-JIRA-ERP-33-
20260324070448 ): Сбор данных по остаткам на день
Auto-Claude Orchestrator [Tue, 24 Mar 2026 07:38:26 +0000 (07:38 +0000)]
feat(task-JIRA-ERP-33-
20260324070448 ): Сбор данных по остаткам на день
Auto-Claude Orchestrator [Tue, 24 Mar 2026 07:36:00 +0000 (07:36 +0000)]
feat(task-JIRA-ERP-33-
20260324070448 ): Сбор данных по остаткам на день
Auto-Claude Orchestrator [Tue, 24 Mar 2026 07:30:52 +0000 (07:30 +0000)]
feat(task-JIRA-ERP-33-
20260324070448 ): Сбор данных по остаткам на день
Auto-Claude Orchestrator [Tue, 24 Mar 2026 07:28:15 +0000 (07:28 +0000)]
feat(task-JIRA-ERP-33-
20260324070448 ): Сбор данных по остаткам на день
Auto-Claude Orchestrator [Tue, 24 Mar 2026 07:22:01 +0000 (07:22 +0000)]
feat(task-JIRA-ERP-33-
20260324070448 ): Сбор данных по остаткам на день
Auto-Claude Orchestrator [Tue, 24 Mar 2026 07:18:45 +0000 (07:18 +0000)]
feat(task-JIRA-ERP-33-
20260324070448 ): Сбор данных по остаткам на день
Aleksey Filippov [Thu, 19 Mar 2026 13:57:44 +0000 (13:57 +0000)]
Merge branch 'feature_filippov_ERP-237_missing_indexes' into 'develop'
feat(ERP-237): 6 индексов для устранения медленных запросов
See merge request gitlab-instance/yii-erp24!1143
Aleksey Filippov [Thu, 19 Mar 2026 13:31:35 +0000 (16:31 +0300)]
feat(ERP-237): 6 индексов для устранения медленных запросов из pg_stat_statements
export_import_table(entity, export_id, export_val) — 2.3M запросов, 511s
marketplace_orders(guid) — 247K запросов, 412s
marketplace_flowwow_emails(subject, from, date) — 253K запросов, 409s
marketplace_order_items(order_id) — 376K запросов, 307s
timetable_fact(admin_id, date, is_opening) — 52K запросов, 298s
admin_payroll_days(admin_id, date) — 27K запросов, 278s
Aleksey Filippov [Thu, 19 Mar 2026 13:20:42 +0000 (13:20 +0000)]
Merge branch 'feature_filippov_ERP-218-J_fix_db_long_request' into 'develop'
feat(ERP-218-J): интеграция BatchSyncService и ProductPropTypeCacheService в UploadService
See merge request gitlab-instance/yii-erp24!1142
Aleksey Filippov [Thu, 19 Mar 2026 13:11:17 +0000 (16:11 +0300)]
feat(ERP-218-J): интеграция BatchSyncService и ProductPropTypeCacheService в UploadService
- Исправлена миграция: indexExists() через pg_indexes вместо $schema->indexes
- ProductPropTypeCacheService: null-safe обращение к Yii::$app->cache
- UploadService: Products1cPropType::findOne() заменён на ProductPropTypeCacheService (10M→1 запрос)
- UploadService: balances INSERT в цикле заменён на BatchSyncService::upsertBalances (6M→2k запросов)
- UploadService: characteristics INSERT/UPDATE заменён на BatchSyncService::upsertProductCharacteristics (11M→1.2k)
- 20 unit-тестов: BatchSyncServiceTest (9) + ProductPropTypeCacheServiceTest (11)
Aleksey Filippov [Thu, 19 Mar 2026 12:40:35 +0000 (12:40 +0000)]
Merge branch 'feature_filippov_ERP-255_fix_marketplace_concurrency' into 'develop'
fix(ERP-255): защита от гонки процессов в маркетплейс-командах
See merge request gitlab-instance/yii-erp24!1141
Aleksey Filippov [Thu, 19 Mar 2026 11:38:08 +0000 (14:38 +0300)]
test(ERP-255): unit-тесты для mutex-защиты cron-команд и null-check в SendBonusInfoToSiteJob
MarketplaceControllerMutexTest — 7 тестов: пропуск при занятом mutex,
release в finally, уникальность ключей.
SendBonusInfoToSiteJobTest — 5 тестов: null-check, детерминированность hash.
Aleksey Filippov [Tue, 17 Mar 2026 08:36:09 +0000 (08:36 +0000)]
Merge branch 'feature_filippov_ERP-258_telegram_429_fix' into 'develop'
fix(ERP-258): агрегация сообщений и дедупликация в TelegramTarget
See merge request gitlab-instance/yii-erp24!1139
Aleksey Filippov [Tue, 17 Mar 2026 06:46:45 +0000 (09:46 +0300)]
fix(ERP-258): агрегация сообщений и дедупликация в TelegramTarget
- Обработка всех сообщений буфера вместо только первого
- Включён shouldSendMessage() для дедупликации (1 раз в день на ошибку)
- Лимит 800 символов на сообщение, 4000 итого
- disableNotification только если нет ERROR-уровня
Aleksey Filippov [Mon, 16 Mar 2026 13:26:53 +0000 (13:26 +0000)]
Merge branch 'feature_filippov_ERP-257_heic_already_readable' into 'develop'
fix(ERP-257): graceful fallback для HEIC-файлов, которые уже являются JPEG
See merge request gitlab-instance/yii-erp24!1138
Aleksey Filippov [Mon, 16 Mar 2026 13:25:26 +0000 (16:25 +0300)]
chore: trigger MR creation
Aleksey Filippov [Mon, 16 Mar 2026 13:17:43 +0000 (16:17 +0300)]
fix(ERP-257): graceful fallback для HEIC-файлов, которые уже являются JPEG
iPhone иногда сохраняет JPEG с расширением .HEIC. Библиотека heic2any
бросала ERR_USER вместо того, чтобы пропустить файл. Теперь при ошибке
"already browser readable" файл передаётся как есть с корректным расширением.
Aleksey Filippov [Fri, 13 Mar 2026 13:21:39 +0000 (13:21 +0000)]
Merge branch 'feature_filippov_ERP-256_cabinet_last_month_button' into 'develop'
feat(ERP-256): добавлена кнопка «за прошлый месяц» на странице ошибки смен
See merge request gitlab-instance/yii-erp24!1137
Aleksey Filippov [Fri, 13 Mar 2026 13:16:13 +0000 (16:16 +0300)]
feat(ERP-256): добавлена кнопка «за прошлый месяц» на странице ошибки смен
Добавлен $buttonParams2 с диапазоном дат прошлого месяца.
Кнопка отображается рядом с «за неделю» при ошибке cs1.
Aleksey Filippov [Sat, 7 Mar 2026 21:36:28 +0000 (00:36 +0300)]
fix(ERP-255): защита от гонки процессов в маркетплейс-командах
- Добавлен компонент PgsqlMutex в console.php для advisory locks
- Обёрнуты 4 action MarketplaceController в мьютекс (yandex-orders,
flowwow-orders, flowwow-retry, check-ready-to-1c) — повторный запуск
cron пропускается без ошибок
- Добавлен try-catch IntegrityException в processOrders() вокруг
save() нового заказа — дубликат marketplace_order_id при гонке
теперь логируется как warning, а не падает в ошибку
- Исправлен NPE в SendBonusInfoToSiteJob: добавлена проверка на null
перед обращением к ->status++ (Fatal Error при отсутствии записи)
- Добавлен layout => false в api1.config.php
Aleksey Filippov [Sat, 7 Mar 2026 17:59:55 +0000 (17:59 +0000)]
Merge branch 'feature_filippov_ERP-254_fix_close_shift_null_fact' into 'develop'
fix(ERP-254): throw 404 when no open shift found on close
See merge request gitlab-instance/yii-erp24!1135
Aleksey Filippov [Sat, 7 Mar 2026 17:48:54 +0000 (20:48 +0300)]
fix(ERP-254): throw 404 when no open shift found on close
TimetableFactModel::getLast() returns null if no open fact exists
for the admin on the current/previous date. Accessing checkin_start_id
on null caused PHP Warning and 500 response. Now returns proper 404.
Aleksey Filippov [Sat, 7 Mar 2026 17:31:11 +0000 (17:31 +0000)]
Merge branch 'feature_filippov_20260307_fix_mp_telegram_429' into 'develop'
fix(marketplace): aggregate missing MarketplaceStore errors before Telegram send
See merge request gitlab-instance/yii-erp24!1134
Aleksey Filippov [Sat, 7 Mar 2026 17:18:17 +0000 (20:18 +0300)]
fix(marketplace): aggregate missing MarketplaceStore errors before Telegram send
Instead of sending one Telegram message per order with missing store
inside processOrders() loop, collect unique warehouse GUIDs and send
a single aggregated message after the loop to avoid Telegram 429.
Aleksey Filippov [Fri, 6 Mar 2026 22:53:35 +0000 (22:53 +0000)]
Merge branch 'feature_fomichev_2026-03-06_TO8-22_promobonuses' into 'develop'
fix(TO8-22): is_promo_balance boolean validation in Promocode model
See merge request gitlab-instance/yii-erp24!1133
Aleksey Filippov [Fri, 6 Mar 2026 22:52:31 +0000 (01:52 +0300)]
fix(TO8-22): is_promo_balance boolean validation in Promocode model
Колонка is_promo_balance в PostgreSQL — boolean, а валидатор был integer.
PDO возвращает PHP false → IntegerValidator падает: "должно быть целым числом".
Aleksey Filippov [Fri, 6 Mar 2026 15:46:43 +0000 (15:46 +0000)]
Merge branch 'feature_fomichev_2026-03-06_TO8-22_promobonuses' into 'develop'
feat(TO8-22): промокоды БЛАГО — активация и промо-списание бонусов
See merge request gitlab-instance/yii-erp24!1132
Vladimir Fomichev [Fri, 6 Mar 2026 14:57:12 +0000 (17:57 +0300)]
дубликаты
Vladimir Fomichev [Fri, 6 Mar 2026 14:26:51 +0000 (17:26 +0300)]
блокирование строки
Vladimir Fomichev [Fri, 6 Mar 2026 14:23:17 +0000 (17:23 +0300)]
логирование
VVF [Fri, 6 Mar 2026 14:18:44 +0000 (17:18 +0300)]
fix(TO8-22): skip Yii validation on UsersBonus save in activatePromocode
Множество полей БД (dell, status, check_id и др.) не имеют дефолтов
на уровне модели. save(false) пропускает валидацию Yii — аналогично
actionSale() строка 902.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Vladimir Fomichev [Fri, 6 Mar 2026 14:01:16 +0000 (17:01 +0300)]
Merge remote-tracking branch 'origin/feature_fomichev_2026-03-06_TO8-22_promobonuses' into feature_fomichev_2026-03-06_TO8-22_promobonuses
VVF [Fri, 6 Mar 2026 13:45:41 +0000 (16:45 +0300)]
fix(TO8-22): нормализация окончаний строк CRLF→LF
Файлы были сохранены с CRLF из-за WSL, конвертированы в LF
для чистого diff в MR.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Vladimir Fomichev [Fri, 6 Mar 2026 12:57:46 +0000 (15:57 +0300)]
удаление
Vladimir Fomichev [Fri, 6 Mar 2026 12:57:46 +0000 (15:57 +0300)]
удаление
VVF [Fri, 6 Mar 2026 12:46:54 +0000 (15:46 +0300)]
fix(TO8-22): критические исправления промо-списания БЛАГО по код-ревью
Исправлены баги, выявленные при ревью:
1. Race condition: SELECT FOR UPDATE в actionActivatePromocode
2. burn_balans не трогается при промо-списании (только обычные бонусы)
3. user_balans_new не уменьшается при промо (списываются промо-бонусы)
4. writeOffAlready проверяет tip_sale='promobonus' для промо-дедупликации
5. date_end фильтр на promoPlusSum (просроченные промо не учитываются)
6. Обновление полей пользователя на промо early-return пути
7. Использование promocode.duration вместо YEAR_PERIOD в активации
8. attributeLabels для activated_by/activated_at в Promocode
9. Убран file_put_contents с промо-пути
10. Тесты обновлены: добавлены проверки баланса, исправлена формула
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
VVF [Fri, 6 Mar 2026 11:11:42 +0000 (14:11 +0300)]
feat(TO8-22): промокоды БЛАГО — активация и промо-списание бонусов
- Миграция: добавлены поля activated_by, activated_at в таблицу promocode
- Модель Promocode: константа TIP_SALE_PROMOBONUS, метод isActivatable()
- API endpoint actionActivatePromocode(): начисление 350 промо-бонусов с tip_sale='promobonus'
- Модификация actionSale(): автоматический выбор промо-списания vs стандартного, без кэшбека при промо
- Unit-тесты: 15 тестов (isActivatable + алгоритм промо-списания)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Aleksey Filippov [Wed, 4 Mar 2026 17:39:30 +0000 (17:39 +0000)]
Merge branch 'feature_filippov_20260304_fix_start_shift_step3_bigint' into 'develop'
fix(timetable): guard admin_checkin query against empty bigint fields
See merge request gitlab-instance/yii-erp24!1131
Aleksey Filippov [Wed, 4 Mar 2026 17:37:33 +0000 (20:37 +0300)]
fix(timetable): guard admin_checkin query against empty bigint fields
Prevent PDO exception when StartForm fields are empty strings — add null
check before querying admin_checkin to avoid PostgreSQL bigint cast error.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Aleksey Filippov [Wed, 4 Mar 2026 17:32:45 +0000 (17:32 +0000)]
Merge branch 'feature_filippov_TO8-48_force_readyto_1c_timeout' into 'develop'
fix(TO8-48): increase session timeout to 4h, add JS keep-alive ping
See merge request gitlab-instance/yii-erp24!1130
Aleksey Filippov [Wed, 4 Mar 2026 17:31:25 +0000 (20:31 +0300)]
fix(TO8-48): increase session timeout to 4h, add JS keep-alive ping
Prevent BadRequestHttpException (Unable to verify your data submission)
in WriteOffsErpController caused by PHP session expiry during long form filling.
- erp24/config/web.php: add session component, timeout=14400 (4 hours)
- SiteController: add actionKeepAlive() endpoint for JS ping
- session-keep-alive.js: ping /site/keep-alive every 15 min, pause on hidden tab, skip during upload
- main.php: register session-keep-alive.js globally
Aleksey Filippov [Wed, 4 Mar 2026 08:31:06 +0000 (08:31 +0000)]
Merge branch 'feature_filippov_TO8-48_force_readyto_1c_timeout' into 'develop'
fix(TO8-48): send one summary Telegram message instead of per-order
See merge request gitlab-instance/yii-erp24!1129