From 314b5900a2e8f11b45828f64cb02eb65fc3c86bd Mon Sep 17 00:00:00 2001 From: marina Date: Thu, 22 May 2025 14:33:09 +0300 Subject: [PATCH] ERP-417 --- erp24/controllers/WriteOffsErpController.php | 111 +++++++++---------- erp24/records/WriteOffsErp.php | 4 +- erp24/records/WriteOffsProductsErp.php | 2 +- erp24/views/write_offs_erp/view.php | 8 +- 4 files changed, 66 insertions(+), 59 deletions(-) diff --git a/erp24/controllers/WriteOffsErpController.php b/erp24/controllers/WriteOffsErpController.php index bcdf521f..d5621614 100644 --- a/erp24/controllers/WriteOffsErpController.php +++ b/erp24/controllers/WriteOffsErpController.php @@ -43,7 +43,7 @@ class WriteOffsErpController extends Controller 'verbs' => [ 'class' => VerbFilter::className(), 'actions' => [ - 'delete' => ['POST','GET'], + 'delete' => ['POST', 'GET'], ], ], ] @@ -85,8 +85,8 @@ class WriteOffsErpController extends Controller $request = Yii::$app->getRequest(); - $groupId = (int) $session->get('group_id'); - $adminId = (int) $session->get('admin_id'); + $groupId = (int)$session->get('group_id'); + $adminId = (int)$session->get('admin_id'); $storeIds = TimetableService::getAllowedStoreId($adminId, $groupId); @@ -95,9 +95,9 @@ class WriteOffsErpController extends Controller $dataProvider = $searchModel->search($this->request->queryParams, $storeIds); - $isShowSum = true; + $isShowSum = true; - $isCanCreateWriteOff = true; + $isCanCreateWriteOff = true; return $this->render('/write_offs_erp/index', [ @@ -120,8 +120,8 @@ class WriteOffsErpController extends Controller $request = Yii::$app->getRequest(); - $groupId = (int) $session->get('group_id'); - $adminId = (int) $session->get('admin_id'); + $groupId = (int)$session->get('group_id'); + $adminId = (int)$session->get('admin_id'); $allowedConfirm = false; @@ -152,16 +152,15 @@ class WriteOffsErpController extends Controller $query->joinWith(['writeOffsProductsErps']) - ->joinWith(['cityStore']) - ; + ->joinWith(['cityStore']); /** @var WriteOffsErp $model */ $model = $query->one(); - $model->cityStoreList = ArrayHelper::getValue($model->getRelatedRecords(),'cityStore'); + $model->cityStoreList = ArrayHelper::getValue($model->getRelatedRecords(), 'cityStore'); $modelWriteOffsProductsErps = ($model->getRelation('writeOffsProductsErps', false)); - $model->writeOffsProductsErps = ArrayHelper::getValue($model->getRelatedRecords(),'writeOffsProductsErps'); - $writeOffsProductsErpIds = ArrayHelper::getColumn($model->writeOffsProductsErps,'id'); + $model->writeOffsProductsErps = ArrayHelper::getValue($model->getRelatedRecords(), 'writeOffsProductsErps'); + $writeOffsProductsErpIds = ArrayHelper::getColumn($model->writeOffsProductsErps, 'id'); $query = WriteOffsProductsErp::find() ->andWhere([ 'write_offs_products_erp.id' => $writeOffsProductsErpIds, @@ -187,11 +186,10 @@ class WriteOffsErpController extends Controller } - $isShowSum = true; + $isShowSum = true; - - $isCanConfirmWriteOffs = true; + $isCanConfirmWriteOffs = true; $model->isShowSum = $isShowSum; @@ -226,7 +224,6 @@ class WriteOffsErpController extends Controller $model = $query->asArray()->all(); - $writeOff = self::getWriteOffsDoc(); echo '
';
@@ -245,13 +242,14 @@ class WriteOffsErpController extends Controller
         print_r($resultModel);
         echo '

'; - $result = json_encode($resultModel,true,JSON_UNESCAPED_UNICODE); + $result = json_encode($resultModel, true, JSON_UNESCAPED_UNICODE); echo('
result json_encode
'); - print_r($result); + print_r($result); } + public static function getWriteOffsDoc() { $connection = Yii::$app->getDb(); @@ -261,7 +259,7 @@ class WriteOffsErpController extends Controller $writeOffResult = []; $writeOffIdsString = ''; - try{ + try { $writeOffQuery = " SELECT id, @@ -281,8 +279,8 @@ class WriteOffsErpController extends Controller active = 1 "; - // $data = $db::getRows("SELECT * FROM create_checks WHERE status='0'"); - $writeOff = $connection->createCommand($writeOffQuery)->queryAll(); + // $data = $db::getRows("SELECT * FROM create_checks WHERE status='0'"); + $writeOff = $connection->createCommand($writeOffQuery)->queryAll(); if (!empty($writeOff)) { $writeOffIds = array_column($writeOff, 'id'); @@ -299,7 +297,7 @@ class WriteOffsErpController extends Controller FROM write_offs_products_erp WHERE - write_offs_products_erp.write_offs_erp_id IN (" .$writeOffIdsString . ") + write_offs_products_erp.write_offs_erp_id IN (" . $writeOffIdsString . ") AND (active_product = 1) "; @@ -336,9 +334,8 @@ class WriteOffsErpController extends Controller ]; } } - } - catch (Exception $e3) { - file_put_contents('data/log_created_write_offs_erp_error.txt', PHP_EOL . date("d.m.Y H:i:s",time()). $e3->getMessage(), FILE_APPEND); + } catch (Exception $e3) { + file_put_contents('data/log_created_write_offs_erp_error.txt', PHP_EOL . date("d.m.Y H:i:s", time()) . $e3->getMessage(), FILE_APPEND); } return [ 'writeOff' => $writeOffResult, @@ -360,8 +357,8 @@ class WriteOffsErpController extends Controller $request = Yii::$app->getRequest(); - $groupId = (int) $session->get('group_id'); - $adminId = (int) $session->get('admin_id'); + $groupId = (int)$session->get('group_id'); + $adminId = (int)$session->get('admin_id'); $documentGroupId = DataHelper::getDocumentGroupId('write_offs_erp'); @@ -403,7 +400,7 @@ class WriteOffsErpController extends Controller if ($model->load(Yii::$app->request->post())) { $modelsProducts = MultipleModel::createMultipleModel(WriteOffsProductsErp::classname(), 'WriteOffsErp', 'modelsProducts'); - MultipleModel::loadMultipleFromArray($modelsProducts, $model->modelsProducts , ''); + MultipleModel::loadMultipleFromArray($modelsProducts, $model->modelsProducts, ''); $model->setGuidCreated(); $model->setNumberDefault(); @@ -424,7 +421,7 @@ class WriteOffsErpController extends Controller $writeOffsErpId = $modelId; $writeOffsErpDate = $model->getDate(); - foreach ($modelsProducts as $numRowKey => $modelProduct) { + foreach ($modelsProducts as $numRowKey => $modelProduct) { $numRow = $numRowKey + 1; /** @var WriteOffsProductsErp $modelProduct */ $modelProduct->setWriteOffsErpId($writeOffsErpId); @@ -627,8 +624,8 @@ class WriteOffsErpController extends Controller { $session = Yii::$app->session; - $groupId = (int) $session->get('group_id'); - $adminId = (int) $session->get('admin_id'); + $groupId = (int)$session->get('group_id'); + $adminId = (int)$session->get('admin_id'); $documentGroupId = DataHelper::getDocumentGroupId('write_offs_erp'); @@ -656,7 +653,7 @@ class WriteOffsErpController extends Controller 'write_offs_erp.active' => 1, ]) ->andWhere([ - '<>', 'status', WriteOffsErp::STATUS_CREATED_1С + '<>', 'status', WriteOffsErp::STATUS_CREATED_1С ]) ->with('writeOffsProductsErps'); @@ -668,8 +665,8 @@ class WriteOffsErpController extends Controller $modelWriteOffsProductsErps = ($model->getRelation('writeOffsProductsErps', false)); - $model->writeOffsProductsErps = ArrayHelper::getValue($model->getRelatedRecords(),'writeOffsProductsErps'); - $writeOffsProductsErpIds = ArrayHelper::getColumn($model->writeOffsProductsErps,'id'); + $model->writeOffsProductsErps = ArrayHelper::getValue($model->getRelatedRecords(), 'writeOffsProductsErps'); + $writeOffsProductsErpIds = ArrayHelper::getColumn($model->writeOffsProductsErps, 'id'); $query = WriteOffsProductsErp::find() ->andWhere([ 'write_offs_products_erp.id' => $writeOffsProductsErpIds, @@ -677,10 +674,7 @@ class WriteOffsErpController extends Controller ]); - - $query->joinWith(['imagesWriteOffsErp']) - ; - + $query->joinWith(['imagesWriteOffsErp'])->orderBy(['num_row' => SORT_ASC]); $modelWriteOffsProductsErp = $query->all(); $model->writeOffsProductsErps = $modelWriteOffsProductsErp; @@ -705,7 +699,7 @@ class WriteOffsErpController extends Controller $listProductsDict = Products1c::getProducts1cByTypeWithPrice(); - $modelWriteOffsProductsErps = ArrayHelper::getValue($model->getRelatedRecords(),'writeOffsProductsErps'); + $modelWriteOffsProductsErps = ArrayHelper::getValue($model->getRelatedRecords(), 'writeOffsProductsErps'); $listCityStoreNames = CityStore::getNames($storeIds); $listCauseDict = WriteOffsProductsErp::getCauseDict(); @@ -714,22 +708,24 @@ class WriteOffsErpController extends Controller if ($this->request->isPost && $model->load($this->request->post())) { $modelsProducts = MultipleModel::createMultipleModel(WriteOffsProductsErp::classname(), 'WriteOffsErp', 'modelsProducts', $modelWriteOffsProductsErps); - MultipleModel::loadMultipleFromArray($modelsProducts, $model->modelsProducts , ''); + MultipleModel::loadMultipleFromArray($modelsProducts, $model->modelsProducts, ''); $modelId = $model->getId(); - $oldWriteOffsProductsErp = WriteOffsProductsErp::find()->andWhere(['write_offs_erp_id' => $id, 'active_product' => 1])->asArray()->all(); + $oldWriteOffsProductsErp = WriteOffsProductsErp::find()->andWhere(['write_offs_erp_id' => $id, 'active_product' => 1])->asArray()->all(); $oldIDs = ArrayHelper::map($oldWriteOffsProductsErp, 'id', 'id'); + $newIds = array_unique(array_merge(...array_map(fn($m) => array_values(array_filter($m->attributes, fn($v, $k) => $k === 'id', ARRAY_FILTER_USE_BOTH)), $modelsProducts))); if (!empty($modelsProducts)) { $writeOffsErpId = $modelId; $writeOffsErpDate = $model->getDate(); + $modelNum = 1; foreach ($modelsProducts as $modelProduct) { /** @var WriteOffsProductsErp $modelProduct */ - //WriteOffsProductsErp::deleteByIDs(); + WriteOffsProductsErp::deleteByIDs(array_diff($oldIDs, $newIds), Yii::$app->user->id); $modelProduct->setWriteOffsErpId($writeOffsErpId); // Необходимо заполнить «Write Offs Erp ID». $modelProduct->setDate($writeOffsErpDate); // Необходимо заполнить «Write Offs Erp ID». $productIdRow = $modelProduct->getProductId(); // Необходимо заполнить «Write Offs Erp ID». @@ -755,12 +751,14 @@ class WriteOffsErpController extends Controller $modelProductRetailSummRow = $modelProductRetailPriceRow * $modelProductQuantityRow; $modelProduct->setPriceRetail($modelProductRetailPriceRow); + $modelProduct->setNumRow($modelNum); $modelProduct->setSummRetail($modelProductRetailSummRow); $modelProduct->setUpdatedAdminId($adminId); $modelProduct->setUpdatedAt(); + $modelNum++; } } @@ -893,7 +891,7 @@ class WriteOffsErpController extends Controller } - public function actionConfirmWriteOff() : string + public function actionConfirmWriteOff(): string { if (Yii::$app->request->isAjax) { $session = Yii::$app->session; @@ -902,18 +900,18 @@ class WriteOffsErpController extends Controller $id = Yii::$app->request->post("id"); $model = WriteOffsErp::find()->andWhere([ - 'write_offs_erp.id' => $id, - 'active' => 1, - 'status' => WriteOffsErp::STATUS_CREATED - ]) + 'write_offs_erp.id' => $id, + 'active' => 1, + 'status' => WriteOffsErp::STATUS_CREATED + ]) ->joinWith(['writeOffsProductsErps']) ->one(); /** @var WriteOffsErp $model */ $modelWriteOffsProductsErps = ($model->getRelation('writeOffsProductsErps', false)); - $model->writeOffsProductsErps = ArrayHelper::getValue($model->getRelatedRecords(),'writeOffsProductsErps'); - $writeOffsProductsErpIds = ArrayHelper::getColumn($model->writeOffsProductsErps,'id'); + $model->writeOffsProductsErps = ArrayHelper::getValue($model->getRelatedRecords(), 'writeOffsProductsErps'); + $writeOffsProductsErpIds = ArrayHelper::getColumn($model->writeOffsProductsErps, 'id'); $query = WriteOffsProductsErp::find() ->andWhere([ 'write_offs_products_erp.id' => $writeOffsProductsErpIds, @@ -927,7 +925,7 @@ class WriteOffsErpController extends Controller } $modelsProducts = MultipleModel::createMultipleModelFromArray('yii_app\forms\writeOffsErp\WriteOffsProductsForm', $modelWriteOffsProductsErp); - MultipleModel::loadMultipleFromArray($modelsProducts, $modelWriteOffsProductsErp , ''); + MultipleModel::loadMultipleFromArray($modelsProducts, $modelWriteOffsProductsErp, ''); $validMultiple = MultipleModel::validateMultiple($modelsProducts); @@ -967,7 +965,8 @@ class WriteOffsErpController extends Controller } return 'error'; } - public function actionReSendWriteOff() : string + + public function actionReSendWriteOff(): string { if (Yii::$app->request->isAjax) { $session = Yii::$app->session; @@ -976,10 +975,10 @@ class WriteOffsErpController extends Controller $id = Yii::$app->request->post("id"); $model = WriteOffsErp::find()->andWhere([ - 'write_offs_erp.id' => $id, - 'active' => 1, - 'status' => [WriteOffsErp::STATUS_SEND,WriteOffsErp::STATUS_ERROR_1С], - ]) + 'write_offs_erp.id' => $id, + 'active' => 1, + 'status' => [WriteOffsErp::STATUS_SEND, WriteOffsErp::STATUS_ERROR_1С], + ]) ->joinWith(['writeOffsProductsErps']) ->one(); @@ -1032,7 +1031,7 @@ class WriteOffsErpController extends Controller $modelStatus = $model->getStatus(); - if (in_array($modelStatus,[WriteOffsErp::STATUS_SEND,WriteOffsErp::STATUS_ERROR_1С])) { + if (in_array($modelStatus, [WriteOffsErp::STATUS_SEND, WriteOffsErp::STATUS_ERROR_1С])) { $model->setStatusConfirm(); $model->resetSendAt(); $model->save(false); diff --git a/erp24/records/WriteOffsErp.php b/erp24/records/WriteOffsErp.php index 007aa410..c092f5df 100644 --- a/erp24/records/WriteOffsErp.php +++ b/erp24/records/WriteOffsErp.php @@ -146,7 +146,9 @@ class WriteOffsErp extends \yii\db\ActiveRecord */ public function getWriteOffsProductsErps() { - return $this->hasMany(WriteOffsProductsErp::className(), ['write_offs_erp_id' => 'id'])->onCondition(['write_offs_products_erp.active_product' => 1]); + return $this->hasMany(WriteOffsProductsErp::className(), ['write_offs_erp_id' => 'id']) + ->onCondition(['write_offs_products_erp.active_product' => 1]) + ->orderBy(['num_row' => SORT_ASC]); } diff --git a/erp24/records/WriteOffsProductsErp.php b/erp24/records/WriteOffsProductsErp.php index 6d38ab3e..b2add008 100644 --- a/erp24/records/WriteOffsProductsErp.php +++ b/erp24/records/WriteOffsProductsErp.php @@ -469,7 +469,7 @@ class WriteOffsProductsErp extends \yii\db\ActiveRecord public static function deleteByIDs($deletedIDs, $adminId) : ?int { $result = null; - if (! empty($deletedIDs)) { + if (!empty($deletedIDs)) { $deleted = self::findAll(['id' => $deletedIDs]); $result = count($deleted); foreach ($deleted as $row) { diff --git a/erp24/views/write_offs_erp/view.php b/erp24/views/write_offs_erp/view.php index 91c665e6..066b2ec1 100644 --- a/erp24/views/write_offs_erp/view.php +++ b/erp24/views/write_offs_erp/view.php @@ -7,6 +7,7 @@ use yii\web\View; use yii\widgets\DetailView; use yii_app\helpers\File; use yii_app\records\WriteOffsErp; +use yii_app\records\WriteOffsProductsErp; /** @var yii\web\View $this */ /** @var yii_app\records\WriteOffsErp $model */ @@ -139,7 +140,12 @@ JS, \yii\web\View::POS_READY); $dataTable .= 'Изображения'; $dataTable .= 'Видео'; $dataTable .= ''; - foreach ($model->writeOffsProductsErps as $key => $product) { + + $products = WriteOffsProductsErp::find() + ->where(['write_offs_erp_id' => $model->id, 'active_product' => 1]) + ->orderBy(['num_row' => SORT_ASC]) + ->all(); + foreach ($products as $key => $product) { $causeName = $product['cause_id']; if (!empty($model->listCauseDict)) { $causeName = ArrayHelper::getValue($model->listCauseDict, $product['cause_id']); -- 2.39.5