From: marina Date: Thu, 19 Dec 2024 09:03:23 +0000 (+0300) Subject: ERP-256 Сделать отправку документов Пересортица в 1с X-Git-Tag: 1.7~132^2 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=1e0327904c944c2da5432f7df64489e885a80d94;p=erp24_rep%2Fyii-erp24%2F.git ERP-256 Сделать отправку документов Пересортица в 1с --- diff --git a/erp24/records/StoreBalance.php b/erp24/records/StoreBalance.php index 10f5ef1b..7f81166b 100644 --- a/erp24/records/StoreBalance.php +++ b/erp24/records/StoreBalance.php @@ -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); } + } /**