From: marina Date: Tue, 17 Dec 2024 11:29:54 +0000 (+0300) Subject: ERP-259 Доработка второго шага передачи смен X-Git-Tag: 1.7~156^2~2 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=313eebcb65a68296f269f047b325e4e99e34b6ad;p=erp24_rep%2Fyii-erp24%2F.git ERP-259 Доработка второго шага передачи смен --- diff --git a/erp24/records/EqualizationRemains.php b/erp24/records/EqualizationRemains.php index 240797ec..e191d9cf 100644 --- a/erp24/records/EqualizationRemains.php +++ b/erp24/records/EqualizationRemains.php @@ -31,6 +31,7 @@ use yii\helpers\ArrayHelper; */ class EqualizationRemains extends \yii\db\ActiveRecord { + /** * {@inheritdoc} */ diff --git a/erp24/views/shift-transfer/_replacement.php b/erp24/views/shift-transfer/_replacement.php index 69ed6106..cec108e4 100644 --- a/erp24/views/shift-transfer/_replacement.php +++ b/erp24/views/shift-transfer/_replacement.php @@ -17,6 +17,9 @@ use yii\widgets\ActiveForm; /* @var $isAcceptance bool */ /* @var $products array */ + +global $save; +$save = true; $this->registerJsFile('/js/shift-transfer/replacement.js', ['position' => \yii\web\View::POS_END]); $totalBalance = array_sum(array_column($shiftTransfer->equalizationRemains, 'balance')); @@ -26,7 +29,7 @@ $incomingBalance = \yii_app\records\WaybillIncoming::findOne(['shift_transfer_id $form = \yii\widgets\ActiveForm::begin(); ?>
- 'h4 font-weight-bold']); ?> + 'h4 font-weight-bold', 'id' => 'equalization-remains-label']); ?>
@@ -122,7 +125,6 @@ if (in_array($shiftTransfer->status_id, [ShiftTransfer::STATUS_ID_TRANSFER_ACTIO } return ''; }, - ], [ 'name' => 'product_replacement_price', @@ -251,6 +253,32 @@ if (in_array($shiftTransfer->status_id, [ShiftTransfer::STATUS_ID_TRANSFER_ACTIO } ], ], + 'rowOptions' => function ($model) use ($save) { + global $save; + $productCount = \yii_app\records\ShiftRemains::find() + ->andWhere(['product_guid' => $model->product_id]) + ->andWhere(['shift_transfer_id' => $model->shift_transfer_id]) + ->select('fact_and_1c_diff') + ->scalar(); + + $sum = \yii_app\records\EqualizationRemains::find() + ->andWhere(['shift_transfer_id' => $model->shift_transfer_id]) + ->andWhere(['product_id' => $model->product_id]) + ->select(['sum(product_replacement_count)']) + ->scalar(); + + Yii::info("Product count: $productCount, Sum: $sum", __METHOD__); + + $class = ''; + + if ($sum > abs($productCount)) { + $save = false; + $class = 'bg-danger'; + } + + return ['class' => $class]; + }, + 'id' => 'equalization_remains_table', 'showPageSummary' => true, 'layout' => '{items}', ]); @@ -350,11 +378,16 @@ if (in_array($shiftTransfer->status_id, [ShiftTransfer::STATUS_ID_TRANSFER_ACTIO 'class' => 'btn btn-primary float-right', 'name' => 'action', 'value' => 'rejection' - ]) . '  ' . Html::submitButton('Сохранить', [ - 'class' => 'btn btn-success float-right', - 'name' => 'action', - 'value' => 'save' ]); + if ($save) { + echo '  ' . Html::submitButton('Сохранить', [ + 'class' => 'btn btn-success float-right', + 'name' => 'action', + 'value' => 'save' + ]); + } else { + echo '  ' . Html::button('Выбрано цветков на замену больше чем нужно! Перепроверьте таблицу замен!', ['class' => 'btn btn-danger', 'onclick' => 'getElementById(\'equalization-remains-label\').scrollIntoView()']); + } } if ( diff --git a/erp24/web/js/shift-transfer/replacement.js b/erp24/web/js/shift-transfer/replacement.js index e8682129..1e15c059 100644 --- a/erp24/web/js/shift-transfer/replacement.js +++ b/erp24/web/js/shift-transfer/replacement.js @@ -69,7 +69,6 @@ function setProductData() { }); } -// Функция для очистки всех полей в строке function clearFields($this) { const index = $this.closest('tr').data('index'); console.log('Clearing fields for index:', index); @@ -226,7 +225,6 @@ function setDynamicMaxValue(inputElement, rowId) { return; } - var productReplacementName = $('#shifttransfer-equalizationremains-' + rowId + '-product_id').val(); var productName = $('#shifttransfer-equalizationremains-' + rowId + '-product_replacement_id').val(); var shiftTransferId = getUrlParameter('id'); @@ -275,3 +273,4 @@ $(window).on('load', function () { }); +