From: marina Date: Tue, 10 Dec 2024 12:31:08 +0000 (+0300) Subject: ERP-259 Доработка второго шага передачи смен X-Git-Tag: 1.7~180^2~2 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=6849de56de83421d15a96caa3f33e313ca23e033;p=erp24_rep%2Fyii-erp24%2F.git ERP-259 Доработка второго шага передачи смен --- diff --git a/erp24/controllers/ShiftTransferController.php b/erp24/controllers/ShiftTransferController.php index 413c643d..8e2bb167 100644 --- a/erp24/controllers/ShiftTransferController.php +++ b/erp24/controllers/ShiftTransferController.php @@ -363,4 +363,22 @@ class ShiftTransferController extends Controller return Json::encode($data); } + + public function actionGetMaxQuantity(string $productName, int $shiftTransferId) + { + \Yii::$app->response->format = Response::FORMAT_JSON; + + $product = Products1c::findOne(['name' => $productName]); + + if ($product) { + $shiftRemain = ShiftRemains::findOne(['shift_transfer_id' => $shiftTransferId, 'product_guid' => $product->id]); + + if ($shiftRemain) { + return [ + 'maxValue' => $shiftRemain->fact_and_1c_diff ?? 0, + ]; + + } + } + } } diff --git a/erp24/records/EqualizationRemains.php b/erp24/records/EqualizationRemains.php index 9fb60da6..39c490d3 100644 --- a/erp24/records/EqualizationRemains.php +++ b/erp24/records/EqualizationRemains.php @@ -107,7 +107,7 @@ class EqualizationRemains extends \yii\db\ActiveRecord foreach ($equalizationRemains as $er) { $equalizationRemain = new EqualizationRemains(); $equalizationRemain->setAttributes([ - 'shift_id' => $shift_transfer_id, + 'shift_transfer_id' => $shift_transfer_id, 'product_id' => $er['product_id'], 'product_count' => $er['product_replacement_count'], 'product_price' => $er['product_price'], @@ -131,7 +131,7 @@ class EqualizationRemains extends \yii\db\ActiveRecord public static function setData($shiftTransfer) { - EqualizationRemains::deleteAll(['shift_id' => $shiftTransfer->id]); + EqualizationRemains::deleteAll(['shift_transfer_id' => $shiftTransfer->id]); $plus = ShiftRemains::find() ->where(['shift_transfer_id' => $shiftTransfer->id]) @@ -173,8 +173,8 @@ class EqualizationRemains extends \yii\db\ActiveRecord foreach ($intersect as $key => $item) { $eqRemains = self::find() ->select(['SUM(product_count)']) - ->where(['shift_id' => $shiftTransfer->id, 'product_id' => $key]) - ->groupBy(['shift_id', 'product_replacement_id']) + ->where(['shift_transfer_id' => $shiftTransfer->id, 'product_id' => $key]) + ->groupBy(['shift_transfer_id', 'product_replacement_id']) ->scalar(); $diff = $eqRemains @@ -183,9 +183,9 @@ class EqualizationRemains extends \yii\db\ActiveRecord if (self::find() ->select(['SUM(product_count)']) - ->where(['shift_id' => $shiftTransfer->id]) + ->where(['shift_transfer_id' => $shiftTransfer->id]) ->andWhere(['product_id' => $key]) - ->groupBy(['shift_id', 'product_id']) + ->groupBy(['shift_transfer_id', 'product_id']) ->having(['SUM(product_count)' => abs($item['fact_and_1c_diff'])]) ->scalar() == abs($item['fact_and_1c_diff'])) { break; @@ -197,7 +197,7 @@ class EqualizationRemains extends \yii\db\ActiveRecord $model = new EqualizationRemains(); $model->setAttributes([ - 'shift_id' => $shiftTransfer->id, + 'shift_transfer_id' => $shiftTransfer->id, 'product_id' => $key, 'product_count' => $diff, 'product_price' => $item['retail_price'], diff --git a/erp24/web/js/shift-transfer/replacement.js b/erp24/web/js/shift-transfer/replacement.js index 356ef7db..79232bbd 100644 --- a/erp24/web/js/shift-transfer/replacement.js +++ b/erp24/web/js/shift-transfer/replacement.js @@ -19,8 +19,8 @@ function setProductData() { $.ajax({ url: '/shift-transfer/get-product-data', type: 'GET', - data: { productGuid, shiftTransferId }, - success: function(response) { + data: {productGuid, shiftTransferId}, + success: function (response) { let data; try { data = JSON.parse(response); @@ -46,18 +46,18 @@ function setProductData() { replacementSelect.append(``); }); - replacementSelect.css({ visibility: 'visible', height: 'auto', width: '100%' }) + replacementSelect.css({visibility: 'visible', height: 'auto', width: '100%'}) .trigger('change') .val(replacementSelect.val() || replacementSelect.find('option').first().val()) .trigger('change'); $('#shifttransfer-equalizationremains-' + index + '-product_self_cost').val(data.product_self_cost || ''); }, - error: function() { + error: function () { alert('Ошибка запроса!'); clearFields($this); // Очищаем поля в случае ошибки запроса }, - complete: function() { + complete: function () { isRequestInProgress = false; } }); @@ -79,7 +79,7 @@ function clearFields($this) { '#shifttransfer-equalizationremains-' + index + '-balance_self_cost' ]; - fieldsToClear.forEach(function(selector) { + fieldsToClear.forEach(function (selector) { const element = $(selector); if (element.length) { if (element.is('select')) { @@ -109,8 +109,8 @@ function setReplacementPriceData() { $.ajax({ url: '/shift-transfer/get-product-replacement-price', type: 'GET', - data: { productGuid, shiftTransferId }, - success: function(response) { + data: {productGuid, shiftTransferId}, + success: function (response) { let data; try { data = JSON.parse(response); @@ -150,7 +150,7 @@ function setReplacementPriceData() { quantityInput.attr('max', maxQuantity); // Обработчик события изменения значения в поле - quantityInput.on('input', function() { + quantityInput.on('input', function () { let currentQuantity = parseFloat(quantityInput.val()) || 0; if (currentQuantity > maxQuantity) { @@ -160,16 +160,16 @@ function setReplacementPriceData() { }); } }, - error: function() { + error: function () { alert('Ошибка запроса!'); }, - complete: function() { + complete: function () { isRequestInProgressPrice = false; } }); } -$('.field-shifttransfer-equalizationremains').on('input', '.list-cell__product_replacement_count input', function() { +$('.field-shifttransfer-equalizationremains').on('input', '.list-cell__product_replacement_count input', function () { const $this = $(this); const id = $this.attr('id'); const indexMatch = id.match(/shifttransfer-equalizationremains-(\d+)-/); @@ -210,3 +210,53 @@ $('.field-shifttransfer-equalizationremains').on('input', '.list-cell__product_r $('#shifttransfer-equalizationremains-' + index + '-balance').val(balanceCalculation.toFixed(2)).trigger('change'); $('#shifttransfer-equalizationremains-' + index + '-balance_self_cost').val(balanceSelfCost.toFixed(2)).trigger('change'); }); + +function setDynamicMaxValue(inputElement, rowId) { + var currentMax = $(inputElement).attr('max'); + + if (currentMax !== undefined) { + return; + } + + var productName = $('#shifttransfer-equalizationremains-' + rowId + '-product_replacement_id').val(); + var shiftTransferId = getUrlParameter('id'); + + if (!shiftTransferId) { + return; + } + + $.ajax({ + url: '/shift-transfer/get-max-quantity', + type: 'GET', + data: { + productName: productName, + shiftTransferId: shiftTransferId + }, + success: function (response) { + if (response.maxValue !== undefined) { + $(inputElement).attr('max', response.maxValue); + } + }, + error: function () {} + }); +} + +$('.field-shifttransfer-equalizationremains').on('input', '.list-cell__product_replacement_count input', function () { + var inputElement = $(this); + var rowId = inputElement.closest('tr').index(); + var max = $(inputElement).attr('max'); + var value = $(inputElement).val(); + + setDynamicMaxValue(inputElement, rowId); + + if (value > max) { + alert('Максимальное допустимое значение: ' + max); + $(inputElement).val(max); + } +}); + + + + + +