Merge branch 'release/v.0.1.07'

This commit is contained in:
2017-09-08 19:55:08 +02:00
32 changed files with 690 additions and 126 deletions

View File

@@ -101,4 +101,11 @@ class DateUtil
return $formatter->asDatetime($dateTimeObject);
}
public static function parseDate($dateString){
$date = \DateTime::createFromFormat("Y.m.d", $dateString, new \DateTimeZone( 'UTC'));
$date->setTime(0, 0, 0);
return $date;
}
}

View File

@@ -2,6 +2,7 @@
namespace common\components;
use common\models\TicketType;
use common\models\Transfer;
use \Yii;
@@ -348,6 +349,10 @@ class Helper {
public static function isKeyRequired() {
return \Yii::$app->params ['key_required'] == true;
}
public static function isTicketTypeDoorAllowedCheckOn() {
return \Yii::$app->params ['ticket_type_door_allowed_check_on'] == true;
}
public static function getProductSaleDefaultFocus() {
return \Yii::$app->params ['product_sale_default_focus'] ;
@@ -489,5 +494,40 @@ class Helper {
}
}
}
/**
* @param $start \DateTime datetime
* @param $ticketType \common\models\TicketType the ticket type
*/
public static function getTicketExpirationDate($start,$ticketType){
$result = new \DateTime();
$result->setTimezone(new \DateTimeZone("UTC") );
$result->setTimestamp($start->getTimestamp());
$unitCount = $ticketType->time_unit_count;
$unitType = $ticketType->time_unit_type;
switch ($unitType){
case TicketType::TIME_UNIT_DAY:
$result->add(new \DateInterval("P".$unitCount."D"));
$result->sub(new \DateInterval("P1D"));
break;
case TicketType::TIME_UNIT_MONTH:
$result->add(new \DateInterval("P".$unitCount."M"));
$result->sub(new \DateInterval("P1D"));
break;
case TicketType::TIME_UNIT_MONTH_REFERENCE:
if ( $unitCount > 1 ){
$result->add(new \DateInterval("P". ($unitCount -1 )."M"));
}
$result->sub(new \DateInterval("P1D"));
break;
}
$result->setTime(0, 0, 0);
return $result;
}
}

View File

@@ -5,7 +5,7 @@ return [
'supportEmail' => 'rocho02@gmail.com',
'infoEmail' => 'info@rocho-net.hu',
'user.passwordResetTokenExpire' => 3600,
'version' => 'v0.1.07',
'version' => 'v0.1.08',
'company' => 'movar',//gyor
'company_name' => "Freimann Kft.",
'product_visiblity' => 'account',// on reception which products to display. account or global
@@ -60,5 +60,6 @@ return [
*/
'key_toggle_door_log_enabled' => false,
//if key required for entry trough the door
'key_required' => true
'key_required' => true,
'ticket_type_door_allowed_check_on' => false
];

View File

@@ -34,10 +34,11 @@ class Card extends \common\models\BaseFitnessActiveRecord
const TYPE_EMPLOYEE = 50;
public static $FLAG_TICKET = 0;
public static $FLAG_DOOR = 1;
public static $FLAG_KEY = 2;
public static $FLAG_STATUS = 3;
public static $FLAG_TICKET = 0; //has valid ticket
public static $FLAG_DOOR = 1; //door in/out order
public static $FLAG_KEY = 2; //key status
public static $FLAG_STATUS = 3; //allowed/disabled
public static $FLAG_DOOR_ALLOWED = 4; //ticket type allows door
/**
* This script is used in daily scripts, to clear the flag door log status
@@ -65,6 +66,15 @@ class Card extends \common\models\BaseFitnessActiveRecord
UPDATE card set flag = ( flag & ~(1 << 1 ) ) WHERE card.type <> 50 and card.id_card = :id
";
public static function SQL_CLEAR_STATUS_DOOR_ALLOWED_FLAG(){
return "UPDATE card set flag = ( flag & ~(1 << " . Card::$FLAG_DOOR_ALLOWED. " ) ) WHERE card.type <> 50 ";
}
public static function SQL_CLEAR_STATUS_DOOR_ALLOWED_FLAG_FOR_CARD(){
return Card::SQL_CLEAR_STATUS_DOOR_ALLOWED_FLAG() . " and card.id_card = :id ";
}
/**
* @inheritdoc
*/
@@ -227,6 +237,15 @@ class Card extends \common\models\BaseFitnessActiveRecord
$command = $db->createCommand(Card::$SQL_CLEARS_STATUS_DOOR_IN,[':id' => $id]);
$command->execute();
if ( Helper::isTicketTypeDoorAllowedCheckOn()) {
$command = $db->createCommand(Ticket::SQL_UPDATE_DOOR_ALLOWED_FLAG_FOR_CARD(), [':id' => $id]);
$command->execute();
}else{
$command = $db->createCommand(Card::SQL_CLEAR_STATUS_DOOR_ALLOWED_FLAG_FOR_CARD(), [':id' => $id]);
$command->execute();
}
}
public function beforeSave($insert) {
@@ -279,6 +298,11 @@ class Card extends \common\models\BaseFitnessActiveRecord
return Helper::isBitOn($this->flag_out,Card::$FLAG_KEY);
}
/**
* if flag is on, door entry is not allowed.
*/
public function isFlagDoorAllowed(){
return Helper::isBitOn($this->flag,Card::$FLAG_DOOR_ALLOWED);
}
}

View File

@@ -2,6 +2,7 @@
namespace common\models;
use common\components\Helper;
use Yii;
use yii\helpers\Url;
use yii\helpers\VarDumper;
@@ -54,6 +55,43 @@ class Log extends BaseFitnessActiveRecord
public static $TYPE_TOWEL_IN = 190;
public static $TYPE_TOWEL_OUT = 200;
public static $TYPE_CRUD = 210;
public static $TYPE_TICKET_UPDATED_BY_ADMIN = 220;
public static function getTypes(){
return [
Log::$TYPE_INFO => "Info",
Log::$TYPE_ERR => "Hiba",
Log::$TYPE_TICKET_USAGE_FIRST => "Bérlet használat",
Log::$TYPE_TICKET_USAGE_MULTIPLE => "Többszöri bérlet használat",
Log::$TYPE_LOGIN => "Bejelentkezés",
Log::$TYPE_DEFAULT_ACCOUNT=> "Alapértelmezett kassza",
Log::$TYPE_CREATE_CUSTOMER=> "Új vendég",
Log::$TYPE_PROCUREMENT_UPDATE => "Beszerzés módosítás",
Log::$TYPE_TICKET_COUNT_MOVE_OUT => "Ki mozgás",
Log::$TYPE_WASTE => "Selejt",
Log::$TYPE_NEWSLETTER_SUBSCRIBE => "Feliratkozás hirlevélre",
Log::$TYPE_NEWSLETTER_UNSUBSCRIBE => "Leiratkozás hírlevélről",
Log::$TYPE_NEWSLETTER_SENT => "Hirlevél elküldve",
Log::$TYPE_TICKET_EXPIRE_SENT => "Bérlet lejáart figyelmeztetés elküldve",
Log::$TYPE_NEWSLETTER_SEND_START => "Hirlevél küldés start",
Log::$TYPE_NEWSLETTER_SEND_END => "Hirlevél küldés vége",
Log::$TYPE_KEY_ASSIGN => "Kulcs kiadás",
Log::$TYPE_KEY_UNASSIGN => "Kulcs visszaadás",
Log::$TYPE_TOWEL_IN => "Törölköző ki",
Log::$TYPE_TOWEL_OUT => "Törölköző vissza",
Log::$TYPE_CRUD => "CRUD",
Log::$TYPE_TICKET_UPDATED_BY_ADMIN => "Bérlet módosítás"
];
}
public function getTypeName(){
$types = Log::getTypes();
return Helper::getArrayValue($types,$this->type,null);
}
/**
* @inheritdoc
@@ -132,5 +170,47 @@ class Log extends BaseFitnessActiveRecord
$model->id_user = 1;
$model->save(false);
}
public function getUser(){
return $this->hasOne( User::className(), ["id" =>"id_user" ] );
}
public function getTicket(){
return $this->hasOne( Ticket::className(), ["id_ticket" =>"id_ticket" ] );
}
public function getCustomer(){
return $this->hasOne( Customer::className(), ["id_customer" =>"id_customer" ] );
}
public function getMoneyMovement(){
return $this->hasOne( MoneyMovement::className(), ["id_money_movement" =>"id_money_movement" ] );
}
public function getUserName(){
$user = $this->user;
if ( isset($user)){
return $user->username;
}
return null;
}
public function getCustomerName(){
$customer = $this->customer;
if ( isset($customer)){
return $customer->name;
}
return null;
}
public function getTicketName(){
$ticket = $this->ticket;
if ( isset($ticket)){
return $ticket->ticketTypeName;
}
return null;
}
}

View File

@@ -32,6 +32,8 @@ use common\components\Helper;
* @property string $created_at
* @property string $updated_at
* @property int id_contract
* @property integer $original_price
* @property string $original_end;
*
* @property \common\models\Card card
*/
@@ -73,8 +75,25 @@ class Ticket extends \common\models\BaseFitnessActiveRecord
,c1.flag = case when t.id_card is null then ( c1.flag | 1 << 0 ) else ( c1.flag & ~(1 << 0) ) end
, c1.id_ticket_current = case when t.id_ticket is null then null else t.id_ticket end
WHERE c1.type <> 50 and c1.id_card = :id";
public static function SQL_UPDATE_DOOR_ALLOWED_FLAG(){
return "
UPDATE card c
LEFT JOIN ticket t on c.id_ticket_current = t.id_ticket
LEFT JOIN ticket_type tt on t.id_ticket_type = tt.id_ticket_type
set
c.flag = case when tt.door_allowed <> 1 then ( c.flag | 1 << 4 ) else ( c.flag & ~(1 << 4) ) end
WHERE c.type <> 50
";
}
public static function SQL_UPDATE_DOOR_ALLOWED_FLAG_FOR_CARD(){
return Ticket::SQL_UPDATE_DOOR_ALLOWED_FLAG() . " and c.id_card = :id";
}
/**
* @inheritdoc
*/
@@ -124,6 +143,8 @@ class Ticket extends \common\models\BaseFitnessActiveRecord
'id_card' => Yii::t('backend/ticket','Card'),
'id_customer' => Yii::t('backend/ticket','Customer'),
'payment_method' => Yii::t('common/transfer', 'Fizetési mód'),
'original_price' => Yii::t('common/transfer', 'Eredeti ár'),
'original_end' => Yii::t('common/transfer', 'Eredeti érvényesség vége'),
];
}
@@ -135,6 +156,10 @@ class Ticket extends \common\models\BaseFitnessActiveRecord
public function getContract(){
return $this->hasOne( Contract::className(), ["id_contract" =>"id_contract" ] );
}
public function getTransfer(){
return $this->hasOne( Transfer::className(), ["id_object" =>"id_ticket"] )->andWhere(['transfer.type' => Transfer::TYPE_TICKET]);
}
public function getCardNumber(){
$result = "";
@@ -395,6 +420,4 @@ class Ticket extends \common\models\BaseFitnessActiveRecord
Card::updateCardFlagTicket($this->id_card);;
}
}

View File

@@ -21,6 +21,7 @@ use yii\helpers\ArrayHelper;
* @property integer installment_enabled
* @property integer installment_count
* @property integer installment_money
* @property integer door_allowed
* @property string $created_at
* @property string $updated_at
*/
@@ -38,6 +39,9 @@ class TicketType extends \common\models\BaseFitnessActiveRecord {
const INSTALLMENT_OFF = 0;
const INSTALLMENT_ON = 1;
const FLAG_DOOR_ALLOWED_OFF = 0;
const FLAG_DOOR_ALLOWED_ON = 1;
/**
* @inheritdoc
@@ -104,6 +108,13 @@ class TicketType extends \common\models\BaseFitnessActiveRecord {
[['installment_money',], 'integer'],
[['installment_count',], 'integer'],
////////////////
//door_allowed
////////////////
[['door_allowed',], 'integer'],
[['door_allowed',], 'in', 'range' => [ self::FLAG_DOOR_ALLOWED_OFF, self::FLAG_DOOR_ALLOWED_ON ]],
];
}
@@ -128,6 +139,7 @@ class TicketType extends \common\models\BaseFitnessActiveRecord {
'installment_enabled' => Yii::t('common/ticket_type', 'Részlet fizetés a brutto áron felül'),
'installment_count' => Yii::t('common/ticket_type', 'Havi részletek száma'),
'installment_money' => Yii::t('common/ticket_type', 'Havi részlet összege'),
'door_allowed' => Yii::t('common/ticket_type', 'Forgóvilla'),
];
}
@@ -188,6 +200,11 @@ class TicketType extends \common\models\BaseFitnessActiveRecord {
public function isStudent(){
return $this->flag_student == ( self::FLAG_STUDENT_ON);
}
public function isDoor(){
return $this->door_allowed == ( self::FLAG_STUDENT_ON);
}
public function isInstallment(){
return $this->installment_enabled == ( self::INSTALLMENT_ON);
}

View File

@@ -197,6 +197,13 @@ class Transfer extends \common\models\BaseFitnessActiveRecord {
"id_transfer" => "id_transfer"
] );
}
public function getCustomer(){
return $this->hasOne ( Customer::className (), [
"id_customer" => "id_customer"
] );
}
public function getSale() {
return $this->hasOne ( Sale::className (), [
"id_sale" => "id_object"