class ShiftTransferController extends Controller
{
- public static function isAllowedAdmin() {
+ public static function isAllowedAdmin()
+ {
$admin = Admin::findOne(Yii::$app->user->id);
return !(!$admin || $admin->group_id == -1 || !in_array($admin->group_id,
- array_merge(Admin::ADMIN_CABINET_GROUP_IDS, [AdminGroup::GROUP_IT, AdminGroup::GROUP_ADMINISTRATORS])));
+ array_merge(Admin::ADMIN_CABINET_GROUP_IDS, [AdminGroup::GROUP_IT, AdminGroup::GROUP_ADMINISTRATORS])));
}
- public function actionIndex() {
+ public function actionIndex()
+ {
if (!self::isAllowedAdmin()) {
return 'Нет доступа';
}
return $this->render('index', compact('shiftTransfers', 'storeNameById', 'admins'));
}
- public function buildLoadDataShiftRemains($groups, $storeGuid) {
+ public function buildLoadDataShiftRemains($groups, $storeGuid)
+ {
$productsClass = ProductsClass::find()->select(['category_id'])->where(['tip' => $groups])->column();
$products = ArrayHelper::map(Products1c::find()->alias('p')->select(['id', 'name'])->leftJoin('products_class pc', 'pc.category_id = p.parent_id')
->where(['parent_id' => $productsClass])->orderBy(['(CASE WHEN pc.tip = \'other_items\' THEN 1 ELSE 0 END)' => SORT_DESC
- ,'name' => SORT_ASC])->all(), 'id', 'name');
+ , 'name' => SORT_ASC])->all(), 'id', 'name');
$balance = ArrayHelper::map(Balances::find()->select(['quantity', 'product_id'])
->where(['store_id' => $storeGuid])->all(), 'product_id', 'quantity');
$productGuids = [];
$loadDataShiftRemains = [];
foreach ($productGuids as $key => $name) {
- $loadDataShiftRemains[]= [
+ $loadDataShiftRemains[] = [
'product_guid' => $key, 'retail_price' => $price[$key] ?? '',
'self_cost' => $selfCost[$key] ?? '',
- 'remains_summ' => isset($price[$key]) && isset($balance[$key]) ? $price[$key] * $balance[$key]: '',
+ 'remains_summ' => isset($price[$key]) && isset($balance[$key]) ? $price[$key] * $balance[$key] : '',
'remains_count' => $balance[$key] ?? '',
'fact_and_1c_diff' => 0, 'remains_1c' => $balance[$key] ?? ''
];
}
}
- EqualizationRemains::setData($shiftTransfer);
+ EqualizationRemains::setData($shiftTransfer);
if ($shiftTransfer->validate()) {
$shiftTransfer->goods_transfer_count = array_sum(ArrayHelper::getColumn($shiftTransfer->shiftRemains, 'remains_count'));
}
-
public function actionGetProductPriceSelfCostAndRemains()
{
Yii::$app->response->format = Response::FORMAT_JSON;
return ['groupLabel' => $productClass->tip ?? 'other_items', 'price' => $price->price ?? 0, 'selfCost' => $selfCost->price ?? 0, 'quantity' => $balance->quantity ?? 0];
}
- public function actionGetProductsWithRemains() {
+ public function actionGetProductsWithRemains()
+ {
Yii::$app->response->format = Response::FORMAT_JSON;
$storeGuid = Yii::$app->request->post('storeGuid');
$balance = ArrayHelper::map(Balances::find()->select(['quantity', 'product_id'])->where(['store_id' => $storeGuid])->all(), 'product_id', 'quantity');
} elseif ($action === 'save') {
$model->updateAttributes(['status_id' => ShiftTransfer::STATUS_ID_READY_TO_ACCEPT]);
EqualizationRemains::updateData(Yii::$app->request->post()['ShiftTransfer']['equalizationRemains'], $id);
+ } elseif ($action == 'recalculate') {
+ EqualizationRemains::setData($model);
+ Yii::$app->session->setFlash('success', 'Таблица замен успешно перерасчитана');
} elseif ($action === 'rejection') {
$model->updateAttributes(['status_id' => ShiftTransfer::STATUS_ID_TRANSFER_ACTIONS]);
}
use unclead\multipleinput\MultipleInput;
use yii\data\ArrayDataProvider;
use yii\helpers\Html;
+use yii\helpers\Url;
use yii_app\records\ShiftTransfer;
use yii\widgets\ActiveForm;
$totalBalance = array_sum(array_column($shiftTransfer->equalizationRemains, 'balance'));
-$form = \yii\widgets\ActiveForm::begin();
+$form = \yii\widgets\ActiveForm::begin(); ?>
+
+ <div class="row">
+ <div class="col-2">
+
+ <?= Html::label('Таблица замен'); ?>
+ </div>
+
+
+ <div class="col-3">
+<?php
+//echo Html::a('Справочник замен', Url::to(['/crud/product1c-replacement/index']));
+
+
if (in_array($shiftTransfer->status_id, [ShiftTransfer::STATUS_ID_TRANSFER_ACTIONS, ShiftTransfer::STATUS_ID_INPUT_FACT_REMAINS])
&& Yii::$app->user->id === $shiftTransfer->end_shift_admin_id) {
+
+ echo Html::submitButton('Пересчитать таблицу замен', [
+ 'class' => 'btn btn-primary float-right',
+ 'name' => 'action',
+ 'value' => 'recalculate'
+ ]); ?>
+ </div>
+ </div>
+ <?php
+
echo $form->field($shiftTransfer, 'equalizationRemains')->widget(MultipleInput::class, [
'min' => 0,
'max' => 100,
'class' => 'btn btn-danger visible',
],
'iconSource' => 'fa',
- ])->label('Таблица возможных замен');
+ ])->label(false);
echo $btn = Html::submitButton('Сохранить', [
'class' => 'btn btn-primary float-right',
'name' => 'action',
'value' => 'save'
]);
+ ?>
+ <?php
} else {
- echo Html::label('Таблица возможных замен');
+ ?>
+ </div>
+ </div>
+ <?php
echo GridView::widget([
'dataProvider' => new ArrayDataProvider([
'allModels' => $shiftTransfer->equalizationRemains,
<div class="shiftTransferView m-5">
+ <?php if (Yii::$app->session->hasFlash('success')): ?>
+ <div class="alert alert-success alert-dismissable">
+ <button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
+ <?= Yii::$app->session->getFlash('success') ?>
+ </div>
+ <?php endif; ?>
+
<?php if (Yii::$app->session->hasFlash('info')): ?>
<div class="alert alert-success alert-dismissable">
<button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
<?php endif; ?>
<?= Html::a('Назад', '/shift-transfer', ['class' => 'btn btn-secondary']) ?>
- <?= in_array($shiftTransfer->status_id,[ShiftTransfer::STATUS_ID_INPUT_FACT_REMAINS, ShiftTransfer::STATUS_ID_TRANSFER_ACTIONS]) && ShiftTransferController::isAllowedAdmin() ? Html::a('Редактировать', ['/shift-transfer/update', 'id' => Yii::$app->request->get('id')], ['class' => 'btn btn-primary']) : '' ?>
+ <?= in_array($shiftTransfer->status_id, [ShiftTransfer::STATUS_ID_INPUT_FACT_REMAINS, ShiftTransfer::STATUS_ID_TRANSFER_ACTIONS]) && ShiftTransferController::isAllowedAdmin() ? Html::a('Редактировать', ['/shift-transfer/update', 'id' => Yii::$app->request->get('id')], ['class' => 'btn btn-primary']) : '' ?>
<h1>Просмотр передачи смены</h1>