Merge branch 'Dev2' of https://git.pstw.com.my/catalyx/PSTW_CentralizeSystem into Dev2
This commit is contained in:
commit
d8850efed7
@ -45,5 +45,9 @@ namespace PSTW_CentralSystem.Areas.Inventory.Controllers.Admin
|
|||||||
{
|
{
|
||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
|
public IActionResult QrScanner()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,6 +20,11 @@ namespace PSTW_CentralSystem.Areas.Inventory.Controllers
|
|||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ActionResult Qr()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
[Authorize]
|
[Authorize]
|
||||||
[HttpPost("/i/{id}")]
|
[HttpPost("/i/{id}")]
|
||||||
public IActionResult ItemRecognization(string id, [FromBody] ItemModel item)
|
public IActionResult ItemRecognization(string id, [FromBody] ItemModel item)
|
||||||
|
|||||||
@ -26,8 +26,10 @@ namespace PSTW_CentralSystem.Areas.Inventory.Models
|
|||||||
[Comment("Repair, Calibration, Faulty, Ready To Deploy, On Delivery")]
|
[Comment("Repair, Calibration, Faulty, Ready To Deploy, On Delivery")]
|
||||||
public string? LatestStatus { get; set; }
|
public string? LatestStatus { get; set; }
|
||||||
public bool MovementComplete { get; set; } = false;
|
public bool MovementComplete { get; set; } = false;
|
||||||
|
//public virtual ItemModel? Item { get; set; }
|
||||||
|
//[ForeignKey("ToStore")]
|
||||||
public virtual ItemModel? Item { get; set; }
|
public virtual ItemModel? Item { get; set; }
|
||||||
[ForeignKey("ToStore")]
|
[ForeignKey("ItemId")]
|
||||||
public virtual StoreModel? NextStore { get; set; }
|
public virtual StoreModel? NextStore { get; set; }
|
||||||
[ForeignKey("ToStation")]
|
[ForeignKey("ToStation")]
|
||||||
public virtual StationModel? NextStation { get; set; }
|
public virtual StationModel? NextStation { get; set; }
|
||||||
|
|||||||
@ -20,7 +20,7 @@
|
|||||||
<div id="registerItem" class="row">
|
<div id="registerItem" class="row">
|
||||||
<div class="row card">
|
<div class="row card">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<button id="addItemBtn" class="btn btn-success col-md-3 col-lg-3 m-1 col-12"><i class="fa fa-plus"></i> Add Item</button>
|
@* <button id="addItemBtn" class="btn btn-success col-md-3 col-lg-3 m-1 col-12"><i class="fa fa-plus"></i> Add Item</button> *@
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
@* <div v-if="loading">
|
@* <div v-if="loading">
|
||||||
@ -46,7 +46,7 @@
|
|||||||
<div class="col-12 text-center">
|
<div class="col-12 text-center">
|
||||||
<div id="QrContainer"></div>
|
<div id="QrContainer"></div>
|
||||||
<div class="col-12 text-center">
|
<div class="col-12 text-center">
|
||||||
{{thisQRInfo.uniqueID}}
|
{{thisQRInfo.itemId}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -76,368 +76,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal fade" id="itemMovementModal" tabindex="-1" role="dialog" aria-labelledby="addItemModalLabel" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-dialog-centered modal-xl" role="document">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title" id="addItemModalLabel">Add Item</h5>
|
|
||||||
<button type="button" class="closeModal" data-dismiss="modal" aria-label="Close" v-on:click="showItemModal=false">
|
|
||||||
<span aria-hidden="true">×</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="container-fluid">
|
|
||||||
<form v-on:submit.prevent="addItem" data-aos="fade-right">
|
|
||||||
<div class=" register" data-aos="fade-right">
|
|
||||||
<div class="row" data-aos="fade-right">
|
|
||||||
|
|
||||||
@*Right Side*@
|
|
||||||
<div class="col-md-12">
|
|
||||||
<div class="tab-content" id="myTabContent">
|
|
||||||
<div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
|
|
||||||
<h3 class="register-heading">ITEM MOVEMENT</h3>
|
|
||||||
<div class="row register-form">
|
|
||||||
<div class="col-md-6">
|
|
||||||
|
|
||||||
<!-- Company Dropdown -->
|
|
||||||
<div class="form-group row">
|
|
||||||
<label class="col-sm-4 col-form-label">To Station</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<div class="dropdown">
|
|
||||||
<select class="btn btn-primary dropdown-toggle col-md-10" v-model="selectedtoStation" :disabled="currentUserCompanyDept != null" required>
|
|
||||||
<option class="btn-light" value="" disabled selected>Select Station</option>
|
|
||||||
<option class="btn-light" v-for="(station, index) in stations" :key="index" :value="station.stationId">{{station.stationName}}</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="form-group row">
|
|
||||||
<label class="col-sm-4 col-form-label">To Store:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<select class="btn btn-primary dropdown-toggle col-md-10" v-model="selectedtoStore" :disabled="currentUserCompanyDept != null" required>
|
|
||||||
<option class="btn-light" value="" disabled selected>Select Store</option>
|
|
||||||
<option class="btn-light" v-for="(store, index) in stores" :key="index" :value="store.companyId">{{ store.storeName }}</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group row">
|
|
||||||
<label class="col-sm-4 col-form-label">To User:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<select class="btn btn-primary dropdown-toggle col-md-10" v-model="selectedtoUser" :disabled="currentUserCompanyDept != null" required>
|
|
||||||
<option class="btn-light" value="" disabled selected>Select User</option>
|
|
||||||
<option class="btn-light" v-for="(user, index) in users" :key="index" :value="user.id">{{ user.fullName }}</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group row">
|
|
||||||
<label class="col-sm-4 col-form-label">Last User:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<select class="btn btn-primary dropdown-toggle col-md-10" v-model="selectedlastUser" :disabled="currentUserCompanyDept != null" required>
|
|
||||||
<option class="btn-light" value="" disabled selected>Select Store</option>
|
|
||||||
<option class="btn-light" v-for="(store, index) in stores" :key="index" :value="store.companyId">{{ store.storeName }}</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group row">
|
|
||||||
<label class="col-sm-4 col-form-label">Last Store:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<select class="btn btn-primary dropdown-toggle col-md-10" v-model="selectedlastStore" :disabled="currentUserCompanyDept != null" required>
|
|
||||||
<option class="btn-light" value="" disabled selected>Select Store</option>
|
|
||||||
<option class="btn-light" v-for="(store, index) in stores" :key="index" :value="store.companyId">{{ store.storeName }}</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group row">
|
|
||||||
<label class="col-sm-4 col-form-label">Last Station:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<select class="btn btn-primary dropdown-toggle col-md-10" v-model="selectedlastStation" :disabled="currentUserCompanyDept != null" required>
|
|
||||||
<option class="btn-light" value="" disabled selected>Select Station</option>
|
|
||||||
<option class="btn-light" v-for="(station, index) in stations" :key="index" :value="station.stationId">{{ station.stationName}}</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group row">
|
|
||||||
<label class="col-sm-4 col-form-label">To Other:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="text" id="toOther" name="toOther" v-model="toOther" class="form-control" required />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group row">
|
|
||||||
<label class="col-sm-4 col-form-label">Action:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="text" id="action" name="action" v-model="action" class="form-control" required />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group row">
|
|
||||||
<label class="col-sm-4 col-form-label">Quantity:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="number" id="quantity" name="quantity" v-model="quantity" class="form-control" required />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group row">
|
|
||||||
<label class="col-sm-4 col-form-label">To Other:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="text" id="toOther" name="toOther" v-model="toOther" class="form-control" required />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group row">
|
|
||||||
<label class="col-sm-4 col-form-label">To Other:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="text" id="toOther" name="toOther" v-model="toOther" class="form-control" required />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group row">
|
|
||||||
<label class="col-sm-4 col-form-label">To Store:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<select class="btn btn-primary dropdown-toggle col-md-10" v-model="selectedDepartment" :disabled="currentUserCompanyDept != null" required>
|
|
||||||
<option class="btn-light" value="" disabled selected>Select Store</option>
|
|
||||||
<option class="btn-light" v-for="(store, index) in stores" :key="index" :value="store.companyId">{{ store.storeName }}</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- TeamType Dropdown -->
|
|
||||||
<div class="form-group row">
|
|
||||||
<label class="col-sm-4 col-form-label">Team:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<select class="btn btn-primary dropdown-toggle col-md-10" v-model="selectedTeamType" required>
|
|
||||||
<option class="btn-light" value="" disabled selected>Select Team</option>
|
|
||||||
<option class="btn-light" v-for="(team, index) in teamTypes" :key="index" :value="team">{{ team }}</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
@* Product Name Coding *@
|
|
||||||
<div class="form-group row">
|
|
||||||
<label class="col-sm-4 col-form-label">Product Name:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<div class="dropdown">
|
|
||||||
<select class="btn btn-primary dropdown-toggle col-md-10" v-model="selectedProduct" required>
|
|
||||||
<option class="btn-light" value="" disabled selected>Select Product</option>
|
|
||||||
<option class="btn-light" v-for="(item, index) in products" :key="index" :value="item.productId">{{ item.productName + ' (' + item.modelNo + ')' }}</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@* Product Image Display *@
|
|
||||||
<div class="form-group row align-items-center">
|
|
||||||
<label for="imageProduct" class="col-sm-4 col-form-label">Product Image: </label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<img v-if="showProduct.imageProduct" :src="showProduct.imageProduct" alt="Product Image" class="img-fluid" data-toggle="modal" data-target="#imageModal" />
|
|
||||||
<input type="hidden" id="imageProduct" name="imageProduct" v-model="showProduct">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Modal -->
|
|
||||||
<div class="modal fade" id="imageModal" tabindex="-1" role="dialog" aria-labelledby="imageModalLabel" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-lg" role="document">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title" id="imageModalLabel">Product Image</h5>
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
||||||
<span aria-hidden="true">×</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<img :src="showProduct.imageProduct" alt="Product Image" class="img-fluid">
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@* Product Category Coding *@
|
|
||||||
<div class="form-group row">
|
|
||||||
<label class="col-sm-4 col-form-label">Product Category:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="text" id="category" name="category" v-model="showProduct.category" class="form-control" readonly />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@* Part Number Coding *@
|
|
||||||
<div class="form-group row">
|
|
||||||
<label class="col-sm-4 col-form-label">Part Number:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="text" id="partNumber" name="partNumber" v-model="partNumber" class="form-control" required />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@* Serial Number and Quantity Coding *@
|
|
||||||
<div v-if="showSerialNumber">
|
|
||||||
<div class="form-group row align-items-center">
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<label for="serialNumber">Serial Number: </label>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="text" id="serialNumber" name="serialNumber" v-if="showSerialNumber" v-model="serialNumber" class="form-control" v-bind:required="showSerialNumber">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div v-if="!showSerialNumber">
|
|
||||||
<div class="form-group row align-items-center">
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<label for="quantity">Quantity: </label>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="number" id="quantity" name="quantity" min="1" v-if="!showSerialNumber" v-model="quantity" class="form-control" v-bind:required="!showSerialNumber">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@* Supplier coding *@
|
|
||||||
<div class="form-group row align-items-center">
|
|
||||||
<label class="col-sm-4 col-form-label">Supplier: </label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<div class="dropdown">
|
|
||||||
<select class="btn btn-primary dropdown-toggle col-md-10" data-toggle="dropdown" aria-expanded="false" v-model="selectedSupplier" required>
|
|
||||||
<option class="btn-light" value="" disabled selected>Select Supplier</option>
|
|
||||||
<option class="btn-light" v-for="(item, index) in suppliers">{{ item.supplierName }}</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@* Purchase Date coding *@
|
|
||||||
<div class="form-group row align-items-center">
|
|
||||||
<label for="purchaseDate" class="col-sm-4 col-form-label">Purchase Date: </label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="date" id="purchaseDate" name="purchaseDate" required v-model="purchaseDate" class="form-control">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@* PO coding *@
|
|
||||||
<div class="form-group row align-items-center">
|
|
||||||
<label for="PO" class="col-sm-4 col-form-label">Enter PO: </label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="text" id="PO" name="PO" required v-model="PO" placeholder="PO123456" class="form-control">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-md-6">
|
|
||||||
@* Item Price in RM *@
|
|
||||||
<div class="form-group row">
|
|
||||||
<label for="DefaultPrice" class="col-sm-4">Default Item Price:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="number" id="DefaultPrice" name="DefaultPrice" class="form-control" placeholder="RM 00.00" step="0.01" min="0.01" v-on:input="convertCurrency()" required v-model="DefaultPrice">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@* Currency Selection *@
|
|
||||||
<div class="form-group row">
|
|
||||||
<label for="currency" class="col-sm-4">Select Currency:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<select id="currency" name="currency" class="btn btn-primary form-control col-md-10" v-model="currency" v-on:change="convertCurrency()">
|
|
||||||
<option class="btn-light" value="" disabled selected>Select a currency</option>
|
|
||||||
<option class="btn-light" v-for="(name, code) in currencies" :key="code" :value="code">
|
|
||||||
{{ code }} - {{ name }}
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@* Currency Rate *@
|
|
||||||
<div class="form-group row">
|
|
||||||
<label for="currencyRate" class="col-sm-4">Currency Rate(%):</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="number" id="currencyRate" name="currencyRate" class="form-control" placeholder="0.01" step="0.01" min="1" v-on:input="convertCurrency()" required v-model="currencyRate">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@* Item Convert Price *@
|
|
||||||
<div class="form-group row">
|
|
||||||
<label for="convertPrice" class="col-sm-4">{{ currency ? 'Item Price (' + currency + ') : ' : 'Item Price : ' }}</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="number" id="convertPrice" name="convertPrice" class="form-control" readonly v-model="convertPrice">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@* Delivery Order Number *@
|
|
||||||
<div class="form-group row">
|
|
||||||
<label for="DONo" class="col-sm-4">Enter DO Number:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="text" id="DONo" name="DONo" class="form-control" v-model="DONo" placeholder="DO123456">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@* Delivery Order Date *@
|
|
||||||
<div class="form-group row">
|
|
||||||
<label for="DODate" class="col-sm-4">Enter DO Date:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="date" id="DODate" name="DODate" class="form-control" v-on:input="calculateWarrantyEndDate()" v-model="DODate">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@* Warranty *@
|
|
||||||
<div class="form-group row">
|
|
||||||
<label for="warranty" class="col-sm-4">Enter Warranty (Months):</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="number" id="warranty" name="warranty" class="form-control" placeholder="0 , 1 , 2 , 3, ..." step="1" min="0" v-on:input="calculateWarrantyEndDate()" required v-model="warranty">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@* Warranty End Date *@
|
|
||||||
<div class="form-group row">
|
|
||||||
<label for="EndWDate" class="col-sm-4">Warranty End:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="date" id="EndWDate" name="EndWDate" class="form-control" readonly v-model="EndWDate">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@* Invoice Number *@
|
|
||||||
<div class="form-group row">
|
|
||||||
<label for="invoiceNo" class="col-sm-4">Invoice Number:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="text" id="invoiceNo" name="invoiceNo" class="form-control" v-model="invoiceNo" placeholder="Invoice123456">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@* Invoice Date *@
|
|
||||||
<div class="form-group row">
|
|
||||||
<label for="invoiceDate" class="col-sm-4">Invoice Date:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input type="date" id="invoiceDate" name="invoiceDate" class="form-control" v-model="invoiceDate">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@* Submit and Reset Buttons *@
|
|
||||||
<div class="form-group row">
|
|
||||||
<div class="col-sm-8 offset-sm-3">
|
|
||||||
<button type="button" v-on:click="resetForm" class="btn btn-secondary m-1">Reset</button>
|
|
||||||
<button type="submit" class="btn btn-primary m-1">Submit</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@section Scripts {
|
@section Scripts {
|
||||||
@ -564,6 +202,7 @@
|
|||||||
showSerialNumber() {
|
showSerialNumber() {
|
||||||
return this.showProduct.category === 'Asset' || this.showProduct.category === 'Part';
|
return this.showProduct.category === 'Asset' || this.showProduct.category === 'Part';
|
||||||
},
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
async addItem() {
|
async addItem() {
|
||||||
@ -649,7 +288,7 @@
|
|||||||
"columns": [
|
"columns": [
|
||||||
{
|
{
|
||||||
"title": "Unique Id",
|
"title": "Unique Id",
|
||||||
"data": "itemId",
|
"data": "id",
|
||||||
"createdCell": function (td, cellData, rowData, row, col) {
|
"createdCell": function (td, cellData, rowData, row, col) {
|
||||||
// Assign a unique ID to the <td> element
|
// Assign a unique ID to the <td> element
|
||||||
$(td).attr('id', `qr${cellData}`);
|
$(td).attr('id', `qr${cellData}`);
|
||||||
@ -657,7 +296,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Print",
|
"title": "Print",
|
||||||
"data": "itemId",
|
"data": "item.itemId",
|
||||||
"render": function (data, type, full, meta) {
|
"render": function (data, type, full, meta) {
|
||||||
var printButton = `<button type="button" class="btn btn-success print-btn" data-id="${data}">Print</button>`;
|
var printButton = `<button type="button" class="btn btn-success print-btn" data-id="${data}">Print</button>`;
|
||||||
return printButton;
|
return printButton;
|
||||||
@ -666,71 +305,71 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "To User",
|
"title": "To User",
|
||||||
"data": "toUser",
|
"data": "item.toUser",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Last User",
|
"title": "Last User",
|
||||||
"data": "lastStore",
|
"data": "item.lastUser",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Action",
|
"title": "Action",
|
||||||
"data": "action",
|
"data": "item.action",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Latest Status",
|
"title": "Latest Status",
|
||||||
"data": "latestStatus",
|
"data": "item.latestStatus",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Quantity",
|
"title": "Quantity",
|
||||||
"data": "quantity",
|
"data": "item.quantity",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "To Station",
|
"title": "To Station",
|
||||||
"data": "toStation",
|
"data": "item.toStation",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "To Store",
|
"title": "To Store",
|
||||||
"data": "toStore",
|
"data": "item.toStore",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "To Other",
|
"title": "To Other",
|
||||||
"data": "toOther",
|
"data": "item.toOther",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Remark",
|
"title": "Remark",
|
||||||
"data": "remark",
|
"data": "item.remark",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Note",
|
"title": "Note",
|
||||||
"data": "consignmentNote",
|
"data": "item.consignmentNote",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Send Date",
|
"title": "Send Date",
|
||||||
"data": "date",
|
"data": "item.date",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Last User",
|
"title": "Last User",
|
||||||
"data": "lastUser",
|
"data": "item.lastUser",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Last Store",
|
"title": "Last Store",
|
||||||
"data": "lastStore",
|
"data": "item.lastStore",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Last Station",
|
"title": "Last Station",
|
||||||
"data": "lastStation",
|
"data": "item.lastStation",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Latest Status",
|
"title": "Latest Status",
|
||||||
"data": "latestStatus",
|
"data": "item.latestStatus",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Receive Date",
|
"title": "Receive Date",
|
||||||
"data": "date",
|
"data": "item.date",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Completion",
|
"title": "Completion",
|
||||||
"data": "movementComplete",
|
"data": "item.movementComplete",
|
||||||
},
|
},
|
||||||
|
|
||||||
// {
|
// {
|
||||||
@ -769,10 +408,12 @@
|
|||||||
const api = this.api();
|
const api = this.api();
|
||||||
api.rows().every(function () {
|
api.rows().every(function () {
|
||||||
const data = this.data(); // Row data
|
const data = this.data(); // Row data
|
||||||
const containerId = `qr${data.itemId}`;
|
const containerId = `qr${data.id}`;
|
||||||
|
|
||||||
const container = $(`#${containerId}`);
|
const container = $(`#${containerId}`);
|
||||||
container.empty();
|
container.empty();
|
||||||
container.append(`${data.itemId}`);
|
container.append(`${data.item.itemId}`);
|
||||||
|
|
||||||
// console.log(container[0]);
|
// console.log(container[0]);
|
||||||
if (container) {
|
if (container) {
|
||||||
// Generate QR code only if not already generated
|
// Generate QR code only if not already generated
|
||||||
@ -825,6 +466,7 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
async fetchItem() {
|
async fetchItem() {
|
||||||
|
await this.fetchUser();
|
||||||
try {
|
try {
|
||||||
// const token = localStorage.getItem('token'); // Get the token from localStorage
|
// const token = localStorage.getItem('token'); // Get the token from localStorage
|
||||||
const response = await fetch('/InvMainAPI/ItemMovementList', {
|
const response = await fetch('/InvMainAPI/ItemMovementList', {
|
||||||
@ -839,6 +481,13 @@
|
|||||||
throw new Error('Failed to fetch item');
|
throw new Error('Failed to fetch item');
|
||||||
}
|
}
|
||||||
this.items = await response.json();
|
this.items = await response.json();
|
||||||
|
// const allowedKeys = ["toUser", "lastUser"];
|
||||||
|
// this.items = (await response.json()).filter(item => allowedKeys.some(key => item[key] === this.currentUser.id));
|
||||||
|
// this.items = (await response.json()).filter(item => item.lastUser === this.currentUser);
|
||||||
|
// const allowedKeys = ["toUser", "lastUser"];
|
||||||
|
// this.items = (await response.json()).filter(item =>
|
||||||
|
// allowedKeys.some(key => item[key] === this.currentuser.id)
|
||||||
|
// );
|
||||||
|
|
||||||
if (this.itemDatatable) {
|
if (this.itemDatatable) {
|
||||||
this.itemDatatable.clear().destroy();
|
this.itemDatatable.clear().destroy();
|
||||||
@ -1104,6 +753,7 @@
|
|||||||
this.currentUserCompanyDept = companyDeptData;
|
this.currentUserCompanyDept = companyDeptData;
|
||||||
this.selectedCompany = companyDeptData?.companyId || "";
|
this.selectedCompany = companyDeptData?.companyId || "";
|
||||||
this.selectedDepartment = companyDeptData?.departmentId || "";
|
this.selectedDepartment = companyDeptData?.departmentId || "";
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
console.error(`Failed to fetch user: ${response.statusText}`);
|
console.error(`Failed to fetch user: ${response.statusText}`);
|
||||||
|
|||||||
@ -86,4 +86,17 @@
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="col-6 col-md-6 col-lg-3">
|
||||||
|
<div class="card card-hover">
|
||||||
|
<a asp-area="Inventory" asp-controller="InventoryMaster" asp-action="QrScanner">
|
||||||
|
<div class="box bg-success text-center">
|
||||||
|
<h1 class="font-light text-white">
|
||||||
|
<i class="mdi mdi-checkbox-multiple-blank-circle"></i>
|
||||||
|
</h1>
|
||||||
|
<h6 class="text-white">QR Scanner</h6>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -526,8 +526,18 @@ namespace PSTW_CentralSystem.Controllers.API.Inventory
|
|||||||
{
|
{
|
||||||
|
|
||||||
var itemMovementList = await _centralDbContext.ItemMovements.ToListAsync();
|
var itemMovementList = await _centralDbContext.ItemMovements.ToListAsync();
|
||||||
|
//var itemList = await _centralDbContext.Items.ToListAsync();
|
||||||
|
|
||||||
|
int itemrow = 0;
|
||||||
|
var itemMovementListWithQR = itemMovementList.Select(item => new
|
||||||
|
{
|
||||||
|
id = itemrow++,
|
||||||
|
item, // Includes all properties of the original item
|
||||||
|
QRString = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host.Value}/I/{item.ItemId}" // Generate QR String
|
||||||
|
}).ToList();
|
||||||
Console.WriteLine(Json(itemMovementList));
|
Console.WriteLine(Json(itemMovementList));
|
||||||
return Json(itemMovementList);
|
//return Json(itemMovementList);
|
||||||
|
return Json(itemMovementListWithQR);
|
||||||
|
|
||||||
|
|
||||||
//try
|
//try
|
||||||
|
|||||||
@ -776,7 +776,7 @@
|
|||||||
<script src="~/lib/html2canvas/dom-to-image.min.js"></script>
|
<script src="~/lib/html2canvas/dom-to-image.min.js"></script>
|
||||||
<!-- Datatables JS-->
|
<!-- Datatables JS-->
|
||||||
<script src="~/lib/datatables/datatables.js"></script>
|
<script src="~/lib/datatables/datatables.js"></script>
|
||||||
@await RenderSectionAsync("Scripts", required: false)
|
@await RenderSectionAsync("Scripts", required: false)z
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user