/**
  * Action change status order
  */
 public function actionChangestatus()
 {
     $id = Yii::$app->request->post('id');
     $status = Yii::$app->request->post('status');
     $model = $this->findModel($id);
     $model->status = $status;
     $model->save();
     echo json_encode(['status' => Module::getListStatus($model->status), 'log' => $model->generateLogOrder()]);
 }
Esempio n. 2
0
<?php

use yii\bootstrap\Html;
use yii\helpers\ArrayHelper;
use sya\ecommerce\Module;
?>
<!-- Begin view status -->
<div id="statusOrder">
<?php 
if (!$model->getIsNewRecord()) {
    ?>
    <?php 
    if (Module::STATUS_COMPLETE != $model->status and Module::STATUS_CLOSE != $model->status and Module::STATUS_CANCEL != $model->status) {
        ?>
        <?php 
        echo Html::dropDownList('statusOrder', '', Module::getListStatus($model->status), ['class' => 'form-control', 'onchange' => 'changeStatusOrder(this);']);
        ?>
    <?php 
    } else {
        ?>
        <?php 
        echo ArrayHelper::getValue(Module::$status, $model->status);
        ?>
    <?php 
    }
} else {
    ?>
    <?php 
    echo ArrayHelper::getValue(Module::$status, Module::STATUS_NEW);
}
?>
Esempio n. 3
0
 /**
  * Render item order
  * @return string
  */
 public function renderItems()
 {
     // Declare default value properties itemSettings.
     $namespaceGridview = ArrayHelper::getValue($this->itemSettings, 'namespaceGridview', '\\kartik\\grid\\GridView');
     $panel = ArrayHelper::getValue($this->itemSettings, 'panel', ['heading' => Yii::t('ecommerce', 'Order')]);
     // If empty($dataProvider), empty($searchModel) then set default $dataProvider, $searchModel.
     $dataProvider = ArrayHelper::getValue($this->itemSettings, 'dataProvider', '');
     $searchModel = ArrayHelper::getValue($this->itemSettings, 'searchModel', '');
     // Controller action in ecommerce
     $actions = ArrayHelper::getValue($this->itemSettings, 'actions', []);
     // Build default columns
     $columns = ArrayHelper::getValue($this->itemSettings, 'columns', [['class' => 'kartik\\grid\\SerialColumn', 'contentOptions' => ['class' => 'kartik-sheet-style'], 'width' => '36px', 'header' => '', 'headerOptions' => ['class' => 'kartik-sheet-style']], ['attribute' => '_id', 'hAlign' => 'center', 'vAlign' => 'middle'], ['attribute' => 'ecommerce_id', 'hAlign' => 'center', 'vAlign' => 'middle', 'value' => function ($model, $key, $index, $widget) {
         return Html::a($model->ecommerce_id, Url::to(['update', 'id' => $model->_id]), ['title' => 'Xem chi tiết ' . $model->ecommerce_id . '']);
     }, 'format' => 'raw'], ['attribute' => 'creator', 'hAlign' => 'center', 'vAlign' => 'middle'], ['attribute' => 'created_at', 'filterType' => $namespaceGridview::FILTER_DATE_RANGE, 'format' => 'raw', 'width' => '270px', 'hAlign' => 'center', 'vAlign' => 'middle', 'filterWidgetOptions' => ['pluginOptions' => ['format' => 'Y-m-d', 'separator' => ' to ', 'opens' => 'left'], 'presetDropdown' => true, 'hideInput' => true, 'convertFormat' => true], 'value' => function ($model, $key, $index, $widget) {
         return date('d-m-Y', $model->created_at->sec);
     }], ['class' => 'kartik\\grid\\EditableColumn', 'attribute' => 'status', 'vAlign' => 'middle', 'width' => '150px', 'filterType' => $namespaceGridview::FILTER_SELECT2, 'filter' => Module::$status, 'filterWidgetOptions' => ['pluginOptions' => ['allowClear' => true]], 'filterInputOptions' => ['placeholder' => Yii::t('ecommerce', 'Status')], 'editableOptions' => function ($model, $key, $index) {
         return ['header' => Yii::t('ecommerce', 'Status'), 'size' => 'md', 'placement' => 'top', 'inputType' => \kartik\editable\Editable::INPUT_DROPDOWN_LIST, 'buttonsTemplate' => '', 'data' => Module::getListStatus($model->status), 'options' => ['class' => 'syaSelectStatus form-control', 'options' => ['pluginOptions' => ['allowClear' => true]]], 'pluginEvents' => ["editableChange" => "function(event, val) {\r\n                                var element = \$(this);\r\n                                var id = element.parents('tr').attr('data-key');\r\n                                var status = jQuery.parseJSON('" . json_encode(Module::$status) . "');\r\n                                var check = confirm('Are you sure?');\r\n                                if (check == true){\r\n                                    \$.ajax({\r\n                                        url: '" . \yii\helpers\Url::to(['/ecommerce/ajax/changestatus']) . "',\r\n                                        type: 'post',\r\n                                        dataType: 'json',\r\n                                        data: {status: val, id: id},\r\n                                    }).done(function (data) {\r\n                                        element.find('.syaStatus').text(status[val]);\r\n                                        element.find('.syaSelectStatus').empty();\r\n                                        \$.each(data.status, function(key, value) {\r\n                                            element.find('.syaSelectStatus').append( new Option(value, key) );\r\n                                        });\r\n                                    });\r\n                                } else {\r\n                                    element.find('.syaSelectStatus').val('" . Module::STATUS_EMPTY . "');\r\n                                }\r\n                            }"]];
     }, 'format' => 'raw', 'value' => function ($model, $key, $index, $widget) {
         return Html::tag('span', ArrayHelper::getValue(Module::$status, $model->status), ['class' => 'syaStatus']);
     }], 'note_customer', ['class' => 'kartik\\grid\\ActionColumn', 'urlCreator' => function ($action, $model, $key, $index) {
         return Url::to(['delete', 'id' => $model->_id]);
     }, 'template' => '{delete}']]);
     $button = Html::a(Yii::t('ecommerce', 'Create') . ' ' . Yii::t('ecommerce', 'Order'), $actions[Module::ACTION_CREATE], ['class' => 'btn btn-info', 'style' => 'margin-bottom: 10px;']);
     return $button . $namespaceGridview::widget(['panel' => $panel, 'pjax' => $this->pjax, 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => $columns, 'responsive' => true, 'hover' => true]);
 }
Esempio n. 4
0
<?php

use yii\bootstrap\Modal;
use kartik\grid\GridView;
use yii\helpers\ArrayHelper;
use yii\bootstrap\Html;
use sya\ecommerce\Ecommerce;
$ecommerce = Ecommerce::module();
// Declare column in product
$defaultColumns = [['attribute' => '_id', 'hAlign' => 'center', 'vAlign' => 'middle', 'contentOptions' => ['class' => 'productId']]];
$productColumns = ArrayHelper::merge($defaultColumns, $productColumns);
$productColumns[] = ['header' => Yii::t('ecommerce', 'Quantity'), 'hAlign' => 'center', 'vAlign' => 'middle', 'contentOptions' => ['class' => 'productQty'], 'value' => function ($model, $key, $index, $widget) use($ecommerce) {
    $options = ['class' => 'form-control qty_' . $model->_id];
    if ($ecommerce->multiple) {
        $options['onkeyup'] = 'return productQtyOrder(this);';
    } else {
        $options['readonly'] = '';
    }
    return Html::textInput('qty', 1, $options);
}, 'format' => 'raw'];
// Modal product
Modal::begin(['id' => 'product_modal', 'size' => 'modal-lg', 'header' => '<h4 class="modal-title" id="myModalLabel">' . Yii::t('ecommerce', 'List Product') . '</h4>', 'toggleButton' => ['label' => '<i class="fa fa-plus"></i>&nbsp;' . Yii::t('ecommerce', 'Create') . ' ' . Yii::t('ecommerce', 'Product'), 'class' => 'btn btn-xs btn-primary pull-right'], 'footer' => '<button type="button" onclick="addProduct();" class="btn btn-primary">' . Yii::t('ecommerce', 'Create') . ' ' . Yii::t('ecommerce', 'Product') . '</button>']);
echo GridView::widget(['panel' => ['heading' => Yii::t('ecommerce', 'Product')], 'id' => 'product-grid', 'pjax' => TRUE, 'dataProvider' => $productDataProvider, 'filterModel' => $productSearchModel, 'columns' => $productColumns, 'responsive' => true, 'hover' => true, 'toolbar' => []]);
Modal::end();
echo Html::hiddenInput('product_list', \sya\ecommerce\Module::getProductList($model->product), ['id' => 'product_list']);
echo Html::hiddenInput(\yii\helpers\StringHelper::basename(get_class($model)) . '[product_text]', $model->product_text, ['id' => 'product_text']);
// Register js code
$this->registerJs("\r\n    // Add or remove product when click product\r\n    function productOrder(){\r\n        \$('#product-grid-container table tbody tr').click(function(){\r\n            // Get id of product and qty\r\n            var id = \$(this).find('.productId').text();\r\n            var qty = \$(this).find('.productQty input');\r\n            \r\n            // Get id and qty selected\r\n            var product_list = new Array();\r\n            if(\$('#product_list').val()){\r\n                var productSelected = \$('#product_list').val().split(',');\r\n            }else{\r\n                var productSelected = null;\r\n            }\r\n            \r\n            if(\$(this).hasClass('selected')){ // remove from hidden field\r\n                removeProductId(productSelected, product_list, id, qty, this);\r\n            } else { // add too hidden field\r\n                addProductId(productSelected, product_list, id, qty, this);\r\n            }\r\n        });\r\n    }\r\n    \r\n    // Add or remove product when qty = 0\r\n    function productQtyOrder(element){\r\n        // Get id of product and qty\r\n        var id = \$(element).parent().parent().find('.productId').text();\r\n        var qty = \$(element);\r\n        \r\n        // Get id and qty selected\r\n        var product_list = new Array();\r\n        if(\$('#product_list').val()){\r\n            var productSelected = \$('#product_list').val().split(',');\r\n        }else{\r\n            var productSelected = null;\r\n        }\r\n\r\n        if(qty.val() == 0){ // remove from hidden field\r\n            removeProductId(productSelected, product_list, id, qty, \$(element).parent().parent());\r\n        } else { // add too hidden field\r\n            addProductId(productSelected, product_list, id, qty, \$(element).parent().parent());\r\n        }\r\n    }\r\n    \r\n    // Function remove id product\r\n    function removeProductId(productSelected, product_list, id, qty, element){\r\n        if(productSelected.length){\r\n            j = 0;\r\n            for(i =0;i< productSelected.length;i++){\r\n                info = productSelected[i].split(':');\r\n                if(info[0]!=id){\r\n                    product_list[j] = info[0]+':'+info[1];\r\n                    j++;\r\n                }\r\n            }\r\n        }\r\n\r\n        \$('#product_list').val(product_list.length?product_list.join():'');\r\n        \$(element).removeClass('selected');\r\n        qty.val(0);\r\n    }\r\n    \r\n    // Function add id product\r\n    function addProductId(productSelected, product_list, id, qty, element){\r\n        if (qty.val() == 0) qty.val(1);\r\n        \$(element).addClass('selected');\r\n\r\n        if(productSelected){\r\n            updateValue = false;\r\n            for(i =0;i< productSelected.length;i++){\r\n                info = productSelected[i].split(':');\r\n                if(info[0]==id){\r\n                    product_list[i] =info[0]+':'+qty.val();\r\n                    updateValue = true;\r\n                }else{\r\n                    product_list[i]=info[0]+':'+info[1];\r\n                }\r\n            }\r\n            if(!updateValue){\r\n                product_list[product_list.length] = id+':'+qty.val();\r\n            }\r\n        }\r\n        \$('#product_list').val(product_list.length?product_list.join():(id+':'+qty.val()));\r\n    }\r\n    \r\n    // Selected product\r\n    function setSelect(){\r\n        var product_list = \$('#product_list').val();\r\n        if(product_list){\r\n            var field = product_list.split(',');\r\n            var total = field.length;\r\n            for(var i=0; i<total; i++){\r\n                var product = field[i].split(':');\r\n                \$('.qty_'+product[0]).val(product[1]);\r\n                \$('.qty_'+product[0]).parent().parent().addClass('selected');\r\n            }\t\t\r\n        }\r\n    }\r\n    \r\n    // Add product in order\r\n    function addProduct(){\r\n        var shipping = \$('#syaShipping').val();\r\n        \$.ajax({\r\n            url: '" . \yii\helpers\Url::to(['/ecommerce/ajax/addproduct']) . "',\r\n            type: 'post',\r\n            dataType: 'json',\r\n            data: {data: \$('#product_list').val(), shipping: shipping},\r\n        }).done(function (data) {\r\n            \$('#product_info').html(data.template);\r\n            \$('#product_text').val(data.titles);\r\n            totalProduct();\r\n            \$('#product_modal').modal('hide');\r\n        });\r\n    }\r\n", yii\web\View::POS_END);
$this->registerJs("\r\n    productOrder();\r\n    setSelect();\r\n    \$(document).on('pjax:complete', function () {\r\n        productOrder();\r\n        setSelect();\r\n    });\r\n", yii\web\View::POS_READY);