From 091f62f23605249f4b4dca9eee75b4a3884c3bf8 Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Fri, 29 Nov 2024 21:10:31 +0300 Subject: [PATCH] =?utf8?q?[ERP-242]=20=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD?= =?utf8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=81=D1=82=D0=B0=D1=82=D0=BA?= =?utf8?q?=D0=BE=D0=B2=20=D0=BF=D1=80=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5?= =?utf8?q?=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B5=20=D0=BD=D0=B5?= =?utf8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D1=8C=D0=BD=D0=BE=D0=B9=20?= =?utf8?q?=D1=84=D0=BE=D1=80=D0=BC=D1=8B=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4?= =?utf8?q?=D0=B0=D1=87=D0=B8=20=D1=81=D0=BC=D0=B5=D0=BD=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/controllers/ShiftTransferController.php | 52 +++++++++++++------ erp24/records/ShiftTransfer.php | 2 + erp24/views/shift-transfer/update.php | 21 ++------ erp24/web/js/shift-transfer/update.js | 42 +++++++-------- 4 files changed, 62 insertions(+), 55 deletions(-) diff --git a/erp24/controllers/ShiftTransferController.php b/erp24/controllers/ShiftTransferController.php index e475929c..ddf2a97d 100644 --- a/erp24/controllers/ShiftTransferController.php +++ b/erp24/controllers/ShiftTransferController.php @@ -50,6 +50,8 @@ class ShiftTransferController extends Controller public function actionCreate() { $shiftTransfer = new ShiftTransfer; + $shiftTransfer->date = date('Y-m-d H:i:s'); + $shiftTransfer->date_start = $shiftTransfer->date; $isCreate = true; @@ -67,25 +69,41 @@ class ShiftTransferController extends Controller if (!$shiftTransfer) { $shiftTransfer = new ShiftTransfer; } - if ($shiftTransfer->load(Yii::$app->request->post()) && $shiftTransfer->validate()) { - $shiftTransfer->save(); - ShiftRemains::deleteAll(['shift_transfer_id' => $shiftTransfer->id]); - $modelsShiftRemains = MultipleModel::createMultipleModel(ShiftRemains::class, - 'ShiftTransfer', 'shiftRemains'); + + $loadDataShiftRemains = null; + + if ($shiftTransfer->load(Yii::$app->request->post())) { $postShiftTransfer = Yii::$app->request->post('ShiftTransfer'); - $loadDataShiftRemains = ArrayHelper::getValue($postShiftTransfer, 'shiftRemains'); - if (!empty($loadDataShiftRemains)) { - MultipleModel::loadMultipleFromArray($modelsShiftRemains, $loadDataShiftRemains , '',[]); - } - foreach ($modelsShiftRemains as $modelsShiftRemain) { - $modelsShiftRemain->shift_transfer_id = $shiftTransfer->id; - if ($modelsShiftRemain->validate()) { - $modelsShiftRemain->save(); - } else { - var_dump($modelsShiftRemain->getErrors()); die; + $loadDataShiftRemains = ArrayHelper::getValue($postShiftTransfer, 'shiftRemainsCopy'); + + if ($shiftTransfer->id || ($shiftTransfer->validate() && $shiftTransfer->save())) { + ShiftRemains::deleteAll(['shift_transfer_id' => $shiftTransfer->id]); + $modelsShiftRemains = MultipleModel::createMultipleModel(ShiftRemains::class, + 'ShiftTransfer', 'shiftRemainsCopy'); + if (!empty($loadDataShiftRemains)) { + MultipleModel::loadMultipleFromArray($modelsShiftRemains, $loadDataShiftRemains, '', []); + } + + foreach ($modelsShiftRemains as $modelsShiftRemain) { + $modelsShiftRemain->shift_transfer_id = $shiftTransfer->id; + if ($modelsShiftRemain->validate()) { + $modelsShiftRemain->save(); + } else { + var_dump($modelsShiftRemain->getErrors()); + die; + } + } + + if ($shiftTransfer->validate()) { + $shiftTransfer->goods_transfer_summ = array_sum(ArrayHelper::getColumn($shiftTransfer->shiftRemains, 'remains_summ')); + $shiftTransfer->goods_transfer_count = array_sum(ArrayHelper::getColumn($shiftTransfer->shiftRemains, 'remains_count')); + $shiftTransfer->discrepancy_pieces = array_sum(ArrayHelper::getColumn($shiftTransfer->shiftRemains, 'fact_and_1c_diff')); + $shiftTransfer->discrepancy_rubles = array_sum(ArrayHelper::getColumn($shiftTransfer->shiftRemains, 'remains_1c')); + $shiftTransfer->save(); + + return $this->redirect(['/shift-transfer/view', 'id' => $shiftTransfer->id]); } } - return $this->redirect(['/shift-transfer/view', 'id' => $shiftTransfer->id]); } $isCreate = false; @@ -94,6 +112,8 @@ class ShiftTransferController extends Controller $admins = self::getAdminsWithDrugieLast(); + $shiftTransfer->shiftRemainsCopy = $loadDataShiftRemains ?? $shiftTransfer->shiftRemains; + return $this->render('update', compact('shiftTransfer', 'isCreate', 'storeNameById', 'admins')); } diff --git a/erp24/records/ShiftTransfer.php b/erp24/records/ShiftTransfer.php index 49589dc9..94d64916 100644 --- a/erp24/records/ShiftTransfer.php +++ b/erp24/records/ShiftTransfer.php @@ -24,6 +24,8 @@ use Yii; */ class ShiftTransfer extends \yii\db\ActiveRecord { + public $shiftRemainsCopy; + const STATUS_ID_INPUT_FACT_REMAINS = 1; const STATUS_ID_TRANSFER_ACTIONS = 2; const STATUS_ID_READY_TO_ACCEPT = 3; diff --git a/erp24/views/shift-transfer/update.php b/erp24/views/shift-transfer/update.php index 4d76d82c..9645166b 100644 --- a/erp24/views/shift-transfer/update.php +++ b/erp24/views/shift-transfer/update.php @@ -115,22 +115,7 @@ $this->registerCss(' ]) ?> -
-
- field($shiftTransfer, 'goods_transfer_summ')->textInput(['type' => 'number', 'step' => 0.01]) ?> -
-
- field($shiftTransfer, 'goods_transfer_count')->textInput(['type' => 'number', 'step' => 0.01]) ?> -
-
-
-
- field($shiftTransfer, 'discrepancy_pieces')->textInput(['type' => 'number', 'step' => 0.01]) ?> -
-
- field($shiftTransfer, 'discrepancy_rubles')->textInput(['type' => 'number', 'step' => 0.01]) ?> -
-
+
field($shiftTransfer, 'comment')->textarea(['rows' => 6]) ?> @@ -142,7 +127,7 @@ $this->registerCss('
- field($shiftTransfer, 'shiftRemains')->widget(MultipleInput::class, [ + field($shiftTransfer, 'shiftRemainsCopy')->widget(MultipleInput::class, [ 'min' => 0, 'max' => 100, 'columns' => [ @@ -152,7 +137,7 @@ $this->registerCss(' 'type' => Select2::class, 'options' => [ 'data' => ArrayHelper::map(Products1c::find()->select(['id', 'name']) - ->where(['tip' => 'products'])->all(), 'id', 'name'), + ->where(['tip' => 'products'])->orderBy(['name' => SORT_ASC])->all(), 'id', 'name'), ], 'value' => function($data) { return $data['product_guid'] ?? ''; diff --git a/erp24/web/js/shift-transfer/update.js b/erp24/web/js/shift-transfer/update.js index 943948f6..401cab2e 100644 --- a/erp24/web/js/shift-transfer/update.js +++ b/erp24/web/js/shift-transfer/update.js @@ -5,22 +5,22 @@ const param24 = $('meta[name=csrf-param]').attr('content'); const token24 = $('meta[name=csrf-token]').attr('content'); function checkInputRow(currentIndex, row, errorContainer) { - const groupLabel = $(row).find('#shifttransfer-shiftremains-' + currentIndex + '-group_label'); - const productGuid = $(row).find('#shifttransfer-shiftremains-' + currentIndex + '-product_guid'); - const productName = $(row).find('#select2-shifttransfer-shiftremains-' + currentIndex + '-product_guid-container').text(); - const retailPrice = $(row).find('#shifttransfer-shiftremains-' + currentIndex + '-retail_price'); - const selfCost = $(row).find('#shifttransfer-shiftremains-' + currentIndex + '-self_cost'); - const remains1c = $(row).find('#shifttransfer-shiftremains-' + currentIndex + '-remains_1c'); - const remains_summ = $(row).find('#shifttransfer-shiftremains-' + currentIndex + '-remains_summ'); - const remains_count = $(row).find('#shifttransfer-shiftremains-' + currentIndex + '-remains_count'); - const fact_and_1c_diff = $(row).find('#shifttransfer-shiftremains-' + currentIndex + '-fact_and_1c_diff'); + const productGuid = $(row).find('#shifttransfer-shiftremainscopy-' + currentIndex + '-product_guid'); + const productName = $(row).find('#select2-shifttransfer-shiftremainscopy-' + currentIndex + '-product_guid-container').text(); + const groupLabel = $(row).find('#shifttransfer-shiftremainscopy-' + currentIndex + '-group_label'); + const retailPrice = $(row).find('#shifttransfer-shiftremainscopy-' + currentIndex + '-retail_price'); + const selfCost = $(row).find('#shifttransfer-shiftremainscopy-' + currentIndex + '-self_cost'); + const remains1c = $(row).find('#shifttransfer-shiftremainscopy-' + currentIndex + '-remains_1c'); + const remains_summ = $(row).find('#shifttransfer-shiftremainscopy-' + currentIndex + '-remains_summ'); + const remains_count = $(row).find('#shifttransfer-shiftremainscopy-' + currentIndex + '-remains_count'); + const fact_and_1c_diff = $(row).find('#shifttransfer-shiftremainscopy-' + currentIndex + '-fact_and_1c_diff'); function checkField(field, currentIndex, productName, msg, errorContainer) { - if (field.val() === '') { errorContainer.push(msg + ' Продукт: ' + productName + ' Строка: ' + (currentIndex + 1)); return false; } + if (field.val() === '') { errorContainer.push(msg + ' Продукт: ' + productName + ' Строка: ' + currentIndex ); return false; } return true; } - return checkField(groupLabel, currentIndex, productName, 'Пустое название группы.', errorContainer) && - checkField(productGuid, currentIndex, productName, 'Не выбран продукт.', errorContainer) && + return checkField(productGuid, currentIndex, productName, 'Не выбран продукт.', errorContainer) && + checkField(groupLabel, currentIndex, productName, 'Пустое название группы.', errorContainer) && checkField(retailPrice, currentIndex, productName, 'Не назначена розничная цена.', errorContainer) && checkField(selfCost, currentIndex, productName, 'Отсутствует себестоимость.', errorContainer) && checkField(remains1c, currentIndex, productName, 'Отсутствует информация об остатках в 1с.', errorContainer) && @@ -34,7 +34,7 @@ function checkInputs() { let noError = true; const errorContainer = []; for (let currentIndex = 0; currentIndex < rows.length; currentIndex++) { - noError = checkInputRow(currentIndex, rows[currentIndex], errorContainer) && noError; + noError = checkInputRow(currentIndex + 1, rows[currentIndex], errorContainer) && noError; } if (errorContainer.length > 0) { alert(errorContainer.join('\n')); @@ -44,14 +44,14 @@ function checkInputs() { function setMultipleInputHandlers(currentIndex, row) { const store = $('#shifttransfer-store_guid'); - const groupLabel = $(row).find('#shifttransfer-shiftremains-' + currentIndex + '-group_label'); - const productGuid = $(row).find('#shifttransfer-shiftremains-' + currentIndex + '-product_guid'); - const retailPrice = $(row).find('#shifttransfer-shiftremains-' + currentIndex + '-retail_price'); - const selfCost = $(row).find('#shifttransfer-shiftremains-' + currentIndex + '-self_cost'); - const remains1c = $(row).find('#shifttransfer-shiftremains-' + currentIndex + '-remains_1c'); - const remains_summ = $(row).find('#shifttransfer-shiftremains-' + currentIndex + '-remains_summ'); - const remains_count = $(row).find('#shifttransfer-shiftremains-' + currentIndex + '-remains_count'); - const fact_and_1c_diff = $(row).find('#shifttransfer-shiftremains-' + currentIndex + '-fact_and_1c_diff'); + const groupLabel = $(row).find('#shifttransfer-shiftremainscopy-' + currentIndex + '-group_label'); + const productGuid = $(row).find('#shifttransfer-shiftremainscopy-' + currentIndex + '-product_guid'); + const retailPrice = $(row).find('#shifttransfer-shiftremainscopy-' + currentIndex + '-retail_price'); + const selfCost = $(row).find('#shifttransfer-shiftremainscopy-' + currentIndex + '-self_cost'); + const remains1c = $(row).find('#shifttransfer-shiftremainscopy-' + currentIndex + '-remains_1c'); + const remains_summ = $(row).find('#shifttransfer-shiftremainscopy-' + currentIndex + '-remains_summ'); + const remains_count = $(row).find('#shifttransfer-shiftremainscopy-' + currentIndex + '-remains_count'); + const fact_and_1c_diff = $(row).find('#shifttransfer-shiftremainscopy-' + currentIndex + '-fact_and_1c_diff'); function onChangeTarget() { fact_and_1c_diff.val(remains_count.val() - remains1c.val()); -- 2.39.5