diff --git a/backend/components/AdminMenuStructure.php b/backend/components/AdminMenuStructure.php
index 593093b..88d4379 100644
--- a/backend/components/AdminMenuStructure.php
+++ b/backend/components/AdminMenuStructure.php
@@ -30,6 +30,9 @@ class AdminMenuStructure{
$userMainMenu = null;
$items = [];
+ //$today = \Yii::$app->formatter->asDate( time() );
+ $today = \Yii::$app->formatter->asDate( strtotime('today UTC') );
+ $tomorrow = \Yii::$app->formatter->asDate( ( 60 *60 *24 + time()));
// if ( $this->can('backend.user.index')){
$items[] = ['label' => 'Felhasználók', 'url' =>['/user/index']];
@@ -45,7 +48,11 @@ class AdminMenuStructure{
$items[] = ['label' => 'Vendégek', 'url' => ['/customer/index'] ];
$items[] = ['label' => 'Bérletkártyák', 'url' => ['/card/index'] ];
$items[] = ['label' => 'Pénznem', 'url' => ['/currency/index'] ];
- $items[] = ['label' => 'Tranzakciók', 'url' => ['/transfer/index'] ];
+
+
+
+
+ $items[] = ['label' => 'Tranzakciók', 'url' => ['/transfer/index' , 'TransferSearch[start]' =>$today,'TransferSearch[end]' => $tomorrow ] ];
$items[] = ['label' => 'Kassza müveletek', 'url' => ['/account-state/index'] ];
if ( count($items) > 0 ){
diff --git a/backend/models/TransferSearch.php b/backend/models/TransferSearch.php
index 99112a9..e6a1b2e 100644
--- a/backend/models/TransferSearch.php
+++ b/backend/models/TransferSearch.php
@@ -36,7 +36,7 @@ class TransferSearch extends Transfer
{
return [
[[ 'id_account','id_user', 'type'], 'integer'],
- [[ 'searchObjectName' ], 'string'],
+// [[ 'searchObjectName' ], 'string'],
[[ 'start', ], 'date' , 'timestampAttribute' => 'timestampStart' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ],
[[ 'end' , ], 'date' , 'timestampAttribute' => 'timestampEnd' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ],
];
@@ -66,14 +66,17 @@ class TransferSearch extends Transfer
'query' => $query,
]);
-// $query->distinct();
- $selectObjectName = "";
- $selectObjectName .= " case when transfer.type = " .self::TYPE_PRODUCT ." then product.name else ticket_type.name end as object_name";
+// $selectObjectName = "";
+// $selectObjectName .= " case when transfer.type = " .self::TYPE_PRODUCT ." then product.name ";
+// $selectObjectName .= " when transfer.type = " .self::TYPE_TICKET ." then ticket_type.name ";
+// $selectObjectName .= " when transfer.type = " .self::TYPE_MONEY_MOVEMENT_OUT ." then 'Pénzmozgás' ";
+// $selectObjectName .= " else '' ";
+// $selectObjectName .= " end as object_name";
- $query->addSelect( ['*', new Expression($selectObjectName) ]);
- $query->joinWith('ticket');
- $query->joinWith('ticketType');
- $query->joinWith('product');
+ $query->addSelect( ['*' ]);
+// $query->joinWith('ticket');
+// $query->joinWith('ticketType');
+// $query->joinWith('product');
$this->load($params);
@@ -92,14 +95,22 @@ class TransferSearch extends Transfer
$query->andFilterWhere([ '>=', 'transfer.created_at', $this->timestampStart ] );
$query->andFilterWhere([ '<', 'transfer.created_at', $this->timestampEnd ] );
- if ( isset($this->searchObjectName))
- $query->andWhere( new Expression(" case when transfer.type = " .self::TYPE_PRODUCT ." then product.name else ticket_type.name end like '%" . $this->searchObjectName ."%'"));
+// if ( isset($this->searchObjectName))
+// $query->andWhere( new Expression(" case when transfer.type = " .self::TYPE_PRODUCT ." then product.name else ticket_type.name end like '%" . $this->searchObjectName ."%'"));
return $dataProvider;
}
+
+ public function search2(){
+ $query = new Query() ;
+ $query->select('*');
+
+
+ }
+
public function totals($params){
$query = new Query();
@@ -111,11 +122,11 @@ class TransferSearch extends Transfer
'money' => 0
];
- $query->addSelect( [ new Expression( 'transfer.id_account as account'), new Expression( ' COALESCE(sum( transfer.money ),0) as money' )]);
+ $query->addSelect( [ new Expression( 'transfer.id_account as account'), new Expression( ' COALESCE(sum( ( case when direction = '.Transfer::DIRECTION_OUT.' then -1 else 1 end )* transfer.money ),0) as money' )]);
$query->from('transfer');
- $query->leftJoin('ticket', 'transfer.type = ' .self::TYPE_TICKET .' and transfer.id_object = ticket.id_ticket ' );
- $query->leftJoin('ticket_type', 'ticket.id_ticket_type = ticket_type.id_ticket_type ' );
- $query->leftJoin('product', 'product.id_product = ' .self::TYPE_TICKET .' and transfer.id_object = ticket.id_ticket ' );
+// $query->leftJoin('ticket', 'transfer.type = ' .self::TYPE_TICKET .' and transfer.id_object = ticket.id_ticket ' );
+// $query->leftJoin('ticket_type', 'ticket.id_ticket_type = ticket_type.id_ticket_type ' );
+// $query->leftJoin('product', 'product.id_product = ' .self::TYPE_TICKET .' and transfer.id_object = ticket.id_ticket ' );
$this->load($params);
@@ -133,9 +144,9 @@ class TransferSearch extends Transfer
$query->andFilterWhere([ '<', 'transfer.created_at', $this->timestampEnd ] );
- if ( isset($this->searchObjectName) && !empty($this->searchObjectName)){
- $query->andWhere( new Expression(" case when transfer.type = " .self::TYPE_PRODUCT ." then product.name else ticket_type.name end like '%" . $this->searchObjectName ."%'"));
- }
+// if ( isset($this->searchObjectName) && !empty($this->searchObjectName)){
+// $query->andWhere( new Expression(" case when transfer.type = " .self::TYPE_PRODUCT ." then product.name else ticket_type.name end like '%" . $this->searchObjectName ."%'"));
+// }
$query->groupBy('transfer.id_account');
diff --git a/backend/views/transfer/_search.php b/backend/views/transfer/_search.php
index d55f5d4..1c41156 100644
--- a/backend/views/transfer/_search.php
+++ b/backend/views/transfer/_search.php
@@ -22,27 +22,18 @@ use kartik\widgets\DatePicker;
]); ?>
= Html::submitButton(Yii::t('frontend/transfer', 'Search'), ['class' => 'btn btn-primary']) ?>
diff --git a/backend/views/transfer/index.php b/backend/views/transfer/index.php
index 62670d0..1046315 100644
--- a/backend/views/transfer/index.php
+++ b/backend/views/transfer/index.php
@@ -14,6 +14,15 @@ use yii\data\ArrayDataProvider;
$this->title = Yii::t('frontend/transfer', 'Transfers');
$this->params['breadcrumbs'][] = $this->title;
?>
+
+
= Html::encode($this->title) ?>
@@ -56,6 +65,7 @@ $this->params['breadcrumbs'][] = $this->title;
?>
Pénzmozgások
= GridView::widget([
+ 'tableOptions' => ['class' => 'table table-striped table-bordered table-transfer'],
'dataProvider' => $dataProvider,
'columns' => [
@@ -64,8 +74,7 @@ $this->params['breadcrumbs'][] = $this->title;
'value' => 'transferTypeName'
],
[
- 'attribute' => 'id_object',
- 'value' => 'objectName'
+ 'attribute' => 'objectName',
],
[
'attribute' => 'id_user',
@@ -75,9 +84,19 @@ $this->params['breadcrumbs'][] = $this->title;
'attribute' => 'id_account',
'value' => 'accountName'
],
- 'item_price',
- 'count',
- 'money',
+ [
+ 'contentOptions' =>[ 'class' => 'item-price' ],
+ 'attribute' => 'item_price',
+ ],
+ [
+ 'contentOptions' =>[ 'class' => 'count' ],
+ 'attribute' => 'count',
+ ],
+ [
+ 'contentOptions' =>[ 'class' => 'money' ],
+ 'attribute' => 'money',
+ 'value' => 'signedMoney'
+ ],
'created_at:datetime',
['class' => 'yii\grid\ActionColumn',
diff --git a/common/components/AccountAwareBehavior.php b/common/components/AccountAwareBehavior.php
index 6d474b1..fd46b6b 100644
--- a/common/components/AccountAwareBehavior.php
+++ b/common/components/AccountAwareBehavior.php
@@ -13,7 +13,6 @@ class AccountAwareBehavior extends Behavior{
if (isset($account)){
$result = $account->name;
}
-
return $result;
}
diff --git a/common/messages/hu/common/transfer.php b/common/messages/hu/common/transfer.php
index ce9c8e3..c6eda43 100644
--- a/common/messages/hu/common/transfer.php
+++ b/common/messages/hu/common/transfer.php
@@ -32,7 +32,7 @@ return [
'Id Transfer' => 'Pénzmozgás',
'Id User' => 'Felhasználó',
'Item Price' => 'Termék ár',
- 'Money' => 'Ár',
+ 'Money' => 'Összeg',
'Money Currency' => 'Ár valuta',
'Rate' => 'Árfolyam',
'Status' => 'Státusz',
diff --git a/common/messages/hu/frontend/transfer.php b/common/messages/hu/frontend/transfer.php
index 90f460b..4593754 100644
--- a/common/messages/hu/frontend/transfer.php
+++ b/common/messages/hu/frontend/transfer.php
@@ -25,7 +25,7 @@ return [
'Delete' => 'Törlés',
'Search' => 'Keresés',
'Termékeladás' => 'Termékeladás',
- 'Transfers' => 'Pénzmozgások',
+ 'Transfers' => 'Tranzakciók',
'Update' => 'Módosítás',
'Update {modelClass}: ' => '{modelClass} módosítás: ',
'pieces' => 'db',
diff --git a/common/models/MoneyMovement.php b/common/models/MoneyMovement.php
index fd36f17..fb22fca 100644
--- a/common/models/MoneyMovement.php
+++ b/common/models/MoneyMovement.php
@@ -7,6 +7,8 @@ use yii\helpers\ArrayHelper;
use yii\behaviors\TimestampBehavior;
use common\components\AccountAwareBehavior;
use common\components\UserAwareBehavior;
+use yii\base\Object;
+use common\models\Transfer;
/**
* This is the model class for table "money_movement".
@@ -23,6 +25,10 @@ use common\components\UserAwareBehavior;
*/
class MoneyMovement extends \yii\db\ActiveRecord
{
+
+ const TYPE_OUT = 10;
+
+ public $_account;
/**
* @inheritdoc
@@ -58,13 +64,22 @@ class MoneyMovement extends \yii\db\ActiveRecord
public function rules()
{
return [
- [['id_account', 'id_user', 'name', 'type', 'money'], 'required'],
- [['id_account', 'id_user', 'type', 'money'], 'integer'],
+ [['id_account', 'name', 'money'], 'required'],
+ [['id_account' , 'money'], 'integer'],
[['name'], 'string', 'max' => 64],
- [['comment'], 'string', 'max' => 255]
+ [['comment'], 'string', 'max' => 255],
+ [['id_account'], 'validateAccount'],
];
}
+ public function validateAccount($attribute,$params){
+ $this->_account = Account::findOne(['id_account' => $this->id_account] );
+ if ( !isset( $this->_account ) ){
+ $this->addError($attribute, Yii::t('common/money-movement', 'Invalid account!'));
+ }
+
+ }
+
/**
* @inheritdoc
*/
@@ -82,4 +97,19 @@ class MoneyMovement extends \yii\db\ActiveRecord
'updated_at' => Yii::t('common/money-movement', 'Updated At'),
];
}
+
+ public function afterSave($insert, $changedAttributes){
+ parent::afterSave($insert, $changedAttributes);
+ if ( $insert) {
+ $this->createTransfer();
+ }
+
+ }
+
+ protected function createTransfer(){
+ $transfer = Transfer::createMoneyMovementOutTransfer($this->_account, $this);
+ $transfer->id_user = Yii::$app->user->id;
+ $transfer->save();
+ }
+
}
diff --git a/common/models/Transfer.php b/common/models/Transfer.php
index 0186340..b37da55 100644
--- a/common/models/Transfer.php
+++ b/common/models/Transfer.php
@@ -94,6 +94,7 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
'id_discount' => Yii::t('common/transfer', 'Id Discount'),
'id_currency' => Yii::t('common/transfer', 'Id Currency'),
'id_object' => Yii::t('common/transfer', 'Id Object'),
+ 'objectName' => Yii::t('common/transfer', 'Id Object'),
'status' => Yii::t('common/transfer', 'Status'),
'type' => Yii::t('common/transfer', 'Type'),
'item_price' => Yii::t('common/transfer', 'Item Price'),
@@ -115,9 +116,12 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
public function getProduct(){
return $this->hasOne( Product::className(), ["id_product" =>"id_object" ] );
}
+ public function getMoneyMovement(){
+ return $this->hasOne( MoneyMovement::className(), ["id_money_movement" =>"id_object" ] );
+ }
public function getTicket(){
- return $this->hasOne( Ticket::className(), ["id_ticket" =>"id_object" ] );
+ return $this->hasOne( Ticket::className(), ["id_ticket" =>"id_object", ] ) ;
}
public function getTicketType(){
@@ -192,13 +196,30 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
$result = "";
if ( $this->type == Transfer::TYPE_TICKET ){
$result = Yii::t('common/transfer','Ticket');
- }else{
+ }else if ( $this->type == Transfer::TYPE_PRODUCT ){
$result = Yii::t('common/transfer','Product');
+ }else if ( $this->type == Transfer::TYPE_MONEY_MOVEMENT_OUT ){
+ $result = Yii::t('common/transfer','Money movement');
}
+// $result .= " xx";
+// $result .= $this->type;
+
return $result;
}
+ public function getSignedMoney(){
+ $m = 1;
+ $result = $this->money;
+ if ( $this->direction == self::DIRECTION_OUT ){
+ $m = -1;
+ }
+
+ $result = $result * $m;
+
+ return $result;
+
+ }
public function toProductSoldString(){
$s = "";
@@ -248,6 +269,27 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
return $transfer;
}
+ /**
+ * @param $account common\models\Account
+ * @param $discount common\models\Discount
+ * @param $currency common\models\Currency
+ * @param $moneyMovement common\models\MoneyMovement
+ * */
+ public static function createMoneyMovementOutTransfer($account , $moneyMovement ){
+ $transfer = new Transfer();
+
+ $transfer->type = Transfer::TYPE_MONEY_MOVEMENT_OUT;
+ $transfer->status = Transfer::STATUS_PAID;
+ $transfer->direction = Transfer::DIRECTION_OUT;
+ $transfer->count = 0;
+
+ $transfer->id_object = $moneyMovement->id_money_movement;
+ $transfer->money = $moneyMovement->money;
+
+ $transfer->id_account = $account->id_account;
+
+ return $transfer;
+ }
/**
* @param $account common\models\Account
* @param $discount common\models\Discount
@@ -307,16 +349,20 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
$result = "";
if ( $transfer->type == Transfer::TYPE_TICKET ){
$result = $transfer->ticket->ticketTypeName;
- }else{
+ }else if ( $transfer->type == Transfer::TYPE_PRODUCT ){
$result = $transfer->product->name;
+ }else if ( $transfer->type == Transfer::TYPE_MONEY_MOVEMENT_OUT ){
+ $result = "Pénzmozgás";
}
return $result;
},
'category' => function ($transfer) {
if ( $transfer->type == Transfer::TYPE_TICKET ){
return Yii::t('frontend/transfer','Ticket');
- }else{
+ }else if ( $transfer->type == Transfer::TYPE_PRODUCT ){
return $transfer->product->productCategoryName;
+ }else if ( $transfer->type == Transfer::TYPE_MONEY_MOVEMENT_OUT ){
+ return "Pénzmozgás";
}
},
],
@@ -338,6 +384,7 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
public static function types( ) {
return [
+ self::TYPE_MONEY_MOVEMENT_OUT => Yii::t('common/transfer','Pénzmozgás'),
self::TYPE_PRODUCT => Yii::t('common/transfer','Product'),
self::TYPE_TICKET => Yii::t('common/transfer','Ticket'),
];
diff --git a/frontend/controllers/MoneyMovementController.php b/frontend/controllers/MoneyMovementController.php
index 6cbc383..ec5ebba 100644
--- a/frontend/controllers/MoneyMovementController.php
+++ b/frontend/controllers/MoneyMovementController.php
@@ -8,6 +8,7 @@ use frontend\models\MoneyMovementSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
+use common\models\Account;
/**
* MoneyMovementController implements the CRUD actions for MoneyMovement model.
@@ -61,12 +62,19 @@ class MoneyMovementController extends Controller
public function actionCreate()
{
$model = new MoneyMovement();
-
+
+ $model->id_user = Yii::$app->user->id;
+ $model->type = MoneyMovement::TYPE_OUT;
+
+ $accounts = Account::read();
+
+
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id_money_movement]);
} else {
return $this->render('create', [
'model' => $model,
+ 'accounts' => $accounts
]);
}
}
diff --git a/frontend/models/TransferMoneyMovementSearch.php b/frontend/models/TransferMoneyMovementSearch.php
index 67dba8f..935566d 100644
--- a/frontend/models/TransferMoneyMovementSearch.php
+++ b/frontend/models/TransferMoneyMovementSearch.php
@@ -43,6 +43,8 @@ class TransferMoneyMovementSearch extends Transfer
{
$query = Transfer::find();
+ $query->andWhere(['type' => Transfer::TYPE_MONEY_MOVEMENT_OUT]);
+
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
@@ -69,7 +71,6 @@ class TransferMoneyMovementSearch extends Transfer
'rate' => $this->rate,
'id_user' => $this->id_user,
'created_at' => $this->created_at,
- 'updated_at' => $this->updated_at,
]);
$query->andFilterWhere(['like', 'comment', $this->comment]);
diff --git a/frontend/views/money-movement/_form.php b/frontend/views/money-movement/_form.php
index 6fc0514..a9680de 100644
--- a/frontend/views/money-movement/_form.php
+++ b/frontend/views/money-movement/_form.php
@@ -2,27 +2,28 @@
use yii\helpers\Html;
use yii\widgets\ActiveForm;
+use frontend\components\HtmlHelper;
/* @var $this yii\web\View */
/* @var $model common\models\MoneyMovement */
/* @var $form yii\widgets\ActiveForm */
?>
+