$motivations = Motivation::find()->where(['year' => $year, 'month' => $month])->indexBy('store_id')->all();
- $motivationValueGroupFact = MotivationValueGroup::find()->where(['alias' => 'fact'])->one();
- $motivationCostsItemServices = MotivationCostsItem::find()->where(['name' => 'Услуги по сборке'])->one();
- $motivationCostsItemServicesDelivery = MotivationCostsItem::find()->where(['name' => 'Услуги по доставке'])->one();
- /** @var $motivationCostsItemServices MotivationCostsItem */
- /** @var $motivationCostsItemServicesDelivery MotivationCostsItem */
-
$storeIds = ArrayHelper::getColumn(CityStore::find()->where(['visible' => '1'])->all(), 'id');
foreach ($storeIds as $store_id) {
if (isset($motivations[$store_id])) {
- $correction = self::getMotivationValue($motivations[$store_id]->id, 8, $motivationCostsItemServices->code);
-
- $motivationValueService = MotivationValue::find()->where(['motivation_id' => $motivations[$store_id]->id,
- 'motivation_group_id' => $motivationValueGroupFact->id, 'value_id' => $motivationCostsItemServices->code])->one();
- if (!$motivationValueService) {
- $motivationValueService = new MotivationValue;
- $motivationValueService->motivation_id = $motivations[$store_id]->id;
- $motivationValueService->motivation_group_id = $motivationValueGroupFact->id;
- $motivationValueService->value_id = $motivationCostsItemServices->code;
- $motivationValueService->value_type = $motivationCostsItemServices->data_type;
- }
- $motivationValueService->value_float = ($salesProduct[$store_id]['total'] ?? 0) + $correction;
- $motivationValueService->save();
- if ($motivationValueService->getErrors()) {
- throw new \Exception(Json::encode($motivationValueService->getErrors()));
- }
+ $correction = self::getMotivationValue($motivations[$store_id]->id, 8, self::CODE_ASSEMBLY_SERVICES);
- $correction = self::getMotivationValue($motivations[$store_id]->id, 8, $motivationCostsItemServicesDelivery->code);
+ self::saveOrUpdateMotivationValue($motivations[$store_id]->id, "fact",
+ self::CODE_ASSEMBLY_SERVICES, "float", ($salesProduct[$store_id]['total'] ?? 0) + $correction);
- $motivationValueServiceDelivery = MotivationValue::find()->where(['motivation_id' => $motivations[$store_id]->id,
- 'motivation_group_id' => $motivationValueGroupFact->id, 'value_id' => $motivationCostsItemServicesDelivery->code])->one();
- if (!$motivationValueServiceDelivery) {
- $motivationValueServiceDelivery = new MotivationValue;
- $motivationValueServiceDelivery->motivation_id = $motivations[$store_id]->id;
- $motivationValueServiceDelivery->motivation_group_id = $motivationValueGroupFact->id;
- $motivationValueServiceDelivery->value_id = $motivationCostsItemServicesDelivery->code;
- $motivationValueServiceDelivery->value_type = $motivationCostsItemServicesDelivery->data_type;
- }
- $motivationValueServiceDelivery->value_float = ($salesProductDelivery[$store_id]['total'] ?? 0) + $correction;
- $motivationValueServiceDelivery->save();
- if ($motivationValueServiceDelivery->getErrors()) {
- throw new \Exception(Json::encode($motivationValueServiceDelivery->getErrors()));
- }
+ $correctionDelivery = self::getMotivationValue($motivations[$store_id]->id, 8, self::CODE_DELIVERY_SERVICES);
+
+ self::saveOrUpdateMotivationValue($motivations[$store_id]->id, "fact",
+ self::CODE_DELIVERY_SERVICES, "float", ($salesProductDelivery[$store_id]['total'] ?? 0) + $correctionDelivery);
}
}
}