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;
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);
}
}
}