andWhere(['id_inventory' => $inventory->id_inventory])->all(); /** @var /common/models/InventoryItem $item */ foreach ($items as $item) { /** @var /common/models/InventoryItem $prev */ $prev = $item->inventoryItemPrev; if (!isset($prev)) { $start = null; $end = null; } else { $start = $prev->created_at; $end = $item->created_at; } $query = new Query(); $query->select(['coalesce(sum(waste.count),0) as total_waste']); $query->from(Waste::tableName()); $query->innerJoin(Product::tableName(), "product.id_product = waste.id_product"); if (isset($prev)) { $query->andWhere(['>', 'waste.created_at', $prev->created_at]); } $query->andWhere(['<', 'waste.created_at', $inventory->created_at]); if ($item->type == 10) { $query->andWhere(['product.id_product' => $item->id_product]); } else { $query->andWhere(['product.id_inventory_group' => $item->id_inventory_group]); } $product_waste = $query->scalar(); $item->count_waste = $product_waste; echo $item->price_brutto . " - " . $item->productName . " - " . $product_waste . "\n"; $item->save(); } } /** * @param $idInventory */ public function actionFixSold($idInventory) { $inventory = Inventory::findOne($idInventory); /** @var /common/models/InventoryItem[] $items */ $items = InventoryItem::find()->andWhere(['id_inventory' => $inventory->id_inventory])->all(); /** @var /common/models/InventoryItem $item */ foreach ($items as $item) { // $prev = $item->inventoryItemPrev; // // if ( !isset($prev)){ // continue; // } // $start = $prev->created_at; // $end = $item->created_at; // // // $query = new Query(); // $query->select([ // new Expression(" coalesce( sum( transfer.count ),0)") // ]); // $query->from('transfer'); // $query->innerJoin('sale','sale.id_sale = transfer.id_object'); // $query->innerJoin('product','sale.id_product = product.id_product'); // // $query->andWhere(['transfer.type' => Transfer::TYPE_PRODUCT]); // $query->andWhere(['in', 'transfer.status', [Transfer::STATUS_NOT_PAID, Transfer::STATUS_PAID]]); // $query->andWhere(['product.id_product' => $prev->id_product]); // // $query->andWhere([ '>','transfer.created_at',$start ]); // $query->andWhere([ '<','transfer.created_at',$end ]); // // $products = $query->scalar(); // // $item->count_sold = $products; // echo $item->price_brutto . " - " . $item->productName . "\n"; $item->save(); } } /** * Creates a new Inventory model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $inventoryManager = new InventoryManager(); $inventoryManager->generateDaily(); } }