236 lines
6.7 KiB
PHP
236 lines
6.7 KiB
PHP
<?php
|
|
|
|
namespace common\models;
|
|
|
|
use Yii;
|
|
use yii\base\Object;
|
|
use yii\helpers\ArrayHelper;
|
|
|
|
/**
|
|
* This is the model class for table "transfer".
|
|
*
|
|
* @property integer $id_transfer
|
|
* @property integer $id_discount
|
|
* @property integer $id_currency
|
|
* @property integer $id_account
|
|
* @property integer $id_object
|
|
* @property integer $status
|
|
* @property integer $type
|
|
* @property integer $item_price
|
|
* @property integer $count
|
|
* @property integer $money
|
|
* @property integer $money_currency
|
|
* @property integer $rate
|
|
* @property integer $id_user
|
|
* @property string $comment
|
|
* @property string $created_at
|
|
* @property string $updated_at
|
|
*/
|
|
class Transfer extends \yii\db\ActiveRecord
|
|
{
|
|
|
|
const TYPE_PRODUCT = 10;
|
|
const TYPE_TICKET = 20;
|
|
|
|
const STATUS_NOT_PAID = 10;
|
|
const STATUS_PAID = 20;
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public static function tableName()
|
|
{
|
|
return 'transfer';
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function rules()
|
|
{
|
|
return [
|
|
[['id_discount', 'id_currency', 'id_object', 'status', 'type', 'item_price', 'count', 'money', 'money_currency', 'rate', 'id_user'], 'integer'],
|
|
[['created_at', 'updated_at'], 'safe'],
|
|
[['comment'], 'string', 'max' => 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;
|
|
}
|
|
|
|
}
|