157 lines
5.7 KiB
PHP
157 lines
5.7 KiB
PHP
<?php
|
|
|
|
namespace common\models;
|
|
|
|
use Yii;
|
|
use yii\helpers\ArrayHelper;
|
|
use yii\behaviors\TimestampBehavior;
|
|
|
|
/**
|
|
* This is the model class for table "ticket_installment_request".
|
|
*
|
|
* @property integer $id_ticket_installment_request
|
|
* @property integer $id_ticket
|
|
* @property integer $id_customer
|
|
* @property integer $id_transfer
|
|
* @property integer $status
|
|
* @property integer $money
|
|
* @property string $customer_name
|
|
* @property string $bank_name
|
|
* @property string $bank_address
|
|
* @property string $bank_account
|
|
* @property integer $priority
|
|
* @property string $request_sent_at
|
|
* @property string $request_processed_at
|
|
* @property string $request_target_time_at
|
|
* @property string $created_at
|
|
* @property string $updated_at
|
|
*/
|
|
class TicketInstallmentRequest extends \yii\db\ActiveRecord
|
|
{
|
|
///status //pending | marked_to_send | sent | canceled | rejected | accepted |
|
|
|
|
public static $STATUS_PENDING = 0;
|
|
public static $STATUS_MARKED_TO_SEND = 10;
|
|
public static $STATUS_SENT = 20;
|
|
public static $STATUS_CANCELED = 30;
|
|
public static $STATUS_REJECTED = 40;
|
|
public static $STATUS_ACCEPTED = 50;
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public static function tableName()
|
|
{
|
|
return 'ticket_installment_request';
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function rules()
|
|
{
|
|
return [
|
|
[['id_ticket', 'id_customer', 'id_transfer', 'status', 'money', 'priority'], 'integer'],
|
|
[['request_sent_at', 'request_processed_at', 'request_target_time_at', 'created_at', 'updated_at'], 'required'],
|
|
[['request_sent_at', 'request_processed_at', 'request_target_time_at', 'created_at', 'updated_at'], 'safe'],
|
|
[['customer_name', 'bank_name', 'bank_address', 'bank_account'], 'string', 'max' => 255]
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function attributeLabels()
|
|
{
|
|
return [
|
|
'id_ticket_installment_request' => Yii::t('common/ticket_installment_request', 'Id Ticket Installment Request'),
|
|
'id_ticket' => Yii::t('common/ticket_installment_request', 'Id Ticket'),
|
|
'id_customer' => Yii::t('common/ticket_installment_request', 'Id Customer'),
|
|
'id_transfer' => Yii::t('common/ticket_installment_request', 'Id Transfer'),
|
|
'status' => Yii::t('common/ticket_installment_request', 'Status'),
|
|
'money' => Yii::t('common/ticket_installment_request', 'Money'),
|
|
'customer_name' => Yii::t('common/ticket_installment_request', 'Customer Name'),
|
|
'bank_name' => Yii::t('common/ticket_installment_request', 'Bank Name'),
|
|
'bank_address' => Yii::t('common/ticket_installment_request', 'Bank Address'),
|
|
'bank_account' => Yii::t('common/ticket_installment_request', 'Bank Account'),
|
|
'priority' => Yii::t('common/ticket_installment_request', 'Priority'),
|
|
'request_sent_at' => Yii::t('common/ticket_installment_request', 'Request Sent At'),
|
|
'request_processed_at' => Yii::t('common/ticket_installment_request', 'Request Processed At'),
|
|
'request_target_time_at' => Yii::t('common/ticket_installment_request', 'Request Target Time At'),
|
|
'created_at' => Yii::t('common/ticket_installment_request', 'Created At'),
|
|
'updated_at' => Yii::t('common/ticket_installment_request', 'Updated At'),
|
|
];
|
|
}
|
|
|
|
|
|
public function behaviors()
|
|
{
|
|
return ArrayHelper::merge( [
|
|
[
|
|
'class' => TimestampBehavior::className(),
|
|
'value' => function(){ return date('Y-m-d H:i:s' ); }
|
|
],
|
|
], parent::behaviors());
|
|
}
|
|
|
|
public function getCustomer(){
|
|
return $this->hasOne( Customer::className(), ["id_customer" =>"id_customer" ] );
|
|
}
|
|
|
|
/**
|
|
* @param common\models\Ticket $ticket
|
|
* @param common\models\TicketType $type
|
|
* @return common\models\TicketInstallmentRequest[]
|
|
* */
|
|
public static function createInstallments($ticket,$type,$customer){
|
|
$result = [];
|
|
if ( $type->isInstallment() ){
|
|
$count = $type->installment_count;
|
|
$ticketCreatedAt = time();
|
|
$money = $type->price_brutto;
|
|
for ( $i = 1; $i <= $count; $i++){
|
|
$request = TicketInstallmentRequest::createInstallment($ticket, $type, $customer, $money, $ticketCreatedAt, $i);
|
|
$result[] = $request;
|
|
}
|
|
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
public static function createInstallment($ticket,$type,$customer,$money,$ticketCreated,$index){
|
|
$request = new TicketInstallmentRequest();
|
|
$request->id_ticket = $ticket->id_ticket;
|
|
$request->id_customer = $customer->id_customer;
|
|
$request->status = TicketInstallmentRequest::$STATUS_PENDING;
|
|
$request->priority = $index;
|
|
$request->request_target_time_at = date('Y-m-d H:i:s', strtotime("+".$index." month" ));
|
|
$request->request_processed_at = null;
|
|
$request->request_sent_at = null;
|
|
$request->money = $money;
|
|
|
|
return $request;
|
|
}
|
|
|
|
public static function statuses(){
|
|
return [
|
|
TicketInstallmentRequest::$STATUS_PENDING => 'Indításra vár',
|
|
TicketInstallmentRequest::$STATUS_MARKED_TO_SEND=> 'Beküldésre jelölve',
|
|
TicketInstallmentRequest::$STATUS_SENT=> 'Beküldve',
|
|
TicketInstallmentRequest::$STATUS_CANCELED=> 'Törölve',
|
|
TicketInstallmentRequest::$STATUS_REJECTED=> 'Visszautasítva',
|
|
TicketInstallmentRequest::$STATUS_ACCEPTED=> 'Sikeresen végrehajtva',
|
|
|
|
];
|
|
}
|
|
|
|
public static function toStatusName($id_status){
|
|
$result = "Ismeretlen";
|
|
$statuses = TicketInstallmentRequest::statuses();
|
|
if ( array_key_exists($id_status, $statuses)){
|
|
$result = $statuses[$id_status];
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
}
|