add inventory daily

This commit is contained in:
Roland Schneider 2017-03-25 22:18:27 +01:00
parent 2b5f5f60fd
commit b9c442fe22
13 changed files with 262 additions and 34 deletions

View File

@ -96,6 +96,7 @@ class AdminMenuStructure{
$items[] = ['label' => 'Leltár', 'url' => ['/inventory/index'] ]; $items[] = ['label' => 'Leltár', 'url' => ['/inventory/index'] ];
$items[] = ['label' => 'Részletes eladások', 'url' => ['/transfer/sale' ,'TransferSaleSearch[start]' =>$todayDatetime,'TransferSaleSearch[end]' => $tomorrowDatetime ] ]; $items[] = ['label' => 'Részletes eladások', 'url' => ['/transfer/sale' ,'TransferSaleSearch[start]' =>$todayDatetime,'TransferSaleSearch[end]' => $tomorrowDatetime ] ];
$items[] = ['label' => 'Termék összesítő', 'url' => ['/product/statistics' ,'ProductStatisticsSearch[start]' =>$todayDatetime,'ProductStatisticsSearch[end]' => $tomorrowDatetime ] ]; $items[] = ['label' => 'Termék összesítő', 'url' => ['/product/statistics' ,'ProductStatisticsSearch[start]' =>$todayDatetime,'ProductStatisticsSearch[end]' => $tomorrowDatetime ] ];
$items[] = ['label' => 'Leltár pillanat képek', 'url' => ['/inventory/daily' ] ];
$this->menuItems[] = ['label' => 'Termékek', 'url' => $this->emptyUrl, $this->menuItems[] = ['label' => 'Termékek', 'url' => $this->emptyUrl,
'items' => $items 'items' => $items
]; ];

View File

@ -0,0 +1,22 @@
<?php
namespace backend\components;
use common\models\Inventory;
class InventoryManager
{
/**
* @return Inventory
*/
public function generateDaily(){
$model = new Inventory();
$model->status = Inventory::$STATUS_CLOSED;
$model->type = Inventory::$TYPE_DAILY;
$model->name = 'Automatikus Napi '.date('Ymd_His') ;
$model->save(false);
return $model;
}
}
?>

View File

@ -2,6 +2,8 @@
namespace backend\controllers; namespace backend\controllers;
use backend\components\InventoryManager;
use backend\models\InventorySearchAuto;
use /** @noinspection PhpMethodOrClassCallIsNotCaseSensitiveInspection */ use /** @noinspection PhpMethodOrClassCallIsNotCaseSensitiveInspection */
Yii; Yii;
use common\models\Inventory; use common\models\Inventory;
@ -45,6 +47,34 @@ class InventoryController extends Controller
]); ]);
} }
/**
* Lists all Inventory models.
* @return mixed
*/
public function actionDaily()
{
$searchModel = new InventorySearchAuto();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('daily', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
/**
* Creates a new Inventory model with type daily.
* If creation is successful, the browser will be redirected to the 'view' page.
* @return mixed
*/
public function actionCreateDaily()
{
$inventoryManager = new InventoryManager();
$model = $inventoryManager->generateDaily();
return $this->redirect(['inventory-item/index', 'id' => $model->id_inventory]);
}
/** /**
* Creates a new Inventory model. * Creates a new Inventory model.
@ -57,6 +87,7 @@ class InventoryController extends Controller
$user = User::findOne(\Yii::$app->user->id); $user = User::findOne(\Yii::$app->user->id);
$model->status = Inventory::$STATUS_OPEN; $model->status = Inventory::$STATUS_OPEN;
$model->type = Inventory::$TYPE_MANUAL;
$model->name = 'Leltár_'.date('Ymd_His') .'_' . $user->username; $model->name = 'Leltár_'.date('Ymd_His') .'_' . $user->username;

View File

@ -19,6 +19,9 @@ use common\models\Sale;
/** /**
* ContactForm is the model behind the contact form. * ContactForm is the model behind the contact form.
* @property \Yii\web\UploadedFile $file * @property \Yii\web\UploadedFile $file
* @property \common\models\Inventory $inventory
* @property \common\models\Inventory $last_inventory
* @property number $id_inventory
*/ */
class InventoryItemForm extends Model{ class InventoryItemForm extends Model{
@ -102,10 +105,17 @@ class InventoryItemForm extends Model{
$item = new InventoryItem(); $item = new InventoryItem();
$item->count_in = $this->product_in; $item->count_in = $this->product_in;
$item->count_sold = $this->product_out; $item->count_sold = $this->product_out;
$item->count = $this->count;
$item->count_system = $this->product_stock; $item->count_system = $this->product_stock;
if ( isset($this->inventory )){
if ( $this->inventory->type == Inventory::$TYPE_DAILY){
$item->count = $this->product_stock;
}else{
$item->count = $this->count;
}
}
if ( isset( $this->last_inventory_item ) ){ if ( isset( $this->last_inventory_item ) ){
$item->id_inventory_item_prev = $this->last_inventory_item->id_inventory_item; $item->id_inventory_item_prev = $this->last_inventory_item->id_inventory_item;
$item->count_prev = $this->last_inventory_item->count; $item->count_prev = $this->last_inventory_item->count;
@ -117,7 +127,9 @@ class InventoryItemForm extends Model{
} }
$item->id_user = \Yii::$app->user->id; if ( isset(\Yii::$app->user )){
$item->id_user = \Yii::$app->user->id;
}
if ( $this->type == 'product'){ if ( $this->type == 'product'){
$item->price_brutto = $this->product->sale_price; $item->price_brutto = $this->product->sale_price;
@ -202,16 +214,6 @@ class InventoryItemForm extends Model{
} }
public function addProductItem(){
}
public function addGroupItem(){
}
/** /**
* Load previous inventory item, if exists * Load previous inventory item, if exists
* */ * */
@ -259,6 +261,7 @@ class InventoryItemForm extends Model{
} }
$query->andWhere(['<', 'inventory.created_at' , $this->inventory->created_at]); $query->andWhere(['<', 'inventory.created_at' , $this->inventory->created_at]);
$query->andWhere(['=', 'inventory.type' , $this->inventory->type]);
$query->orderBy(['created_at' => SORT_DESC ]); $query->orderBy(['created_at' => SORT_DESC ]);
$this->last_inventory =$query->limit(1)->one(); $this->last_inventory =$query->limit(1)->one();
} }

View File

@ -80,7 +80,7 @@ class InventoryItemSearch extends InventoryItem
$query->from(InventoryItem::tableName()); $query->from(InventoryItem::tableName());
$query->innerJoin(User::tableName(), "user.id = inventory_item.id_user"); $query->leftJoin(User::tableName(), "user.id = inventory_item.id_user");
$query->leftJoin(Product::tableName(), "product.id_product = inventory_item.id_product"); $query->leftJoin(Product::tableName(), "product.id_product = inventory_item.id_product");
$query->leftJoin(InventoryGroup::tableName(), "inventory_group.id_inventory_group = inventory_item.id_inventory_group"); $query->leftJoin(InventoryGroup::tableName(), "inventory_group.id_inventory_group = inventory_item.id_inventory_group");
$query->leftJoin(Inventory::tableName(), "inventory.id_inventory = inventory_item.id_inventory"); $query->leftJoin(Inventory::tableName(), "inventory.id_inventory = inventory_item.id_inventory");

View File

@ -42,6 +42,7 @@ class InventorySearch extends Inventory
public function search($params) public function search($params)
{ {
$query = Inventory::find(); $query = Inventory::find();
$query->andWhere(['=','type',Inventory::$TYPE_MANUAL]);
$dataProvider = new ActiveDataProvider([ $dataProvider = new ActiveDataProvider([
'query' => $query, 'query' => $query,
@ -65,6 +66,7 @@ class InventorySearch extends Inventory
'updated_at' => $this->updated_at, 'updated_at' => $this->updated_at,
]); ]);
return $dataProvider; return $dataProvider;
} }
} }

View File

@ -0,0 +1,72 @@
<?php
namespace backend\models;
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use common\models\Inventory;
/**
* InventorySearch represents the model behind the search form about `common\models\Inventory`.
*/
class InventorySearchAuto extends Inventory
{
/**
* @inheritdoc
*/
public function rules()
{
return [
[['id_inventory', 'id_user'], 'integer'],
[['created_at', 'updated_at'], 'safe'],
];
}
/**
* @inheritdoc
*/
public function scenarios()
{
// bypass scenarios() implementation in the parent class
return Model::scenarios();
}
/**
* Creates data provider instance with search query applied
*
* @param array $params
*
* @return ActiveDataProvider
*/
public function search($params)
{
$query = Inventory::find();
$query->andWhere(['=','type',Inventory::$TYPE_DAILY]);
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort' => [
'defaultOrder' => ['created_at' => SORT_DESC]
]
]);
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
$query->andFilterWhere([
'id_inventory' => $this->id_inventory,
'id_user' => $this->id_user,
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
]);
return $dataProvider;
}
}

View File

@ -12,6 +12,12 @@ use backend\assets\InventoryItemIndexAsset;
/* @var $model \common\models\Inventory */ /* @var $model \common\models\Inventory */
$this->title = Yii::t('common/inventory-item', 'Leltár részletei'); $this->title = Yii::t('common/inventory-item', 'Leltár részletei');
if ( $model->type == \common\models\Inventory::$TYPE_DAILY){
$this->params['breadcrumbs'][] = ['label' => Yii::t('common/inventory', 'Leltár pillanat képek'), 'url' => ['inventory/daily']];
}else{
$this->params['breadcrumbs'][] = ['label' => Yii::t('common/inventory', 'Leltár lista'), 'url' => ['inventory/index']];
}
$this->params['breadcrumbs'][] = $this->title; $this->params['breadcrumbs'][] = $this->title;

View File

@ -0,0 +1,50 @@
<?php
use yii\helpers\Html;
use yii\grid\GridView;
use yii\helpers\Url;
/* @var $this yii\web\View */
/* @var $searchModel backend\models\InventorySearch */
/* @var $dataProvider yii\data\ActiveDataProvider */
$this->title = Yii::t('common/inventory', 'Leltár pillanat képek');
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="inventory-index">
<h1><?= Html::encode($this->title) ?></h1>
<?php // echo $this->render('_search', ['model' => $searchModel]); ?>
<p>
<?php echo Html::a(Yii::t('common/inventory', 'Új leltár pillanat kép'), ['create-daily'], ['data-method' => 'POST','class' => 'btn btn-success']) ?>
</p>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
'id_inventory',
'name',
// [ 'attribute' => 'id_user', "value" =>"userName" ],
'created_at:datetime',
// [ 'attribute' => 'status', "value" =>"statusHuman" ],
['class' => 'yii\grid\ActionColumn',
'template' => '{view}',
'urlCreator' => function( $action, $model, $key, $index ){
if ( $action == 'view' ){
return Url::to(['inventory-item/index' , 'id'=> $model->id_inventory]);
}
},
'buttons' =>[
'view' =>function ($url, $model, $key) {
return Html::a('Részletek', $url,['class' => 'btn btn-xs btn-primary',
]) ;
}
]
],
],
]); ?>
</div>

View File

@ -5,7 +5,6 @@ namespace common\models;
use Yii; use Yii;
use common\components\UserAwareBehavior; use common\components\UserAwareBehavior;
use yii\helpers\ArrayHelper; use yii\helpers\ArrayHelper;
use yii\db\Query;
use backend\models\InventoryItemForm; use backend\models\InventoryItemForm;
use common\components\AccountAwareBehavior; use common\components\AccountAwareBehavior;
use common\components\Helper; use common\components\Helper;
@ -17,6 +16,7 @@ use common\components\Helper;
* @property integer $id_user * @property integer $id_user
* @property integer $id_account * @property integer $id_account
* @property integer $status * @property integer $status
* @property integer $type
* @property string $name * @property string $name
* @property string $created_at * @property string $created_at
* @property string $updated_at * @property string $updated_at
@ -29,6 +29,9 @@ class Inventory extends \common\models\BaseFitnessActiveRecord
public static $STATUS_OPEN = 10; public static $STATUS_OPEN = 10;
public static $STATUS_CLOSED = 20; public static $STATUS_CLOSED = 20;
public static $TYPE_MANUAL = 1;
public static $TYPE_DAILY = 2;
/** /**
* @inheritdoc * @inheritdoc
@ -84,10 +87,10 @@ class Inventory extends \common\models\BaseFitnessActiveRecord
[ [
'class' => UserAwareBehavior::className(), 'class' => UserAwareBehavior::className(),
], ],
[ [
'class' => AccountAwareBehavior::className() 'class' => AccountAwareBehavior::className()
] ]
], parent::behaviors()); ], parent::behaviors());
} }
@ -99,11 +102,8 @@ class Inventory extends \common\models\BaseFitnessActiveRecord
$query->andWhere(['id_account' => $this->id_account]); $query->andWhere(['id_account' => $this->id_account]);
} }
// $query->andWhere("product.id_inventory_group is null");
$products = $query->all(); $products = $query->all();
//echo "Products found: " . count($products);
$inventoryGroups = InventoryGroup::find()->all(); $inventoryGroups = InventoryGroup::find()->all();
@ -130,9 +130,6 @@ class Inventory extends \common\models\BaseFitnessActiveRecord
); );
$form->save(); $form->save();
} }
} }
} }

View File

@ -1,6 +1,7 @@
<?php <?php
namespace console\controllers; namespace console\controllers;
use backend\components\InventoryManager;
use common\models\Inventory; use common\models\Inventory;
use common\models\InventoryItem; use common\models\InventoryItem;
use common\models\Transfer; use common\models\Transfer;
@ -63,6 +64,18 @@ class InventoryConsoleController extends Controller{
} }
/**
* 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();
}
} }

View File

@ -0,0 +1,30 @@
<?php
use yii\db\Schema;
use yii\db\Migration;
class m170324_064243_alter_table_inventory_add_column_type extends Migration
{
public function up()
{
$this->addColumn("inventory", "type", "int default 1");
}
public function down()
{
echo "m170324_064243_alter_table_inventory_add_column_type cannot be reverted.\n";
return false;
}
/*
// Use safeUp/safeDown to run migration code within a transaction
public function safeUp()
{
}
public function safeDown()
{
}
*/
}

View File

@ -9,3 +9,4 @@
php /var/www/html/cutler/yii ticket/index php /var/www/html/cutler/yii ticket/index
php /var/www/html/cutler/yii ticket/daily php /var/www/html/cutler/yii ticket/daily
php /var/www/html/cutler/yii doorlog/delete-old php /var/www/html/cutler/yii doorlog/delete-old
php /var/www/html/cutler/yii inventory-console/create