%PDF- %PDF-
| Direktori : /home/opti/workflow/src/views/inventory/ |
| Current File : /home/opti/workflow/src/views/inventory/viewItem.ejs |
<% include ../partials/header %>
<!-- ////////////////////////////////////////////////////////////////////////////-->
<% include ../partials/sidebar %>
<style>
form {
padding: 20px;
}
td form {
display: inline-block;
}
.actionBtn {
border: none;
border-radius: 4px;
color:white;
}
.hide {
display: none;
}
</style>
<div class="app-content content">
<div class="content-wrapper">
<div class="content-header row">
</div>
<div class="content-body">
<!-- Breadcrumb starts-->
<div class="content-header-left col-md-6 col-12 mb-2">
<h3 class="content-header-title"><%= item.referenceNo %></h3>
<div class="row breadcrumbs-top">
<div class="breadcrumb-wrapper col-12">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="/">Dashboard</a>
</li>
<li class="breadcrumb-item"><a href="/inventory/items">Items</a>
</li>
<li class="breadcrumb-item active"><%= item.referenceNo %>
</li>
</ol>
</div>
</div>
</div>
<!-- Breadcrumb ends-->
<div class="text-center">
<a class="quick-btn text-red" href="/inventory/items/move" data-target="#moveItem" data-toggle="modal">
<i class="ft-arrow-right fa-2x"></i>
<span>Move Item</span>
</a>
</div>
<%- format_messages(messages) %>
<section id="dom">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<a class="heading-elements-toggle"><i class="la la-ellipsis-v font-medium-3"></i></a>
<div class="heading-elements">
<ul class="list-inline mb-0">
<li><a data-action="collapse"><i class="ft-minus"></i></a></li>
<li><a data-action="expand"><i class="ft-maximize"></i></a></li>
<li><a data-action="close"><i class="ft-x"></i></a></li>
</ul>
</div>
</div>
<div class="card-content collapse show">
<div class="card-body card-dashboard">
<div class="row col-sm-12">
<div class="col-lg-5 col-md-4 col-sm-12 ">
<img class=" col-sm-12 " src="/assets/images/items/<%= item.image %>" />
<div><br/></div>
</div>
<div class="col-lg-7 col-md-8 col-sm-12 ">
<div>
<label>Name</label>
<div><strong><%= item.name %></strong></div>
</div>
<div>
<label>Description</label>
<div><strong><%= item.description ? item.description : "--" %></strong></div>
</div>
<div>
<label>Location</label>
<div><strong>
<% if(item.movements.length > 0){ %>
<%= item.movements[item.movements.length - 1].location %> :
<%= item.receiver %>
<% } else { %>
<%= item.location %> Store
<% } %>
</strong></div>
</div>
</div>
</div>
<div>
<br>
<table class="table table-striped table-bordered " id="documentsTable">
<thead>
<tr>
<th>S/N</th>
<th>Document Name</th>
<!-- <th>Type</th> -->
<!-- <th>Size</th> -->
<th>Actions</th>
</tr>
</thead>
<tbody>
<% if(item.documents.length > 0){ %>
<% item.documents.forEach(function(document, index){ %>
<tr>
<td> <%= index +1 %> </td>
<td> <%= document.name %> </td>
<!-- <td> <%= document.type %> </td> -->
<!-- <td> <%= document.size %> </td> -->
<td>
<a href="/inventory/items/document/download/<%= document.filename %>" class="" download="<%= document.name %>" title="Download Document" ><i class="ft-arrow-down" > </i></a>
</td>
</tr>
<% })}%>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section >
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
Item Movement History
<a class="heading-elements-toggle"><i class="la la-ellipsis-v font-medium-3"></i></a>
<div class="heading-elements">
<ul class="list-inline mb-0">
<li><a data-action="collapse"><i class="ft-minus"></i></a></li>
<li><a data-action="expand"><i class="ft-maximize"></i></a></li>
<li><a data-action="close"><i class="ft-x"></i></a></li>
</ul>
</div>
</div>
<div class="card-content collapse show">
<div class="card-body card-dashboard">
<div class="table">
<table class="table table-striped table-bordered " id="historiesTable">
<thead>
<tr>
<th>Moved From</th>
<th>Moved To</th>
<!-- <th>Type</th> -->
<th>Moved By</th>
<th>Remarks</th>
<th>Date</th>
</tr>
</thead>
<tbody>
<% if(item.movements.length > 0){ %>
<% item.movements.forEach(function(movement, index){ %>
<tr>
<td id="moverName<%= movement.id %>"> <%= movement.location %></td>
<td id="receiverName<%= movement.id %>"> <%= movement.location %><%= movement.moverType %> </td>
<td> <%= movement.moveBy.firstName+" "+movement.moveBy.lastName %></td>
<td> <%= movement.remarks %> </td>
<td> <%= moment(movement.createdAt).format('MMMM Do YYYY') %> </td>
</tr>
<% })}%>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
</div>
</div>
<div class="modal fade text-left bd-example-modal-sm" id="moveItem" tabindex="-1" role="dialog" aria-labelledby="myModalLabel35" aria-hidden="true">
<div class="modal-dialog modal-sm" role="document">
<div class="modal-content">
<div class="modal-header" style="background-color:#1E9FF2;">
<h3 class="modal-title" id="myModalLabel35"> Move Item</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<form id="moveForm" class="form" action="/inventory/item/move" method="POST">
<input type="hidden" readonly name="itemId" value="<%= item.id %>">
<div class="form-body">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label for="location">Move To</label>
<select class="custom-select" name="location" id="location">
<option value="">Select Location</option>
<option value="Store">Store</option>
<option value="Region">Region</option>
<option value="Branch">Branch</option>
<option value="Company Structure">Company Structure</option>
<option value="Employee">Employee</option>
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="form-group">
<div id="companyUnitContainer" class="hide">
<label for="companyUnit">Company Units</label>
<select class="custom-select" name="companyUnit" id="companyUnit">
<option value="">Select</option>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label for="receiverId">Receiver</label>
<select class="custom-select" name="receiverId" id="receiverId">
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label for="pieces">Remarks</label>
<textarea name="remarks" id="remarks" class="form-control" placeholder="Remarks" ></textarea>
</div>
</div>
<input type="hidden" name="itemId" />
<input type="hidden" name="receiverType" />
</div>
<div class="form-actions">
<button type="reset" class="btn btn-warning mr-1" data-dismiss="modal" value="close">
<i class="ft-x"></i> Cancel
</button>
<button type="submit" class="btn btn-primary"><i class="la la-check-square-o"></i>Save</button>
</div>
</div>
</form>
</div>
</div>
</div>
<!-- ////////////////////////////////////////////////////////////////////////////-->
<% include ../partials/footer %>
<script>
$("#documentsTable").DataTable({searching: false, paging: false, info: false});
function getEmployees(){
$.ajax({
type: "GET", // Post / Get method
url: "/inventory/api/employees", //Where form data is sent on submission
dataType:"text", // Data type, HTML, json etc.
data:{ }, //Form variables
success:function(response){
alert("Request sent")
console.log(response)
//$('#receiverId').html();
},
error:function (xhr, ajaxOptions, thrownError){
console.log("Request error")
$.alert('Could not delete');
}
});
}
$('#orgStructure').change(function(e){
var selectedVal = $(this).val();
if(selectedVal === 'employee'){
getEmployees();
} else {
getStructures();
}
})
function getData(url, next){
$('#spinnerContainer').addClass('show');
let fetchData = {
method: 'get',
headers: new Headers()
}
fetch(url, fetchData) // Call the fetch function passing the url of the API as a parameter
.then(function(res) {
// Your code for handling the data you get from the API
res.json().then(function(data){
console.log(data, "Data")
$('#spinnerContainer').removeClass('show');
next(data)
})
})
.catch(function(err) {
// This is where you run code if the server returns any errors
console.log(err, "Error")
});
}
$('#moveBtn').click(function(e){
var opener = $(this)
$('#moveForm').find('[name="itemId"]').val(opener.attr('itemId'))
})
</script>
<script>
function showStore(datas){
var element = $('#receiverId');
element.html('');
element.append('<option>Select Store</option>');
if(datas.length > 0){
datas.forEach(function(data){
// console.log(data)
element.append('<option value="' + data.id + '">' + data.name + '</option>')
})
} else {
element.html('');
element.append('<option>No store found</option>');
}
}
function showOrganisationStructures(datas){
var element = $('#companyUnit');
element.html('');
element.append('<option>Select</option>');
if(datas.length > 0){
datas.forEach(function(data){
// console.log(data)
element.append('<option value="' + data.id + '">' + data.structure.name + '</option>')
})
} else {
element.html('');
element.append('<option>Nothing was found</option>');
}
}
function showStructureOwner(datas){
var element = $('#receiverId');
element.html('');
element.append('<option>Select Receiver</option>');
if(datas.length > 0){
datas.forEach(function(data){
// console.log(data)
element.append('<option value="' + data.id + '">' + data.name + '</option>')
})
} else {
element.html('');
element.append('<option>Nothing was found</option>');
}
}
function showRegion(datas){
var element = $('#receiverId');
element.html('');
element.append('<option>Select Region</option>');
if(datas.length > 0){
datas.forEach(function(data){
// console.log(data)
element.append('<option value="' + data.id + '">' + data.name + '</option>')
})
} else {
element.html('');
element.append('<option>Nothing was found</option>');
}
}
function showBranch(datas){
var element = $('#receiverId');
element.html('');
element.append('<option>Select Branch</option>');
if(datas.length > 0){
datas.forEach(function(data){
// console.log(data)
element.append('<option value="' + data.id + '">' + data.name + '</option>')
})
} else {
element.html('');
element.append('<option>Nothing was found</option>');
}
}
function showEmployee(datas){
var element = $('#receiverId');
element.html('');
element.append('<option>Select Owner</option>');
if(datas.length > 0){
datas.forEach(function(data){
// console.log(data)
element.append('<option value="' + data.id + '">' + (data.firstName ? data.firstName : '') + ' ' + (data.middleName ? data.middleName : '') + ' ' + (data.lastName ? data.lastName : '') + '</option>')
})
} else {
element.html('');
element.append('<option>Nothing was found</option>');
}
}
</script>
<script>
$('#companyUnit').change(function(e){
var orgStructureId = $(this).val();
getData('/structure/api/all/' + orgStructureId, function(data){
showStructureOwner(data)
});
})
function showUnit(show){
if(show){
$('#companyUnitContainer').removeClass('hide')
} else {
$('#companyUnitContainer').addClass('hide')
}
}
$('#location').change(function(e){
var value = $(this).val();
switch(value){
case 'Store':
showUnit(false)
getData('/inventory/stores/api/all', function(data){
showStore(data)
});
break;
case 'Region':
showUnit(false)
getData('/region/api/all', function(data){
showRegion(data)
});
break;
case 'Employee':
showUnit(false)
getData('/employee/api/all', function(data){
showEmployee(data)
});
break;
case 'Branch':
showUnit(false)
getData('/branch/api/all', function(data){
showBranch(data)
});
break;
case 'Company Structure':
showUnit(true)
getData('/structure/organisation/api/all', function(data){
showOrganisationStructures(data)
});
break;
}
})
</script>
<script>
$(document).ready(function() {
$.ajax({
type: "POST", // Post / Get method
url: "/inventory/items/get-moverOrReceiverName", //Where form data is sent on submission
dataType: "text", // Data type, HTML, json etc.
data: {_csrf: "<%= _csrfToken %>", itemId: "<%= item.id %>" }, //Form variables
success: function (response) {
$('#spinnerContainer').removeClass('show');
response = JSON.parse(response);
// console.log(response.jobTitles)
if(response.status == "success"){
var itemMovements = response.itemMovements;
itemMovements.forEach((movement, index) => {
// console.log($(`#moverName${movement.id}`).html())
$(`#moverName${movement.id}`).html(movement.mover);
$(`#receiverName${movement.id}`).html(movement.receiver);
})
}
else{
toastr.error(response.msg, '', {"showMethod": "slideDown", "hideMethod": "slideUp", timeOut: 3000});
}
},
error:function (error){
$('#spinnerContainer').removeClass('show');
alert(error.message)
}
})
})
</script>