From: Alexander Smirnov Date: Wed, 28 Aug 2024 14:51:21 +0000 (+0300) Subject: [ERP-130] Добавил себестоимости в брак X-Git-Tag: 1.4~11^2~30 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=929f5e4783883aebb118687007d4ed2e4313c422;p=erp24_rep%2Fyii-erp24%2F.git [ERP-130] Добавил себестоимости в брак --- diff --git a/erp24/services/MotivationService.php b/erp24/services/MotivationService.php index 6b9b446a..d1c60570 100644 --- a/erp24/services/MotivationService.php +++ b/erp24/services/MotivationService.php @@ -13,6 +13,7 @@ use yii_app\records\MotivationValue; use yii_app\records\MotivationValueGroup; use yii_app\records\CityStore; use yii_app\records\MotivationCostsItem; +use yii_app\records\SelfCostProduct; use yii_app\records\WriteOffs; use yii_app\records\Products1c; use yii_app\records\ProductsClass; @@ -386,36 +387,37 @@ class MotivationService continue; } - $motivationValueGroup = MotivationValueGroup::find()->where(['alias' => 'week' . $ind])->one(); - if ($exportImportTable) { - $writeOffs = WriteOffs::find()->select(['sum(summ) as total', 'type']) + $writeOffs = WriteOffs::find()->select(['items', 'type']) ->where(['between', 'date', $weekStart, $weekEnd]) ->andWhere(['store_id' => $exportImportTable->export_val]) - ->groupBy(['type']) ->indexBy('type') ->asArray()->all(); + $selfCostProduct = SelfCostProduct::find()->select(['price', 'product_guid']) + ->where(['between', 'date', $weekStart, $weekEnd]) + ->andWhere(['store_id' => $store_id]) + ->indexBy('product_guid') + ->asArray()->all(); + foreach (MotivationCostsItem::getWriteOffsItems() as $key) { - $data = $writeOffs[$key] ?? []; + $data = $writeOffs[$key] ?? null; + $sum = 0; + if (!empty($data)) { + try { + $json = Json::decode($data['items'] ?? '[]'); + + foreach ($json as $itemArr) { + $sum += ($selfCostProduct[$itemArr['product_id']]["price"] ?? 0) * ($itemArr['quantity'] ?? 0); + } + } catch (\Exception $ex) {} + } $motivationItemType = MotivationCostsItem::writeOffsToMotivationItemMap($key); $motivationCostsItem = MotivationCostsItem::find()->where(['name' => $motivationItemType])->one(); /** @var $motivationCostsItem MotivationCostsItem */ - if ($motivation) { - $motivationValue = MotivationValue::find()->where(['motivation_id' => $motivation->id, - 'motivation_group_id' => $motivationValueGroup->id, 'value_id' => $motivationCostsItem->code])->one(); - if (!$motivationValue) { - $motivationValue = new MotivationValue; - $motivationValue->motivation_id = $motivation->id; - $motivationValue->motivation_group_id = $motivationValueGroup->id; - $motivationValue->value_id = $motivationCostsItem->code; - $motivationValue->value_type = $motivationCostsItem->data_type; - } - $motivationValue->value_float = $data['total'] ?? 0; - $motivationValue->save(); - if ($motivationValue->getErrors()) { - throw new \Exception(Json::encode($motivationValue->getErrors())); - } + if ($motivation && $motivationCostsItem) { + self::saveOrUpdateMotivationValue($motivation->id, 'week' . $ind, $motivationCostsItem->code, + MotivationCostsItem::DATA_TYPE_FLOAT, $sum); } } }