]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
ERP-417
authormarina <m.zozirova@gmail.com>
Thu, 22 May 2025 11:33:09 +0000 (14:33 +0300)
committermarina <m.zozirova@gmail.com>
Thu, 22 May 2025 11:33:09 +0000 (14:33 +0300)
erp24/controllers/WriteOffsErpController.php
erp24/records/WriteOffsErp.php
erp24/records/WriteOffsProductsErp.php
erp24/views/write_offs_erp/view.php

index bcdf521faec277c2706ecacc1c5522ef620d6f21..d56216141536f8123c04f0dde33d751261aa5afa 100644 (file)
@@ -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 '<pre>';
@@ -245,13 +242,14 @@ class WriteOffsErpController extends Controller
         print_r($resultModel);
         echo '</pre> <hr>';
 
-        $result = json_encode($resultModel,true,JSON_UNESCAPED_UNICODE);
+        $result = json_encode($resultModel, true, JSON_UNESCAPED_UNICODE);
 
         echo('<br> result json_encode <br>');
-            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);
index 007aa41007d8173ce39308abc89015849b26295c..c092f5df02b20aec5d3eac4c074bc80ce42b96e1 100644 (file)
@@ -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]);
     }
 
 
index 6d38ab3ea6c2a112df4923ea81b748f2aaaa78ac..b2add008b2a8ae95ad84a5226b14206a1bee67a7 100644 (file)
@@ -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) {
index 91c665e61977aeb163353e43ea591fe894704597..066b2ec16db9480f297ed864fca6bc89a884c605 100644 (file)
@@ -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 .= '<th>Изображения</th>';
                             $dataTable .= '<th>Видео</th>';
                             $dataTable .= '</tr>';
-                            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']);