diff --git a/backend/views/transfer/index.php b/backend/views/transfer/index.php
index 02ad157..946593c 100644
--- a/backend/views/transfer/index.php
+++ b/backend/views/transfer/index.php
@@ -75,6 +75,10 @@ $this->params['breadcrumbs'][] = $this->title;
'attribute' => 'money',
'value' => 'signedMoney'
],
+ [
+ 'attribute' => 'status',
+ 'value' => 'statusName'
+ ],
'created_at:datetime',
'paid_at:datetime',
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 @@
+
+
+
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 @@
+
+
+
+
+ ['index'],
+ 'method' => 'get',
+ ]); ?>
+
+ = $form->field($model, 'id_ugiro') ?>
+
+ = $form->field($model, 'id_user') ?>
+
+ = $form->field($model, 'created_at') ?>
+
+ = $form->field($model, 'updated_at') ?>
+
+
+ = Html::submitButton(Yii::t('common/ugiro', 'Search'), ['class' => 'btn btn-primary']) ?>
+ = Html::resetButton(Yii::t('common/ugiro', 'Reset'), ['class' => 'btn btn-default']) ?>
+
+
+
+
+
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;
+?>
+
+
+
= Html::encode($this->title) ?>
+
+ = $this->render('_form', [
+ 'model' => $model,
+ ]) ?>
+
+
diff --git a/backend/views/ugiro/detsta.php b/backend/views/ugiro/detsta.php
new file mode 100644
index 0000000..dc9a242
--- /dev/null
+++ b/backend/views/ugiro/detsta.php
@@ -0,0 +1,26 @@
+
+
+detsta
+
+koteg->id_ugiro;
+ $model->run();
+
+ $megbizasok = $model->megbizasok;
+
+ echo "
Megbízások száma:". count($megbizasok);
+
+ foreach ($megbizasok as $m){
+ echo "
". $m->id_ticket_installment_request . " - " . ($m->detstaTetel->toString());
+ }
+
+ echo "
" . nl2br( $model->detstatUzenet->toString());
+
+
+ print_r($model->errors);
+
+?>
\ No newline at end of file
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;
+?>
+
+
+
= Html::encode($this->title) ?>
+ render('_search', ['model' => $searchModel]); ?>
+
+
+ = GridView::widget([
+ 'dataProvider' => $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');
+?>
+
+
+
= Html::encode($this->title) ?>
+
+ = $this->render('_form', [
+ 'model' => $model,
+ ]) ?>
+
+
diff --git a/backend/views/ugiro/upload.php b/backend/views/ugiro/upload.php
new file mode 100644
index 0000000..e42779c
--- /dev/null
+++ b/backend/views/ugiro/upload.php
@@ -0,0 +1,27 @@
+
+
+
DetSta Fájl Feltöltés
+
+ Ezen a felületen csak a fájl feltöltés törénik meg, a fájl feldolgozása a köteg nézet-ben lehetséges
+
+
diff --git a/backend/views/ugiro/view.php b/backend/views/ugiro/view.php
new file mode 100644
index 0000000..f3904e1
--- /dev/null
+++ b/backend/views/ugiro/view.php
@@ -0,0 +1,93 @@
+title = "Köteg részletei";
+$this->params['breadcrumbs'][] = ['label' => "Kötegek", 'url' => ['index']];
+$this->params['breadcrumbs'][] = $this->title;
+?>
+
+
+
+
= Html::encode($this->title) ?>
+
+ 'id_ugiro',
+ 'label' => 'Köteg azonosító'
+ ],
+ [
+ 'attribute' => 'number',
+ 'label' => 'Üzenet sorszám'
+ ],
+ [
+ 'attribute' => 'datum',
+ 'label' => 'Üzenet összeállítási dátum'
+ ],
+ [
+ 'attribute' => 'user.username',
+ 'label' => 'Felhasználó'
+ ],
+ [
+ 'attribute' => 'statusName',
+ 'label' => 'Státusz'
+ ],
+ [
+ 'attribute' => 'created_at',
+ 'label' => 'Létrehozva',
+ 'format' =>'datetime'
+ ],
+ [
+ 'attribute' => 'path',
+ 'label' => 'Beszed 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_RECIEVED || $model->status == Ugiro::$STATUS_FINISHED ){
+ $attributes[] = [
+ 'attribute' => 'desta_path',
+ 'label' => 'Detsta Fájl',
+ 'value' => Html::a( "Letöltés" , Url::base() ."/". $model->desta_path , ['target' =>'_blank' ,'download' =>'CS-BESZED.' .$model->id_ugiro ] ),
+ 'format' => 'raw'
+ ];
+ }
+
+ ?>
+
+
+ = DetailView::widget([
+ 'model' => $model,
+ 'attributes' => $attributes,
+ ]) ?>
+
+
+
+status == Ugiro::$STATUS_RECIEVED ){
+ echo Html::a("DetSta Fájl Feldoglozás",['view', 'id' => $model->id_ugiro] ,['data-method' =>'post', 'class' => 'btn btn-danger']);
+ }
+ echo Html::a("Megbízások a kötegben",['ticket-installment-request/index', 'TicketInstallmentRequestSearch[id_ugiro]' => $model->id_ugiro] ,[ 'class' => 'btn btn-primary']);
+?>
+
+
+
diff --git a/backend/web/giro/megbizas/.gitkeep b/backend/web/giro/megbizas/.gitkeep
new file mode 100644
index 0000000..e69de29
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/giro/valasz/.gitkeep b/backend/web/giro/valasz/.gitkeep
new file mode 100644
index 0000000..e69de29
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Generál
+
+
+
+
+
+
\ No newline at end of file
diff --git a/changelog.txt b/changelog.txt
index 22b821b..55d4011 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,8 @@
+-0.0.25
+ - add reception key changes,
+ - add money movent storno,
+ - status displays
+ - ticket installmetn request, ugiro, beszed, detsta
-0.0.24
- add transfer payment_method
-0.0.23
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/DetStatProcessor.php b/common/components/DetStatProcessor.php
new file mode 100644
index 0000000..e9141fa
--- /dev/null
+++ b/common/components/DetStatProcessor.php
@@ -0,0 +1,137 @@
+readKoteg();
+ $this->readKotegMegbizasok();
+ $this->readDetstaUzenet();
+ $this->createMegbizasTetelHozzarendelesek();
+ $this->processMegbizasok();
+ $this->markKotegFinished();
+ }
+
+ public function markKotegFinished(){
+ $this->koteg->status = Ugiro::$STATUS_FINISHED;
+ $this->koteg->save();
+ }
+
+ public function processMegbizasok(){
+ foreach ($this->megbizasok as $megbizas){
+ $processor = new DetStatTetelProcessor(
+ [
+ 'tetel' => $megbizas->detstaTetel,
+ 'megbizas' => $megbizas
+ ]
+ );
+ $processor->run();
+ $this->errors = $this->errors + $processor->errors;
+ }
+ }
+
+ public function readDetstaUzenet(){
+
+ $filename = \Yii::getAlias("@webroot") ."/" .$this->koteg->desta_path;
+ $content = file_get_contents($filename);
+ $this->detstatUzenet = GiroDETSTA::parse($content);
+
+
+
+
+ $this->detstatUzenet = new GiroDETSTA();
+ $this->idKoteg = 33;
+
+ $fej = new GiroDETSTAFej();
+
+ $this->detstatUzenet->fej = $fej;
+
+ $tetel = new GiroDETSTATetel();
+ $tetel->ugyfelAzonosito = 12;
+ $tetel->visszajelzesInformacio = "00";
+ $tetel->visszajelzesInformacio = "02";
+
+ $this->detstatUzenet->tetelek[] = $tetel;
+
+ $lab = new GiroDETSTALab();
+ $this->detstatUzenet->lab = $lab;
+
+ }
+
+ public function createMegbizasTetelHozzarendelesek(){
+ $mapTetel = [];
+ foreach ($this->detstatUzenet->tetelek as $tetel ){
+ $mapTetel[$tetel->ugyfelAzonosito] = $tetel;
+ }
+
+ foreach ($this->megbizasok as $megbizas){
+ if ( array_key_exists($megbizas->id_ticket_installment_request, $mapTetel)){
+ $megbizas->detstaTetel = $mapTetel[$megbizas->id_ticket_installment_request];
+ }
+ }
+
+
+ }
+
+
+ public function readKoteg(){
+ $this->koteg = Ugiro::findOne($this->idKoteg );
+ if ( !isset($this->koteg) ){
+ $this->errors [] = "Kötege nem található! (".$this->detstatUzenet->fej." )";
+ }
+ }
+ public function readKotegMegbizasok(){
+ $this->megbizasok = $this->koteg->requests;
+ }
+
+ public function applyNewMegbizasState(){
+ $kod = $this->tetel->valaszHivatkozasiKod;
+
+ if ( $kod == GiroDETSTATetel::$INFORMACIO_TELJESITETT){
+ $this->megbizas->status = TicketInstallmentRequest::$STATUS_ACCEPTED;
+ }else{
+ $this->megbizas->status = TicketInstallmentRequest::$STATUS_REJECTED;
+ }
+ $this->megbizas->save(false);
+ }
+
+ public function applyNewTicketState(){
+ $this->ticket->applyTicketInstallmentRequest($this->megbizas);
+ $this->ticket->save(false);
+ }
+
+
+ public function hasError(){
+ return count($this->errors) > 0;
+ }
+
+
+}
\ No newline at end of file
diff --git a/common/components/DetStatTetelProcessor.php b/common/components/DetStatTetelProcessor.php
new file mode 100644
index 0000000..e986bb3
--- /dev/null
+++ b/common/components/DetStatTetelProcessor.php
@@ -0,0 +1,129 @@
+readMegbizas();
+ if ($this->megbizas->isStatusAccepted()) {
+// return;
+ }
+ $status = TicketInstallmentRequest::$STATUS_REJECTED;
+ $kod = 'xx';
+ $comment = "";
+ if (isset ( $this->tetel )) {
+ $kod = $this->tetel->visszajelzesInformacio;
+ }
+
+ if ($kod == GiroDETSTATetel::$INFORMACIO_TELJESITETT) {
+ $status = TicketInstallmentRequest::$STATUS_ACCEPTED;
+ } else {
+ $status = TicketInstallmentRequest::$STATUS_REJECTED;
+
+ if ( $kod == "xx"){
+ $comment = "Nem található a detsta fájlban a tétel válasza";
+ }else{
+ if ( array_key_exists($kod, GiroDETSTATetel::$INFORMACIOK)){
+ $comment = "Hiba kód: ".$kod ." - " .GiroDETSTATetel::$INFORMACIOK[$kod];
+ }else{
+ $comment = "Ismeretlen hiba kód: " .$kod;
+ }
+ }
+ }
+
+ $this->megbizas->applyStatus($status,true,$kod,$comment);
+
+
+ // $this->readTicket();
+ // if ( !$this->hasError() ){
+ // $this->applyNewMegbizasState();
+ // $this->applyNewTicketState();
+ // $this->addTransfer();
+ // }
+ }
+
+ // public function readMegbizas(){
+ // $this->megbizas = TicketInstallmentRequest::findOne($this->tetel->ugyfelAzonosito);
+ // if ( !isset($this->megbizas) ){
+ // $this->errors [] = "Válaszban jelölt megbízás nem található! (".$this->tetel->ugyfelAzonosito." )";
+ // }
+ // }
+ // public function readTicket(){
+ // $this->ticket = $this->megbizas->ticket;
+ // if ( !isset($this->ticket) ){
+ // $this->errors [] = "Válaszban jelölt bérlet nem található! (".$this->megbizas->id_ticket." )";
+ // }
+ // }
+
+ // public function applyNewMegbizasState(){
+ // $kod = 'xx';
+ // if ( isset($this->tetel ) ) {
+ // $kod = $this->tetel->visszajelzesInformacio;
+ // }
+
+ // if ( $kod == GiroDETSTATetel::$INFORMACIO_TELJESITETT){
+ // $this->megbizas->status = TicketInstallmentRequest::$STATUS_ACCEPTED;
+ // }else{
+ // $this->megbizas->status = TicketInstallmentRequest::$STATUS_REJECTED;
+ // }
+ // if ( !$this->isDryRun() ){
+ // $this->megbizas->save(false);
+ // }
+ // }
+
+ // public function applyNewTicketState(){
+ // $this->ticket->applyTicketInstallmentRequest($this->megbizas);
+ // if ( !$this->isDryRun() ){
+ // $this->ticket->save(false);
+ // }
+ // }
+
+ // protected function addTransfer(){
+
+ // $account = Account::findOne($this->ticket->id_account);
+ // $discount = null;
+ // if ( isset($this->ticket->id_account)){
+ // $discount = Discount::findOne( $this->ticket->id_discount );
+ // }
+
+ // $transfer = Transfer::createTicketTransfer($account, $discount, null, 1, $this->ticket);
+
+ // $transfer->status = Transfer::STATUS_PAID;
+ // $transfer->paid_at = date('Y-m-d H:i:s' ) ;
+ // $transfer->paid_by = \Yii::$app->user->id;
+ // $transfer->payment_method = Transfer::PAYMENT_METHOD_TRANSFER;
+ // $transfer->money = $this->megbizas->money;
+ // $transfer->comment = "Csoportos beszedes";
+ // $transfer->id_user = \Yii::$app->user->id;
+ // $transfer->id_customer = $this->ticket->id_customer;
+ // $transfer->save(false);
+ // }
+ public function hasError() {
+ return count ( $this->errors ) > 0;
+ }
+ public function isDryRun() {
+ return $this->dryRun;
+ }
+}
\ No newline at end of file
diff --git a/common/components/Helper.php b/common/components/Helper.php
index d8b3a75..71a6fde 100644
--- a/common/components/Helper.php
+++ b/common/components/Helper.php
@@ -5,6 +5,11 @@ namespace common\components;
use \Yii;
class Helper {
+
+ public static function getDateTimeString(){
+ return date("Y-m-d H:i:s");
+ }
+
public static function hufRound($m) {
$result = round ( $m / 5, 0 ) * 5;
return $result;
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..60971c0
--- /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 static function szovegOlvas($row,$start,$length, $padchar = " "){
+ return rtrim(substr($row, $start,$length),$padchar);
+ }
+
+ public static 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..3d3ba31
--- /dev/null
+++ b/common/components/giro/GiroBeszed.php
@@ -0,0 +1,87 @@
+duplumKod = \Yii::$app->params['ugiro_duplom_kod'];
+ $fej->kezdemenyezoAzonosito = \Yii::$app->params['ugiro_kezdemenyezo_azonosito'];//"A25366936T244"; // "66658092128";
+ $fej->uzenetSorszam->osszeallitasDatuma = $daturm;
+ $fej->uzenetSorszam->sorszam = $number;
+ $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,$terhelesiDatum){
+ $s = "";
+ $i = 0;
+ foreach ($requests as $request){
+ $i++;
+ $s .= self::createTetel($request,$i,$terhelesiDatum);
+ }
+ return $s;
+ }
+
+ /**
+ * @param common\models\TicketInstallmentRequest $request
+ * */
+ public static function createTetel($request,$sorszam,$terhelesiDatum) {
+ $tetel = new GiroBeszedTetel ();
+ $customer = $request->customer;
+ $tetel->tetelSorszam = $sorszam;
+ $tetel->terhelesiDatum = $terhelesiDatum;
+ $tetel->osszeg = $request->money;
+// $tetel->kotelezettBankszamla->bankszerv = "58600252";
+ $tetel->kotelezettBankszamla->szamlaszam = $customer->bank_account;
+ $tetel->ugyfelazonositoAKezdemenyezonel = $request->id_ticket_installment_request;
+// $tetel->ugyfelNeve = "Schneider Roland";
+// $tetel->ugyfelCime = "Mosonmagyarovar, Gardonyi 31";
+ $tetel->szamlaTulajdonosNeve = $customer->name;
+ $tetel->kozlemeny = "Berlet:" . $request->id_ticket .";MegbizasAzo:" . $request->id_ticket_installment_request;
+
+ 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..3dab266
--- /dev/null
+++ b/common/components/giro/GiroDETSTA.php
@@ -0,0 +1,50 @@
+fej->toString();
+ foreach ($this->tetelek as $tetel ){
+ $s .= $tetel->toString();
+ }
+ $s .= $this->lab->toString();
+
+ return $s;
+ }
+
+
+ public static function parse($content){
+ $detsta = new GiroDETSTA();
+ $array = preg_split("/\r\n|\n|\r/", $content);
+ $detsta->fej = GiroDETSTAFej::parse($array[0]);
+ $detsta->lab = GiroDETSTALab::parse($array[count($array) -2]);
+
+ for ( $i = 1 ; $i < count($array) -2; $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..1a509c0
--- /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 = static::szamOlvas($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..d015963
--- /dev/null
+++ b/common/components/giro/GiroDETSTALab.php
@@ -0,0 +1,46 @@
+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..f59afc8
--- /dev/null
+++ b/common/components/giro/GiroDETSTATetel.php
@@ -0,0 +1,71 @@
+ "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, 24 )
+ . $this->rekordVege();
+ }
+
+ 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..b276ceb 100644
--- a/common/config/params.php
+++ b/common/config/params.php
@@ -4,7 +4,7 @@ return [
'supportEmail' => 'rocho02@gmail.com',
'infoEmail' => 'info@rocho-net.hu',
'user.passwordResetTokenExpire' => 3600,
- 'version' => 'v0.0.24',
+ 'version' => 'v0.0.25',
'company' => 'movar',//gyor
'company_name' => "Freimann Kft.",
'product_visiblity' => 'account',// on reception which products to display. account or global
@@ -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/AccountState.php b/common/models/AccountState.php
index 3936121..0ec2689 100644
--- a/common/models/AccountState.php
+++ b/common/models/AccountState.php
@@ -233,7 +233,8 @@ class AccountState extends \common\models\BaseFitnessActiveRecord
$this->prev_state = $lastOpen->id_account_state;
$this->prev_money = $lastOpen->money;
}
- $end = date("Y-m-d H:i:s");
+ $end = date('Y-m-d H:i:s' );
+// $end = Yii::$app->formatter->asDatetime(strtotime("now"), "php:Y-m-d H:i:s");
$this->collection_money = Transfer::readPaid($start, $end, Yii::$app->user->id);
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..1b5c4e7 100644
--- a/common/models/CardSearch.php
+++ b/common/models/CardSearch.php
@@ -57,9 +57,11 @@ 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->leftJoin("card_key_assignment", 'card.id_card = card_key_assignment.id_card');
+ $query->leftJoin("key", 'key.id_key = card_key_assignment.id_key');
$query->orderBy(['customer.name' => SORT_ASC]);
@@ -77,9 +79,18 @@ class CardSearch extends Card
return $dataProvider;
}
- $query->andFilterWhere([
-// 'lower(customer.name)' => $this->customerName
- ]);
+// $query->andFilterWhere([
+// 'lower(card.number)' => $this->customerName
+// ]);
+
+ if ( !empty($this->number)){
+ $query->andWhere(['or',
+ ['and',[ 'in','card.number' , [$this->number]],"trim(coalesce(card.number, '')) <>'' " ],
+ ['and', ['in','card.rfid_key' ,[ $this->number] ],"trim(coalesce(card.rfid_key, '')) <>'' "],
+ ['and',[ 'in','key.number' , [$this->number]],"trim(coalesce(key.number, '')) <>'' " ],
+ ['and', ['in','key.rfid_key' ,[ $this->number] ],"trim(coalesce(key.rfid_key, '')) <>'' "]
+ ]);
+ }
$query->andFilterWhere(['like', 'customer.name', $this->customerName]);
diff --git a/common/models/MoneyMovement.php b/common/models/MoneyMovement.php
index 9024c0a..91103e7 100644
--- a/common/models/MoneyMovement.php
+++ b/common/models/MoneyMovement.php
@@ -29,6 +29,9 @@ class MoneyMovement extends \yii\db\ActiveRecord
const TYPE_OUT = 10;
const TYPE_IN = 20;
+ const STATUS_PAID = 20;
+ const STATUS_STORNO = 30;
+
public $_account;
/**
@@ -140,4 +143,23 @@ class MoneyMovement extends \yii\db\ActiveRecord
return self::typeName($this->type);
}
+ public static function statuses( ) {
+ return [
+ MoneyMovement::STATUS_PAID => 'Fizetve',
+ MoneyMovement::STATUS_STORNO => 'Törölve',
+ ];
+ }
+
+ public static function toStatusName($id_status){
+ $result = "Ismeretlen";
+ $statuses = MoneyMovement::statuses();
+ if ( array_key_exists($id_status, $statuses)){
+ $result = $statuses[$id_status];
+ }
+ return $result;
+ }
+
+ public function getStatusName(){
+ return static::toStatusName($this->status);
+ }
}
diff --git a/common/models/Sale.php b/common/models/Sale.php
index d3a6e5c..6ed7abe 100644
--- a/common/models/Sale.php
+++ b/common/models/Sale.php
@@ -37,6 +37,7 @@ class Sale extends \yii\db\ActiveRecord
const STATUS_NOT_PAID = 10;
const STATUS_PAID = 20;
+ const STATUS_DELETED= 30;
/**
* @inheritdoc
@@ -140,4 +141,26 @@ class Sale extends \yii\db\ActiveRecord
return $sale;
}
+
+ public static function statuses( ) {
+ return [
+ Sale::STATUS_PAID => 'Aktív',
+ Sale::STATUS_DELETED => 'Törölve',
+ Sale::STATUS_NOT_PAID => 'Nincs fizetve',
+ ];
+ }
+
+ public static function toStatusName($id_status){
+ $result = "Ismeretlen";
+ $statuses = Sale::statuses();
+ if ( array_key_exists($id_status, $statuses)){
+ $result = $statuses[$id_status];
+ }
+ return $result;
+ }
+
+ public function getStatusName(){
+ return static::toStatusName($this->status);
+ }
+
}
diff --git a/common/models/Ticket.php b/common/models/Ticket.php
index 3986101..e15eaf7 100644
--- a/common/models/Ticket.php
+++ b/common/models/Ticket.php
@@ -23,6 +23,9 @@ use common\components\Helper;
* @property integer $usage_count
* @property integer $status
* @property integer $price_brutto
+ * @property integer $part eddig a részletig kell kifizetve lenni
+ * @property integer $part_count ennyi részlet van összesen
+ * @property integer $part_paid ennyi részlet van kifizetve
* @property string $comment
* @property string $created_at
* @property string $updated_at
@@ -31,6 +34,7 @@ class Ticket extends \common\models\BaseFitnessActiveRecord
{
const STATUS_DELETED = 0;
const STATUS_ACTIVE = 10;
+ const STATUS_INACTIVE = 20;
/**
* @inheritdoc
@@ -46,7 +50,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 +63,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'),
@@ -200,10 +204,10 @@ class Ticket extends \common\models\BaseFitnessActiveRecord
new Expression( 'ticket_type.name as name'),
new Expression( 'coalesce( count(ticket.id_ticket),0) as total'),
- new Expression( "coalesce( sum( case when ". Helper::sqlValidRule('ticket.start', 'ticket.end', ':start', ':end') . " then 1 else 0 end) , 0) as valid" ), //valid
- new Expression( "coalesce( sum( case when ". Helper::sqlInIntervalRule('ticket.created_at', ':start', ':end') . " then 1 else 0 end) , 0) as created" ),//created
- new Expression( "coalesce( sum( case when ". Helper::sqlInIntervalRule('ticket.created_at', ':start', ':end') . " then transfer.money else 0 end) , 0) as created_money" ),//created_money
- new Expression( "coalesce( sum( case when " . Helper::sqlExpireRule('ticket.start', 'ticket.end', ':start', ":end") . " then 1 else 0 end) , 0) as expired" ),
+ new Expression( "coalesce( sum( case when ticket.status <> " .Ticket::STATUS_DELETED ." AND ". Helper::sqlValidRule('ticket.start', 'ticket.end', ':start', ':end') . " then 1 else 0 end) , 0) as valid" ), //valid
+ new Expression( "coalesce( sum( case when ticket.status <> " .Ticket::STATUS_DELETED ." AND ". Helper::sqlInIntervalRule('ticket.created_at', ':start', ':end') . " then 1 else 0 end) , 0) as created" ),//created
+ new Expression( "coalesce( sum( case when ticket.status <> " .Ticket::STATUS_DELETED ." AND ". Helper::sqlInIntervalRule('ticket.created_at', ':start', ':end') . " then transfer.money else 0 end) , 0) as created_money" ),//created_money
+ new Expression( "coalesce( sum( case when ticket.status <> " .Ticket::STATUS_DELETED ." AND " . Helper::sqlExpireRule('ticket.start', 'ticket.end', ':start', ":end") . " then 1 else 0 end) , 0) as expired" ),
]);
@@ -233,4 +237,79 @@ class Ticket extends \common\models\BaseFitnessActiveRecord
return $query;
}
+ public static function statuses( ) {
+ return [
+ Ticket::STATUS_ACTIVE => 'Aktív',
+ Ticket::STATUS_DELETED => 'Törölve',
+ Ticket::STATUS_INACTIVE => 'Inaktív',
+ ];
+ }
+
+ public static function toStatusName($id_status){
+ $result = "Ismeretlen";
+ $statuses = Ticket::statuses();
+ if ( array_key_exists($id_status, $statuses)){
+ $result = $statuses[$id_status];
+ }
+ return $result;
+ }
+
+ public function getStatusName(){
+ return static::toStatusName($this->status);
+ }
+
+ public function isDeleted(){
+ return $this->status == Ticket::STATUS_DELETED;
+ }
+
+ /**csoportos beszedéses a bérlet*/
+ public function isInstallmentTicket(){
+ return ( isset($this->part_count) && $this->part_count > 0 );
+ }
+
+ /**
+ * Apply request
+ *
+ * @var common\models\TicketInstallmentRequest $request megbízás
+ * */
+ public function applyTicketInstallmentRequest( $request ) {
+ //ha csoportos beszedéses
+ if ( $this->isInstallmentTicket() ){
+ if ( $request->isStatusAccepted() ){
+ if ( $this->part_paid < $request->priority ){
+ $this->part_paid = $request->priority;
+ }
+ $this->recalclulate();
+ }else if ( $request->isStatusRejected() ){
+ $this->status = static::STATUS_INACTIVE;
+ }
+ }
+ }
+ /*
+ * *
+ * @param common\models\TicketInstallmentRequest $request megbízás
+ */
+ public function setPartRequired($request){
+ // ha keveseb a részlet sorszám mint a bérlet max sorszáma
+ if ( $request->priority <= $this->part_count ){
+ //ha az aktuális elvárt részlet kisebb , mint a megbízása
+ if ( $this->part < $request-> priority ){
+ $this->part = $request->priority;
+ }
+ }
+ }
+
+ /**
+ * Csoportos beszedéses bérlet érvényességének újraszámolása
+ * */
+ public function recalclulate( ) {
+ if ( $this->isInstallmentTicket() ){
+ $enabled = $this->part_paid >= $this->part;
+ if ( $enabled == true ){
+ $this->status = static::STATUS_ACTIVE;
+ }else{
+ $this->status = static::STATUS_INACTIVE;
+ }
+ }
+ }
}
diff --git a/common/models/TicketInstallmentRequest.php b/common/models/TicketInstallmentRequest.php
new file mode 100644
index 0000000..f331594
--- /dev/null
+++ b/common/models/TicketInstallmentRequest.php
@@ -0,0 +1,260 @@
+ 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" ] );
+ }
+
+ public function getTicket(){
+ return $this->hasOne( Ticket::className(), ["id_ticket" =>"id_ticket", ] ) ;
+ }
+
+ public function getUgiro()
+ {
+ return $this->hasOne(Ugiro::className(), [ 'id_ugiro' => 'id_ugiro' ])
+ ->viaTable('ugiro_request_assignment', [ 'id_request' => 'id_ticket_installment_request' ]);
+ }
+
+ public function isStatusAccepted(){
+ return $this->status == static::$STATUS_ACCEPTED || $this->status == static::$STATUS_ACCEPTED_MANUAL;
+ }
+ public function isStatusRejected(){
+ return $this->status == static::$STATUS_REJECTED ;
+ }
+
+ public function getIdGiro(){
+ $result = null;
+ $giro = $this->ugiro;
+ if ( isset($giro) ){
+ $result = $giro->id_ugiro;
+ }
+ return $result;
+ }
+
+ /**
+ * Megbízás státuszának beállítása
+ *
+ * Létrehozza a szükséges ticket/transfer objectumokat
+ *
+ * @param boolean $partRequired ha igaz, a bérleten a part mezőt változtatjuk
+ * */
+ public function applyStatus($status, $partRequired = false, $visszajelzes = "", $comment = ""){
+ if ( $status == static::$STATUS_ACCEPTED || $status == static::$STATUS_ACCEPTED_MANUAL){
+ if ( !$this->isStatusAccepted() ){
+ $this->status = $status;
+ $tranfer = $this->addTransfer();
+ $this->id_transfer = $tranfer->id_transfer;
+ $this->request_processed_at = Helper::getDateTimeString();
+ $this->save(false);
+ $this->applyNewTicketState($partRequired);
+ return true;
+ }else{
+ return false;
+ }
+ }else{
+ $this->status = $status;
+ $this->detsta_answer = $visszajelzes;
+ $this->comment = $comment;
+ $this->request_processed_at = Helper::getDateTimeString();
+ $this->save(false);
+ $this->applyNewTicketState($partRequired);
+ return true;
+ }
+ }
+
+ protected function applyNewTicketState($partRequired = false){
+ if ( $partRequired ){
+ $this->ticket->setPartRequired($this);
+ }
+ $this->ticket->applyTicketInstallmentRequest($this);
+ $this->ticket->save(false);
+ }
+
+ protected function addTransfer(){
+
+ $account = Account::findOne($this->ticket->id_account);
+ $discount = null;
+ if ( isset($this->ticket->id_account)){
+ $discount = Discount::findOne( $this->ticket->id_discount );
+ }
+
+ $transfer = Transfer::createTicketTransfer($account, $discount, null, 1, $this->ticket);
+
+ $transfer->status = Transfer::STATUS_PAID;
+ $transfer->paid_at = date('Y-m-d H:i:s' ) ;
+ $transfer->paid_by = \Yii::$app->user->id;
+ $transfer->payment_method = Transfer::PAYMENT_METHOD_TRANSFER;
+ $transfer->money = $this->money;
+ $transfer->comment = "Csoportos beszedes";
+ $transfer->id_user = \Yii::$app->user->id;
+ $transfer->id_customer = $this->ticket->card->customer->id_customer;
+ $transfer->save(false);
+ return $transfer;
+ }
+
+
+ /**
+ * @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;
+ $discount = $ticket->discount;
+ $money = $type->price_brutto;
+ if ( isset($discount ) ){
+ $money = Discount::applyDiscount($money, $discount);
+ }
+ $ticketCreatedAt = time();
+ 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',
+ TicketInstallmentRequest::$STATUS_ACCEPTED_MANUAL=> 'Manuálisan elfogadva',
+
+ ];
+ }
+
+ 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..2b15e93 100644
--- a/common/models/Transfer.php
+++ b/common/models/Transfer.php
@@ -46,12 +46,16 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
const STATUS_NOT_PAID = 10;
const STATUS_PAID = 20;
+ const STATUS_STORNO = 30;
const DIRECTION_OUT = 10;// MONEY GOES OUT FROM ACCOUNT ( COMPANY LOST MONEY )
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,13 +468,17 @@ 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( ) {
return [
self::STATUS_NOT_PAID => Yii::t('common/transfer','Nincs fizetve'),
self::STATUS_PAID => Yii::t('common/transfer','Fizetve'),
+ self::STATUS_STORNO => Yii::t('common/transfer','Törölve'),
];
}
public function getStatusName( ) {
@@ -572,6 +580,8 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
$query->andFilterWhere(['in' ,'transfer.type', $types]);
+ $query->andWhere(['not in','transfer.status', Transfer::STATUS_STORNO]);
+
if ( $mode == 'created_at'){
self::inInterval($query, 'transfer.created_at', $start, $end);
@@ -745,6 +755,28 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
}
-
+ public function storno(){
+ $this->status = Transfer::STATUS_STORNO;
+ $this->save(false);
+ if ( $this->type == Transfer::TYPE_TICKET){
+ $ticket = $this->ticket;
+ $ticket->status = Ticket::STATUS_DELETED;
+ $ticket->save(false);
+
+ TicketInstallmentRequest::updateAll(
+ ['status' => TicketInstallmentRequest::$STATUS_CANCELED ],
+ ['id_ticket' => $this->ticket->id_ticket ]
+ );
+
+ }else if ( $this->type == Transfer::TYPE_PRODUCT ){
+ $sale = $this->sale;
+ $sale->status = Sale::STATUS_DELETED;
+ $sale->save(false);
+ }else if ( $this->type == Transfer::TYPE_MONEY_MOVEMENT_OUT ){
+ $mm = $this->moneyMovement;
+ $mm->status = MoneyMovement::STATUS_STORNO;
+ $mm->save(false);
+ }
+ }
}
diff --git a/common/models/TransferTicketSearch.php b/common/models/TransferTicketSearch.php
index 0375dc2..b69ae6d 100644
--- a/common/models/TransferTicketSearch.php
+++ b/common/models/TransferTicketSearch.php
@@ -207,7 +207,7 @@ class TransferTicketSearch extends Transfer
protected function readTickets(){
$query = (new \yii\db\Query());
- $query->select([ 'customer.name as customer_name', 'user.username as user_name', 'account.name as account_name','ticket_type.name as ticket_type_name' , 'transfer.count AS ticket_count', 'transfer.money AS ticket_money','transfer.item_price AS ticket_item_price', 'transfer.created_at as ticket_created_at','transfer.paid_at as ticket_paid_at']);
+ $query->select([ 'ticket.id_ticket as ticket_id_ticket', 'customer.name as customer_name', 'user.username as user_name', 'account.name as account_name','ticket_type.name as ticket_type_name' ,'ticket.status as ticket_status', 'transfer.count AS ticket_count', 'transfer.money AS ticket_money','transfer.item_price AS ticket_item_price', 'transfer.created_at as ticket_created_at','transfer.paid_at as ticket_paid_at']);
$query->from('transfer');
$query->andWhere(['transfer.type' => Transfer::TYPE_TICKET]);
$query->innerJoin("ticket", "ticket.id_ticket = transfer.id_object");
diff --git a/common/models/Ugiro.php b/common/models/Ugiro.php
new file mode 100644
index 0000000..7544e9b
--- /dev/null
+++ b/common/models/Ugiro.php
@@ -0,0 +1,101 @@
+ 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 function getRequests()
+ {
+ return $this->hasMany(TicketInstallmentRequest::className(), ['id_ticket_installment_request' => 'id_request'])
+ ->viaTable('ugiro_request_assignment', ['id_ugiro' => 'id_ugiro']);
+ }
+
+
+ public static function statuses() {
+ return [
+ static::$STATUS_SENT =>"Folyamatban",
+ static::$STATUS_FINISHED =>"Befejezve",
+ static::$STATUS_RECIEVED =>"Detsta fájl feltöltve",
+ ]
+ ;
+ }
+
+ 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/console/migrations/m160120_224044_alter__table__money_movement__add_column__status.php b/console/migrations/m160120_224044_alter__table__money_movement__add_column__status.php
new file mode 100644
index 0000000..689630f
--- /dev/null
+++ b/console/migrations/m160120_224044_alter__table__money_movement__add_column__status.php
@@ -0,0 +1,30 @@
+addColumn("money_movement", "status", "int");
+ }
+
+ public function down()
+ {
+ echo "m160120_224044_alter__table__money_movement__add_column__status 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/m160121_083841_alter__table__ticket__add_part__and__parts_paid.php b/console/migrations/m160121_083841_alter__table__ticket__add_part__and__parts_paid.php
new file mode 100644
index 0000000..da724bf
--- /dev/null
+++ b/console/migrations/m160121_083841_alter__table__ticket__add_part__and__parts_paid.php
@@ -0,0 +1,32 @@
+addColumn("ticket", "part", "int");
+ $this->addColumn("ticket", "part_count", "int");
+ $this->addColumn("ticket", "part_paid", "int");
+ }
+
+ public function down()
+ {
+ echo "m160121_083841_alter__table__ticket__add_part__and__parts_paid 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/m160121_183512_alter__table__ugiro__add__desta_path.php b/console/migrations/m160121_183512_alter__table__ugiro__add__desta_path.php
new file mode 100644
index 0000000..e4c34ca
--- /dev/null
+++ b/console/migrations/m160121_183512_alter__table__ugiro__add__desta_path.php
@@ -0,0 +1,30 @@
+addColumn("ugiro", "desta_path", "string");
+ }
+
+ public function down()
+ {
+ echo "m160121_183512_alter__table__ugiro__add__desta_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/m160121_192759_alter__table__ugiro__uzenet__sorszam.php b/console/migrations/m160121_192759_alter__table__ugiro__uzenet__sorszam.php
new file mode 100644
index 0000000..a8cb534
--- /dev/null
+++ b/console/migrations/m160121_192759_alter__table__ugiro__uzenet__sorszam.php
@@ -0,0 +1,28 @@
+addColumn("ugiro", "datum", "string");
+ $this->addColumn("ugiro", "number", "integer");
+ }
+
+ public function down()
+ {
+ }
+
+ /*
+ // Use safeUp/safeDown to run migration code within a transaction
+ public function safeUp()
+ {
+ }
+
+ public function safeDown()
+ {
+ }
+ */
+}
diff --git a/console/migrations/m160122_135105_alter__table__ticket_installment_request__add__column__detsta_code__and__comment.php b/console/migrations/m160122_135105_alter__table__ticket_installment_request__add__column__detsta_code__and__comment.php
new file mode 100644
index 0000000..1713e26
--- /dev/null
+++ b/console/migrations/m160122_135105_alter__table__ticket_installment_request__add__column__detsta_code__and__comment.php
@@ -0,0 +1,31 @@
+addColumn("ticket_installment_request", "detsta_answer", "string");
+ $this->addColumn("ticket_installment_request", "comment", "string");
+ }
+
+ public function down()
+ {
+ echo "m160122_135105_alter__table__ticket_installment_request__add__column__detsta_code__and__comment 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/frontend/controllers/AccountStateController.php b/frontend/controllers/AccountStateController.php
index 2b15d45..9e73d51 100644
--- a/frontend/controllers/AccountStateController.php
+++ b/frontend/controllers/AccountStateController.php
@@ -162,7 +162,7 @@ class AccountStateController extends Controller {
$total += $cassaOpen->money;
$openDate = $cassaOpen->created_at;
}
- $total += Transfer::readPaid($openDate, date('Y-m-d h:i:s'), \Yii::$app->user->id);
+ $total += Transfer::readPaid($openDate, date('Y-m-d H:i:s'), \Yii::$app->user->id);
return $total;
}
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/controllers/MoneyMovementController.php b/frontend/controllers/MoneyMovementController.php
index 40fb172..94aee92 100644
--- a/frontend/controllers/MoneyMovementController.php
+++ b/frontend/controllers/MoneyMovementController.php
@@ -9,6 +9,7 @@ use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use common\models\Account;
+use common\models\Transfer;
/**
* MoneyMovementController implements the CRUD actions for MoneyMovement model.
@@ -66,6 +67,7 @@ class MoneyMovementController extends Controller
$model->id_user = Yii::$app->user->id;
$model->type = MoneyMovement::TYPE_OUT;
$model->id_account = Account::readDefault();
+ $model->status = MoneyMovement::STATUS_PAID;
$accounts = Account::read();
@@ -107,9 +109,13 @@ class MoneyMovementController extends Controller
*/
public function actionDelete($id)
{
- $this->findModel($id)->delete();
-
- return $this->redirect(['index']);
+ $model = $this->findModel($id);
+ $transfer = Transfer::find()->andWhere([ 'type' => Transfer::TYPE_MONEY_MOVEMENT_OUT ,'id_object' => $model->id_money_movement])->one();
+
+ $transfer->storno();
+// $this->findModel($id)->delete();
+ return $this->redirect(Yii::$app->request->referrer);
+// return $this->redirect(['index']);
}
/**
diff --git a/frontend/controllers/TicketController.php b/frontend/controllers/TicketController.php
index c98cea8..9260c96 100644
--- a/frontend/controllers/TicketController.php
+++ b/frontend/controllers/TicketController.php
@@ -21,6 +21,7 @@ use common\models\UserSoldItem;
use frontend\components\FrontendController;
use frontend\components\DefaultAccountBehavior;
use frontend\components\CassaOpenBehavior;
+use frontend\models\TicketUpdate;
/**
* TicketController implements the CRUD actions for Ticket model.
@@ -38,7 +39,7 @@ class TicketController extends FrontendController
],
'access' => [
'class' => \yii\filters\AccessControl::className(),
- 'only' => ['create', 'index' ],
+ 'only' => ['create', 'index','update' ],
'rules' => [
// allow authenticated users
[
@@ -135,6 +136,21 @@ class TicketController extends FrontendController
]);
}
+ public function actionUpdate($id){
+ $model = TicketUpdate::findOne($id);
+
+ if ( !isset($model)){
+ throw new NotFoundHttpException('The requested page does not exist.');
+ }
+
+ if ($model->load(Yii::$app->request->post()) && $model->save()) {
+ return $this->redirect(['index', 'number' => $model->card->number]);
+ }
+
+ return $this->render('update',['model' => $model]);
+
+ }
+
/**
* Deletes an existing Transfer model.
* If deletion is successful, the browser will be redirected to the 'index' page.
@@ -152,12 +168,21 @@ class TicketController extends FrontendController
try {
ShoppingCart::deleteAll([ 'id_transfer' => $transfer->id_transfer]);
UserSoldItem::deleteAll([ 'id_transfer' => $transfer->id_transfer]);
- if ( $transfer->delete() ){
- \Yii::$app->session->setFlash( 'success','Bérlet törölve' );
- $transaction->commit();
- }else{
- throw new \Exception("Failed to save");
- }
+// $transfer->status = Transfer::STATUS_STORNO;
+// $transfer->save(false);
+// $ticket->status = Ticket::STATUS_DELETED;
+// $ticket->save(false);
+ $transfer->storno();
+ $transaction->commit();
+ \Yii::$app->session->setFlash( 'success','Bérlet törölve' );
+
+ // $transaction->commit();
+// if ( $transfer->delete() ){
+// \Yii::$app->session->setFlash( 'success','Bérlet törölve' );
+// $transaction->commit();
+// }else{
+// throw new \Exception("Failed to save");
+// }
} catch(Exception $e) {
$transaction->rollback();
diff --git a/frontend/controllers/TransferController.php b/frontend/controllers/TransferController.php
index f5cac04..14729b8 100644
--- a/frontend/controllers/TransferController.php
+++ b/frontend/controllers/TransferController.php
@@ -222,12 +222,13 @@ class TransferController extends Controller
try {
ShoppingCart::deleteAll([ 'id_transfer' => $transfer->id_transfer]);
UserSoldItem::deleteAll([ 'id_transfer' => $transfer->id_transfer]);
- if ( $transfer->delete() ){
- \Yii::$app->session->setFlash( 'success','Tranzakció törölve' );
- $transaction->commit();
- }else{
- throw new \Exception("Failed to save");
- }
+ $transfer->storno();
+// if ( $transfer->delete() ){
+ \Yii::$app->session->setFlash( 'success','Tranzakció törölve' );
+ $transaction->commit();
+// }else{
+// throw new \Exception("Failed to save");
+// }
} catch(Exception $e) {
$transaction->rollback();
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..1f62bf5 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
*/
@@ -49,10 +51,28 @@ class ReceptionForm extends Model
$this->number = str_replace("ö", "0", $this->number);
- $this->card = Card::find()->andWhere(['or', ['and',[ 'in','number' , [$this->number]],"trim(coalesce(number, '')) <>'' " ], ['and', ['in','rfid_key' ,[ $this->number] ],"trim(coalesce(rfid_key, '')) <>'' "]])->one();
+ $query = Card::find();
+ $query->leftJoin("card_key_assignment", 'card.id_card = card_key_assignment.id_card');
+ $query->leftJoin("key", 'key.id_key = card_key_assignment.id_key');
+
+ $query->andWhere(['or',
+ ['and',[ 'in','card.number' , [$this->number]],"trim(coalesce(card.number, '')) <>'' " ],
+ ['and', ['in','card.rfid_key' ,[ $this->number] ],"trim(coalesce(card.rfid_key, '')) <>'' "],
+ ['and',[ 'in','key.number' , [$this->number]],"trim(coalesce(key.number, '')) <>'' " ],
+ ['and', ['in','key.rfid_key' ,[ $this->number] ],"trim(coalesce(key.rfid_key, '')) <>'' "]
+
+ ]);
+
+ $this->card = $query->one();
+
+ if ( $this->card == null ){
+
+ }
+
if ( $this->card != null ){
$this->customer = $this->card->customer;
$this->readValidTickets();
+ $this->readAssignedKeys();
}
$defaultAccount = Account::readDefault();
@@ -65,6 +85,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 +164,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..3c6e33d 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
@@ -82,6 +83,7 @@ class TicketCreate extends Ticket{
//cart
/////////////////////
[['cart'], 'string', 'max' => 10]
+
];
}
@@ -90,6 +92,18 @@ class TicketCreate extends Ticket{
$type = TicketType::findOne($this->id_ticket_type);
if ( !isset($type)) {
$this->addError($attribute,Yii::t('frontend/ticket' , 'Invalid ticket type' ));
+ }else{
+ if ( $type->isInstallment()){
+ $bankAccount = trim($this->customer->bank_account);
+ if ( !isset($bankAccount) || empty($bankAccount)){
+ $this->addError($attribute,"Nincs bankszámlaszám vagy érvénytelen");
+ return;
+ }
+ if ( !( strlen($bankAccount) == 16 || strlen($bankAccount) == 24 ) ){
+ $this->addError($attribute,"Vendég bankszámlaszáma nem 16 vagy 24 hosszú");
+ return;
+ }
+ }
}
}
@@ -107,13 +121,42 @@ class TicketCreate extends Ticket{
}
}
+ public function beforeSave($insert){
+ $result = parent::beforeSave($insert);
+ if ( $result ){
+ if ($insert){
+ $ticketType = TicketType::findOne($this->id_ticket_type);
+ if ( isset($ticketType) && $ticketType->isInstallment() ){
+ $this->part = 0;
+ $this->part_paid = 0;
+ $this->part_count = $ticketType->installment_count;
+ }else{
+ $this->part_count = 0;
+ }
+ }
+ }
+ return $result;
+ }
+
public function afterSave($insert, $changedAttributes){
$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/models/TicketUpdate.php b/frontend/models/TicketUpdate.php
new file mode 100644
index 0000000..c1e3a0f
--- /dev/null
+++ b/frontend/models/TicketUpdate.php
@@ -0,0 +1,25 @@
+ [ static ::STATUS_ACTIVE, static ::STATUS_INACTIVE ]],
+
+ ];
+ }
+
+
+
+ }
+
+
+?>
\ No newline at end of file
diff --git a/frontend/views/card/_search.php b/frontend/views/card/_search.php
index 9222da1..f2c5a4c 100644
--- a/frontend/views/card/_search.php
+++ b/frontend/views/card/_search.php
@@ -25,7 +25,7 @@ use yii\widgets\ActiveForm;
field($model, 'customerName') ?>
- field($model, 'number') ?>
+ field($model, 'number')->label("Kártya/kulcs szám") ?>