255] ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'id_transfer' => Yii::t('common/transfer', 'Id Transfer'), 'id_discount' => Yii::t('common/transfer', 'Id Discount'), 'id_currency' => Yii::t('common/transfer', 'Id Currency'), 'id_object' => Yii::t('common/transfer', 'Id Object'), 'status' => Yii::t('common/transfer', 'Status'), 'type' => Yii::t('common/transfer', 'Type'), 'item_price' => Yii::t('common/transfer', 'Item Price'), 'count' => Yii::t('common/transfer', 'Count'), 'money' => Yii::t('common/transfer', 'Money'), 'money_currency' => Yii::t('common/transfer', 'Money Currency'), 'rate' => Yii::t('common/transfer', 'Rate'), 'id_user' => Yii::t('common/transfer', 'Id User'), 'comment' => Yii::t('common/transfer', 'Comment'), 'created_at' => Yii::t('common/transfer', 'Created At'), 'updated_at' => Yii::t('common/transfer', 'Updated At'), ]; } public function getProduct(){ return $this->hasOne( Product::className(), ["id_product" =>"id_object" ] ); } public function getAccount(){ return $this->hasOne( Account::className(), ["id_account" =>"id_account" ] ); } public function getCurrency(){ return $this->hasOne( Currency::className(), ["id_currency" =>"id_currency" ] ); } public function getDiscount(){ return $this->hasOne( Discount::className(), ["id_discount" =>"id_discount" ] ); } public function getUserSoldItem(){ return $this->hasOne( UserSoldItem::className(), ["id_transfer" =>"id_transfer" ] ); } public function toProductSoldString(){ $s = ""; $s .= $this->count; $s .= " " . Yii::t('frontend/transfer', 'pieces') . " "; $s .= $this->product->name; $s .= " - "; $s .= $this->account->name; return $s; } /** * @param $account common\models\Account * @param $discount common\models\Discount * @param $currency common\models\Currency * @param $product common\models\Product * */ public static function createProductTransfer($account, $discount, $currency, $count,$product ){ $transfer = new Transfer(); $transfer->type = Transfer::TYPE_PRODUCT; $transfer->id_object = $product->id_product; $transfer->item_price = $product->sale_price; $totalPrice = $transfer->item_price; $transfer->count = $count; $totalPrice = $totalPrice * $count; if ( isset( $discount ) ){ $transfer->id_discount = $discount->id_discount; $totalPrice = Discount::applyDiscount( $totalPrice, $discount); } $transfer->money = $totalPrice; if ( isset( $currency ) ){ $transfer->rate = $currency->rate; $transfer->money_currency = Currency::applyCurrency($totalPrice, $currency); } $transfer->id_account = $account->id_account; return $transfer; } /** * @param $account common\models\Account * @param $discount common\models\Discount * @param $currency common\models\Currency * @param $ticket common\models\Ticket * */ public static function createTicketTransfer($account, $discount, $currency, $count,$ticket ){ $transfer = new Transfer(); $transfer->type = Transfer::TYPE_TICKET; $transfer->id_object = $ticket->id_ticket; $transfer->item_price = $ticket->price_brutto; $totalPrice = $transfer->item_price; $transfer->count = $count; $totalPrice = $totalPrice * $count; if ( isset( $discount ) ){ $transfer->id_discount = $discount->id_discount; $totalPrice = Discount::applyDiscount( $totalPrice, $discount); } $transfer->money = $totalPrice; if ( isset( $currency ) ){ $transfer->rate = $currency->rate; $transfer->money_currency = Currency::applyCurrency($totalPrice, $currency); } $transfer->id_account = $account->id_account; return $transfer; } public static function modelsToArray($transfers,$default = []){ if ( $transfers == null ){ return $default; } return ArrayHelper::toArray($transfers, [ 'common\models\Transfer' => [ 'id_transfer', 'item_price', 'count', 'money', 'money_currency', 'time' => function ($transfer){ return Yii::$app->formatter->asTime($transfer->created_at); }, 'account_name' => function ($transfer) { return $transfer->account->name; }, 'product_name' => function ($transfer) { $result = ""; if ( $transfer->type == Transfer::TYPE_TICKET ){ $result = $transfer->ticket->type->name; }else{ $result = $transfer->product->name; } return $result; }, 'category' => function ($transfer) { return $transfer->product->productCategoryName; }, ], ]); } public static function readUserSoldTransfers($user){ $transfers = []; $query = Transfer::find(); // $query->innerJoinWith('userSoldItem'); $query->andWhere(['transfer.id_user' => $user->id ]); $transfers = $query->all(); return $transfers; } }