From cf432ba3a0df5833e8ca091e305b62702605ba4d Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Mon, 18 Dec 2023 23:23:48 +0300 Subject: [PATCH] add shipment/fields-data2 during pure php movement to yii --- .../shipment/AjaxUpdateFieldsDataAction.php | 12 + .../actions/shipment/AjaxUpdateStepAction.php | 12 + erp24/actions/shipment/FieldsData2Action.php | 12 + erp24/commands/AuthController.php | 156 ++++ erp24/config/console.php | 29 +- erp24/config/dev.console.config.php | 60 ++ erp24/config/prod.console.config.php | 69 ++ erp24/config/web.php | 3 + erp24/controllers/ShipmentController.php | 5 +- erp24/inc/functionsFiedlsData.php | 147 +-- erp24/models/LoginForm.php | 3 +- erp24/rbac/AdminGroupIdRule.php | 16 + erp24/rbac/AdminSelfRule.php | 15 + erp24/scripts/cli.php | 38 + erp24/scripts/dashboard_sales _3.php | 842 ++++++++++++++++++ erp24/scripts/dashboard_sales.php | 13 + erp24/scripts/scheduler.php | 76 ++ erp24/scripts/tasks/task_01.php | 120 +++ .../tasks/task_02_calculate_rating.php | 252 ++++++ .../tasks/task_03_save_change_group.php | 129 +++ .../scripts/tasks/task_04_dashboard_sales.php | 155 ++++ .../task_05_set_retail_price_write_off.php | 123 +++ .../tasks/task_06_set_payroll_by_day.php | 171 ++++ erp24/scripts/tasks/task_07_test.php | 107 +++ ...sk_08_messager_user_subscription_check.php | 145 +++ .../tasks/task_09_contest001_update.php | 166 ++++ erp24/scripts/tasks/task_10_bonus_add.php | 182 ++++ erp24/scripts/tasks/task_11_bonus_dell.php | 159 ++++ .../task_12_api_logs_older_month_dell.php | 100 +++ ...module_notify_obligatory_time_tomorrow.php | 144 +++ erp24/scripts/tasks/task_14_clear_log.php | 147 +++ .../tasks/task_15_bonus_dell_promo.php | 140 +++ .../task_16_1c_request_checks_for_week.php | 102 +++ .../task_17_set_payroll_info_by_month.php | 160 ++++ .../task_18_newsletters_for_non_tg_users.php | 200 +++++ .../tasks/task_19_set_sales_history.php | 145 +++ ...e_500_to_referral_program_participants.php | 165 ++++ ..._21_calculation_company_data_for_chart.php | 123 +++ ...yee_for_1c_with_admins_with_empty_guid.php | 141 +++ ...ion_company_data_for_chart_users_bonus.php | 122 +++ ...culation_company_data_matrix_for_chart.php | 121 +++ ...k_25_delivery_bonus_add_after_half_day.php | 167 ++++ .../task_26_delivery_bonus_add_after_weak.php | 170 ++++ erp24/traits/HistoryModelTrait.php | 105 +++ .../views/shipment/ajax-edit-field-value.php | 3 +- .../shipment/ajax-update-fields-data.php | 38 + erp24/views/shipment/ajax-update-step.php | 634 +++++++++++++ erp24/views/shipment/fields-data2.php | 519 +++++++++++ erp24/views/shipment/index.php | 6 +- 49 files changed, 6582 insertions(+), 87 deletions(-) create mode 100644 erp24/actions/shipment/AjaxUpdateFieldsDataAction.php create mode 100644 erp24/actions/shipment/AjaxUpdateStepAction.php create mode 100644 erp24/actions/shipment/FieldsData2Action.php create mode 100644 erp24/commands/AuthController.php mode change 100644 => 100755 erp24/config/console.php create mode 100755 erp24/config/dev.console.config.php create mode 100755 erp24/config/prod.console.config.php create mode 100644 erp24/rbac/AdminGroupIdRule.php create mode 100644 erp24/rbac/AdminSelfRule.php create mode 100755 erp24/scripts/cli.php create mode 100755 erp24/scripts/dashboard_sales _3.php create mode 100755 erp24/scripts/dashboard_sales.php create mode 100755 erp24/scripts/scheduler.php create mode 100755 erp24/scripts/tasks/task_01.php create mode 100755 erp24/scripts/tasks/task_02_calculate_rating.php create mode 100755 erp24/scripts/tasks/task_03_save_change_group.php create mode 100755 erp24/scripts/tasks/task_04_dashboard_sales.php create mode 100755 erp24/scripts/tasks/task_05_set_retail_price_write_off.php create mode 100755 erp24/scripts/tasks/task_06_set_payroll_by_day.php create mode 100644 erp24/scripts/tasks/task_07_test.php create mode 100644 erp24/scripts/tasks/task_08_messager_user_subscription_check.php create mode 100644 erp24/scripts/tasks/task_09_contest001_update.php create mode 100644 erp24/scripts/tasks/task_10_bonus_add.php create mode 100644 erp24/scripts/tasks/task_11_bonus_dell.php create mode 100644 erp24/scripts/tasks/task_12_api_logs_older_month_dell.php create mode 100644 erp24/scripts/tasks/task_13_study_module_notify_obligatory_time_tomorrow.php create mode 100755 erp24/scripts/tasks/task_14_clear_log.php create mode 100644 erp24/scripts/tasks/task_15_bonus_dell_promo.php create mode 100644 erp24/scripts/tasks/task_16_1c_request_checks_for_week.php create mode 100755 erp24/scripts/tasks/task_17_set_payroll_info_by_month.php create mode 100644 erp24/scripts/tasks/task_18_newsletters_for_non_tg_users.php create mode 100755 erp24/scripts/tasks/task_19_set_sales_history.php create mode 100644 erp24/scripts/tasks/task_20_give_500_to_referral_program_participants.php create mode 100644 erp24/scripts/tasks/task_21_calculation_company_data_for_chart.php create mode 100644 erp24/scripts/tasks/task_22_create_employee_for_1c_with_admins_with_empty_guid.php create mode 100644 erp24/scripts/tasks/task_23_calculation_company_data_for_chart_users_bonus.php create mode 100644 erp24/scripts/tasks/task_24_calculation_company_data_matrix_for_chart.php create mode 100644 erp24/scripts/tasks/task_25_delivery_bonus_add_after_half_day.php create mode 100644 erp24/scripts/tasks/task_26_delivery_bonus_add_after_weak.php create mode 100644 erp24/traits/HistoryModelTrait.php create mode 100644 erp24/views/shipment/ajax-update-fields-data.php create mode 100644 erp24/views/shipment/ajax-update-step.php create mode 100644 erp24/views/shipment/fields-data2.php diff --git a/erp24/actions/shipment/AjaxUpdateFieldsDataAction.php b/erp24/actions/shipment/AjaxUpdateFieldsDataAction.php new file mode 100644 index 00000000..bf3e2f14 --- /dev/null +++ b/erp24/actions/shipment/AjaxUpdateFieldsDataAction.php @@ -0,0 +1,12 @@ +controller->renderPartial('ajax-update-fields-data'); + } +} \ No newline at end of file diff --git a/erp24/actions/shipment/AjaxUpdateStepAction.php b/erp24/actions/shipment/AjaxUpdateStepAction.php new file mode 100644 index 00000000..05dda7a2 --- /dev/null +++ b/erp24/actions/shipment/AjaxUpdateStepAction.php @@ -0,0 +1,12 @@ +controller->renderPartial('ajax-update-step'); + } +} \ No newline at end of file diff --git a/erp24/actions/shipment/FieldsData2Action.php b/erp24/actions/shipment/FieldsData2Action.php new file mode 100644 index 00000000..b3afc224 --- /dev/null +++ b/erp24/actions/shipment/FieldsData2Action.php @@ -0,0 +1,12 @@ +controller->render('fields-data2'); + } +} \ No newline at end of file diff --git a/erp24/commands/AuthController.php b/erp24/commands/AuthController.php new file mode 100644 index 00000000..5dda9e03 --- /dev/null +++ b/erp24/commands/AuthController.php @@ -0,0 +1,156 @@ +cache->get("dirtyAuthSettings") ?? true) { + Yii::$app->cache->set("dirtyAuthSettings", false); + echo "В настройках разрешений есть изменения. Продолжаю выполнение...\n"; + } else { + echo "Нет изменений в настройках разрешений\n"; + return 'ok'; + } + + $auth = Yii::$app->authManager; + $auth->removeAll(); + + $seeAdminSettings = $auth->createPermission('seeAdminSettings'); + $seeAdminSettings->description = 'Видеть настройки пользователя'; + $auth->add($seeAdminSettings); + + $updateAdminSettings = $auth->createPermission('updateAdminSettings'); + $updateAdminSettings->description = 'Редактировать настройки пользователя'; + $auth->add($updateAdminSettings); + + $author = $auth->createRole('author'); + $auth->add($author); + $auth->addChild($author, $seeAdminSettings); + + $updateAdminSettingsOnlyByHrAndAdministrator = $auth->createPermission('updateAdminSettingsOnlyByHrAndAdministrator'); + $updateAdminSettingsOnlyByHrAndAdministrator->description = 'Редактировать настройки пользователя только HR-ом либо Администратором'; + $auth->add($updateAdminSettingsOnlyByHrAndAdministrator); + + $ruleAdminGroupId = new AdminGroupIdRule; + $auth->add($ruleAdminGroupId); + + $updateAdminSettingsGroupId = $auth->createPermission('updateAdminSettingsGroupId'); + $updateAdminSettingsGroupId->description = 'Редактировать должность пользователя'; + $updateAdminSettingsGroupId->ruleName = $ruleAdminGroupId->name; + $auth->add($updateAdminSettingsGroupId); + + $hr = $auth->createRole('hr'); + $auth->add($hr); + + $auth->addChild($hr, $updateAdminSettingsGroupId); + $auth->addChild($hr, $updateAdminSettingsOnlyByHrAndAdministrator); + $auth->addChild($hr, $updateAdminSettings); + $auth->addChild($hr, $author); + + $manageAuthority = $auth->createPermission('manageAuthority'); + $manageAuthority->description = 'Доступ к auth контрллеру'; + $auth->add($manageAuthority); + + $administrator = $auth->createRole('administrator'); + $auth->add($administrator); + $auth->addChild($administrator, $hr); + $auth->addChild($administrator, $manageAuthority); + + $rule = new AdminSelfRule; + $auth->add($rule); + + $updateOwnSettings = $auth->createPermission('updateOwnSettings'); + $updateOwnSettings->description = 'Редактировать собственные настройки'; + $updateOwnSettings->ruleName = $rule->name; + $auth->add($updateOwnSettings); + $auth->addChild($updateOwnSettings, $updateAdminSettings); + $auth->addChild($author, $updateOwnSettings); + + $managePassword = $auth->createPermission('managePassword'); + $managePassword->description = 'Видеть и редактировать пароль'; + $auth->add($managePassword); + $auth->addChild($updateOwnSettings, $managePassword); + $auth->addChild($hr, $managePassword); + + $manageAvatarka = $auth->createPermission('manageAvatarka'); + $manageAvatarka->description = 'Видеть и редактировать avatarka'; + $auth->add($manageAvatarka); + $auth->addChild($updateOwnSettings, $manageAvatarka); + $auth->addChild($hr, $manageAvatarka); + + $permissionList = []; + $adminGroupRbacConfigs = AdminGroupRbacConfig::find()->all(); + $adminGroupRbacConfigsCount = count($adminGroupRbacConfigs); + Console::startProgress(0, $adminGroupRbacConfigsCount); + foreach ($adminGroupRbacConfigs as $ind => $adminGroupRbacConfig) { + Console::updateProgress($ind,$adminGroupRbacConfigsCount); + foreach (explode(',', $adminGroupRbacConfig->config) as $permissionName) { + if ($permissionName != "") { + $roleOrPermission = $auth->getRole($permissionName) ?? $auth->getPermission($permissionName); + if (!in_array($permissionName, $permissionList) && !$roleOrPermission) { + $permission = $auth->createPermission($permissionName); + $auth->add($permission); + $auth->addChild($administrator, $permission); + } else { + $permission = $auth->getPermission($permissionName); + } + foreach (Admin::find()->where(['group_id' => $adminGroupRbacConfig->admin_group_id])->all() as $admin) { + if ($roleOrPermission) { + $auth->assign($roleOrPermission, $admin->id); + } else { + $auth->assign($permission, $admin->id); + } + } + } + } + } + Console::endProgress("end" . PHP_EOL); + + return 'ok'; + } + + public function actionImportMenuPermissions() { + foreach (CrmMenu::find()->all() as $menu) { + foreach (explode(',', $menu->dostup_group) as $group_id) { + if ($group_id != '') { + $adminGroupRbacConfig = AdminGroupRbacConfig::find()->where(['admin_group_id' => $group_id])->one(); + if (!$adminGroupRbacConfig) { + $adminGroupRbacConfig = new AdminGroupRbacConfig; + $adminGroupRbacConfig->admin_group_id = intval($group_id); + $rbac_config = []; + } else { + $rbac_config = explode(',', $adminGroupRbacConfig->config); + if ($rbac_config[0] == '') { + unset($rbac_config[0]); + } + } + $permission = 'menu' . $menu->url; + if (!in_array($permission, $rbac_config)) { + $rbac_config [] = $permission; + } + $adminGroupRbacConfig->config = implode(',', $rbac_config); + $adminGroupRbacConfig->save(); + } + } + } + + echo "Используйте /auth/init чтобы применить импортированные разрешения"; + + return 'ok'; + } +} diff --git a/erp24/config/console.php b/erp24/config/console.php old mode 100644 new mode 100755 index ca429aff..93dbd34f --- a/erp24/config/console.php +++ b/erp24/config/console.php @@ -1,19 +1,29 @@ 'basic-console', 'basePath' => dirname(__DIR__), - 'bootstrap' => ['log'], - 'controllerNamespace' => 'app\commands', + 'bootstrap' => ['log', 'queue'], + 'controllerNamespace' => 'yii_app\commands', 'aliases' => [ '@bower' => '@vendor/bower-asset', '@npm' => '@vendor/npm-asset', '@tests' => '@app/tests', ], 'components' => [ + 'authManager' => [ + 'class' => 'yii\rbac\DbManager', + ], + 'queue' => [ + 'class' => \yii\queue\db\Queue::class, + 'db' => 'db', + 'tableName' => '{{%queue}}', + 'channel' => 'default', + 'mutex' => \yii\mutex\MysqlMutex::class, + ], 'cache' => [ 'class' => 'yii\caching\FileCache', ], @@ -25,16 +35,9 @@ $config = [ ], ], ], - 'db' => $db, - ], - 'params' => $params, - /* - 'controllerMap' => [ - 'fixture' => [ // Fixture generation command line. - 'class' => 'yii\faker\FixtureController', - ], + 'db' => require dirname(__DIR__) . '/config/db.php', + 'db2' => require dirname(__DIR__) . '/config/db2.php', ], - */ ]; if (YII_ENV_DEV) { diff --git a/erp24/config/dev.console.config.php b/erp24/config/dev.console.config.php new file mode 100755 index 00000000..0cd89eac --- /dev/null +++ b/erp24/config/dev.console.config.php @@ -0,0 +1,60 @@ + 'ru', + 'id' => 'app', + 'basePath' => dirname(__DIR__), + 'bootstrap' => ['log'], + 'modules' => [ + 'crud' => [ + 'class' => \yii\base\Module::class, + 'viewPath' => '@yii_app/views/crud', + 'controllerNamespace' => 'yii_app\controllers\crud', + ] + ], + 'components' => [ + 'assetManager' => [ + 'appendTimestamp' => true, + 'basePath' => '@webroot/cache/assets', + 'baseUrl' => '@web/cache/assets', + ], + 'formatter' => [ // fallback if no ext-intl php extension + 'timeZone' => 'Europe/Moscow', + 'defaultTimeZone' => 'Europe/Moscow', + 'dateFormat' => 'php:d.m.Y', + 'datetimeFormat' => 'php:d.m.Y H:i:s', + 'timeFormat' => 'php:H:i', + 'decimalSeparator' => ',', + 'thousandSeparator' => ',', + ], + 'urlManager' => [ + 'enablePrettyUrl' => true, + 'showScriptName' => false, + ], + 'db' => require dirname(__DIR__) . '/config/db.php', + 'db2' => require dirname(__DIR__) . '/config/db2.php', + 'log' => [ + 'traceLevel' => YII_DEBUG ? 3 : 0, + 'targets' => [ + [ + 'class' => 'yii\log\DbTarget', + 'levels' => ['error', 'warning'], + 'logTable' => '{{%error_log}}', + 'except' => [ + 'yii\web\Session:*', // Excludes all session messages + // or + 'yii\web\Session::init', // Exclude only session init + ], + ], + ], + ], + 'cache' => [ + 'class' => \yii\caching\FileCache::class, + ], + ], + 'aliases' => [ + '@bower' => '@vendor/bower-asset', + '@npm' => '@vendor/npm-asset', + '@dist' => '@app/dist', + ], +]; \ No newline at end of file diff --git a/erp24/config/prod.console.config.php b/erp24/config/prod.console.config.php new file mode 100755 index 00000000..0f0ec671 --- /dev/null +++ b/erp24/config/prod.console.config.php @@ -0,0 +1,69 @@ + 'ru', + 'layoutPath' => dirname(__DIR__) . '/layouts', + 'viewPath' => dirname(__DIR__) . '/views', + 'controllerMap' => require __DIR__ . '/controller_map.php', + 'id' => 'app', + 'basePath' => dirname(dirname(__DIR__)), + 'bootstrap' => ['log'], + 'modules' => [ + 'crud' => [ + 'class' => \yii\base\Module::class, + 'viewPath' => '@yii_app/views/crud', + 'controllerNamespace' => 'yii_app\controllers\crud', + ] + ], + 'components' => [ + 'assetManager' => [ + 'appendTimestamp' => true, + 'basePath' => '@webroot/cache/assets', + 'baseUrl' => '@web/cache/assets', + ], + 'formatter' => [ // fallback if no ext-intl php extension + 'timeZone' => 'Europe/Moscow', + 'defaultTimeZone' => 'Europe/Moscow', + 'dateFormat' => 'php:d.m.Y', + 'datetimeFormat' => 'php:d.m.Y H:i:s', + 'timeFormat' => 'php:H:i', + 'decimalSeparator' => ',', + 'thousandSeparator' => ',', + ], + 'urlManager' => [ + 'enablePrettyUrl' => true, + 'showScriptName' => false, + ], + 'db' => [ + 'class' => yii\db\Connection::class, + 'dsn' => strtr('mysql:host={host};dbname={dbname}', [ + '{host}' => getenv('DB_HOST') ?: $_CONFIG_SITE["mysql_host"], + '{dbname}' => getenv('DB_SCHEMA') ?: $_CONFIG_SITE["mysql_db"], + ]), + 'username' => getenv('DB_USER') ?: $_CONFIG_SITE["mysql_user"], + 'password' => getenv('DB_PASSWORD') ?: $_CONFIG_SITE["mysql_pass"], + 'charset' => 'utf8', + 'enableSchemaCache' => true, + 'schemaCacheDuration' => 300, + ], + 'db2' => require dirname(__DIR__) . '/config/db2.php', + 'log' => [ + 'traceLevel' => YII_DEBUG ? 3 : 0, + 'targets' => [ + [ + 'class' => 'yii\log\DbTarget', + 'levels' => ['error', 'warning'], + 'logTable' => '{{%error_log}}', + ], + ], + ], + 'cache' => [ + 'class' => \yii\caching\FileCache::class, + ], + ], + 'aliases' => [ + '@bower' => '@vendor/bower-asset', + '@npm' => '@vendor/npm-asset', + '@dist' => '@app/dist', + ], +]; \ No newline at end of file diff --git a/erp24/config/web.php b/erp24/config/web.php index 32396d0f..a75924cb 100644 --- a/erp24/config/web.php +++ b/erp24/config/web.php @@ -19,6 +19,9 @@ $config = [ ] ], 'components' => [ + 'authManager' => [ + 'class' => 'yii\rbac\DbManager', + ], 'request' => [ 'scriptUrl' => '/', // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation diff --git a/erp24/controllers/ShipmentController.php b/erp24/controllers/ShipmentController.php index 4f66abb2..b15e9906 100755 --- a/erp24/controllers/ShipmentController.php +++ b/erp24/controllers/ShipmentController.php @@ -15,6 +15,10 @@ class ShipmentController extends \yii\web\Controller 'division' => \yii_app\actions\shipment\DivisionAction::class, 'ajax-division' => \yii_app\actions\shipment\AjaxDivisionAction::class, 'ajax-admin-online' => \yii_app\actions\shipment\AjaxAdminOnlineAction::class, + 'fields-data2' => \yii_app\actions\shipment\FieldsData2Action::class, + 'ajax-update-fields-data' => \yii_app\actions\shipment\AjaxUpdateFieldsDataAction::class, + 'ajax-update-step' => \yii_app\actions\shipment\AjaxUpdateStepAction::class, + 'ajax-edit-field-value' => \yii_app\actions\shipment\AjaxEditFieldValueAction::class, 'fields-data' => \yii_app\actions\shipment\FieldsDataAction::class, 'ajax-update-fields-data-test' => \yii_app\actions\shipment\AjaxUpdateFieldsDataTestAction::class, 'division-print-edit' => \yii_app\actions\shipment\DivisionPrintEditAction::class, @@ -22,7 +26,6 @@ class ShipmentController extends \yii\web\Controller 'store-products-fact' => \yii_app\actions\shipment\StoreProductsFactAction::class, 'polnogramm' => \yii_app\actions\shipment\PolnogrammAction::class, 'store-planogram-logi' => \yii_app\actions\shipment\StorePlanogramLogiAction::class, - 'ajaxEditFieldValue' => \yii_app\actions\shipment\AjaxEditFieldValueAction::class, ]; } diff --git a/erp24/inc/functionsFiedlsData.php b/erp24/inc/functionsFiedlsData.php index ede248e1..14cde170 100644 --- a/erp24/inc/functionsFiedlsData.php +++ b/erp24/inc/functionsFiedlsData.php @@ -1,5 +1,7 @@ $arrs) { $dostup_fields[$fieldid]=$arrs["dostup"]; @@ -810,6 +813,8 @@ table.zak tr.zg th b,table.zak tr.zg td b { "; + +$_CONFIG["jscss"] .=' + '; + + + + + +include_once dirname(__DIR__, 2) . '/templates/bottom_light.php'; + + + + + diff --git a/erp24/views/shipment/index.php b/erp24/views/shipment/index.php index ffa5b3e4..eb1a9c77 100755 --- a/erp24/views/shipment/index.php +++ b/erp24/views/shipment/index.php @@ -54,7 +54,7 @@ foreach($storeOrders as $row) { ">правка /view/?id=>старый интерфейс /view2/?id=>новый интерфейс - /fields-data/?id= >новый интерфейс2 + >новый интерфейс2 >деление /purchase/?id=>цвета для кустовых при заказе @@ -90,8 +90,8 @@ foreach($storeOrders as $row) { ">правка /view/?id=>старый интерфейс /view2/?id=>новый интерфейс - /fields-data/?id= >новый интерфейс2 - /division/?id=>деление + >новый интерфейс2 + >деление /purchase/?id=>цвета для кустовых при заказе /divisionPrint/?id=>деление - печать на складе /divisionPrintEdit/?id=>деление - по цветам -- 2.39.5