From: marina Date: Tue, 3 Dec 2024 08:10:25 +0000 (+0300) Subject: ERP-243 Действия по замене (II этап) X-Git-Tag: 1.7~203^2~2 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=4454e893ce872c9f66eb5d5aebcd755a840291a5;p=erp24_rep%2Fyii-erp24%2F.git ERP-243 Действия по замене (II этап) --- diff --git a/erp24/controllers/ReplacementInvoiceController.php b/erp24/controllers/ReplacementInvoiceController.php new file mode 100644 index 00000000..79411bc8 --- /dev/null +++ b/erp24/controllers/ReplacementInvoiceController.php @@ -0,0 +1,74 @@ + 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.'); + } +} diff --git a/erp24/controllers/ShiftTransferController.php b/erp24/controllers/ShiftTransferController.php index 28b844e3..b0d57047 100644 --- a/erp24/controllers/ShiftTransferController.php +++ b/erp24/controllers/ShiftTransferController.php @@ -24,6 +24,7 @@ use yii_app\records\SelfCostProduct; 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 @@ -173,9 +174,13 @@ 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]); } } diff --git a/erp24/records/EqualizationRemains.php b/erp24/records/EqualizationRemains.php index 90cd3c32..201827bc 100644 --- a/erp24/records/EqualizationRemains.php +++ b/erp24/records/EqualizationRemains.php @@ -67,6 +67,7 @@ class EqualizationRemains extends \yii\db\ActiveRecord [['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], + [[]] ]; } diff --git a/erp24/records/ReplacementInvoice.php b/erp24/records/ReplacementInvoice.php index dbbcb430..8518f2ad 100644 --- a/erp24/records/ReplacementInvoice.php +++ b/erp24/records/ReplacementInvoice.php @@ -28,6 +28,8 @@ use Yii; */ class ReplacementInvoice extends \yii\db\ActiveRecord { + public const ACTIVE = 1; + public const DELETE = 0; /** * {@inheritdoc} */ @@ -42,7 +44,7 @@ class ReplacementInvoice extends \yii\db\ActiveRecord 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'], @@ -52,6 +54,32 @@ class ReplacementInvoice extends \yii\db\ActiveRecord ]; } + 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} */ @@ -59,27 +87,29 @@ class ReplacementInvoice extends \yii\db\ActiveRecord { 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']); } } diff --git a/erp24/records/ReplacementInvoiceProducts.php b/erp24/records/ReplacementInvoiceProducts.php index 6686fe3c..fb765eff 100644 --- a/erp24/records/ReplacementInvoiceProducts.php +++ b/erp24/records/ReplacementInvoiceProducts.php @@ -29,6 +29,16 @@ use Yii; */ class ReplacementInvoiceProducts extends \yii\db\ActiveRecord { + + public const ACTIVE = 1; + public const DELETE = 0; + + //Cписываемый товар (Товар замена) + public const EXPENDING = 1; + //Приходуемый товар (Товар, который надо заменить) + public const INCOMING = 2; + + /** * {@inheritdoc} */ @@ -37,6 +47,58 @@ class ReplacementInvoiceProducts extends \yii\db\ActiveRecord 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} */ diff --git a/erp24/views/replacement-invoice/index.php b/erp24/views/replacement-invoice/index.php new file mode 100644 index 00000000..4cc0d771 --- /dev/null +++ b/erp24/views/replacement-invoice/index.php @@ -0,0 +1,35 @@ +title = 'Замены документов'; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ + $dataProvider, + 'columns' => [ + ['class' => 'yii\grid\SerialColumn'], + + 'id', + 'guid', + 'store_id', + 'number', + 'date', + 'status', + 'active', + 'created_at', + [ + 'class' => 'yii\grid\ActionColumn', + 'template' => '{view}', // кнопка просмотра + ], + ], + ]); ?> +
diff --git a/erp24/views/replacement-invoice/view.php b/erp24/views/replacement-invoice/view.php new file mode 100644 index 00000000..b3d9bbc7 --- /dev/null +++ b/erp24/views/replacement-invoice/view.php @@ -0,0 +1 @@ +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) { @@ -141,8 +146,8 @@ if (in_array($shiftTransfer->status_id, [ShiftTransfer::STATUS_ID_TRANSFER_ACTIO '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' ]); @@ -222,7 +227,7 @@ if (in_array($shiftTransfer->status_id, [ShiftTransfer::STATUS_ID_TRANSFER_ACTIO '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',