diff --git a/backend/controllers/AccountStateController.php b/backend/controllers/AccountStateController.php index 2d79718..e3304c5 100644 --- a/backend/controllers/AccountStateController.php +++ b/backend/controllers/AccountStateController.php @@ -69,7 +69,6 @@ class AccountStateController extends \backend\controllers\BackendController * @return mixed */ public function actionView($id) { - echo "view"; $accountState = $this->findModel ( $id ); $output = Yii::$app->getRequest ()->getQueryParam ( 'output' ); $details = null; diff --git a/backend/controllers/TransferController.php b/backend/controllers/TransferController.php index 47524ec..1ae6b34 100644 --- a/backend/controllers/TransferController.php +++ b/backend/controllers/TransferController.php @@ -16,6 +16,7 @@ use common\models\ProductCategory; use common\models\Product; use backend\models\TransferListUserGroupedSearch; use backend\models\TransferLaterSearch; +use yii\helpers\Url; /** * TransferController implements the CRUD actions for Transfer model. @@ -50,6 +51,15 @@ class TransferController extends \backend\controllers\BackendController public function actionPaymentLater(){ $searchModel = new TransferLaterSearch(); + + + if ( \Yii::$app->request->isPost){ + $searchModel->load(Yii::$app->request->post()); + if ( $searchModel->doPayout()) { + return $this->redirect(['transfer/payment-later' ]); + } + } + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); $accounts = Account::read(); @@ -57,6 +67,8 @@ class TransferController extends \backend\controllers\BackendController $users = User::read(); + Url::remember("payment_later",Url::current()); + return $this->render('payment_later', [ 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, diff --git a/backend/models/TransferLaterSearch.php b/backend/models/TransferLaterSearch.php index 5bf24b5..0ae56f2 100644 --- a/backend/models/TransferLaterSearch.php +++ b/backend/models/TransferLaterSearch.php @@ -25,16 +25,21 @@ class TransferLaterSearch extends Transfer public $timestampStart; public $timestampEnd; + public $id_ticket_type; + public $ticket_type; public $selected = []; + + public $total_money; + /** * @inheritdoc */ public function rules() { return [ - [[ 'id_account','id_user', 'type','status','payment_method'], 'integer'], + [[ 'id_ticket_type','id_user'], 'integer'], [[ 'start', ], 'date', 'format' =>Yii::$app->formatter->datetimeFormat , 'timestampAttribute' => 'timestampStart' ,'timestampAttributeFormat' => 'yyyy-MM-dd HH:mm' ,'timeZone' => 'UTC' ], [[ 'end' , ], 'date' ,'format' =>Yii::$app->formatter->datetimeFormat , 'timestampAttribute' => 'timestampEnd' ,'timestampAttributeFormat' => 'yyyy-MM-dd HH:mm' ,'timeZone' => 'UTC' ], ['selected', 'each', 'rule' => ['integer']], @@ -118,23 +123,21 @@ class TransferLaterSearch extends Transfer } - $query->andFilterWhere([ - 'transfer.id_account' => $this->id_account, - 'transfer.type' => $this->type, - 'transfer.id_user' => $this->id_user, - 'transfer.status' => $this->status, - 'transfer.payment_method' => $this->payment_method, - ]); + $query->andFilterWhere([ + 'ticket_type.id_ticket_type' => $this->id_ticket_type, + 'transfer.id_user' => $this->id_user, + ]); $created_condition = ['and',[ '>=', 'transfer.created_at', $this->timestampStart ] ,[ '<', 'transfer.created_at', $this->timestampEnd ] ]; $paid_condition = ['and',[ '>=', 'transfer.paid_at', $this->timestampStart ] ,[ '<', 'transfer.paid_at', $this->timestampEnd ] ]; $query->andFilterWhere(['or' , $created_condition , $paid_condition]); - if (!RoleDefinition::isAdmin()){ - Helper::restrictIfNotAdminTheStartDate($query, $this->timestampStart,['transfer.created_at','transfer.paid_at']); - } + $qtotal = Query::create($query); + $qtotal->select([ new Expression("coalesce(sum(transfer.money),0) as transfer_money" )]); + $this->total_money = $qtotal->scalar(); + return $dataProvider; } @@ -148,6 +151,45 @@ class TransferLaterSearch extends Transfer } + public function doPayout(){ + + if ( !isset($this->selected) || count($this->selected) == 0){ + Helper::flash("error", "Nincs kiválasztott tranzakció"); + return false; + } + + $transfers = Transfer::find() + ->andWhere(['status' => Transfer::STATUS_NOT_PAID ]) + ->andWhere(['payment_method' => Transfer::PAYMENT_METHOD_TRANSFER_LATER]) + ->andWhere(['in','transfer.id_transfer',$this->selected]) + ->all(); + + if ( count($transfers) != count($this->selected)){ + Helper::flash("warning", "A kiválasztott tranzakciókban időközben változás történt"); + return false; + } + + $db = \Yii::$app->db; + $tx = $db->beginTransaction(); + try{ + foreach ($transfers as $transfer){ + if ( !$transfer->payout($transfer->id_account) ){ + \Yii::error("Failed to payout transaction: " .$transfer->id_transfer); + throw new \Exception("Nem sikerült mententi a tranzakciókat"); + } + } + $tx->commit(); + Helper::flash("success", "Tranzakciók fizetettnek jelölve: " .count($transfers) . " db"); + }catch (\Exception $e){ + $tx->rollBack(); + Helper::flash("error", "Hiba történt a művelet közben"); + return false; + } + + + return true; + } + } diff --git a/backend/models/TransferSearch.php b/backend/models/TransferSearch.php index b4e7bd7..16b1ace 100644 --- a/backend/models/TransferSearch.php +++ b/backend/models/TransferSearch.php @@ -143,7 +143,6 @@ class TransferSearch extends Transfer return $dataProvider; } - echo "start date:" .$this->timestampStart; $query->andFilterWhere([ 'transfer.id_account' => $this->id_account, diff --git a/backend/views/account-state/_item_view.php b/backend/views/account-state/_item_view.php index 7c58dce..3efd6fd 100644 --- a/backend/views/account-state/_item_view.php +++ b/backend/views/account-state/_item_view.php @@ -7,6 +7,7 @@ use yii\base\Widget; $model, + 'showDailyDownload' =>false ]); ?> diff --git a/backend/views/transfer/_search_payment_later.php b/backend/views/transfer/_search_payment_later.php new file mode 100644 index 0000000..345af63 --- /dev/null +++ b/backend/views/transfer/_search_payment_later.php @@ -0,0 +1,65 @@ + + + 'Mind'] + HtmlHelper::mkOptions(User::find()->all(),'id','username'); + $ticketTypeOptions = ['' => 'Mind'] + HtmlHelper::mkTicketTypeOptions(TicketType::find()->all()); +?> + +
+ Összesen: total_money;?> Ft +
= GridView::widget([ 'tableOptions' => ['class' => 'table table-striped table-bordered table-transfer'], 'dataProvider' => $dataProvider, diff --git a/common/mail/login_frontend.php b/common/mail/login_frontend.php index 414126e..99a7028 100644 --- a/common/mail/login_frontend.php +++ b/common/mail/login_frontend.php @@ -5,7 +5,7 @@ Felhasználó: username ;?>Bérletek típus szerint
$details]);?>Termékek kategória szerint
diff --git a/frontend/views/account-state/mixed_pdf.php b/frontend/views/account-state/mixed_pdf.php index 8eaf501..0de10a0 100644 --- a/frontend/views/account-state/mixed_pdf.php +++ b/frontend/views/account-state/mixed_pdf.php @@ -3,7 +3,14 @@ use common\components\accountstate\AccountStateWidget; use common\components\total\TotalDifferenceWidget; ?> - +