diff --git a/backend/assets/PendingRequestAsset.php b/backend/assets/PendingRequestAsset.php new file mode 100644 index 0000000..08451cc --- /dev/null +++ b/backend/assets/PendingRequestAsset.php @@ -0,0 +1,28 @@ + + * @since 2.0 + */ +class PendingRequestAsset extends AssetBundle +{ + public $basePath = '@webroot'; + public $baseUrl = '@web'; + public $css = [ + ]; + public $js = [ + 'js/index.pending.js', + ]; + public $depends = [ + 'backend\assets\AppAsset', + ]; +} diff --git a/backend/components/AdminMenuStructure.php b/backend/components/AdminMenuStructure.php index 9fd2042..159836c 100644 --- a/backend/components/AdminMenuStructure.php +++ b/backend/components/AdminMenuStructure.php @@ -103,6 +103,20 @@ class AdminMenuStructure{ $this->menuItems[] = ['label' => 'Pénzügy', 'url' => $this->emptyUrl, 'items' => $items ]; + ///////////////////////////// + // Tartós megbízások + ///////////////////////////// + $items = []; + $items[] = ['label' => 'Megbízások', 'url' => ['/ticket-installment-request/index' , 'TicketInstallmentRequestSearch[start]' =>$today,'TicketInstallmentRequestSearch[end]' => $tomorrow ] ]; + $items[] = ['label' => 'Giro kötegbe jelölés', 'url' => ['/ticket-installment-request/pending' , 'TicketInstallmentRequestSearchPending[end]' => $tomorrow ] ]; + $items[] = ['label' => 'GIRO köteg létrehozás', 'url' => ['/ticket-installment-request/download-giro' ] ]; + $items[] = ['label' => 'GIRO kötegek', 'url' => ['/ugiro/index' ] ]; +// $items[] = ['label' => 'Bevétel', 'url' => ['/transfer/summary' , 'TransferSummarySearch[start]' =>$today,'TransferSummarySearch[end]' => $tomorrow ] ]; +// $items[] = ['label' => 'Napi bevételek', 'url' => ['/transfer/list', 'TransferListSearch[start]' =>$todayDatetime,'TransferListSearch[end]' => $tomorrowDatetime ] ]; +// $items[] = ['label' => 'Kassza müveletek', 'url' => ['/account-state/index'] ]; + $this->menuItems[] = ['label' => 'Tartós megbízások', 'url' => $this->emptyUrl, + 'items' => $items + ]; } diff --git a/backend/controllers/TicketInstallmentRequestController.php b/backend/controllers/TicketInstallmentRequestController.php new file mode 100644 index 0000000..7263a9a --- /dev/null +++ b/backend/controllers/TicketInstallmentRequestController.php @@ -0,0 +1,175 @@ + [ + 'class' => VerbFilter::className(), + 'actions' => [ + 'delete' => ['post'], + ], + ], + ]; + } + + /** + * Lists all TicketInstallmentRequest models. + * @return mixed + */ + public function actionIndex() + { + $searchModel = new TicketInstallmentRequestSearch(); + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); + + return $this->render('index', [ + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider, + ]); + } + + /** + * Lists pending TicketInstallmentRequest models. + * @return mixed + */ + public function actionPending() + { + $model = new TicketInstallmentMarkForSendForm(); + if ($model->load(Yii::$app->request->post()) ) { + $model->markForSend(); + } + + $searchModel = new TicketInstallmentRequestSearchPending(); + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); + + return $this->render('index_pending', [ + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider, + ]); + } + + /** + * Lists pending TicketInstallmentRequest models. + * @return mixed + */ + public function actionDownloadGiro() + { + $model = new GiroKotegForm(); + + if ($model->load(Yii::$app->request->post()) ) { + $model->createKoteg(); + return $this->redirect(['ugiro/view', 'id' => $model->koteg->id_ugiro]); + } + + $searchModel = new TicketInstallmentRequestSearchDownloadGiro(); + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); + + $model->action = "create"; + return $this->render('index_download_giro', [ + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider, + 'model' => $model, + ]); + } + + /** + * Displays a single TicketInstallmentRequest model. + * @param integer $id + * @return mixed + */ + public function actionView($id) + { + return $this->render('view', [ + 'model' => $this->findModel($id), + ]); + } + + /** + * Creates a new TicketInstallmentRequest model. + * If creation is successful, the browser will be redirected to the 'view' page. + * @return mixed + */ + public function actionCreate() + { + $model = new TicketInstallmentRequest(); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id_ticket_installment_request]); + } else { + return $this->render('create', [ + 'model' => $model, + ]); + } + } + + /** + * Updates an existing TicketInstallmentRequest model. + * If update is successful, the browser will be redirected to the 'view' page. + * @param integer $id + * @return mixed + */ + public function actionUpdate($id) + { + $model = $this->findModel($id); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id_ticket_installment_request]); + } else { + return $this->render('update', [ + 'model' => $model, + ]); + } + } + + /** + * Deletes an existing TicketInstallmentRequest model. + * If deletion is successful, the browser will be redirected to the 'index' page. + * @param integer $id + * @return mixed + */ + public function actionDelete($id) + { + $this->findModel($id)->delete(); + + return $this->redirect(['index']); + } + + public function actionTest( ) + { + + return $this->render('test'); + } + + /** + * Finds the TicketInstallmentRequest model based on its primary key value. + * If the model is not found, a 404 HTTP exception will be thrown. + * @param integer $id + * @return TicketInstallmentRequest the loaded model + * @throws NotFoundHttpException if the model cannot be found + */ + protected function findModel($id) + { + if (($model = TicketInstallmentRequest::findOne($id)) !== null) { + return $model; + } else { + throw new NotFoundHttpException('The requested page does not exist.'); + } + } +} diff --git a/backend/controllers/UgiroController.php b/backend/controllers/UgiroController.php new file mode 100644 index 0000000..535c7fc --- /dev/null +++ b/backend/controllers/UgiroController.php @@ -0,0 +1,121 @@ + [ + 'class' => VerbFilter::className(), + 'actions' => [ + 'delete' => ['post'], + ], + ], + ]; + } + + /** + * Lists all Ugiro models. + * @return mixed + */ + public function actionIndex() + { + $searchModel = new UgiroSearch(); + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); + + return $this->render('index', [ + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider, + ]); + } + + /** + * Displays a single Ugiro model. + * @param integer $id + * @return mixed + */ + public function actionView($id) + { + return $this->render('view', [ + 'model' => $this->findModel($id), + ]); + } + + /** + * Creates a new Ugiro model. + * If creation is successful, the browser will be redirected to the 'view' page. + * @return mixed + */ + public function actionCreate() + { + $model = new Ugiro(); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id_ugiro]); + } else { + return $this->render('create', [ + 'model' => $model, + ]); + } + } + + /** + * Updates an existing Ugiro model. + * If update is successful, the browser will be redirected to the 'view' page. + * @param integer $id + * @return mixed + */ + public function actionUpdate($id) + { + $model = $this->findModel($id); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id_ugiro]); + } else { + return $this->render('update', [ + 'model' => $model, + ]); + } + } + + /** + * Deletes an existing Ugiro model. + * If deletion is successful, the browser will be redirected to the 'index' page. + * @param integer $id + * @return mixed + */ + public function actionDelete($id) + { + $this->findModel($id)->delete(); + + return $this->redirect(['index']); + } + + /** + * Finds the Ugiro model based on its primary key value. + * If the model is not found, a 404 HTTP exception will be thrown. + * @param integer $id + * @return Ugiro the loaded model + * @throws NotFoundHttpException if the model cannot be found + */ + protected function findModel($id) + { + if (($model = Ugiro::findOne($id)) !== null) { + return $model; + } else { + throw new NotFoundHttpException('The requested page does not exist.'); + } + } +} diff --git a/backend/giro2710txt b/backend/giro2710txt new file mode 100644 index 0000000..ab8f61d --- /dev/null +++ b/backend/giro2710txt @@ -0,0 +1,2 @@ +01BESZED1A25366936T2442016012000015860025215371128 00000000BEEmovar +030000000000000000000000 diff --git a/backend/giro5459txt b/backend/giro5459txt new file mode 100644 index 0000000..ab8f61d --- /dev/null +++ b/backend/giro5459txt @@ -0,0 +1,2 @@ +01BESZED1A25366936T2442016012000015860025215371128 00000000BEEmovar +030000000000000000000000 diff --git a/backend/giro9077txt b/backend/giro9077txt new file mode 100644 index 0000000..ab8f61d --- /dev/null +++ b/backend/giro9077txt @@ -0,0 +1,2 @@ +01BESZED1A25366936T2442016012000015860025215371128 00000000BEEmovar +030000000000000000000000 diff --git a/backend/giro9550txt b/backend/giro9550txt new file mode 100644 index 0000000..ab8f61d --- /dev/null +++ b/backend/giro9550txt @@ -0,0 +1,2 @@ +01BESZED1A25366936T2442016012000015860025215371128 00000000BEEmovar +030000000000000000000000 diff --git a/backend/models/CustomerCreate.php b/backend/models/CustomerCreate.php index 2f00b07..4f272c1 100644 --- a/backend/models/CustomerCreate.php +++ b/backend/models/CustomerCreate.php @@ -89,6 +89,9 @@ class CustomerCreate extends \common\models\Customer [['phone', 'tax_number', 'country'], 'string', 'max' => 20], + [['bank_account'], 'string', 'max' => 24], + [['bank_name'], 'string', 'max' => 100], + [['phone'], 'required', 'when' => function($model) { return !isset( $model->email ) || empty( $model->email ) ; } , diff --git a/backend/models/CustomerUpdate.php b/backend/models/CustomerUpdate.php index cef9ec9..fbd32e0 100644 --- a/backend/models/CustomerUpdate.php +++ b/backend/models/CustomerUpdate.php @@ -88,6 +88,8 @@ class CustomerUpdate extends \common\models\Customer [[ 'description', 'address'], 'string', 'max' => 255], [['phone', 'tax_number', 'country'], 'string', 'max' => 20], + [['bank_account'], 'string', 'max' => 24], + [['bank_name'], 'string', 'max' => 100], [['phone'], 'required', 'when' => function($model) { return !isset( $model->email ) || empty( $model->email ) ; diff --git a/backend/models/GiroKotegForm.php b/backend/models/GiroKotegForm.php new file mode 100644 index 0000000..590fbfc --- /dev/null +++ b/backend/models/GiroKotegForm.php @@ -0,0 +1,137 @@ +readRequests(); + $this->success = true; + if ( count( $this->requests ) > 0 ){ + $connection = \Yii::$app->db; + $transaction = $connection->beginTransaction(); + + try { + $this->createUGiroKoteg(); + $this->assignRequestsToUgiro(); + $this->changeRequestsStatusToSent(); + $this->generateFileContent(); + $this->saveFile(); + + if ($this->success) { + $transaction->commit(); + \Yii::$app->session->setFlash('success',"Fájl létrehozva"); + return true; + } else { + $transaction->rollback(); + throw new NotFoundHttpException( "Hiba történt!"); + } + + } catch (\Exception $e) { + $transaction->rollback(); + throw $e; + } + }else{ + \Yii::$app->session->setFlash('danger', "Megbízások száma 0!"); + return false; + } + } + + public function changeRequestsStatusToSent(){ + foreach ($this->requests as $request){ + $request->status = TicketInstallmentRequest::$STATUS_SENT; + $this->success &= $request->save(false); + } + } + + public function assignRequestsToUgiro(){ + foreach ($this->requests as $request){ + $assignment = new UgiroRequestAssignment(); + $assignment->id_request = $request->id_ticket_installment_request; + $assignment->id_ugiro = $this->koteg->id_ugiro; + $this->success &= $assignment->save(false); + } + } + + public function createUGiroKoteg(){ + $this->koteg = new Ugiro(); + $this->koteg->status = Ugiro::$STATUS_SENT; + $this->koteg->id_user = \Yii::$app->user->id; + $this->success &= $this->koteg->save(false); + } + public function readRequests(){ + $this->requests = TicketInstallmentRequest::find()->andWhere(['status' => TicketInstallmentRequest::$STATUS_MARKED_TO_SEND])->all(); + } + + public function generateFileContent(){ + $this->content = GiroBeszed::createFileContent($this->koteg->id_ugiro, $this->requests); + } + + public function saveFile( ) { +// $data = static::transliterate($this->content); + $data = $this->content; + $data = iconv("utf-8","ASCII",$data); + $path = Ugiro::$PATH_MEGBIZAS . DIRECTORY_SEPARATOR ."giro" . $this->koteg->id_ugiro."_". date('Ymd' ) .".txt"; + $filename = Yii::getAlias('@backend/web').DIRECTORY_SEPARATOR .$path; + $dir = Yii::getAlias('@backend/web').DIRECTORY_SEPARATOR .Ugiro::$PATH_MEGBIZAS; + $this->koteg->path = $path; + $this->koteg->save(false); + if(!FileHelper::createDirectory($dir)){ + throw new HttpException(500, 'Cannot create "'.$dir.'". Please check write permissions.'); + } + $myfile = fopen($filename,'a'); + fwrite($myfile, $data); + fclose($myfile); + } + + public static function transliterate($string) + { +// if (static::hasIntl()) { +// return transliterator_transliterate(BaseInflector::$transliterator, $string); +// } else { + return str_replace(array_keys(BaseInflector::$transliteration), BaseInflector::$transliteration, $string); +// } + } + + /** + * @return boolean if intl extension is loaded + */ + protected static function hasIntl() + { + return extension_loaded('intl'); + } +} \ No newline at end of file diff --git a/backend/models/TicketInstallmentMarkForSendForm.php b/backend/models/TicketInstallmentMarkForSendForm.php new file mode 100644 index 0000000..94fa3b6 --- /dev/null +++ b/backend/models/TicketInstallmentMarkForSendForm.php @@ -0,0 +1,40 @@ + ['integer']], + ]; + } + + + + public function markForSend(){ + if ( $this->validate() && isset($this->items ) && is_array($this->items ) ){ + $updated = 0; + $updated = TicketInstallmentRequest::updateAll(['status' => TicketInstallmentRequest::$STATUS_MARKED_TO_SEND ],['in', 'id_ticket_installment_request' , $this->items]); + \Yii::$app->session->setFlash('success', $updated . " megbízás küldésre jelölve " ); + }else{ + \Yii::$app->session->setFlash('success', " Nem történt küldésre jelölés! " ); + } + } + +} \ No newline at end of file diff --git a/backend/models/TicketInstallmentRequestSearch.php b/backend/models/TicketInstallmentRequestSearch.php new file mode 100644 index 0000000..d4f42bb --- /dev/null +++ b/backend/models/TicketInstallmentRequestSearch.php @@ -0,0 +1,130 @@ + 'timestampStart' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ], + [[ 'end' , ], 'date' , 'timestampAttribute' => 'timestampEnd' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ], + [[ 'processedStart', ], 'date' , 'timestampAttribute' => 'timestampProcessedStart' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ], + [[ 'processedEnd' , ], 'date' , 'timestampAttribute' => 'timestampProcessedEnd' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ], + [[ 'sentStart', ], 'date' , 'timestampAttribute' => 'timestampSentStart' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ], + [[ 'sentEnd' , ], 'date' , 'timestampAttribute' => 'timestampSentEnd' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ], + ]; + } + + /** + * @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 = new Query(); + + $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'); + } + + $query->select([ + 'ticket_installment_request.id_ticket_installment_request as request_id_ticket_installment_request', //id + 'ticket_installment_request.request_target_time_at as request_request_target_time_at',//target time + 'ticket_installment_request.money as request_money',//money + 'ticket_installment_request.status as request_status',//status + 'ticket_installment_request.request_sent_at as request_sent_at',//sent_at + 'ticket_installment_request.priority as request_priority',//sent_at + 'ticket_installment_request.request_processed_at as request_processed_at',//request_processed_at + 'customer.id_customer as customer_id_customer',//id_customer + 'customer.name as customer_name',//customer_name + 'ticket_type.name as ticket_type_name',//ticket_type_name + 'ticket.status as ticket_status',//ticket_status + 'ticket.start as ticket_start',//ticket_start + 'ticket.end as ticket_end',//ticket_send + 'ticket.id_ticket as ticket_id_ticket',//id_ticket + ]); + $query->from("ticket_installment_request"); + $query->innerJoin("customer","customer.id_customer = ticket_installment_request.id_customer"); + $query->innerJoin("ticket","ticket.id_ticket = ticket_installment_request.id_ticket"); + $query->innerJoin("ticket_type","ticket.id_ticket_type = ticket_type.id_ticket_type"); + + $query->orderBy(["ticket_installment_request.request_target_time_at" => SORT_ASC]); + + $query->andFilterWhere([ + 'ticket_installment_request.id_ticket_installment_request' => $this->id_ticket_installment_request, + 'ticket.id_ticket' => $this->id_ticket, + 'customer.id_customer' => $this->id_customer, + 'ticket_installment_request.status' => $this->status, + 'ticket_type.id_ticket_type' => $this->id_ticket_type, + ]); + $query->andFilterWhere(['like', 'customer.name', $this->customer_name]); + //target time + $query->andFilterWhere(['>=', 'ticket_installment_request.request_target_time_at', $this->timestampStart]); + $query->andFilterWhere(['<', 'ticket_installment_request.request_target_time_at', $this->timestampEnd]); + //sent time + $query->andFilterWhere(['>=', 'ticket_installment_request.request_sent_at', $this->timestampSentStart]); + $query->andFilterWhere(['<', 'ticket_installment_request.request_sent_at', $this->timestampSentEnd]); + //processed time + $query->andFilterWhere(['>=', 'ticket_installment_request.request_processed_at', $this->timestampProcessedStart]); + $query->andFilterWhere(['<', 'ticket_installment_request.request_processed_at', $this->timestampProcessedEnd]); + + $dataProvider = new ArrayDataProvider([ + 'allModels' => $query->all(), +// 'sort' => [ +// 'attributes' => ['id', 'username', 'email'], +// ], +// 'pagination' => [ +// 'pageSize' => 10, +// ], + ]); + + return $dataProvider; + } +} diff --git a/backend/models/TicketInstallmentRequestSearchDownloadGiro.php b/backend/models/TicketInstallmentRequestSearchDownloadGiro.php new file mode 100644 index 0000000..303d38b --- /dev/null +++ b/backend/models/TicketInstallmentRequestSearchDownloadGiro.php @@ -0,0 +1,114 @@ + 'timestampStart' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ], + [[ 'end' , ], 'date' , 'timestampAttribute' => 'timestampEnd' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ], + ]; + } + + /** + * @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 = new Query(); + + $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'); + } + + $query->select([ + 'ticket_installment_request.id_ticket_installment_request as request_id_ticket_installment_request', //id + 'ticket_installment_request.request_target_time_at as request_request_target_time_at',//target time + 'ticket_installment_request.money as request_money',//money + 'ticket_installment_request.status as request_status',//status + 'ticket_installment_request.request_sent_at as request_sent_at',//sent_at + 'ticket_installment_request.priority as request_priority',//sent_at + 'ticket_installment_request.request_processed_at as request_processed_at',//request_processed_at + 'customer.id_customer as customer_id_customer',//id_customer + 'customer.name as customer_name',//customer_name + 'ticket_type.name as ticket_type_name',//ticket_type_name + 'ticket.status as ticket_status',//ticket_status + 'ticket.start as ticket_start',//ticket_start + 'ticket.end as ticket_end',//ticket_send + 'ticket.id_ticket as ticket_id_ticket',//id_ticket + ]); + $query->from("ticket_installment_request"); + $query->innerJoin("customer","customer.id_customer = ticket_installment_request.id_customer"); + $query->innerJoin("ticket","ticket.id_ticket = ticket_installment_request.id_ticket"); + $query->innerJoin("ticket_type","ticket.id_ticket_type = ticket_type.id_ticket_type"); + + $query->andWhere(['ticket_installment_request.status' => TicketInstallmentRequest::$STATUS_MARKED_TO_SEND]); + + $query->orderBy(["ticket_installment_request.request_target_time_at" => SORT_ASC]); + +// $query->andFilterWhere([ +// 'ticket_installment_request.id_ticket_installment_request' => $this->id_ticket_installment_request, +// 'ticket.id_ticket' => $this->id_ticket, +// 'customer.id_customer' => $this->id_customer, +// 'ticket_installment_request.status' => $this->status, +// 'ticket_type.id_ticket_type' => $this->id_ticket_type, +// ]); +// $query->andFilterWhere(['like', 'customer.name', $this->customer_name]); + //target time +// $query->andFilterWhere(['>=', 'ticket_installment_request.request_target_time_at', $this->timestampStart]); +// $query->andFilterWhere(['<', 'ticket_installment_request.request_target_time_at', $this->timestampEnd]); + + $dataProvider = new ArrayDataProvider([ + 'allModels' => $query->all(), +// 'sort' => [ +// 'attributes' => ['id', 'username', 'email'], +// ], +// 'pagination' => [ +// 'pageSize' => 10, +// ], + ]); + + return $dataProvider; + } +} diff --git a/backend/models/TicketInstallmentRequestSearchPending.php b/backend/models/TicketInstallmentRequestSearchPending.php new file mode 100644 index 0000000..4a69ddd --- /dev/null +++ b/backend/models/TicketInstallmentRequestSearchPending.php @@ -0,0 +1,114 @@ + 'timestampStart' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ], + [[ 'end' , ], 'date' , 'timestampAttribute' => 'timestampEnd' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ], + ]; + } + + /** + * @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 = new Query(); + + $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'); + } + + $query->select([ + 'ticket_installment_request.id_ticket_installment_request as request_id_ticket_installment_request', //id + 'ticket_installment_request.request_target_time_at as request_request_target_time_at',//target time + 'ticket_installment_request.money as request_money',//money + 'ticket_installment_request.status as request_status',//status + 'ticket_installment_request.request_sent_at as request_sent_at',//sent_at + 'ticket_installment_request.priority as request_priority',//sent_at + 'ticket_installment_request.request_processed_at as request_processed_at',//request_processed_at + 'customer.id_customer as customer_id_customer',//id_customer + 'customer.name as customer_name',//customer_name + 'ticket_type.name as ticket_type_name',//ticket_type_name + 'ticket.status as ticket_status',//ticket_status + 'ticket.start as ticket_start',//ticket_start + 'ticket.end as ticket_end',//ticket_send + 'ticket.id_ticket as ticket_id_ticket',//id_ticket + ]); + $query->from("ticket_installment_request"); + $query->innerJoin("customer","customer.id_customer = ticket_installment_request.id_customer"); + $query->innerJoin("ticket","ticket.id_ticket = ticket_installment_request.id_ticket"); + $query->innerJoin("ticket_type","ticket.id_ticket_type = ticket_type.id_ticket_type"); + + $query->andWhere(['ticket_installment_request.status' => TicketInstallmentRequest::$STATUS_PENDING]); + + $query->orderBy(["ticket_installment_request.request_target_time_at" => SORT_ASC]); + + $query->andFilterWhere([ + 'ticket_installment_request.id_ticket_installment_request' => $this->id_ticket_installment_request, + 'ticket.id_ticket' => $this->id_ticket, + 'customer.id_customer' => $this->id_customer, + 'ticket_installment_request.status' => $this->status, + 'ticket_type.id_ticket_type' => $this->id_ticket_type, + ]); + $query->andFilterWhere(['like', 'customer.name', $this->customer_name]); + //target time + $query->andFilterWhere(['>=', 'ticket_installment_request.request_target_time_at', $this->timestampStart]); + $query->andFilterWhere(['<', 'ticket_installment_request.request_target_time_at', $this->timestampEnd]); + + $dataProvider = new ArrayDataProvider([ + 'allModels' => $query->all(), +// 'sort' => [ +// 'attributes' => ['id', 'username', 'email'], +// ], +// 'pagination' => [ +// 'pageSize' => 10, +// ], + ]); + + return $dataProvider; + } +} diff --git a/backend/models/TicketSearch.php b/backend/models/TicketSearch.php index c71bbf5..30a587b 100644 --- a/backend/models/TicketSearch.php +++ b/backend/models/TicketSearch.php @@ -37,7 +37,7 @@ class TicketSearch extends Ticket public function rules() { return [ - [[ 'id_user', 'id_ticket_type', 'id_account'], 'integer'], + [[ 'id_ticket', 'id_user', 'id_ticket_type', 'id_account'], 'integer'], [[ 'start', ], 'date' , 'timestampAttribute' => 'timestampStart' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ], [[ 'end' , ], 'date' , 'timestampAttribute' => 'timestampEnd' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ], [['valid_in_interval','created_in_interval','expire_in_interval'],'boolean'] , @@ -117,6 +117,7 @@ class TicketSearch extends Ticket 'id_ticket_type' => $this->id_ticket_type, 'id_account' => $this->id_account, 'id_card' => $this->id_card, + 'id_ticket' => $this->id_ticket ]); diff --git a/backend/models/UgiroSearch.php b/backend/models/UgiroSearch.php new file mode 100644 index 0000000..c51e759 --- /dev/null +++ b/backend/models/UgiroSearch.php @@ -0,0 +1,67 @@ + $query, + ]); + + $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_ugiro' => $this->id_ugiro, + 'id_user' => $this->id_user, + 'created_at' => $this->created_at, + 'updated_at' => $this->updated_at, + ]); + + return $dataProvider; + } +} diff --git a/backend/views/customer/_form_create.php b/backend/views/customer/_form_create.php index 1b9949e..ab0e281 100644 --- a/backend/views/customer/_form_create.php +++ b/backend/views/customer/_form_create.php @@ -75,6 +75,16 @@ use kartik\widgets\DatePicker; field($model, 'tax_number')->textInput(['maxlength' => true]) ?> +
+
+ field($model, 'bank_name')->textInput(['maxlength' => true])->label("Bank neve") ?> +
+
+
+
+ field($model, 'bank_account')->textInput(['maxlength' => true])->label("Bankszámlaszám") ?> +
+
field($model, 'country')->textInput(['maxlength' => true]) ?> diff --git a/backend/views/customer/_form_update.php b/backend/views/customer/_form_update.php index ed36c4e..0b3f62e 100644 --- a/backend/views/customer/_form_update.php +++ b/backend/views/customer/_form_update.php @@ -79,6 +79,16 @@ use kartik\widgets\DatePicker; field($model, 'tax_number')->textInput(['maxlength' => true]) ?>
+
+
+ field($model, 'bank_name')->textInput(['maxlength' => true])->label("Bank neve") ?> +
+
+
+
+ field($model, 'bank_account')->textInput(['maxlength' => true])->label("Bankszámlaszám") ?> +
+
field($model, 'country')->textInput(['maxlength' => true]) ?> diff --git a/backend/views/customer/view.php b/backend/views/customer/view.php index 7029491..7c1f095 100644 --- a/backend/views/customer/view.php +++ b/backend/views/customer/view.php @@ -44,6 +44,8 @@ $this->params['breadcrumbs'][] = $this->title; 'image', 'description', 'tax_number', + 'bank_name', + 'bank_account', 'country', 'zip', 'city', diff --git a/backend/views/ticket-installment-request/_download_giro_view.php b/backend/views/ticket-installment-request/_download_giro_view.php new file mode 100644 index 0000000..3df8fc7 --- /dev/null +++ b/backend/views/ticket-installment-request/_download_giro_view.php @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Megbízás azonosító + + + + Megbízás státusza + + + + Megbízás összege + + +
+ Megbízás inditására irányzott dátum + + formatter->asDatetime( $model['request_request_target_time_at'] );?> + + Megbízás elindításának ideje + + formatter->asDatetime( $model['request_sent_at'] );?> + + Megbízás feldoglozásának ideje + + formatter->asDatetime( $model['request_processed_at'] );?> +
+ Megbízás prioritása + + + + + + +
+ Vendég azonosító + + + + Vendég neve + + + + +
+ Bérlet azonosító + + + + Bérlet típus + + + + Bérlet státusza + + +
+ Bérlet érvényességének kezdete + + formatter->asDate( $model['ticket_start'] ) ;?> + + Bérlet érvényességének vége + + formatter->asDate( $model['ticket_end'] ) ;?> + + +
\ No newline at end of file diff --git a/backend/views/ticket-installment-request/_form.php b/backend/views/ticket-installment-request/_form.php new file mode 100644 index 0000000..56b303b --- /dev/null +++ b/backend/views/ticket-installment-request/_form.php @@ -0,0 +1,51 @@ + + +
+ + + + field($model, 'id_ticket')->textInput() ?> + + field($model, 'id_customer')->textInput() ?> + + field($model, 'id_transfer')->textInput() ?> + + field($model, 'status')->textInput() ?> + + field($model, 'money')->textInput() ?> + + field($model, 'customer_name')->textInput(['maxlength' => true]) ?> + + field($model, 'bank_name')->textInput(['maxlength' => true]) ?> + + field($model, 'bank_address')->textInput(['maxlength' => true]) ?> + + field($model, 'bank_account')->textInput(['maxlength' => true]) ?> + + field($model, 'priority')->textInput() ?> + + field($model, 'request_sent_at')->textInput() ?> + + field($model, 'request_processed_at')->textInput() ?> + + field($model, 'request_target_time_at')->textInput() ?> + + field($model, 'created_at')->textInput() ?> + + field($model, 'updated_at')->textInput() ?> + +
+ isNewRecord ? Yii::t('common/ticket_installment_request', 'Create') : Yii::t('common/ticket_installment_request', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> +
+ + + +
diff --git a/backend/views/ticket-installment-request/_index_view.php b/backend/views/ticket-installment-request/_index_view.php new file mode 100644 index 0000000..3df8fc7 --- /dev/null +++ b/backend/views/ticket-installment-request/_index_view.php @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Megbízás azonosító + + + + Megbízás státusza + + + + Megbízás összege + + +
+ Megbízás inditására irányzott dátum + + formatter->asDatetime( $model['request_request_target_time_at'] );?> + + Megbízás elindításának ideje + + formatter->asDatetime( $model['request_sent_at'] );?> + + Megbízás feldoglozásának ideje + + formatter->asDatetime( $model['request_processed_at'] );?> +
+ Megbízás prioritása + + + + + + +
+ Vendég azonosító + + + + Vendég neve + + + + +
+ Bérlet azonosító + + + + Bérlet típus + + + + Bérlet státusza + + +
+ Bérlet érvényességének kezdete + + formatter->asDate( $model['ticket_start'] ) ;?> + + Bérlet érvényességének vége + + formatter->asDate( $model['ticket_end'] ) ;?> + + +
\ No newline at end of file diff --git a/backend/views/ticket-installment-request/_pending_view.php b/backend/views/ticket-installment-request/_pending_view.php new file mode 100644 index 0000000..ab4ed8d --- /dev/null +++ b/backend/views/ticket-installment-request/_pending_view.php @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Beküldésre jelöl + + 'pending-request', 'value' => $model['request_id_ticket_installment_request']])?> + + + + +
+ Megbízás azonosító + + + + Megbízás státusza + + + + Megbízás összege + + +
+ Megbízás inditására irányzott dátum + + formatter->asDatetime( $model['request_request_target_time_at'] );?> + + Megbízás elindításának ideje + + formatter->asDatetime( $model['request_sent_at'] );?> + + Megbízás feldoglozásának ideje + + formatter->asDatetime( $model['request_processed_at'] );?> +
+ Megbízás prioritása + + + + + + +
+ Vendég azonosító + + + + Vendég neve + + + + +
+ Bérlet azonosító + + + + Bérlet típus + + + + Bérlet státusza + + +
+ Bérlet érvényességének kezdete + + formatter->asDate( $model['ticket_start'] ) ;?> + + Bérlet érvényességének vége + + formatter->asDate( $model['ticket_end'] ) ;?> + + +
\ No newline at end of file diff --git a/backend/views/ticket-installment-request/_search.php b/backend/views/ticket-installment-request/_search.php new file mode 100644 index 0000000..e2b53e8 --- /dev/null +++ b/backend/views/ticket-installment-request/_search.php @@ -0,0 +1,137 @@ + + + 'Mind'] + ArrayHelper::map(TicketType::read(), 'id_ticket_type', 'name'); + +?> + + diff --git a/backend/views/ticket-installment-request/_search_pending.php b/backend/views/ticket-installment-request/_search_pending.php new file mode 100644 index 0000000..c2443c9 --- /dev/null +++ b/backend/views/ticket-installment-request/_search_pending.php @@ -0,0 +1,76 @@ + + + 'Mind'] + ArrayHelper::map(TicketType::read(), 'id_ticket_type', 'name'); + +?> + + diff --git a/backend/views/ticket-installment-request/create.php b/backend/views/ticket-installment-request/create.php new file mode 100644 index 0000000..853d876 --- /dev/null +++ b/backend/views/ticket-installment-request/create.php @@ -0,0 +1,21 @@ +title = Yii::t('common/ticket_installment_request', 'Create Ticket Installment Request'); +$this->params['breadcrumbs'][] = ['label' => Yii::t('common/ticket_installment_request', 'Ticket Installment Requests'), 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/views/ticket-installment-request/index.php b/backend/views/ticket-installment-request/index.php new file mode 100644 index 0000000..9112d61 --- /dev/null +++ b/backend/views/ticket-installment-request/index.php @@ -0,0 +1,29 @@ +title = Yii::t('common/ticket_installment_request', 'Bérlet fizetési megbízások'); +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ render('_search', ['model' => $searchModel]); ?> + + + $dataProvider, + 'itemView' => '_index_view' + ]); + ?> + + +
diff --git a/backend/views/ticket-installment-request/index_download_giro.php b/backend/views/ticket-installment-request/index_download_giro.php new file mode 100644 index 0000000..765cdff --- /dev/null +++ b/backend/views/ticket-installment-request/index_download_giro.php @@ -0,0 +1,44 @@ +title = Yii::t('common/ticket_installment_request', 'Giro köteg létrehozása'); +$this->params['breadcrumbs'][] = $this->title; +?> + +
+ +

title) ?>

+ + + $dataProvider, + 'itemView' => '_download_giro_view' + ]); + ?> + + Url::current(), + 'method' => 'post', + ]); ?> + field($model, 'action')->hiddenInput()->label(false) ?> +
+ 'btn btn-primary']) ?> +
+ + + +
diff --git a/backend/views/ticket-installment-request/index_pending.php b/backend/views/ticket-installment-request/index_pending.php new file mode 100644 index 0000000..b1f84a3 --- /dev/null +++ b/backend/views/ticket-installment-request/index_pending.php @@ -0,0 +1,50 @@ +title = Yii::t('common/ticket_installment_request', 'Indításra váró bérlet fizetési megbízások'); +$this->params['breadcrumbs'][] = $this->title; +?> + +
+ +

title) ?>

+ render('_search_pending', ['model' => $searchModel]); ?> + + +
+ +
+ Url::current(), + 'method' => 'post', + ]); ?> + + $dataProvider, + 'itemView' => '_pending_view' + ]); + ?> +
+ 'btn btn-primary']) ?> +
+ + + +
diff --git a/backend/views/ticket-installment-request/test.php b/backend/views/ticket-installment-request/test.php new file mode 100644 index 0000000..8ee4258 --- /dev/null +++ b/backend/views/ticket-installment-request/test.php @@ -0,0 +1,85 @@ +duplumKod = 1; +$fej->kezdemenyezoAzonosito = "A25366936T244" ;//"66658092128"; +$fej->uzenetSorszam ->osszeallitasDatuma = "20160120"; +$fej->uzenetSorszam->sorszam = 1; +$fej->kezdemenyezoBankszamla->szamlaszam = "5860025215371128";//"5860025215371128"; +// $fej->kezdemenyezoBankszamla->bankszerv = "58600252"; //"TAKBHUHB"; +$fej->ertesitesiHatarido = ""; +$fej->kezdemenyezoCegNeve = "Cutler Four kft"; + +echo "fej
"; +echo "'".str_replace(' ', ' ',Html::encode($fej->toString()) )."'"; +echo "
"; + +$tetel = new GiroBeszedTetel(); +$tetel->tetelSorszam = 1; +$tetel->terhelesiDatum = "20160122"; +$tetel->osszeg = "1000"; +// $tetel->kotelezettBankszamla->bankszerv = "58600252"; +$tetel->kotelezettBankszamla->szamlaszam = "5860025215371128"; +$tetel->ugyfelazonositoAKezdemenyezonel = 1; +$tetel->ugyfelNeve = "Schneider Roland"; +$tetel->ugyfelCime = "Mosonmagyarovar, Gardonyi 31"; +$tetel->szamlaTulajdonosNeve = "Schneider Roland"; +$tetel->kozlemeny = "Berlet"; + +echo "tetel
"; +echo "'".str_replace(' ', ' ',($tetel->toString())) ."'"; +echo "
"; + + +$lab = new GiroBeszedLab(); + +$lab->tetelekOsszerteke = 1000; +$lab->tetelekSzama=1; + +echo "
lab
"; +echo str_replace(' ', ' ', $lab->toString() ); + + +$content = GiroBeszed::createFileContent(1, []); +echo "'".str_replace(' ', ' ', Html::encode(GiroBeszed::createFileContent(1, [])) ."'"); + + +$data = iconv("windows-1252","ASCII",$content); + + +// $filename = \Yii::$app->basePath . "/" ."giro" . rand(0,10000)."txt"; +// $myfile = fopen($filename,'a'); +// fwrite($myfile, $data); +// fclose($myfile); + +$dfej = new GiroDETSTAFej(); +$dfej->kezdemenyezoAzonosito = "A25366936T244"; +$dfej->csoportosUzenetSorszam ->osszeallitasDatuma = "20160120"; +$dfej->csoportosUzenetSorszam->sorszam = 1; +$dfej->detstaUzenetSorszam ->osszeallitasDatuma = "20160120"; +$dfej->detstaUzenetSorszam->sorszam = 1; +$dfej->ido = "100000"; +echo "dfej
"; +echo $dfej->toString(); + +echo "
"; + +$s = "01DETSTA0A25366936T244201601200001201601200001100000"; +$def2 = GiroDETSTAFej::parse($s); + +print_r($def2); + + +?> \ No newline at end of file diff --git a/backend/views/ticket-installment-request/update.php b/backend/views/ticket-installment-request/update.php new file mode 100644 index 0000000..f633fd2 --- /dev/null +++ b/backend/views/ticket-installment-request/update.php @@ -0,0 +1,23 @@ +title = Yii::t('common/ticket_installment_request', 'Update {modelClass}: ', [ + 'modelClass' => 'Ticket Installment Request', +]) . ' ' . $model->id_ticket_installment_request; +$this->params['breadcrumbs'][] = ['label' => Yii::t('common/ticket_installment_request', 'Ticket Installment Requests'), 'url' => ['index']]; +$this->params['breadcrumbs'][] = ['label' => $model->id_ticket_installment_request, 'url' => ['view', 'id' => $model->id_ticket_installment_request]]; +$this->params['breadcrumbs'][] = Yii::t('common/ticket_installment_request', 'Update'); +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/views/ticket-installment-request/view.php b/backend/views/ticket-installment-request/view.php new file mode 100644 index 0000000..11bb934 --- /dev/null +++ b/backend/views/ticket-installment-request/view.php @@ -0,0 +1,50 @@ +title = $model->id_ticket_installment_request; +$this->params['breadcrumbs'][] = ['label' => Yii::t('common/ticket_installment_request', 'Ticket Installment Requests'), 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ +

+ $model->id_ticket_installment_request], ['class' => 'btn btn-primary']) ?> + $model->id_ticket_installment_request], [ + 'class' => 'btn btn-danger', + 'data' => [ + 'confirm' => Yii::t('common/ticket_installment_request', 'Are you sure you want to delete this item?'), + 'method' => 'post', + ], + ]) ?> +

+ + $model, + 'attributes' => [ + 'id_ticket_installment_request', + 'id_ticket', + 'id_customer', + 'id_transfer', + 'status', + 'money', + 'customer_name', + 'bank_name', + 'bank_address', + 'bank_account', + 'priority', + 'request_sent_at', + 'request_processed_at', + 'request_target_time_at', + 'created_at', + 'updated_at', + ], + ]) ?> + +
diff --git a/backend/views/ticket-type/_form.php b/backend/views/ticket-type/_form.php index 330979d..3c3ff86 100644 --- a/backend/views/ticket-type/_form.php +++ b/backend/views/ticket-type/_form.php @@ -56,8 +56,12 @@ use yii\helpers\ArrayHelper; field($model, 'status')->checkbox( ['value' => 10, 'label' => Yii::t('common/ticket_type', "Active") ]) ?> field($model, 'flag_student')->checkbox( ['value' => 1, 'label' => Yii::t('common/ticket_type', "Student") ]) ?> - - + + + field($model, 'installment_enabled')->checkbox( ['value' => 1, 'label' => Yii::t('common/ticket_type', "Csoportos beszedéses a bruttó áron felül") ]) ?> +

A részletek havonta kerülnek beszedésre

+ field($model, 'installment_money')->textInput() ?> + field($model, 'installment_count')->textInput() ?>
isNewRecord ? Yii::t('common/ticket_type', 'Create') : Yii::t('common/ticket_type', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> diff --git a/backend/views/ticket-type/view.php b/backend/views/ticket-type/view.php index edd246a..3396d34 100644 --- a/backend/views/ticket-type/view.php +++ b/backend/views/ticket-type/view.php @@ -52,6 +52,12 @@ $this->params['breadcrumbs'][] = $this->title; ], 'created_at:datetime', 'updated_at:datetime', + [ + 'attribute' => 'installment_enabled', + 'value' => ( $model->isInstallment() ? Yii::t('common', 'Yes' ) : Yii::t('common', 'No' ) ), + ], + 'installment_money', + 'installment_count', ], ]) ?> diff --git a/backend/views/ticket/_search.php b/backend/views/ticket/_search.php index 04e7bf5..de41150 100644 --- a/backend/views/ticket/_search.php +++ b/backend/views/ticket/_search.php @@ -54,6 +54,9 @@ $userOptions = ['' => 'Mind'] + ArrayHelper::map($model->users, 'id', 'userna ] ]) ?>
+
+ field($model, 'id_ticket')->textInput() ?> +
diff --git a/backend/views/ticket/index.php b/backend/views/ticket/index.php index 19b2d50..5121848 100644 --- a/backend/views/ticket/index.php +++ b/backend/views/ticket/index.php @@ -77,6 +77,11 @@ $this->params['breadcrumbs'][] = $this->title; $dataProvider, 'columns' => [ + [ + 'attribute' => 'id_ticket', + 'value' => 'id_ticket', + 'label' => 'B. Azonosító' + ], [ 'attribute' => 'id_customer', 'value' => 'customerName' diff --git a/backend/views/ugiro/_form.php b/backend/views/ugiro/_form.php new file mode 100644 index 0000000..90adc03 --- /dev/null +++ b/backend/views/ugiro/_form.php @@ -0,0 +1,27 @@ + + +
+ + + + field($model, 'id_user')->textInput() ?> + + field($model, 'created_at')->textInput() ?> + + field($model, 'updated_at')->textInput() ?> + +
+ isNewRecord ? Yii::t('common/ugiro', 'Create') : Yii::t('common/ugiro', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> +
+ + + +
diff --git a/backend/views/ugiro/_search.php b/backend/views/ugiro/_search.php new file mode 100644 index 0000000..649aa9c --- /dev/null +++ b/backend/views/ugiro/_search.php @@ -0,0 +1,33 @@ + + + diff --git a/backend/views/ugiro/create.php b/backend/views/ugiro/create.php new file mode 100644 index 0000000..50428ce --- /dev/null +++ b/backend/views/ugiro/create.php @@ -0,0 +1,21 @@ +title = Yii::t('common/ugiro', 'Create Ugiro'); +$this->params['breadcrumbs'][] = ['label' => Yii::t('common/ugiro', 'Ugiros'), 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/views/ugiro/index.php b/backend/views/ugiro/index.php new file mode 100644 index 0000000..466ce37 --- /dev/null +++ b/backend/views/ugiro/index.php @@ -0,0 +1,46 @@ +title = Yii::t('common/ugiro', 'Kötegek'); +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ render('_search', ['model' => $searchModel]); ?> + + + $dataProvider, + 'columns' => [ + [ + 'attribute' => 'id_ugiro', + 'label' => 'Köteg azonosító' + ], + [ + 'attribute' => 'user.username', + 'label' => 'Felhasnáló' + ], + [ + 'attribute' => 'statusName', + 'label' => 'Státusz' + ], + [ + 'attribute' => 'created_at', + 'label' => 'Létrehozva', + 'format' =>'datetime' + ], + + ['class' => 'yii\grid\ActionColumn', + 'template' => '{view}' + ], + ], + ]); ?> + +
diff --git a/backend/views/ugiro/update.php b/backend/views/ugiro/update.php new file mode 100644 index 0000000..ef90b39 --- /dev/null +++ b/backend/views/ugiro/update.php @@ -0,0 +1,23 @@ +title = Yii::t('common/ugiro', 'Update {modelClass}: ', [ + 'modelClass' => 'Ugiro', +]) . ' ' . $model->id_ugiro; +$this->params['breadcrumbs'][] = ['label' => Yii::t('common/ugiro', 'Ugiros'), 'url' => ['index']]; +$this->params['breadcrumbs'][] = ['label' => $model->id_ugiro, 'url' => ['view', 'id' => $model->id_ugiro]]; +$this->params['breadcrumbs'][] = Yii::t('common/ugiro', 'Update'); +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/views/ugiro/view.php b/backend/views/ugiro/view.php new file mode 100644 index 0000000..047dd47 --- /dev/null +++ b/backend/views/ugiro/view.php @@ -0,0 +1,58 @@ +title = "Köteg részletei"; +$this->params['breadcrumbs'][] = ['label' => "Kötegek", 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ + + 'id_ugiro', + 'label' => 'Köteg azonosító' + ], + [ + 'attribute' => 'user.username', + 'label' => 'Felhasználó' + ], + [ + 'attribute' => 'statusName', + 'label' => 'Státusz' + ], + [ + 'attribute' => 'created_at', + 'label' => 'Létrehozva', + 'format' =>'datetime' + ], + [ + 'attribute' => 'path', + 'label' => 'Köteg Fájl', + 'value' => Html::a( "Letöltés" , Url::base() ."/". $model->path , ['target' =>'_blank' ,'download' =>'CS-BESZED.' .$model->id_ugiro ] ), + 'format' => 'raw' + ], + ]; + if ( $model->status == Ugiro::$STATUS_FINISHED){ + + } + + ?> + + + $model, + 'attributes' => $attributes, + ]) ?> + +
diff --git a/backend/web/giro/megbizas/giro10_20160120txt b/backend/web/giro/megbizas/giro10_20160120txt new file mode 100644 index 0000000..6da6459 --- /dev/null +++ b/backend/web/giro/megbizas/giro10_20160120txt @@ -0,0 +1,3 @@ +01BESZED1A25366936T2442016012000105860025215371128 00000000BEEmovar +02000001201601250000007800 1 roland Berlet :614 +030000010000000000007800 diff --git a/backend/web/giro/megbizas/giro11_20160120txt b/backend/web/giro/megbizas/giro11_20160120txt new file mode 100644 index 0000000..59e1ffb --- /dev/null +++ b/backend/web/giro/megbizas/giro11_20160120txt @@ -0,0 +1,3 @@ +01BESZED1A25366936T2442016012000115860025215371128 00000000BEEmovar +020000012016012500000078005860025215371128 1 roland Berlet :614 +030000010000000000007800 diff --git a/backend/web/giro/megbizas/giro12_20160120txt b/backend/web/giro/megbizas/giro12_20160120txt new file mode 100644 index 0000000..f34862e --- /dev/null +++ b/backend/web/giro/megbizas/giro12_20160120txt @@ -0,0 +1,4 @@ +01BESZED1A25366936T2442016012000125860025215371128 00000000BEEmovar +020000012016012500000078005860025215371128 1 roland Berlet :614 +020000022016012500000078005860025215371128 1 roland Berlet :614 +030000020000000000015600 diff --git a/backend/web/giro/megbizas/giro14_20160120txt b/backend/web/giro/megbizas/giro14_20160120txt new file mode 100644 index 0000000..cb84d0f --- /dev/null +++ b/backend/web/giro/megbizas/giro14_20160120txt @@ -0,0 +1,4 @@ +01BESZED1A25366936T2442016012000145860025215371128 00000000BEEmovar +020000012016012500000078005860025215371128 1 roland rvztr tkrfrgBerlet :614 +020000022016012500000078005860025215371128 1 roland rvztr tkrfrgBerlet :614 +030000020000000000015600 diff --git a/backend/web/giro/megbizas/giro15_20160120txt b/backend/web/giro/megbizas/giro15_20160120txt new file mode 100644 index 0000000..8107554 --- /dev/null +++ b/backend/web/giro/megbizas/giro15_20160120txt @@ -0,0 +1,4 @@ +01BESZED1A25366936T2442016012000155860025215371128 00000000BEEmovar +020000012016012500000078005860025215371128 1 roland rvztr tkrfr Berlet :614 +020000022016012500000078005860025215371128 1 roland rvztr tkrfr Berlet :614 +030000020000000000015600 diff --git a/backend/web/giro/megbizas/giro16_20160120txt b/backend/web/giro/megbizas/giro16_20160120txt new file mode 100644 index 0000000..847de95 --- /dev/null +++ b/backend/web/giro/megbizas/giro16_20160120txt @@ -0,0 +1,4 @@ +01BESZED1A25366936T2442016012000165860025215371128 00000000BEEmovar +020000012016012500000078005860025215371128 1 roland arvizturo tukorfurogBerlet :614 +020000022016012500000078005860025215371128 1 roland arvizturo tukorfurogBerlet :614 +030000020000000000015600 diff --git a/backend/web/giro/megbizas/giro17_20160120txt b/backend/web/giro/megbizas/giro17_20160120txt new file mode 100644 index 0000000..77a4a9e --- /dev/null +++ b/backend/web/giro/megbizas/giro17_20160120txt @@ -0,0 +1,4 @@ +01BESZED1A25366936T2442016012000175860025215371128 00000000BEEmovar +020000012016012500000078005860025215371128 1 roland arvizturo tukorfurogBerlet :614 +020000022016012500000078005860025215371128 1 roland arvizturo tukorfurogBerlet :614 +030000020000000000015600 diff --git a/backend/web/giro/megbizas/giro18_20160120txt b/backend/web/giro/megbizas/giro18_20160120txt new file mode 100644 index 0000000..5ac7d50 --- /dev/null +++ b/backend/web/giro/megbizas/giro18_20160120txt @@ -0,0 +1,4 @@ +01BESZED1A25366936T2442016012000185860025215371128 00000000BEEmovar +020000012016012500000078005860025215371128 1 roland arvizturo tukor Berlet :614 +020000022016012500000078005860025215371128 1 roland arvizturo tukor Berlet :614 +030000020000000000015600 diff --git a/backend/web/giro/megbizas/giro19_20160120txt b/backend/web/giro/megbizas/giro19_20160120txt new file mode 100644 index 0000000..d9a5ad2 --- /dev/null +++ b/backend/web/giro/megbizas/giro19_20160120txt @@ -0,0 +1,4 @@ +01BESZED1A25366936T2442016012000195860025215371128 00000000BEEmovar +020000012016012500000078005860025215371128 1 roland arvizturo tukor Berlet :614 +020000022016012500000078005860025215371128 1 roland arvizturo tukor Berlet :614 +030000020000000000015600 diff --git a/backend/web/giro/megbizas/giro20_20160120txt b/backend/web/giro/megbizas/giro20_20160120txt new file mode 100644 index 0000000..985d444 --- /dev/null +++ b/backend/web/giro/megbizas/giro20_20160120txt @@ -0,0 +1,4 @@ +01BESZED1A25366936T2442016012000205860025215371128 00000000BEEmovar +020000012016012500000078005860025215371128 1 roland Berlet :614 +020000022016012500000078005860025215371128 1 roland a Berlet :614 +030000020000000000015600 diff --git a/backend/web/giro/megbizas/giro21_20160120txt b/backend/web/giro/megbizas/giro21_20160120txt new file mode 100644 index 0000000..c2b2f13 --- /dev/null +++ b/backend/web/giro/megbizas/giro21_20160120txt @@ -0,0 +1,4 @@ +01BESZED1A25366936T2442016012000215860025215371128 00000000BEEmovar +020000012016012500000078005860025215371128 1 roland arvizturo tukorfurogBerlet :614 +020000022016012500000078005860025215371128 1 roland arvizturo tukorfurogBerlet :614 +030000020000000000015600 diff --git a/backend/web/giro/megbizas/giro22_20160120txt b/backend/web/giro/megbizas/giro22_20160120txt new file mode 100644 index 0000000..8445f4d --- /dev/null +++ b/backend/web/giro/megbizas/giro22_20160120txt @@ -0,0 +1,4 @@ +01BESZED1A25366936T2442016012000225860025215371128 00000000BEEmovar +020000012016012500000078005860025215371128 1 roland arvizturo tukorfurogBerlet :614 +020000022016012500000078005860025215371128 1 roland arvizturo tukorfurogBerlet :614 +030000020000000000015600 diff --git a/backend/web/giro/megbizas/giro23_20160120txt b/backend/web/giro/megbizas/giro23_20160120txt new file mode 100644 index 0000000..c59db10 --- /dev/null +++ b/backend/web/giro/megbizas/giro23_20160120txt @@ -0,0 +1,4 @@ +01BESZED1A25366936T2442016012000235860025215371128 00000000BEEmovar +020000012016012500000078005860025215371128 1 roland arvizturo tukorfurogBerlet :614 +020000022016012500000078005860025215371128 1 roland arvizturo tukorfurogBerlet :614 +030000020000000000015600 diff --git a/backend/web/giro/megbizas/giro26_20160120txt b/backend/web/giro/megbizas/giro26_20160120txt new file mode 100644 index 0000000..05723ed --- /dev/null +++ b/backend/web/giro/megbizas/giro26_20160120txt @@ -0,0 +1,4 @@ +01BESZED1A25366936T2442016012000265860025215371128 00000000BEEmovar +020000012016012500000078005860025215371128 1 roland arvizturo tukorfurogep Berlet :614 +020000022016012500000078005860025215371128 1 roland arvizturo tukorfurogep Berlet :614 +030000020000000000015600 diff --git a/backend/web/giro/megbizas/giro27_20160120txt b/backend/web/giro/megbizas/giro27_20160120txt new file mode 100644 index 0000000..4f0a0eb --- /dev/null +++ b/backend/web/giro/megbizas/giro27_20160120txt @@ -0,0 +1,4 @@ +01BESZED1A25366936T2442016012000275860025215371128 00000000BEEmovar +020000012016012500000078005860025215371128 1 roland arvizturo tukorfurogep Berlet :614 +020000022016012500000078005860025215371128 1 roland arvizturo tukorfurogep Berlet :614 +030000020000000000015600 diff --git a/backend/web/giro/megbizas/giro28_20160120txt b/backend/web/giro/megbizas/giro28_20160120txt new file mode 100644 index 0000000..ec7a33c --- /dev/null +++ b/backend/web/giro/megbizas/giro28_20160120txt @@ -0,0 +1,3 @@ +01BESZED1A25366936T2442016012000285860025215371128 00000000BEEmovar +020000012016012500000078005860025215371128 1 roland arvizturo tukorfurogep Berlet :614 +030000010000000000007800 diff --git a/backend/web/giro/megbizas/giro29_20160120.txt b/backend/web/giro/megbizas/giro29_20160120.txt new file mode 100644 index 0000000..d085099 --- /dev/null +++ b/backend/web/giro/megbizas/giro29_20160120.txt @@ -0,0 +1,3 @@ +01BESZED1A25366936T2442016012000295860025215371128 00000000BEEmovar +020000012016012500000078005860025215371128 1 roland arvizturo tukorfurogep Berlet :614 +030000010000000000007800 diff --git a/backend/web/giro/megbizas/giro30_20160120.txt b/backend/web/giro/megbizas/giro30_20160120.txt new file mode 100644 index 0000000..1f473ad --- /dev/null +++ b/backend/web/giro/megbizas/giro30_20160120.txt @@ -0,0 +1,13 @@ +01BESZED1A25366936T2442016012000305860025215371128 00000000BEEmovar +020000012016012500000078005860025215371128 1 roland arvizturo tukorfurogep Berlet :614 +020000022016012500000078005860025215371128 1 roland arvizturo tukorfurogep Berlet :614 +020000032016012500000078005860025215371128 1 roland arvizturo tukorfurogep Berlet :614 +020000042016012500000078005860025215371128 1 roland arvizturo tukorfurogep Berlet :614 +020000052016012500000078005860025215371128 1 roland arvizturo tukorfurogep Berlet :614 +020000062016012500000078005860025215371128 1 roland arvizturo tukorfurogep Berlet :614 +020000072016012500000078005860025215371128 1 roland arvizturo tukorfurogep Berlet :614 +020000082016012500000078005860025215371128 1 roland arvizturo tukorfurogep Berlet :614 +020000092016012500000078005860025215371128 1 roland arvizturo tukorfurogep Berlet :614 +020000102016012500000078005860025215371128 1 roland arvizturo tukorfurogep Berlet :614 +020000112016012500000078005860025215371128 1 roland arvizturo tukorfurogep Berlet :614 +030000110000000000085800 diff --git a/backend/web/giro/megbizas/giro9_20160120txt b/backend/web/giro/megbizas/giro9_20160120txt new file mode 100644 index 0000000..01c5b20 --- /dev/null +++ b/backend/web/giro/megbizas/giro9_20160120txt @@ -0,0 +1,3 @@ +01BESZED1A25366936T2442016012000095860025215371128 00000000BEEmovar +02000001201601250000007800 1 roland Berlet :614 +030000010000000000007800 diff --git a/backend/web/js/index.pending.js b/backend/web/js/index.pending.js new file mode 100644 index 0000000..79635cd --- /dev/null +++ b/backend/web/js/index.pending.js @@ -0,0 +1,8 @@ + + +$(document).ready(function() { + $("#select-all-pending").click(function() { + var checkBoxes = $(".pending-request"); + checkBoxes.prop("checked", $("#select-all-pending").prop("checked")); + }); +}); \ No newline at end of file diff --git a/bkr.html b/bkr.html new file mode 100644 index 0000000..5d61346 --- /dev/null +++ b/bkr.html @@ -0,0 +1,120 @@ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
pozíciómező-névtartalomtípushosszértékK / Vmegjegyzés
1 – 2F210rekordtípusN201K
3 – 8F211üzenettípusA6BESZEDK
9F212**duplum-kódN10 - 9Ka feldolgozás menetére nincs hatással
10-22F213kezdeményező azonosítójaAN13Ka CSBESZ-t összeállító +szolgáltató / beszedő +- adószáma +(Aaaaaaaaa[Tttt]), +- EAN kódja, +- egyéb azonosítója +(Ebbbsssss)
9F212**duplum-kódN10 - 9Ka feldolgozás menetére nincs hatással
+ +
+ + + + Generál + + + +
+ + + + \ No newline at end of file diff --git a/common/components/DailyListing.php b/common/components/DailyListing.php index 85340f0..34ad974 100644 --- a/common/components/DailyListing.php +++ b/common/components/DailyListing.php @@ -252,6 +252,10 @@ class DailyListing $query->andFilterWhere(['or' , $created_condition , $paid_condition]); $query->andWhere(['transfer.status' => Transfer::STATUS_PAID]); + + if ( $this->isModeReception() || $this->isModeAccountState() ){ + $query->andWhere(['transfer.payment_method' => Transfer::PAYMENT_METHOD_CASH]); + } } diff --git a/common/components/giro/GiroBankszamla.php b/common/components/giro/GiroBankszamla.php new file mode 100644 index 0000000..ae2331e --- /dev/null +++ b/common/components/giro/GiroBankszamla.php @@ -0,0 +1,16 @@ +szovegKitolt( $this->szamlaszam, 24 ); + } + +} \ No newline at end of file diff --git a/common/components/giro/GiroBase.php b/common/components/giro/GiroBase.php new file mode 100644 index 0000000..075d55e --- /dev/null +++ b/common/components/giro/GiroBase.php @@ -0,0 +1,43 @@ + $hossz){ + $data = substr($data, 0, $hossz ); + } + $data = str_pad($data, $hossz, $pad_string, STR_PAD_RIGHT); + echo $data; +// echo strlen($data); + return $data; + } + + public function szovegOlvas($row,$start,$length, $padchar = " "){ + return rtrim(substr($row, $start,$length),$padchar); + } + + public function szamOlvas($row,$start,$length, $padchar = "0"){ + return ltrim(substr($row, $start,$length),$padchar); + } + + public function rekordVege(){ + return "\r\n"; + } +} \ No newline at end of file diff --git a/common/components/giro/GiroBeszed.php b/common/components/giro/GiroBeszed.php new file mode 100644 index 0000000..2605ce7 --- /dev/null +++ b/common/components/giro/GiroBeszed.php @@ -0,0 +1,80 @@ +duplumKod = \Yii::$app->params['ugiro_duplom_kod']; + $fej->kezdemenyezoAzonosito = \Yii::$app->params['ugiro_kezdemenyezo_azonosito'];//"A25366936T244"; // "66658092128"; + $fej->uzenetSorszam->osszeallitasDatuma = date('Ymd' ); + $fej->uzenetSorszam->sorszam = $id; + $fej->kezdemenyezoBankszamla->szamlaszam = \Yii::$app->params['ugiro_kezdemenyezo_szamlaszam']; // "5860025215371128"; +// $fej->kezdemenyezoBankszamla->bankszerv = "58600252"; // "TAKBHUHB"; + $fej->ertesitesiHatarido = ""; + $fej->kezdemenyezoCegNeve = \Yii::$app->params['company']; + + return $fej->toString (); + } + + public static function createTetelek($requests){ + $s = ""; + foreach ($requests as $request){ + $s .= self::createTetel($request); + } + return $s; + } + + /** + * @param common\models\TicketInstallmentRequest $request + * */ + public static function createTetel($request) { + $tetel = new GiroBeszedTetel (); + $customer = $request->customer; + $tetel->tetelSorszam = $request->id_ticket_installment_request; + $tetel->terhelesiDatum = date('Ymd' ,strtotime("+5 day"));; + $tetel->osszeg = $request->money; +// $tetel->kotelezettBankszamla->bankszerv = "58600252"; + $tetel->kotelezettBankszamla->szamlaszam = $customer->bank_account; + $tetel->ugyfelazonositoAKezdemenyezonel = $customer->id_customer; +// $tetel->ugyfelNeve = "Schneider Roland"; +// $tetel->ugyfelCime = "Mosonmagyarovar, Gardonyi 31"; + $tetel->szamlaTulajdonosNeve = $customer->name; + $tetel->kozlemeny = "Berlet :" . $request->id_ticket; + + return $tetel->toString(); + } + + public static function createLab($requests) { + $lab = new GiroBeszedLab (); + + $osszeg = 0; + foreach ($requests as $request ){ + $osszeg += $request->money; + } + + $lab->tetelekOsszerteke = $osszeg; + $lab->tetelekSzama = count($requests); + + return $lab->toString (); + } +} \ No newline at end of file diff --git a/common/components/giro/GiroBeszedFej.php b/common/components/giro/GiroBeszedFej.php new file mode 100644 index 0000000..a90fca4 --- /dev/null +++ b/common/components/giro/GiroBeszedFej.php @@ -0,0 +1,45 @@ +uzenetSorszam = new GiroUzenetsorszam(); + $this->kezdemenyezoBankszamla = new GiroBankszamla(); + } + + + public function toString( ) { + return $this->recordTipus + .$this->uzenetTipus + . $this->duplumKod + . $this->szamKitolt( $this->kezdemenyezoAzonosito , 13) + . $this->uzenetSorszam->toString() + . $this->kezdemenyezoBankszamla->toString() + . $this->szamKitolt($this->ertesitesiHatarido,8) + . $this->jogcim + . $this->szovegKitolt($this->kezdemenyezoCegNeve, 35) + . $this->szovegKitolt($this->kozlemeny, 70) + . $this->rekordVege() + ; + } + + +} \ No newline at end of file diff --git a/common/components/giro/GiroBeszedLab.php b/common/components/giro/GiroBeszedLab.php new file mode 100644 index 0000000..382ea49 --- /dev/null +++ b/common/components/giro/GiroBeszedLab.php @@ -0,0 +1,30 @@ +rekordTipus + . $this->szamKitolt($this->tetelekSzama,6) + . $this->szamKitolt($this->tetelekOsszerteke,16) + . $this->rekordVege() + ; + + } + + +} \ No newline at end of file diff --git a/common/components/giro/GiroBeszedTetel.php b/common/components/giro/GiroBeszedTetel.php new file mode 100644 index 0000000..b4fa234 --- /dev/null +++ b/common/components/giro/GiroBeszedTetel.php @@ -0,0 +1,44 @@ +kotelezettBankszamla = new GiroBankszamla(); + } + + public function toString(){ + return $this->rekordTipus + . $this->szamKitolt($this->tetelSorszam,6) + . $this->terhelesiDatum + . $this->szamKitolt($this->osszeg, 10) + . $this->kotelezettBankszamla->toString() + . $this->szovegKitolt($this->ugyfelazonositoAKezdemenyezonel ,24) + . $this->szovegKitolt( $this->ugyfelNeve ,35 ) + . $this->szovegKitolt($this->ugyfelCime , 35 ) + . $this->szovegKitolt($this->szamlaTulajdonosNeve , 35 ) + . $this->szovegKitolt($this->kozlemeny , 70 ) + . $this->rekordVege() + ; + + } + + +} \ No newline at end of file diff --git a/common/components/giro/GiroDETSTA.php b/common/components/giro/GiroDETSTA.php new file mode 100644 index 0000000..22cc26b --- /dev/null +++ b/common/components/giro/GiroDETSTA.php @@ -0,0 +1,38 @@ +fej = GiroDETSTAFej::parse($array[0]); + $detsta->lab = GiroDETSTALab::parse($array[count($array) -1]); + + for ( $i = 1 ; $i < count($array) -1; $i++ ){ + $row = $array[$i]; + $tetel = GiroDETSTATetel::parse($row); + $detsta->tetelek[] = $tetel; + } + return $detsta; + } + +} \ No newline at end of file diff --git a/common/components/giro/GiroDETSTAFej.php b/common/components/giro/GiroDETSTAFej.php new file mode 100644 index 0000000..13bf96b --- /dev/null +++ b/common/components/giro/GiroDETSTAFej.php @@ -0,0 +1,55 @@ +csoportosUzenetSorszam = new GiroUzenetsorszam(); + $this->detstaUzenetSorszam = new GiroUzenetsorszam(); + } + + public function toString( ) { + return $this->recordTipus + .$this->uzenetTipus + . $this->jelentesJelzo + . $this->szamKitolt( $this->kezdemenyezoAzonosito , 13) + . $this->csoportosUzenetSorszam->toString() + . $this->detstaUzenetSorszam->toString() + . $this->ido + . $this->rekordVege() + ; + } + + public static function parse($row){ + $fej = new GiroDETSTAFej(); + + $fej->recordTipus = substr($row,0,2 ); + $fej->uzenetTipus = substr($row, 2,6 ); + $fej->jelentesJelzo = substr($row, 8,1); + $fej->kezdemenyezoAzonosito = substr($row, 9,13); + $fej->csoportosUzenetSorszam ->osszeallitasDatuma = substr($row, 22, 8); + $fej->csoportosUzenetSorszam->sorszam = substr($row, 30, 4); + $fej->detstaUzenetSorszam ->osszeallitasDatuma = substr($row, 34,8); + $fej->detstaUzenetSorszam->sorszam = substr($row, 42,4); + $fej->ido = substr($row, 46,6); + + return $fej; + } + + +} \ No newline at end of file diff --git a/common/components/giro/GiroDETSTALab.php b/common/components/giro/GiroDETSTALab.php new file mode 100644 index 0000000..ae18a12 --- /dev/null +++ b/common/components/giro/GiroDETSTALab.php @@ -0,0 +1,44 @@ +recordTipus + . $this->szamKitolt ( $this->teljesitettTetelekSzama, 6 ) + . $this->szamKitolt ( $this->teljesitettTetelekOsszerteke, 16 ) + . $this->szamKitolt ( $this->visszautasitottTetelekSzama, 6 ) + . $this->szamKitolt ( $this->visszautasitottTetelekOsszerteke, 16 ) + . $this->szamKitolt ( $this->megNemValaszoltTetelekSzama, 6 ) + . $this->szamKitolt ( $this->megNemValaszoltTetelekOsszerteke, 16 ) + . $this->rekordVege(); + ; + } + public static function parse($row) { + $lab = new GiroDETSTALab (); + $lab->recordTipus = substr($row,0,2 ); + $lab->teljesitettTetelekSzama = substr($row,2,6 ); + $lab->teljesitettTetelekOsszerteke = substr($row,8,16 ); + $lab->visszautasitottTetelekSzama = substr($row,24,6 ); + $lab->visszautasitottTetelekOsszerteke = substr($row,30,16 ); + $lab->megNemValaszoltTetelekSzama = substr($row,46,6 ); + $lab->megNemValaszoltTetelekOsszerteke = substr($row,52, 16 ); + return $lab; + } +} \ No newline at end of file diff --git a/common/components/giro/GiroDETSTATetel.php b/common/components/giro/GiroDETSTATetel.php new file mode 100644 index 0000000..f2bf20c --- /dev/null +++ b/common/components/giro/GiroDETSTATetel.php @@ -0,0 +1,61 @@ + "nem létező 'címzett' számlaszám", + '03' => "megszűnt 'címzett' számlaszám", + '06' => "a 'címzett' számlaszáma nem értelmezhető (az ügyfél számlaszáma helyett a bank ügyfélforgalmi számlaszáma szerepel)", + '10' => "a számlatulajdonos neve és a megadott számlaszám nem tartozik össze szemantikai, 'teljesíthetetlen' ok miatti visszaküldés (RETURN)", + '50' => "fedezethiány miatti visszaküldés", + '51' => "felhatalmazás hiánya miatti visszaküldés", + '54' => "általános visszaküldés (az ügyfél megbízása alapján)", + '65' => "összeghatár feletti beszedési megbízás", + '99' => "egyéb hiba" + ]; + + public $recordTipus = "01"; + public $tetelSorszam = "0"; + public $osszeg = "0"; + public $eredetiTetelElszamolasiDatuma = ""; + public $visszajelzesInformacio; + public $feldolgozasDatum; + public $terhelesiDatum; + public $valaszHivatkozasiKod; + public $eredetiHivatkozasiKod; + public $ugyfelAzonosito; + + public function __construct() { + $this->csoportosUzenetSorszam = new GiroUzenetsorszam (); + $this->detstaUzenetSorszam = new GiroUzenetsorszam (); + } + public function toString() { + return $this->recordTipus . $this->szamKitolt ( $this->tetelSorszam, 6 ) . $this->szamKitolt ( $this->osszeg, 10 ) . $this->eredetiTetelElszamolasiDatuma . $this->visszajelzesInformacio . $this->feldolgozasDatum . $this->terhelesiDatum . $this->szovegKitolt ( $this->valaszHivatkozasiKod, 29 ) . $this->szovegKitolt ( $this->eredetiHivatkozasiKod, 29 ) . $this->szovegKitolt ( $this->ugyfelAzonosito, 29 ); + } + + public static function parse($row) { + + $tetel = new GiroDETSTATetel (); + $tetel->recordTipus = substr ( $row, 0, 2 ); + $tetel->tetelSorszam = substr ( $row, 2, 6 ); + $tetel->osszeg = substr ( $row, 8, 10 ); + $tetel->eredetiTetelElszamolasiDatuma = substr ( $row, 18, 8 ); + $tetel->visszajelzesInformacio = substr ( $row, 26, 2 ); + $tetel->feldolgozasDatum = substr ( $row, 28, 8 ); + $tetel->terhelesiDatum = substr ( $row, 36, 8 ); + $tetel->valaszHivatkozasiKod = substr ( $row, 44, 29 ); + $tetel->eredetiHivatkozasiKod = substr ( $row, 73, 29 ); + $tetel->ugyfelAzonosito = substr ( $row, 102, 24 ); + + return $tetel; + } +} \ No newline at end of file diff --git a/common/components/giro/GiroUzenetSorszam.php b/common/components/giro/GiroUzenetSorszam.php new file mode 100644 index 0000000..60a2bf7 --- /dev/null +++ b/common/components/giro/GiroUzenetSorszam.php @@ -0,0 +1,16 @@ +osszeallitasDatuma . $this->szamKitolt( $this->sorszam,4); + } + + } +?> \ No newline at end of file diff --git a/common/config/params.php b/common/config/params.php index 87d153f..39f98ed 100644 --- a/common/config/params.php +++ b/common/config/params.php @@ -13,5 +13,8 @@ return [ 'login_reception_email' => true, //if reception login should send email 'login_admin_email' => true, //if admin login should send email 'account_state_close_preload_money' => 'true',//preload money wnen show account state close page - + 'ugiro_duplom_kod' => 1, + 'ugiro_kezdemenyezo_szamlaszam' => '5860025215371128', + 'ugiro_kezdemenyezo_azonosito' => 'A25366936T244', + ]; diff --git a/common/models/CardKeyAssignment.php b/common/models/CardKeyAssignment.php new file mode 100644 index 0000000..cf60198 --- /dev/null +++ b/common/models/CardKeyAssignment.php @@ -0,0 +1,62 @@ + TimestampBehavior::className(), + 'value' => function(){ return date('Y-m-d H:i:s' ); } + ], + ], parent::behaviors()); + } + + /** + * @inheritdoc + */ + public static function tableName() + { + return 'card_key_assignment'; + } + + /** + * @inheritdoc + */ + public function rules() + { + return [ + [['id_card', 'id_key', 'id_user'], 'integer'], + ]; + } + + /** + * @inheritdoc + */ + public function attributeLabels() + { + return [ + 'id_card' => Yii::t('common/image', 'Id Card'), + 'id_key' => Yii::t('common/image', 'Id Key'), + 'id_user' => Yii::t('common/image', 'Id User'), + 'created_at' => Yii::t('common/image', 'Created At'), + 'updated_at' => Yii::t('common/image', 'Updated At'), + ]; + } +} diff --git a/common/models/CardSearch.php b/common/models/CardSearch.php index 414462b..3cb6525 100644 --- a/common/models/CardSearch.php +++ b/common/models/CardSearch.php @@ -57,7 +57,7 @@ class CardSearch extends Card { $query = new Query(); - $query->select(['card.number as card_number' , 'customer.name as customer_name', 'customer.email as customer_email','customer.phone as customer_phone']); + $query->select(['card.id_card as card_id_card', 'card.number as card_number' , 'customer.name as customer_name', 'customer.email as customer_email','customer.phone as customer_phone']); $query->from('card'); $query->innerJoin('customer','card.id_card = customer.id_customer_card'); $query->orderBy(['customer.name' => SORT_ASC]); diff --git a/common/models/Ticket.php b/common/models/Ticket.php index 3986101..d82aef5 100644 --- a/common/models/Ticket.php +++ b/common/models/Ticket.php @@ -46,7 +46,7 @@ class Ticket extends \common\models\BaseFitnessActiveRecord public function rules() { return [ - [['id_user', 'id_ticket_type', 'id_account', 'id_discount', 'max_usage_count', 'usage_count', 'status', 'price_brutto'], 'integer'], + [[ 'id_user', 'id_ticket_type', 'id_account', 'id_discount', 'max_usage_count', 'usage_count', 'status', 'price_brutto'], 'integer'], [['start', 'end', 'created_at', 'updated_at'], 'safe'], [['comment'], 'required'], [['comment'], 'string', 'max' => 255] @@ -59,7 +59,7 @@ class Ticket extends \common\models\BaseFitnessActiveRecord public function attributeLabels() { return [ - 'id_ticket' => Yii::t('common/ticket', 'Id Ticket'), + 'id_ticket' => Yii::t('common/ticket', 'Bérlet azonosító'), 'id_user' => Yii::t('common/ticket', 'Id User'), 'id_ticket_type' => Yii::t('common/ticket', 'Id Ticket Type'), 'id_account' => Yii::t('common/ticket', 'Id Account'), @@ -233,4 +233,20 @@ class Ticket extends \common\models\BaseFitnessActiveRecord return $query; } + public static function statuses( ) { + return [ + Ticket::STATUS_ACTIVE => 'Aktív', + Ticket::STATUS_DELETED => 'Törölve', + ]; + } + + public static function toStatusName($id_status){ + $result = "Ismeretlen"; + $statuses = Ticket::statuses(); + if ( array_key_exists($id_status, $statuses)){ + $result = $statuses[$id_status]; + } + return $result; + } + } diff --git a/common/models/TicketInstallmentRequest.php b/common/models/TicketInstallmentRequest.php new file mode 100644 index 0000000..f38cf18 --- /dev/null +++ b/common/models/TicketInstallmentRequest.php @@ -0,0 +1,156 @@ + 255] + ]; + } + + /** + * @inheritdoc + */ + public function attributeLabels() + { + return [ + 'id_ticket_installment_request' => Yii::t('common/ticket_installment_request', 'Id Ticket Installment Request'), + 'id_ticket' => Yii::t('common/ticket_installment_request', 'Id Ticket'), + 'id_customer' => Yii::t('common/ticket_installment_request', 'Id Customer'), + 'id_transfer' => Yii::t('common/ticket_installment_request', 'Id Transfer'), + 'status' => Yii::t('common/ticket_installment_request', 'Status'), + 'money' => Yii::t('common/ticket_installment_request', 'Money'), + 'customer_name' => Yii::t('common/ticket_installment_request', 'Customer Name'), + 'bank_name' => Yii::t('common/ticket_installment_request', 'Bank Name'), + 'bank_address' => Yii::t('common/ticket_installment_request', 'Bank Address'), + 'bank_account' => Yii::t('common/ticket_installment_request', 'Bank Account'), + 'priority' => Yii::t('common/ticket_installment_request', 'Priority'), + 'request_sent_at' => Yii::t('common/ticket_installment_request', 'Request Sent At'), + 'request_processed_at' => Yii::t('common/ticket_installment_request', 'Request Processed At'), + 'request_target_time_at' => Yii::t('common/ticket_installment_request', 'Request Target Time At'), + 'created_at' => Yii::t('common/ticket_installment_request', 'Created At'), + 'updated_at' => Yii::t('common/ticket_installment_request', 'Updated At'), + ]; + } + + + public function behaviors() + { + return ArrayHelper::merge( [ + [ + 'class' => TimestampBehavior::className(), + 'value' => function(){ return date('Y-m-d H:i:s' ); } + ], + ], parent::behaviors()); + } + + public function getCustomer(){ + return $this->hasOne( Customer::className(), ["id_customer" =>"id_customer" ] ); + } + + /** + * @param common\models\Ticket $ticket + * @param common\models\TicketType $type + * @return common\models\TicketInstallmentRequest[] + * */ + public static function createInstallments($ticket,$type,$customer){ + $result = []; + if ( $type->isInstallment() ){ + $count = $type->installment_count; + $ticketCreatedAt = time(); + $money = $type->price_brutto; + for ( $i = 1; $i <= $count; $i++){ + $request = TicketInstallmentRequest::createInstallment($ticket, $type, $customer, $money, $ticketCreatedAt, $i); + $result[] = $request; + } + + } + return $result; + } + + public static function createInstallment($ticket,$type,$customer,$money,$ticketCreated,$index){ + $request = new TicketInstallmentRequest(); + $request->id_ticket = $ticket->id_ticket; + $request->id_customer = $customer->id_customer; + $request->status = TicketInstallmentRequest::$STATUS_PENDING; + $request->priority = $index; + $request->request_target_time_at = date('Y-m-d H:i:s', strtotime("+".$index." month" )); + $request->request_processed_at = null; + $request->request_sent_at = null; + $request->money = $money; + + return $request; + } + + public static function statuses(){ + return [ + TicketInstallmentRequest::$STATUS_PENDING => 'Indításra vár', + TicketInstallmentRequest::$STATUS_MARKED_TO_SEND=> 'Beküldésre jelölve', + TicketInstallmentRequest::$STATUS_SENT=> 'Beküldve', + TicketInstallmentRequest::$STATUS_CANCELED=> 'Törölve', + TicketInstallmentRequest::$STATUS_REJECTED=> 'Visszautasítva', + TicketInstallmentRequest::$STATUS_ACCEPTED=> 'Sikeresen végrehajtva', + + ]; + } + + public static function toStatusName($id_status){ + $result = "Ismeretlen"; + $statuses = TicketInstallmentRequest::statuses(); + if ( array_key_exists($id_status, $statuses)){ + $result = $statuses[$id_status]; + } + return $result; + } + +} diff --git a/common/models/TicketType.php b/common/models/TicketType.php index 831514e..9cbaf09 100644 --- a/common/models/TicketType.php +++ b/common/models/TicketType.php @@ -18,6 +18,9 @@ use yii\helpers\ArrayHelper; * @property integer $id_account * @property integer $flag_student * @property integer $status + * @property integer installment_enabled + * @property integer installment_count + * @property integer installment_money * @property string $created_at * @property string $updated_at */ @@ -33,6 +36,9 @@ class TicketType extends \common\models\BaseFitnessActiveRecord { const FLAG_STUDENT_OFF = 0; const FLAG_STUDENT_ON = 1; + const INSTALLMENT_OFF = 0; + const INSTALLMENT_ON = 1; + /** * @inheritdoc */ @@ -89,6 +95,15 @@ class TicketType extends \common\models\BaseFitnessActiveRecord { //////////////// [['id_account',], 'integer'], [['id_account',], 'validateIdAccount'], + + ///////////////////// + //INSTALLMENT ENABLED + ///////////////////// + [['installment_enabled',], 'integer'], + [['installment_enabled',], 'in', 'range' => [ self::INSTALLMENT_ON, self::INSTALLMENT_OFF ]], + + [['installment_money',], 'integer'], + [['installment_count',], 'integer'], ]; } @@ -110,6 +125,9 @@ class TicketType extends \common\models\BaseFitnessActiveRecord { 'status' => Yii::t('common/ticket_type', 'Status'), 'created_at' => Yii::t('common/ticket_type', 'Created At'), 'updated_at' => Yii::t('common/ticket_type', 'Updated At'), + 'installment_enabled' => Yii::t('common/ticket_type', 'Részlet fizetés a brutto áron felül'), + 'installment_count' => Yii::t('common/ticket_type', 'Havi részletek száma'), + 'installment_money' => Yii::t('common/ticket_type', 'Havi részlet összege'), ]; } @@ -170,6 +188,9 @@ class TicketType extends \common\models\BaseFitnessActiveRecord { public function isStudent(){ return $this->flag_student == ( self::FLAG_STUDENT_ON); } + public function isInstallment(){ + return $this->installment_enabled == ( self::INSTALLMENT_ON); + } public function validateIdAccount($attribute,$params){ diff --git a/common/models/Transfer.php b/common/models/Transfer.php index 1818bb7..c92eca5 100644 --- a/common/models/Transfer.php +++ b/common/models/Transfer.php @@ -51,7 +51,10 @@ class Transfer extends \common\models\BaseFitnessActiveRecord const DIRECTION_IN = 20;//MONEY GOES IN TO THE ACCOUNT ( COMPANY EARN MONEY ) const PAYMENT_METHOD_CASH = 10; - const PAYMENT_METHOD_TRANSFER = 20; + const PAYMENT_METHOD_BANCCARD = 20; //BANKKÁRTYA + const PAYMENT_METHOD_TRANSFER= 30; // ÁTUTALÁS + const PAYMENT_METHOD_CAFETERY = 40;//SZÉCHENYI KÁRTYA +// const PAYMENT_METHOD_DEBIT_MANDATE = 50;//CSOPORTOS BESZEDÉSI MEGBÍZÁS /** * @inheritdoc @@ -464,7 +467,10 @@ class Transfer extends \common\models\BaseFitnessActiveRecord public static function paymentMethods( ) { return [ self::PAYMENT_METHOD_CASH=> Yii::t('common/transfer','Készpénz'), - self::PAYMENT_METHOD_TRANSFER => Yii::t('common/transfer','Bankkártyás fizetés'), + self::PAYMENT_METHOD_BANCCARD => Yii::t('common/transfer','Bankkártyás fizetés'), + self::PAYMENT_METHOD_TRANSFER => Yii::t('common/transfer','Átutalás'), + self::PAYMENT_METHOD_CAFETERY => Yii::t('common/transfer','Széchenyi kártya'), +// self::PAYMENT_METHOD_DEBIT_MANDATE => Yii::t('common/transfer','Csoportos beszedési megbízás'), ]; } public static function statuses( ) { diff --git a/common/models/Ugiro.php b/common/models/Ugiro.php new file mode 100644 index 0000000..8423407 --- /dev/null +++ b/common/models/Ugiro.php @@ -0,0 +1,86 @@ + TimestampBehavior::className(), + 'value' => function(){ return date('Y-m-d H:i:s' ); } + ], + ], parent::behaviors()); + } + + /** + * @inheritdoc + */ + public function attributeLabels() + { + return [ + 'id_ugiro' => Yii::t('common/ticket_installment_request', 'Id Ugiro'), + 'id_user' => Yii::t('common/ticket_installment_request', 'Id User'), + 'created_at' => Yii::t('common/ticket_installment_request', 'Created At'), + 'updated_at' => Yii::t('common/ticket_installment_request', 'Updated At'), + ]; + } + + public function getUser(){ + return $this->hasOne( User::className(), ["id" =>"id_user" ] ); + } + + public static function statuses() { + return [ + static::$STATUS_SENT =>"Folyamatban", + static::$STATUS_FINISHED =>"Befejezve", + ] + ; + } + + public function getStatusName( ) { + $statuses = static::statuses() ; + $result = "Ismeretlen"; + if ( array_key_exists($this->status, $statuses)){ + $result = $statuses[$this->status]; + } + return $result; + } + +} diff --git a/common/models/UgiroRequestAssignment.php b/common/models/UgiroRequestAssignment.php new file mode 100644 index 0000000..9bfbbbe --- /dev/null +++ b/common/models/UgiroRequestAssignment.php @@ -0,0 +1,51 @@ + Yii::t('common/ugiro_request_assignment', 'Id Ugiro Request Assignment'), + 'id_ugiro' => Yii::t('common/ugiro_request_assignment', 'Id Ugiro'), + 'id_request' => Yii::t('common/ugiro_request_assignment', 'Id Request'), + 'created_at' => Yii::t('common/ugiro_request_assignment', 'Created At'), + 'updated_at' => Yii::t('common/ugiro_request_assignment', 'Updated At'), + ]; + } +} diff --git a/console/migrations/m160117_182720_add_card_key_assignment.php b/console/migrations/m160117_182720_add_card_key_assignment.php new file mode 100644 index 0000000..8592150 --- /dev/null +++ b/console/migrations/m160117_182720_add_card_key_assignment.php @@ -0,0 +1,38 @@ +db->driverName === 'mysql') { + // http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci + $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB'; + } + + $this->createTable('{{%card_key_assignment}}', [ + 'id_card' => $this->integer(11), + 'id_key' => $this->integer(11), + 'id_user' => $this->integer(11), + 'created_at' => $this->dateTime()->notNull(), + 'updated_at' => $this->dateTime()->notNull(), + ], $tableOptions); + } + + public function down() + { + } + + /* + // Use safeUp/safeDown to run migration code within a transaction + public function safeUp() + { + } + + public function safeDown() + { + } + */ +} diff --git a/console/migrations/m160119_103347_alter__table__ticket_type__add_installment_fields.php b/console/migrations/m160119_103347_alter__table__ticket_type__add_installment_fields.php new file mode 100644 index 0000000..4b83b79 --- /dev/null +++ b/console/migrations/m160119_103347_alter__table__ticket_type__add_installment_fields.php @@ -0,0 +1,29 @@ +addColumn("ticket_type", "installment_enabled", "int default 0"); + $this->addColumn("ticket_type", "installment_count", "int"); + $this->addColumn("ticket_type", "installment_money", "int"); + } + + public function down() + { + } + + /* + // Use safeUp/safeDown to run migration code within a transaction + public function safeUp() + { + } + + public function safeDown() + { + } + */ +} diff --git a/console/migrations/m160119_110151_create__table__ticket__installment_request.php b/console/migrations/m160119_110151_create__table__ticket__installment_request.php new file mode 100644 index 0000000..7049646 --- /dev/null +++ b/console/migrations/m160119_110151_create__table__ticket__installment_request.php @@ -0,0 +1,50 @@ +db->driverName === 'mysql') { + // http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci + $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB'; + } + + $this->createTable('{{%ticket_installment_request}}', [ + 'id_ticket_installment_request' => $this->primaryKey(), + 'id_ticket' => $this->integer(11), + 'id_customer' => $this->integer(11), + 'id_transfer' => $this->integer(11), + 'status' => $this->integer(11), + 'money' => $this->integer(11), + 'customer_name' => $this->string(), + 'bank_name' => $this->string(), + 'bank_address' => $this->string(), + 'bank_account' => $this->string(), + 'priority' => $this->integer(11), + 'request_sent_at' => $this->dateTime(), + 'request_processed_at' => $this->dateTime(), + 'request_target_time_at' => $this->dateTime(), + 'created_at' => $this->dateTime()->notNull(), + 'updated_at' => $this->dateTime()->notNull(), + ], $tableOptions); + } + + public function down() + { + } + + /* + // Use safeUp/safeDown to run migration code within a transaction + public function safeUp() + { + } + + public function safeDown() + { + } + */ +} diff --git a/console/migrations/m160120_044951_add__ugiro_tables.php b/console/migrations/m160120_044951_add__ugiro_tables.php new file mode 100644 index 0000000..c0d6900 --- /dev/null +++ b/console/migrations/m160120_044951_add__ugiro_tables.php @@ -0,0 +1,52 @@ +db->driverName === 'mysql') { + // http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci + $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB'; + } + + $this->createTable('{{%ugiro}}', [ + 'id_ugiro' => $this->primaryKey(), + 'id_user' => $this->integer(11), + 'created_at' => $this->dateTime()->notNull(), + 'updated_at' => $this->dateTime()->notNull(), + ], $tableOptions); + + $tableOptions = null; + if ($this->db->driverName === 'mysql') { + // http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci + $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB'; + } + + $this->createTable('{{%ugiro_request_assignment}}', [ + 'id_ugiro_request_assignment' => $this->primaryKey(), + 'id_ugiro' => $this->integer(11), + 'id_request' => $this->integer(11), + 'created_at' => $this->dateTime()->notNull(), + 'updated_at' => $this->dateTime()->notNull(), + ], $tableOptions); + } + + public function down() + { + } + + /* + // Use safeUp/safeDown to run migration code within a transaction + public function safeUp() + { + } + + public function safeDown() + { + } + */ +} diff --git a/console/migrations/m160120_050556_alter__table__ugiro_add_column_path.php b/console/migrations/m160120_050556_alter__table__ugiro_add_column_path.php new file mode 100644 index 0000000..909a3be --- /dev/null +++ b/console/migrations/m160120_050556_alter__table__ugiro_add_column_path.php @@ -0,0 +1,30 @@ +addColumn("ugiro", "path", "string"); + } + + public function down() + { + echo "m160120_050556_alter__table__ugiro_add_column_path cannot be reverted.\n"; + + return false; + } + + /* + // Use safeUp/safeDown to run migration code within a transaction + public function safeUp() + { + } + + public function safeDown() + { + } + */ +} diff --git a/console/migrations/m160120_054556_alter__table__customer__add__column__bankaccount.php b/console/migrations/m160120_054556_alter__table__customer__add__column__bankaccount.php new file mode 100644 index 0000000..c984165 --- /dev/null +++ b/console/migrations/m160120_054556_alter__table__customer__add__column__bankaccount.php @@ -0,0 +1,31 @@ +addColumn("customer", "bank_account", "string"); + $this->addColumn("customer", "bank_name", "string"); + } + + public function down() + { + echo "m160120_054556_alter__table__customer__add__column__bankaccount cannot be reverted.\n"; + + return false; + } + + /* + // Use safeUp/safeDown to run migration code within a transaction + public function safeUp() + { + } + + public function safeDown() + { + } + */ +} diff --git a/console/migrations/m160120_093445_alter__table__ugiro__add__status.php b/console/migrations/m160120_093445_alter__table__ugiro__add__status.php new file mode 100644 index 0000000..57fad66 --- /dev/null +++ b/console/migrations/m160120_093445_alter__table__ugiro__add__status.php @@ -0,0 +1,27 @@ +addColumn("ugiro", "status", "int"); + } + + public function down() + { + } + + /* + // Use safeUp/safeDown to run migration code within a transaction + public function safeUp() + { + } + + public function safeDown() + { + } + */ +} diff --git a/frontend/controllers/KeyController.php b/frontend/controllers/KeyController.php new file mode 100644 index 0000000..c6ada24 --- /dev/null +++ b/frontend/controllers/KeyController.php @@ -0,0 +1,109 @@ + [ + 'class' => VerbFilter::className(), + 'actions' => [ + 'delete' => ['post'], + ], + ], + ]; + } + + /** + * Lists all Key models. + * @return mixed + */ + public function actionIndex( $id_card ) + { + $card = Card::findOne($id_card); + if ( !isset( $card ) ){ + throw new NotFoundHttpException("Vendég nem található"); + } + + $searchModel = new KeySearch(); + $searchModel->card = $card; + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); + + return $this->render('index', [ + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider, + ]); + } + + /** + * Deletes an existing CardKeyAssignment model. + * If deletion is successful, the browser will be redirected to the 'index' page. + * @param integer $id + * @return mixed + */ + public function actionDelete($id_key) + { + $key = Key::findOne($id_key); + if ( !isset($key)){ + throw new NotFoundHttpException("Kulcs nem található"); + } + + + CardKeyAssignment::deleteAll(['id_key' => $key->id_key]); + + \Yii::$app->session->setFlash('success','Kulcs visszaadva'); + + return $this->redirect(['customer/reception' ]); + } + + + /** + * Lists all Key models. + * @return mixed + */ + public function actionToggle($number = null) + { + // $this->findByNumber($number); + $receptionForm = new ReceptionForm(); + $receptionForm->number = $number; + $receptionForm->readCard (); + + $customer = $receptionForm->customer; + $card = $receptionForm->card; + + + $model = new KeyToggleForm(); + $model->card = $receptionForm->card; + $model->customer = $receptionForm->customer; + + if ( $model->load ( Yii::$app->request->post () )) { + $model->toggleKey(); + } + + + return $this->redirect(['customer/reception', 'number' => $number ]); + + } + + +} diff --git a/frontend/models/CustomerCreate.php b/frontend/models/CustomerCreate.php index a6f4357..14e5556 100644 --- a/frontend/models/CustomerCreate.php +++ b/frontend/models/CustomerCreate.php @@ -88,6 +88,9 @@ class CustomerCreate extends \common\models\Customer [['phone', 'tax_number', 'country'], 'string', 'max' => 20], + [['bank_account'], 'string', 'max' => 24], + [['bank_name'], 'string', 'max' => 100], + [['phone'], 'required', 'when' => function($model) { return !isset( $model->email ) || empty( $model->email ) ; } , diff --git a/frontend/models/CustomerUpdate.php b/frontend/models/CustomerUpdate.php index ed920a9..3157d83 100644 --- a/frontend/models/CustomerUpdate.php +++ b/frontend/models/CustomerUpdate.php @@ -89,6 +89,9 @@ class CustomerUpdate extends \common\models\Customer [['phone', 'tax_number', 'country'], 'string', 'max' => 20], + [['bank_account'], 'string', 'max' => 24], + [['bank_name'], 'string', 'max' => 100], + [['phone'], 'required', 'when' => function($model) { return !isset( $model->email ) || empty( $model->email ) ; } , diff --git a/frontend/models/KeySearch.php b/frontend/models/KeySearch.php new file mode 100644 index 0000000..6f9297a --- /dev/null +++ b/frontend/models/KeySearch.php @@ -0,0 +1,76 @@ +select([ 'user.username as user_username', 'card.id_card as card_id_card', 'key.id_key as key_id_key', 'card.number as card_number' , 'key.number as key_number','card_key_assignment.created_at as assign_created_at'] ); + $query->from('card'); + $query->innerJoin('card_key_assignment','card.id_card = card_key_assignment.id_card' ); + $query->innerJoin('key','key.id_key = card_key_assignment.id_key' ); + $query->innerJoin('user','user.id = card_key_assignment.id_user' ); + $query->andWhere(['card_key_assignment.id_card' => $this->card->id_card]); + $query->orderBy( ['card_key_assignment.created_at' => SORT_ASC] ); + + $dataProvider = new ActiveDataProvider([ + 'query' => $query, + ]); + + $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([ + 'type' => $this->type, + ]); + + $query->andFilterWhere(['like', 'number', $this->number]) + ->andFilterWhere(['like', 'rfid_key', $this->rfid_key]); + + return $dataProvider; + } +} diff --git a/frontend/models/KeyToggleForm.php b/frontend/models/KeyToggleForm.php new file mode 100644 index 0000000..a8df8d4 --- /dev/null +++ b/frontend/models/KeyToggleForm.php @@ -0,0 +1,75 @@ +keyModel = Key::find()->andWhere(['rfid_key' => $this->key])->one(); + if ( isset($this->keyModel) ){ + $assignments = CardKeyAssignment::find()->andWhere(['id_key' => $this->keyModel->id_key])->all(); + if ( count($assignments) > 0){ + $this->unassign(); + }else{ + $this->assign(); + } + }else{ + \Yii::$app->session->setFlash ( 'danger', 'Kulcs nem található!' ); + } + } + + public function assign(){ + if ( isset($this->card) && isset($this->customer) ){ + $assignment = new CardKeyAssignment(); + $assignment->id_card = $this->card->id_card; + $assignment->id_key = $this->keyModel->id_key; + $assignment->id_user = \Yii::$app->user->id; + $assignment->save(false); + \Yii::$app->session->setFlash ( 'success', 'Kulcs kiadva!' ); + }else{ + \Yii::$app->session->setFlash ( 'danger', 'Nincs vendég kiválasztva vagy érvénytelen kártya!' ); + } + } + + public function unassign(){ + CardKeyAssignment::deleteAll(['id_key' => $this->keyModel->id_key]); + \Yii::$app->session->setFlash ( 'success', 'Kulcs visszaadva!' ); + } + +} diff --git a/frontend/models/ReceptionForm.php b/frontend/models/ReceptionForm.php index 814a5ab..29f98f6 100644 --- a/frontend/models/ReceptionForm.php +++ b/frontend/models/ReceptionForm.php @@ -10,6 +10,8 @@ use common\models\Ticket; use common\models\Account; use common\models\CardSearch; use common\models\AccountState; +use common\models\Key; +use common\models\CardKeyAssignment; /** * ContactForm is the model behind the contact form. @@ -23,7 +25,7 @@ class ReceptionForm extends Model public $defaultAccount; public $cardSearchModel; public $lastCassaState; - + public $keys; /** * @inheritdoc */ @@ -53,6 +55,7 @@ class ReceptionForm extends Model if ( $this->card != null ){ $this->customer = $this->card->customer; $this->readValidTickets(); + $this->readAssignedKeys(); } $defaultAccount = Account::readDefault(); @@ -65,6 +68,14 @@ class ReceptionForm extends Model } + public function readAssignedKeys(){ + $query = Key::find(); + $query->join( 'INNER JOIN', CardKeyAssignment::tableName() , Key::tableName().".id_key = " . CardKeyAssignment::tableName() . ".id_key"); + $query->andWhere([ "card_key_assignment.id_card" => $this->card->id_card ]); + $this->keys = $query->all(); + + } + public function readLastCassaState(){ $a = Account::readDefault(); if ( isset($a)){ @@ -136,4 +147,23 @@ class ReceptionForm extends Model } + public function getCardNumber(){ + if ( isset($this->card)){ + return $this->card->number; + } + return null; + } + + public function getKeysText(){ + $keyNumbers = []; + $result = "-"; + if ( isset($this->keys)){ + foreach ($this->keys as $k ){ + $keyNumbers[] = $k->number; + } + $result = implode(", ",$keyNumbers); + } + return $result; + } + } diff --git a/frontend/models/TicketCreate.php b/frontend/models/TicketCreate.php index fac7c47..181aa9f 100644 --- a/frontend/models/TicketCreate.php +++ b/frontend/models/TicketCreate.php @@ -9,6 +9,7 @@ use common\models\Transfer; use common\models\UserSoldItem; use common\models\ShoppingCart; use yii\base\Object; +use common\models\TicketInstallmentRequest; /** * @property $cart string name of cart, into we put the ticket @@ -111,9 +112,21 @@ class TicketCreate extends Ticket{ $this->addTransfer(); $this->appendToUserCart(); $this->appendToCustomerCart(); - + $this->addTicketInstallmentRequests($insert); } + + public function addTicketInstallmentRequests($insert){ + if ($insert){ + $ticketType = TicketType::findOne($this->id_ticket_type); + if ( isset($ticketType) && $ticketType->isInstallment() ){ + $requests = TicketInstallmentRequest::createInstallments($this, $ticketType, $this->customer); + foreach ($requests as $request){ + $request->save(false); + } + } + } + } protected function addTransfer(){ $transfer = Transfer::createTicketTransfer($this->_account, $this->_discount, null, 1, $this); diff --git a/frontend/views/card/index.php b/frontend/views/card/index.php index b1a2409..8ab0e9b 100644 --- a/frontend/views/card/index.php +++ b/frontend/views/card/index.php @@ -45,7 +45,7 @@ $this->params['breadcrumbs'][] = $this->title; ['class' => 'yii\grid\ActionColumn', - 'template' => '{ticket} {ticket_history}', + 'template' => '{ticket} {ticket_history} {keys}', 'buttons' => [ 'ticket' => function ($url, $model, $key) { return Html::a('Új bérlet', $url, ['class'=> 'btn btn-xs btn-success' ]) ; @@ -53,6 +53,9 @@ $this->params['breadcrumbs'][] = $this->title; 'ticket_history' => function ($url, $model, $key) { return Html::a('Befizetések', $url, ['class'=> 'btn btn-xs btn-success' ]) ; }, + 'keys' => function ($url, $model, $key) { + return Html::a('Kulcsok', $url, ['class'=> 'btn btn-xs btn-success' ]) ; + }, ], 'urlCreator' => function ($action, $model, $key, $index){ $url = ""; @@ -60,6 +63,8 @@ $this->params['breadcrumbs'][] = $this->title; $url = Url::to(['ticket/create','number' => $model['card_number']]); }else if ( 'ticket_history' == $action ){ $url = Url::to(['ticket/index','number' => $model['card_number']]); + }else if ( 'keys' == $action ){ + $url = Url::to(['key/index','id_card' => $model['card_id_card']]); } return $url; } diff --git a/frontend/views/common/_reception.php b/frontend/views/common/_reception.php index 8a39fc6..f100672 100644 --- a/frontend/views/common/_reception.php +++ b/frontend/views/common/_reception.php @@ -41,6 +41,19 @@ use yii\helpers\Html; 'btn btn-primary']) ?>
+ ['key/toggle', 'number' => $model->getCardNumber()], + 'method' => 'post', + ]); ?> +
+ getCardNumber())?> + "form-control", 'placeholder' =>'Kulcs']) ?> + +
+
+ 'btn btn-primary']) ?> +
+
diff --git a/frontend/views/common/_reception_customer.php b/frontend/views/common/_reception_customer.php index 2c2b96d..c768a71 100644 --- a/frontend/views/common/_reception_customer.php +++ b/frontend/views/common/_reception_customer.php @@ -36,6 +36,10 @@ if ( $model->isCardWithCustomer() ){ 'label' => 'Telefon', 'value' => $model->customer->phone ], + [ + 'label' => 'Kulcsok', + 'value' => $model->keysText, + ], [ 'label' => 'Fénykép', 'value' => $model->customer->image1 ? Html::img( Url::base( ) . Image::thumb( $model->customer->image1->path,160,120 )) : 'Nincs kép', diff --git a/frontend/views/customer/_form_create.php b/frontend/views/customer/_form_create.php index 16a66c1..b0f27a0 100644 --- a/frontend/views/customer/_form_create.php +++ b/frontend/views/customer/_form_create.php @@ -89,6 +89,16 @@ use kartik\widgets\DatePicker; field($model, 'tax_number')->textInput(['maxlength' => true]) ?>
+
+
+ field($model, 'bank_name')->textInput(['maxlength' => true])->label("Bank neve") ?> +
+
+
+
+ field($model, 'bank_account')->textInput(['maxlength' => true])->label("Bankszámlaszám") ?> +
+
field($model, 'country')->textInput(['maxlength' => true]) ?> diff --git a/frontend/views/customer/_form_update.php b/frontend/views/customer/_form_update.php index ea8b541..c3544a7 100644 --- a/frontend/views/customer/_form_update.php +++ b/frontend/views/customer/_form_update.php @@ -83,6 +83,16 @@ use yii\base\Widget; field($model, 'tax_number')->textInput(['maxlength' => true]) ?>
+
+
+ field($model, 'bank_name')->textInput(['maxlength' => true])->label("Bank neve") ?> +
+
+
+
+ field($model, 'bank_account')->textInput(['maxlength' => true])->label("Bankszámlaszám") ?> +
+
field($model, 'country')->textInput(['maxlength' => true]) ?> diff --git a/frontend/views/customer/view.php b/frontend/views/customer/view.php index e9765a0..e5c8d8a 100644 --- a/frontend/views/customer/view.php +++ b/frontend/views/customer/view.php @@ -43,6 +43,8 @@ $this->params['breadcrumbs'][] = $this->title; 'image', 'description', 'tax_number', + 'bank_name', + 'bank_account', 'country', 'zip', 'city', diff --git a/frontend/views/key/_form.php b/frontend/views/key/_form.php new file mode 100644 index 0000000..341ef15 --- /dev/null +++ b/frontend/views/key/_form.php @@ -0,0 +1,29 @@ + + +
+ + + + field($model, 'number')->textInput(['maxlength' => true]) ?> + + field($model, 'status')->textInput() ?> + + field($model, 'type')->textInput() ?> + + field($model, 'rfid_key')->textInput(['maxlength' => true]) ?> + +
+ isNewRecord ? Yii::t('frontend/key', 'Create') : Yii::t('frontend/key', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> +
+ + + +
diff --git a/frontend/views/key/_search.php b/frontend/views/key/_search.php new file mode 100644 index 0000000..37b298b --- /dev/null +++ b/frontend/views/key/_search.php @@ -0,0 +1,39 @@ + + + diff --git a/frontend/views/key/create.php b/frontend/views/key/create.php new file mode 100644 index 0000000..7470971 --- /dev/null +++ b/frontend/views/key/create.php @@ -0,0 +1,21 @@ +title = Yii::t('frontend/key', 'Create Key'); +$this->params['breadcrumbs'][] = ['label' => Yii::t('frontend/key', 'Keys'), 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/frontend/views/key/index.php b/frontend/views/key/index.php new file mode 100644 index 0000000..1ab216a --- /dev/null +++ b/frontend/views/key/index.php @@ -0,0 +1,59 @@ +title = Yii::t('frontend/key', 'Vendéghez rendelt kulcsok'); +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ render('_search', ['model' => $searchModel]); ?> + +

Vendég: card->customer->name ;?>

+

Kártyaszám: card->number ;?>

+ $dataProvider, + 'columns' => [ + [ + 'attribute' => 'key_number', + 'label' => 'Kulcs' + + ], + [ + 'attribute' => 'assign_created_at', + 'label' => 'Kiadás dátuma', + 'format' => 'datetime' + + ], + [ + 'attribute' => 'user_username', + 'label' => 'Felhasználó', + ], + + ['class' => 'yii\grid\ActionColumn', + 'template' => '{delete}', + 'buttons' => [ + 'delete' => function ($url, $model, $key) { + return Html::a('Visszaad', $url, ['class'=> 'btn btn-xs btn-danger','data-method' => 'post' ]) ; + }, + ], + 'urlCreator' => function ($action, $model, $key, $index){ + $url = ""; + if ( 'delete' == $action ){ + $url = Url::to(['key/delete','id_key' => $model['key_id_key']]); + } + return $url; + } + + ], + ], + ]); ?> + +
diff --git a/frontend/views/key/update.php b/frontend/views/key/update.php new file mode 100644 index 0000000..875ec18 --- /dev/null +++ b/frontend/views/key/update.php @@ -0,0 +1,23 @@ +title = Yii::t('frontend/key', 'Update {modelClass}: ', [ + 'modelClass' => 'Key', +]) . ' ' . $model->id_key; +$this->params['breadcrumbs'][] = ['label' => Yii::t('frontend/key', 'Keys'), 'url' => ['index']]; +$this->params['breadcrumbs'][] = ['label' => $model->id_key, 'url' => ['view', 'id' => $model->id_key]]; +$this->params['breadcrumbs'][] = Yii::t('frontend/key', 'Update'); +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/frontend/views/key/view.php b/frontend/views/key/view.php new file mode 100644 index 0000000..929bbbe --- /dev/null +++ b/frontend/views/key/view.php @@ -0,0 +1,41 @@ +title = $model->id_key; +$this->params['breadcrumbs'][] = ['label' => Yii::t('frontend/key', 'Keys'), 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ +

+ $model->id_key], ['class' => 'btn btn-primary']) ?> + $model->id_key], [ + 'class' => 'btn btn-danger', + 'data' => [ + 'confirm' => Yii::t('frontend/key', 'Are you sure you want to delete this item?'), + 'method' => 'post', + ], + ]) ?> +

+ + $model, + 'attributes' => [ + 'id_key', + 'number', + 'status', + 'type', + 'created_at', + 'updated_at', + 'rfid_key', + ], + ]) ?> + +