71 lines
1.8 KiB
PHP
71 lines
1.8 KiB
PHP
<?php
|
|
namespace console\controllers;
|
|
|
|
use common\models\Inventory;
|
|
use common\models\InventoryItem;
|
|
use common\models\Transfer;
|
|
use yii\console\Controller;
|
|
use yii\db\Expression;
|
|
use yii\db\Query;
|
|
|
|
|
|
class InventoryConsoleController extends Controller{
|
|
|
|
|
|
/**
|
|
* @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;
|
|
|
|
$item->recalculateTotalPriceBrutto();
|
|
|
|
echo $item->price_brutto . " - ". $item->productName ."\n";
|
|
|
|
$item->save();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|