diff --git a/common/models/Transfer.php b/common/models/Transfer.php index f455b10..0c0db1e 100644 --- a/common/models/Transfer.php +++ b/common/models/Transfer.php @@ -4,6 +4,7 @@ namespace common\models; use Yii; use yii\base\Object; +use yii\helpers\ArrayHelper; /** * This is the model class for table "transfer". @@ -94,6 +95,10 @@ class Transfer extends \yii\db\ActiveRecord 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 = ""; @@ -143,4 +148,43 @@ class Transfer extends \yii\db\ActiveRecord return $transfer; } + public static function modelsToArray($transfers,$default = null){ + + if ( $transfers == null ){ + return $default; + } + + return ArrayHelper::toArray($transfers, [ + 'common\models\Transfer' => [ + 'id_transfer', + 'item_price', + 'count', + 'money', + 'money_currency', + 'account_name' => function ($transfer) { + return $transfer->account->name; + }, + 'product_name' => function ($transfer) { + return $transfer->product->name; + }, + 'category' => function ($transfer) { + return $transfer->product->productCategoryName; + }, + ], + ]); + } + + + public static function readUserSoldTransfers($user){ + $transfers = []; + + $query = Transfer::find(); + + $query->innerJoinWith('userSoldItem'); + $query->andWhere(['user_sold_item.id_user' => $user->id ]); + $transfers = $query->all(); + + return $transfers; + } + } diff --git a/common/models/UserSoldItem.php b/common/models/UserSoldItem.php index ed1029a..2d3ad74 100644 --- a/common/models/UserSoldItem.php +++ b/common/models/UserSoldItem.php @@ -42,4 +42,24 @@ class UserSoldItem extends \yii\db\ActiveRecord 'id_transfer' => Yii::t('common/user-sold-item', 'Id Transfer'), ]; } + + public function getAccount(){ + $this->hasOne(Transfer::className(), ["id_transfer" => "id_transfer"]); + } + + public function getUser(){ + $this->hasOne(User::className(), ["id" => "id_user"]); + } + + + public static function read($user){ + + $query = UserSoldItem::find(); + $query->andWhere(['id_user' => $user->id_user]); + $result = $query->all(); + + } + + + } diff --git a/composer.json b/composer.json index 61e7748..1bb2607 100644 --- a/composer.json +++ b/composer.json @@ -20,7 +20,8 @@ "yiisoft/yii2-swiftmailer": "*", "kartik-v/yii2-widgets": "^3.4", "kartik-v/yii2-widget-typeahead": "*", - "bower-asset/remarkable-bootstrap-notify": "^3.1" + "bower-asset/remarkable-bootstrap-notify": "^3.1", + "yiisoft/yii2-jui": "^2.0" }, "require-dev": { "yiisoft/yii2-codeception": "*", diff --git a/composer.lock b/composer.lock index c305ed7..4925c02 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "a1314409d3150e430e6ff7e350de0e3b", + "hash": "7bff75eba2c88cda67ff49b95bda9644", "packages": [ { "name": "bower-asset/bootstrap", @@ -99,6 +99,31 @@ "library" ] }, + { + "name": "bower-asset/jquery-ui", + "version": "1.11.4", + "source": { + "type": "git", + "url": "https://github.com/components/jqueryui.git", + "reference": "c34f8dbf3ba57b3784b93f26119f436c0e8288e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/components/jqueryui/zipball/c34f8dbf3ba57b3784b93f26119f436c0e8288e1", + "reference": "c34f8dbf3ba57b3784b93f26119f436c0e8288e1", + "shasum": "" + }, + "require": { + "bower-asset/jquery": ">=1.6" + }, + "type": "bower-asset-library", + "extra": { + "bower-asset-main": [ + "jquery-ui.js" + ], + "bower-asset-ignore": [] + } + }, { "name": "bower-asset/jquery.inputmask", "version": "3.1.63", @@ -1715,6 +1740,56 @@ ], "time": "2015-03-01 06:22:44" }, + { + "name": "yiisoft/yii2-jui", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/yiisoft/yii2-jui.git", + "reference": "ce16f29cca654702c2ee500ccad9657a2d2e6a09" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yiisoft/yii2-jui/zipball/ce16f29cca654702c2ee500ccad9657a2d2e6a09", + "reference": "ce16f29cca654702c2ee500ccad9657a2d2e6a09", + "shasum": "" + }, + "require": { + "bower-asset/jquery-ui": "1.11.*@stable", + "yiisoft/yii2": ">=2.0.4" + }, + "type": "yii2-extension", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + }, + "asset-installer-paths": { + "npm-asset-library": "vendor/npm", + "bower-asset-library": "vendor/bower" + } + }, + "autoload": { + "psr-4": { + "yii\\jui\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Qiang Xue", + "email": "qiang.xue@gmail.com" + } + ], + "description": "The Jquery UI extension for the Yii framework", + "keywords": [ + "jQuery UI", + "yii2" + ], + "time": "2015-05-10 22:09:43" + }, { "name": "yiisoft/yii2-swiftmailer", "version": "2.0.4", diff --git a/console/migrations/m151005_095529_alter__table__discount_rename_id.php b/console/migrations/m151005_095529_alter__table__discount_rename_id.php new file mode 100644 index 0000000..780780d --- /dev/null +++ b/console/migrations/m151005_095529_alter__table__discount_rename_id.php @@ -0,0 +1,30 @@ +renameColumn('discount','id_warehouse','id_discount'); + } + + public function down() + { + echo "m151005_095529_alter__table__discount_rename_id cannot be reverted.\n"; + + return false; + } + + /* + // Use safeUp/safeDown to run migration code within a transaction + public function safeUp() + { + } + + public function safeDown() + { + } + */ +} diff --git a/frontend/assets/AppAsset.php b/frontend/assets/AppAsset.php index d30cb4c..c37175f 100644 --- a/frontend/assets/AppAsset.php +++ b/frontend/assets/AppAsset.php @@ -26,6 +26,6 @@ class AppAsset extends AssetBundle public $depends = [ 'yii\web\YiiAsset', 'yii\bootstrap\BootstrapAsset', - 'frontend\assets\GrowlAsset' + 'frontend\assets\GrowlAsset', ]; } diff --git a/frontend/assets/ProductSellAsset.php b/frontend/assets/ProductSellAsset.php index 6f76e29..30bed56 100644 --- a/frontend/assets/ProductSellAsset.php +++ b/frontend/assets/ProductSellAsset.php @@ -25,5 +25,6 @@ class ProductSellAsset extends AssetBundle ]; public $depends = [ 'frontend\assets\AppAsset', + 'yii\jui\JuiAsset', ]; } diff --git a/frontend/controllers/ProductController.php b/frontend/controllers/ProductController.php index 002c51f..3ec9acd 100644 --- a/frontend/controllers/ProductController.php +++ b/frontend/controllers/ProductController.php @@ -17,6 +17,8 @@ use yii\base\Object; use common\models\Currency; use common\models\Account; use common\models\Discount; +use common\models\Transfer; +use common\models\User; /** * ProductController implements the CRUD actions for Product model. @@ -54,6 +56,7 @@ class ProductController extends Controller $discounts = Discount::read(); + $user = User::findOne(Yii::$app->user->id ); if (Yii::$app->request->isAjax) { @@ -76,10 +79,18 @@ class ProductController extends Controller $result['code'] = 'invalid'; $result['errors'] = $model->getErrors(); } - } + } + + $userTransfers = Transfer::modelsToArray( Transfer::readUserSoldTransfers($user) ); + $result['transfers'] = $userTransfers; + return $result; }else{ + +// $userTransfers = Transfer::readUserSoldTransfers( $user ); + $userTransfers = Transfer::modelsToArray( Transfer::readUserSoldTransfers($user) ); + return $this->render("sale",[ 'customer' => $this->customer, 'card' => $this->card, @@ -88,6 +99,7 @@ class ProductController extends Controller 'currencies' => $currencies, 'accounts' => $accounts, 'discounts' => $discounts, + 'userTransfers' => $userTransfers ]); } diff --git a/frontend/models/ProductSaleForm.php b/frontend/models/ProductSaleForm.php index 10fd0ec..db7b219 100644 --- a/frontend/models/ProductSaleForm.php +++ b/frontend/models/ProductSaleForm.php @@ -12,6 +12,7 @@ use yii\base\Object; use common\models\Account; use common\models\Discount; use common\models\Currency; +use common\models\UserSoldItem; /** * ContactForm is the model behind the contact form. @@ -19,6 +20,8 @@ use common\models\Currency; class ProductSaleForm extends Model { + public $append_to_sold_list; + public $id_product; public $count; public $id_currency; @@ -51,11 +54,13 @@ class ProductSaleForm extends Model [['id_product','count','id_account'], 'required'], [['id_product','id_currency','id_account', 'id_discount','count'], 'integer'], [['comment'], 'string' ,'max' => 255], + [['append_to_sold_list'], 'string' ,'max' => 10], [['id_product' ], 'validateProduct'], [['count' ], 'validateCount'], [['id_currency' ], 'validateCurrency'], [['id_account' ], 'validateAccount'], [['id_discount' ], 'validateDiscount'], + [['id_discount' ], 'validateDiscount'], ]; } @@ -114,6 +119,7 @@ class ProductSaleForm extends Model if ( $this->validate() ){ $this->saveTransfer(); $this->saveProduct(); + $this->appendToSoldList(); return true; } return false; @@ -137,4 +143,20 @@ class ProductSaleForm extends Model $this->product->save(); } + public function isAppendToList(){ + $result = false; + if ( isset( $this->append_to_sold_list ) && $this->append_to_sold_list == 'append' ){ + $result = true; + } + return $result; + } + + public function appendToSoldList(){ + if ( $this->isAppendToList() ){ + $item = new UserSoldItem(); + $item->id_transfer = $this->transfer->id_transfer; + $item->id_user = Yii::$app->user->id; + $item->save(false); + } + } } diff --git a/frontend/views/product/_sale_form.php b/frontend/views/product/_sale_form.php index 150c5ec..ae42348 100644 --- a/frontend/views/product/_sale_form.php +++ b/frontend/views/product/_sale_form.php @@ -69,6 +69,7 @@ $discountOptions = mkOptions( ArrayHelper::map($discounts, 'id_discount', 'name' ] ); ?> +
| diff --git a/frontend/views/product/sale.php b/frontend/views/product/sale.php index c3a2ad8..afa5589 100644 --- a/frontend/views/product/sale.php +++ b/frontend/views/product/sale.php @@ -18,11 +18,11 @@ ProductSellAsset::register($this); $options = []; $options['lookup_product_url'] = Url::toRoute(['product/lookup']); +$options['sold_items'] = $userTransfers; + $this->registerJs ( 'new ProductSell( '. json_encode($options).');' ); - - ?> |
|---|