add ticket installment
This commit is contained in:
@@ -25,6 +25,7 @@ use yii\behaviors\TimestampBehavior;
|
||||
* @property string $request_target_time_at
|
||||
* @property string $created_at
|
||||
* @property string $updated_at
|
||||
* @property common\components\giro\GiroDETSTATetel $detstaTetel GiroDetstaTetel record a DetSta fájlból
|
||||
*/
|
||||
class TicketInstallmentRequest extends \yii\db\ActiveRecord
|
||||
{
|
||||
@@ -36,6 +37,12 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
|
||||
public static $STATUS_CANCELED = 30;
|
||||
public static $STATUS_REJECTED = 40;
|
||||
public static $STATUS_ACCEPTED = 50;
|
||||
public static $STATUS_ACCEPTED_MANUAL = 60;
|
||||
|
||||
/**
|
||||
* GiroDetstaTetel record a DetSta fájlból
|
||||
* */
|
||||
public $detstaTetel;
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
@@ -98,6 +105,90 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
|
||||
return $this->hasOne( Customer::className(), ["id_customer" =>"id_customer" ] );
|
||||
}
|
||||
|
||||
public function getTicket(){
|
||||
return $this->hasOne( Ticket::className(), ["id_ticket" =>"id_ticket", ] ) ;
|
||||
}
|
||||
|
||||
public function getUgiro()
|
||||
{
|
||||
return $this->hasOne(Ugiro::className(), [ 'id_ugiro' => 'id_ugiro' ])
|
||||
->viaTable('ugiro_request_assignment', [ 'id_request' => 'id_ticket_installment_request' ]);
|
||||
}
|
||||
|
||||
public function isStatusAccepted(){
|
||||
return $this->status == static::$STATUS_ACCEPTED || $this->status == static::$STATUS_ACCEPTED_MANUAL;
|
||||
}
|
||||
public function isStatusRejected(){
|
||||
return $this->status == static::$STATUS_REJECTED ;
|
||||
}
|
||||
|
||||
public function getIdGiro(){
|
||||
$result = null;
|
||||
$giro = $this->ugiro;
|
||||
if ( isset($giro) ){
|
||||
$result = $giro->id_ugiro;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Megbízás státuszának beállítása
|
||||
*
|
||||
* Létrehozza a szükséges ticket/transfer objectumokat
|
||||
*
|
||||
* @param boolean $partRequired ha igaz, a bérleten a part mezőt változtatjuk
|
||||
* */
|
||||
public function applyStatus($status, $partRequired = false, $visszajelzes = "", $comment = ""){
|
||||
if ( $status == static::$STATUS_ACCEPTED || $status == static::$STATUS_ACCEPTED_MANUAL){
|
||||
if ( !$this->isStatusAccepted() ){
|
||||
$this->status = $status;
|
||||
$tranfer = $this->addTransfer();
|
||||
$this->id_transfer = $tranfer->id_transfer;
|
||||
$this->save(false);
|
||||
$this->applyNewTicketState($partRequired);
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
$this->status = $status;
|
||||
$this->save(false);
|
||||
$this->applyNewTicketState($partRequired);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
protected function applyNewTicketState($partRequired = false){
|
||||
if ( $partRequired ){
|
||||
$this->ticket->setPartRequired($this);
|
||||
}
|
||||
$this->ticket->applyTicketInstallmentRequest($this);
|
||||
$this->ticket->save(false);
|
||||
}
|
||||
|
||||
protected function addTransfer(){
|
||||
|
||||
$account = Account::findOne($this->ticket->id_account);
|
||||
$discount = null;
|
||||
if ( isset($this->ticket->id_account)){
|
||||
$discount = Discount::findOne( $this->ticket->id_discount );
|
||||
}
|
||||
|
||||
$transfer = Transfer::createTicketTransfer($account, $discount, null, 1, $this->ticket);
|
||||
|
||||
$transfer->status = Transfer::STATUS_PAID;
|
||||
$transfer->paid_at = date('Y-m-d H:i:s' ) ;
|
||||
$transfer->paid_by = \Yii::$app->user->id;
|
||||
$transfer->payment_method = Transfer::PAYMENT_METHOD_TRANSFER;
|
||||
$transfer->money = $this->money;
|
||||
$transfer->comment = "Csoportos beszedes";
|
||||
$transfer->id_user = \Yii::$app->user->id;
|
||||
$transfer->id_customer = $this->ticket->card->customer->id_customer;
|
||||
$transfer->save(false);
|
||||
return $transfer;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param common\models\Ticket $ticket
|
||||
* @param common\models\TicketType $type
|
||||
@@ -107,8 +198,12 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
|
||||
$result = [];
|
||||
if ( $type->isInstallment() ){
|
||||
$count = $type->installment_count;
|
||||
$ticketCreatedAt = time();
|
||||
$discount = $ticket->discount;
|
||||
$money = $type->price_brutto;
|
||||
if ( isset($discount ) ){
|
||||
$money = Discount::applyDiscount($money, $discount);
|
||||
}
|
||||
$ticketCreatedAt = time();
|
||||
for ( $i = 1; $i <= $count; $i++){
|
||||
$request = TicketInstallmentRequest::createInstallment($ticket, $type, $customer, $money, $ticketCreatedAt, $i);
|
||||
$result[] = $request;
|
||||
@@ -140,6 +235,7 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
|
||||
TicketInstallmentRequest::$STATUS_CANCELED=> 'Törölve',
|
||||
TicketInstallmentRequest::$STATUS_REJECTED=> 'Visszautasítva',
|
||||
TicketInstallmentRequest::$STATUS_ACCEPTED=> 'Sikeresen végrehajtva',
|
||||
TicketInstallmentRequest::$STATUS_ACCEPTED_MANUAL=> 'Manuálisan elfogadva',
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user