diff --git a/changelog.txt b/changelog.txt index 66c3a21..c86a532 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,5 @@ +-0.0.31 + - Add transfer list and daily list to see only may 3 days old data -0.0.30 - fix discount to integer ( using floor ) -0.0.29 diff --git a/common/components/DailyListing.php b/common/components/DailyListing.php index b45f6cc..e59fb88 100644 --- a/common/components/DailyListing.php +++ b/common/components/DailyListing.php @@ -118,6 +118,23 @@ class DailyListing public $accountState; //the cassa object for we load the data + + protected function calcStartDaysSinceToday(){ + $start = $this->timestampStart; + $now = time(); + + $d = \DateTime::createFromFormat("Y-m-d H:i", $start)->getTimeStamp(); + $days_between = ceil(abs($now - $d) / 86400); + + return $days_between; + } + + protected function isStartDateToEarly(){ + $days_visiblity = Helper::getReceptionVisibilityDays(); + $days_between = $this->calcStartDaysSinceToday(); + return $days_between > $days_visiblity; + } + public function readTotalEasy(){ $this->readTicketMoney(); $this->readProductsMoney(); @@ -173,9 +190,11 @@ class DailyListing public function isModeAdmin(){ return $this->mode == 'admin'; } + public function isModeAccountState(){ return $this->mode == 'accountstate'; } + public function isModeReception(){ return $this->mode == 'reception'; } @@ -255,6 +274,19 @@ class DailyListing if ( $this->isModeReception() || $this->isModeAccountState() ){ $query->andWhere(['transfer.payment_method' => Transfer::PAYMENT_METHOD_CASH]); } + + if ( !RoleDefinition::isAdmin() ){ + + if ( $this->isStartDateToEarly() ){ + + $time = date( "Y-m-d H:i:s", strtotime("today -3 day") ); + + $start_date_condition = ['or',[ '>=', 'transfer.created_at', $time ] ,[ '>=', 'transfer.paid_at', $time] ]; + + $query->andFilterWhere( $start_date_condition ); + + } + } } diff --git a/common/components/Helper.php b/common/components/Helper.php index a288ebe..0ce872e 100644 --- a/common/components/Helper.php +++ b/common/components/Helper.php @@ -182,6 +182,11 @@ class Helper { public static function isAccountStateClosePreloadMoney() { return \Yii::$app->params ['account_state_close_preload_money'] == true; } + + public static function getReceptionVisibilityDays() { + return \Yii::$app->params ['reception_visibility_days'] ; + } + public static function getRealUserIp() { $client = @$_SERVER ['HTTP_CLIENT_IP']; $forward = @$_SERVER ['HTTP_X_FORWARDED_FOR']; diff --git a/common/config/params.php b/common/config/params.php index 302adb7..99a2507 100644 --- a/common/config/params.php +++ b/common/config/params.php @@ -4,7 +4,7 @@ return [ 'supportEmail' => 'rocho02@gmail.com', 'infoEmail' => 'info@rocho-net.hu', 'user.passwordResetTokenExpire' => 3600, - 'version' => 'v0.0.30', + 'version' => 'v0.0.31', 'company' => 'movar',//gyor 'company_name' => "Freimann Kft.", 'product_visiblity' => 'account',// on reception which products to display. account or global @@ -20,4 +20,8 @@ return [ //vagy mindent //értékek user|all 'user_cart_item_visibility' => 'user', + /** + * Hány napig láthatják visszamenőleg a recepciósok az adatokat + * */ + 'reception_visibility_days' => 3 ]; diff --git a/common/models/Transfer.php b/common/models/Transfer.php index a70c5e7..8c1b555 100644 --- a/common/models/Transfer.php +++ b/common/models/Transfer.php @@ -430,6 +430,9 @@ class Transfer extends \common\models\BaseFitnessActiveRecord { return $transfer; } + + + public static function modelsToArray($transfers, $default = []) { if ($transfers == null) { return $default; diff --git a/common/models/TransferListSearch.php b/common/models/TransferListSearch.php index 1bbe1d5..da9ef82 100644 --- a/common/models/TransferListSearch.php +++ b/common/models/TransferListSearch.php @@ -48,51 +48,51 @@ class TransferListSearch extends Transfer /** * all money gained with ticket sell * */ - public $ticketMoney; + public $ticketMoney = 0; /** * all money gained with product sell * */ - public $productMoney; + public $productMoney = 0; /** * all money gained with product sell * */ - public $productMoneyNetto; + public $productMoneyNetto = 0; /** * all money gained with product sell grouped by category * */ - public $productMoneies; + public $productMoneies = []; /** * all money lost by money movement * */ - public $moneyMovementMoneis; - public $moneyMovementMoney; + public $moneyMovementMoneis = 0; + public $moneyMovementMoney = 0; /** * total gained money brutto * */ - public $total; + public $total = 0; /** * total gained money netto * */ - public $totalNetto; + public $totalNetto = 0; /** * ticket sale statisitc * */ - public $ticketStats; + public $ticketStats =[]; /** * money movements by type * */ - public $moneyMovementsByType; + public $moneyMovementsByType = []; public $tickets; /** * all product transfer * */ - public $products; - public $moneyMovements; + public $products = []; + public $moneyMovements = []; - public $productsByCategory; + public $productsByCategory = []; public $currentUser; public $currentAccount; @@ -112,14 +112,43 @@ class TransferListSearch extends Transfer [[ 'start', ], 'date', 'format' =>Yii::$app->formatter->datetimeFormat , 'timestampAttribute' => 'timestampStart' ,'timestampAttributeFormat' => 'yyyy-MM-dd HH:mm' ,'timeZone' => 'UTC' ], [[ 'end' , ], 'date' ,'format' =>Yii::$app->formatter->datetimeFormat , 'timestampAttribute' => 'timestampEnd' ,'timestampAttributeFormat' => 'yyyy-MM-dd HH:mm' ,'timeZone' => 'UTC' ], + [['start','end' ], 'required'], [ [ 'id_account','id_user' ] , 'integer'], ['types', 'each', 'rule' => ['integer']], ['output', 'safe' ], ['outputView', 'safe' ], +// ['start', 'validateStart'] ]; } + public function validateStart($attribute,$param){ + + + + if ( $this->isStartDateToEarly() ){ + $this->addError($attribute,"Érvénytelen kezdő dátum"); + } + + } + + protected function calcStartDaysSinceToday(){ + $start = $this->timestampStart; + $now = time(); + + $d = \DateTime::createFromFormat("Y-m-d H:i", $start)->getTimeStamp(); + $days_between = ceil(abs($now - $d) / 86400); + + return $days_between; + } + + protected function isStartDateToEarly(){ + $days_visiblity = Helper::getReceptionVisibilityDays(); + $days_between = $this->calcStartDaysSinceToday(); + return $days_between > $days_visiblity; + } + + public function isModeAdmin(){ return $this->mode == 'admin'; } @@ -253,9 +282,33 @@ class TransferListSearch extends Transfer $query->andFilterWhere(['or' , $created_condition , $paid_condition]); $query->andWhere(['transfer.status' => Transfer::STATUS_PAID]); + if ( !$this->isModeAdmin()){ $query->andWhere(['transfer.payment_method' => Transfer::PAYMENT_METHOD_CASH]); + + } + + + + if ( !RoleDefinition::isAdmin() ){ + /** + * Csak az admin láthat minden adatot + * ha a start dátum korábbi, mint ahogy azt a recepciósok láthatják, + * hozzáadjuk a querykhez a dátum korlátozást + * */ + if ( $this->isStartDateToEarly() ){ + + $days = Helper::getReceptionVisibilityDays(); + $time = date( "Y-m-d H:i:s", strtotime("today -$days day") ); + + $start_date_condition = ['or',[ '>=', 'transfer.created_at', $time ] ,[ '>=', 'transfer.paid_at', $time] ]; + + $query->andFilterWhere( $start_date_condition ); + + } + } + } diff --git a/frontend/models/TicketCreate.php b/frontend/models/TicketCreate.php index 610cbf6..fc9e61e 100644 --- a/frontend/models/TicketCreate.php +++ b/frontend/models/TicketCreate.php @@ -26,6 +26,7 @@ class TicketCreate extends Ticket{ public $_account; public $_discount; public $_transfer; + public $_ticketType; public $customer; @@ -92,6 +93,7 @@ class TicketCreate extends Ticket{ public function validateTicketType($attribute,$params){ $type = TicketType::findOne($this->id_ticket_type); + $this->_ticketType = $type; if ( !isset($type)) { $this->addError($attribute,Yii::t('frontend/ticket' , 'Invalid ticket type' )); }else{ @@ -185,8 +187,28 @@ class TicketCreate extends Ticket{ } protected function addTransfer(){ - $transfer = Transfer::createTicketTransfer($this->_account, $this->_discount, null, 1, $this); + //$transfer = Transfer::createTicketTransfer($this->_account, $this->_discount, null, 1, $this); + + $transfer = new Transfer(); + + $transfer->type = Transfer::TYPE_TICKET; + $transfer->direction = Transfer::DIRECTION_IN; + + $transfer->id_object = $this->id_ticket; + + $transfer->item_price = $this->_ticketType->price_brutto; + $transfer->count = 1; + + if (isset ( $this->_discount )) { + $transfer->id_discount = $this->_discount->id_discount; + } + + + $transfer->money = $this->price_brutto; + + $transfer->id_account = $this->_account->id_account; + $status = Transfer::STATUS_PAID; if ( $this->isAppendToUserCart() ){ $status = Transfer::STATUS_NOT_PAID; @@ -206,10 +228,15 @@ class TicketCreate extends Ticket{ } $transfer->id_user = \Yii::$app->user->id; $transfer->id_customer = $this->customer->id_customer; - $transfer->save(); + if ( !$transfer->save(false) ){ + \Yii::error("Nem sikerült mentenei a bérlet tranzakció objektumot!"); + throw new \Exception("Nem sikerült menteni a bérlet tranzakciót"); + } $this->_transfer = $transfer; } + + protected function addToCart(){ if ( $this->isAddToCart()){ $item = new UserSoldItem(); @@ -242,7 +269,10 @@ class TicketCreate extends Ticket{ $item = new UserSoldItem(); $item->id_transfer = $this->_transfer->id_transfer; $item->id_user = \Yii::$app->user->id; - $item->save(false); + if ( !$item->save(false) ){ + \Yii::error("Nem sikerült menteni a bérletet! Recepció kosár hozzárendelés sikertelen!"); + throw new \Exception("Nem sikerült menteni a bérletet! Recepció kosár hozzárendelés sikertelen!"); + } } } @@ -251,7 +281,11 @@ class TicketCreate extends Ticket{ $item = new ShoppingCart(); $item->id_customer = $this->customer->id_customer; $item->id_transfer = $this->_transfer->id_transfer; - $item->save(false); + if ( !$item->save(false) ){ + \Yii::error("Nem sikerült menteni a bérletet! Vendég kosár hozzárendelés sikertelen!"); + throw new \Exception("Nem sikerült menteni a bérletet! Vendég kosár hozzárendelés sikertelen!"); + } + } } diff --git a/frontend/views/transfer/list.php b/frontend/views/transfer/list.php index f8f00b0..6632f95 100644 --- a/frontend/views/transfer/list.php +++ b/frontend/views/transfer/list.php @@ -46,6 +46,14 @@ td.name{ } + +

title) ?>