add contract started_at field
This commit is contained in:
parent
b2c1cc0a6d
commit
fd4122a983
@ -59,6 +59,7 @@ class ContractSearch extends Contract
|
||||
'contract.part_count as contract_part_count',
|
||||
'contract.created_at as contract_created_at',
|
||||
'contract.expired_at as contract_expired_at',
|
||||
'contract.started_at as contract_started_at',
|
||||
|
||||
]);
|
||||
$query->from('contract');
|
||||
@ -117,6 +118,10 @@ class ContractSearch extends Contract
|
||||
'asc' => ['contract.expired_at' => SORT_ASC ],
|
||||
'desc' => ['contract.expired_at' => SORT_DESC],
|
||||
],
|
||||
'contract_started_at' => [
|
||||
'asc' => ['contract.started_at' => SORT_ASC ],
|
||||
'desc' => ['contract.started_at' => SORT_DESC],
|
||||
],
|
||||
]
|
||||
],
|
||||
]);
|
||||
|
||||
@ -75,6 +75,11 @@ $this->params['breadcrumbs'][] = $this->title;
|
||||
'label' =>'Létrehozva',
|
||||
'format' => 'date'
|
||||
],
|
||||
[
|
||||
'attribute' => 'contract_started_at' ,
|
||||
'label' =>'Érvényes tól',
|
||||
'format' => 'date'
|
||||
],
|
||||
[
|
||||
'attribute' => 'contract_expired_at' ,
|
||||
'label' =>'Lejárat',
|
||||
|
||||
@ -22,6 +22,7 @@ use common\components\Helper;
|
||||
* @property string $expired_at
|
||||
* @property string $created_at
|
||||
* @property string $updated_at
|
||||
* @property string $started_at
|
||||
*/
|
||||
class Contract extends \yii\db\ActiveRecord
|
||||
{
|
||||
@ -82,6 +83,7 @@ class Contract extends \yii\db\ActiveRecord
|
||||
'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'),
|
||||
'started_at' => Yii::t('common/contract', 'Érvényesség kezdete'),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@ -123,7 +123,12 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
|
||||
}
|
||||
|
||||
public function getTicketExpirationDate(){
|
||||
return strtotime( $this->request_target_time_at . " +1 month -1 day") ;
|
||||
$date = \DateTime::createFromFormat("Y-m-d H:i:s", $this->request_target_time_at, new \DateTimeZone( 'UTC'));
|
||||
$date->modify("+1 month");
|
||||
$date->modify("-1 day");
|
||||
$date->setTime(0, 0, 0);
|
||||
|
||||
return $date->getTimestamp();
|
||||
}
|
||||
|
||||
|
||||
@ -244,11 +249,13 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
|
||||
$discount = $ticket->discount;
|
||||
$money = $type->installment_money;
|
||||
if ( isset( $discount ) ){
|
||||
$money = Discount::applyDiscount($money, $discount);
|
||||
$money = Discount::applyDiscount( $money, $discount );
|
||||
}
|
||||
$ticketCreatedAt = time();
|
||||
|
||||
|
||||
|
||||
for ( $i = 1; $i <= $count; $i++){
|
||||
$request = TicketInstallmentRequest::createInstallment($ticket, $type, $customer, $contract, $money, $ticketCreatedAt, $i);
|
||||
$request = TicketInstallmentRequest::createInstallment($ticket, $type, $customer, $contract, $money, null, $i);
|
||||
$result[] = $request;
|
||||
}
|
||||
|
||||
@ -262,7 +269,11 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
|
||||
$request->id_customer = $customer->id_customer;
|
||||
$request->status = TicketInstallmentRequest::$STATUS_PENDING;
|
||||
$request->priority = $index;
|
||||
$request->request_target_time_at = date('Y-m-d H:i:s', strtotime("+".$index." month" ));
|
||||
$date = \DateTime::createFromFormat("Y.m.d", $contract->started_at, new \DateTimeZone( 'UTC'));
|
||||
$date->modify("+$index month");
|
||||
// $date->modify("-1 day");
|
||||
$date->setTime(0, 0, 0);
|
||||
$request->request_target_time_at = $date->format ( 'Y-m-d H:i:s' );
|
||||
$request->request_processed_at = null;
|
||||
$request->request_sent_at = null;
|
||||
$request->money = $money;
|
||||
|
||||
@ -672,8 +672,8 @@ class Transfer extends \common\models\BaseFitnessActiveRecord {
|
||||
self::notInInterval ( $query, 'transfer.created_at', $start, $end );
|
||||
}
|
||||
|
||||
echo "start date is: ". $start;
|
||||
echo "start date is: " . gettype( $start );
|
||||
// echo "start date is: ". $start;
|
||||
// echo "start date is: " . gettype( $start );
|
||||
|
||||
if ( !RoleDefinition::isAdmin() ){
|
||||
Helper::restrictIfNotAdminTheStartDate($query, $start);
|
||||
|
||||
@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
use yii\db\Schema;
|
||||
use yii\db\Migration;
|
||||
|
||||
class m160302_171507_alter__table__contract__add__column__started_at extends Migration
|
||||
{
|
||||
public function up()
|
||||
{
|
||||
$this->addColumn("contract", "started_at", "datetime");
|
||||
$this->execute("update contract set started_at = created_at");
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
echo "m160302_171507_alter__table__contract__add__column__started_at cannot be reverted.\n";
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
// Use safeUp/safeDown to run migration code within a transaction
|
||||
public function safeUp()
|
||||
{
|
||||
}
|
||||
|
||||
public function safeDown()
|
||||
{
|
||||
}
|
||||
*/
|
||||
}
|
||||
29
frontend/assets/ContractMakeAsset.php
Normal file
29
frontend/assets/ContractMakeAsset.php
Normal file
@ -0,0 +1,29 @@
|
||||
<?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 ContractMakeAsset extends AssetBundle
|
||||
{
|
||||
public $basePath = '@webroot';
|
||||
public $baseUrl = '@web';
|
||||
public $css = [
|
||||
];
|
||||
public $js = [
|
||||
'js/contract.make.js',
|
||||
];
|
||||
public $depends = [
|
||||
'frontend\assets\AppAsset',
|
||||
'yii\jui\JuiAsset',
|
||||
];
|
||||
}
|
||||
@ -284,9 +284,14 @@ class ContractController extends Controller {
|
||||
throw new Exception ( "Az oldal nem található" );
|
||||
}
|
||||
|
||||
|
||||
$model = new ContractForm ( [
|
||||
'customer' => $customer
|
||||
] );
|
||||
|
||||
$model->started_at = date(date('Y.m.d'));
|
||||
|
||||
|
||||
$model->fillOut ();
|
||||
|
||||
if ($model->load ( Yii::$app->request->post () ) && $model->validate ()) {
|
||||
|
||||
@ -39,6 +39,8 @@ class ContractForm extends Model {
|
||||
private $ticketType;
|
||||
private $money;
|
||||
private $discount;
|
||||
public $started_at;
|
||||
public $timestampStart;
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
@ -59,7 +61,9 @@ class ContractForm extends Model {
|
||||
"bank_name",
|
||||
'phone',
|
||||
'email',
|
||||
'payment_method'
|
||||
'payment_method' ,
|
||||
'started_at',
|
||||
'started_at'
|
||||
],
|
||||
'required'
|
||||
],
|
||||
@ -124,7 +128,8 @@ class ContractForm extends Model {
|
||||
'ticket_type'
|
||||
],
|
||||
'validateTicketType'
|
||||
]
|
||||
] ,
|
||||
[[ 'started_at', ], 'date', 'format' =>Yii::$app->formatter->dateFormat , 'timestampAttribute' => 'timestampStart' ,'timestampAttributeFormat' => 'yyyy-MM-dd' ,'timeZone' => 'UTC' ],
|
||||
];
|
||||
}
|
||||
public function validateTicketType($attribute, $params) {
|
||||
@ -162,6 +167,7 @@ class ContractForm extends Model {
|
||||
'ticket_type' => 'Bérlet típus' ,
|
||||
'payment_method' => 'Fizetési mód (első bérlet)' ,
|
||||
'id_discount' => 'Kedvezmény' ,
|
||||
'started_at' => 'Érvényesség kezdete' ,
|
||||
];
|
||||
}
|
||||
public function fillOut() {
|
||||
@ -223,8 +229,8 @@ class ContractForm extends Model {
|
||||
$ticket->id_user = \Yii::$app->user->id;
|
||||
$ticket->id_account = Account::readDefault ();
|
||||
$ticket->id_discount = $this->id_discount;
|
||||
$ticket->start = date ( 'Y-m-d' );
|
||||
$date = new \DateTime ();
|
||||
$ticket->start = $this->started_at;
|
||||
$date = new \DateTime ( $this->timestampStart);
|
||||
$date->modify ( '+1 month' );
|
||||
$date->modify ( '-1 day' );
|
||||
$ticket->end = $date->format ( 'Y-m-d H:i:s' );
|
||||
@ -283,7 +289,12 @@ class ContractForm extends Model {
|
||||
$contract->part_count = $this->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->started_at = $this->started_at;
|
||||
$date = new \DateTime( $this->timestampStart );
|
||||
$date->modify ( '+1 year' );
|
||||
$date->modify ( '-1 day' );
|
||||
$date->setTime(0, 0, 0);
|
||||
$contract->expired_at = $date->format ( 'Y-m-d H:i:s' );
|
||||
$contract->id_ticket_type = $this->ticketType->id_ticket_type;
|
||||
|
||||
if (! $contract->save ( false )) {
|
||||
|
||||
@ -14,6 +14,11 @@ use common\components\Azaz;
|
||||
$customerBankAccount = $customer->bank_account;
|
||||
$customerIdCustomer = $customer->id_customer;
|
||||
|
||||
// $dt = \DateTime::createFromFormat("Y-m-d H:i:s", $model->started_at);
|
||||
// $contractStartAtDate = $dt->format("Y.m.d");
|
||||
$contractStartAtDate = \Yii::$app->formatter->asDate($model->started_at);
|
||||
|
||||
|
||||
$contractDate = date('Y.m.d');
|
||||
|
||||
$azaz = new Azaz();
|
||||
@ -241,7 +246,7 @@ másrészről:
|
||||
Teljesítés adatai:
|
||||
</div>
|
||||
<div>
|
||||
Érvényesség kezdete: <?php echo $contractDate?> lejárata:
|
||||
Érvényesség kezdete: <?php echo $contractStartAtDate?> lejárata:
|
||||
</div>
|
||||
<div>
|
||||
Teljesítés felső értékhatára:
|
||||
|
||||
@ -8,6 +8,7 @@ use frontend\components\HtmlHelper;
|
||||
use kartik\widgets\DatePicker;
|
||||
use common\models\Transfer;
|
||||
use common\models\Discount;
|
||||
use frontend\assets\ContractMakeAsset;
|
||||
|
||||
/* @var $this yii\web\View */
|
||||
/* @var $model common\models\Contract */
|
||||
@ -17,12 +18,26 @@ use common\models\Discount;
|
||||
|
||||
<?php
|
||||
|
||||
ContractMakeAsset::register($this);
|
||||
|
||||
$types = TicketType::findAll(['status' => TicketType::STATUS_ACTIVE ,'installment_enabled' => '1']);
|
||||
|
||||
$typeOptions = TicketType::modelsToArray($types);
|
||||
|
||||
|
||||
$types = HtmlHelper::mkTicketTypeOptions($types);
|
||||
|
||||
$discounts = Discount::readTicketDiscounts();
|
||||
$discountOptions = Discount::modelsToArray($discounts,[]);
|
||||
|
||||
$discounts = ['' => ''] + HtmlHelper::mkDiscountOptions($discounts);
|
||||
|
||||
$options = [];
|
||||
$options['ticket_types'] = $typeOptions;
|
||||
$options['discounts'] = $discountOptions;
|
||||
|
||||
$this->registerJs(' contract_make.init( '. json_encode($options) .' );');
|
||||
|
||||
?>
|
||||
<h1>Szerződés létrehozása</h1>
|
||||
<div class="contract-form">
|
||||
@ -92,7 +107,12 @@ use common\models\Discount;
|
||||
<?= $form->field($model, 'ticket_type')->dropDownList($types) ?>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
|
||||
<?= $form->field($model, 'started_at')->widget(\kartik\date\DatePicker::classname(), [
|
||||
'pluginOptions' => [
|
||||
'autoclose'=>true,
|
||||
'format' => 'yyyy.mm.dd'
|
||||
]
|
||||
]) ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
@ -106,8 +126,19 @@ use common\models\Discount;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
Figyelem: A szerződés létrehozásakor a szerződés első bérlete bekerül a vásálró kosarába.
|
||||
</p>
|
||||
<table class="table table-striped">
|
||||
<tr>
|
||||
<td>Bérlet ára</td>
|
||||
<td class="ticket-price"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Összesen</td>
|
||||
<td class="ticket-total"></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
|
||||
@ -41,6 +41,7 @@ $this->params['breadcrumbs'][] = $this->title;
|
||||
'part_paid',
|
||||
'part_required',
|
||||
'part_count',
|
||||
'started_at:datetime',
|
||||
'expired_at:datetime',
|
||||
'created_at:datetime',
|
||||
'updated_at:datetime',
|
||||
|
||||
70
frontend/web/js/contract.make.js
Normal file
70
frontend/web/js/contract.make.js
Normal file
@ -0,0 +1,70 @@
|
||||
|
||||
|
||||
|
||||
|
||||
var contract_make ={
|
||||
|
||||
defaults :{
|
||||
ticket_types : [],
|
||||
discounts: [],
|
||||
dd_types: '#contractform-ticket_type',
|
||||
dd_discounts: '#contractform-id_discount',
|
||||
},
|
||||
init: function(o){
|
||||
contract_make.defaults = $.extend(contract_make.defaults, o);
|
||||
contract_make.update();
|
||||
contract_make.getDDTypes().change(contract_make.update);
|
||||
contract_make.getDDDiscounts().change(contract_make.update);
|
||||
},
|
||||
getDDTypes: function(){
|
||||
return $(contract_make.defaults.dd_types);
|
||||
},
|
||||
|
||||
getDDDiscounts: function(){
|
||||
return $(contract_make.defaults.dd_discounts);
|
||||
},
|
||||
findType: function(id){
|
||||
var type ;
|
||||
var i;
|
||||
type = null;
|
||||
for ( i = 0; i<contract_make.defaults.ticket_types.length; i++ ){
|
||||
if ( contract_make.defaults.ticket_types[i]['id_ticket_type'] == id ){
|
||||
type = contract_make.defaults.ticket_types[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
return type;
|
||||
},
|
||||
findDiscount: function(id){
|
||||
var type ;
|
||||
var i;
|
||||
type = null;
|
||||
if ( id && !isNaN(id) ){
|
||||
for ( i = 0; i < contract_make.defaults.discounts.length; i++ ){
|
||||
if ( contract_make.defaults.discounts[i]['id_discount'] == id ){
|
||||
type = contract_make.defaults.discounts[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return type;
|
||||
},
|
||||
update: function(){
|
||||
var type = contract_make.findType( +contract_make.getDDTypes().val());
|
||||
var discount = contract_make.findDiscount( +contract_make.getDDDiscounts().val() );
|
||||
var total = contract_make.calcPriceBrutto(type,discount);
|
||||
$('.ticket-price').html(type.price_brutto);
|
||||
$('.ticket-total').html(total);
|
||||
},
|
||||
calcPriceBrutto: function(type,discount){
|
||||
var result;
|
||||
result = type.price_brutto;
|
||||
if ( discount!= null ){
|
||||
var d = result* discount.value /100;
|
||||
d = Math.floor( d );
|
||||
result = result - d;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user