add daily listing by paid_by, add customer cart details

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

View File

@ -27,13 +27,11 @@ $this->params['breadcrumbs'][] = $this->title;
],
[
'attribute' => 'id_user',
'value' => $model->username
'value' => $model->username,
'label' => 'Felhasználó'
],
'id_partner_card',
'id_proposer',
'name',
'email:email',
'password',
'phone',
[
'attribute' => 'sex',
@ -44,8 +42,14 @@ $this->params['breadcrumbs'][] = $this->title;
'image',
'description',
'tax_number',
'bank_name',
'bank_account',
[
'attribute' => 'bank_name',
'label' => 'Bank neve'
],
[
'attribute' => 'bank_account',
'label' => 'Bankszámlaszám'
],
'country',
'zip',
'city',

View File

@ -220,7 +220,7 @@ class DailyListing
$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 ]);
}
@ -240,9 +240,8 @@ class DailyListing
$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 ] ];
@ -296,7 +295,7 @@ class DailyListing
$query->andWhere(['transfer.type' => Transfer::TYPE_TICKET]);
$query->innerJoin("ticket", "ticket.id_ticket = transfer.id_object");
$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->groupBy([ 'user.id as user_id','user.username as user_username','ticket_type.id_ticket_type','ticket_type.name']);
$this->addQueryFilters($query);
@ -312,7 +311,7 @@ class DailyListing
$query->from('transfer');
$query->andWhere(['transfer.type' => Transfer::TYPE_TICKET]);
$query->innerJoin("ticket", "ticket.id_ticket = transfer.id_object");
$query->innerJoin("user", "transfer.id_user = user.id");
$query->innerJoin("user", "transfer.paid_by = user.id");
$query->orderBy(['user.username' => SORT_ASC]);
$this->addQueryFilters($query);
$this->ticketMoneyByUser = $query->all();
@ -414,7 +413,7 @@ class DailyListing
$query->from('transfer');
$query->andWhere(['transfer.type' => Transfer::TYPE_PRODUCT]);
$query->innerJoin("sale", "sale.id_sale = transfer.id_object");
$query->innerJoin("user", "transfer.id_user = user.id");
$query->innerJoin("user", "transfer.paid_by = user.id");
$query->groupBy([ 'user.id as user_id','user.username as user_username','ticket_type.id_ticket_type','transfer.money']);
$this->addQueryFilters($query);
@ -444,7 +443,7 @@ class DailyListing
$query->andWhere(['transfer.type' => Transfer::TYPE_PRODUCT]);
$query->innerJoin("sale", "sale.id_sale = transfer.id_object");
$query->innerJoin("product", "sale.id_product = product.id_product");
$query->innerJoin("user", "transfer.id_user = user.id");
$query->innerJoin("user", "transfer.paid_by = user.id");
$query->groupBy([ 'user.id as user_id','user.username as user_username','ticket_type.id_ticket_type','transfer.count' ,'product.sale_price','product.purchase_price']);
$this->addQueryFilters($query);
@ -483,7 +482,7 @@ class DailyListing
$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->groupBy([ 'user.id as user_id','user.username as user_username' ]);
$this->addQueryFilters($query);
@ -496,7 +495,7 @@ class DailyListing
$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->groupBy([ 'user.id as user_id','user.username as user_username','money_movement.type']);
$this->addQueryFilters($query);
@ -517,7 +516,7 @@ class DailyListing
$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);
@ -541,7 +540,7 @@ class DailyListing
$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);
@ -560,7 +559,7 @@ class DailyListing
$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

@ -170,6 +170,9 @@ class Helper {
$out = str_replace ( "Ö", "0", $out );
return $out;
}
public static function isUserCartVisibilityUser() {
return \Yii::$app->params ['user_cart_item_visibility'] == 'user';
}
public static function isCompanyMovar() {
return \Yii::$app->params ['company'] == 'movar';
}

View File

@ -16,5 +16,8 @@ return [
'ugiro_duplom_kod' => 1,
'ugiro_kezdemenyezo_szamlaszam' => '5860025215371128',
'ugiro_kezdemenyezo_azonosito' => 'A25366936T244',
//a recepicó kosár csak az aktuális user által kiadott termékeket tartalmazza
//vagy mindent
//értékek user|all
'user_cart_item_visibility' => 'user',
];

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' );
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,14 +155,14 @@ 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,12 +151,12 @@ 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,15 +90,25 @@ 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($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 )."' )";
}
@ -105,11 +116,29 @@ class UserSoldItem extends \yii\db\ActiveRecord
$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] ]);
$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{
UserSoldItem::deleteAll(['id_user' => Yii::$app->user->id]);
//[]
$deleteConditions = [];
}
UserSoldItem::deleteAll($deleteConditions);
}

View File

@ -0,0 +1,28 @@
<?php
/**
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
namespace frontend\assets;
use yii\web\AssetBundle;
/**
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
*/
class TransferCustomerCartAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
];
public $js = [
'js/transfer.customercart.js',
];
public $depends = [
'frontend\assets\AppAsset',
];
}

View File

@ -155,15 +155,15 @@ class ProductController extends Controller {
}
public function actionPayoutUserCart() {
if (Yii::$app->request->isAjax) {
$result = [ ];
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
// $result = [ ];
// \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$user = User::findOne ( Yii::$app->user->id );
UserSoldItem::payout ( $user );
// $user = User::findOne ( Yii::$app->user->id );
// UserSoldItem::payout ( $user );
$userTransfers = Transfer::modelsToArray ( Transfer::readUserSoldTransfers ( $user ) );
$result ['transfers'] = $userTransfers;
$result ['code'] = 'success';
// $userTransfers = Transfer::modelsToArray ( Transfer::readUserSoldTransfers ( $user ) );
// $result ['transfers'] = $userTransfers;
// $result ['code'] = 'success';
return $result;
} else {
@ -175,7 +175,7 @@ class ProductController extends Controller {
$connection = \Yii::$app->db;
$transaction = $connection->beginTransaction ();
try {
UserSoldItem::payout ( $user, $model->transfers );
UserSoldItem::payout ( $user, $model->transfers , Account::readDefault() );
$transaction->commit ();
\Yii::$app->session->setFlash ( 'success', 'Recepicó kosár fizetve' );
} catch ( Exception $e ) {
@ -231,7 +231,7 @@ class ProductController extends Controller {
$connection = \Yii::$app->db;
$transaction = $connection->beginTransaction ();
try {
ShoppingCart::payout ( $this->customer, $model->transfers );
ShoppingCart::payout ( $this->customer, $model->transfers , Account::readDefault());
$transaction->commit ();
\Yii::$app->session->setFlash ( 'success', 'Vendég kosár kifizetve' );
} catch ( Exception $e ) {

View File

@ -20,6 +20,9 @@ use common\models\Product;
use common\models\TransferTicketSearch;
use common\models\TicketType;
use frontend\models\UserCartForm;
use common\models\Customer;
use frontend\models\CustomerCartForm;
use common\models\Card;
/**
* TransferController implements the CRUD actions for Transfer model.
@ -191,10 +194,11 @@ class TransferController extends Controller
$transfer->status = Transfer::STATUS_PAID;
$transfer->paid_at = date('Y-m-d H:i:s' ) ;
$transfer->paid_by = \Yii::$app->user->id;
$transfer->id_account = Account::readDefault();
ShoppingCart::deleteAll([ 'id_transfer' => $transfer->id_transfer]);
UserSoldItem::deleteAll([ 'id_transfer' => $transfer->id_transfer]);
if ( $transfer->save() ){
\Yii::$app->session->setFlash( 'success','Tranzakció kifizetve' );
\Yii::$app->session->setFlash( 'success','Tranzakció kifizetve!' );
$transaction->commit();
}else{
throw new \Exception("Failed to save");
@ -342,6 +346,12 @@ class TransferController extends Controller
public function actionUserCart(){
$defaultAccount = Account::readDefault();
if ( !isset($defaultAccount)){
return $this->redirect(['account/select']);
}
$model = new UserCartForm();
if ($model->load(Yii::$app->request->post()) && $model->payout()) {
return $this->redirect(['user-cart']);
@ -349,4 +359,30 @@ class TransferController extends Controller
$model->run();
return $this->render("usercart",[ 'model' => $model]);
}
public function actionCustomerCart($id_card){
$defaultAccount = Account::readDefault();
if ( !isset($defaultAccount)){
return $this->redirect(['account/select']);
}
$customer = null;
$card = Card::findOne($id_card);
if ($card != null )
$customer = $card->customer;
if ( !isset($customer) ){
throw new NotFoundHttpException ( 'Az oldal nem található' );
}
$model = new CustomerCartForm();
$model->customer = $customer;
if ($model->load(Yii::$app->request->post()) && $model->payout()) {
return $this->redirect(['customer-cart','id_card' => $model->customer->card->id_card]);
}
$model->run();
return $this->render("customercart",[ 'model' => $model]);
}
}

View File

@ -0,0 +1,107 @@
<?php
namespace frontend\models;
use Yii;
use yii\base\Model;
use common\models\Transfer;
use common\models\Account;
/**
* ContactForm is the model behind the contact form.
*/
class CustomerCartForm extends Model
{
public $items = [];
public $transfers;
public $payment_method;
public $money = 0;
public $selected = [];
public $customer;
/**
* @inheritdoc
*/
public function rules()
{
return [
['selected', 'each', 'rule' => ['integer']],
[['money' ,'payment_method'],'integer'],
[['payment_method'],'validatePaymentMethod'],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
];
}
public function validatePaymentMethod( $attribute, $params ){
if ( !empty($this->payment_method)){
// echo $this->payment_method;
$arr = Transfer::paymentMethods();
if ( !array_key_exists($this->payment_method, $arr) ){
$this->addError($attribute, "Érvénytelen fizetési mód");
}
}
}
public function payout(){
$valid = $this->validate();
if ( !$valid ){
return false;
}
if ( isset($this->selected) && count($this->selected) > 0 ){
$items = $this->loadTransfers($this->selected);
if ( count($items) == count($this->selected) ){
foreach ($items as $item){
$this->changePaymentMethod($item);
$item->id_account = Account::readDefault();
$item->payout();
}
\Yii::$app->session->setFlash('success', 'Kifizetve');
return true;
}else{
\Yii::$app->session->setFlash('danger', 'Időközben változtak a kosrában található tételek');
return false;
}
}else{
\Yii::$app->session->setFlash('danger', 'Nem választott ki terméket');
return false;
}
}
public function changePaymentMethod($item){
if ( !empty($this->payment_method)){
$item->payment_method = $this->payment_method;
}
}
public function run(){
$this->readTransfers();
}
public function readTransfers( ) {
$this->transfers = $this->loadTransfers();
}
public function loadTransfers($id_tranfer_array = null){
$query = Transfer::find();
$query->innerJoin("shopping_cart", "shopping_cart.id_transfer = transfer.id_transfer");
// $query->andWhere(["transfer.id_user" => \Yii::$app->user->id]);
$query->andWhere(["shopping_cart.id_customer" => $this->customer->id_customer]);
if (isset($id_tranfer_array)){
$query->andWhere(["in", "transfer.id_transfer" , $id_tranfer_array ]);
}
return $query->all();
}
}

View File

@ -77,7 +77,7 @@ class TransferSearch extends Transfer
// uncomment the following line if you do not want to return any records when validation fails
$query->where('0=1');
}
$query->andWhere(['id_user' => Yii::$app->user->id ] );
$query->andWhere( ['or',['id_user' => Yii::$app->user->id ] , ['paid_by' => Yii::$app->user->id],] );
$query->andFilterWhere([
'id_account' => $this->id_account,

View File

@ -5,6 +5,8 @@ namespace frontend\models;
use Yii;
use yii\base\Model;
use common\models\Transfer;
use common\components\Helper;
use common\models\Account;
/**
* ContactForm is the model behind the contact form.
@ -62,6 +64,7 @@ class UserCartForm extends Model
if ( count($items) == count($this->selected) ){
foreach ($items as $item){
$this->changePaymentMethod($item);
$item->id_account = Account::readDefault();
$item->payout();
}
\Yii::$app->session->setFlash('success', 'Kifizetve');
@ -93,7 +96,9 @@ class UserCartForm extends Model
public function loadTransfers($id_tranfer_array = null){
$query = Transfer::find();
$query->innerJoin("user_sold_item", "user_sold_item.id_transfer = transfer.id_transfer");
if ( Helper::isUserCartVisibilityUser()){
$query->andWhere(["user_sold_item.id_user" => \Yii::$app->user->id]);
}
if (isset($id_tranfer_array)){
$query->andWhere(["in", "transfer.id_transfer" , $id_tranfer_array ]);
}

View File

@ -20,6 +20,7 @@ $items = [
[ 'Befizetések', ['ticket/index', 'number' => $card->number] ],
[ 'Kulcsok', ['key/index', 'id_card' => $card->id_card] ],
[ 'Szerződések', ['contract/index', 'id_card' => $card->id_card ]],
[ 'Kosár', ['transfer/customer-cart', 'id_card' => $card->id_card ]],
];

View File

@ -41,4 +41,7 @@ use yii\widgets\ActiveForm;
<div class='col-md-3 '>
<?php echo Html::a(Yii::t('frontend/product', "Frissít"),null,[ 'class' => 'btn btn-primary btn-block' , 'onclick' => 'location.reload();']) ?>
</div>
<div class='col-md-3 '>
<?php echo Html::a("Kosár részletei",['transfer/customer-cart' ,'id_card' => $model->customer->card->id_card],[ 'class' => 'btn btn-primary btn-block' , 'onclick' => 'location.reload();']) ?>
</div>
</div>

View File

@ -39,4 +39,7 @@ use kartik\widgets\ActiveForm;
<div class='col-md-3 '>
<?php echo Html::a(Yii::t('frontend/product', "Frissít"),null,[ 'class' => 'btn btn-primary btn-block' , 'onclick' => 'location.reload();']) ?>
</div>
<div class='col-md-3 '>
<?php echo Html::a("Kosár részletei",['transfer/customer-cart' ,'id_card' => $model->customer->card->id_card],[ 'class' => 'btn btn-primary btn-block' , 'onclick' => 'location.reload();']) ?>
</div>
</div>

View File

@ -41,4 +41,7 @@ use kartik\widgets\ActiveForm;
<div class='col-md-3 '>
<?php echo Html::a(Yii::t('frontend/product', "Frissít"),null,[ 'class' => 'btn btn-primary btn-block' , 'onclick' => 'location.reload();']) ?>
</div>
<div class='col-md-3 '>
<?php echo Html::a(Yii::t('transfer/user-cart', "Kosár részletei"),['transfer/user-cart'],[ 'class' => 'btn btn-primary btn-block' ]) ?>
</div>
</div>

View File

@ -66,7 +66,7 @@ $this->registerJs ( 'new TicketSell( '. json_encode($options).');' );
</div>
<div class='col-md-6'>
<?php if ( $receptionForm->isCardWithCustomer() ){ ?>
<?php echo $this->render('_customer_cart' ) ?>
<?php echo $this->render('_customer_cart' ,['model' => $receptionForm]) ?>
<?php }?>
<?php echo $this->render('_user_cart' ) ?>
</div>

View File

@ -20,10 +20,13 @@ $formatter = Yii::$app->formatter;
<dt><?php echo $model->getAttributeLabel( 'id_transfer') ?></dt>
<dt><?php echo "Tranz. azonosító" ?></dt>
<dd><?php echo ( Html::getAttributeValue($model, 'id_transfer') ) ?></dd>
<dt><?php echo $model->getAttributeLabel( 'created_at') ?></dt>
<dt><?php echo $model->getAttributeLabel( 'payment_method') ?></dt>
<dd><?php echo Html::getAttributeValue($model, 'paymentMethodName') ?></dd>
<dt><?php echo "Kiadás ideje" ?></dt>
<dd><?php echo $formatter->asDatetime( Html::getAttributeValue($model, 'created_at') ) ?></dd>
<dt><?php echo $model->getAttributeLabel( 'paid_at') ?></dt>
@ -31,9 +34,9 @@ $formatter = Yii::$app->formatter;
<dt><?php echo $model->getAttributeLabel( 'status') ?></dt>
<dd><?php echo Html::getAttributeValue($model, 'statusName') ?></dd>
<dt><?php echo "Kassza" ?></dt>
<dd><?php echo Html::getAttributeValue($model, 'accountName') ?></dd>
<dt><?php echo $model->getAttributeLabel( 'payment_method') ?></dt>
<dd><?php echo Html::getAttributeValue($model, 'paymentMethodName') ?></dd>
</dl>
</div>
<div class='col-md-4'>
@ -44,8 +47,10 @@ $formatter = Yii::$app->formatter;
<dt>Megnevezés</dt>
<dd><?php echo Html::getAttributeValue($model, 'objectName') ?></dd>
<dt><?php echo $model->getAttributeLabel( 'id_user') ?></dt>
<dt><?php echo "Kiadta" ?></dt>
<dd><?php echo Html::getAttributeValue($model, 'userName') ?></dd>
<dt><?php echo "Fizette" ?></dt>
<dd><?php echo Html::getAttributeValue($model, 'paidByName') ?></dd>
<dt><?php echo $model->getAttributeLabel( 'id_customer') ?></dt>
<dd><?php echo Html::getAttributeValue($model, 'customerName') ?></dd>

View File

@ -0,0 +1,114 @@
<?php
use yii\data\ArrayDataProvider;
use yii\widgets\ListView;
use yii\base\Widget;
use yii\grid\GridView;
use yii\widgets\ActiveForm;
use yii\helpers\Html;
use common\models\Transfer;
use yii\grid\CheckboxColumn;
use frontend\assets\TransferUserCartAsset;
use frontend\assets\TransferCustomerCartAsset;
use frontend\components\CustomerTabWidget;
?>
<?php
TransferCustomerCartAsset::register($this);
$options = [];
$this->registerJs ( 'new TransferCustomerCart( '. json_encode($options).');' );
$dp = new ArrayDataProvider(
[
'allModels' => $model->transfers,
'pagination' => false
]
);
$this->params['breadcrumbs'][] = "Vendég Kosár";
?>
<?php echo CustomerTabWidget::widget(['card' => $model->customer->card])?>
<div class="transfer-form">
<?php $form = ActiveForm::begin(); ?>
<?php echo $form->field($model, 'payment_method')->dropDownList( ['' => 'Aktuális'] + Transfer::paymentMethods())->label("Fizetése mód") ?>
<div class="row">
<div class="col-md-4">
<span style="font-weight: bold;">Összesen:</span>
<span class="selected-money"><?php echo $model->money ?></span>
<span> Ft</span>
<?php echo $form->field($model, "money" , [ ])->hiddenInput()->label(false); ?>
</div>
</div>
<div style="margin-bottom: 6px;">
<?php
echo Html::a("Összes kiválasztása",null, ['class' => 'btn btn-primary select-all' ,'style' => 'margin-right: 6px;']);
echo Html::a("Egyiket sem",null, ['class' => 'btn btn-primary deselect-all']);
?>
</div>
<?php
$formModel = $model;
echo GridView::widget([
"dataProvider" => $dp,
'columns' =>[
[
'label' => '',
'value' => function ($model, $key, $index, $column) use (&$form, &$formModel){
return Html::checkbox(Html::getInputName($formModel, 'selected[]') , in_array($model->id_transfer, $formModel->selected) , [ 'data-money' => $model->money, 'class' => 'cart-item', 'value' => $model->id_transfer] );
},
'format' => 'raw'
],
[
'value' => 'created_at',
'label' => 'Kiadva',
'format' => 'datetime'
],
[
'value' => 'user.username',
'label' => 'Kiadta',
],
[
'value' => 'transferTypeName',
'label' => 'Típus'
],
[
'value' => 'objectName',
'label' => 'Megnevezés'
],
[
'value' => 'item_price',
'label' => 'Egység ár'
],
[
'value' => 'count',
'label' => 'Mennyiség'
],
[
'value' => 'money',
'label' => 'Összesen'
],
[
'value' => 'paymentMethodName',
'label' => 'Fizetési mód'
],
]
]);
?>
<div class="form-group">
<?= Html::submitButton( "Kiválasztott elemek fizetve", ['class' => 'btn btn-primary']) ?>
</div>
<p>
A kifizetés az alapértelmezett kasszához lesz elszámolva
</p>
<?php ActiveForm::end(); ?>
</div>

View File

@ -72,7 +72,8 @@ td.name {
<th>F. mód</th>
<th>Fizetve</th>
<th>Kassza</th>
<th>Felhasználó</th>
<th>Kiadta</th>
<th>Fizette</th>
<th>Vásárló</th>
<th>Kategória</th>
<th>Termék</th>
@ -90,6 +91,7 @@ td.name {
<td><?php echo $p['product_paid_at']?> </td>
<td><?php echo $p['account_name']?> </td>
<td><?php echo $p['user_name']?> </td>
<td><?php echo $p['paid_by_name']?> </td>
<td><?php echo $p['customer_name']?> </td>
<td><?php echo $p['product_category_name'] ?></td>
<td><?php echo $p['product_name'] ?></td>

View File

@ -71,7 +71,8 @@ td.name {
<th>Kiadva</th>
<th>Fizetve</th>
<th>Kassza</th>
<th>Felhasználó</th>
<th>Kiadta</th>
<th>Fizette</th>
<th>Vendég</th>
<th>Bérlet típus</th>
<th>Státusz</th>
@ -88,6 +89,7 @@ td.name {
<td><?php echo $t['ticket_paid_at']?> </td>
<td><?php echo $t['account_name']?> </td>
<td><?php echo $t['user_name']?> </td>
<td><?php echo $t['paid_by_name']?> </td>
<td><?php echo $t['customer_name']?> </td>
<td><?php echo $t['ticket_type_name'] ?></td>
<td><?php echo Ticket::toStatusName( $t['ticket_status'] ) ?></td>

View File

@ -24,7 +24,7 @@ $this->registerJs ( 'new TransferUserCart( '. json_encode($options).');' );
);
?>
<h1>Kosár</h1>
<h1>Recepció kosár</h1>
<div class="transfer-form">
<?php $form = ActiveForm::begin(); ?>
<?php echo $form->field($model, 'payment_method')->dropDownList( ['' => 'Aktuális'] + Transfer::paymentMethods())->label("Fizetése mód") ?>
@ -33,13 +33,18 @@ $this->registerJs ( 'new TransferUserCart( '. json_encode($options).');' );
<span>Összesen:</span>
<span class="selected-money"><?php echo $model->money ?></span>
<span> Ft</span>
<?php echo $form->field($model, "money" , [ ])->hiddenInput(); ?>
<?php echo $form->field($model, "money" , [ ])->hiddenInput()->label(false); ?>
</div>
</div>
<div style="margin-bottom: 6px;">
<?php
echo Html::a("Összes kiválasztása",null, ['class' => 'btn btn-primary select-all' ,'style' => 'margin-right: 6px;']);
echo Html::a("Egyiket sem",null, ['class' => 'btn btn-primary deselect-all']);
?>
</div>
<?php
$formModel = $model;
echo GridView::widget([
@ -53,6 +58,19 @@ echo GridView::widget([
},
'format' => 'raw'
],
[
'value' => 'created_at',
'label' => 'Kiadva',
'format' => 'datetime'
],
[
'value' => 'user.username',
'label' => 'Kiadta',
],
[
'value' => 'accountName',
'label' => 'Kassza'
],
[
'value' => 'transferTypeName',
'label' => 'Típus'
@ -85,6 +103,8 @@ echo GridView::widget([
<div class="form-group">
<?= Html::submitButton( "Kiválasztott elemek fizetve", ['class' => 'btn btn-primary']) ?>
</div>
<p>
A kifizetés az alapértelmezett kasszához lesz elszámolva
</p>
<?php ActiveForm::end(); ?>
</div>

View File

@ -0,0 +1,63 @@
function TransferCustomerCart(o){
var defaults = {};
init();
function init(){
defaults = $.extend(defaults,o);
$('.select-on-check-all').click(recalculate);
$('.cart-item').click(recalculate);
$('.select-all').click(selectAll);
$('.deselect-all').click(deselectAll);
}
function selectAll(){
var table;
table = $('.grid-view').find('table');
table.find('input').prop('checked',true);
recalculate();
}
function deselectAll(){
var table;
table = $('.grid-view').find('table');
table.find('input').prop('checked',false);
recalculate();
}
function recalculate(){
var items = $('.cart-item');
var money = 0;
items.each(function(i,e){
if ( $(e).is(':checked')){
money += $(e).data('money');
}
});
$('#customercartform-money').val(money);
$('.selected-money').html(money);
selectRows();
}
function selectRows(){
var table;
var rows;
table = $('.grid-view').find('table');
rows = table.find('tbody').find('tr');
rows.removeClass('info');
rows.each(function(i,e){
var cb;
var selected;
var row;
row = $(e);
cb = row.find('td').eq(0).find('input');
selected = cb.is(':checked');
if ( selected){
row.addClass('info');
}
});
}
}

View File

@ -8,6 +8,23 @@ function TransferUserCart(o){
defaults = $.extend(defaults,o);
$('.select-on-check-all').click(recalculate);
$('.cart-item').click(recalculate);
$('.select-all').click(selectAll);
$('.deselect-all').click(deselectAll);
}
function selectAll(){
var table;
table = $('.grid-view').find('table');
table.find('input').prop('checked',true);
recalculate();
}
function deselectAll(){
var table;
table = $('.grid-view').find('table');
table.find('input').prop('checked',false);
recalculate();
}
function recalculate(){
@ -20,6 +37,28 @@ function TransferUserCart(o){
});
$('#usercartform-money').val(money);
$('.selected-money').html(money);
selectRows();
}
function selectRows(){
var table;
var rows;
table = $('.grid-view').find('table');
rows = table.find('tbody').find('tr');
rows.removeClass('info');
rows.each(function(i,e){
var cb;
var selected;
var row;
row = $(e);
cb = row.find('td').eq(0).find('input');
selected = cb.is(':checked');
if ( selected){
row.addClass('info');
}
});
}