| Current Path : /var/www/html/crm/views/stockdelivery/ |
| 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 ' ' . 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">×</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} {update} {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>