use yii_app\records\Terminals;
use yii_app\records\WaybillIncoming;
use yii_app\records\WaybillIncomingProducts;
+use yii_app\records\WaybillWriteOffs;
+use yii_app\records\WaybillWriteOffsProducts;
use yii_app\records\WriteOffs;
use yii_app\records\WriteOffsErp;
use yii_app\records\WriteOffsProducts;
$writeOffCount = $writeOffArray['writeOffCount'];
$writeOffIdsString = $writeOffArray['writeOffIdsString'];
$writeOffIds = $writeOffArray['writeOffIds'];
+ $waybillWriteOffIds = $writeOffArray['waybillWriteOffIds'];
if (!empty($writeOff)) {
$mess['create_write_offs'] = $writeOff;
if (!empty($writeOffIds) && !empty($writeOff)) {
$this->getWriteOffsSetStatusSend($writeOffIds);
}
+ if (!empty($waybillWriteOffIds) && !empty($writeOff)) {
+ $this->getWaybillWriteOffsSetStatusSend($waybillWriteOffIds);
+ }
if (!empty($waybillIncomingIds) && !empty($waybillIncoming)) {
$this->getWaybillIncomingSetStatusSend($waybillIncomingIds);
}
}
}
+ private function getWaybillWriteOffsSetStatusSend($waybillWriteOffIds) {
+ try {
+ $waybillWriteOffsErp = WaybillWriteOffs::find()->where(['in', 'id', $waybillWriteOffIds])->all();
+ foreach ($waybillWriteOffsErp as $waybillWriteOffsErpElem) {
+ $waybillWriteOffsErpElem->status = 3;
+ $waybillWriteOffsErpElem->error_text = '';
+ $waybillWriteOffsErpElem->send_at = date('Y-m-d H:i:s');
+ $waybillWriteOffsErpElem->save();
+ if ($waybillWriteOffsErpElem->getErrors()) {
+ LogService::apiErrorLog(json_encode(["error_id" => 2, "error" => $waybillWriteOffsErpElem->getErrors()], JSON_UNESCAPED_UNICODE));
+ }
+ }
+ } catch (Exception $e3) {
+ file_put_contents(self::OUT_DIR . '/log_created_write_offs_erp_error.txt', PHP_EOL . date("d.m.Y H:i:s",time()). $e3->getMessage(), FILE_APPEND);
+ }
+ }
+
private function getWaybillIncomingSetStatusSend($waybillIncomingIds) {
try {
$waybillIncoming = WaybillIncoming::find()->where(['in', 'id', $waybillIncomingIds])->all();
}
}
+
+ $waybillWriteOffs = WaybillWriteOffs::find()
+ ->select([
+ 'id',
+ 'guid',
+ 'store_guid',
+ 'number',
+ 'date',
+ 'status',
+ 'comment',
+ 'quantity',
+ 'summ'
+ ])
+ ->where(['status' => WaybillWriteOffs::STATUS_NEW])
+ ->asArray()
+ ->all();
+
+ if (!empty($waybillWriteOffs)) {
+ $waybillWriteOffIds = array_column($waybillWriteOffs, 'id');
+
+ $additionalProducts = WaybillWriteOffsProducts::find()
+ ->select(['waybill_write_offs_id', 'product_id', 'product_count', 'product_price', 'summ'])
+ ->where(['in', 'waybill_write_offs_id', $waybillWriteOffIds])
+ ->asArray()
+ ->all();
+
+ $waybillWriteOffProducts = [];
+ foreach ($additionalProducts as $product) {
+ $waybillWriteOffProducts[$product['waybill_write_offs_id']][] = [
+ 'product_id' => $product['product_id'],
+ 'quantity' => (string) $product['product_count'],
+ 'price' => $product['product_price'],
+ ];
+ }
+
+ foreach ($waybillWriteOffs as $row) {
+ $waybillProductsRow = $waybillWriteOffProducts[$row['id']] ?? [];
+ $writeOffResult[] = [
+ 'id' => $row['guid'],
+ 'store_id' => $row['store_guid'],
+ 'type' => 'ревизия при передаче смены',
+ 'cause' => 'Документ ревизии при передаче смены в ERP ' . $row['number'],
+ 'items' => $waybillProductsRow,
+ 'summ' => $row['summ'],
+ 'comment' => $row['comment'],
+ ];
+ }
+ }
+
+
} catch (Exception $e3) {
file_put_contents(self::OUT_DIR . '/log_created_write_offs_erp_error.txt', PHP_EOL . date("d.m.Y H:i:s",time()). $e3->getMessage(). ' file: '. $e3->getFile() . ' line: '. $e3->getLine(), FILE_APPEND);
}
'writeOffCount' => $writeOffCount,
'writeOffIds' => $writeOffIds,
'writeOffIdsString' => $writeOffIdsString,
+ 'waybillWriteOffIds' => $waybillWriteOffIds,
];
}