From: fomichev Date: Wed, 3 Jun 2026 09:43:40 +0000 (+0300) Subject: ERP-397: фикс пустых дропдаунов руководства и актуализация комбо после сохранения X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=8965b367c189641fdb9e9ea27f7f92fbb939623e;p=erp24_rep%2Fyii-erp24%2F.git ERP-397: фикс пустых дропдаунов руководства и актуализация комбо после сохранения - Контроллер: дропдауны КШФ и тер.управляющего всегда включают текущего назначенного сотрудника (orWhere id), даже если его group_id изменился - JS: после сохранения перезагружаем STORES с сервера вместо ручного патча, чтобы комбо-список гарантированно отражал актуальный статус из БД Co-Authored-By: Claude Sonnet 4.6 --- diff --git a/erp24/controllers/CityStoreManagementController.php b/erp24/controllers/CityStoreManagementController.php index e4b0e817..85b0bef2 100644 --- a/erp24/controllers/CityStoreManagementController.php +++ b/erp24/controllers/CityStoreManagementController.php @@ -165,8 +165,20 @@ class CityStoreManagementController extends Controller 'cityArray' => ArrayHelper::map(StoreCityList::findAll(['type' => StoreCityList::TYPE_CITY]), 'id', 'name'), 'districtArray' => ArrayHelper::map(StoreCityList::findAll(['type' => StoreCityList::TYPE_DISTRICT]), 'id', 'name'), 'matrixTypeArray' => ArrayHelper::map(MatrixType::find()->all(), 'id', 'name'), - 'bushChefFloristArray' => ArrayHelper::map(Admin::findAll(['group_id' => AdminGroup::GROUP_BUSH_CHEF_FLORIST]), 'id', 'name'), - 'territorialManagerArray' => ArrayHelper::map(Admin::findAll(['group_id' => AdminGroup::GROUP_BUSH_DIRECTOR]), 'id', 'name_full'), + 'bushChefFloristArray' => (static function () use ($bushChefFloristDyn): array { + $q = Admin::find()->where(['group_id' => AdminGroup::GROUP_BUSH_CHEF_FLORIST]); + if ($bushChefFloristDyn?->value_int) { + $q->orWhere(['id' => $bushChefFloristDyn->value_int]); + } + return ArrayHelper::map($q->orderBy(['name' => SORT_ASC])->all(), 'id', 'name'); + })(), + 'territorialManagerArray' => (static function () use ($terrManagerDyn): array { + $q = Admin::find()->where(['group_id' => AdminGroup::GROUP_BUSH_DIRECTOR]); + if ($terrManagerDyn?->value_int) { + $q->orWhere(['id' => $terrManagerDyn->value_int]); + } + return ArrayHelper::map($q->orderBy(['name_full' => SORT_ASC])->all(), 'id', 'name_full'); + })(), // assortment labels (StoreDynamic category 5) 'labelIds' => $labelIds, diff --git a/erp24/web/js/city-store-management/city-store-management.js b/erp24/web/js/city-store-management/city-store-management.js index 6d4db81b..4b869fdf 100644 --- a/erp24/web/js/city-store-management/city-store-management.js +++ b/erp24/web/js/city-store-management/city-store-management.js @@ -543,13 +543,16 @@ function saveChanges() { if (allOk) { toast('Сохранено', 'ok'); clearDirty(); - var si = STORES.findIndex(function (s) { return s.id === D.id; }); - if (si !== -1) { - STORES[si].isActive = !!csParams.is_active; - STORES[si].name = csStore.name || STORES[si].name; - } - renderComboList(document.getElementById('storeSearchInput').value || ''); - loadStore(D.id); + var savedId = D.id; + fetch(CSM_URLS.getStores) + .then(function (r) { return r.json(); }) + .then(function (resp) { + if (resp.success) { + STORES = resp.data; + renderComboList(document.getElementById('storeSearchInput').value || ''); + } + }); + loadStore(savedId); } else { var errs = results.filter(function (r) { return r && !r.success; }).map(function (r) { return r.message; }).join('; '); toast('Ошибка: ' + errs, 'err');