]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
ERP-256 Сделать отправку документов Пересортица в 1с
authormarina <m.zozirova@gmail.com>
Thu, 19 Dec 2024 09:03:23 +0000 (12:03 +0300)
committermarina <m.zozirova@gmail.com>
Thu, 19 Dec 2024 09:03:23 +0000 (12:03 +0300)
erp24/records/StoreBalance.php

index 10f5ef1ba43e789bd32e46ab877e1fc7dbb39e4f..7f81166b3955bcf4a8c00e64fb0f478d24ad80b9 100644 (file)
@@ -38,119 +38,129 @@ class StoreBalance extends \yii\db\ActiveRecord
 
     public static function setData($shiftTransfer)
     {
-        $equalizationData = EqualizationRemains::find()
-            ->where(['shift_transfer_id' => $shiftTransfer->id])
-            ->leftJoin('products_1c AS product', 'product.id = equalization_remains.product_id')
-            ->leftJoin('products_1c AS product_replacement', 'product_replacement.id = equalization_remains.product_replacement_id')
-            ->select([
-                'equalization_remains.product_id',
-                'product.name AS product_name',
-                'equalization_remains.product_count',
-                'equalization_remains.product_price',
-                'equalization_remains.product_self_cost',
-                'equalization_remains.product_replacement_id',
-                'product_replacement.name AS product_replacement_name',
-                'equalization_remains.product_replacement_count',
-                'equalization_remains.product_replacement_price',
-                'equalization_remains.product_replacement_self_cost',
-                'equalization_remains.balance',
-                'equalization_remains.balance_self_cost'
-            ])
-            ->asArray()
-            ->all();
-
-        $articule = implode(';', array_map(fn($equalizationRemain) =>
-                $equalizationRemain->product->articule . '=>' . $equalizationRemain->productReplacement->articule,
+        $model = null;
+        if (EqualizationRemains::find()->andWhere(['shift_transfer_id' => $shiftTransfer->id])->exists()) {
+            $equalizationData = EqualizationRemains::find()
+                ->where(['shift_transfer_id' => $shiftTransfer->id])
+                ->leftJoin('products_1c AS product', 'product.id = equalization_remains.product_id')
+                ->leftJoin('products_1c AS product_replacement', 'product_replacement.id = equalization_remains.product_replacement_id')
+                ->select([
+                    'equalization_remains.product_id',
+                    'product.name AS product_name',
+                    'equalization_remains.product_count',
+                    'equalization_remains.product_price',
+                    'equalization_remains.product_self_cost',
+                    'equalization_remains.product_replacement_id',
+                    'product_replacement.name AS product_replacement_name',
+                    'equalization_remains.product_replacement_count',
+                    'equalization_remains.product_replacement_price',
+                    'equalization_remains.product_replacement_self_cost',
+                    'equalization_remains.balance',
+                    'equalization_remains.balance_self_cost'
+                ])
+                ->asArray()
+                ->all();
+
+            $articule = implode(';', array_map(fn($equalizationRemain) => $equalizationRemain->product->articule . '=>' . $equalizationRemain->productReplacement->articule,
                 EqualizationRemains::findAll(['shift_transfer_id' => $shiftTransfer->id]))) ?? '' . ';';
 
-        $model = new self();
-        $model->setAttributes([
-            'store_id' => $shiftTransfer->store_guid,
-            'shift_transfer_id' => $shiftTransfer->id,
-            'date' => $shiftTransfer->date,
-            'amount' => EqualizationRemains::find()
-                ->where(['shift_transfer_id' => $shiftTransfer->id])
-                ->select(['SUM(balance) AS total_balance'])
-                ->scalar() ?? '',
-            'status_id' => self::STATUS_NEW,
-            'comment' => $shiftTransfer->comment,
-            'json' => json_encode($equalizationData, JSON_UNESCAPED_UNICODE),
-            'replace_articule' => $articule,
-            'type_id' => self::REPLACEMENT_ACTIONS,
-        ]);
-
-        $incomingData = WaybillIncomingProducts::find()
-            ->alias('wip')
-            ->where(['waybill_incoming_id' => WaybillIncoming::findOne(['shift_transfer_id' => $shiftTransfer->id])->id ?? ''])
-            ->leftJoin('products_1c AS product', 'product.id = wip.product_id')
-            ->select([
-                'wip.product_id',
-                'product.name AS product_name',
-                'wip.product_count',
-                'wip.product_price',
-                'wip.product_self_cost',
-                'wip.summ',
-                'wip.summ_self_cost'
-            ])
-            ->asArray()
-            ->all();
-
-
-        $incoming = new self();
-        $incoming->setAttributes([
-            'store_id' => $shiftTransfer->store_guid,
-            'shift_transfer_id' => $shiftTransfer->id,
-            'date' => $shiftTransfer->date,
-            'amount' => WaybillIncoming::find()
-                    ->where(['shift_transfer_id' => $shiftTransfer->id])
-                    ->select(['summ'])
-                    ->scalar() ?? '',
-            'status_id' => self::STATUS_NEW,
-            'comment' => $shiftTransfer->comment,
-            'json' => json_encode($incomingData, JSON_UNESCAPED_UNICODE),
-            'type_id' => self::REPLACEMENT_ACTIONS,
-        ]);
-
-        $writeOffsData = WaybillWriteOffsProducts::find()
-            ->alias('wwop')
-            ->where(['waybill_write_offs_id' => WaybillWriteOffs::findOne(['shift_transfer_id' => $shiftTransfer->id])->id ?? ''])
-            ->leftJoin('products_1c AS product', 'product.id = wwop.product_id')
-            ->select([
-                'wwop.product_id',
-                'product.name AS product_name',
-                'wwop.product_count',
-                'wwop.product_price',
-                'wwop.product_self_cost',
-                'wwop.summ',
-                'wwop.summ_self_cost'
-            ])
-            ->asArray()
-            ->all();
-
-
-        $writeOffs = new self();
-        $writeOffs->setAttributes([
-            'store_id' => $shiftTransfer->store_guid,
-            'shift_transfer_id' => $shiftTransfer->id,
-            'date' => $shiftTransfer->date,
-            'amount' => WaybillWriteOffs::find()
-                    ->where(['shift_transfer_id' => $shiftTransfer->id])
-                    ->select(['summ'])
-                    ->scalar() ?? '',
-            'status_id' => self::STATUS_NEW,
-            'comment' => $shiftTransfer->comment,
-            'json' => json_encode($writeOffsData, JSON_UNESCAPED_UNICODE),
-            'type_id' => self::REPLACEMENT_ACTIONS,
-        ]);
+            $model = new self();
+            $model->setAttributes([
+                'store_id' => $shiftTransfer->store_guid,
+                'shift_transfer_id' => $shiftTransfer->id,
+                'date' => $shiftTransfer->date,
+                'amount' => EqualizationRemains::find()
+                        ->where(['shift_transfer_id' => $shiftTransfer->id])
+                        ->select(['SUM(balance) AS total_balance'])
+                        ->scalar() ?? '',
+                'status_id' => self::STATUS_NEW,
+                'comment' => $shiftTransfer->comment,
+                'json' => json_encode($equalizationData, JSON_UNESCAPED_UNICODE),
+                'replace_articule' => $articule,
+                'type_id' => self::REPLACEMENT_ACTIONS,
+            ]);
+        }
+
+        $incoming = null;
+        if (WaybillIncoming::find()->andWhere(['shift_transfer_id' => $shiftTransfer->id])->exists()) {
+            $wiId = WaybillIncoming::findOne(['shift_transfer_id' => $shiftTransfer->id])->id;
+            $incomingData = WaybillIncomingProducts::find()
+                ->alias('wip')
+                ->where(['waybill_incoming_id' => $wiId])
+                ->leftJoin('products_1c AS product', 'product.id = wip.product_id')
+                ->select([
+                    'wip.product_id',
+                    'product.name AS product_name',
+                    'wip.product_count',
+                    'wip.product_price',
+                    'wip.product_self_cost',
+                    'wip.summ',
+                    'wip.summ_self_cost'
+                ])
+                ->asArray()
+                ->all();
+
+            // Создание объекта incoming только если есть данные
+            $incoming = new self();
+            $incoming->setAttributes([
+                'store_id' => $shiftTransfer->store_guid,
+                'shift_transfer_id' => $shiftTransfer->id,
+                'date' => $shiftTransfer->date,
+                'amount' => WaybillIncoming::find()
+                        ->where(['shift_transfer_id' => $shiftTransfer->id])
+                        ->select(['summ'])
+                        ->scalar() ?? '',
+                'status_id' => self::STATUS_NEW,
+                'comment' => $shiftTransfer->comment,
+                'json' => json_encode($incomingData, JSON_UNESCAPED_UNICODE),
+                'type_id' => self::REPLACEMENT_ACTIONS,
+            ]);
+        }
 
+        $writeOffs = null;
+        if (WaybillWriteOffs::find()->andWhere(['shift_transfer_id' => $shiftTransfer->id])->exists()) {
+            $wwoId = WaybillWriteOffs::findOne(['shift_transfer_id' => $shiftTransfer->id])->id;
+            $writeOffsData = WaybillWriteOffsProducts::find()
+                ->alias('wwop')
+                ->where(['waybill_write_offs_id' => $wwoId])
+                ->leftJoin('products_1c AS product', 'product.id = wwop.product_id')
+                ->select([
+                    'wwop.product_id',
+                    'product.name AS product_name',
+                    'wwop.product_count',
+                    'wwop.product_price',
+                    'wwop.product_self_cost',
+                    'wwop.summ',
+                    'wwop.summ_self_cost'
+                ])
+                ->asArray()
+                ->all();
+
+            $writeOffs = new self();
+            $writeOffs->setAttributes([
+                'store_id' => $shiftTransfer->store_guid,
+                'shift_transfer_id' => $shiftTransfer->id,
+                'date' => $shiftTransfer->date,
+                'amount' => WaybillWriteOffs::find()
+                        ->where(['shift_transfer_id' => $shiftTransfer->id])
+                        ->select(['summ'])
+                        ->scalar() ?? '',
+                'status_id' => self::STATUS_NEW,
+                'comment' => $shiftTransfer->comment,
+                'json' => json_encode($writeOffsData, JSON_UNESCAPED_UNICODE),
+                'type_id' => self::REPLACEMENT_ACTIONS,
+            ]);
+        }
 
         try {
-            $model->save();
-            $incoming->save();
-            $writeOffs->save();
+            $model !== null && $model->save();
+            $incoming !== null && $incoming->save();
+            $writeOffs !== null && $writeOffs->save();
+
         } catch (\Exception $exception) {
             throw new Exception($exception);
         }
+
     }
 
     /**