add ticket installment

This commit is contained in:
2016-01-22 14:45:56 +01:00
parent bb5978c1df
commit a2a6b1f240
51 changed files with 1498 additions and 113 deletions

View File

@@ -23,6 +23,9 @@ use common\components\Helper;
* @property integer $usage_count
* @property integer $status
* @property integer $price_brutto
* @property integer $part eddig a részletig kell kifizetve lenni
* @property integer $part_count ennyi részlet van összesen
* @property integer $part_paid ennyi részlet van kifizetve
* @property string $comment
* @property string $created_at
* @property string $updated_at
@@ -31,6 +34,7 @@ class Ticket extends \common\models\BaseFitnessActiveRecord
{
const STATUS_DELETED = 0;
const STATUS_ACTIVE = 10;
const STATUS_INACTIVE = 20;
/**
* @inheritdoc
@@ -200,10 +204,10 @@ class Ticket extends \common\models\BaseFitnessActiveRecord
new Expression( 'ticket_type.name as name'),
new Expression( 'coalesce( count(ticket.id_ticket),0) as total'),
new Expression( "coalesce( sum( case when ". Helper::sqlValidRule('ticket.start', 'ticket.end', ':start', ':end') . " then 1 else 0 end) , 0) as valid" ), //valid
new Expression( "coalesce( sum( case when ". Helper::sqlInIntervalRule('ticket.created_at', ':start', ':end') . " then 1 else 0 end) , 0) as created" ),//created
new Expression( "coalesce( sum( case when ". Helper::sqlInIntervalRule('ticket.created_at', ':start', ':end') . " then transfer.money else 0 end) , 0) as created_money" ),//created_money
new Expression( "coalesce( sum( case when " . Helper::sqlExpireRule('ticket.start', 'ticket.end', ':start', ":end") . " then 1 else 0 end) , 0) as expired" ),
new Expression( "coalesce( sum( case when ticket.status <> " .Ticket::STATUS_DELETED ." AND ". Helper::sqlValidRule('ticket.start', 'ticket.end', ':start', ':end') . " then 1 else 0 end) , 0) as valid" ), //valid
new Expression( "coalesce( sum( case when ticket.status <> " .Ticket::STATUS_DELETED ." AND ". Helper::sqlInIntervalRule('ticket.created_at', ':start', ':end') . " then 1 else 0 end) , 0) as created" ),//created
new Expression( "coalesce( sum( case when ticket.status <> " .Ticket::STATUS_DELETED ." AND ". Helper::sqlInIntervalRule('ticket.created_at', ':start', ':end') . " then transfer.money else 0 end) , 0) as created_money" ),//created_money
new Expression( "coalesce( sum( case when ticket.status <> " .Ticket::STATUS_DELETED ." AND " . Helper::sqlExpireRule('ticket.start', 'ticket.end', ':start', ":end") . " then 1 else 0 end) , 0) as expired" ),
]);
@@ -237,6 +241,7 @@ class Ticket extends \common\models\BaseFitnessActiveRecord
return [
Ticket::STATUS_ACTIVE => 'Aktív',
Ticket::STATUS_DELETED => 'Törölve',
Ticket::STATUS_INACTIVE => 'Inaktív',
];
}
@@ -249,4 +254,62 @@ class Ticket extends \common\models\BaseFitnessActiveRecord
return $result;
}
public function getStatusName(){
return static::toStatusName($this->status);
}
public function isDeleted(){
return $this->status == Ticket::STATUS_DELETED;
}
/**csoportos beszedéses a bérlet*/
public function isInstallmentTicket(){
return ( isset($this->part_count) && $this->part_count > 0 );
}
/**
* Apply request
*
* @var common\models\TicketInstallmentRequest $request megbízás
* */
public function applyTicketInstallmentRequest( $request ) {
//ha csoportos beszedéses
if ( $this->isInstallmentTicket() ){
if ( $request->isStatusAccepted() ){
if ( $this->part_paid < $request->priority ){
$this->part_paid = $request->priority;
}
$this->recalclulate();
}else if ( $request->isStatusRejected() ){
$this->status = static::STATUS_INACTIVE;
}
}
}
/*
* *
* @param common\models\TicketInstallmentRequest $request megbízás
*/
public function setPartRequired($request){
// ha keveseb a részlet sorszám mint a bérlet max sorszáma
if ( $request->priority <= $this->part_count ){
//ha az aktuális elvárt részlet kisebb , mint a megbízása
if ( $this->part < $request-> priority ){
$this->part = $request->priority;
}
}
}
/**
* Csoportos beszedéses bérlet érvényességének újraszámolása
* */
public function recalclulate( ) {
if ( $this->isInstallmentTicket() ){
$enabled = $this->part_paid >= $this->part;
if ( $enabled == true ){
$this->status = static::STATUS_ACTIVE;
}else{
$this->status = static::STATUS_INACTIVE;
}
}
}
}