// Установить значение в зависимости от типа
switch ($value_type) {
case 'float':
- $motivationValue->value_float = $value;
+ $motivationValue->value_float = $value ?? 0;
break;
case 'int':
- $motivationValue->value_int = $value;
+ $motivationValue->value_int = $value ?? 0;
break;
case 'string':
- $motivationValue->value_string = $value;
+ $motivationValue->value_string = $value ?? '';
break;
default:
throw new \InvalidArgumentException("Неправильное значение типа: $value_type");
$storeIds = ArrayHelper::getColumn(CityStore::find()->where(['visible' => '1'])->all(), 'id');
foreach ($storeIds as $store_id) {
if (isset($motivations[$store_id])) {
- if (isset($salesOffline[$store_id])) {
- $correction = self::getMotivationValue($motivations[$store_id]->id, 8, $motivationCostsItemOffline->code);
-
- $motivationValueOffline = MotivationValue::find()->where(['motivation_id' => $motivations[$store_id]->id,
- 'motivation_group_id' => $motivationValueGroupFact->id, 'value_id' => $motivationCostsItemOffline->code])->one();
- if (!$motivationValueOffline) {
- $motivationValueOffline = new MotivationValue;
- $motivationValueOffline->motivation_id = $motivations[$store_id]->id;
- $motivationValueOffline->motivation_group_id = $motivationValueGroupFact->id;
- $motivationValueOffline->value_id = $motivationCostsItemOffline->code;
- $motivationValueOffline->value_type = $motivationCostsItemOffline->data_type;
- }
- $motivationValueOffline->value_float = $salesOffline[$store_id]['total'] + $correction;
- $motivationValueOffline->save();
- if ($motivationValueOffline->getErrors()) {
- throw new \Exception(Json::encode($motivationValueOffline->getErrors()));
- }
+ $correction = self::getMotivationValue($motivations[$store_id]->id, 8, $motivationCostsItemOffline->code);
+
+ $motivationValueOffline = MotivationValue::find()->where(['motivation_id' => $motivations[$store_id]->id,
+ 'motivation_group_id' => $motivationValueGroupFact->id, 'value_id' => $motivationCostsItemOffline->code])->one();
+ if (!$motivationValueOffline) {
+ $motivationValueOffline = new MotivationValue;
+ $motivationValueOffline->motivation_id = $motivations[$store_id]->id;
+ $motivationValueOffline->motivation_group_id = $motivationValueGroupFact->id;
+ $motivationValueOffline->value_id = $motivationCostsItemOffline->code;
+ $motivationValueOffline->value_type = $motivationCostsItemOffline->data_type;
}
- if (isset($salesOnline[$store_id])) {
- $correction = self::getMotivationValue($motivations[$store_id]->id, 8, $motivationCostsItemOnline->code);
-
- $motivationValueOnline = MotivationValue::find()->where(['motivation_id' => $motivations[$store_id]->id,
- 'motivation_group_id' => $motivationValueGroupFact->id, 'value_id' => $motivationCostsItemOnline->code])->one();
- if (!$motivationValueOnline) {
- $motivationValueOnline = new MotivationValue;
- $motivationValueOnline->motivation_id = $motivations[$store_id]->id;
- $motivationValueOnline->motivation_group_id = $motivationValueGroupFact->id;
- $motivationValueOnline->value_id = $motivationCostsItemOnline->code;
- $motivationValueOnline->value_type = $motivationCostsItemOnline->data_type;
- }
- $motivationValueOnline->value_float = $salesOnline[$store_id]['total'] + $correction;
- $motivationValueOnline->save();
- if ($motivationValueOnline->getErrors()) {
- throw new \Exception(Json::encode($motivationValueOnline->getErrors()));
- }
+ $motivationValueOffline->value_float = ($salesOffline[$store_id]['total'] ?? 0) + $correction;
+ $motivationValueOffline->save();
+ if ($motivationValueOffline->getErrors()) {
+ throw new \Exception(Json::encode($motivationValueOffline->getErrors()));
+ }
+
+ $correction = self::getMotivationValue($motivations[$store_id]->id, 8, $motivationCostsItemOnline->code);
+
+ $motivationValueOnline = MotivationValue::find()->where(['motivation_id' => $motivations[$store_id]->id,
+ 'motivation_group_id' => $motivationValueGroupFact->id, 'value_id' => $motivationCostsItemOnline->code])->one();
+ if (!$motivationValueOnline) {
+ $motivationValueOnline = new MotivationValue;
+ $motivationValueOnline->motivation_id = $motivations[$store_id]->id;
+ $motivationValueOnline->motivation_group_id = $motivationValueGroupFact->id;
+ $motivationValueOnline->value_id = $motivationCostsItemOnline->code;
+ $motivationValueOnline->value_type = $motivationCostsItemOnline->data_type;
+ }
+ $motivationValueOnline->value_float = ($salesOnline[$store_id]['total'] ?? 0) + $correction;
+ $motivationValueOnline->save();
+ if ($motivationValueOnline->getErrors()) {
+ throw new \Exception(Json::encode($motivationValueOnline->getErrors()));
}
}
}
$storeIds = ArrayHelper::getColumn(CityStore::find()->where(['visible' => '1'])->all(), 'id');
foreach ($storeIds as $store_id) {
if (isset($motivations[$store_id])) {
- if (isset($salesProduct[$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'] + $correction;
- $motivationValueService->save();
- if ($motivationValueService->getErrors()) {
- throw new \Exception(Json::encode($motivationValueService->getErrors()));
- }
+ $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;
}
- if (isset($salesProductDelivery[$store_id])) {
- $correction = self::getMotivationValue($motivations[$store_id]->id, 8, $motivationCostsItemServicesDelivery->code);
-
- $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'] + $correction;
- $motivationValueServiceDelivery->save();
- if ($motivationValueServiceDelivery->getErrors()) {
- throw new \Exception(Json::encode($motivationValueServiceDelivery->getErrors()));
- }
+ $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, $motivationCostsItemServicesDelivery->code);
+
+ $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()));
}
}
}
->groupBy(['type'])
->indexBy('type')
->asArray()->all();
- foreach ($writeOffs as $key => $data) {
- $motivationItemType = MotivationCostsItem::writeOffsToMotivationItemMap($key);
- if (empty($motivationItemType)) {
- continue;
- }
+ foreach (MotivationCostsItem::writeOffsToMotivationItemArray() as $key => $motivationItemType) {
+ $data = $writeOffs[$key] ?? [];
$motivationCostsItem = MotivationCostsItem::find()->where(['name' => $motivationItemType])->one();
/** @var $motivationCostsItem MotivationCostsItem */
$motivationValue->value_id = $motivationCostsItem->code;
$motivationValue->value_type = $motivationCostsItem->data_type;
}
- $motivationValue->value_float = $data['total'] + $correction;
+ $motivationValue->value_float = ($data['total'] ?? 0) + $correction;
$motivationValue->save();
if ($motivationValue->getErrors()) {
throw new \Exception(Json::encode($motivationValue->getErrors()));
6, 33, "float", $correction);
}
}
+
+ public static function initMonth1cFields($year, $month) {
+ $motivations = Motivation::find()
+ ->where(['year' => $year, 'month' => $month])
+ ->all();
+
+ $valueIdIndices = [12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 30];
+
+ foreach ($motivations as $motivation) {
+ foreach ($valueIdIndices as $index) {
+ self::saveOrUpdateMotivationValue($motivation->id, 6, $index, "float", 0);
+ }
+ }
+ }
}