if ($action === 'accept') {
$model = ShiftTransfer::findOne($id);
- $model->setAttribute('status_id', ShiftTransfer::STATUS_ID_ACCEPTED);
- $model->save();
+ $model->updateAttributes(['status_id' => ShiftTransfer::STATUS_ID_ACCEPTED]);
ShiftRemains::updateAll(['type' => ShiftRemains::ARCHIVE_RECORD], ['shift_transfer_id' => $id]);
} elseif ($action === 'save') {
EqualizationRemains::updateData(Yii::$app->request->post()['ShiftTransfer']['equalizationRemains'], $id);
$shiftTransfer = ShiftTransfer::findOne($shiftTransferId);
$storeId = array_flip(array_map('strval', CityStore::getAllActiveGuidId()))[$shiftTransfer->store_guid];
$productSelfCost = SelfCostProduct::findOne(['product_guid' => $productGuid, 'date' => $shiftTransfer->date, 'store_id' => $storeId]);
+ $balance = Balances::findOne(['store_id' => $shiftTransfer->store_guid, 'product_id' => $productGuid]);
if (!$productPrice) {
throw new \Exception('У данного товара нет цены либо замен!');
'success' => true,
'product_price' => $productPrice->price,
'product_replacement_self_cost' => $productSelfCost->price,
+ 'maxQuantity' => $balance->quantity,
];
} catch (\Throwable $exception) {
data = JSON.parse(response);
} catch (e) {
alert('Ошибка при обработке данных');
+ clearFields($this); // Очищаем поля при ошибке обработки
return;
}
if (!data.success) {
alert('Ошибка: ' + data.message);
+ clearFields($this); // Очищаем поля при ошибке, если success == false
return;
}
},
error: function() {
alert('Ошибка запроса!');
+ clearFields($this); // Очищаем поля в случае ошибки запроса
},
complete: function() {
- isRequestInProgress = false; // Снимаем флаг, когда запрос завершен
+ isRequestInProgress = false;
+ }
+ });
+}
+
+// Функция для очистки всех полей в строке
+function clearFields($this) {
+ const index = $this.closest('tr').data('index');
+ console.log('Clearing fields for index:', index);
+
+ const fieldsToClear = [
+ '#shifttransfer-equalizationremains-' + index + '-product_price',
+ '#shifttransfer-equalizationremains-' + index + '-product_self_cost',
+ '#shifttransfer-equalizationremains-' + index + '-product_replacement_id',
+ '#shifttransfer-equalizationremains-' + index + '-product_replacement_price',
+ '#shifttransfer-equalizationremains-' + index + '-product_replacement_self_cost',
+ '#shifttransfer-equalizationremains-' + index + '-product_replacement_count',
+ '#shifttransfer-equalizationremains-' + index + '-balance',
+ '#shifttransfer-equalizationremains-' + index + '-balance_self_cost'
+ ];
+
+ fieldsToClear.forEach(function(selector) {
+ const element = $(selector);
+ if (element.length) {
+ if (element.is('select')) {
+ // Для селектов очищаем и сбрасываем выбранное значение
+ element.empty().append('<option value="">Выберите товар</option>').val('').trigger('change');
+ } else {
+ // Для остальных элементов очищаем значение
+ element.val('');
+ }
+ console.log('Cleared field:', selector);
+ } else {
+ console.log('Element not found:', selector);
}
});
}
function setReplacementPriceData() {
- if (isRequestInProgressPrice) return; // Если запрос уже в процессе, выходим
+ if (isRequestInProgressPrice) return;
- isRequestInProgressPrice = true; // Устанавливаем флаг запроса
+ isRequestInProgressPrice = true;
const $this = $(this);
const productGuid = $this.val();
const shiftTransferId = getUrlParameter('id');
- if (!productGuid) return; // Если productGuid не найден, выходим
+ if (!productGuid) return;
$.ajax({
url: '/shift-transfer/get-product-replacement-price',
const index = $this.closest('tr').data('index');
const priceInput = $('#shifttransfer-equalizationremains-' + index + '-product_replacement_price');
const replacementSelfCostInput = $('#shifttransfer-equalizationremains-' + index + '-product_replacement_self_cost');
+ const balanceInput = $('#shifttransfer-equalizationremains-' + index + '-balance');
+ const quantityInput = $('#shifttransfer-equalizationremains-' + index + '-product_replacement_count');
+
+ // Получаем максимальное количество
+ const maxQuantity = data.maxQuantity;
+
+ if (balanceInput.length) {
+ balanceInput.val(data.balance || 0).trigger('change');
+ }
if (priceInput.length) {
priceInput.val(data.product_price).trigger('change');
if (replacementSelfCostInput.length) {
replacementSelfCostInput.val(data.product_replacement_self_cost || '').trigger('change');
}
+
+ if (quantityInput.length) {
+ // Устанавливаем атрибут max для поля ввода
+ quantityInput.attr('max', maxQuantity);
+
+ // Обработчик события изменения значения в поле
+ quantityInput.on('input', function() {
+ let currentQuantity = parseFloat(quantityInput.val()) || 0;
+
+ if (currentQuantity > maxQuantity) {
+ alert('Максимальное количество: ' + maxQuantity);
+ quantityInput.val(maxQuantity).trigger('change');
+ }
+ });
+ }
},
error: function() {
alert('Ошибка запроса!');
},
complete: function() {
- isRequestInProgressPrice = false; // Снимаем флаг, когда запрос завершен
+ isRequestInProgressPrice = false;
}
});
}
-$(document).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+)-/);
const index = indexMatch[1];
const quantity = parseFloat($this.val());
- if (isNaN(quantity) || quantity < 0) {
- alert('Введите корректное количество!');
+
+ const maxQuantity = parseFloat($this.data('max-quantity'));
+
+ if (isNaN(quantity) || quantity === 0) {
+ return;
+ }
+
+ if (quantity < 0) {
+ alert('Количество не может быть отрицательным!');
+ $this.val('');
return;
}
return;
}
- const balance = (productPrice - productReplacementPrice) * quantity;
+ const balanceCalculation = (productPrice - productReplacementPrice) * quantity;
const balanceSelfCost = (productSelfCost - productReplacementSelfCost) * quantity;
- $('#shifttransfer-equalizationremains-' + index + '-balance').val(balance.toFixed(2)).trigger('change');
+ $('#shifttransfer-equalizationremains-' + index + '-balance').val(balanceCalculation.toFixed(2)).trigger('change');
$('#shifttransfer-equalizationremains-' + index + '-balance_self_cost').val(balanceSelfCost.toFixed(2)).trigger('change');
});