| Current Path : /var/www/html/crm/views/deliveryorder/ |
| Current File : /var/www/html/crm/views/deliveryorder/_form.php |
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use app\models\ParamList;
use yii\helpers\ArrayHelper;
use yii\helpers\Url;
use app\models\Vendor;
use app\models\Company;
use app\models\Customer;
use app\models\Product;
use app\models\DeliveryOrderItem;
use app\models\StockLog;
use app\models\User;
/* @var $this yii\web\View */
/* @var $model app\models\DeliveryOrder */
/* @var $form yii\widgets\ActiveForm */
$ParamList = new ParamList();
$StockLog = new StockLog();
?>
<div class="delivery-order-form">
<div class="kt-container kt-container--fluid kt-grid__item kt-grid__item--fluid">
<div class="kt-portlet kt-portlet--mobile">
<div class="kt-portlet__body kt-portlet__body--fit">
<div class="kt-portlet__head">
<div class="kt-portlet__head-label">
<span class="kt-font-info"><i class="fas fa-info-circle"></i> Field with <span class="required">*</span> is required</span>
</div>
</div>
<div class="kt-portlet__body">
<?php $form = ActiveForm::begin(['options' => ['class' => 'kt-form kt-form--label-right']]); ?>
<div class="row">
<div class="col-3">
<div class='form-group-custom'>
<?php
$disabled = false;
if (Yii::$app->controller->action->id == 'update')
$disabled = true;
echo $form->field($model, 'company_id', [
'template' => "{label}<span class='required'>*</span>{input}<span class='kt-font-danger font-weight-bold'>{error}</span>"])
->dropDownList(ArrayHelper::map(Company::find()->orderBy(['name' => SORT_ASC])->all(), 'id', 'name'), [
'disabled' => $disabled, 'prompt' => '- Please choose -',
'class' => 'form-control kt-selectpicker', 'data-live-search' => 'true']);
?>
</div>
</div>
<div class="col-3">
<div class='form-group-custom'>
<?=
$form->field($model, 'doc_dt', [
'template' => "{label}<span class='required'>*</span>
<div class='input-group'>
{input}
<div class='input-group-append'><span class='input-group-text'><i class='la la-calendar-check-o'></i></span></div>
</div>
<span class='kt-font-danger font-weight-bold'>{error}</span>"
])->textInput(['readonly' => true]);
?>
</div>
</div>
<div class="col-3">
<div class='form-group-custom'>
<?=
$form->field($model, 'po_ref', [
'template' => "{label}{input}<span class='kt-font-danger font-weight-bold'>{error}</span>"
])->textInput(['maxlength' => true]);
?>
</div>
</div>
<div class="col-3">
<div class='form-group-custom'>
<?=
$form->field($model, 'sales_pic', [
'template' => "{label}<span class='required'>*</span>{input}<span class='kt-font-danger font-weight-bold'>{error}</span>"])
->dropDownList(ArrayHelper::map(User::find()->orderBy(['name' => SORT_ASC])->all(), 'id', 'name'), [
'prompt' => '- Please choose -', 'class' => 'form-control kt-selectpicker', 'data-live-search' => 'true']);
?>
</div>
</div>
<div class="col-3">
<div class='form-group-custom'>
<?=
$form->field($model, 'customer_id', [
'template' => "{label}{input}<span class='kt-font-danger font-weight-bold'>{error}</span>"])
->dropDownList(ArrayHelper::map(Customer::find()->orderBy(['name' => SORT_ASC])->all(), 'id', 'name'), [
'prompt' => '- Please choose -', 'class' => 'form-control kt-selectpicker', 'data-live-search' => 'true', 'onchange' => 'changecustomer(this.value)']);
?>
</div>
</div>
<div class="col-3">
<div class='form-group-custom'>
<?=
$form->field($model, 'customer_name', [
'template' => "{label}<span class='required'>*</span>{input}<span class='kt-font-danger font-weight-bold'>{error}</span>"
])->textInput(['maxlength' => true]);
?>
</div>
</div>
<div class="col-3">
<div class='form-group-custom'>
<?=
$form->field($model, 'customer_address1', [
'template' => "{label}<span class='required'>*</span>{input}<span class='kt-font-danger font-weight-bold'>{error}</span>"
])->textInput(['maxlength' => true, 'placeholder' => "Address Line 1"]);
?>
</div>
</div>
<div class="col-3">
<div class='form-group-custom'>
<?=
$form->field($model, 'customer_address2', [
'template' => "<label class='control-label'> </label>{input}<span class='kt-font-danger font-weight-bold'>{error}</span>"
])->textInput(['maxlength' => true, 'placeholder' => "Address Line 2"])->label(false);
?>
</div>
</div>
<div class="col-3">
<div class='form-group-custom'>
<?=
$form->field($model, 'customer_postcode', [
'template' => "{label}<span class='required'>*</span>{input}<span class='kt-font-danger font-weight-bold'>{error}</span>"
])->textInput(['maxlength' => true]);
?>
</div>
</div>
<div class="col-3">
<div class='form-group-custom'>
<?=
$form->field($model, 'customer_city', [
'template' => "{label}<span class='required'>*</span>{input}<span class='kt-font-danger font-weight-bold'>{error}</span>"
])->textInput(['maxlength' => true]);
?>
</div>
</div>
<div class="col-3">
<div class='form-group-custom'>
<?=
$form->field($model, 'customer_state', [
'template' => "{label}<span class='required'>*</span>{input}<span class='kt-font-danger font-weight-bold'>{error}</span>"])
->dropDownList($ParamList->getparamlist(3), ['class' => 'form-control kt-selectpicker']);
?>
</div>
</div>
<div class="col-3">
<div class='form-group-custom'>
<?=
$form->field($model, 'customer_pic', [
'template' => "{label}<span class='required'>*</span>
<div class='input-group'>
{input}
<div class='input-group-append'>
<button class='btn btn-warning' type='button' onclick='choosecontact()'>Select</button>
</div>
</div>
<span class='kt-font-danger font-weight-bold'>{error}</span>"
])->textInput(['maxlength' => true, 'placeholder' => 'Click "Select" to choose from "Contact Person"']);
?>
</div>
</div>
<div class="col-3">
<div class='form-group-custom'>
<?=
$form->field($model, 'customer_phone', [
'template' => "{label}<span class='required'>*</span>{input}<span class='kt-font-danger font-weight-bold'>{error}</span>"
])->textInput(['maxlength' => true]);
?>
</div>
</div>
</div>
<?php if (Yii::$app->controller->action->id == 'update') { ?>
<table class="table table-bordered table-striped" id="wrapper_product_list">
<thead>
<tr class="thead-dark">
<th>SKU</th>
<th>Description</th>
<th width="11%">Qty</th>
<th width="10%">UoM</th>
<th width="10%">Unit Price (RM)</th>
<th width="10%">Discount (%)</th>
<th width="10%">Total (RM)</th>
<th>Remarks</th>
<th width="1%">Action</th>
</tr>
</thead>
<tbody>
<?php
$modelItem = DeliveryOrderItem::find()->where(['doc_id' => $model->id])->orderBy(['id' => SORT_ASC])->all();
$Product = new Product();
if (!empty($modelItem)) {
foreach ($modelItem as $rowItem) {
$ownertypeV = '';
$ownertypeC = '';
if ($rowItem->owner_type == 'vendor')
$ownertypeV = 'selected';
if ($rowItem->owner_type == 'company')
$ownertypeC = 'selected';
$stock_owned_vendor = $StockLog->balancestockbyowner($rowItem->product_id, 'vendor', $Product->getvendor($rowItem->product_id));
$stock_owned_com = $StockLog->balancestockbyowner($rowItem->product_id, 'company', $model->company_id);
$stock_all = $stock_owned_vendor + $stock_owned_com;
echo '<tr id="rowItem_' . $rowItem->id . '">
<td style="vertical-align:middle;">' . $Product->getsku($rowItem->product_id) . '</td>
<td style="vertical-align:middle;">
<input type="hidden" value="' . $rowItem->id . '" name="item_id[]">
' . $Product->getname($rowItem->product_id) . '
</td>
<td>
<input type="text" class="form-control" value="' . $rowItem->quantity . '" name="item_quantity_' . $rowItem->id . '" onchange="updatetotal(' . $rowItem->id . ')">
<span class="kt-badge kt-badge--inline kt-badge--success mt-2 tooltip-stock" data-toggle="tooltip" data-placement="bottom" data-html="true" title="Vendor : ' . number_format($stock_owned_vendor) . '<br>Company : ' . number_format($stock_owned_com) . '">Current stock : ' . number_format($stock_all) . '</span>
</td>
<td><input type="text" class="form-control" value="' . $rowItem->uom . '" name="item_uom_' . $rowItem->id . '"></td>
<td><input type="text" class="form-control" value="' . $rowItem->unit_price . '" name="item_unitprice_' . $rowItem->id . '" onchange="updatetotal(' . $rowItem->id . ')"></td>
<td><input type="text" class="form-control" value="' . $rowItem->discount . '" name="item_discount_' . $rowItem->id . '" onchange="updatetotal(' . $rowItem->id . ')"></td>
<td><input type="text" class="form-control" value="' . $rowItem->total . '" name="item_total_' . $rowItem->id . '"></td>
<td><input type="text" class="form-control" value="' . $rowItem->remarks . '" name="item_remarks_' . $rowItem->id . '"></td>
<td align="center"><i class="fas fa-trash-alt kt-font-danger" style="cursor:pointer;" title="Delete product" onclick="deleteproduct(' . $rowItem->id . ')"></i></td>
</tr>';
}
}
?>
</tbody>
</table>
<?php } ?>
</div>
<div class="kt-portlet__foot">
<div class="kt-form__actions">
<?= Html::a('<i class="fas fa-arrow-left"></i> Back', ['index'], ['class' => 'btn btn-outline-brand']) ?>
<?= Html::a('<i class="fas fa-sync"></i> Reset', [Yii::$app->controller->action->id, 'uuid' => Yii::$app->getRequest()->getQueryParam('uuid')], ['class' => 'btn btn-outline-success']); ?>
<?= Html::submitButton('<i class="far fa-save"></i> Save', ['class' => 'btn btn-info']); ?>
<?php
if (Yii::$app->controller->action->id == 'update') {
echo Html::button('<i class="fas fa-box-open"></i> Add Product', ['class' => 'btn btn-outline-warning', 'onclick' => 'displaymodal()']);
echo ' ' . Html::a('<i class="far fa-file-pdf"></i> View DO doc', ['download', 'uuid' => Yii::$app->getRequest()->getQueryParam('uuid')], ['class' => 'btn btn-danger', 'target' => '_blank']);
}
?>
</div>
</div>
<?php ActiveForm::end(); ?>
</div>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog modal-dialog-centered modal-xl" role="document">
<div class="modal-content">
<div class="modal-header"><h5 class="modal-title" id="exampleModalLongTitle">Product List</h5></div>
<div class="modal-body">
<form autocomplete="off">
<div class="input-group">
<input type="text" class="form-control" placeholder="Enter product name here..." id="product_keyword">
<div class="input-group-append"><button class="btn btn-success" type="button" onclick="addproduct()">Search</button></div>
</div>
</form>
<input type="hidden" class="form-control" id="doc_id" value="<?= $model->id; ?>">
<div id="productlist_wrapper" class="mt-4"></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-primary" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-primary" onclick="saveproduct()">Add product</button>
</div>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="modalContact" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog modal-dialog-centered modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLongTitle">Contact Person List</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body"><div id="contactwrapper"></div></div>
</div>
</div>
</div>
<?php
$this->registerJs("$('#deliveryorder-doc_dt').datepicker({
rtl: KTUtil.isRTL(),
todayHighlight: true,
orientation: 'bottom left',
format: 'yyyy-mm-dd',
clearBtn: true,
todayHighlight: true,
});");
?>
<script>
function displaymodal() {
$('#product_keyword').val('');
$('#productlist_wrapper').html('');
$('#myModal').modal('show');
$('#error_message').hide();
}
function addproduct() {
var com_id = $('#deliveryorder-company_id').val();
var doc_id = $('#doc_id').val();
var product_keyword = $('#product_keyword').val();
$.ajax({
url: "index.php?r=deliveryorder/getproductlist",
method: "POST",
data: {"com_id": com_id, "doc_id": doc_id, "product_keyword": product_keyword},
success: function (response) {
$('#productlist_wrapper').html(response);
$('#error_message').hide();
},
});
}
function saveproduct() {
var doc_id = $('#doc_id').val();
var company_id = $('#deliveryorder-company_id').val();
var items = [];
$('.product_id').each(function () {
if ($(this).is(":checked")) {
var item_val = $(this).val();
items.push(item_val);
}
});
if (items.length === 0) {
$('#error_message').show();
} else {
$.ajax({
url: "index.php?r=deliveryorder/addproduct",
method: "POST",
data: {"doc_id": doc_id, "items": items, "company_id": company_id},
success: function (response) {
if (response !== '') {
$('#myModal').modal('hide');
$('#wrapper_product_list').append(response);
$('#wrapper_product_list .kt-selectpicker').selectpicker('refresh');
$('#wrapper_product_list .tooltip-stock').tooltip('update');
}
},
});
}
}
function updatetotal(item_id) {
var quantity = parseInt($("input[name=item_quantity_" + item_id + "]").val());
var unitprice = parseFloat($("input[name=item_unitprice_" + item_id + "]").val());
var discount = parseFloat($("input[name=item_discount_" + item_id + "]").val());
var total = quantity * unitprice - (discount / 100 * (unitprice * quantity));
$("input[name=item_total_" + item_id + "]").val(total.toFixed(2));
}
function changecustomer(id) {
if (id !== '') {
$.ajax({
url: "index.php?r=quotation/getcustomerdetails",
method: "POST",
data: {"id": id},
success: function (response) {
if (response !== '') {
var arr = response.split("<->");
$('#deliveryorder-customer_name').val(arr[0]);
$('#deliveryorder-customer_address1').val(arr[1]);
$('#deliveryorder-customer_address2').val(arr[2]);
$('#deliveryorder-customer_postcode').val(arr[3]);
$('#deliveryorder-customer_city').val(arr[4]);
$('#deliveryorder-customer_state').val(arr[5]);
$('#deliveryorder-customer_state').selectpicker('refresh');
$('#deliveryorder-customer_pic').val(arr[6]);
$('#deliveryorder-customer_phone').val(arr[7]);
}
},
});
}
}
function deleteproduct(id) {
Swal.fire({
title: 'Are you sure to delete this product?',
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=deliveryorder/deleteproduct",
method: "POST",
data: {"id": id},
success: function (response) {
if (response === 'success') {
swal.fire({
position: 'center-center',
type: 'success',
title: 'Product has been deleted',
showConfirmButton: false,
timer: 1500, }).then(function (result) {
$('#rowItem_' + id).remove();
});
}
},
});
}
}
);
}
function choosecontact() {
var type = 'ctc_cust';
var data_id = $('#deliveryorder-customer_id').val();
if (data_id !== '') {
$.ajax({
url: "index.php?r=contact/getcontactlist",
method: "POST",
data: {"type": type, "data_id": data_id},
success: function (response) {
$('#contactwrapper').html(response);
$('#modalContact').modal('show');
},
});
} else {
alert("Customer cannot be empty if you want to choose Contact Person");
}
}
function changecontact(val) {
var arr = val.split("<->");
$('#deliveryorder-customer_pic').val(arr[0]);
$('#deliveryorder-customer_phone').val(arr[1]);
$('#modalContact').modal('hide');
}
</script>