Your IP : 216.73.216.79


Current Path : /var/www/html/crm/views/stockdelivery/
Upload File :
Current File : /var/www/html/crm/views/stockdelivery/index.php

<?php

use yii\helpers\Html;
use yii\grid\GridView;
use yii\helpers\Url;
use app\models\Menu;
use app\models\ParamList;
use app\models\Product;
use app\models\StockDelivery;
use app\models\DeliveryOrder;
use app\models\Rider;

$Menu = new Menu();
$this->title = $Menu->getmenutitle($menu_id);

$this->registerCss('.kt-widget1 .kt-widget1__item .kt-widget1__number{font-size:40px;} 
    .kt-widget1 .kt-widget1__item .kt-widget1__number2{font-size:20px;}
    .table-custom tbody td{vertical-align:top !important;}');
?>
<div class="kt-subheader  kt-grid__item" id="kt_subheader">
    <div class="kt-container  kt-container--fluid ">
        <div class="kt-subheader__main">
            <h3 class="kt-subheader__title"><?= $this->title ?> <?= $year; ?></h3>
            <div class="kt-subheader__breadcrumbs">
                <?= $Menu->getbreadcrumbs($menu_id, ''); ?>
                <span class="kt-subheader__breadcrumbs-separator"></span><span class="kt-subheader__breadcrumbs-link"><?= $this->title ?> List</span>
            </div>
        </div>
    </div>
</div>
<div class="kt-container kt-grid__item kt-grid__item--fluid">
    <div style="margin-bottom:1em;">
        <?php
        for ($y = date('Y'); $y > 2021; $y--) {
            $btn_class = 'btn-success';
            if ($y == $year)
                $btn_class = 'btn-warning';
            echo '&nbsp;' . Html::a($y, ['index', 'year' => $y], ['class' => 'btn ' . $btn_class]);
        }
        ?>
        <?php
        if (Yii::$app->user->identity->role != 'client')
            echo Html::a('Add ' . $this->title, ['create'], ['class' => 'btn btn-success']);
        ?>
        <?php
        if (Yii::$app->user->identity->role != 'client')
            echo Html::a('Manage Rider', ['rider/index'], ['class' => 'btn btn-success']);
        ?>
        <?= Html::a('Dashboard', ['reporting'], ['class' => 'btn btn-success']) ?>
        <?= Html::a('Reporting', ['reporting2'], ['class' => 'btn btn-success']) ?>
    </div>
    <div class="kt-portlet">
        <div class="kt-portlet__body kt-portlet__body--fit">
            <div class="row row-no-padding row-col-separator-xl">
                <div class="col-md-12 col-lg-12 col-xl-3">
                    <div class="kt-widget1">
                        <div class="kt-widget1__item">
                            <div class="kt-widget1__info">
                                <span class="kt-widget1__desc">Total Delivery</span>
                            </div>
                            <span class="kt-widget1__number kt-widget1__number2 kt-font-brand">
                                <?= Html::a(StockDelivery::find()->where(['=', 'YEAR(created_dt)', $year])->count(), ['index', 'year' => $year]); ?>
                            </span>
                        </div>
                        <div class="kt-widget1__item">
                            <div class="kt-widget1__info">
                                <span class="kt-widget1__desc">Parcel has been picked up by courier</span>
                            </div>
                            <span class="kt-widget1__number kt-widget1__number2 kt-font-brand">
                                <?= Html::a(StockDelivery::find()->where(['=', 'delivery_status', 'pickup'])->andwhere(['=', 'YEAR(created_dt)', $year])->count(), ['index', 'year' => $year, 'StockDeliverySearch[delivery_status]' => 'pickup']); ?>
                            </span>
                        </div>
                        <div class="kt-widget1__item">
                            <div class="kt-widget1__info">
                                <span class="kt-widget1__desc">Pending on checking information</span>
                            </div>
                            <span class="kt-widget1__number kt-widget1__number2 kt-font-brand">
                                <?= Html::a(StockDelivery::find()->where(['=', 'details_status', 'pending'])->andwhere(['=', 'YEAR(created_dt)', $year])->count(), ['index', 'year' => $year, 'StockDeliverySearch[details_status]' => 'pending']); ?>
                            </span>
                        </div>
                    </div>
                </div>
                <div class="col-md-12 col-lg-12 col-xl-3">
                    <div class="kt-widget1">
                        <div class="kt-widget1__item">
                            <div class="kt-widget1__info">
                                <span class="kt-widget1__desc">Order Initiated</span>
                            </div>
                            <span class="kt-widget1__number kt-widget1__number2 kt-font-brand">
                                <?= Html::a(StockDelivery::find()->where(['=', 'delivery_status', 'initiated'])->andwhere(['=', 'YEAR(created_dt)', $year])->count(), ['index', 'year' => $year, 'StockDeliverySearch[delivery_status]' => 'initiated']); ?>
                            </span>
                        </div>
                        <div class="kt-widget1__item">
                            <div class="kt-widget1__info">
                                <span class="kt-widget1__desc">Parcel is in transit</span>
                            </div>
                            <span class="kt-widget1__number kt-widget1__number2 kt-font-brand">
                                <?= Html::a(StockDelivery::find()->where(['=', 'delivery_status', 'intransit'])->andwhere(['=', 'YEAR(created_dt)', $year])->count(), ['index', 'year' => $year, 'StockDeliverySearch[delivery_status]' => 'intransit']); ?>
                            </span>
                        </div>
                        <div class="kt-widget1__item">
                            <div class="kt-widget1__info">
                                <span class="kt-widget1__desc">Information has been checked</span>
                            </div>
                            <span class="kt-widget1__number kt-widget1__number2 kt-font-brand">
                                <?= Html::a(StockDelivery::find()->where(['=', 'details_status', 'checkinfo'])->andwhere(['=', 'YEAR(created_dt)', $year])->count(), ['index', 'year' => $year, 'StockDeliverySearch[details_status]' => 'checkinfo']); ?>
                            </span>
                        </div>
                    </div>
                </div>
                <div class="col-md-12 col-lg-12 col-xl-3">
                    <div class="kt-widget1">
                        <div class="kt-widget1__item">
                            <div class="kt-widget1__info">
                                <span class="kt-widget1__desc">Preparing the parcel for delivery</span>
                            </div>
                            <span class="kt-widget1__number kt-widget1__number2 kt-font-brand">
                                <?= Html::a(StockDelivery::find()->where(['=', 'delivery_status', 'prepare'])->andwhere(['=', 'YEAR(created_dt)', $year])->count(), ['index', 'year' => $year, 'StockDeliverySearch[delivery_status]' => 'prepare']); ?>
                            </span>
                        </div>
                        <div class="kt-widget1__item">
                            <div class="kt-widget1__info">
                                <span class="kt-widget1__desc">Parcel has been delivered</span>
                            </div>
                            <span class="kt-widget1__number kt-widget1__number2 kt-font-brand">
                                <?= Html::a(StockDelivery::find()->where(['=', 'delivery_status', 'delivered'])->andwhere(['=', 'YEAR(created_dt)', $year])->count(), ['index', 'year' => $year, 'StockDeliverySearch[delivery_status]' => 'delivered']); ?>
                            </span>
                        </div>
                        <div class="kt-widget1__item">
                            <div class="kt-widget1__info">
                                <span class="kt-widget1__desc">Information not complete</span>
                            </div>
                            <span class="kt-widget1__number kt-widget1__number2 kt-font-brand">
                                <?= Html::a(StockDelivery::find()->where(['=', 'details_status', 'error'])->andwhere(['=', 'YEAR(created_dt)', $year])->count(), ['index', 'year' => $year, 'StockDeliverySearch[details_status]' => 'error']); ?>
                            </span>
                        </div>
                    </div>
                </div>
                <div class="col-md-12 col-lg-12 col-xl-3">
                    <div class="kt-widget1">
                        <div class="kt-widget1__item">
                            <div class="kt-widget1__info">
                                <span class="kt-widget1__desc">Waiting for courier to pick up the parcel</span>
                            </div>
                            <span class="kt-widget1__number kt-widget1__number2 kt-font-brand">
                                <?= Html::a(StockDelivery::find()->where(['=', 'delivery_status', 'waiting'])->andwhere(['=', 'YEAR(created_dt)', $year])->count(), ['index', 'year' => $year, 'StockDeliverySearch[delivery_status]' => 'waiting']); ?>
                            </span>
                        </div>
                        <div class="kt-widget1__item">
                            <div class="kt-widget1__info">
                                <span class="kt-widget1__desc">Parcel cannot be delivered</span>
                            </div>
                            <span class="kt-widget1__number kt-widget1__number2 kt-font-brand">
                                <?= Html::a(StockDelivery::find()->where(['=', 'delivery_status', 'undeliver'])->andwhere(['=', 'YEAR(created_dt)', $year])->count(), ['index', 'year' => $year, 'StockDeliverySearch[delivery_status]' => 'undeliver']); ?>
                            </span>
                        </div>

                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="kt-portlet kt-portlet--mobile">
        <div class="kt-portlet__head"><?php echo $this->render('_search', ['model' => $searchModel, 'year' => $year]); ?></div>
        <div class="kt-portlet__body p-0">
            <!--<div class="pt-4 pr-4 text-right">-->
            <?php
            /* Html::a('Export Data', ['downloadexcel',
              'company_name' => $searchModel->company_name,
              'customer_name' => $searchModel->customer_name,
              'stock_details' => $searchModel->stock_details,
              'delivery_status' => $searchModel->delivery_status,
              'courier' => $searchModel->courier,
              'tracking_no' => $searchModel->tracking_no,
              'customer_postcode' => $searchModel->customer_postcode,
              'customer_state' => $searchModel->customer_state,
              'details_status' => $searchModel->details_status,
              'customer_address1' => $searchModel->customer_address1,
              'industry' => $searchModel->industry,
              ], ['class' => 'btn btn-success']) */
            ?>
            <!--</div>-->
            <?php
            echo GridView::widget([
                'dataProvider' => $dataProvider,
                'tableOptions' => ['class' => 'table table-bordered mb-0 table-borderlessx table-striped table-hover table-custom'],
                'pager' => [
                    'firstPageLabel' => '<i class="fa fa-angle-double-left kt-font-brand"></i>',
                    'lastPageLabel' => '<i class="fa fa-angle-double-right kt-font-brand"></i>',
                    'prevPageLabel' => '<i class="fa fa-angle-left kt-font-brand"></i>',
                    'nextPageLabel' => '<i class="fa fa-angle-right kt-font-brand"></i>',
                    'maxButtonCount' => 3,
                    'options' => ['tag' => 'ul', 'class' => 'kt-pagination--brand kt-pagination__links p-3',],
                    'activePageCssClass' => 'kt-pagination__link--active',
                    'prevPageCssClass' => 'kt-pagination__link--prev',
                    'nextPageCssClass' => 'kt-pagination__link--next',
                    'firstPageCssClass' => 'kt-pagination__link--first',
                    'lastPageCssClass' => 'kt-pagination__link--last',
                ],
                'columns' => [
                    [
                        'class' => 'yii\grid\SerialColumn',
                        'headerOptions' => ['class' => 'text-center', 'width' => '5%'],
                        'contentOptions' => ['class' => 'text-center'],
                    ],
                    [
                        'headerOptions' => ['width' => '30%'],
                        'header' => 'Receiver Details',
                        'format' => 'raw',
                        'value' => function ($model) {
                            $ParamList = new ParamList();
                            $output = '<div class="row">';
                            $output .= '<div class="col-1 text-center"><i class="fas fa-building"></i></div><div class="col-11">' . $model->company_name . '</div>';
                            $output .= '<div class="col-1 text-center"><i class="fas fa-info-circle"></i></div><div class="col-11">' . $model->industry . '</div>';
                            $output .= '<div class="col-1 text-center"><i class="fas fa-user"></i></div><div class="col-11">' . $model->customer_name . '</div>';
                            $output .= '<div class="col-1 text-center"><i class="fas fa-phone"></i></div><div class="col-11">' . $model->customer_phone . '</div>';
                            $output .= '<div class="col-1 text-center"><i class="fas fa-map-marker-alt"></i></div><div class="col-11">' . $model->customer_address1 . ' ' .
                                    $model->customer_address2 . ' ' .
                                    $model->customer_address3 . ' ' .
                                    $model->customer_postcode . ' ' .
                                    $model->customer_city . ' ' . $ParamList->getlabel(3, $model->customer_state) . '</div>';
                            $output .= '</div>';
                            return $output;
                        }
                    ],
                    [
                        'header' => 'Item',
                        'format' => 'raw',
                        'value' => function ($model) {
                            $output = '';
                            $item_arr = json_decode($model->stock_details, true);
                            if (!empty($item_arr)) {
                                foreach ($item_arr as $item_data) {
                                    if (($modelProduct = Product::findOne([$item_data['product_id']])) !== null) {
                                        $output .= '<div>' . $modelProduct->name . ' X ' . $item_data['product_qty'] . '</div>';
                                    }
                                }
                            }
                            return $output;
                        },
                    ],
                    [
                        'attribute' => 'details_status',
                        'format' => 'raw',
                        'value' => function ($model) {
                            $output = '';
                            if (!empty($model->details_status)) {

                                if ($model->details_status == 'pending')
                                    $btn_class = 'btn-warning';
                                if ($model->details_status == 'checkinfo')
                                    $btn_class = 'btn-success';
                                if ($model->details_status == 'error')
                                    $btn_class = 'btn-danger';

                                $ParamList = new ParamList();
                                $output = '<span class="btn ' . $btn_class . ' btn-sm">' . $ParamList->getlabel(48, $model->details_status) . '</span>';
                            }
                            return $output;
                        },
                    ],
                    [
                        'header' => 'Delivery Status',
                        'format' => 'raw',
                        'value' => function ($model) {
                            $output = '';
                            $ParamList = new ParamList();
                            if (!empty($model->delivery_status)) {
                                $btn_class = 'btn-default';
                                if ($model->delivery_status == 'prepare' || $model->delivery_status == 'waiting' || $model->delivery_status == 'initiated' || $model->delivery_status == 'checked')
                                    $btn_class = 'btn-warning';
                                if ($model->delivery_status == 'pickup' || $model->delivery_status == 'intransit')
                                    $btn_class = 'btn-primary';
                                if ($model->delivery_status == 'delivered')
                                    $btn_class = 'btn-success';
                                if ($model->delivery_status == 'undeliver')
                                    $btn_class = 'btn-danger';
                                $output .= '<div class="row"><div class="col-12 mb-2"><span class="btn ' . $btn_class . ' btn-sm">' . $ParamList->getlabel(46, $model->delivery_status) . '</span></div></div>';
                            }
                            return $output;
                        },
                    ],
                    [
                        'header' => 'Delivery Details',
                        'format' => 'raw',
                        'value' => function ($model) {
                            $ParamList = new ParamList();
                            $output = '';
                            if (($modelDO = DeliveryOrder::findOne($model->do_id)) !== null) {
                                $output .= Html::a($modelDO->doc_no, Url::to(['deliveryorder/downloadfromdelivery', 'uuid' => $modelDO->uuid]), ['target' => '_blank',]);
                            }

                            if (!empty($model->delivery_date))
                                $output .= '<div class="row"><div class="col-sm-1 text-center"><i class="fas fa-calendar"></i></div><div class="col-sm-10">' . date("d M Y", strtotime($model->delivery_date)) . '</div></div>';

                            if (!empty($model->courier))
                                $output .= '<div class="row"><div class="col-sm-1 text-center"><i class="fas fa-truck"></i></div><div class="col-sm-10">' . $ParamList->getlabel(47, $model->courier) . '</div></div>';

                            if (!empty($model->tracking_no))
                                $output .= '<div class="row"><div class="col-sm-1 text-center"><i class="fas fa-file"></i></div><div class="col-sm-10">' . $model->tracking_no . '</div></div>';

                            if ($model->courier == 'rider' && !empty($model->rider_id)) {
//                                $url = Url::toRoute(['site/updateorder', 'uuid' => $model->uuid], true);
//                                $output .= '<a href="#" data-toggle="modal" data-target="#modal' . $model->id . '">Print order QR code</a>
//                                            <div class="modal fade" id="modal' . $model->id . '" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
//                                              <div class="modal-dialog" role="document">
//                                                <div class="modal-content">
//                                                  <div class="modal-header">
//                                                    <h5 class="modal-title" id="exampleModalLabel">Order QR Code</h5>
//                                                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
//                                                      <span aria-hidden="true">&times;</span>
//                                                    </button>
//                                                  </div>
//                                                  <div class="modal-body text-center">
//                                                    <img src="https://chart.googleapis.com/chart?cht=qr&choe=UTF-8&chs=200x200&chl=' . urlencode($url) . '"/>
//                                                  </div>
//                                                </div>
//                                              </div>
//                                            </div>';

                                $output .= '<p class="mt-3 mb-0 pb-0"><b>Rider Details</b></p>';
                                if (($modelRider = Rider::findOne($model->rider_id)) !== null) {
                                    $output .= '<div class="row"><div class="col-sm-1 text-center"><i class="fas fa-user"></i></div><div class="col-sm-10">' . $modelRider->name . '</div></div>';
                                    $output .= '<div class="row"><div class="col-sm-1 text-center"><i class="fas fa-phone"></i></div><div class="col-sm-10">' . $modelRider->phone . '</div></div>';
                                    $output .= '<div class="row"><div class="col-sm-1 text-center"><i class="fas fa-id-badge"></i></div><div class="col-sm-10">' . $modelRider->code . '</div></div>';
                                }
                            }

                            return $output;
                        }
                    ],
                    [
                        'class' => 'yii\grid\ActionColumn',
                        'header' => 'Action',
                        'headerOptions' => ['class' => 'text-center'],
                        'contentOptions' => ['class' => 'text-center text-nowrap'],
                        'template' => '{view}&nbsp;&nbsp;&nbsp;{update}&nbsp;&nbsp;&nbsp;{delete}',
                        'buttons' => [
                            'view' => function ($url, $model) {
                                $url = Url::to(['stockdelivery/view', 'uuid' => $model->uuid]);
                                return Html::a('<i class="fas fa-info pr-0"></i>', $url, ['title' => 'Details', 'class' => 'btn btn-primary btn-sm']);
                            },
                            'update' => function ($url, $model) {
                                if (Yii::$app->user->identity->role != 'client') {
                                    $url = Url::to(['stockdelivery/update', 'uuid' => $model->uuid]);
                                    return Html::a('<i class="far fa-edit pr-0"></i>', $url, ['title' => 'Update', 'class' => 'btn btn-success btn-sm']);
                                }
                            },
                            'delete' => function ($url, $model) {
                                if (Yii::$app->user->identity->role == 'super')
                                    return '<span title="Delete" class="btn btn-danger btn-sm" style="cursor:pointer;" onclick="deletedata(' . $model->id . ')"><i class="far fa-trash-alt pr-0"></i>';
                            },
                        ],
                    ],
                ],
            ]);
            ?>

        </div>
    </div>
</div>
<?php $this->registerJs(""); ?>

<script>
    function deletedata(id) {
        Swal.fire({
            title: 'Are you sure to delete this data?',
            text: "You won't be able to revert this!",
            icon: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#3085d6',
            cancelButtonColor: '#d33',
            confirmButtonText: 'Yes, delete it!'
        }).then((result) => {
            if (result.value) {
                $.ajax({
                    url: "index.php?r=stockdelivery/delete",
                    method: "POST",
                    data: {"id": id},
                    success: function (response) {
                        if (response === 'success') {
                            swal.fire({
                                position: 'center-center',
                                type: 'success',
                                title: 'Your data has been deleted',
                                showConfirmButton: false,
                                timer: 1500, }).then(function (result) {
                                location.reload();
                            });
                        }
                    },
                });
            }
        }
        )
    }
</script>