orders.php 5.62 KB
<?php
    /**
     * @var \yii\data\ActiveDataProvider $dataProvider
     * @var \yii\web\View                $this
     */
    
    use yii\grid\ActionColumn;
    use yii\grid\CheckboxColumn;
    use yii\grid\Column;
    use yii\grid\GridView;
    use yii\helpers\Html;
    use yii\helpers\Json;
    use yii\helpers\Url;
    use yiister\gentelella\widgets\Panel;
    
    $this->title = \Yii::t('odoo', 'Orders');
    $this->params[ 'breadcrumbs' ][] = [
        'label' => \Yii::t('odoo', 'Odoo'),
        'url'   => [ 'index' ],
    ];
    $this->params[ 'breadcrumbs' ][] = $this->title;
?>
<div class="odoo-index">
    <?php
        $xPanel = Panel::begin(
            [
                'header' => $this->title,
            ]
        );
        echo Html::button(
            \Yii::t('odoo', 'Send'),
            [
                'class' => 'btn btn-primary pull-right odoo-order-send',
                'data'  => [
                    'conf' => \Yii::t('odoo', 'Are you sure to send checked orders to Odoo?'),
                    'url'  => Url::to([ 'send-orders' ]),
                ],
            ]
        );
        echo GridView::widget(
            [
                'id'           => 'odoo-order-grid',
                'dataProvider' => $dataProvider,
                'columns'      => [
                    [
                        'class' => CheckboxColumn::className(),
                    ],
                    [
                        'attribute' => 'id',
                        'value'     => function ($model) {
                            /**
                             * @var \artbox\odoo\models\Order $model
                             */
                            return Html::a(
                                $model->id,
                                [
                                    '/order/view',
                                    'id' => $model->id,
                                ]
                            );
                        },
                        'format'    => 'html',
                    ],
                    [
                        'class'   => Column::className(),
                        'content' => function ($model) {
                            /**
                             * @var \artbox\odoo\models\Order $model
                             */
                            return Html::tag(
                                'i',
                                '',
                                [
                                    'class' => $model->odooToOrder ? 'glyphicon glyphicon-ok' : 'glyphicon glyphicon-remove',
                                ]
                            );
                        },
                        'header'  => \Yii::t('odoo', 'Status'),
                    ],
                    [
                        'class'    => ActionColumn::className(),
                        'template' => '{send-order}',
                        'buttons'  => [
                            'send-order' => function ($url, $model) {
                                /**
                                 * @var \artbox\odoo\models\Order $model
                                 */
                                return Html::a(
                                    Html::tag(
                                        'i',
                                        '',
                                        [
                                            'class' => 'glyphicon glyphicon-upload',
                                        ]
                                    ),
                                    [
                                        'send-orders',
                                        'ids' => Json::encode([ $model->id ]),
                                    ],
                                    [
                                        'class' => 'odoo-order-send-one',
                                        'data'  => [
                                            'conf' => \Yii::t('odoo', 'Are you sure to send order to Odoo?'),
                                        ],
                                    ]
                                );
                            },
                        ],
                    ],
                ],
            ]
        );
        $xPanel::end();
    ?>
</div>
<?php
    $js = <<<JS
    $('.odoo-order-send')
        .on('click', function() {
            if (confirm($(this)
                    .data('conf'))) {
                var selector = '#odoo-order-grid';
                var selected = $(selector)
                    .yiiGridView('getSelectedRows');
                $(selector)
                    .prepend('<div class="loader-wrapper"></div>');
                if(selected.length) {
                    $.post($(this).data('url') + '?ids=' + JSON.stringify(selected), function(data) {
                        console.log(data);
                        $.pjax.reload(selector, {
                          timeout: 5000,
                          fragment: selector
                      });
                    });
                }
            }
        });
    $('.odoo-order-send-one').on('click', function(e) {
        e.preventDefault();
        if(confirm($(this).data('conf'))) {
            var selector = '#odoo-order-grid';
            $(selector)
                    .prepend('<div class="loader-wrapper"></div>');
            $.post($(this).attr('href'), function(data) {
                        console.log(data);
                        $.pjax.reload(selector, {
                          timeout: 5000,
                          fragment: selector
                      });
                    });
        }
    });
JS;
    $this->registerJs($js);
?>