]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
ERP-259 Доработка второго шага передачи смен
authormarina <m.zozirova@gmail.com>
Tue, 10 Dec 2024 12:31:08 +0000 (15:31 +0300)
committermarina <m.zozirova@gmail.com>
Tue, 10 Dec 2024 12:31:08 +0000 (15:31 +0300)
erp24/controllers/ShiftTransferController.php
erp24/records/EqualizationRemains.php
erp24/web/js/shift-transfer/replacement.js

index 413c643d0e469c58cef2b9b90beaa75884c315cb..8e2bb167f057f3f3c7be8277639d8ce06dea0b47 100644 (file)
@@ -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,
+                ];
+
+            }
+        }
+    }
 }
index 9fb60da67684ffbb9b2fa0c7e303e0432c3960a1..39c490d34e364bb86cac2e26f9231b09536cf5cc 100644 (file)
@@ -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'],
index 356ef7db57a57ace9da74067d03a0738465a1ec4..79232bbd549e85c1c32853933c7238c7330cea30 100644 (file)
@@ -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(`<option value="${id}">${name}</option>`);
             });
 
-            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);
+    }
+});
+
+
+
+
+
+