add contract

This commit is contained in:
2016-01-25 01:43:19 +01:00
parent fd4d38ab44
commit df14401b28
47 changed files with 2868 additions and 766 deletions

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,284 @@
<?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'
]
]
]
];
}
/**
* 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];
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->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!" );
} 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) ){
$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!' );
$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, Contract::$FLAG_CANCELED]]);
$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,7 @@ use yii\base\Object;
use common\models\Ticket;
use frontend\model\ReceptionForm;
use yii\helpers\Html;
use yii\helpers\Url;
/* @var $this yii\web\View */
/* @var $model frontend\model\ReceptionForm */
@@ -57,4 +58,23 @@ if ( isset($model->card)){
echo Html::endTag("div");
}
if ( isset($model->contract)){
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");
}
}
?>

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,99 @@
<?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 = $model->id_contract;
$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',
],
]) ?>
<?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);
}
}