add daily listing by paid_by, add customer cart details

This commit is contained in:
2016-01-27 09:01:02 +01:00
parent 9fb349ee64
commit 2291ca5ff4
28 changed files with 577 additions and 81 deletions

View File

@@ -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) ){

View File

@@ -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 = [

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);
}