public function actionCreate() {
$shiftTransfer = new ShiftTransfer;
+ $shiftTransfer->date = date('Y-m-d H:i:s');
+ $shiftTransfer->date_start = $shiftTransfer->date;
$isCreate = true;
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;
$admins = self::getAdminsWithDrugieLast();
+ $shiftTransfer->shiftRemainsCopy = $loadDataShiftRemains ?? $shiftTransfer->shiftRemains;
+
return $this->render('update', compact('shiftTransfer', 'isCreate', 'storeNameById',
'admins'));
}
]) ?>
</div>
</div>
- <div class="row">
- <div class="col-6">
- <?= $form->field($shiftTransfer, 'goods_transfer_summ')->textInput(['type' => 'number', 'step' => 0.01]) ?>
- </div>
- <div class="col-6">
- <?= $form->field($shiftTransfer, 'goods_transfer_count')->textInput(['type' => 'number', 'step' => 0.01]) ?>
- </div>
- </div>
- <div class="row">
- <div class="col-6">
- <?= $form->field($shiftTransfer, 'discrepancy_pieces')->textInput(['type' => 'number', 'step' => 0.01]) ?>
- </div>
- <div class="col-6">
- <?= $form->field($shiftTransfer, 'discrepancy_rubles')->textInput(['type' => 'number', 'step' => 0.01]) ?>
- </div>
- </div>
+
<div class="row">
<div class="col-6">
<?= $form->field($shiftTransfer, 'comment')->textarea(['rows' => 6]) ?>
<div class="row">
<div class="col-12">
- <?= $form->field($shiftTransfer, 'shiftRemains')->widget(MultipleInput::class, [
+ <?= $form->field($shiftTransfer, 'shiftRemainsCopy')->widget(MultipleInput::class, [
'min' => 0,
'max' => 100,
'columns' => [
'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'] ?? '';
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) &&
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'));
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());