add daily listing by paid_by, add customer cart details
This commit is contained in:
@@ -63,19 +63,26 @@ class ShoppingCart extends \yii\db\ActiveRecord
|
||||
return $transfers;
|
||||
}
|
||||
|
||||
public static function payout( $customer, $idTransfers) {
|
||||
public static function payout( $customer, $idTransfers, $account = null) {
|
||||
//apply transfer object
|
||||
//delete cart
|
||||
$sql = "UPDATE transfer AS t
|
||||
INNER JOIN shopping_cart AS s ON t.id_transfer = s.id_transfer
|
||||
SET t.paid_by = ".\Yii::$app->user->id.", t.status = " . Transfer::STATUS_PAID . ", t.paid_at = '" . date('Y-m-d H:i:s' ) ."'"
|
||||
. " WHERE t.status = " . Transfer::STATUS_NOT_PAID
|
||||
SET t.paid_by = ".\Yii::$app->user->id.", t.status = " . Transfer::STATUS_PAID . ", t.paid_at = '" . date('Y-m-d H:i:s' ) ."'";
|
||||
|
||||
if ( isset($account)){
|
||||
$sql .= " , id_account = " . $account;
|
||||
}
|
||||
|
||||
$sql .= " WHERE t.status = " . Transfer::STATUS_NOT_PAID
|
||||
. " and s.id_customer = " . $customer->id_customer
|
||||
. " and t.id_transfer in ( '" . implode("','", $idTransfers )."' )";
|
||||
|
||||
$q1 = Yii::$app->db->createCommand($sql);
|
||||
$q1->execute();
|
||||
|
||||
|
||||
|
||||
// ShoppingCart::deleteAll(['id_customer' => $customer->id_customer]);
|
||||
|
||||
if ( isset($idTransfers) ){
|
||||
|
||||
@@ -198,6 +198,23 @@ class Transfer extends \common\models\BaseFitnessActiveRecord {
|
||||
"id_sale" => "id_object"
|
||||
] );
|
||||
}
|
||||
|
||||
public function getPaidByUser() {
|
||||
return $this->hasOne ( User::className (), [
|
||||
"id" => "paid_by"
|
||||
] );
|
||||
}
|
||||
|
||||
public function getPaidByName() {
|
||||
$result = "";
|
||||
$user = $this->paidByUser;
|
||||
if (isset ( $this->paidByUser )) {
|
||||
$result = $user->username;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getObjectName() {
|
||||
$result = "";
|
||||
if ($this->type == Transfer::TYPE_TICKET) {
|
||||
@@ -470,9 +487,11 @@ class Transfer extends \common\models\BaseFitnessActiveRecord {
|
||||
$query = Transfer::find ();
|
||||
|
||||
$query->innerJoinWith ( 'userSoldItem' );
|
||||
$query->andWhere ( [
|
||||
'user_sold_item.id_user' => $user->id
|
||||
] );
|
||||
if ( Helper::isUserCartVisibilityUser()){
|
||||
$query->andWhere ( [
|
||||
'user_sold_item.id_user' => $user->id
|
||||
] );
|
||||
}
|
||||
$transfers = $query->all ();
|
||||
|
||||
return $transfers;
|
||||
@@ -823,7 +842,7 @@ class Transfer extends \common\models\BaseFitnessActiveRecord {
|
||||
$query->from ( 'transfer' );
|
||||
$query->innerJoin ( "account", "account.id_account = transfer.id_account" );
|
||||
$query->andWhere ( [
|
||||
'transfer.id_user' => $idUser
|
||||
'transfer.paid_by' => $idUser
|
||||
] );
|
||||
|
||||
$created_condition = [
|
||||
|
||||
@@ -222,7 +222,7 @@ class TransferListSearch extends Transfer
|
||||
$query->andWhere(['user_account_assignment.id_user' => Yii::$app->user->id ]);
|
||||
|
||||
if ( RoleDefinition::isReception() || !$this->isModeAdmin()){
|
||||
$query->andWhere(['transfer.id_user' => Yii::$app->user->id ]);
|
||||
$query->andWhere(['transfer.paid_by' => Yii::$app->user->id ]);
|
||||
}
|
||||
|
||||
|
||||
@@ -242,9 +242,8 @@ class TransferListSearch extends Transfer
|
||||
|
||||
$query->andFilterWhere([
|
||||
'transfer.id_account' => $this->id_account,
|
||||
'transfer.id_user' => $this->id_user,
|
||||
'transfer.type' => $this->type,
|
||||
'transfer.id_user' => $this->id_user,
|
||||
'transfer.paid_by' => $this->id_user,
|
||||
]);
|
||||
|
||||
$created_condition = ['and',[ '>=', 'transfer.created_at', $this->timestampStart ] ,[ '<', 'transfer.created_at', $this->timestampEnd ] ];
|
||||
@@ -425,7 +424,7 @@ class TransferListSearch extends Transfer
|
||||
$query->innerJoin("ticket", "ticket.id_ticket = transfer.id_object");
|
||||
$query->innerJoin("customer","customer.id_customer = transfer.id_customer");
|
||||
$query->innerJoin("ticket_type", "ticket.id_ticket_type = ticket_type.id_ticket_type");
|
||||
$query->innerJoin("user", "transfer.id_user = user.id");
|
||||
$query->innerJoin("user", "transfer.paid_by = user.id");
|
||||
$query->orderBy(['transfer.created_at' => SORT_ASC]);
|
||||
$this->addQueryFilters($query);
|
||||
|
||||
@@ -449,7 +448,7 @@ class TransferListSearch extends Transfer
|
||||
$query->innerJoin("product", "sale.id_product = product.id_product");
|
||||
$query->innerJoin("product_category", "product.id_product_category = product_category.id_product_category");
|
||||
|
||||
$query->innerJoin("user", "transfer.id_user = user.id");
|
||||
$query->innerJoin("user", "transfer.paid_by = user.id");
|
||||
$query->orderBy(['transfer.created_at' => SORT_ASC]);
|
||||
$this->addQueryFilters($query);
|
||||
|
||||
@@ -468,7 +467,7 @@ class TransferListSearch extends Transfer
|
||||
$query->from('transfer');
|
||||
$query->andWhere(['transfer.type' => Transfer::TYPE_MONEY_MOVEMENT_OUT]);
|
||||
$query->innerJoin("money_movement", "money_movement.id_money_movement = transfer.id_object");
|
||||
$query->innerJoin("user", "transfer.id_user = user.id");
|
||||
$query->innerJoin("user", "transfer.paid_by = user.id");
|
||||
$query->orderBy(['transfer.created_at' => SORT_ASC]);
|
||||
$this->addQueryFilters($query);
|
||||
|
||||
|
||||
@@ -155,13 +155,13 @@ class TransferSaleSearch extends Transfer
|
||||
|
||||
$query->andFilterWhere([
|
||||
'transfer.id_account' => $this->id_account,
|
||||
'transfer.id_user' => $this->id_user,
|
||||
'transfer.type' => $this->type,
|
||||
'transfer.id_user' => $this->id_user,
|
||||
'product_category.id_product_category' => $this->category,
|
||||
'transfer.status' => $this->status,
|
||||
'product.id_product' => $this->id_product,
|
||||
]);
|
||||
|
||||
$query->andFilterWhere( ['or' , ['transfer.id_user' => $this->id_user ] , ['transfer.paid_by' => $this->id_user]] );
|
||||
|
||||
$created_condition = ['and',[ '>=', 'transfer.created_at', $this->timestampStart ] ,[ '<', 'transfer.created_at', $this->timestampEnd ] ];
|
||||
$paid_condition = ['and',[ '>=', 'transfer.paid_at', $this->timestampStart ] ,[ '<', 'transfer.paid_at', $this->timestampEnd ] ];
|
||||
@@ -271,7 +271,7 @@ class TransferSaleSearch extends Transfer
|
||||
protected function readProducts(){
|
||||
|
||||
$query = (new \yii\db\Query());
|
||||
$query->select([ 'transfer.payment_method as transfer_payment_method', 'transfer.id_transfer as id_transfer', 'customer.name as customer_name' ,'user.username as user_name','account.name as account_name' , 'product_category.name as product_category_name', 'product.name as product_name', 'transfer.money AS product_money', 'transfer.count AS product_count', 'transfer.money AS product_money','transfer.item_price AS product_item_price', 'transfer.created_at as product_created_at','transfer.paid_at as product_paid_at']);
|
||||
$query->select([ 'paid_by.username as paid_by_name', 'transfer.payment_method as transfer_payment_method', 'transfer.id_transfer as id_transfer', 'customer.name as customer_name' ,'user.username as user_name','account.name as account_name' , 'product_category.name as product_category_name', 'product.name as product_name', 'transfer.money AS product_money', 'transfer.count AS product_count', 'transfer.money AS product_money','transfer.item_price AS product_item_price', 'transfer.created_at as product_created_at','transfer.paid_at as product_paid_at']);
|
||||
$query->from('transfer');
|
||||
$query->andWhere(['transfer.type' => Transfer::TYPE_PRODUCT]);
|
||||
$query->innerJoin("sale", "sale.id_sale = transfer.id_object");
|
||||
@@ -279,6 +279,7 @@ class TransferSaleSearch extends Transfer
|
||||
$query->innerJoin("product_category", "product.id_product_category = product_category.id_product_category");
|
||||
$query->leftJoin("customer", "transfer.id_customer = customer.id_customer");
|
||||
$query->innerJoin("user", "transfer.id_user = user.id");
|
||||
$query->leftJoin("user as paid_by", "transfer.paid_by = paid_by.id");
|
||||
$query->orderBy(['transfer.created_at' => SORT_ASC]);
|
||||
$this->addQueryFilters($query);
|
||||
|
||||
|
||||
@@ -151,11 +151,11 @@ class TransferTicketSearch extends Transfer
|
||||
|
||||
$query->andFilterWhere([
|
||||
'transfer.id_account' => $this->id_account,
|
||||
'transfer.id_user' => $this->id_user,
|
||||
'transfer.type' => $this->type,
|
||||
'transfer.id_user' => $this->id_user,
|
||||
'ticket_type.id_ticket_type' => $this->id_ticket_type,
|
||||
]);
|
||||
|
||||
$query->andFilterWhere( ['or' , ['transfer.id_user' => $this->id_user ] , ['transfer.paid_by' => $this->id_user]] );
|
||||
|
||||
$created_condition = ['and',[ '>=', 'transfer.created_at', $this->timestampStart ] ,[ '<', 'transfer.created_at', $this->timestampEnd ] ];
|
||||
$paid_condition = ['and',[ '>=', 'transfer.paid_at', $this->timestampStart ] ,[ '<', 'transfer.paid_at', $this->timestampEnd ] ];
|
||||
@@ -207,13 +207,14 @@ class TransferTicketSearch extends Transfer
|
||||
|
||||
protected function readTickets(){
|
||||
$query = (new \yii\db\Query());
|
||||
$query->select([ 'ticket.id_ticket as ticket_id_ticket', 'customer.name as customer_name', 'user.username as user_name', 'account.name as account_name','ticket_type.name as ticket_type_name' ,'ticket.status as ticket_status', 'transfer.count AS ticket_count', 'transfer.money AS ticket_money','transfer.item_price AS ticket_item_price', 'transfer.created_at as ticket_created_at','transfer.paid_at as ticket_paid_at']);
|
||||
$query->select([ 'paid_by.username as paid_by_name', 'ticket.id_ticket as ticket_id_ticket', 'customer.name as customer_name', 'user.username as user_name', 'account.name as account_name','ticket_type.name as ticket_type_name' ,'ticket.status as ticket_status', 'transfer.count AS ticket_count', 'transfer.money AS ticket_money','transfer.item_price AS ticket_item_price', 'transfer.created_at as ticket_created_at','transfer.paid_at as ticket_paid_at']);
|
||||
$query->from('transfer');
|
||||
$query->andWhere(['transfer.type' => Transfer::TYPE_TICKET]);
|
||||
$query->innerJoin("ticket", "ticket.id_ticket = transfer.id_object");
|
||||
$query->innerJoin("customer","customer.id_customer = transfer.id_customer");
|
||||
$query->innerJoin("ticket_type", "ticket.id_ticket_type = ticket_type.id_ticket_type");
|
||||
$query->innerJoin("user", "transfer.id_user = user.id");
|
||||
$query->leftJoin("user as paid_by", "transfer.paid_by = paid_by.id");
|
||||
$query->orderBy(['transfer.created_at' => SORT_ASC]);
|
||||
$this->addQueryFilters($query);
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ namespace common\models;
|
||||
use Yii;
|
||||
use yii\db\Query;
|
||||
use yii\db\Expression;
|
||||
use common\components\Helper;
|
||||
|
||||
/**
|
||||
* This is the model class for table "user_sold_item".
|
||||
@@ -89,27 +90,55 @@ class UserSoldItem extends \yii\db\ActiveRecord
|
||||
/**
|
||||
* @param common\models\User $user
|
||||
* */
|
||||
public static function payout( $user, $idTransfers = null ) {
|
||||
public static function payout( $user, $idTransfers = null, $account = null ) {
|
||||
//apply transfer object
|
||||
//delete cart
|
||||
$sql = "UPDATE transfer AS t
|
||||
INNER JOIN user_sold_item AS s ON t.id_transfer = s.id_transfer
|
||||
SET t.paid_by = ".$user->id.", t.status = " . Transfer::STATUS_PAID . ", t.paid_at = '" . date('Y-m-d H:i:s' ) ."'"
|
||||
. " WHERE t.status = " . Transfer::STATUS_NOT_PAID
|
||||
. " and s.id_user =" . $user->id ;
|
||||
SET t.paid_by = ".$user->id.", t.status = " . Transfer::STATUS_PAID . ", t.paid_at = '" . date('Y-m-d H:i:s' ) ."' ";
|
||||
|
||||
if ( isset($idTransfers)){
|
||||
$sql .= " and t.id_transfer in ( '" . implode("','", $idTransfers )."' )";
|
||||
}
|
||||
if ( isset($account)){
|
||||
$sql .= " , id_account = " . $account;
|
||||
}
|
||||
|
||||
$sql .= " WHERE t.status = " . Transfer::STATUS_NOT_PAID;
|
||||
|
||||
//we can see all transfer in cart, or just our
|
||||
if ( Helper::isUserCartVisibilityUser()){
|
||||
$sql .= " and s.id_user =" . $user->id ;
|
||||
}
|
||||
|
||||
//just payout selected transfers
|
||||
if ( isset($idTransfers)){
|
||||
$sql .= " and t.id_transfer in ( '" . implode("','", $idTransfers )."' )";
|
||||
}
|
||||
|
||||
$q1 = Yii::$app->db->createCommand($sql);
|
||||
$q1->execute();
|
||||
|
||||
|
||||
$deleteConditions = [];
|
||||
|
||||
if ( isset($idTransfers) ){
|
||||
UserSoldItem::deleteAll(['and' ,['id_user' => Yii::$app->user->id] ,['in','id_transfer',$idTransfers] ]);
|
||||
}else{
|
||||
UserSoldItem::deleteAll(['id_user' => Yii::$app->user->id]);
|
||||
$deleteConditions[] = ['in','id_transfer',$idTransfers];
|
||||
}
|
||||
|
||||
if ( Helper::isUserCartVisibilityUser()){
|
||||
$deleteConditions[] = ['id_user' => Yii::$app->user->id];
|
||||
}
|
||||
|
||||
if ( count($deleteConditions) > 1 ){
|
||||
// ['and', 'cond1','cond2']
|
||||
$deleteConditions = ["and"] + $deleteConditions;
|
||||
}else if ( count($deleteConditions) == 1 ){
|
||||
//[a => b ]
|
||||
$deleteConditions = $deleteConditions[0];
|
||||
}else{
|
||||
//[]
|
||||
$deleteConditions = [];
|
||||
}
|
||||
UserSoldItem::deleteAll($deleteConditions);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user