diff --git a/Areas/Inventory/Views/InventoryMaster/ItemRequestMaster.cshtml b/Areas/Inventory/Views/InventoryMaster/ItemRequestMaster.cshtml
index 1858b90..f9776c9 100644
--- a/Areas/Inventory/Views/InventoryMaster/ItemRequestMaster.cshtml
+++ b/Areas/Inventory/Views/InventoryMaster/ItemRequestMaster.cshtml
@@ -223,6 +223,10 @@
"title": "Request ID",
"data": "requestId",
},
+ {
+ "title": "User ID",
+ "data": "userId",
+ },
{
"title": "Product ID",
"data": "productId",
@@ -268,10 +272,10 @@
"title": "User Remark",
"data": "remarkUser",
},
- {
- "title": "InvMaster Remark",
- "data": "remarkMasterInv",
- },
+ // {
+ // "title": "InvMaster Remark",
+ // "data": "remarkMasterInv",
+ // },
{
"title": "Status",
"data": "status",
diff --git a/Areas/Inventory/Views/InventoryMaster/QrMaster.cshtml b/Areas/Inventory/Views/InventoryMaster/QrMaster.cshtml
index f43def4..cc2374c 100644
--- a/Areas/Inventory/Views/InventoryMaster/QrMaster.cshtml
+++ b/Areas/Inventory/Views/InventoryMaster/QrMaster.cshtml
@@ -128,6 +128,7 @@
+
@@ -301,10 +302,28 @@
+
+
+
+
@@ -374,7 +393,7 @@
this.startScanner();
this.fetchUsers();
this.fetchStores();
- this.fetchItem('ARA00500008'); // for testing only. clear this
+ //this.fetchItem('ARA00500008'); // for testing only. clear this
},
computed: {
filteredDepartments() {
@@ -397,19 +416,19 @@
},
},
methods: {
- handleFileUpload(event) {
- const file = event.target.files[0];
+ handleFileUpload(event) {
+ const file = event.target.files[0];
- if (file) {
- const reader = new FileReader();
- reader.onload = (e) => {
- this.document = e.target.result.split(',')[1]; // Get Base64 string (remove metadata)
- };
- reader.readAsDataURL(file);
- } else {
- this.document = null;
- }
- },
+ if (file) {
+ const reader = new FileReader();
+ reader.onload = (e) => {
+ this.document = e.target.result.split(',')[1]; // Get Base64 string (remove metadata)
+ };
+ reader.readAsDataURL(file);
+ } else {
+ this.document = null;
+ }
+ },
async addItemMovement() {
if (this.showProduct.category == "Disposable") {
@@ -419,18 +438,18 @@
const now = new Date();
const formData = {
- ...(this.selectedAction === 'user' ? { toUser: this.currentUser.id, toOther: 'On Delivery', SendDate: this.assigndate, lastUser: this.selectedUser, MovementComplete: false, } : {}),
- ...(this.selectedAction === 'store' ? { toUser: this.currentUser.id, toOther: 'On Delivery', SendDate: this.assigndate, lastUser: this.selectedStore, MovementComplete: false,} : {}),
- ...(this.selectedAction === 'supplier' ? { toUser: this.currentUser.id, toOther: this.selectedOther, SendDate: this.assigndate, Remark: this.remark + '. Item sent to ' + this.selectedSupplier + ' for ' + this.selectedOther,lastUser: this.currentUser.id, MovementComplete: false, } : {}),
- ...(this.selectedAction === 'faulty' ? { toUser: this.currentUser.id,toOther: 'Faulty', Date: new Date(now.getTime() + 8 * 60 * 60 * 1000).toISOString(), Remark: this.remark, ConsignmentNote: this.document, MovementComplete: true, } : {}),
-
- ItemId: this.thisItem.itemID,
- Action: 'Stock Out',
- Quantity: 1,
-
+ ...(this.selectedAction === 'user' ? { toUser: this.currentUser.id, toOther: 'On Delivery', SendDate: this.assigndate, lastUser: this.selectedUser, MovementComplete: false,} : {}),
+ ...(this.selectedAction === 'store' ? { toUser: this.currentUser.id, toOther: 'On Delivery', SendDate: this.assigndate, lastUser: this.selectedStore, MovementComplete: false, ItemId: this.thisItem.itemID, Action: 'Stock Out', Quantity: 1,} : {}),
+ ...(this.selectedAction === 'supplier' ? { toUser: this.currentUser.id, toOther: this.selectedOther, SendDate: this.assigndate, Remark: this.remark + '. Item sent to ' + this.selectedSupplier + ' for ' + this.selectedOther,lastUser: this.currentUser.id, MovementComplete: false, ItemId: this.thisItem.itemID, Action: 'Stock Out', Quantity: 1, } : {}),
+ ...(this.selectedAction === 'faulty' ? { toUser: this.currentUser.id,toOther: 'Faulty', Date: new Date(now.getTime() + 8 * 60 * 60 * 1000).toISOString(), Remark: this.remark, ConsignmentNote: this.document, MovementComplete: true, ItemId: this.thisItem.itemID, Action: 'Stock Out', Quantity: 1,} : {}),
+ ItemId: this.thisItem.itemID,
+ Action: 'Stock Out',
+ Quantity: 1,
};
+
+
try {
// Proceed to send the data to the API
@@ -451,7 +470,7 @@
// Reset the form
this.resetForm();
- // window.location.href = '/Inventory/InventoryMaster/ItemMovement';
+ window.location.href = '/Inventory/InventoryMaster/ItemMovement';
} else {
throw new Error('Failed to submit form.');
@@ -464,11 +483,64 @@
alert('Inventory PSTW Error', `An error occurred: ${error.message}`, 'error');
}
+ },
+ async receiveItemMovement() {
+
+ if (this.showProduct.category == "Disposable") {
+ this.serialNumber = "";
+ }
+
+ const now = new Date();
+ const formData = {
+
+ Id: this.thisItem.movementId,
+ // LastStation: this.selectedStation,
+ // LatestStatus: "Delivered",
+ // ReceiveDate: new Date(now.getTime() + 8 * 60 * 60 * 1000).toISOString(),
+ // MovementComplete: true
+
+ };
+
+
+
+ try {
+
+ // Proceed to send the data to the API
+ const response = await fetch('/InvMainAPI/UpdateItemMovementMaster', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ // 'Authorization': `Bearer ${this.token}`
+ },
+ body: JSON.stringify(formData)
+ });
+ if (response.ok) {
+ // If the form submission was successful, display a success message
+ alert('Success!', 'Item form has been successfully submitted.', 'success');
+ const updatedItem = await response.json();
+ // this.items.push(updatedItem);
+ console.log(updatedItem);
+
+ // Reset the form
+ this.resetForm();
+ window.location.href = '/Inventory/InventoryMaster/ItemMovement';
+
+ } else {
+ throw new Error('Failed to submit form.');
+ }
+
+ } catch (error) {
+ console.error('Error:', error);
+
+ // Displaying error message
+ alert('Inventory PSTW Error', `An error occurred: ${error.message}`, 'error');
+ }
+
},
startScanner() {
const config = {
fps: 60,
- qrbox: 200
+ qrbox: 400
};
navigator.mediaDevices.getUserMedia({
@@ -505,7 +577,13 @@
method: 'POST',}
);
if (response.ok) {
+ // this.thisItem = await response.json();
+
this.thisItem = await response.json();
+ console.log(this.thisItem);
+ if (this.thisItem.toOther === "Return" && this.thisItem.lastUser == this.currentUserId) {
+ this.selectedAction = "receive";
+ }
} else {
diff --git a/Controllers/API/Inventory/InvMainAPI.cs b/Controllers/API/Inventory/InvMainAPI.cs
index 4a66cb6..0aa54b7 100644
--- a/Controllers/API/Inventory/InvMainAPI.cs
+++ b/Controllers/API/Inventory/InvMainAPI.cs
@@ -670,13 +670,13 @@ namespace PSTW_CentralSystem.Controllers.API.Inventory
try
{
- if (itemmovement.ToUser == null)
- {
- throw new Exception("itemmovement.ToUser is null");
- }
+ //if (itemmovement.ToUser == null)
+ //{
+ // throw new Exception("itemmovement.ToUser is null");
+ //}
//var inventoryMaster = await _centralDbContext.InventoryMasters.Include("User").FirstOrDefaultAsync(i => i.UserId == itemmovement.ToUser) ?? new InventoryMasterModel { UserId = itemmovement.ToUser };
- var inventoryMaster = await _centralDbContext.InventoryMasters.FirstOrDefaultAsync(i => i.UserId == itemmovement.ToUser);
+ var inventoryMaster = await _centralDbContext.InventoryMasters.Include("User").FirstOrDefaultAsync(i => i.UserId == itemmovement.ToUser);
if (inventoryMaster != null)
{
itemmovement.ToStore = inventoryMaster.StoreId;
@@ -729,17 +729,41 @@ namespace PSTW_CentralSystem.Controllers.API.Inventory
updateItem.ItemStatus = 8;
}
- Console.WriteLine("updateItem.MovementId" + updateItem.MovementId);
- Console.WriteLine("itemmovement.Id" + itemmovement.Id);
-
+ //Console.WriteLine("updateItem.MovementId" + updateItem.MovementId);
+ //Console.WriteLine("itemmovement.Id" + itemmovement.Id);
+
updateItem.MovementId = itemmovement.Id;
_centralDbContext.Items.Update(updateItem);
-
+ await _centralDbContext.SaveChangesAsync(); // save changes for table item - movementid
+
+
}
+ return Json(new
+ {
+ itemmovement.Id,
+ itemmovement.ItemId,
+ itemmovement.ToStation,
+ itemmovement.ToStore,
+ itemmovement.ToUser,
+ itemmovement.ToOther,
+ itemmovement.sendDate,
+ itemmovement.Action,
+ itemmovement.Quantity,
+ itemmovement.Remark,
+ itemmovement.ConsignmentNote,
+ itemmovement.Date,
+ itemmovement.LastUser,
+ itemmovement.LastStore,
+ itemmovement.LastStation,
+ itemmovement.LatestStatus,
+ itemmovement.receiveDate,
+ itemmovement.MovementComplete
+ });
- await _centralDbContext.SaveChangesAsync(); // save changes for table item - movementid
- return Json(itemmovement);
+
+
+ //return Json(itemmovement);
}
catch (Exception ex)
{
@@ -748,6 +772,44 @@ namespace PSTW_CentralSystem.Controllers.API.Inventory
}
+ [HttpPost("UpdateItemMovementMaster")]
+ public async Task UpdateItemMovementMaster([FromBody] ItemMovementModel receiveMovement)
+ {
+
+ try
+ {
+
+ var updatedList = await _centralDbContext.ItemMovements.FindAsync(receiveMovement.Id);
+
+ if (updatedList == null)
+ {
+ return NotFound("Item movement record not found.");
+ }
+
+ updatedList.LatestStatus = "Delivered";
+ updatedList.MovementComplete = true;
+
+ _centralDbContext.ItemMovements.Update(updatedList);
+ await _centralDbContext.SaveChangesAsync();
+
+ //var receiveItems = await _centralDbContext.Items.FindAsync(receiveMovement.ItemId);
+
+ //if (receiveItems != null)
+ //{
+ // receiveItems.ItemStatus = 3;
+ // _centralDbContext.Items.Update(receiveItems);
+
+ // await _centralDbContext.SaveChangesAsync(); // Simpan perubahan
+ //}
+
+ return Json(updatedList);
+ }
+ catch (Exception ex)
+ {
+ return BadRequest(ex.Message);
+ }
+ }
+
#endregion ItemMovement
#region ItemMovementUser
diff --git a/wwwroot/Media/Inventory/request/2_37610af7-037e-4158-8e99-1a73e85cc21111_Request.jpg b/wwwroot/Media/Inventory/request/2_37610af7-037e-4158-8e99-1a73e85cc21111_Request.jpg
new file mode 100644
index 0000000..5e223c8
Binary files /dev/null and b/wwwroot/Media/Inventory/request/2_37610af7-037e-4158-8e99-1a73e85cc21111_Request.jpg differ