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);
}
+
}
/**