From: marina Date: Tue, 25 Feb 2025 09:05:37 +0000 (+0300) Subject: ERP-302 Редактирование букета X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=7eee7d17217194fc3945e8ec60c3b35d612a3864;p=erp24_rep%2Fyii-erp24%2F.git ERP-302 Редактирование букета --- diff --git a/erp24/controllers/BouquetController.php b/erp24/controllers/BouquetController.php index 7a3d3b3b..1fc8e771 100644 --- a/erp24/controllers/BouquetController.php +++ b/erp24/controllers/BouquetController.php @@ -4,6 +4,7 @@ namespace app\controllers; use Exception; use Yii; +use yii\db\Expression; use yii\helpers\Url; use yii\web\Controller; use yii\web\NotFoundHttpException; @@ -15,7 +16,8 @@ use yii_app\records\{BouquetComposition, CityStore, Files, MatrixType, - StoreType}; + StoreType, + WriteOffsErp}; class BouquetController extends Controller { @@ -171,6 +173,20 @@ class BouquetController extends Controller 'marketplace' => $marketplaceList, ]; } + public function actionConfirm(int $id): \yii\web\Response + { + $model = BouquetComposition::findOne($id) ?? throw new NotFoundHttpException('Букет не найден'); + $model->updateAttributes([ + 'status' => WriteOffsErp::STATUS_CONFIRM, + 'date_confirm' => new Expression('NOW()'), + 'admin_confirm' => Yii::$app->user->id, + ]); + if ($model->errors) { + Yii::$app->session->setFlash('error', 'Ошибка подтверждения букета: ' . implode(' ', $model->getErrors())); + } + + return $this->redirect(Yii::$app->request->referrer); + } } \ No newline at end of file diff --git a/erp24/migrations/m250225_081920_add_1c_columns.php b/erp24/migrations/m250225_081920_add_1c_columns.php new file mode 100644 index 00000000..ea49edac --- /dev/null +++ b/erp24/migrations/m250225_081920_add_1c_columns.php @@ -0,0 +1,45 @@ +db->schema->getTableSchema($table, true)->getColumn('date_confirm')) { + $this->addColumn($table, 'date_confirm', $this->dateTime()); + } + if (!$this->db->schema->getTableSchema($table, true)->getColumn('date_1c_send')) { + $this->addColumn($table, 'date_1c_send', $this->dateTime()); + } + if (!$this->db->schema->getTableSchema($table, true)->getColumn('admin_confirm')) { + $this->addColumn($table, 'admin_confirm', $this->integer()); + } + if (!$this->db->schema->getTableSchema($table, true)->getColumn('status')) { + $this->addColumn($table, 'status', $this->integer()); + } + } + + public function safeDown() + { + $table = 'erp24.bouquet_composition'; + + if ($this->db->schema->getTableSchema($table, true)->getColumn('date_confirm')) { + $this->dropColumn($table, 'date_confirm'); + } + if ($this->db->schema->getTableSchema($table, true)->getColumn('date_1c_send')) { + $this->dropColumn($table, 'date_1c_send'); + } + if ($this->db->schema->getTableSchema($table, true)->getColumn('admin_confirm')) { + $this->dropColumn($table, 'admin_confirm'); + } + if ($this->db->schema->getTableSchema($table, true)->getColumn('status')) { + $this->dropColumn($table, 'status'); + } + } +} diff --git a/erp24/records/BouquetComposition.php b/erp24/records/BouquetComposition.php index fceb1aa3..1987d9e0 100644 --- a/erp24/records/BouquetComposition.php +++ b/erp24/records/BouquetComposition.php @@ -79,10 +79,9 @@ class BouquetComposition extends ActiveRecord public function rules(): array { return [ - [['matrix_type_id'], 'required', 'message' => 'Поле "Тип Матрицы" не может быть пустым'], - [['name'], 'required', 'message' => 'Поле "Название" не может быть пустым'], - [['created_by', 'updated_by'], 'integer', 'message' => '{attribute} должен быть целым числом'], - [['created_at', 'updated_at'], 'safe'], + [['name', 'matrix_type_id', 'status'], 'required', 'message' => 'Поле {attribute} не может быть пустым'], + [['created_by', 'updated_by', 'status', 'date_1c_send', 'date_confirm'], 'integer', 'message' => '{attribute} должен быть целым числом'], + [['created_at', 'updated_at', 'admin_confirm'], 'safe'], [['guid', 'name'], 'string', 'max' => 255, 'tooLong' => '{attribute} не должен превышать 255 символов'], [['photo_bouquet'], 'file', 'extensions' => 'jpg, jpeg, png, gif', diff --git a/erp24/records/WriteOffsErp.php b/erp24/records/WriteOffsErp.php index 77b135ac..007aa410 100644 --- a/erp24/records/WriteOffsErp.php +++ b/erp24/records/WriteOffsErp.php @@ -123,7 +123,7 @@ class WriteOffsErp extends \yii\db\ActiveRecord const WRITE_OFFS_TYPE_DUE_TO_EQUIPMENT_FAILURE_BRAK = 'Брак из-за поломки оборудования'; const WRITE_OFFS_TYPE_RESORTING_DOES_NOT_COUNT_TOWARDS_COST = 'Пересорт, не идет в затраты'; - const STATUSES = [ + public const STATUSES = [ self::STATUS_CREATED => "Создан", self::STATUS_CONFIRM => "Одобрен", self::STATUS_SEND => "Отправлен в 1С", diff --git a/erp24/views/bouquet/_form.php b/erp24/views/bouquet/_form.php index f047b175..06bd9d96 100644 --- a/erp24/views/bouquet/_form.php +++ b/erp24/views/bouquet/_form.php @@ -8,6 +8,7 @@ use yii\helpers\Url; use yii\widgets\ActiveForm; use yii_app\records\BouquetComposition; use yii_app\records\MatrixType; +use yii_app\records\WriteOffsErp; /** @var yii\web\View $this */ @@ -82,6 +83,23 @@ $form = ActiveForm::begin([ Редактировать + +
+ + + status ? \yii_app\records\WriteOffsErp::STATUSES[$model->status] : null) ?> + + +
diff --git a/erp24/views/bouquet/_product_list.php b/erp24/views/bouquet/_product_list.php index dd5c89d3..b0c3c511 100644 --- a/erp24/views/bouquet/_product_list.php +++ b/erp24/views/bouquet/_product_list.php @@ -13,6 +13,7 @@ use yii\helpers\Url; use yii_app\records\BouquetComposition; use yii_app\records\BouquetCompositionProducts; + use yii_app\records\WriteOffsErp; foreach ($bouquetCompositionProducts as $product) { ?>
@@ -40,4 +41,10 @@ 'class' => 'btn btn-warning btn-edit w-100' . ($model && !BouquetComposition::disabledButtons() ? '' : ' disabled') ]) ?>
-
\ No newline at end of file + +
+ $model->id]), [ + 'class' => 'btn btn-success btn-edit w-100 mt-4' . + (($model && !empty($model->getBouquetCompositionProducts()) && $model->status == WriteOffsErp::STATUS_CREATED) ? '' : ' disabled') + ]) ?> +