Finish version/v.0.0.27

This commit is contained in:
Roland Schneider 2016-01-25 12:51:42 +01:00
commit 64efd46ac7
71 changed files with 3651 additions and 803 deletions

View File

@ -122,6 +122,18 @@ class AdminMenuStructure{
'items' => $items
];
}
/////////////////////////////
// Kap lug megbízások
/////////////////////////////
$items = [];
$items[] = ['label' => 'Mozgások', 'url' => ['/door-log/index' , 'DoorLogSearch[start]' =>$today,'DoorLogSearch[end]' => $tomorrow ] ];
// $items[] = ['label' => 'Részletek aktiválása', 'url' => ['/ugiro/parts' ] ];
// $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' => 'Forgóvilla', 'url' => $this->emptyUrl,
'items' => $items
];
}

View File

@ -0,0 +1,121 @@
<?php
namespace backend\controllers;
use Yii;
use common\models\DoorLog;
use backend\models\DoorLogSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
/**
* DoorLogController implements the CRUD actions for DoorLog model.
*/
class DoorLogController extends Controller
{
public function behaviors()
{
return [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['post'],
],
],
];
}
/**
* Lists all DoorLog models.
* @return mixed
*/
public function actionIndex()
{
$searchModel = new DoorLogSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
/**
* Displays a single DoorLog model.
* @param integer $id
* @return mixed
*/
public function actionView($id)
{
return $this->render('view', [
'model' => $this->findModel($id),
]);
}
/**
* Creates a new DoorLog model.
* If creation is successful, the browser will be redirected to the 'view' page.
* @return mixed
*/
public function actionCreate()
{
$model = new DoorLog();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id_door_log]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
/**
* Updates an existing DoorLog 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_door_log]);
} else {
return $this->render('update', [
'model' => $model,
]);
}
}
/**
* Deletes an existing DoorLog 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 DoorLog model based on its primary key value.
* If the model is not found, a 404 HTTP exception will be thrown.
* @param integer $id
* @return DoorLog the loaded model
* @throws NotFoundHttpException if the model cannot be found
*/
protected function findModel($id)
{
if (($model = DoorLog::findOne($id)) !== null) {
return $model;
} else {
throw new NotFoundHttpException('The requested page does not exist.');
}
}
}

View File

@ -0,0 +1,30 @@
<?php
namespace backend\controllers;
use common\models\City;
use yii\web\Controller;
use backend\models\GiroBeszedForm;
/**
* CityController implements the CRUD actions for City model.
*/
class TestController extends Controller
{
public function actionCreateBeszed(){
$model = new GiroBeszedForm();
if ($model->load(\Yii::$app->request->post()) ) {
$model->run();
}
return $this->render("_create_beszed",['model' => $model]);
}
}

View File

@ -184,6 +184,13 @@ class UgiroController extends Controller
}
public function actionGenerateDetsta(){
}
/**
* Finds the Ugiro model based on its primary key value.
* If the model is not found, a 404 HTTP exception will be thrown.

View File

@ -1,4 +1,4 @@
01DETSTA8A24237545 201501270001201502094542162957
01DETSTA8A24237545 201601250001201601254542162957
020000010000014097201501270020150204201502031104 03916201502031001307001595 0015520150127321538700000000000000000000000340
020000020000015240201501275020150204 1117 73377201502033417908001595 0015520150127321538800000000000000000000000347
020000030000015240201501270020150204201502031120 94002201502030005151001595 0015520150127321538900000000000000000000000176

View File

@ -0,0 +1,147 @@
<?php
namespace backend\models;
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use common\models\DoorLog;
/**
* DoorLogSearch represents the model behind the search form about `common\models\DoorLog`.
*/
class DoorLogSearch extends DoorLog
{
public $searchCardNumber;
public $searchCustomerName;
public $searchKeyName;
public $start;
public $end;
public $timestampStart;
public $timestampEnd;
/**
* @inheritdoc
*/
public function rules()
{
return [
[[ 'direction', 'type'], 'integer'],
[['created_at'], 'safe'],
[['searchCardNumber','searchCustomerName','searchKeyName'], 'safe'],
[[ 'start', ], 'date' , 'timestampAttribute' => 'timestampStart' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ],
[[ 'end' , ], 'date' , 'timestampAttribute' => 'timestampEnd' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ],
];
}
public function attributeLabels(){
return [
'searchCardNumber' => 'Kártya szám',
'searchCustomerName' => 'Vendég',
'searchKeyName' => 'Kulcs szám',
'type' => 'Típus',
'direction' => 'Irány',
'start' => 'Időszak kezdete',
'end' => 'Időszak vége'
];
}
/**
* @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 = DoorLog::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort' =>[
'attributes' => [
// 'age',
'id_card' => [
'asc' => ['card.number' => SORT_ASC ],
'desc' => ['card.number' => SORT_DESC],
],
'id_key' => [
'asc' => ['key.number' => SORT_ASC ],
'desc' => ['key.number' => SORT_DESC],
],
'id_customer' => [
'asc' => ['customer.name' => SORT_ASC ],
'desc' => ['customer.name' => SORT_DESC],
],
'direction' => [
'asc' => ['door_log.direction' => SORT_ASC ],
'desc' => ['door_log.direction' => SORT_DESC],
],
'created_at' => [
'asc' => ['door_log.created_at' => SORT_ASC ],
'desc' => ['door_log.created_at' => SORT_DESC],
],
],
]
]);
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
$query->andFilterWhere([
// 'id_door_log' => $this->id_door_log,
// 'id_card' => $this->id_card,
// 'id_customer' => $this->id_customer,
// 'id_key' => $this->id_key,
'direction' => $this->direction,
// 'type' => $this->type,
// 'created_at' => $this->created_at,
]);
$query->andFilterWhere(['>=', 'door_log.created_at', $this->timestampStart]);
$query->andFilterWhere(['<', 'door_log.created_at', $this->timestampEnd]);
$query->innerJoin('card','card.id_card = door_log.id_card');
$query->leftJoin('key','key.id_key = door_log.id_key');
$query->leftJoin('customer','customer.id_customer = door_log.id_customer');
if ( !empty($this->searchCardNumber)){
$query->andWhere(['or',
['and',[ 'in','card.number' , [$this->searchCardNumber]],"trim(coalesce(card.number, '')) <>'' " ],
['and', ['in','card.rfid_key' ,[ $this->searchCardNumber] ],"trim(coalesce(card.rfid_key, '')) <>'' "],
]);
}
if ( !empty($this->searchKeyName)){
$query->andWhere(['or',
['and',[ 'in','key.number' , [$this->searchKeyName]],"trim(coalesce(key.number, '')) <>'' " ],
['and', ['in','key.rfid_key' ,[ $this->searchKeyName] ],"trim(coalesce(key.rfid_key, '')) <>'' "]
]);
}
$query->andFilterWhere(['like', 'customer.name', $this->searchCustomerName]);
return $dataProvider;
}
}

View File

@ -0,0 +1,85 @@
<?php
namespace backend\models;
use Yii;
use yii\base\Model;
use common\models\Card;
use common\models\Customer;
use common\models\Ticket;
use common\models\Account;
use yii\web\UploadedFile;
use common\components\giro\GiroDETSTA;
use common\models\Ugiro;
use common\components\giro\GiroDETSTAFej;
use common\components\giro\GiroDETSTALab;
use common\components\giro\GiroDETSTATetel;
/**
* ContactForm is the model behind the contact form.
* @property \Yii\web\UploadedFile $file
*/
class CardImportRfidForm extends Model{
public $id_giro;
public $uzenet;
public $detstatUzenet;
public function rules(){
return [
[['id_giro'], 'safe']
];
}
public function run(){
$ugiro = Ugiro::findOne($this->id_giro);
$requests = $ugiro->requests;
$this->detstatUzenet = new GiroDETSTA();
$fej = new GiroDETSTAFej();
$fej->csoportosUzenetSorszam->osszeallitasDatuma = $ugiro->datum;
$fej->csoportosUzenetSorszam->sorszam = $ugiro->number;
$fej->detstaUzenetSorszam->osszeallitasDatuma = $ugiro->datum;
$fej->detstaUzenetSorszam->sorszam = $ugiro->number;
$fej->ido = "141414";
$fej->jelentesJelzo = "8";
$fej->kezdemenyezoAzonosito = \Yii::$app->params['ugiro_kezdemenyezo_azonosito'];
$fej->kezdemenyezoBankszamla = \Yii::$app->params['ugiro_kezdemenyezo_szamlaszam'];
$this->detstatUzenet->fej = $fej;
foreach ($requests as $request){
$tetel = new GiroDETSTATetel();
$tetel->tetelSorszam = $request->number;
$tetel->osszeg = $request->money;
$tetel->eredetiTetelElszamolasiDatuma = date('Ymd');
$tetel->visszajelzesInformacio = "00";
$tetel->feldolgozasDatum = date('Ymd');
$tetel->terhelesiDatum = date('Ymd');
$tetel->eredetiHivatkozasiKod = "abc123";
$tetel->ugyfelAzonosito = $request->id_customer;
$this->detstatUzenet->tetelek[] = $tetel;
}
$lab = new GiroDETSTALab();
$lab->teljesitettTetelekSzama = 0;
$lab->teljesitettTetelekOsszerteke = 0;
$lab->megNemValaszoltTetelekOsszerteke = 0;
$lab->megNemValaszoltTetelekSzama = 0;
$lab->visszautasitottTetelekOsszerteke = 0;
$lab->visszautasitottTetelekSzama = 0;
$this->detstatUzenet->lab = $lab;
$this->uzenet = $this->detstatUzenet->toString();
}
}

View File

@ -0,0 +1,183 @@
<?php
namespace backend\models;
use Yii;
use yii\base\Model;
use common\models\Card;
use common\models\Customer;
use common\models\Ticket;
use common\models\Account;
use yii\web\UploadedFile;
use common\components\giro\GiroBeszed;
use common\components\giro\GiroBeszedFej;
use common\components\giro\GiroBeszedLab;
use common\components\giro\GiroBeszedTetel;
/**
* ContactForm is the model behind the contact form.
* @property string 'fej_recordTipus'
@property string 'uzenetTipus'
@property string 'duplumKod'
@property string 'kezdemenyezoAzonosito'
@property string 'uzenetSorszam'
@property string 'kezdemenyezoBankszamla'
@property string 'ertesitesiHatarido'
@property string 'jogcim'
@property string 'kezdemenyezoCegNeve'
@property string 'fej_kozlemeny'
@property string 'lab_rekordTipus'
@property string 'tetelekSzama'
@property string 'tetelekOsszerteke'
@property string 'rekordTipus'
@property string 'tetelSorszam'
@property string 'terhelesiDatum'
@property string 'osszeg'
@property string 'kotelezettBankszamla'
@property string 'ugyfelazonositoAKezdemenyezonel'
@property string 'ugyfelNeve'
@property string 'ugyfelCime'
@property string 'szamlaTulajdonosNeve'
@property string 'kozlemeny'
*/
class GiroBeszedForm extends Model{
public $uzenet_szoveg;
/**fej*/
public $fej_recordTipus = "01";
public $uzenetTipus = "BESZED";
public $duplumKod = "1";
public $kezdemenyezoAzonosito = "A25366936T244";
// public $uzenetSorszam;
public $fej_osszeallitasDatuma ;
public $fej_sorszam = 1;
public $kezdemenyezoBankszamla = "5860025215371128";
public $ertesitesiHatarido;
public $jogcim = "BEE";
public $kezdemenyezoCegNeve = "test cég";
public $fej_kozlemeny = "Ez a közlemény a fejben";
/**lab*/
public $lab_rekordTipus = "03";
public $tetelekSzama = 1;
public $tetelekOsszerteke = 1000;
/**tetel*/
public $rekordTipus = "02";
public $tetelSorszam = 1;
public $terhelesiDatum = "";
public $osszeg = 1000;
public $kotelezettBankszamla = "5860025215371128";
public $ugyfelazonositoAKezdemenyezonel = "199991";
public $ugyfelNeve;
public $ugyfelCime;
public $szamlaTulajdonosNeve = "Schneider Roland";
public $kozlemeny ="Fitness bérlet";
public function init(){
parent::init();
$this->fej_osszeallitasDatuma = date('Ymd');
$this->ertesitesiHatarido = date('Ymd');
$this->terhelesiDatum = date('Ymd', strtotime('tomorrow'));
}
public function rules(){
return [
[ [ 'fej_recordTipus' ,
'uzenetTipus' ,
'duplumKod' ,
'kezdemenyezoAzonosito' ,
// 'uzenetSorszam' ,
'fej_osszeallitasDatuma',
'fej_sorszam',
'kezdemenyezoBankszamla' ,
'ertesitesiHatarido' ,
'jogcim' ,
'kezdemenyezoCegNeve' ,
'kozlemeny' ,
'rekordTipus' ,
'tetelekSzama' ,
'tetelekOsszerteke' ,
'rekordTipus' ,
'tetelSorszam' ,
'terhelesiDatum' ,
'osszeg' ,
'kotelezettBankszamla' ,
'ugyfelazonositoAKezdemenyezonel' ,
'ugyfelNeve' ,
'ugyfelCime' ,
'szamlaTulajdonosNeve' ,
'kozlemeny' ,] ,'string']
];
}
public function run(){
$this->validate();
$uzenet = new GiroBeszed();
$fej = new GiroBeszedFej();
$lab = new GiroBeszedLab();
$tetel = new GiroBeszedTetel();
$fej->recordTipus = $this->fej_recordTipus;
$fej->uzenetTipus = $this->uzenetTipus;
$fej->duplumKod = $this->duplumKod;
$fej->kezdemenyezoAzonosito = $this->kezdemenyezoAzonosito;
$fej->uzenetSorszam->osszeallitasDatuma = $this->fej_osszeallitasDatuma;
$fej->uzenetSorszam->sorszam = $this->fej_sorszam;
$fej->kezdemenyezoBankszamla->szamlaszam = $this->kezdemenyezoBankszamla;
$fej->ertesitesiHatarido = $this->ertesitesiHatarido;
$fej->jogcim = $this->jogcim;
$fej->kezdemenyezoCegNeve = $this->kezdemenyezoCegNeve;
$fej->kozlemeny = $this->fej_kozlemeny;
//
/***/
$lab->rekordTipus = $this->lab_rekordTipus;
$lab->tetelekSzama = $this->tetelekSzama;
$lab->tetelekOsszerteke = $this->tetelekOsszerteke;
//tetel
$tetel->rekordTipus = $this->rekordTipus;
$tetel->tetelSorszam = $this->tetelSorszam;
$tetel->terhelesiDatum = $this->terhelesiDatum;
$tetel->osszeg = $this->osszeg;
$tetel->kotelezettBankszamla->szamlaszam = $this->kotelezettBankszamla;
$tetel->ugyfelazonositoAKezdemenyezonel = $this->ugyfelazonositoAKezdemenyezonel;
$tetel->ugyfelNeve = $this->ugyfelNeve;
$tetel->ugyfelCime = $this->ugyfelCime;
$tetel->szamlaTulajdonosNeve = $this->szamlaTulajdonosNeve;
$tetel->kozlemeny = $this->kozlemeny;
$uzenet->fej = $fej;
$uzenet->tetelek[] = $tetel;
$uzenet->lab = $lab;
$this->uzenet_szoveg = $uzenet->toString();
}
}

View File

@ -80,7 +80,11 @@ class GiroKotegForm extends Model{
}
public function assignRequestsToUgiro(){
$i = 0;
foreach ($this->requests as $request){
$i++;
$request->number = $i;
$request->save(false);
$assignment = new UgiroRequestAssignment();
$assignment->id_request = $request->id_ticket_installment_request;
$assignment->id_ugiro = $this->koteg->id_ugiro;

View File

@ -38,7 +38,7 @@ class TicketInstallmentRequestSearch extends TicketInstallmentRequest
public function rules()
{
return [
[['id_ticket_installment_request', 'id_ticket', 'id_customer', 'status' ,'id_ticket_type','id_ugiro'], 'integer'],
[[ 'id_contract', 'id_ticket_installment_request', 'id_ticket', 'id_customer', 'status' ,'id_ticket_type','id_ugiro'], 'integer'],
[['customer_name' ], 'safe'],
[[ 'start', ], 'date' , 'timestampAttribute' => 'timestampStart' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ],
[[ 'end' , ], 'date' , 'timestampAttribute' => 'timestampEnd' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ],
@ -83,7 +83,9 @@ class TicketInstallmentRequestSearch extends TicketInstallmentRequest
'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.number as request_number',//sent_at
'ticket_installment_request.request_processed_at as request_processed_at',//request_processed_at
'ticket_installment_request.id_contract as request_id_contract',//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
@ -95,8 +97,8 @@ class TicketInstallmentRequestSearch extends TicketInstallmentRequest
]);
$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->leftJoin("ticket","ticket.id_ticket = ticket_installment_request.id_ticket");
$query->leftJoin("ticket_type","ticket.id_ticket_type = ticket_type.id_ticket_type");
$query->leftJoin("ugiro_request_assignment","ticket_installment_request.id_ticket_installment_request = ugiro_request_assignment.id_request");
$query->orderBy(["ticket_installment_request.request_target_time_at" => SORT_ASC]);
@ -107,6 +109,7 @@ class TicketInstallmentRequestSearch extends TicketInstallmentRequest
'customer.id_customer' => $this->id_customer,
'ticket_installment_request.status' => $this->status,
'ticket_type.id_ticket_type' => $this->id_ticket_type,
'ticket_installment_request.id_contract' => $this->id_contract,
]);
$query->andFilterWhere(['like', 'customer.name', $this->customer_name]);
//target time

View File

@ -80,8 +80,8 @@ class TicketInstallmentRequestSearchDownloadGiro extends TicketInstallmentReques
]);
$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->leftJoin("ticket","ticket.id_ticket = ticket_installment_request.id_ticket");
$query->leftJoin("ticket_type","ticket.id_ticket_type = ticket_type.id_ticket_type");
$query->andWhere(['ticket_installment_request.status' => TicketInstallmentRequest::$STATUS_MARKED_TO_SEND]);

View File

@ -28,7 +28,7 @@ class TicketInstallmentRequestSearchPending extends TicketInstallmentRequest
public function rules()
{
return [
[['id_ticket_installment_request', 'id_ticket', 'id_customer', 'status' ,'id_ticket_type'], 'integer'],
[[ 'id_contract', 'id_ticket_installment_request', 'id_ticket', 'id_customer', 'status' ,'id_ticket_type'], 'integer'],
[['customer_name' ], 'safe'],
[[ 'start', ], 'date' , 'timestampAttribute' => 'timestampStart' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ],
[[ 'end' , ], 'date' , 'timestampAttribute' => 'timestampEnd' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ],
@ -69,6 +69,7 @@ class TicketInstallmentRequestSearchPending extends TicketInstallmentRequest
'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.id_contract as request_id_contract',//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
@ -80,8 +81,8 @@ class TicketInstallmentRequestSearchPending extends TicketInstallmentRequest
]);
$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->leftJoin("ticket","ticket.id_ticket = ticket_installment_request.id_ticket");
$query->leftJoin("ticket_type","ticket.id_ticket_type = ticket_type.id_ticket_type");
$query->andWhere(['ticket_installment_request.status' => TicketInstallmentRequest::$STATUS_PENDING]);
@ -93,6 +94,7 @@ class TicketInstallmentRequestSearchPending extends TicketInstallmentRequest
'customer.id_customer' => $this->id_customer,
'ticket_installment_request.status' => $this->status,
'ticket_type.id_ticket_type' => $this->id_ticket_type,
'ticket_installment_request.id_contract' => $this->id_contract,
]);
$query->andFilterWhere(['like', 'customer.name', $this->customer_name]);
//target time

View File

@ -23,6 +23,7 @@ $this->params['breadcrumbs'][] = $this->title;
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
'id_customer',
[
'attribute' => 'customerCardNumber' ,
],

View File

@ -0,0 +1,33 @@
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
/* @var $this yii\web\View */
/* @var $model common\models\DoorLog */
/* @var $form yii\widgets\ActiveForm */
?>
<div class="door-log-form">
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'id_card')->textInput() ?>
<?= $form->field($model, 'id_customer')->textInput() ?>
<?= $form->field($model, 'id_key')->textInput() ?>
<?= $form->field($model, 'direction')->textInput() ?>
<?= $form->field($model, 'type')->textInput() ?>
<?= $form->field($model, 'created_at')->textInput() ?>
<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? Yii::t('common/door_log', 'Create') : Yii::t('common/door_log', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>

View File

@ -0,0 +1,66 @@
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use kartik\widgets\DatePicker;
/* @var $this yii\web\View */
/* @var $model backend\models\DoorLogSearch */
/* @var $form yii\widgets\ActiveForm */
?>
<div class="door-log-search">
<?php $form = ActiveForm::begin([
'action' => ['index'],
'method' => 'get',
]); ?>
<div class="row">
<div class="col-md-3">
<?= $form->field($model, 'searchCardNumber') ?>
</div>
<div class="col-md-3">
<?= $form->field($model, 'searchCustomerName') ?>
</div>
<div class="col-md-3">
<?= $form->field($model, 'searchKeyName') ?>
</div>
<div class="col-md-3">
<?= $form->field($model, 'direction')->dropDownList(['' => 'Mind' ] + []) ?>
</div>
</div>
<?php // echo $form->field($model, 'type') ?>
<?php // echo $form->field($model, 'created_at') ?>
<div class="row">
<div class="col-md-3">
<?= $form->field($model, 'start')->widget(DatePicker::classname(), [
'pluginOptions' => [
'autoclose'=>true,
'format' => 'yyyy.mm.dd'
]
]) ?>
</div>
<div class="col-md-3">
<?= $form->field($model, 'end') ->widget(DatePicker::classname(), [
'pluginOptions' => [
'autoclose'=>true,
'format' => 'yyyy.mm.dd'
]
]) ?>
</div>
</div>
<div class="form-group">
<?= Html::submitButton(Yii::t('common/door_log', 'Search'), ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>

View File

@ -0,0 +1,21 @@
<?php
use yii\helpers\Html;
/* @var $this yii\web\View */
/* @var $model common\models\DoorLog */
$this->title = Yii::t('common/door_log', 'Create Door Log');
$this->params['breadcrumbs'][] = ['label' => Yii::t('common/door_log', 'Door Logs'), 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="door-log-create">
<h1><?= Html::encode($this->title) ?></h1>
<?= $this->render('_form', [
'model' => $model,
]) ?>
</div>

View File

@ -0,0 +1,45 @@
<?php
use yii\helpers\Html;
use yii\grid\GridView;
/* @var $this yii\web\View */
/* @var $searchModel backend\models\DoorLogSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */
$this->title = Yii::t('common/door_log', 'Mozgások');
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="door-log-index">
<h1><?= Html::encode($this->title) ?></h1>
<?php echo $this->render('_search', ['model' => $searchModel]); ?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
[
'attribute' => 'id_card',
'value' => 'cardNumber'
],
[
'attribute' => 'id_key',
'value' => 'keyNumber'
],
[
'attribute' => 'id_customer',
'value' => 'customerName'
],
[
'attribute' => 'direction',
'value' => 'directionName'
],
// 'type',
'created_at:datetime',
],
]); ?>
</div>

View File

@ -0,0 +1,23 @@
<?php
use yii\helpers\Html;
/* @var $this yii\web\View */
/* @var $model common\models\DoorLog */
$this->title = Yii::t('common/door_log', 'Update {modelClass}: ', [
'modelClass' => 'Door Log',
]) . ' ' . $model->id_door_log;
$this->params['breadcrumbs'][] = ['label' => Yii::t('common/door_log', 'Door Logs'), 'url' => ['index']];
$this->params['breadcrumbs'][] = ['label' => $model->id_door_log, 'url' => ['view', 'id' => $model->id_door_log]];
$this->params['breadcrumbs'][] = Yii::t('common/door_log', 'Update');
?>
<div class="door-log-update">
<h1><?= Html::encode($this->title) ?></h1>
<?= $this->render('_form', [
'model' => $model,
]) ?>
</div>

View File

@ -0,0 +1,41 @@
<?php
use yii\helpers\Html;
use yii\widgets\DetailView;
/* @var $this yii\web\View */
/* @var $model common\models\DoorLog */
$this->title = $model->id_door_log;
$this->params['breadcrumbs'][] = ['label' => Yii::t('common/door_log', 'Door Logs'), 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="door-log-view">
<h1><?= Html::encode($this->title) ?></h1>
<p>
<?= Html::a(Yii::t('common/door_log', 'Update'), ['update', 'id' => $model->id_door_log], ['class' => 'btn btn-primary']) ?>
<?= Html::a(Yii::t('common/door_log', 'Delete'), ['delete', 'id' => $model->id_door_log], [
'class' => 'btn btn-danger',
'data' => [
'confirm' => Yii::t('common/door_log', 'Are you sure you want to delete this item?'),
'method' => 'post',
],
]) ?>
</p>
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'id_door_log',
'id_card',
'id_customer',
'id_key',
'direction',
'type',
'created_at',
],
]) ?>
</div>

View File

@ -0,0 +1,4 @@
create beszed
<?php echo $this->render('beszed_form', ['model' => $model]); ?>

View File

@ -0,0 +1,52 @@
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
/* @var $this yii\web\View */
/* @var $model backend\models\GiroBeszedForm */
/* @var $form ActiveForm */
?>
<div class="test-beszed_form">
<textarea rows="10" cols="200"><?php echo $model->uzenet_szoveg?></textarea>
<?php $form = ActiveForm::begin(); ?>
<h2>fej</h2>
<?= $form->field($model, 'fej_recordTipus') ?>
<?= $form->field($model, 'uzenetTipus') ?>
<?= $form->field($model, 'duplumKod') ?>
<?= $form->field($model, 'kezdemenyezoAzonosito') ?>
<?php // $form->field($model, 'uzenetSorszam') ?>
<?= $form->field($model, 'fej_osszeallitasDatuma') ?>
<?= $form->field($model, 'fej_sorszam') ?>
<?= $form->field($model, 'kezdemenyezoBankszamla') ?>
<?= $form->field($model, 'ertesitesiHatarido') ?>
<?= $form->field($model, 'jogcim') ?>
<?= $form->field($model, 'kezdemenyezoCegNeve') ?>
<?= $form->field($model, 'fej_kozlemeny') ?>
<?php /**lab*/?>
<h2>Lab</h2>
<?= $form->field($model, 'lab_rekordTipus') ?>
<?= $form->field($model, 'tetelekSzama') ?>
<?= $form->field($model, 'tetelekOsszerteke') ?>
<h2>Tetel</h2>
<?php /*** tetel*/?>
<?= $form->field($model, 'tetelSorszam') ?>
<?= $form->field($model, 'terhelesiDatum') ?>
<?= $form->field($model, 'osszeg') ?>
<?= $form->field($model, 'kotelezettBankszamla') ?>
<?= $form->field($model, 'ugyfelazonositoAKezdemenyezonel') ?>
<?= $form->field($model, 'ugyfelNeve') ?>
<?= $form->field($model, 'ugyfelCime') ?>
<?= $form->field($model, 'szamlaTulajdonosNeve') ?>
<div class="form-group">
<?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
</div><!-- test-beszed_form -->

View File

@ -51,7 +51,7 @@ use yii\helpers\Html;
</tr>
<tr>
<th>
Megbízás inditására irányzott dátum
Megbízás esedékességének dátuma
</th>
<td>
<?php echo \Yii::$app->formatter->asDatetime( $model['request_request_target_time_at'] );?>
@ -84,8 +84,10 @@ use yii\helpers\Html;
<?php echo $model['ugiro_id_ugiro'] ;?>
</td>
<th>
Szerződés azonosító
</th>
<td>
<?php echo $model['request_id_contract'] ;?>
</td>
</tr>
@ -145,6 +147,22 @@ use yii\helpers\Html;
<td>
</td>
</tr>
<tr>
<th>
Sorszám a kötegben belül
</th>
<td>
<?php echo ( $model['request_number'] ) ;?>
</td>
<th>
</th>
<td>
</td>
<th>
</th>
<td>
</td>
</tr>
</table>
<div >
<?php
@ -153,7 +171,7 @@ use yii\helpers\Html;
}
echo Html::a("Megbízás részletek",['ticket-installment-request/view', 'id' => $model['request_id_ticket_installment_request']] ,[ 'class' => 'btn btn-primary']);
if ( !empty( $model['ticket_id_ticket'] )){
echo Html::a("Bérlet részletei",['ticket-installment-request/index', 'TicketInstallmentRequestSearch[id_ticket]' => $model['ticket_id_ticket']] ,[ 'class' => 'btn btn-primary']);
echo Html::a("Szerződés megbízásai",['ticket-installment-request/index', 'TicketInstallmentRequestSearch[id_contract]' => $model['request_id_contract']] ,[ 'class' => 'btn btn-primary']);
}
?>
</div>

View File

@ -47,10 +47,10 @@ use yii\helpers\Html;
<tr>
<tr>
<th>
Megbízás inditására irányzott dátum
Megbízás esedékességének dátuma
</th>
<td>
<?php echo \Yii::$app->formatter->asDatetime( $model['request_request_target_time_at'] );?>
<?php echo \Yii::$app->formatter->asDate( $model['request_request_target_time_at'] );?>
</td>
<th>
Megbízás elindításának ideje
@ -78,8 +78,10 @@ use yii\helpers\Html;
<td>
</td>
<th>
Szerződés azonosíót
</th>
<td>
<?php echo $model['request_id_contract'] ;?>
</td>
<tr>

View File

@ -39,6 +39,9 @@ $ticketTypeOptions = ['' => 'Mind'] + ArrayHelper::map(TicketType::read(), 'i
</div>
</div>
<div class="row">
<div class="col-md-3">
<?= $form->field($model, 'id_contract')->label("Szerződés azonosító") ?>
</div>
<div class="col-md-3">
<?= $form->field($model, 'customer_name')->label("Vendég neve") ?>
</div>
@ -56,7 +59,7 @@ $ticketTypeOptions = ['' => 'Mind'] + ArrayHelper::map(TicketType::read(), 'i
'autoclose'=>true,
'format' => 'yyyy.mm.dd'
]
])->label('Megbízás inditására irányzott kezdete ( inklúzív )') ?>
])->label('Megbízás esedékességének kezdete ( inklúzív )') ?>
</div>
<div class="col-md-3">
<?= $form->field($model, 'end') ->widget(DatePicker::classname(), [
@ -64,7 +67,7 @@ $ticketTypeOptions = ['' => 'Mind'] + ArrayHelper::map(TicketType::read(), 'i
'autoclose'=>true,
'format' => 'yyyy.mm.dd'
]
])->label('Megbízás inditására irányzott dátum vége ( exklúzív )') ?>
])->label('Megbízás esedékességének vége ( exklúzív )') ?>
</div>
</div>
<?php /*?>

View File

@ -37,6 +37,9 @@ $ticketTypeOptions = ['' => 'Mind'] + ArrayHelper::map(TicketType::read(), 'i
</div>
</div>
<div class="row">
<div class="col-md-3">
<?= $form->field($model, 'id_contract')->label("Szerződés azonosító") ?>
</div>
<div class="col-md-3">
<?= $form->field($model, 'customer_name')->label("Vendég neve") ?>
</div>
@ -68,7 +71,6 @@ $ticketTypeOptions = ['' => 'Mind'] + ArrayHelper::map(TicketType::read(), 'i
<div class="form-group">
<?= Html::submitButton(Yii::t('common/ticket_installment_request', 'Search'), ['class' => 'btn btn-primary']) ?>
<?= Html::resetButton(Yii::t('common/ticket_installment_request', 'Reset'), ['class' => 'btn btn-default']) ?>
</div>
<?php ActiveForm::end(); ?>

View File

@ -48,7 +48,9 @@ $this->params['breadcrumbs'][] = $this->title;
<div class="panel-body">
<?php
if ( $model->isStatusRejected()){
echo Html::a("Teljesítettnek jelölés",['accept', 'id' => $model->id_ticket_installment_request] ,['data-method' =>'post', 'class' => 'btn btn-danger']);
//echo Html::a("Teljesítettnek jelölés",['accept', 'id' => $model->id_ticket_installment_request] ,['data-method' =>'post', 'class' => 'btn btn-danger']);
echo "Teljesítettnek jelölés a recepciós felületen lehetséges!";
}
?>
<div class="request-view <?= $statusStyle ?>">
@ -132,6 +134,7 @@ $this->params['breadcrumbs'][] = $this->title;
<td>
</td>
</tr>
<?php if (isset($model->ticket)) {?>
<tr>
<th>
Bérlet azonosító
@ -170,24 +173,25 @@ $this->params['breadcrumbs'][] = $this->title;
<td>
</td>
</tr>
<?php }?>
<tr>
<th>
Bérlet részletek száma
Szerződés részletek száma
</th>
<td>
<?php echo $model->ticket->part_count ;?>
<?php echo $model->contract->part_count ;?>
</td>
<th>
Bérlet esedékes részlet
Szerződés esedékes részlet
</th>
<td>
<?php echo $model->ticket->part ;?>
<?php echo $model->contract->part_required ;?>
</td>
<th>
Bérlet utoljára fizetett részlet
Szerződés utoljára fizetett részlet
</th>
<td>
<?php echo $model->ticket->part_paid ;?>
<?php echo $model->contract->part_paid ;?>
</td>
</tr>
<tr>
@ -216,7 +220,7 @@ if ( !empty( $model->idGiro )){
echo Html::a("Köteg",['ugiro/view', 'id' => $model->idGiro] ,[ 'class' => 'btn btn-primary']);
echo Html::a("Részletek a kötegben",['ticket-installment-request/index', 'TicketInstallmentRequestSearch[id_ugiro]' => $model->idGiro] ,[ 'class' => 'btn btn-primary']);
}
echo Html::a("Bérlet fizetési részletei",['ticket-installment-request/index', 'TicketInstallmentRequestSearch[id_ticket]' => $model->id_ticket] ,[ 'class' => 'btn btn-primary']);
echo Html::a("Szerzőés megbízásai",['ticket-installment-request/index', 'TicketInstallmentRequestSearch[id_contract]' => $model->id_contract] ,[ 'class' => 'btn btn-primary']);
?>

View File

@ -1,3 +1,6 @@
-0.0.27
- Add contract (szerződés )
- Add door_log ( mozgások )
-0.0.26
- Fix GiroUzenetsorszam case sensitive class/file name match
-0.0.25

View File

@ -66,16 +66,23 @@ class DetStatProcessor extends Object{
/*
$this->detstatUzenet = new GiroDETSTA();
$this->idKoteg = 33;
$this->idKoteg = 38;
$fej = new GiroDETSTAFej();
$this->detstatUzenet->fej = $fej;
$tetel = new GiroDETSTATetel();
$tetel->ugyfelAzonosito = 12;
$tetel->tetelSorszam = 1;
$tetel->visszajelzesInformacio = "00";
// $tetel->visszajelzesInformacio = "02";
$this->detstatUzenet->tetelek[] = $tetel;
$tetel = new GiroDETSTATetel();
$tetel->tetelSorszam = 2;
$tetel->visszajelzesInformacio = "00";
$tetel->visszajelzesInformacio = "02";
@ -83,18 +90,19 @@ class DetStatProcessor extends Object{
$lab = new GiroDETSTALab();
$this->detstatUzenet->lab = $lab;
*/
}
public function createMegbizasTetelHozzarendelesek(){
$mapTetel = [];
foreach ($this->detstatUzenet->tetelek as $tetel ){
$mapTetel[$tetel->ugyfelAzonosito] = $tetel;
$mapTetel[$tetel->tetelSorszam] = $tetel;
}
foreach ($this->megbizasok as $megbizas){
if ( array_key_exists($megbizas->id_ticket_installment_request, $mapTetel)){
$megbizas->detstaTetel = $mapTetel[$megbizas->id_ticket_installment_request];
if ( array_key_exists($megbizas->number, $mapTetel)){
$megbizas->detstaTetel = $mapTetel[$megbizas->number];
}
}

View File

@ -7,9 +7,19 @@ use \Yii;
class Helper {
public static function getDateTimeString( ){
return date("Y-m-d H:i:s");
}
public static function getArrayValue($arr,$key,$def){
$result = $def;
if ( array_key_exists($key, $arr)){
$result = $arr[$key];
}
return $result;
}
public static function hufRound($m) {
$result = round ( $m / 5, 0 ) * 5;
return $result;

View File

@ -5,13 +5,16 @@ namespace common\components\giro;
use common\components\giro\GiroBase;
/**
*
* @property common\components\giro\GiroUzenetsorszam $uzenetSorszam
* @property common\components\giro\GiroBankszamla $kezdemenyezoBankszamla
*@property common\components\giro\GiroBeszedFej $fej
*@property common\components\giro\GiroBeszedLab $lab
*@property common\components\giro\GiroBeszedTetel[] $tetelek
*
*/
class GiroBeszed extends GiroBase {
public $fej;
public $lab;
public $tetelek = [];
public function __construct() {
}
@ -36,7 +39,7 @@ class GiroBeszed extends GiroBase {
$fej->kezdemenyezoBankszamla->szamlaszam = \Yii::$app->params['ugiro_kezdemenyezo_szamlaszam']; // "5860025215371128";
// $fej->kezdemenyezoBankszamla->bankszerv = "58600252"; // "TAKBHUHB";
$fej->ertesitesiHatarido = "";
$fej->kezdemenyezoCegNeve = \Yii::$app->params['company'];
$fej->kezdemenyezoCegNeve = \Yii::$app->params['company_name'];
return $fej->toString ();
}
@ -57,16 +60,16 @@ class GiroBeszed extends GiroBase {
public static function createTetel($request,$sorszam,$terhelesiDatum) {
$tetel = new GiroBeszedTetel ();
$customer = $request->customer;
$tetel->tetelSorszam = $sorszam;
$tetel->tetelSorszam = $request->number;
$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->ugyfelazonositoAKezdemenyezonel = $customer->id_customer;
// $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;
$tetel->kozlemeny = "Fitness berlet. Megbizas azon: " . $request->id_ticket_installment_request;
return $tetel->toString();
}
@ -84,4 +87,18 @@ class GiroBeszed extends GiroBase {
return $lab->toString ();
}
public function toString( ) {
$s = "";
$s .= $this->fej->toString();
foreach ($this->tetelek as $tetel ){
$s .= $tetel->toString();
}
$s .= $this->lab->toString();
return $s;
}
}

View File

@ -9,7 +9,38 @@ use common\components\giro\GiroBase;
class GiroBeszedTetel extends GiroBase{
public $rekordTipus = "02";
/**
* 3 8
T211
tételsorszám
N
6
K
* */
public $tetelSorszam = 0;
/**
* @var string $terhelesiDatum
* 9 16
T212
terhelési / esedékességi dátum
N
8
ééééhhnn
K
ezen a dátumon (év, , nap) kell megterhelni a kötelezett számláját a beszedendő összeggel
* Ellenőrzés
* 9 16
T212
terhelési / esedékességi dátum 1
érvényes / időhatáron belüli
dátum?
E <= D <= E + 8 ?
33 T
érvénytelen terhelési dátum
*
* A D terhelési dátumnak érvényes naptári napnak kell lennie, valamint nem lehet kisebb
és legfeljebb 8 munka- / elszámolási nappal lehet későbbi, mint az E elszámolási dátum.
* */
public $terhelesiDatum = "";
public $osszeg;
public $kotelezettBankszamla;

View File

@ -47,4 +47,24 @@ class GiroDETSTA extends GiroBase {
return $detsta;
}
/**
* @param common\components\giro\GiroBeszed $beszed
* */
public static function createBeszedAnswer($beszed){
// /**@var common\components\giro\GiroBeszed $beszed*/
$beszed = new GiroBeszed();
$detsta = new GiroDETSTA();
$detsta->fej = new GiroDETSTAFej();
$detsta->fej->jelentesJelzo = 8;
$detsta->fej->kezdemenyezoAzonosito = $beszed->fej->kezdemenyezoAzonosito;
$detsta->fej->csoportosUzenetSorszam->osszeallitasDatuma = $beszed->fej->uzenetSorszam->osszeallitasDatuma;
$detsta->fej->csoportosUzenetSorszam->sorszam = $beszed->fej->uzenetSorszam->sorszam;
$detsta->fej->detstaUzenetSorszam->osszeallitasDatuma = $beszed->fej->uzenetSorszam->osszeallitasDatuma;
$detsta->fej->detstaUzenetSorszam = $beszed->fej->uzenetSorszam->sorszam;
$detsta->lab = new GiroDETSTALab();
}
}

View File

@ -4,8 +4,13 @@ namespace common\components\giro;
/**
*
* @property common\components\giro\GiroUzenetsorszam $csoportosUzenetSorszam
* @property common\components\giro\GiroBankszamla $kezdemenyezoBankszamla
* @property string $recordTipus
* @property string $teljesitettTetelekSzama
* @property string $teljesitettTetelekOsszerteke
* @property string $visszautasitottTetelekSzama
* @property string $visszautasitottTetelekSzama
* @property string $megNemValaszoltTetelekSzama
* @property string $megNemValaszoltTetelekOsszerteke
*
*/
class GiroDETSTALab extends GiroBase {

View File

@ -4,7 +4,7 @@ return [
'supportEmail' => 'rocho02@gmail.com',
'infoEmail' => 'info@rocho-net.hu',
'user.passwordResetTokenExpire' => 3600,
'version' => 'v0.0.26',
'version' => 'v0.0.27',
'company' => 'movar',//gyor
'company_name' => "Freimann Kft.",
'product_visiblity' => 'account',// on reception which products to display. account or global

View File

@ -25,6 +25,7 @@ class Card extends \common\models\BaseFitnessActiveRecord
const TYPE_QRCODE = 20;
const TYPE_BARCODE = 30;
const TYPE_OLD = 40;
const TYPE_EMPLOYEE = 50;
/**
* @inheritdoc
@ -95,6 +96,7 @@ class Card extends \common\models\BaseFitnessActiveRecord
self::TYPE_QRCODE => Yii::t('common/card', 'QRCODE'),
self::TYPE_BARCODE => Yii::t('common/card', 'BARCODE'),
self::TYPE_OLD => Yii::t('common/card', 'OLD'),
self::TYPE_EMPLOYEE => Yii::t('common/card', 'Munkatárs'),
];
}

182
common/models/Contract.php Normal file
View File

@ -0,0 +1,182 @@
<?php
namespace common\models;
use Yii;
use yii\helpers\ArrayHelper;
use yii\behaviors\TimestampBehavior;
use common\components\Helper;
/**
* This is the model class for table "contract".
*
* @property integer $id_contract
* @property integer $id_user
* @property integer $id_customer
* @property integer $status
* @property integer $flag
* @property integer $part_paid
* @property integer $part_count
* @property integer $part_required
* @property integer $id_ticket_type
* @property string $expired_at
* @property string $created_at
* @property string $updated_at
*/
class Contract extends \yii\db\ActiveRecord
{
public static $STATUS_PAID = 10;
public static $STATUS_NOT_PAID = 20;
public static $FLAG_DELETED = 10;
public static $FLAG_CANCELED = 20;
public static $FLAG_ACTIVE= 30;
public static $FLAG_EXPIRED = 40;
public function behaviors()
{
return ArrayHelper::merge( [
[
'class' => TimestampBehavior::className(),
'value' => function(){ return Helper::getDateTimeString(); }
],
], parent::behaviors());
}
/**
* @inheritdoc
*/
public static function tableName()
{
return 'contract';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
// [['id_user', 'id_customer', 'status', 'flag', 'part_paid', 'part_count', 'part_required'], 'integer'],
// [['expired_at', 'created_at', 'updated_at'], 'required'],
// [['expired_at', 'created_at', 'updated_at'], 'safe']
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id_contract' => Yii::t('common/contract', 'Szerződés azonosító'),
'id_user' => Yii::t('common/contract', 'Felhasználó'),
'id_customer' => Yii::t('common/contract', 'Vendég'),
'status' => Yii::t('common/contract', 'Státusz'),
'flag' => Yii::t('common/contract', 'Állapot'),
'part_count' => Yii::t('common/contract', 'Részletek száma'),
'part_paid' => Yii::t('common/contract', 'Fizetett részletek'),
'part_required' => Yii::t('common/contract', 'Esedékes részlet'),
'expired_at' => Yii::t('common/contract', 'Lejárati dátum'),
'created_at' => Yii::t('common/contract', 'Létrehozva'),
'updated_at' => Yii::t('common/contract', 'Módosítva'),
];
}
public function getTicketType(){
return $this->hasOne(TicketType::className(), ['id_ticket_type' => 'id_ticket_type']);
}
public function getCustomer(){
return $this->hasOne(Customer::className(), ['id_customer' => 'id_customer']);
}
public function getCustomerName(){
$customer = $this->customer;
$result = "";
if ( isset($customer)){
$result = $customer->name;
}
return $result;
}
public function getUser(){
return $this->hasOne(User::className(), ['id' => 'id_user']);
}
public function getUserName(){
$user = $this->user;
$result = "";
if ( isset($user)){
$result = $user->username;
}
return $result;
}
public function getRequests(){
return $this->hasMany(TicketInstallmentRequest::className(), ['id_contract' => 'id_contract']);
}
// public static $STATUS_PAID = 10;
// public static $STATUS_NOT_PAID = 20;
// public static $FLAG_DELETED = 10;
// public static $FLAG_CANCELED = 20;
// public static $FLAG_ACTIVE= 30;
// public static $FLAG_EXPIRED = 40;
public static function statuses(){
return [
static::$STATUS_NOT_PAID => "Nincs fizetve",
static::$STATUS_PAID => "Fizetve",
];
}
public static function flags(){
return [
static::$FLAG_ACTIVE => "Aktív",
static::$FLAG_CANCELED => "Felbontva",
static::$FLAG_DELETED => "Törölve",
static::$FLAG_EXPIRED => "Lejárt",
];
}
public static function toStatusName($status){
return Helper::getArrayValue(self::statuses(), $status, "");
}
public static function toFlangName($flag){
return Helper::getArrayValue(self::flags(), $flag, "");
}
public function getStatusName() {
return self::toStatusName($this->status);
}
public function getFlagName() {
return self::toFlangName($this->flag);
}
public function isStatusNotPaid(){
return $this->status == static::$STATUS_NOT_PAID;
}
public function canCancel() {
return $this->flag == static::$FLAG_ACTIVE;
}
public function isFlagCanceled() {
return $this->flag == static::$FLAG_CANCELED;
}
public function isFlagDeleted() {
return $this->flag == static::$FLAG_DELETED;
}
public function isFlagActive() {
return $this->flag == static::$FLAG_ACTIVE;
}
}

96
common/models/DoorLog.php Normal file
View File

@ -0,0 +1,96 @@
<?php
namespace common\models;
use Yii;
/**
* This is the model class for table "door_log".
*
* @property integer $id_door_log
* @property integer $id_card
* @property integer $id_customer
* @property integer $id_key
* @property integer $direction
* @property integer $type
* @property string $created_at
*/
class DoorLog extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'door_log';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['id_card', 'id_customer', 'id_key', 'direction', 'type'], 'integer'],
[['created_at'], 'required'],
[['created_at'], 'safe']
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id_door_log' => Yii::t('common/door_log', 'Id Door Log'),
'id_card' => Yii::t('common/door_log', 'Bérlet kártya'),
'id_customer' => Yii::t('common/door_log', 'Vendég'),
'id_key' => Yii::t('common/door_log', 'Kulcs'),
'direction' => Yii::t('common/door_log', 'Irány'),
'type' => Yii::t('common/door_log', 'Típus'),
'created_at' => Yii::t('common/door_log', 'Időpont'),
];
}
public function getCustomer(){
return $this->hasOne( Customer::className(), ["id_customer" =>"id_customer" ] );
}
public function getCustomerName(){
$result = "";
if (isset($this->customer)){
$result = $this->customer->name;
}
return $result;
}
public function getCard(){
return $this->hasOne( Card::className(), ["id_card" =>"id_card" ] );
}
public function getCardNumber(){
$result = "";
if (isset($this->card)){
$result = $this->card->number;
}
return $result;
}
public function getKey(){
return $this->hasOne( Key::className(), ["id_key" =>"id_key" ] );
}
public function getKeyNumber(){
$result = "";
if (isset($this->key)){
$result = $this->key->number;
}
return $result;
}
public function getDirectionName(){
$result = "";
if (isset($this->direction)){
$result = $this->direction;
}
return $result;
}
}

View File

@ -29,6 +29,8 @@ class Product extends \common\models\BaseFitnessActiveRecord {
const STATUS_DELETED = 0;
const STATUS_ACTIVE = 10;
public static $BUNTETES = "buntetes3000";
/**
* @inheritdoc
*/

View File

@ -108,6 +108,9 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
public function getCustomer(){
return $this->hasOne( Customer::className(), ["id_customer" =>"id_customer" ] );
}
public function getContract(){
return $this->hasOne( Contract::className(), ["id_contract" =>"id_contract" ] );
}
public function getTicket(){
return $this->hasOne( Ticket::className(), ["id_ticket" =>"id_ticket", ] ) ;
@ -119,13 +122,27 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
->viaTable('ugiro_request_assignment', [ 'id_request' => 'id_ticket_installment_request' ]);
}
public function getTicketExpirationDate(){
return strtotime( $this->request_target_time_at . " +1 month -1 day") ;
}
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 isStatusCanceled(){
return $this->status == static::$STATUS_CANCELED ;
}
public function isStatusPending(){
return $this->status == static::$STATUS_PENDING ;
}
public function getIdGiro(){
$result = null;
$giro = $this->ugiro;
@ -143,36 +160,54 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
* @param boolean $partRequired ha igaz, a bérleten a part mezőt változtatjuk
* */
public function applyStatus($status, $partRequired = false, $visszajelzes = "", $comment = ""){
$contract = $this->contract;
$contract->part_required = $contract->part_required +1;
if ( $status == static::$STATUS_ACCEPTED || $status == static::$STATUS_ACCEPTED_MANUAL){
if ( !$this->isStatusAccepted() ){
$contract->part_paid = $contract->part_paid +1;
// $tranfer = $this->addTransfer();
$result = Transfer::sellContractTicket($contract, $this, Account::findOne(1), Transfer::STATUS_PAID, Transfer::PAYMENT_METHOD_TRANSFER);
$transfer = $result[0];
$ticket = $result[1];
$this->status = $status;
$tranfer = $this->addTransfer();
$this->id_transfer = $tranfer->id_transfer;
$this->id_transfer = $transfer->id_transfer;
$this->id_ticket = $ticket->id_ticket;
$this->request_processed_at = Helper::getDateTimeString();
$this->save(false);
$this->applyNewTicketState($partRequired);
$contract->save(false);
\Yii::info("Megbízás kifizetve: " . $this->id_ticket_installment_request);
// $this->applyNewTicketState($partRequired);
return true;
}else{
\Yii::info("Megbízás már ki volt fizetve: " . $this->id_ticket_installment_request);
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);
$contract->status = Contract::$STATUS_NOT_PAID;
$contract->save(false);
// $this->applyNewTicketState($partRequired);
\Yii::info("Megbízás visszautasítva: " . $this->id_ticket_installment_request);
return true;
}
}
protected function applyNewTicketState($partRequired = false){
if ( $partRequired ){
$this->ticket->setPartRequired($this);
}
$this->ticket->applyTicketInstallmentRequest($this);
$this->ticket->save(false);
}
// protected function applyNewTicketState($partRequired = false){
// if ( $partRequired ){
// $this->ticket->setPartRequired($this);
// }
// $this->ticket->applyTicketInstallmentRequest($this);
// $this->ticket->save(false);
// }
protected function addTransfer(){
@ -202,18 +237,18 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
* @param common\models\TicketType $type
* @return common\models\TicketInstallmentRequest[]
* */
public static function createInstallments($ticket,$type,$customer){
public static function createInstallments($ticket,$type,$customer,$contract){
$result = [];
if ( $type->isInstallment() ){
$count = $type->installment_count;
$discount = $ticket->discount;
$money = $type->price_brutto;
$money = $type->installment_money;
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);
$request = TicketInstallmentRequest::createInstallment($ticket, $type, $customer, $contract, $money, $ticketCreatedAt, $i);
$result[] = $request;
}
@ -221,9 +256,9 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
return $result;
}
public static function createInstallment($ticket,$type,$customer,$money,$ticketCreated,$index){
public static function createInstallment($ticket,$type,$customer,$contract,$money,$ticketCreated,$index){
$request = new TicketInstallmentRequest();
$request->id_ticket = $ticket->id_ticket;
// $request->id_ticket = $ticket->id_ticket;
$request->id_customer = $customer->id_customer;
$request->status = TicketInstallmentRequest::$STATUS_PENDING;
$request->priority = $index;
@ -231,6 +266,7 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
$request->request_processed_at = null;
$request->request_sent_at = null;
$request->money = $money;
$request->id_contract = $contract->id_contract;
return $request;
}
@ -242,8 +278,8 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
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',
TicketInstallmentRequest::$STATUS_ACCEPTED=> 'Sikeresen beszedés',
TicketInstallmentRequest::$STATUS_ACCEPTED_MANUAL=> 'Személyesen fizetve',
];
}
@ -257,4 +293,8 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
return $result;
}
public function getStatusName(){
return static::toStatusName($this->status);
}
}

View File

@ -13,6 +13,7 @@ use common\components\CustomerAwareBehavior;
use yii\db\Query;
use yii\db\Expression;
use common\components\RoleDefinition;
use common\components\Helper;
/**
* This is the model class for table "transfer".
@ -37,20 +38,15 @@ use common\components\RoleDefinition;
* @property string $paid_at
* @property integer $id_customer
*/
class Transfer extends \common\models\BaseFitnessActiveRecord
{
class Transfer extends \common\models\BaseFitnessActiveRecord {
const TYPE_PRODUCT = 10;
const TYPE_TICKET = 20;
const TYPE_MONEY_MOVEMENT_OUT = 30; // MONEY OUT FROM ACCOUNT
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_BANCCARD = 20; // BANKKÁRTYA
const PAYMENT_METHOD_TRANSFER = 30; // ÁTUTALÁS
@ -60,47 +56,72 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
/**
* @inheritdoc
*/
public function behaviors()
{
public function behaviors() {
return ArrayHelper::merge ( [
[
'class' => TimestampBehavior::className (),
'value' => function(){ return date('Y-m-d H:i:s' ,\Yii::$app->formatter->asTimestamp(date('Y-d-m h:i:s')) ); }
'value' => function () {
return date ( 'Y-m-d H:i:s', \Yii::$app->formatter->asTimestamp ( date ( 'Y-d-m h:i:s' ) ) );
}
],
[
'class' => DiscountAwareBehavior::className(),
'class' => DiscountAwareBehavior::className ()
],
[
'class' => CustomerAwareBehavior::className(),
],
'class' => CustomerAwareBehavior::className ()
]
], parent::behaviors () );
}
/**
* @inheritdoc
*/
public static function tableName()
{
public static function tableName() {
return 'transfer';
}
/**
* @inheritdoc
*/
public function rules()
{
public function rules() {
return [
[['id_discount', 'id_currency', 'id_object', 'status', 'type', 'item_price', 'count', 'money', 'money_currency', 'rate', 'id_user'], 'integer'],
[['created_at', 'updated_at'], 'safe'],
[['comment'], 'string', 'max' => 255]
[
[
'id_discount',
'id_currency',
'id_object',
'status',
'type',
'item_price',
'count',
'money',
'money_currency',
'rate',
'id_user'
],
'integer'
],
[
[
'created_at',
'updated_at'
],
'safe'
],
[
[
'comment'
],
'string',
'max' => 255
]
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
public function attributeLabels() {
return [
'id_transfer' => Yii::t ( 'common/transfer', 'Id Transfer' ),
'id_account' => Yii::t ( 'common/transfer', 'Account' ),
@ -124,50 +145,59 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
'types' => Yii::t ( 'common/transfer', 'Types' ),
'start' => Yii::t ( 'common/transfer', 'Start' ),
'end' => Yii::t ( 'common/transfer', 'End' ),
'payment_method' => Yii::t('common/transfer', 'Fizetési mód'),
'payment_method' => Yii::t ( 'common/transfer', 'Fizetési mód' )
];
}
public function getUser() {
return $this->hasOne( User::className(), ["id" =>"id_user" ] );
return $this->hasOne ( User::className (), [
"id" => "id_user"
] );
}
public function getProduct() {
return $this->hasOne( Product::className(), ["id_product" =>"id_product" ] )->via('sale');
return $this->hasOne ( Product::className (), [
"id_product" => "id_product"
] )->via ( 'sale' );
}
public function getMoneyMovement() {
return $this->hasOne( MoneyMovement::className(), ["id_money_movement" =>"id_object" ] );
return $this->hasOne ( MoneyMovement::className (), [
"id_money_movement" => "id_object"
] );
}
public function getTicket() {
return $this->hasOne( Ticket::className(), ["id_ticket" =>"id_object", ] ) ;
return $this->hasOne ( Ticket::className (), [
"id_ticket" => "id_object"
] );
}
public function getTicketType() {
return $this->hasOne( TicketType::className(), ["id_ticket_type" =>"id_ticket_type" ] )->via('ticket') ;
return $this->hasOne ( TicketType::className (), [
"id_ticket_type" => "id_ticket_type"
] )->via ( 'ticket' );
}
public function getAccount() {
return $this->hasOne( Account::className(), ["id_account" =>"id_account" ] ) ;
return $this->hasOne ( Account::className (), [
"id_account" => "id_account"
] );
}
public function getCurrency() {
return $this->hasOne( Currency::className(), ["id_currency" =>"id_currency" ] );
return $this->hasOne ( Currency::className (), [
"id_currency" => "id_currency"
] );
}
public function getUserSoldItem() {
return $this->hasOne( UserSoldItem::className(), ["id_transfer" =>"id_transfer" ] );
return $this->hasOne ( UserSoldItem::className (), [
"id_transfer" => "id_transfer"
] );
}
public function getCustomerCart() {
return $this->hasOne( ShoppingCart::className(), ["id_transfer" =>"id_transfer" ] );
return $this->hasOne ( ShoppingCart::className (), [
"id_transfer" => "id_transfer"
] );
}
public function getSale() {
return $this->hasOne( Sale::className(), ["id_sale" =>"id_object" ] ) ;
return $this->hasOne ( Sale::className (), [
"id_sale" => "id_object"
] );
}
public function getObjectName() {
$result = "";
if ($this->type == Transfer::TYPE_TICKET) {
@ -188,7 +218,6 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
return $result;
}
public function getProductName() {
$result = "";
$product = $this->product;
@ -198,7 +227,6 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
return $result;
}
public function getTicketName() {
$result = "";
$ticket = $this->ticket;
@ -217,7 +245,6 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
return $result;
}
public function getTransferTypeName() {
$result = "";
if ($this->type == Transfer::TYPE_TICKET) {
@ -229,8 +256,6 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
}
return $result;
}
public function getSaleName() {
$result = "";
$sale = $this->sale;
@ -239,9 +264,6 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
}
return $result;
}
public function getSignedMoney() {
$m = 1;
$result = $this->money;
@ -252,9 +274,7 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
$result = $result * $m;
return $result;
}
public static function toSignedMoney($dir, $money) {
$m = 1;
$result = $money;
@ -265,9 +285,7 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
$result = $result * $m;
return $result;
}
public function toProductSoldString() {
$s = "";
@ -281,12 +299,14 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
}
/**
*
* @param $account common\models\Account
* @param $discount common\models\Discount
* @param $currency common\models\Currency
* @param $product common\models\Product
* @param $customer common\models\Customer
* */
*
*/
public static function createProductTransfer($sale, $account, $discount, $currency, $count, $product, $status = Transfer::STATUS_PAID, $customer = null) {
$transfer = new Transfer ();
@ -325,11 +345,13 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
}
/**
*
* @param $account common\models\Account
* @param $discount common\models\Discount
* @param $currency common\models\Currency
* @param $moneyMovement common\models\MoneyMovement
* */
*
*/
public static function createMoneyMovementOutTransfer($account, $moneyMovement) {
$transfer = new Transfer ();
$transfer->payment_method = Transfer::PAYMENT_METHOD_CASH;
@ -353,11 +375,13 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
return $transfer;
}
/**
*
* @param $account common\models\Account
* @param $discount common\models\Discount
* @param $currency common\models\Currency
* @param $ticket common\models\Ticket
* */
*
*/
public static function createTicketTransfer($account, $discount, $currency, $count, $ticket, $status = Transfer::STATUS_NOT_PAID) {
$transfer = new Transfer ();
@ -389,9 +413,7 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
return $transfer;
}
public static function modelsToArray($transfers, $default = []) {
if ($transfers == null) {
return $default;
}
@ -428,19 +450,29 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
} else if ($transfer->type == Transfer::TYPE_MONEY_MOVEMENT_OUT) {
return "Pénzmozgás";
}
},
],
}
]
] );
}
public static function toPaymentMethodName($id) {
$result = "";
$arr = static::paymentMethods ();
if (array_key_exists ( $id, $arr )) {
$result = $arr [$id];
}
return $result;
}
public static function readUserSoldTransfers($user) {
$transfers = [ ];
$query = Transfer::find ();
$query->innerJoinWith ( 'userSoldItem' );
$query->andWhere(['user_sold_item.id_user' => $user->id ]);
$query->andWhere ( [
'user_sold_item.id_user' => $user->id
] );
$transfers = $query->all ();
return $transfers;
@ -451,18 +483,19 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
if (isset ( $customer )) {
$query = Transfer::find ();
$query->innerJoinWith ( 'customerCart' );
$query->andWhere(['shopping_cart.id_customer' => $customer->id_customer ]);
$query->andWhere ( [
'shopping_cart.id_customer' => $customer->id_customer
] );
$transfers = $query->all ();
}
return $transfers;
}
public static function types() {
return [
self::TYPE_MONEY_MOVEMENT_OUT => Yii::t ( 'common/transfer', 'Pénzmozgás' ),
self::TYPE_PRODUCT => Yii::t ( 'common/transfer', 'Product' ),
self::TYPE_TICKET => Yii::t('common/transfer','Ticket'),
self::TYPE_TICKET => Yii::t ( 'common/transfer', 'Ticket' )
];
}
public static function paymentMethods() {
@ -470,15 +503,16 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
self::PAYMENT_METHOD_CASH => Yii::t ( 'common/transfer', 'Készpénz' ),
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_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'),
self::STATUS_STORNO => Yii::t ( 'common/transfer', 'Törölve' )
];
}
public function getStatusName() {
@ -497,7 +531,6 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
}
return $status;
}
public function beforeDelete() {
parent::beforeDelete ();
if ($this->type == Transfer::TYPE_TICKET) {
@ -518,14 +551,20 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
$sale->delete ();
}
ShoppingCart::deleteAll(['id_transfer' =>$this->id_transfer]);
UserSoldItem::deleteAll(['id_transfer' =>$this->id_transfer]);
ShoppingCart::deleteAll ( [
'id_transfer' => $this->id_transfer
] );
UserSoldItem::deleteAll ( [
'id_transfer' => $this->id_transfer
] );
return true;
}
/**
* @param string $mode The mode to load
*
* @param string $mode
* The mode to load
* Available modes
* <ul>
* <li>
@ -552,36 +591,48 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
* </li>
* </ul>
*
* */
*
*/
public static function mkTotalQuery($mode, $start, $end, $idUser, $types, $idAccount) {
$query = new Query ();
$query->addSelect ( [
new Expression ( 'transfer.id_account as account' ),
new Expression ( ' COALESCE(sum( ( case when direction = ' . Transfer::DIRECTION_OUT . ' then -1 else 1 end )* transfer.money ),0) as money /** --' . $mode . '*/' )
]);
]
);
$query->from ( 'transfer' );
if (! RoleDefinition::isAdmin ()) {
$query->innerJoin ( "user_account_assignment", 'transfer.id_account = user_account_assignment.id_account' );
$query->andWhere(['user_account_assignment.id_user' => Yii::$app->user->id ]);
$query->andWhere ( [
'user_account_assignment.id_user' => Yii::$app->user->id
] );
}
$query->innerJoin ( "account", 'transfer.id_account = account.id_account' );
$query->andWhere(['account.type' => Account::TYPE_ALL]);
$query->andFilterWhere([
'transfer.id_account' => $idAccount,
$query->andWhere ( [
'account.type' => Account::TYPE_ALL
] );
$query->andFilterWhere(['transfer.id_user' => $idUser]);
$query->andFilterWhere ( [
'transfer.id_account' => $idAccount
] );
$query->andFilterWhere(['in' ,'transfer.type', $types]);
$query->andFilterWhere ( [
'transfer.id_user' => $idUser
] );
$query->andWhere(['not in','transfer.status', Transfer::STATUS_STORNO]);
$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 );
@ -601,33 +652,62 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
$query->groupBy ( 'transfer.id_account' );
return $query;
}
public static function notInInterval($query, $field, $start, $end) {
$query->andFilterWhere( ['or', [ '<', $field , isset( $start ) ? $start : '1900-01-01' ] ,[ '>=' , $field , isset($end) ? $end : '3000-01-01' ] ] );
$query->andFilterWhere ( [
'or',
[
'<',
$field,
isset ( $start ) ? $start : '1900-01-01'
],
[
'>=',
$field,
isset ( $end ) ? $end : '3000-01-01'
]
] );
}
public static function notPaid($query, $field, $start, $end) {
$query->andFilterWhere( ['or', [ '<', $field , isset( $start ) ? $start : '1900-01-01' ] ,[ '>=' , $field , isset($end) ? $end : '3000-01-01' ] ,[ "transfer.status" => Transfer::STATUS_NOT_PAID ] ] );
$query->andFilterWhere ( [
'or',
[
'<',
$field,
isset ( $start ) ? $start : '1900-01-01'
],
[
'>=',
$field,
isset ( $end ) ? $end : '3000-01-01'
],
[
"transfer.status" => Transfer::STATUS_NOT_PAID
]
] );
}
public static function inInterval($query, $field, $start, $end) {
$query->andFilterWhere([ '>=', $field , $start ] );
$query->andFilterWhere([ '<' , $field , $end ] );
$query->andFilterWhere ( [
'>=',
$field,
$start
] );
$query->andFilterWhere ( [
'<',
$field,
$end
] );
}
/**
*
* Parse query results so, that all available account will be display, even then , if $queryResult does not contain any result for the given account
*
* @param mixed $queryResult an array, wchic contains items. each item has to key - value pairs: [ id_account => 0, money => 0 ]
* */
* @param mixed $queryResult
* an array, wchic contains items. each item has to key - value pairs: [ id_account => 0, money => 0 ]
*
*/
public static function mkTotalsResultWithAllAvailableAccount($queryResult, $accounts, $accountMap, $idAccount) {
$totals = [ ];
$totals ['total'] = 0;
@ -641,7 +721,7 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
$accountTotal = [
'id_account' => $account->id_account,
'label' => $account->name,
'money' => 0,
'money' => 0
];
$item = self::findByAccountInQueryResult ( $queryResult, $account );
@ -655,7 +735,6 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
}
return $totals;
}
public static function findByAccountInQueryResult($queryResult, $account) {
$result = null;
foreach ( $queryResult as $item ) {
@ -666,8 +745,9 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
return $result;
}
/**create and execute a "total" query*/
/**
* create and execute a "total" query
*/
public static function exTotalQuery($mode, $start, $end, $idUser, $types, $idAccount) {
$query = self::mkTotalQuery ( $mode, $start, $end, $idUser, $types, $idAccount );
$command = $query->createCommand ();
@ -677,7 +757,7 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
/**
* find all transfers which were paid in the period
* */
*/
public static function mkPaidAtTotals($start, $end, $idUser, $types, $idAccount, $accounts, $accountMap) {
$result = [ ];
$queryResult = self::exTotalQuery ( 'paid_at', $start, $end, $idUser, $types, $idAccount );
@ -685,7 +765,9 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
return $result;
}
/**find all transfers in the period ( doesn't matter if paid or not )*/
/**
* find all transfers in the period ( doesn't matter if paid or not )
*/
public static function mkCreatedAtTotals($start, $end, $idUser, $types, $idAccount, $accounts, $accountMap) {
$result = [ ];
$queryResult = self::exTotalQuery ( 'created_at', $start, $end, $idUser, $types, $idAccount );
@ -693,7 +775,9 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
return $result;
}
/**find transfers which were created but not paid in the period*/
/**
* find transfers which were created but not paid in the period
*/
public static function mkCreatedAtNotPaidTotals($start, $end, $idUser, $types, $idAccount, $accounts, $accountMap) {
$result = [ ];
$queryResult = self::exTotalQuery ( 'created_at_not_paid', $start, $end, $idUser, $types, $idAccount );
@ -703,8 +787,7 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
/**
* find transfers which were created and paid in the period
*
* */
*/
public static function mkCreatedAtPaidTotals($start, $end, $idUser, $types, $idAccount, $accounts, $accountMap) {
$result = [ ];
$queryResult = self::exTotalQuery ( 'created_at_paid', $start, $end, $idUser, $types, $idAccount );
@ -713,17 +796,14 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
}
/**
*
* find transfers, where depth was paid
* */
*/
public static function mkPaidAtNotCreatedAtPaidTotals($start, $end, $idUser, $types, $idAccount, $accounts, $accountMap) {
$result = [ ];
$queryResult = self::exTotalQuery ( 'paid_at_not_created_at', $start, $end, $idUser, $types, $idAccount );
$result = self::mkTotalsResultWithAllAvailableAccount ( $queryResult, $accounts, $accountMap, $idAccount );
return $result;
}
public static function mkTotals($start, $end, $idUser, $types, $idAccount, $accounts, $accountMap) {
$result = [ ];
@ -735,41 +815,85 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
return $result;
}
public static function readPaid($start, $end, $idUser) {
$query = (new \yii\db\Query ());
$query->select(['coalesce(sum( case when transfer.direction = ' . Transfer::DIRECTION_IN. ' then transfer.money else -1 * transfer.money end ),0) AS transfer_money']);
$query->select ( [
'coalesce(sum( case when transfer.direction = ' . Transfer::DIRECTION_IN . ' then transfer.money else -1 * transfer.money end ),0) AS transfer_money'
] );
$query->from ( 'transfer' );
$query->innerJoin ( "account", "account.id_account = transfer.id_account" );
$query->andWhere(['transfer.id_user' => $idUser ]);
$query->andWhere ( [
'transfer.id_user' => $idUser
] );
$created_condition = ['and',[ '>=', 'transfer.created_at', $start ] ,[ '<', 'transfer.created_at', $end ] ];
$paid_condition = ['and',[ '>=', 'transfer.paid_at', $start] ,[ '<', 'transfer.paid_at', $end ] ];
$created_condition = [
'and',
[
'>=',
'transfer.created_at',
$start
],
[
'<',
'transfer.created_at',
$end
]
];
$paid_condition = [
'and',
[
'>=',
'transfer.paid_at',
$start
],
[
'<',
'transfer.paid_at',
$end
]
];
$query->andFilterWhere(['or' , $created_condition , $paid_condition]);
$query->andWhere(['transfer.status' => Transfer::STATUS_PAID]);
$query->andWhere(['account.type' => Account::TYPE_ALL]);
$query->andWhere(['transfer.payment_method' => Transfer::PAYMENT_METHOD_CASH]);
$query->andFilterWhere ( [
'or',
$created_condition,
$paid_condition
] );
$query->andWhere ( [
'transfer.status' => Transfer::STATUS_PAID
] );
$query->andWhere ( [
'account.type' => Account::TYPE_ALL
] );
$query->andWhere ( [
'transfer.payment_method' => Transfer::PAYMENT_METHOD_CASH
] );
return $query->scalar ();
}
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 ]
);
if ( $ticket->part == 0 ){
TicketInstallmentRequest::updateAll ( [
'status' => TicketInstallmentRequest::$STATUS_CANCELED
], [
'id_ticket' => $this->ticket->id_ticket
] );
}
// storno contract
} else if ($this->type == Transfer::TYPE_PRODUCT) {
$sale = $this->sale;
$product = $this->sale->product;
$product->stock = $product->stock + $this->count;
$product->save ( false );
$sale->status = Sale::STATUS_DELETED;
$sale->save ( false );
} else if ($this->type == Transfer::TYPE_MONEY_MOVEMENT_OUT) {
@ -778,5 +902,115 @@ class Transfer extends \common\models\BaseFitnessActiveRecord
$mm->save ( false );
}
}
public function payout() {
if ($this->status != Transfer::STATUS_NOT_PAID) {
return false;
}
$this->status = Transfer::STATUS_PAID;
$this->paid_at = Helper::getDateTimeString ();
$this->paid_by = \Yii::$app->user->id;
ShoppingCart::deleteAll ( [
'id_transfer' => $this->id_transfer
] );
UserSoldItem::deleteAll ( [
'id_transfer' => $this->id_transfer
] );
return $this->save ();
}
public static function payoutAll($id_user, $id_array) {
ShoppingCart::deleteAll ( [
'in',
'id_transfer',
$id_array
] );
UserSoldItem::deleteAll ( [
'in',
'id_transfer',
$id_array
] );
Transfer::updateAll ( [
'status' => Transfer::STATUS_PAID,
'paid_at' => Helper::getDateTimeString (),
'paid_by' => $id_user
], [
[
'in',
'id_transfer',
$id_array
],
[
'in',
'status',
[
Transfer::STATUS_NOT_PAID
]
]
] );
}
/**
*
* @param common\models\Contract $contract
* @param common\models\TicketInstallmentRequest $request
* @param common\models\Account $account
* @param int $transferStatus
*
*
*/
public static function sellContractTicket($contract, $request, $account, $transferStatus, $paymentMethod, $addToCustomerCart = false) {
$ticketType = $contract->ticketType;
$customer = $contract->customer;
$card = $customer->card;
$ticket = new Ticket ();
$ticket->id_user = \Yii::$app->user->id;
$ticket->id_ticket_type = $ticketType->id_ticket_type; // save to contract
$ticket->id_account = $account->id_account;
$ticket->id_discount = null; // contract.id_discount
$ticket->start = $request->request_target_time_at;
$ticket->end = date( 'Y-m-d', strtotime( $request->request_target_time_at . " +1 month -1 day"));
$ticket->max_usage_count = $ticketType->max_usage_count;
$ticket->usage_count = 0;
$ticket->status = Ticket::STATUS_ACTIVE;
$ticket->price_brutto = $request->money;
$ticket->id_card = $card->id_card;
$ticket->part = $request->priority;
$ticket->id_contract = $contract->id_contract;
$ticket->save ( false );
$transfer = new Transfer ();
$transfer->status = $transferStatus;
$transfer->type = Transfer::TYPE_TICKET;
$transfer->direction = Transfer::DIRECTION_IN;
$transfer->id_object = $ticket->id_ticket;
$transfer->item_price = $ticketType->price_brutto;
$transfer->money = $request->money;
$transfer->id_account = $account->id_account;
$transfer->count = 1;
if ($transferStatus == Transfer::STATUS_PAID) {
$transfer->paid_at = date ( 'Y-m-d H:i:s' );
$transfer->paid_by = \Yii::$app->user->id;
}
$transfer->payment_method = $paymentMethod;
$transfer->comment = "Szerződéses bérlet létrehozás";
$transfer->id_user = \Yii::$app->user->id;
$transfer->id_customer = $customer->id_customer;
$transfer->save (false);
if ( $addToCustomerCart == true ){
$cart = new ShoppingCart();
$cart->id_customer = $customer->id_customer;
$cart->id_transfer = $transfer->id_transfer;
$cart->save(false);
}
return [$transfer,$ticket];
}
}

View File

@ -271,7 +271,7 @@ class TransferSaleSearch extends Transfer
protected function readProducts(){
$query = (new \yii\db\Query());
$query->select([ 'transfer.id_transfer as id_transfer', 'customer.name as customer_name' ,'user.username as user_name','account.name as account_name' , 'product_category.name as product_category_name', 'product.name as product_name', 'transfer.money AS product_money', 'transfer.count AS product_count', 'transfer.money AS product_money','transfer.item_price AS product_item_price', 'transfer.created_at as product_created_at','transfer.paid_at as product_paid_at']);
$query->select([ 'transfer.payment_method as transfer_payment_method', 'transfer.id_transfer as id_transfer', 'customer.name as customer_name' ,'user.username as user_name','account.name as account_name' , 'product_category.name as product_category_name', 'product.name as product_name', 'transfer.money AS product_money', 'transfer.count AS product_count', 'transfer.money AS product_money','transfer.item_price AS product_item_price', 'transfer.created_at as product_created_at','transfer.paid_at as product_paid_at']);
$query->from('transfer');
$query->andWhere(['transfer.type' => Transfer::TYPE_PRODUCT]);
$query->innerJoin("sale", "sale.id_sale = transfer.id_object");

View File

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

View File

@ -0,0 +1,50 @@
<?php
use yii\db\Schema;
use yii\db\Migration;
class m160124_135213_add__table__contract extends Migration
{
public function up()
{
$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('{{%contract}}', [
'id_contract' => $this->primaryKey(),
'id_user' => $this->integer(11),
'id_customer' => $this->integer(11),
'status' => $this->integer(11),
'flag' => $this->integer(11),
'part_paid' => $this->integer(11),
'part_count' => $this->integer(11),
'part_required' => $this->integer(11),
'expired_at' => $this->dateTime()->notNull(),
'created_at' => $this->dateTime()->notNull(),
'updated_at' => $this->dateTime()->notNull(),
], $tableOptions);
$this->addColumn("ticket", "id_contract", "int");
$this->addColumn("ticket_installment_request", "id_contract", "int");
}
public function down()
{
}
/*
// Use safeUp/safeDown to run migration code within a transaction
public function safeUp()
{
}
public function safeDown()
{
}
*/
}

View File

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

View File

@ -0,0 +1,44 @@
<?php
use yii\db\Schema;
use yii\db\Migration;
use common\models\Product;
use common\models\ProductCategory;
class m160124_235346_add_product_buntetes extends Migration
{
public function up()
{
$productCategory = new ProductCategory();
$productCategory->name = "Büntetések";
$productCategory->status = ProductCategory::STATUS_ACTIVE;
$productCategory->save(false);
$product = new Product();
$product->name = "Büntetés Szerződés 3000 ft";
$product->product_number = "buntetes3000";
$product->id_account = 1;
$product->purchase_price = 0;
$product->sale_price = 3000;
$product->id_product_category = $productCategory->id_product_category;
$product->save(false);
}
public function down()
{
}
/*
// Use safeUp/safeDown to run migration code within a transaction
public function safeUp()
{
}
public function safeDown()
{
}
*/
}

View File

@ -0,0 +1,44 @@
<?php
use yii\db\Schema;
use yii\db\Migration;
class m160125_094224_add__table__door_log extends Migration
{
public function up()
{
$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('{{%door_log}}', [
'id_door_log' => $this->primaryKey(),
'id_card' => $this->integer(11),
'id_customer' => $this->integer(11),
'id_key' => $this->integer(11),
'direction' => $this->integer(11),
'type' => $this->integer(11),
'created_at' => $this->dateTime()->notNull(),
], $tableOptions);
}
public function down()
{
echo "m160125_094224_add__table__door_log cannot be reverted.\n";
return false;
}
/*
// Use safeUp/safeDown to run migration code within a transaction
public function safeUp()
{
}
public function safeDown()
{
}
*/
}

View File

@ -0,0 +1,28 @@
<?php
/**
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
namespace frontend\assets;
use yii\web\AssetBundle;
/**
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
*/
class TransferUserCartAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
];
public $js = [
'js/transfer.usercart.js',
];
public $depends = [
'frontend\assets\AppAsset',
];
}

View File

@ -0,0 +1,294 @@
<?php
namespace frontend\controllers;
use Yii;
use common\models\Contract;
use frontend\models\ContractSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use common\models\Card;
use common\models\TicketInstallmentRequest;
use common\models\Ticket;
use common\models\Transfer;
use common\models\Account;
use common\components\Helper;
use common\models\Sale;
use common\models\Product;
use common\models\ShoppingCart;
/**
* ContractController implements the CRUD actions for Contract model.
*/
class ContractController extends Controller {
public function behaviors() {
return [
'verbs' => [
'class' => VerbFilter::className (),
'actions' => [
'delete' => [
'post'
],
'payout' => [
'post'
],
'cancel' => [
'post'
],
]
]
];
}
/**
* Lists all Contract models.
*
* @return mixed
*/
public function actionIndex($id_card) {
$card = Card::findOne ( $id_card );
if (! isset ( $card ))
throw new NotFoundHttpException ( 'A bérlet nem található' );
$searchModel = new ContractSearch ();
$searchModel->card = $card;
$searchModel->customer = $card->customer;
$dataProvider = $searchModel->search ( Yii::$app->request->queryParams );
return $this->render ( 'index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider
] );
}
/**
* Displays a single Contract model.
*
* @param integer $id
* @return mixed
*/
public function actionView($id) {
$model = $this->findModel ( $id );
$customer = $model->customer;
$card = $customer->card;
$installments = TicketInstallmentRequest::find ()->andWhere ( [
'id_contract' => $model->id_contract
] )->orderBy ( [
'ticket_installment_request.priority' => SORT_ASC
] )->all ();
return $this->render ( 'view', [
'model' => $model,
'intstallments' => $installments,
'card' => $card
] );
}
/**
* Creates a new Contract model.
* If creation is successful, the browser will be redirected to the 'view' page.
*
* @return mixed
*/
public function actionCreate() {
$model = new Contract ();
if ($model->load ( Yii::$app->request->post () ) && $model->save ()) {
return $this->redirect ( [
'view',
'id' => $model->id_contract
] );
} else {
return $this->render ( 'create', [
'model' => $model
] );
}
}
/**
* Updates an existing Contract 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_contract
] );
} else {
return $this->render ( 'update', [
'model' => $model
] );
}
}
/**
* Deletes an existing Contract 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'
] );
}
/**
* EGY RÉSZLET KIFIZETÉSE
*/
public function actionPayout($id) {
$part = TicketInstallmentRequest::findOne ( $id );
$contract = $part->contract;
$customer = $contract->customer;
$card = $customer->card;
$connection = \Yii::$app->db;
$transaction = $connection->beginTransaction ();
try {
$result = Transfer::sellContractTicket ( $contract, $part, Account::readDefaultObject (), Transfer::STATUS_NOT_PAID, Transfer::PAYMENT_METHOD_CASH, true );
$transfer = $result [0];
$ticket = $result[1];
if ( $part->status != TicketInstallmentRequest::$STATUS_REJECTED ){
$contract->part_required = $contract->part_required +1;
}
$contract->part_paid = $contract->part_paid +1;
if ( $contract->part_paid >= $contract->part_required){
$contract->status = Contract::$STATUS_PAID;
}else{
$contract->status = Contract::$STATUS_NOT_PAID;
}
$contract->save(false);
$part->status = TicketInstallmentRequest::$STATUS_ACCEPTED_MANUAL;
$part->id_transfer = $transfer->id_transfer;
$part->request_processed_at = Helper::getDateTimeString ();
$part->id_ticket = $ticket->id_ticket;
$part->save ( false );
$transaction->commit ();
\Yii::$app->session->setFlash ( 'success', "Részlet a bevásárló kosárba helyezve!" );
} catch ( Exception $e ) {
$transaction->rollback ();
Yii::error ( "Nem sikerült a kifizetés." );
}
return $this->redirect ( [
'view',
'id' => $contract->id_contract
] );
}
/**
* EGY RÉSZLET KIFIZETÉSE
*/
public function actionCancel($id) {
$contract = $this->findModel ( $id );
$customer = $contract->customer;
$card = $customer->card;
if ($contract->canCancel ()) {
$connection = \Yii::$app->db;
$transaction = $connection->beginTransaction ();
try {
$contract->flag = Contract::$FLAG_CANCELED;
$contract->save ();
$requests = $contract->requests;
$buntetes = 0;
foreach ( $requests as $request ) {
/** @var common\models\TicketInstallmentRequest $request*/
if ($request->isStatusAccepted ()) {
$buntetes = $buntetes + 1;
} else {
$request->status = TicketInstallmentRequest::$STATUS_CANCELED;
$request->save ( false );
}
}
$productBuntetes = Product::find ()->andWhere ( [
'product_number' => Product::$BUNTETES
] )->one ();
if (isset ( $productBuntetes )) {
if ($buntetes > 0) {
$sale = new Sale ();
$sale->id_account = Account::readDefault ();
$sale->id_product = $productBuntetes->id_product;
$sale->status = Sale::STATUS_NOT_PAID;
$sale->type = Sale::TYPE_PRODUCT;
$sale->item_price = $productBuntetes->sale_price;
$sale->count = $buntetes;
$sale->money = $buntetes * $sale->item_price;
$sale->id_user = \Yii::$app->user->id;
$sale->save ( false );
$transfer = Transfer::createProductTransfer ( $sale, Account::readDefaultObject (), null, null, $sale->count, $productBuntetes, Transfer::STATUS_NOT_PAID, $customer );
$transfer->payment_method = Transfer::PAYMENT_METHOD_CASH;
$transfer->id_user = Yii::$app->user->id;
$transfer->save ( false );
$cart = new ShoppingCart ();
$cart->id_customer = $customer->id_customer;
$cart->id_transfer = $transfer->id_transfer;
$cart->save ( false );
}
}
$transaction->commit ();
\Yii::$app->session->setFlash ( 'success', "Szerződés felbontva!" );
return $this->redirect ( [
'product/sale',
'number' => $card->number
] );
} catch ( Exception $e ) {
$transaction->rollback ();
Yii::error ( "Szerződés felbontása nem sikerült!" );
}
}else{
\Yii::$app->session->setFlash ( 'danger', "Szerződést nem lehet felbontani!" );
}
return $this->redirect ( [
'view',
'id' => $contract->id_contract
] );
}
/**
* Finds the Contract model based on its primary key value.
* If the model is not found, a 404 HTTP exception will be thrown.
*
* @param integer $id
* @return Contract the loaded model
* @throws NotFoundHttpException if the model cannot be found
*/
protected function findModel($id) {
if (($model = Contract::findOne ( $id )) !== null) {
return $model;
} else {
throw new NotFoundHttpException ( 'The requested page does not exist.' );
}
}
}

View File

@ -34,7 +34,7 @@ class CustomerController extends Controller
],
'access' => [
'class' => \yii\filters\AccessControl::className(),
'only' => ['create', 'update','reception'],
'only' => ['create', 'update','reception','contract'],
'rules' => [
// allow authenticated users
[
@ -199,6 +199,18 @@ class CustomerController extends Controller
}
}
public function actionContract($id){
$model = $this->findModel($id);
$mpdf=new \mPDF('utf-8', 'A4-L');
$mpdf->WriteHTML($this->renderPartial('_contract', [
'model' => $model,
]));
$mpdf->Output('szerzodes.pdf', 'D');
exit;
}
/**
* Deletes an existing Customer model.
* If deletion is successful, the browser will be redirected to the 'index' page.

View File

@ -19,6 +19,7 @@ use common\models\ProductCategory;
use common\models\Product;
use common\models\TransferTicketSearch;
use common\models\TicketType;
use frontend\models\UserCartForm;
/**
* TransferController implements the CRUD actions for Transfer model.
@ -337,4 +338,15 @@ class TransferController extends Controller
exit;
}
public function actionUserCart(){
$model = new UserCartForm();
if ($model->load(Yii::$app->request->post()) && $model->payout()) {
return $this->redirect(['user-cart']);
}
$model->run();
return $this->render("usercart",[ 'model' => $model]);
}
}

View File

@ -0,0 +1,88 @@
<?php
namespace frontend\models;
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use common\models\Contract;
/**
* ContractSearch represents the model behind the search form about `common\models\Contract`.
*/
class ContractSearch extends Contract
{
public $card;
public $customer;
public $parts;
/**
* @inheritdoc
*/
public function rules()
{
return [
[['id_contract', 'id_user', 'id_customer', 'status', 'flag', 'part_paid', 'part_count', 'part_required'], 'integer'],
[['expired_at', 'created_at', 'updated_at'], 'safe'],
];
}
/**
* @inheritdoc
*/
public function scenarios()
{
// bypass scenarios() implementation in the parent class
return Model::scenarios();
}
/**
* Creates data provider instance with search query applied
*
* @param array $params
*
* @return ActiveDataProvider
*/
public function search($params)
{
$query = Contract::find();
$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->andWhere([
'id_customer' => $this->customer->id_customer
]);
$query->andFilterWhere([
// 'id_contract' => $this->id_contract,
// 'id_user' => $this->id_user,
// 'id_customer' => $this->id_customer,
// 'status' => $this->status,
// 'flag' => $this->flag,
// 'part_paid' => $this->part_paid,
// 'part_count' => $this->part_count,
// 'part_required' => $this->part_required,
// 'expired_at' => $this->expired_at,
// 'created_at' => $this->created_at,
// 'updated_at' => $this->updated_at,
]);
return $dataProvider;
}
}

View File

@ -56,12 +56,17 @@ class KeyToggleForm extends Model
public function assign(){
if ( isset($this->card) && isset($this->customer) ){
$assignments = CardKeyAssignment::find()->andWhere(['id_card' => $this->card->id_card])->all();
if ( count($assignments) > 0 ){
\Yii::$app->session->setFlash ( 'danger', 'A vendégnél egyszerre csak egy kulcs lehet' );
}else{
$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!' );
}

View File

@ -12,6 +12,8 @@ use common\models\CardSearch;
use common\models\AccountState;
use common\models\Key;
use common\models\CardKeyAssignment;
use common\models\Contract;
use yii\db\Expression;
/**
* ContactForm is the model behind the contact form.
@ -26,6 +28,7 @@ class ReceptionForm extends Model
public $cardSearchModel;
public $lastCassaState;
public $keys;
public $contract;
/**
* @inheritdoc
*/
@ -73,6 +76,7 @@ class ReceptionForm extends Model
$this->customer = $this->card->customer;
$this->readValidTickets();
$this->readAssignedKeys();
$this->readContract();
}
$defaultAccount = Account::readDefault();
@ -104,6 +108,18 @@ class ReceptionForm extends Model
}
}
public function readContract(){
if ($this->isCardWithCustomer()){
$query = Contract::find();
$query->andWhere(['id_customer' => $this->customer->id_customer ]);
$query->andWhere([ '>=' ,'expired_at' , new Expression("now()") ]);
$query->andWhere(["not in" , 'flag' , [Contract::$FLAG_DELETED ]]);
$this->contract = $query->one();
}
}
public function hasCassa(){
return isset($this->lastCassaState) ;
}

View File

@ -10,6 +10,8 @@ use common\models\UserSoldItem;
use common\models\ShoppingCart;
use yii\base\Object;
use common\models\TicketInstallmentRequest;
use common\models\Contract;
use common\components\Helper;
/**
* @property $cart string name of cart, into we put the ticket
@ -103,6 +105,17 @@ class TicketCreate extends Ticket{
$this->addError($attribute,"Vendég bankszámlaszáma nem 16 vagy 24 hosszú");
return;
}
//find
$query = Contract::find();
$query->andWhere( [ 'id_customer' => $this->customer->id_customer ]);
$query->andWhere( [ '>', 'expired_at' , Helper::getDateTimeString() ]);
$query->andWhere( [ 'not in', 'flag', [Contract::$FLAG_DELETED ] ]);
$contracts = $query->all();
if ( count($contracts) > 0 ){
$this->addError($attribute,"A vendégnek már van érvényes vagy felbontott szerződése!");
}
}
}
}
@ -142,15 +155,28 @@ class TicketCreate extends Ticket{
$this->addTransfer();
$this->appendToUserCart();
$this->appendToCustomerCart();
$this->addTicketInstallmentRequests($insert);
$this->addContract($insert);
}
public function addTicketInstallmentRequests($insert){
public function addContract($insert){
if ($insert){
$ticketType = TicketType::findOne($this->id_ticket_type);
if ( isset($ticketType) && $ticketType->isInstallment() ){
$requests = TicketInstallmentRequest::createInstallments($this, $ticketType, $this->customer);
$contract = new Contract();
$contract->id_customer = $this->customer->id_customer;
$contract->id_user = \Yii::$app->user->id;
$contract->status = Contract::$STATUS_PAID;
$contract->flag = Contract::$FLAG_ACTIVE;
$contract->part_count = $ticketType->installment_count;
$contract->part_paid = 0;
$contract->part_required = 0;
$contract->expired_at = date('Y-m-d', strtotime("today +12 month -1 day"));
$contract->id_ticket_type = $this->id_ticket_type;
$contract->save();
$requests = TicketInstallmentRequest::createInstallments($this, $ticketType, $this->customer,$contract);
foreach ($requests as $request){
$request->save(false);
}

View File

@ -0,0 +1,103 @@
<?php
namespace frontend\models;
use Yii;
use yii\base\Model;
use common\models\Transfer;
/**
* ContactForm is the model behind the contact form.
*/
class UserCartForm extends Model
{
public $items = [];
public $transfers;
public $payment_method;
public $money = 0;
public $selected = [];
/**
* @inheritdoc
*/
public function rules()
{
return [
['selected', 'each', 'rule' => ['integer']],
[['money' ,'payment_method'],'integer'],
[['payment_method'],'validatePaymentMethod'],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
];
}
public function validatePaymentMethod( $attribute, $params ){
if ( !empty($this->payment_method)){
// echo $this->payment_method;
$arr = Transfer::paymentMethods();
if ( !array_key_exists($this->payment_method, $arr) ){
$this->addError($attribute, "Érvénytelen fizetési mód");
}
}
}
public function payout(){
$valid = $this->validate();
if ( !$valid ){
return false;
}
if ( isset($this->selected) && count($this->selected) > 0 ){
$items = $this->loadTransfers($this->selected);
if ( count($items) == count($this->selected) ){
foreach ($items as $item){
$this->changePaymentMethod($item);
$item->payout();
}
\Yii::$app->session->setFlash('success', 'Kifizetve');
return true;
}else{
\Yii::$app->session->setFlash('danger', 'Időközben változtak a kosrában található tételek');
return false;
}
}else{
\Yii::$app->session->setFlash('danger', 'Nem választott ki terméket');
return false;
}
}
public function changePaymentMethod($item){
if ( !empty($this->payment_method)){
$item->payment_method = $this->payment_method;
}
}
public function run(){
$this->readTransfers();
}
public function readTransfers( ) {
$this->transfers = $this->loadTransfers();
}
public function loadTransfers($id_tranfer_array = null){
$query = Transfer::find();
$query->innerJoin("user_sold_item", "user_sold_item.id_transfer = transfer.id_transfer");
$query->andWhere(["user_sold_item.id_user" => \Yii::$app->user->id]);
if (isset($id_tranfer_array)){
$query->andWhere(["in", "transfer.id_transfer" , $id_tranfer_array ]);
}
return $query->all();
}
}

View File

@ -45,7 +45,7 @@ $this->params['breadcrumbs'][] = $this->title;
['class' => 'yii\grid\ActionColumn',
'template' => '{ticket} {ticket_history} {keys}',
'template' => '{ticket} {ticket_history} {keys} {contract}',
'buttons' => [
'ticket' => function ($url, $model, $key) {
return Html::a('Új bérlet', $url, ['class'=> 'btn btn-xs btn-success' ]) ;
@ -56,6 +56,9 @@ $this->params['breadcrumbs'][] = $this->title;
'keys' => function ($url, $model, $key) {
return Html::a('Kulcsok', $url, ['class'=> 'btn btn-xs btn-success' ]) ;
},
'contract' => function ($url, $model, $key) {
return Html::a('Szerződések', $url, ['class'=> 'btn btn-xs btn-success' ]) ;
},
],
'urlCreator' => function ($action, $model, $key, $index){
$url = "";
@ -65,6 +68,8 @@ $this->params['breadcrumbs'][] = $this->title;
$url = Url::to(['ticket/index','number' => $model['card_number']]);
}else if ( 'keys' == $action ){
$url = Url::to(['key/index','id_card' => $model['card_id_card']]);
}else if ( 'contract' == $action ){
$url = Url::to(['contract/index','id_card' => $model['card_id_card']]);
}
return $url;
}

View File

@ -54,6 +54,20 @@ $card = $model->card;
<?php echo HtmlHelper::mkReceptionBtn($model, Yii::t( 'frontend/transfer', 'Termékeladás'), 'product/sale')?>
</div>
</div>
<?php
if ( $model->isCustomerWithTicket() ){
?>
<div class='row'>
<div class='col-md-12'>
<?php echo Html::a( "Éves szerződés letöltése", [ 'customer/contract' , 'id' => $model->customer->id_customer ]);?>
</div>
</div>
<?php
}
?>
<div class='row'>
<div class='col-md-12'>
&nbsp;

View File

@ -3,6 +3,8 @@ use yii\base\Object;
use common\models\Ticket;
use frontend\model\ReceptionForm;
use yii\helpers\Html;
use yii\helpers\Url;
use common\models\Contract;
/* @var $this yii\web\View */
/* @var $model frontend\model\ReceptionForm */
@ -57,4 +59,37 @@ if ( isset($model->card)){
echo Html::endTag("div");
}
if ( isset($model->contract)){
/** @var common\models\Contract $contract*/
$contract = $model->contract;
if ( $contract->isFlagActive() ){
if ( $model->contract->isStatusNotPaid() ){
echo Html::beginTag("div",['class'=>"alert alert-danger", "role"=>"alert"]);
echo Html::beginTag("strong",[ ]);
echo "Szerződés részlete nincs fizetve!";
echo Html::a("Szerződés részletei",Url::toRoute(['contract/view','id' => $model->contract->id_contract]));
echo Html::endTag("strong");
echo Html::endTag("div");
}else{
echo Html::beginTag("div",['class'=>"alert alert-success", "role"=>"alert"]);
echo Html::beginTag("strong",[ ]);
echo "Érvényes szerződés!";
echo Html::a("Szerződés részletei",Url::toRoute(['contract/view','id' => $model->contract->id_contract]));
echo Html::endTag("strong");
echo Html::endTag("div");
}
}else{
if ( $contract->isFlagCanceled() ){
echo Html::beginTag("div",['class'=>"alert alert-danger", "role"=>"alert"]);
echo Html::beginTag("strong",[ ]);
echo "Szerződés felbontva !";
echo Html::a("Szerződés részletei",Url::toRoute(['contract/view','id' => $model->contract->id_contract]));
echo Html::endTag("strong");
echo Html::endTag("div");
}
}
}
?>

View File

@ -0,0 +1,43 @@
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
/* @var $this yii\web\View */
/* @var $model common\models\Contract */
/* @var $form yii\widgets\ActiveForm */
?>
<div class="contract-form">
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'id_contract')->textInput() ?>
<?= $form->field($model, 'id_user')->textInput() ?>
<?= $form->field($model, 'id_customer')->textInput() ?>
<?= $form->field($model, 'status')->textInput() ?>
<?= $form->field($model, 'flag')->textInput() ?>
<?= $form->field($model, 'part_paid')->textInput() ?>
<?= $form->field($model, 'part_count')->textInput() ?>
<?= $form->field($model, 'part_required')->textInput() ?>
<?= $form->field($model, 'expired_at')->textInput() ?>
<?= $form->field($model, 'created_at')->textInput() ?>
<?= $form->field($model, 'updated_at')->textInput() ?>
<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? Yii::t('common/contract', 'Create') : Yii::t('common/contract', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>

View File

@ -0,0 +1,47 @@
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
/* @var $this yii\web\View */
/* @var $model frontend\models\ContractSearch */
/* @var $form yii\widgets\ActiveForm */
?>
<div class="contract-search">
<?php $form = ActiveForm::begin([
'action' => ['index'],
'method' => 'get',
]); ?>
<?= $form->field($model, 'id_contract') ?>
<?= $form->field($model, 'id_user') ?>
<?= $form->field($model, 'id_customer') ?>
<?= $form->field($model, 'status') ?>
<?= $form->field($model, 'flag') ?>
<?php // echo $form->field($model, 'part_paid') ?>
<?php // echo $form->field($model, 'part_count') ?>
<?php // echo $form->field($model, 'part_required') ?>
<?php // echo $form->field($model, 'expired_at') ?>
<?php // echo $form->field($model, 'created_at') ?>
<?php // echo $form->field($model, 'updated_at') ?>
<div class="form-group">
<?= Html::submitButton(Yii::t('common/contract', 'Search'), ['class' => 'btn btn-primary']) ?>
<?= Html::resetButton(Yii::t('common/contract', 'Reset'), ['class' => 'btn btn-default']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>

View File

@ -0,0 +1,21 @@
<?php
use yii\helpers\Html;
/* @var $this yii\web\View */
/* @var $model common\models\Contract */
$this->title = Yii::t('common/contract', 'Create Contract');
$this->params['breadcrumbs'][] = ['label' => Yii::t('common/contract', 'Contracts'), 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="contract-create">
<h1><?= Html::encode($this->title) ?></h1>
<?= $this->render('_form', [
'model' => $model,
]) ?>
</div>

View File

@ -0,0 +1,58 @@
<?php
use yii\helpers\Html;
use yii\grid\GridView;
use yii\helpers\Url;
/* @var $this yii\web\View */
/* @var $searchModel frontend\models\ContractSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */
$this->title = $searchModel->customer->name . " szerződései";
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="contract-index">
<h1><?= Html::encode($this->title) ?></h1>
<?php // echo $this->render('_search', ['model' => $searchModel]); ?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
'id_contract',
[
'attribute' => 'id_customer',
'value' => 'customerName'
],
[
'attribute' => 'id_user',
'value' => 'userName'
],
// 'part_paid',
// 'part_count',
// 'part_required',
'expired_at:datetime',
'created_at:datetime',
// 'updated_at',
['class' => 'yii\grid\ActionColumn',
'template' => '{details}',
'buttons' => [
'details' => function ($url, $model, $key) {
return Html::a('Fizetési részletek', $url, ['class'=> 'btn btn-xs btn-success' ]) ;
},
],
'urlCreator' => function ($action, $model, $key, $index){
$url = "";
if ( 'details' == $action ){
$url = Url::to(['contract/view','id' => $model->id_contract]);
}
return $url;
}
],
],
]); ?>
</div>

View File

@ -0,0 +1,23 @@
<?php
use yii\helpers\Html;
/* @var $this yii\web\View */
/* @var $model common\models\Contract */
$this->title = Yii::t('common/contract', 'Update {modelClass}: ', [
'modelClass' => 'Contract',
]) . ' ' . $model->id_contract;
$this->params['breadcrumbs'][] = ['label' => Yii::t('common/contract', 'Contracts'), 'url' => ['index']];
$this->params['breadcrumbs'][] = ['label' => $model->id_contract, 'url' => ['view', 'id' => $model->id_contract]];
$this->params['breadcrumbs'][] = Yii::t('common/contract', 'Update');
?>
<div class="contract-update">
<h1><?= Html::encode($this->title) ?></h1>
<?= $this->render('_form', [
'model' => $model,
]) ?>
</div>

View File

@ -0,0 +1,100 @@
<?php
use yii\helpers\Html;
use yii\widgets\DetailView;
use common\models\TicketInstallmentRequest;
/* @var $this yii\web\View */
/* @var $model common\models\Contract */
$this->title = "Szerződés részletek" ;
$this->params['breadcrumbs'][] = ['label' => Yii::t('common/contract', 'Szerződések'), 'url' => ['index', 'id_card' => $card->id_card]];
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="contract-view">
<h1><?= Html::encode($this->title) ?></h1>
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'id_contract',
[
'attribute' => 'id_user',
'value' => $model->userName
],
[
'attribute' => 'id_customer',
'value' => $model->customerName
],
[
'attribute' => 'flag',
'value' => $model->flagName
],
[
'attribute' => 'status',
'value' => $model->statusName
],
'part_paid',
'part_required',
'part_count',
'expired_at:datetime',
'created_at:datetime',
'updated_at:datetime',
],
]) ?>
<?php if ( $model->canCancel() ){?>
<div class="row">
<div class="col-md-12">
<?php
echo Html::a("Szerződés felbontása ",['contract/cancel' , 'id' => $model->id_contract], [ 'data-method' => 'post', 'class' => 'btn btn-danger']);
?>
Szerződés felbontása esetén a már megkezdett hónapokra hónaponként 3000 Ft büntetést írunk fel a vásárló kosarába
</div>
</div>
<br>
<?php }?>
<?php foreach ($intstallments as $inst) {?>
<?php
/** @var common\models\TicketInstallmentRequest $inst */
$panelClass = 'panel-info';
if ( $inst->isStatusAccepted() ){
$panelClass = "panel-success";
}else if ( $inst->isStatusRejected() ){
$panelClass = "panel-danger";
}
?>
<div class="panel panel-default <?php echo $panelClass?>">
<div class="panel-heading">Bérlet <?php echo $inst->priority?></div>
<div class="panel-body">
<table class="table table-striped">
<tr>
<td>Esedékességi dátum</td>
<td><?php echo \Yii::$app->formatter->asDate($inst->request_target_time_at)?></td>
</tr>
<tr>
<td>Fizetendő</td>
<td><?php echo ($inst->money)?></td>
</tr>
<tr>
<td>Státusz</td>
<td><?php echo ($inst->statusName)?></td>
</tr>
<tr>
<td>Bérlet vége</td>
<td><?php echo \Yii::$app->formatter->asDate($inst->ticketExpirationDate)?></td>
</tr>
</table>
<?php
if ( $inst->isStatusPending() || $inst->isStatusRejected() ){
echo Html::a("Fizetettnek jelölés és bérlet vásárló kásrba helyezése",['contract/payout' , 'id' => $inst->id_ticket_installment_request], [ 'data-method' => 'post', 'class' => 'btn btn-danger']);
}
?>
</div>
</div>
<?php }?>
</div>

View File

@ -0,0 +1,24 @@
<h1>
Éves szerződés
</h1>
<p>
Ez az éves szerződés szövege
</p>
<p>
Kövektező bekezdés
</p>
<p>
A szerződő fél neve:
<span>
<?php
echo $model->name
?>
</span>
</p>
<p>
<span>A cég neve:</span>
<span><?php echo \Yii::$app->params['company_name']?></span>
</p>

View File

@ -44,4 +44,7 @@ use kartik\widgets\ActiveForm;
<div class='col-md-3 '>
<?php echo Html::a(Yii::t('frontend/product', "Frissít"),null,[ 'class' => 'btn btn-primary btn-block' , 'onclick' => 'location.reload();']) ?>
</div>
<div class='col-md-3 '>
<?php echo Html::a(Yii::t('transfer/user-cart', "Kosár részletei"),['transfer/user-cart'],[ 'class' => 'btn btn-primary btn-block' ]) ?>
</div>
</div>

View File

@ -101,6 +101,7 @@ td,th{
<tr>
<th>T</th>
<th>Kiadva</th>
<th>F. mód</th>
<th>Fizetve</th>
<th>Kassza</th>
<th>Felhasználó</th>
@ -117,6 +118,7 @@ td,th{
<tr>
<td><?php echo "#".$p['id_transfer']?> </td>
<td><?php echo $p['product_created_at']?> </td>
<td><?php echo Transfer::toPaymentMethodName( $p['transfer_payment_method'] )?> </td>
<td><?php echo $p['product_paid_at']?> </td>
<td><?php echo $p['account_name']?> </td>
<td><?php echo $p['user_name']?> </td>

View File

@ -0,0 +1,13 @@
<div>
<div class="row">
<div class="col-md4">
<?php echo $model->objectName;?>
</div>
</div>
<div class="row">
<div class="col-md4">
<?php echo $model->transferTypeName;?>
</div>
</div>
</div>

View File

@ -3,6 +3,7 @@ use yii\helpers\Html;
use yii\grid\GridView;
use yii\widgets\ListView;
use yii\base\Widget;
use common\models\Transfer;
/* @var $this yii\web\View */
/* @var $searchModel common\models\TransferSearch */
@ -66,8 +67,9 @@ td.name {
<table class="table table-bordered table-striped table-summary">
<thead>
<tr>
<th>Tranzakció</th>
<th>ID</th>
<th>Kiadva</th>
<th>F. mód</th>
<th>Fizetve</th>
<th>Kassza</th>
<th>Felhasználó</th>
@ -84,6 +86,7 @@ td.name {
<tr>
<td><?php echo "#".$p['id_transfer']?> </td>
<td><?php echo ( $p['product_created_at'])?> </td>
<td><?php echo Transfer::toPaymentMethodName( $p['transfer_payment_method'] )?> </td>
<td><?php echo $p['product_paid_at']?> </td>
<td><?php echo $p['account_name']?> </td>
<td><?php echo $p['user_name']?> </td>

View File

@ -0,0 +1,90 @@
<?php
use yii\data\ArrayDataProvider;
use yii\widgets\ListView;
use yii\base\Widget;
use yii\grid\GridView;
use yii\widgets\ActiveForm;
use yii\helpers\Html;
use common\models\Transfer;
use yii\grid\CheckboxColumn;
use frontend\assets\TransferUserCartAsset;
?>
<?php
TransferUserCartAsset::register($this);
$options = [];
$this->registerJs ( 'new TransferUserCart( '. json_encode($options).');' );
$dp = new ArrayDataProvider(
[
'allModels' => $model->transfers,
'pagination' => false
]
);
?>
<h1>Kosár</h1>
<div class="transfer-form">
<?php $form = ActiveForm::begin(); ?>
<?php echo $form->field($model, 'payment_method')->dropDownList( ['' => 'Aktuális'] + Transfer::paymentMethods())->label("Fizetése mód") ?>
<div class="row">
<div class="col-md-4">
<span>Összesen:</span>
<span class="selected-money"><?php echo $model->money ?></span>
<span> Ft</span>
<?php echo $form->field($model, "money" , [ ])->hiddenInput(); ?>
</div>
</div>
<?php
$formModel = $model;
echo GridView::widget([
"dataProvider" => $dp,
'columns' =>[
[
'label' => '',
'value' => function ($model, $key, $index, $column) use (&$form, &$formModel){
return Html::checkbox(Html::getInputName($formModel, 'selected[]') , in_array($model->id_transfer, $formModel->selected) , [ 'data-money' => $model->money, 'class' => 'cart-item', 'value' => $model->id_transfer] );
},
'format' => 'raw'
],
[
'value' => 'transferTypeName',
'label' => 'Típus'
],
[
'value' => 'objectName',
'label' => 'Megnevezés'
],
[
'value' => 'item_price',
'label' => 'Egység ár'
],
[
'value' => 'count',
'label' => 'Mennyiség'
],
[
'value' => 'money',
'label' => 'Összesen'
],
[
'value' => 'paymentMethodName',
'label' => 'Fizetési mód'
],
]
]);
?>
<div class="form-group">
<?= Html::submitButton( "Kiválasztott elemek fizetve", ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>

View File

@ -0,0 +1,26 @@
function TransferUserCart(o){
var defaults = {};
init();
function init(){
defaults = $.extend(defaults,o);
$('.select-on-check-all').click(recalculate);
$('.cart-item').click(recalculate);
}
function recalculate(){
var items = $('.cart-item');
var money = 0;
items.each(function(i,e){
if ( $(e).is(':checked')){
money += $(e).data('money');
}
});
$('#usercartform-money').val(money);
$('.selected-money').html(money);
}
}