--- /dev/null
+<?php
+
+namespace app\controllers;
+
+use Yii;
+use yii\data\ActiveDataProvider;
+use yii\web\Controller;
+use yii\web\NotFoundHttpException;
+use yii_app\records\ReplacementInvoice;
+use yii_app\records\ReplacementInvoiceProducts;
+
+/**
+ * ReplacementInvoiceController реализует действия для модели ReplacementInvoice.
+ */
+class ReplacementInvoiceController extends Controller
+{
+ /**
+ * Displays a list of all ReplacementInvoice records.
+ *
+ * @return mixed
+ */
+ public function actionIndex()
+ {
+ $dataProvider = new ActiveDataProvider([
+ 'query' => ReplacementInvoice::find(),
+ 'pagination' => [
+ 'pageSize' => 20,
+ ],
+ ]);
+
+ return $this->render('index', [
+ 'dataProvider' => $dataProvider,
+ ]);
+ }
+
+ /**
+ * Displays a detailed view of a single ReplacementInvoice record.
+ *
+ * @param int $id
+ * @return mixed
+ * @throws NotFoundHttpException
+ */
+ public function actionView($id)
+ {
+ $model = $this->findModel($id);
+
+ $products = new ActiveDataProvider([
+ 'query' => ReplacementInvoiceProducts::find()
+ ->andWhere(['replacement_invoice_id' => $model->guid])
+ ]);
+
+ return $this->render('view', [
+ 'model' => $model,
+ 'products' =>$products
+ ]);
+ }
+
+ /**
+ * Finds the ReplacementInvoice model based on its primary key value.
+ * If the model is not found, a 404 HTTP exception will be thrown.
+ *
+ * @param int $id
+ * @return ReplacementInvoice
+ * @throws NotFoundHttpException
+ */
+ protected function findModel($id)
+ {
+ if (($model = ReplacementInvoice::findOne($id)) !== null) {
+ return $model;
+ }
+
+ throw new NotFoundHttpException('The requested page does not exist.');
+ }
+}
use yii_app\records\Shift;
use yii_app\records\ShiftRemains;
use yii_app\records\ShiftTransfer;
+use yii_app\records\StoreBalance;
use yii_app\services\TaskService;
class ShiftTransferController extends Controller
$model->updateAttributes(['date_end' => date('Y-m-d H:i:s')]);
$model->updateAttributes(['status_id' => ShiftTransfer::STATUS_ID_ACCEPTED]);
ShiftRemains::updateAll(['type' => ShiftRemains::ARCHIVE_RECORD], ['shift_transfer_id' => $id]);
+ ReplacementInvoice::setData($model);
+ StoreBalance::setData($model);
} elseif ($action === 'save') {
$model->updateAttributes(['status_id' => ShiftTransfer::STATUS_ID_READY_TO_ACCEPT]);
EqualizationRemains::updateData(Yii::$app->request->post()['ShiftTransfer']['equalizationRemains'], $id);
+ } elseif ($action === 'rejection') {
+ $model->updateAttributes(['status_id' => ShiftTransfer::STATUS_ID_TRANSFER_ACTIONS]);
}
}
[['product_count', 'product_price', 'product_self_cost', 'product_replacement_count', 'product_replacement_price', 'product_replacement_self_cost', 'balance', 'balance_self_cost'], 'required'],
[['created_at', 'updated_at'], 'safe'],
[['product_id', 'product_replacement_id'], 'string', 'max' => 255],
+ [[]]
];
}
*/
class ReplacementInvoice extends \yii\db\ActiveRecord
{
+ public const ACTIVE = 1;
+ public const DELETE = 0;
/**
* {@inheritdoc}
*/
public function rules()
{
return [
- [['guid', 'created_admin_id', 'store_id', 'store_guid', 'number', 'date', 'created_at'], 'required'],
+ [['guid', 'created_admin_id', 'store_id', 'store_guid', 'date', 'created_at'], 'required'],
[['status', 'created_admin_id', 'updated_admin_id', 'confirm_admin_id', 'store_id', 'active', 'deleted_admin_id'], 'default', 'value' => null],
[['status', 'created_admin_id', 'updated_admin_id', 'confirm_admin_id', 'store_id', 'active', 'deleted_admin_id'], 'integer'],
[['date', 'created_at', 'updated_at', 'deleted_at', 'send_at'], 'safe'],
];
}
+ public static function setData($shiftTransfer)
+ {
+ $storeId = array_flip(CityStore::getAllActiveGuidId())[$shiftTransfer->store_guid];
+ $model = new self();
+ $model->setAttributes([
+ 'guid' => GUID(),
+ 'status' => 2,
+ 'created_admin_id' => $shiftTransfer->end_shift_admin_id,
+ 'updated_admin_id' => $shiftTransfer->start_shift_admin_id,
+ 'confirm_admin_id' => $shiftTransfer->start_shift_admin_id,
+ 'store_id' => $storeId,
+ 'store_guid' => $shiftTransfer->store_guid,
+ 'date' => $shiftTransfer->date,
+ 'comment' => $shiftTransfer->comment,
+ 'created_at' => $shiftTransfer->date_start,
+ 'active' => self::ACTIVE,
+ ]);
+
+ if ($model->validate()) {
+ $model->save();
+ ReplacementInvoiceProducts::setData($model, $shiftTransfer);
+ } else {
+ var_dump($model->errors);
+ }
+ }
+
/**
* {@inheritdoc}
*/
{
return [
'id' => 'ID',
- 'guid' => 'Guid',
- 'status' => 'Status',
- 'created_admin_id' => 'Created Admin ID',
- 'updated_admin_id' => 'Updated Admin ID',
- 'confirm_admin_id' => 'Confirm Admin ID',
- 'store_id' => 'Store ID',
- 'store_guid' => 'Store Guid',
- 'number' => 'Number',
- 'number_1c' => 'Number 1c',
- 'date' => 'Date',
- 'comment' => 'Comment',
- 'created_at' => 'Created At',
- 'updated_at' => 'Updated At',
- 'deleted_at' => 'Deleted At',
- 'send_at' => 'Send At',
- 'active' => 'Active',
- 'deleted_admin_id' => 'Deleted Admin ID',
+ 'guid' => 'GUID',
+ 'status' => 'Статус',
+ 'created_admin_id' => 'ID администратора (создатель)',
+ 'updated_admin_id' => 'ID администратора (редактировавший)',
+ 'confirm_admin_id' => 'ID администратора (подтверждение)',
+ 'store_id' => 'ID магазина',
+ 'store_guid' => 'GUID магазина',
+ 'number' => 'Номер',
+ 'number_1c' => 'Номер 1C',
+ 'date' => 'Дата',
+ 'comment' => 'Комментарий',
+ 'created_at' => 'Дата создания',
+ 'updated_at' => 'Дата обновления',
+ 'deleted_at' => 'Дата удаления',
+ 'send_at' => 'Дата отправки',
+ 'active' => 'Активность',
+ 'deleted_admin_id' => 'ID администратора (удаливший)',
];
}
- public function getReplacementProducts() {
+
+ public function getReplacementProducts()
+ {
return $this->hasMany(ReplacementInvoiceProducts::class, ['replacement_invoice_id' => 'id']);
}
}
*/
class ReplacementInvoiceProducts extends \yii\db\ActiveRecord
{
+
+ public const ACTIVE = 1;
+ public const DELETE = 0;
+
+ //Cписываемый товар (Товар замена)
+ public const EXPENDING = 1;
+ //Приходуемый товар (Товар, который надо заменить)
+ public const INCOMING = 2;
+
+
/**
* {@inheritdoc}
*/
return 'replacement_invoice_products';
}
+ public static function setData($replacementInvoice, $shiftTransfer)
+ {
+ $equalizationRemains = EqualizationRemains::findAll(['shift_id' => $shiftTransfer->id]);
+ foreach ($equalizationRemains as $equalizationRemain) {
+ $incoming = new self();
+ $incoming->setAttributes([
+ 'replacement_invoice_id' => $replacementInvoice->guid,
+ 'name' => $equalizationRemain->product->name,
+ 'product_id' => $equalizationRemain->product_id,
+ 'direction_id' => self::INCOMING,
+ 'quantity' => $equalizationRemain->product_count,
+ 'price' => $equalizationRemain->product_price,
+ 'price_retail' => $equalizationRemain->product_price,
+ 'price_self_cost' => $equalizationRemain->product_self_cost,
+ 'summ' => $equalizationRemain->product_price * $equalizationRemain->product_count,
+ 'summ_retail' => $equalizationRemain->product_price * $equalizationRemain->product_count,
+ 'summ_self_cost' => $equalizationRemain->product_self_cost * $equalizationRemain->product_count,
+ 'active_product' => self::ACTIVE,
+ 'created_at' => $equalizationRemain->created_at,
+ 'updated_at' => $equalizationRemain->updated_at,
+ 'created_admin_id' => $equalizationRemain->created_by,
+ 'updated_admin_id' => $equalizationRemain->updated_by,
+ ]);
+
+ $expending = new self();
+ $expending->setAttributes([
+ 'replacement_invoice_id' => $replacementInvoice->guid,
+ 'name' => $equalizationRemain->productReplacement->name,
+ 'product_id' => $equalizationRemain->product_replacement_id,
+ 'direction_id' => self::EXPENDING,
+ 'quantity' => $equalizationRemain->product_replacement_count,
+ 'price' => $equalizationRemain->product_replacement_price,
+ 'price_retail' => $equalizationRemain->product_replacement_price,
+ 'price_self_cost' => $equalizationRemain->product_replacement_self_cost,
+ 'summ' => $equalizationRemain->product_replacement_price * $equalizationRemain->product_replacement_count,
+ 'summ_retail' => $equalizationRemain->product_replacement_price * $equalizationRemain->product_replacement_count,
+ 'summ_self_cost' => $equalizationRemain->product_replacement_self_cost * $equalizationRemain->product_replacement_count,
+ 'active_product' => self::ACTIVE,
+ 'created_at' => $equalizationRemain->created_at,
+ 'updated_at' => $equalizationRemain->updated_at,
+ 'created_admin_id' => $equalizationRemain->created_by,
+ 'updated_admin_id' => $equalizationRemain->updated_by,
+ ]);
+
+ if ($expending->validate() && $incoming->validate()) {
+ $expending->save() && $incoming->save();
+ } else {
+ var_dump($expending->save() && $incoming->validate());
+ }
+ }
+ }
+
/**
* {@inheritdoc}
*/
--- /dev/null
+<?php
+
+use yii\helpers\Html;
+use yii\grid\GridView;
+
+/* @var $this yii\web\View */
+/* @var $dataProvider yii\data\ActiveDataProvider */
+
+$this->title = 'Замены документов';
+$this->params['breadcrumbs'][] = $this->title;
+?>
+<div class="replacement-invoice-index">
+
+ <h1><?= Html::encode($this->title) ?></h1>
+
+ <?= GridView::widget([
+ 'dataProvider' => $dataProvider,
+ 'columns' => [
+ ['class' => 'yii\grid\SerialColumn'],
+
+ 'id',
+ 'guid',
+ 'store_id',
+ 'number',
+ 'date',
+ 'status',
+ 'active',
+ 'created_at',
+ [
+ 'class' => 'yii\grid\ActionColumn',
+ 'template' => '{view}', // кнопка просмотра
+ ],
+ ],
+ ]); ?>
+</div>
$this->registerJsFile('/js/shift-transfer/replacement.js', ['position' => \yii\web\View::POS_END]);
+$usersOnStoreArray = \yii_app\records\Timetable::find()
+ ->andWhere(['store_id' => array_flip(\yii_app\records\CityStore::getAllActiveGuidId())[$shiftTransfer->store_guid]])
+ ->select(['admin_id'])
+ ->column();
+
$form = \yii\widgets\ActiveForm::begin();
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) {
'iconSource' => 'fa',
])->label('Таблица возможных замен');
- echo $btn = Html::submitButton('Сохранить', [
- 'class' => 'btn btn-primary float-right',
+ echo $btn = Html::submitButton('Сохранить', [
+ 'class' => 'btn btn-primary float-right',
'name' => 'action',
'value' => 'save'
]);
'footerRowOptions' => ['class' => 'footer-row'],
]);
- if (Yii::$app->user->id === $shiftTransfer->start_shift_admin_id && $shiftTransfer->status_id == ShiftTransfer::STATUS_ID_READY_TO_ACCEPT) {
+ if (in_array(Yii::$app->user->id, $usersOnStoreArray) && $shiftTransfer->status_id == ShiftTransfer::STATUS_ID_READY_TO_ACCEPT) {
echo Html::submitButton('Принять', [
'class' => 'btn btn-primary float-right',
'name' => 'action',