From 8ff5196ab876d03c8f7042c45678a7088b646dd2 Mon Sep 17 00:00:00 2001 From: Aiman Hafiz <121177088+RoninBonin@users.noreply.github.com> Date: Fri, 19 Dec 2025 11:53:29 +0800 Subject: [PATCH] Some changes --- WORK_LOG.md | 21 +- database/pstw_cs (1).sql | 1289 ----------------- lib/screens/admin/item/item.dart | 62 +- .../item_movement/item_movement_all.dart | 89 +- .../item_movement/item_movement_item.dart | 107 +- .../item_movement/item_movement_station.dart | 18 +- lib/screens/login_screen.dart | 9 +- lib/screens/nav_bar.dart | 18 +- lib/screens/splash_screen.dart | 3 +- .../item_movement/item_movement_all_user.dart | 87 +- .../item_movement_item_user.dart | 107 +- .../item_movement_station_user.dart | 8 +- linux/flutter/generated_plugin_registrant.cc | 4 + linux/flutter/generated_plugins.cmake | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 4 + pubspec.lock | 112 ++ pubspec.yaml | 3 + .../flutter/generated_plugin_registrant.cc | 3 + windows/flutter/generated_plugins.cmake | 1 + 19 files changed, 598 insertions(+), 1348 deletions(-) delete mode 100644 database/pstw_cs (1).sql diff --git a/WORK_LOG.md b/WORK_LOG.md index df8156f..0678694 100644 --- a/WORK_LOG.md +++ b/WORK_LOG.md @@ -1,5 +1,24 @@ # Work Log +## Thursday, December 18, 2025 + +### UI Updates +- **Admin Station Page (`station.dart`)** + - **Layout Refinement**: + - Moved Department Name to the title row, aligned to the right side. + - Moved Station User PIC (Full Name) to the subtitle row. + +- **Admin Product Page (`product.dart`)** + - **Image URL Handling**: + - Updated the product image URL construction to use `ApiService.baseUrl` dynamically instead of a hardcoded URL. + +- **Admin Item Page (`item.dart`)** + - **Label & Layout Adjustments**: + - Renamed `Location` label to **`Station`** (mapped to `currentStation`). + - Renamed `User` label to **`Location User`** (mapped to `currentUser`). + - Added a new **`Location`** header above the details. + - Reordered fields under the Location header to: **Location User**, **Store**, **Station**. + ## Monday, December 15, 2025 ### Features & UI Updates @@ -180,4 +199,4 @@ - **Technician (`technician_to_invMaster.dart`)**: Added "Show" button for documents/pictures. ### Fixes -- Fixed a compilation error in `product_request_service.dart` (missing closing brace). +- Fixed a compilation error in `product_request_service.dart` (missing closing brace). \ No newline at end of file diff --git a/database/pstw_cs (1).sql b/database/pstw_cs (1).sql deleted file mode 100644 index 0985bd1..0000000 --- a/database/pstw_cs (1).sql +++ /dev/null @@ -1,1289 +0,0 @@ --- phpMyAdmin SQL Dump --- version 5.2.1 --- https://www.phpmyadmin.net/ --- --- Host: 219.92.7.60:3307 --- Generation Time: Oct 27, 2025 at 09:16 AM --- Server version: 8.0.43-0ubuntu0.24.04.1 --- PHP Version: 8.2.12 - -SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; -START TRANSACTION; -SET time_zone = "+00:00"; - - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; - --- --- Database: `pstw_cs` --- - --- -------------------------------------------------------- - --- --- Table structure for table `aspnetroleclaims` --- - -CREATE TABLE `aspnetroleclaims` ( - `Id` int NOT NULL, - `RoleId` int NOT NULL, - `ClaimType` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `ClaimValue` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- -------------------------------------------------------- - --- --- Table structure for table `aspnetroles` --- - -CREATE TABLE `aspnetroles` ( - `Id` int NOT NULL, - `Description` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `Name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, - `NormalizedName` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, - `ConcurrencyStamp` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `aspnetroles` --- - -INSERT INTO `aspnetroles` (`Id`, `Description`, `Name`, `NormalizedName`, `ConcurrencyStamp`) VALUES -(1, 'Can access all pages', 'SuperAdmin', 'SUPERADMIN', NULL), -(2, 'Can access some admin pages', 'SystemAdmin', 'SYSTEMADMIN', NULL), -(3, 'Can access operation pages', 'Engineer', 'ENGINEER', NULL), -(4, 'Can access data viewer pages', 'Observer', 'OBSERVER', NULL), -(5, 'Handle inventory module', 'Inventory Master', 'INVENTORY MASTER', NULL), -(6, 'Involve in inventory transaction', 'Finance', 'FINANCE', NULL), -(8, 'Can be assign to station pages', 'Technician', 'TECHNICIAN', NULL), -(9, 'Hr', 'HR', 'HR', NULL), -(10, 'Manager', 'Manager', 'MANAGER', NULL), -(11, 'Executive', 'Executive', 'EXECUTIVE', NULL); - --- -------------------------------------------------------- - --- --- Table structure for table `aspnetuserclaims` --- - -CREATE TABLE `aspnetuserclaims` ( - `Id` int NOT NULL, - `UserId` int NOT NULL, - `ClaimType` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `ClaimValue` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- -------------------------------------------------------- - --- --- Table structure for table `aspnetuserlogins` --- - -CREATE TABLE `aspnetuserlogins` ( - `LoginProvider` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `ProviderKey` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `ProviderDisplayName` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `UserId` int NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- -------------------------------------------------------- - --- --- Table structure for table `aspnetuserroles` --- - -CREATE TABLE `aspnetuserroles` ( - `UserId` int NOT NULL, - `RoleId` int NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `aspnetuserroles` --- - -INSERT INTO `aspnetuserroles` (`UserId`, `RoleId`) VALUES -(1, 1), -(2, 2), -(3, 5), -(5, 5), -(6, 5), -(7, 5), -(9, 5), -(19, 5), -(4, 6), -(11, 8), -(14, 8), -(15, 8), -(18, 8), -(21, 8), -(23, 8), -(24, 9), -(17, 10), -(20, 10), -(22, 10); - --- -------------------------------------------------------- - --- --- Table structure for table `aspnetusers` --- - -CREATE TABLE `aspnetusers` ( - `Id` int NOT NULL, - `FullName` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `UserInfoStatus` int DEFAULT NULL, - `departmentId` int DEFAULT NULL, - `UserName` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, - `NormalizedUserName` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, - `Email` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, - `NormalizedEmail` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, - `EmailConfirmed` tinyint(1) NOT NULL, - `PasswordHash` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `SecurityStamp` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `ConcurrencyStamp` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `PhoneNumber` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `PhoneNumberConfirmed` tinyint(1) NOT NULL, - `TwoFactorEnabled` tinyint(1) NOT NULL, - `LockoutEnd` datetime(6) DEFAULT NULL, - `LockoutEnabled` tinyint(1) NOT NULL, - `AccessFailedCount` int NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `aspnetusers` --- - -INSERT INTO `aspnetusers` (`Id`, `FullName`, `UserInfoStatus`, `departmentId`, `UserName`, `NormalizedUserName`, `Email`, `NormalizedEmail`, `EmailConfirmed`, `PasswordHash`, `SecurityStamp`, `ConcurrencyStamp`, `PhoneNumber`, `PhoneNumberConfirmed`, `TwoFactorEnabled`, `LockoutEnd`, `LockoutEnabled`, `AccessFailedCount`) VALUES -(1, 'MAAdmin', 1, NULL, 'admin@pstw.com.my', 'ADMIN@PSTW.COM.MY', 'admin@pstw.com.my', 'ADMIN@PSTW.COM.MY', 1, 'AQAAAAIAAYagAAAAEBJPP1cHHZZyaGLaskNvSj8sOEizvDa1W2JgxMlYtK18+uhZWvW2RPlqBOhaKc0loQ==', 'c911b03d-918a-482f-9c9e-773dc64cdd5d', '853a1cf1-3482-47c4-b4b0-7b6a3af6696c', NULL, 0, 0, NULL, 0, 0), -(2, 'SysAdmin', 1, NULL, 'sysadmin@pstw.com.my', 'SYSADMIN@PSTW.COM.MY', 'sysadmin@pstw.com.my', 'SYSADMIN@PSTW.COM.MY', 1, 'AQAAAAIAAYagAAAAELxkKuB4hcfQ7Pqe/XCRgygejUsY7X9ByQuS/3FMl50OSzmz9s0byWxGYWQXbyBpGA==', '5b9a67a3-8186-474b-9499-c9c40457fb54', '9ccd914d-6310-4d4e-88c0-e842892e1831', NULL, 0, 0, NULL, 0, 0), -(3, 'alim.aidrus', 1, 1, 'alim.aidrus@transwater.com.my', 'ALIM.AIDRUS@TRANSWATER.COM.MY', 'alim.aidrus@transwater.com.my', 'ALIM.AIDRUS@TRANSWATER.COM.MY', 1, NULL, 'HMM5CI74C5DZI5OL5ENBNNYNTDEVYA65', '6e055b25-4287-401d-bfda-70b216957c7a', NULL, 0, 0, NULL, 1, 0), -(4, 'ariff.pauzi', 1, 1, 'ariff.pauzi@transwater.com.my', 'ARIFF.PAUZI@TRANSWATER.COM.MY', 'ariff.pauzi@transwater.com.my', 'ARIFF.PAUZI@TRANSWATER.COM.MY', 0, NULL, 'SGAVUULFKYWQDYBKZLREJMD3OJTUY7KQ', '23b566f0-be7a-455c-b627-10902e348a53', NULL, 0, 0, NULL, 1, 0), -(5, 'al.alim', 1, 1, 'alim.aidrus@pstw.com.my', 'ALIM.AIDRUS@PSTW.COM.MY', 'alim.aidrus@pstw.com.my', 'ALIM.AIDRUS@PSTW.COM.MY', 1, NULL, '6YKONZRB2XHVZBRT7MLFVZOINJBRBCGR', 'f0a8bbd0-4f57-4cb9-95ee-321e8a87f983', NULL, 0, 0, NULL, 1, 0), -(6, 'syamil.saharuddin', 1, 4, 'syamil.saharuddin@transwater.com.my', 'SYAMIL.SAHARUDDIN@TRANSWATER.COM.MY', 'syamil.saharuddin@transwater.com.my', 'SYAMIL.SAHARUDDIN@TRANSWATER.COM.MY', 1, NULL, 'HTBZGSJX5KWTEVTV5EPNUCVPSVKVZRTD', 'a23dd329-7e89-4e8f-96c2-786264b8bfeb', NULL, 0, 0, NULL, 1, 0), -(7, 'suhani.daut', 1, 2, 'suhani.daut@pstw.com.my', 'SUHANI.DAUT@PSTW.COM.MY', 'suhani.daut@pstw.com.my', 'SUHANI.DAUT@PSTW.COM.MY', 1, NULL, 'OR7XEW3QWSEU3BYTKUFD6L5AH5TUAH2Q', '36e35c59-59db-4b67-9018-e9ba5960396e', NULL, 0, 0, NULL, 1, 0), -(9, 'muhammad.najwan', 1, 2, 'najwan.nadzri@pstw.com.m', 'NAJWAN.NADZRI@PSTW.COM.M', 'najwan.nadzri@pstw.com.m', 'NAJWAN.NADZRI@PSTW.COM.M', 1, NULL, 'SM4TWWTSBW2ZC2OZPWFHCJ5OEFZYFCYO', 'c6ddc496-e134-400d-89f0-8f83f049e9f9', NULL, 0, 0, NULL, 1, 0), -(11, 'rasyid.hamidun', 1, 1, 'rasyid.hamidun@pstw.com.my', 'RASYID.HAMIDUN@PSTW.COM.MY', 'rasyid.hamidun@pstw.com.my', 'RASYID.HAMIDUN@PSTW.COM.MY', 1, NULL, 'VS5GLUTEPDKPAUF4HEBNBNLTRYHWL34A', '39c6d236-e372-4050-b33d-b08a22228526', NULL, 0, 0, NULL, 1, 0), -(12, 'fatin.hishamudin', NULL, NULL, 'fatin.hishamudin@pstw.com.my', 'FATIN.HISHAMUDIN@PSTW.COM.MY', 'fatin.hishamudin@pstw.com.my', 'FATIN.HISHAMUDIN@PSTW.COM.MY', 1, NULL, 'CZTXSWBDYBG7ZTEL4MMZZECWIXD5PM4J', '154dbee7-32a2-4154-8af4-c42bc1199492', NULL, 0, 0, NULL, 1, 0), -(13, 'amirul.ahmad', NULL, NULL, 'amirul.ahmad@pstw.com.my', 'AMIRUL.AHMAD@PSTW.COM.MY', 'amirul.ahmad@pstw.com.my', 'AMIRUL.AHMAD@PSTW.COM.MY', 1, NULL, 'IIYC7XVC72DBVLQHREN47WIBZ6ICKZRW', '1e36b2b3-71d4-408a-9d0b-c74f7c8150fa', NULL, 0, 0, NULL, 1, 0), -(14, 'hilmi.rezuan', 0, 1, 'hilmi.rezuan@pstw.com.my', 'HILMI.REZUAN@PSTW.COM.MY', 'hilmi.rezuan@pstw.com.my', 'HILMI.REZUAN@PSTW.COM.MY', 1, NULL, 'Q2JQ3I25KZLBOINFPFMYX657FJYS5A3J', '16e3ee2f-a430-4f24-b4b6-388a77b20fb5', NULL, 0, 0, NULL, 1, 0), -(15, 'anis.zakaria', 0, 1, 'anis.zakaria@pstw.com.my', 'ANIS.ZAKARIA@PSTW.COM.MY', 'anis.zakaria@pstw.com.my', 'ANIS.ZAKARIA@PSTW.COM.MY', 1, NULL, 'MDM5CT33Q3WUJP2EEXCMTPQLI7DUKPWI', '71d53758-3aa1-43b0-8510-c280c73a3555', NULL, 0, 0, NULL, 1, 0), -(16, 'misya.shaiful', 0, 1, 'misya.shaiful@pstw.com.my', 'MISYA.SHAIFUL@PSTW.COM.MY', 'misya.shaiful@pstw.com.my', 'MISYA.SHAIFUL@PSTW.COM.MY', 1, NULL, '2WMAD7VTFAUHXXCTFKX65EK42K4TJOSO', '8f7c4a35-f93c-4eac-848c-018750b5d9ba', NULL, 0, 0, NULL, 1, 0), -(17, 'core1hou', 1, 2, 'core1hou@pstw.com.my', 'CORE1HOU@PSTW.COM.MY', 'core1hou@pstw.com.my', 'CORE1HOU@PSTW.COM.MY', 1, NULL, 'XLMPNKB6RVXMYO4TG6B5BE4GLCKNTKBW', '3683d760-18a0-47cf-bfcb-d2b338c2eb3f', NULL, 0, 0, NULL, 1, 0), -(18, 'core1user', 1, 2, 'core1iser@pstw.com.my', 'CORE1ISER@PSTW.COM.MY', 'core1iser@pstw.com.my', 'CORE1ISER@PSTW.COM.MY', 1, NULL, '2AFQJ3QCRQKRTHJCSL2GWOVL4L32EIVQ', 'c60275e8-5912-4898-89c1-c792c41c30ab', NULL, 0, 0, NULL, 1, 0), -(19, 'core2hod', 1, 3, 'core2hod@pstw.com.my', 'CORE2HOD@PSTW.COM.MY', 'core2hod@pstw.com.my', 'CORE2HOD@PSTW.COM.MY', 1, NULL, 'ITQVQPQH22I2IVXXFSWLR6L7GBD6G6BZ', '581257fb-4594-4900-87b3-9f0a61c17187', NULL, 0, 0, NULL, 1, 0), -(20, 'core2hou', 1, 3, 'core2hou@pstw.com.my', 'CORE2HOU@PSTW.COM.MY', 'core2hou@pstw.com.my', 'CORE2HOU@PSTW.COM.MY', 1, NULL, 'P2TEZSXN5QPDXDGVFLMCURRS2Z3XRQF6', 'b6b7cf89-4ab1-4795-bb48-2c9dcf0fe9fa', NULL, 0, 0, NULL, 1, 0), -(21, 'core2user', 1, 3, 'core2user@pstw.com.my', 'CORE2USER@PSTW.COM.MY', 'core2user@pstw.com.my', 'CORE2USER@PSTW.COM.MY', 1, NULL, 'RP3PDBJA4VTOYOJUDQRJSX3RUDIT52X5', 'fb6492d2-fe96-4aa9-b8fc-4a357e85791a', NULL, 0, 0, NULL, 1, 0), -(22, 'core3hod', 1, 1, 'core3hod@pstw.com.my', 'CORE3HOD@PSTW.COM.MY', 'core3hod@pstw.com.my', 'CORE3HOD@PSTW.COM.MY', 1, NULL, 'S76YMIHM2UIKT4Y3Q2Y7762525N3VVL5', '92a1c72e-e2a8-4f6d-89b1-6755aa3b6c4f', NULL, 0, 0, NULL, 1, 0), -(23, 'core3user', 1, 1, 'core3user@pstw.com.my', 'CORE3USER@PSTW.COM.MY', 'core3user@pstw.com.my', 'CORE3USER@PSTW.COM.MY', 1, NULL, '7XR322DDWEMHYJ6Z2EET3QGYSSRXGDED', 'be89a53f-6ab3-473b-9c30-2bc6b6d00dcf', NULL, 0, 0, NULL, 1, 0), -(24, 'corehr', 1, 1, 'corehr@pstw.com.my', 'COREHR@PSTW.COM.MY', 'corehr@pstw.com.my', 'COREHR@PSTW.COM.MY', 1, NULL, 'XBDCXIQODA3KFEURNJMNVOS55QDHWWJ7', '5f397d84-12d4-4b95-9395-a719288e041f', NULL, 0, 0, NULL, 1, 0); - --- -------------------------------------------------------- - --- --- Table structure for table `aspnetusertokens` --- - -CREATE TABLE `aspnetusertokens` ( - `UserId` int NOT NULL, - `LoginProvider` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `Name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `Value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `aspnetusertokens` --- - -INSERT INTO `aspnetusertokens` (`UserId`, `LoginProvider`, `Name`, `Value`) VALUES -(15, '[AspNetUserStore]', 'AuthenticatorKey', '6PA4CSSEXIJGMNWTZQ7I3T277G4CFWWA'); - --- -------------------------------------------------------- - --- --- Table structure for table `companies` --- - -CREATE TABLE `companies` ( - `CompanyId` int NOT NULL, - `CompanyName` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `companies` --- - -INSERT INTO `companies` (`CompanyId`, `CompanyName`) VALUES -(1, 'PSTW'), -(2, 'OCEAN PROBE'), -(3, 'AQUA DIAGNOSTIC'), -(4, 'OCEAN PROBE'), -(14, 'TRANSWATER ENVIRONMENTAL SERVICES'); - --- -------------------------------------------------------- - --- --- Table structure for table `departments` --- - -CREATE TABLE `departments` ( - `DepartmentId` int NOT NULL, - `DepartmentName` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `DepartmentCode` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `CompanyId` int NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `departments` --- - -INSERT INTO `departments` (`DepartmentId`, `DepartmentName`, `DepartmentCode`, `CompanyId`) VALUES -(1, 'PSTW IT', 'PI', 1), -(2, 'PSTW AIR', 'PA', 1), -(3, 'PSTW MARINE', 'OM', 2), -(4, 'PSTW RIVER', 'AR', 3), -(60, 'TES AIR', 'TA', 14), -(61, 'TES RIVER', 'TR', 14), -(62, 'TES MARINE', 'TM', 14); - --- -------------------------------------------------------- - --- --- Table structure for table `hrusersetting` --- - -CREATE TABLE `hrusersetting` ( - `HrUserSettingId` int NOT NULL, - `UserId` int NOT NULL, - `FlexiHourId` int DEFAULT NULL, - `FlexiHourUpdate` datetime DEFAULT NULL, - `StateId` int DEFAULT NULL, - `StateUpdate` datetime DEFAULT NULL, - `ApprovalFlowId` int DEFAULT NULL, - `ApprovalUpdate` datetime DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `hrusersetting` --- - -INSERT INTO `hrusersetting` (`HrUserSettingId`, `UserId`, `FlexiHourId`, `FlexiHourUpdate`, `StateId`, `StateUpdate`, `ApprovalFlowId`, `ApprovalUpdate`) VALUES -(1, 15, 2, '2025-08-05 11:31:18', 3, '2025-05-06 09:38:26', 1, '2025-07-23 16:58:26'), -(2, 16, 2, '2025-04-27 08:00:19', NULL, NULL, NULL, NULL), -(3, 1, 1, '2025-05-23 15:19:38', 12, '2025-04-29 09:50:03', 1, '2025-07-24 16:05:02'), -(4, 2, NULL, NULL, 12, '2025-04-29 09:50:03', NULL, NULL), -(5, 18, 4, '2025-06-04 11:44:05', 3, NULL, 4, '2025-08-29 16:39:19'), -(6, 23, 3, '2025-06-05 10:41:08', 12, '2025-06-05 10:41:42', 2, '2025-07-25 14:18:59'), -(7, 21, 3, '2025-06-04 11:43:56', 3, '2025-06-04 15:41:08', 5, '2025-06-04 16:19:11'); - --- -------------------------------------------------------- - --- --- Table structure for table `inventorymasters` --- - -CREATE TABLE `inventorymasters` ( - `StoreId` int NOT NULL, - `UserId` int NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `inventorymasters` --- - -INSERT INTO `inventorymasters` (`StoreId`, `UserId`) VALUES -(1, 3), -(4, 5), -(3, 6), -(2, 7), -(5, 9); - --- -------------------------------------------------------- - --- --- Table structure for table `itemmovements` --- - -CREATE TABLE `itemmovements` ( - `Id` int NOT NULL, - `ItemId` int NOT NULL, - `ToStation` int DEFAULT NULL, - `ToStore` int DEFAULT NULL, - `ToUser` int DEFAULT NULL, - `ToOther` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT 'Repair, Calibration, Faulty, Ready To Deploy, On Delivery, Delivered, Return', - `SendDate` datetime(6) DEFAULT NULL, - `Action` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT 'Register, StockIn, Stock Out, Assign', - `Quantity` int DEFAULT NULL, - `Remark` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `ConsignmentNote` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `Date` datetime(6) DEFAULT NULL, - `LastUser` int DEFAULT NULL, - `LastStore` int DEFAULT NULL, - `LastStation` int DEFAULT NULL, - `LatestStatus` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT 'Repair, Calibration, Faulty, Ready To Deploy, On Delivery, Delivered, Return', - `receiveDate` datetime(6) DEFAULT NULL, - `MovementComplete` tinyint(1) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `itemmovements` --- - -INSERT INTO `itemmovements` (`Id`, `ItemId`, `ToStation`, `ToStore`, `ToUser`, `ToOther`, `SendDate`, `Action`, `Quantity`, `Remark`, `ConsignmentNote`, `Date`, `LastUser`, `LastStore`, `LastStation`, `LatestStatus`, `receiveDate`, `MovementComplete`) VALUES -(7, 7, NULL, 1, 3, NULL, NULL, 'Register', 1, NULL, NULL, '2025-01-13 14:14:28.132136', 3, 1, NULL, 'Ready To Deploy', NULL, 1), -(8, 8, NULL, 3, 6, NULL, NULL, 'Register', 2, NULL, NULL, '2025-02-03 10:25:23.306495', 6, 3, NULL, 'Ready To Deploy', NULL, 1), -(9, 9, NULL, 3, 6, NULL, NULL, 'Register', 1, NULL, NULL, '2025-02-03 11:00:25.965894', 6, 3, NULL, NULL, NULL, 1), -(128, 8, NULL, 4, 5, 'On Delivery', '2025-02-28 00:00:00.000000', 'Stock Out', 1, NULL, NULL, '0001-01-01 00:00:00.000000', 11, NULL, NULL, 'Ready To Deploy', '2025-02-28 09:13:50.419000', 1), -(129, 8, NULL, 4, 5, 'Repair', '2025-02-28 00:00:00.000000', 'Stock Out', 1, 'repair. Item sent to Xylem Water Solution Pte Ltd for Repair', NULL, '0001-01-01 00:00:00.000000', 5, NULL, NULL, 'Ready To Deploy', '2025-02-28 09:15:43.381000', 1), -(130, 8, NULL, 4, 5, 'Faulty', NULL, 'Stock Out', 1, 'remark', '/media/inventory/itemmovement/8_8bac7305-ebd5-42b9-9cd1-f871994f88bc8_Request.jpg', '2025-02-28 09:18:03.996000', NULL, NULL, NULL, NULL, NULL, 1), -(131, 8, NULL, 4, 5, 'Repair', '2025-02-28 00:00:00.000000', 'Stock Out', 1, 'repair after faulty. Item sent to Xylem Water Solution Pte Ltd for Repair', NULL, '0001-01-01 00:00:00.000000', 5, NULL, NULL, 'Ready To Deploy', '2025-02-28 09:19:09.336000', 1), -(132, 8, NULL, 4, 5, 'On Delivery', '2025-02-28 00:00:00.000000', 'Stock Out', 1, NULL, NULL, '0001-01-01 00:00:00.000000', 1, NULL, NULL, 'Ready To Deploy', '2025-02-28 09:21:01.437000', 1), -(133, 8, NULL, 4, 5, 'On Delivery', '2025-02-28 00:00:00.000000', 'Stock Out', 1, NULL, NULL, '0001-01-01 00:00:00.000000', 11, NULL, 14, 'Delivered', '2025-02-28 09:22:18.799000', 1), -(134, 8, NULL, NULL, 11, 'Return', '2025-02-28 09:22:19.998000', 'StockIn', 1, 'return', '/media/inventory/request/0_b4d930da-122a-4767-a535-7159aa451f488_Request.jpg', '2025-02-28 09:22:19.998000', 5, 4, NULL, 'Faulty', '2025-02-28 09:23:08.165000', 1), -(135, 8, NULL, 4, 5, 'Repair', '2025-02-28 00:00:00.000000', 'Stock Out', 1, 'reamrk. Item sent to AXIOMTEK for Repair', NULL, '0001-01-01 00:00:00.000000', 5, NULL, NULL, 'Ready To Deploy', '2025-02-28 10:06:29.720000', 1), -(136, 8, NULL, 4, 5, 'On Delivery', '2025-03-28 00:00:00.000000', 'Stock Out', 1, NULL, NULL, '0001-01-01 00:00:00.000000', 11, NULL, 14, 'Delivered', '2025-02-28 10:35:40.661000', 1), -(137, 8, 14, NULL, 11, 'Return', '2025-02-28 10:37:32.803000', 'StockIn', 1, 'return', '/media/inventory/request/0_354050d1-25e4-4933-9452-eabb51e2c0f18_Request.jpg', '2025-02-28 10:37:32.803000', 5, 4, NULL, 'Faulty', '2025-02-28 10:39:22.437000', 1), -(138, 8, NULL, 4, 5, 'Repair', '2025-02-28 00:00:00.000000', 'Stock Out', 1, 'repair. Item sent to Oyen Garang PLT for Repair', NULL, '0001-01-01 00:00:00.000000', 5, NULL, NULL, 'Ready To Deploy', '2025-02-28 10:42:13.380000', 1), -(170, 7, NULL, 4, 5, 'On Delivery', '2025-03-03 13:55:54.000000', 'Stock In', 1, NULL, NULL, '2025-01-08 16:22:57.818072', 14, 4, NULL, 'Delivered', '2025-03-04 11:57:53.252000', 1), -(171, 9, NULL, 4, 5, 'On Delivery', '2025-03-03 13:55:54.000000', 'Stock In', 1, NULL, NULL, '2025-01-08 16:22:57.818072', 14, 4, NULL, 'Delivered', '2025-03-04 11:58:20.655000', 1), -(172, 7, NULL, 4, 14, 'Delivered', '2025-03-04 11:58:04.395000', 'Assign', 1, NULL, NULL, '2025-03-04 11:58:04.395000', 14, 4, 16, 'Delivered', '2025-03-04 11:58:04.395000', 1), -(173, 7, 16, 4, 14, 'Return', '2025-03-04 11:58:10.630000', 'StockIn', 1, NULL, NULL, '2025-03-04 11:58:10.630000', 5, 4, NULL, 'Faulty', '2025-03-06 09:29:28.030000', 1), -(174, 9, NULL, 4, 14, 'Delivered', '2025-03-04 11:58:25.862000', 'Assign', 1, NULL, NULL, '2025-03-04 11:58:25.862000', 14, 4, 17, 'Delivered', '2025-03-04 11:58:25.862000', 1), -(175, 9, 17, 4, 14, 'Return', '2025-03-04 11:58:30.932000', 'StockIn', 1, NULL, NULL, '2025-03-04 11:58:30.932000', 5, 4, NULL, 'Faulty', '2025-03-06 08:49:33.909000', 1), -(184, 7, NULL, 4, 5, 'Repair', '2025-03-06 00:00:00.000000', 'Stock Out', 1, 'repair. Item sent to AXIOMTEK for Repair', '/media/inventory/itemmovement/7_3ab03871-3e26-4e12-857c-8d046f718a067_Request.jpg', '0001-01-01 00:00:00.000000', 5, NULL, NULL, 'Ready To Deploy', '2025-03-06 09:30:46.953000', 1), -(185, 7, NULL, 4, 5, 'On Delivery', '2025-03-06 00:00:00.000000', 'Stock Out', 1, 'assign to user hilmi', '/media/inventory/itemmovement/7_37fbcdc9-60ea-4220-988a-0c25056747377_Request.jpg', '0001-01-01 00:00:00.000000', 14, NULL, NULL, 'Delivered', '2025-03-06 09:31:55.516000', 1), -(186, 7, NULL, 4, 14, 'Delivered', '2025-03-06 09:32:24.545000', 'Assign', 1, 'deploy to sungai kl station', NULL, '2025-03-06 09:32:24.545000', 14, 4, 17, 'Delivered', '2025-03-06 09:32:24.545000', 1), -(187, 9, NULL, 4, 5, 'Repair', '2025-03-06 00:00:00.000000', 'Stock Out', 1, 'repair. Item sent to Xylem Water Solution Pte Ltd for Repair', NULL, '0001-01-01 00:00:00.000000', 5, NULL, NULL, 'Ready To Deploy', '2025-03-06 10:08:35.527000', 1), -(188, 9, NULL, 4, 5, 'On Delivery', '2025-03-06 00:00:00.000000', 'Stock Out', 1, 'assign to sungai klang and hilmi rezuan', NULL, '0001-01-01 00:00:00.000000', 14, NULL, 14, 'Delivered', '2025-03-06 10:13:23.658000', 1), -(189, 9, 14, 4, 14, 'Delivered', '2025-03-06 10:14:27.746000', 'Assign', 1, NULL, NULL, '2025-03-06 10:14:27.746000', 14, 4, 17, 'Delivered', '2025-03-06 10:14:27.746000', 1), -(190, 9, 17, 4, 14, 'Delivered', '2025-03-06 10:15:14.222000', 'Assign', 1, NULL, NULL, '2025-03-06 10:15:14.222000', 14, 4, 16, 'Delivered', '2025-03-06 10:15:14.222000', 1), -(191, 9, 17, 4, 14, 'Delivered', '2025-03-06 10:15:14.271000', 'Assign', 1, NULL, NULL, '2025-03-06 10:15:14.271000', 14, 4, 16, 'Delivered', '2025-03-06 10:15:14.271000', 1), -(192, 9, 16, 4, 14, 'Delivered', '2025-03-06 10:15:38.529000', 'Assign', 1, NULL, NULL, '2025-03-06 10:15:38.529000', 14, 4, 17, 'Delivered', '2025-03-06 10:15:38.529000', 1), -(202, 9, 17, 4, 14, 'Return', '2025-03-10 11:54:06.574000', 'StockIn', 1, NULL, NULL, '2025-03-10 11:54:06.574000', 5, 4, 16, 'Faulty', '2025-03-10 15:06:51.493000', 1), -(203, 7, 17, 4, 14, 'Return', '2025-03-10 11:54:36.474000', 'StockIn', 1, NULL, NULL, '2025-03-10 11:54:36.474000', 5, 4, NULL, 'Faulty', '2025-03-10 11:55:18.933000', 1), -(204, 7, NULL, 4, 5, 'Calibration', '2025-03-10 00:00:00.000000', 'Stock Out', 1, 'supplier. Item sent to TRANSWATER API SDN. BHD. for Calibration', NULL, '0001-01-01 00:00:00.000000', 5, NULL, NULL, 'Ready To Deploy', '2025-03-10 11:56:01.670000', 1), -(205, 7, NULL, 4, 5, 'On Delivery', '2025-03-10 00:00:00.000000', 'Stock Out', 1, 'send', NULL, '0001-01-01 00:00:00.000000', 14, NULL, NULL, 'Delivered', '2025-03-10 11:56:55.248000', 1), -(206, 7, NULL, NULL, 14, 'Return', '2025-03-10 11:56:57.820000', 'StockIn', 1, NULL, NULL, '2025-03-10 11:56:57.820000', 5, 4, NULL, 'Faulty', '2025-03-10 12:01:47.286000', 1), -(207, 7, NULL, 4, 5, 'Faulty', '2025-03-10 12:02:13.774000', 'Stock Out', 1, 'faulty', NULL, '0001-01-01 00:00:00.000000', NULL, NULL, NULL, NULL, '2025-03-10 12:02:13.774000', 1), -(208, 7, NULL, 4, 5, 'Calibration', '2025-03-10 00:00:00.000000', 'Stock Out', 1, 'remark. Item sent to TRANSWATER API SDN. BHD. for Calibration', NULL, '0001-01-01 00:00:00.000000', 5, NULL, NULL, 'Ready To Deploy', '2025-03-10 12:03:43.056000', 1), -(209, 7, NULL, 4, 5, 'On Delivery', '2025-03-10 00:00:00.000000', 'Stock Out', 1, 'send item to user. Inventory Master cancelled delivery with remark: cancel', NULL, '0001-01-01 00:00:00.000000', 14, NULL, NULL, 'Ready To Deploy', '2025-03-10 12:18:59.702000', 1), -(210, 7, NULL, 4, 5, 'On Delivery', '2025-03-10 00:00:00.000000', 'Stock Out', 1, 'assign to AIR. Inventory Master cancelled delivery with remark: cancel', NULL, '0001-01-01 00:00:00.000000', 2, NULL, NULL, 'Ready To Deploy', '2025-03-10 14:00:06.735000', 1), -(211, 7, NULL, 4, 5, 'On Delivery', '2025-03-10 00:00:00.000000', 'Stock Out', 1, 'assign to air. Inventory Master cancelled delivery with remark: cancel', NULL, '0001-01-01 00:00:00.000000', NULL, 2, NULL, 'Ready To Deploy', '2025-03-10 14:04:06.898000', 1), -(212, 7, NULL, 4, 5, 'On Delivery', '2025-03-10 00:00:00.000000', 'Stock Out', 1, 'assign to pstw air', NULL, '0001-01-01 00:00:00.000000', NULL, 5, NULL, 'Ready To Deploy', '2025-03-10 14:13:04.946000', 1), -(214, 7, NULL, 4, 5, 'On Delivery', '2025-03-10 00:00:00.000000', 'Stock Out', 1, 'assign to pstw air ', NULL, '0001-01-01 00:00:00.000000', 9, 5, NULL, 'Ready To Deploy', '2025-03-10 14:26:20.195000', 1), -(215, 7, NULL, 5, 9, 'On Delivery', '2025-03-10 00:00:00.000000', 'Stock Out', 1, 'assign to pstw it', NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', '2025-03-10 14:48:28.172000', 1), -(216, 7, NULL, 4, 5, 'On Delivery', '2025-03-10 00:00:00.000000', 'Stock Out', 1, 'assign to pstw air', NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', '2025-03-10 15:02:51.885000', 1), -(217, 9, NULL, 4, 5, 'Repair', '2025-03-10 00:00:00.000000', 'Stock Out', 1, 'repair. Item sent to TRANSWATER API SDN. BHD. for Repair', NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', '2025-03-10 15:13:29.604000', 1), -(218, 9, NULL, 4, 5, 'On Delivery', '2025-03-10 00:00:00.000000', 'Stock Out', 1, 'remark', NULL, '0001-01-01 00:00:00.000000', 9, 5, NULL, 'Ready To Deploy', '2025-03-10 15:21:18.417000', 1), -(219, 9, NULL, 5, 9, 'On Delivery', '2025-03-10 00:00:00.000000', 'Stock Out', 1, 'assign to it store', NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', '2025-03-10 15:41:13.330000', 1), -(221, 9, NULL, 5, 9, 'On Delivery', '2025-03-10 00:00:00.000000', 'Stock Out', 1, 'send to pstw it', NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', '2025-03-10 15:50:18.308000', 1), -(234, 7, NULL, 4, 5, 'On Delivery', '2025-03-13 00:00:00.000000', 'Stock Out', 1, 'Hantar Barang', NULL, '0001-01-01 00:00:00.000000', 14, NULL, NULL, 'Delivered', '2025-03-13 14:58:56.464000', 1), -(238, 37, NULL, 3, 6, NULL, NULL, 'Register', 1, NULL, NULL, '2025-03-19 09:25:38.700985', 6, 3, NULL, 'Ready To Deploy', NULL, 1), -(239, 38, NULL, 4, 5, NULL, NULL, 'Register', 1, NULL, NULL, '2025-03-19 10:57:08.452546', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(240, 39, NULL, 4, 5, NULL, NULL, 'Register', 1, NULL, NULL, '2025-03-19 10:57:30.529711', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(261, 34, NULL, 4, 5, 'On Delivery', '2025-07-14 00:00:00.000000', 'Stock Out', 1, '- ~', NULL, '0001-01-01 00:00:00.000000', 21, NULL, NULL, 'Delivered', '2025-07-14 12:21:09.019000', 1), -(265, 38, NULL, 4, 5, 'On Delivery', '2025-07-15 00:00:00.000000', 'Stock Out', 1, '2. Inventory Master cancelled delivery with remark: wrong item', NULL, '0001-01-01 00:00:00.000000', 5, NULL, NULL, 'Ready To Deploy', '2025-07-15 16:37:24.966000', 1), -(310, 34, NULL, 4, 5, 'On Delivery', '2025-07-17 00:00:00.000000', 'Stock Out', 1, '1', NULL, '0001-01-01 00:00:00.000000', 5, NULL, NULL, 'Ready To Deploy', '2025-07-17 14:58:48.112000', 1), -(315, 78, NULL, 4, 5, NULL, NULL, 'Register', 1, NULL, NULL, '2025-07-17 16:20:56.208839', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(316, 78, NULL, 4, 5, 'On Delivery', '2025-07-17 00:00:00.000000', 'Stock Out', 1, '1 fan', NULL, '0001-01-01 00:00:00.000000', 23, NULL, NULL, 'Delivered', '2025-10-01 15:31:38.887000', 1), -(351, 84, NULL, 4, 5, NULL, NULL, 'Register', 2, NULL, NULL, '2025-07-18 10:55:24.690714', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(414, 94, NULL, 4, 5, NULL, NULL, 'Register', 5, NULL, NULL, '2025-07-22 08:55:58.020918', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(415, 94, NULL, 4, 5, 'On Delivery', '2025-07-22 00:00:00.000000', 'Stock Out', 2, 'Movement cancelled: wrong item ', NULL, '0001-01-01 00:00:00.000000', NULL, NULL, NULL, 'Cancelled', NULL, 1), -(416, 94, NULL, 4, 5, NULL, '2025-07-22 09:28:38.737000', 'Stock Out', 3, 'Item has been cancelled: wrong item ', NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(417, 94, NULL, 4, 5, NULL, NULL, 'Register', 3, NULL, NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(418, 94, NULL, 4, 5, 'On Delivery', '2025-07-22 00:00:00.000000', 'Stock Out', 2, 'Movement cancelled: wrong item ', NULL, '0001-01-01 00:00:00.000000', NULL, NULL, NULL, 'Cancelled', NULL, 1), -(419, 94, NULL, 4, 5, NULL, '2025-07-22 09:31:29.332000', 'Stock Out', 2, 'Item has been cancelled: wrong item ', NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(420, 94, NULL, 4, 5, NULL, NULL, 'Register', 2, NULL, NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(421, 94, NULL, 4, 5, 'On Delivery', '2025-07-22 00:00:00.000000', 'Stock Out', 2, 'Movement cancelled: wrong item ', NULL, '0001-01-01 00:00:00.000000', NULL, NULL, NULL, 'Cancelled', NULL, 1), -(422, 94, NULL, 4, 5, NULL, '2025-07-22 09:33:23.460000', 'Stock Out', 2, 'Item has been cancelled: wrong item ', NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(423, 94, NULL, 4, 5, NULL, NULL, 'Register', 2, NULL, NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(429, 94, NULL, 4, 5, 'On Delivery', '2025-07-23 00:00:00.000000', 'Stock Out', 2, 'Movement cancelled: wrong item ', NULL, '0001-01-01 00:00:00.000000', NULL, NULL, NULL, 'Cancelled', NULL, 1), -(430, 94, NULL, 4, 5, NULL, '2025-07-22 09:56:39.557000', 'Stock Out', 3, 'Item has been cancelled: wrong item ', NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(431, 94, NULL, 4, 5, NULL, NULL, 'Register', 3, NULL, NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(432, 94, NULL, 4, 5, 'On Delivery', '2025-07-22 00:00:00.000000', 'Stock Out', 2, 'Movement cancelled: wrong item ', NULL, '0001-01-01 00:00:00.000000', NULL, NULL, NULL, 'Cancelled', NULL, 1), -(433, 94, NULL, 4, 5, NULL, '2025-07-22 10:01:23.828000', 'Stock Out', 3, 'Item has been cancelled: wrong item ', NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(434, 94, NULL, 4, 5, NULL, NULL, 'Register', 3, NULL, NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(435, 94, NULL, 4, 5, 'On Delivery', '2025-07-22 00:00:00.000000', 'Stock Out', 2, 'Movement cancelled: wrong item ', NULL, '0001-01-01 00:00:00.000000', NULL, NULL, NULL, 'Cancelled', NULL, 1), -(436, 94, NULL, 4, 5, NULL, '2025-07-22 10:07:23.828000', 'Stock Out', 3, 'Item has been cancelled: wrong item ', NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(437, 94, NULL, 4, 5, NULL, NULL, 'Register', 3, NULL, NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(438, 94, NULL, 4, 5, 'On Delivery', '2025-07-22 00:00:00.000000', 'Stock Out', 2, 'Movement cancelled: wrong item ', NULL, '0001-01-01 00:00:00.000000', NULL, NULL, NULL, 'Cancelled', NULL, 1), -(439, 94, NULL, 4, 5, NULL, '2025-07-22 11:23:53.268000', 'Stock Out', NULL, 'Item has been cancelled: wrong item ', NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(440, 94, NULL, 4, 5, NULL, NULL, 'Register', NULL, NULL, NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(441, 94, NULL, 4, 5, 'On Delivery', '2025-07-22 00:00:00.000000', 'Stock Out', 3, NULL, NULL, '0001-01-01 00:00:00.000000', NULL, NULL, NULL, NULL, NULL, 1), -(442, 94, NULL, 4, 5, NULL, '2025-07-22 11:33:56.816000', 'Stock Out', NULL, 'Item has been cancelled: wrong item ', NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Cancelled', NULL, 1), -(443, 94, NULL, 4, 5, NULL, NULL, 'Register', NULL, NULL, NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(448, 94, NULL, 4, 5, 'On Delivery', '2025-07-22 00:00:00.000000', 'Stock Out', 2, '- ~ / Movement cancelled: wrong item ', NULL, '0001-01-01 00:00:00.000000', NULL, NULL, NULL, 'Cancelled', NULL, 1), -(449, 94, NULL, 4, 5, NULL, NULL, 'Register', NULL, NULL, NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(450, 94, NULL, 4, 5, 'On Delivery', '2025-07-21 00:00:00.000000', 'Stock Out', 3, '- / Movement cancelled: wrong item ', NULL, '0001-01-01 00:00:00.000000', NULL, NULL, NULL, 'Cancelled', NULL, 1), -(451, 94, NULL, 4, 5, NULL, NULL, 'Register', NULL, NULL, NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(452, 98, NULL, 4, 5, NULL, NULL, 'Register', 2, NULL, NULL, '2025-07-23 17:06:35.723163', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(455, 100, NULL, 4, 5, NULL, NULL, 'Register', 1, NULL, NULL, '2025-07-25 16:11:19.124717', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(456, 101, NULL, 4, 5, NULL, NULL, 'Register', 2, NULL, NULL, '2025-07-25 16:29:52.659943', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(457, 101, NULL, 4, 5, 'On Delivery', '2025-07-25 00:00:00.000000', 'Stock Out', 2, '2', '/media/inventory/itemmovement/101_605baba4-a195-446e-9f9a-f6ac32491de4101_Request.jpg', '0001-01-01 00:00:00.000000', 21, NULL, NULL, 'Delivered', '2025-07-25 16:38:47.860000', 1), -(458, 102, NULL, 4, 5, NULL, NULL, 'Register', 1, NULL, NULL, '2025-07-25 16:32:40.183667', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(459, 102, NULL, 4, 5, 'On Delivery', '2025-07-25 00:00:00.000000', 'Stock Out', 1, '1 / Movement cancelled: no', '/media/inventory/itemmovement/102_5f3ce400-8535-43ca-8475-b05dc4247115102_Request.jpg', '0001-01-01 00:00:00.000000', NULL, NULL, NULL, 'Cancelled', NULL, 1), -(460, 102, NULL, 4, 5, NULL, NULL, 'Register', NULL, NULL, NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(461, 102, NULL, 4, 5, 'On Delivery', '2025-07-25 00:00:00.000000', 'Stock Out', 1, '1', '/media/inventory/itemmovement/102_89fd9a6e-4a7a-421f-8506-c9449cdc19fe102_Request.jpg', '0001-01-01 00:00:00.000000', 23, NULL, NULL, NULL, NULL, 0), -(462, 101, NULL, 4, 21, 'Delivered', '2025-07-29 09:07:09.731000', 'Assign', 0, '-', '/media/inventory/itemmovement/core2user i117(YV95FF54) Station.jpg', '2025-07-29 09:07:09.731000', 21, 4, 25, 'Delivered', '2025-07-29 09:07:09.731000', 1), -(463, 101, 25, 4, 21, 'Delivered', '2025-07-29 09:16:25.776000', 'Assign', 1, '..', '/media/inventory/itemmovement/core2user i117(NHA5HZ9B) Station.jpg', '2025-07-29 09:16:25.776000', 21, 4, 26, 'Delivered', '2025-07-29 09:16:25.776000', 1), -(464, 101, 26, 4, 21, 'Return', '2025-07-29 09:22:05.939000', 'StockIn', 1, 'wrong', '/media/inventory/itemmovement/core2user i117(AGG3SJCT) Return.jpg', '2025-07-29 09:22:05.939000', 5, 4, 25, 'Faulty', '2025-07-29 09:23:45.207000', 1), -(465, 100, NULL, 4, 5, 'On Delivery', '2025-07-29 00:00:00.000000', 'Stock Out', 1, '1', '/media/inventory/itemmovement/100_e3957bc4-5180-4629-8b62-4dbea794dee9100_Request.jpg', '0001-01-01 00:00:00.000000', 15, NULL, 36, 'Delivered', '2025-07-29 09:45:48.245000', 1), -(466, 100, 36, NULL, 15, 'Return', '2025-07-29 09:45:49.313000', 'StockIn', 0, '1', NULL, '2025-07-29 09:45:49.313000', 5, 4, NULL, 'Faulty', '2025-07-29 09:46:32.310000', 1), -(467, 101, NULL, 4, 5, 'Faulty', '2025-07-29 09:50:02.564000', 'Stock Out', 1, '1', '/media/inventory/itemmovement/101_0211956e-fd5b-43aa-bc15-5a4cd87edd96101_Request.jpg', '0001-01-01 00:00:00.000000', NULL, NULL, NULL, NULL, '2025-07-29 09:50:02.564000', 1), -(468, 103, NULL, 4, 5, NULL, NULL, 'Register', 5, NULL, NULL, '2025-07-29 09:52:16.570272', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(469, 103, NULL, 4, 5, 'On Delivery', '2025-07-29 00:00:00.000000', 'Stock Out', 2, '2 / Movement cancelled: no', '/media/inventory/itemmovement/103_f722a849-b580-4eba-b98a-6ad138899041103_Request.jpg', '0001-01-01 00:00:00.000000', NULL, 4, NULL, 'Cancelled', NULL, 1), -(470, 103, NULL, 4, 5, NULL, NULL, 'Register', NULL, NULL, NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(471, 103, NULL, 4, 5, 'Repair', '2025-07-29 00:00:00.000000', 'Stock Out', 2, '-. Item sent to AXIOMTEK SDN BHD for Repair', '/media/inventory/itemmovement/103_d69c8d16-2075-45f8-985d-028a48749bf7103_Request.jpg', '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', '2025-07-29 09:57:46.432000', 1), -(472, 104, NULL, 4, 5, NULL, NULL, 'Register', 1, NULL, NULL, '2025-07-31 10:20:08.372504', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(473, 105, NULL, 4, 5, NULL, NULL, 'Register', 1, NULL, NULL, '2025-07-31 11:16:32.212424', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(474, 106, NULL, 4, 5, NULL, NULL, 'Register', 2, NULL, NULL, '2025-07-31 11:26:19.975588', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(488, 120, NULL, 4, 5, NULL, NULL, 'Register', 1, NULL, NULL, '2025-10-16 11:02:10.652089', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(489, 120, NULL, 4, 5, 'On Delivery', '2025-10-22 00:00:00.000000', 'Stock Out', 1, 'Item detector / Movement cancelled: no', '/media/inventory/itemmovement/120_08529cf2-5cc7-4ea5-aeea-6d193d98e1aa120_Request.jpg', '0001-01-01 00:00:00.000000', NULL, NULL, NULL, 'Cancelled', NULL, 1), -(490, 120, NULL, 4, 5, NULL, NULL, 'Register', NULL, NULL, NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(491, 120, NULL, 4, 5, 'On Delivery', '2025-10-22 00:00:00.000000', 'Stock Out', 1, 'Item detector / Movement cancelled: no', NULL, '0001-01-01 00:00:00.000000', NULL, NULL, 36, 'Cancelled', NULL, 1), -(492, 120, NULL, 4, 5, NULL, NULL, 'Register', NULL, NULL, NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(493, 120, NULL, 4, 5, 'On Delivery', '2025-10-22 00:00:00.000000', 'Stock Out', 1, 'Item detector / Movement cancelled: no', NULL, '0001-01-01 00:00:00.000000', NULL, 4, NULL, 'Cancelled', NULL, 1), -(494, 120, NULL, 4, 5, NULL, NULL, 'Register', NULL, NULL, NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(495, 120, NULL, 4, 5, 'On Delivery', '2025-10-21 00:00:00.000000', 'Stock Out', 1, 'Item detector / Movement cancelled: no', NULL, '0001-01-01 00:00:00.000000', NULL, 5, NULL, 'Cancelled', NULL, 1), -(496, 120, NULL, 4, 5, NULL, NULL, 'Register', NULL, NULL, NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(497, 120, NULL, 4, 5, 'On Delivery', '2025-10-22 00:00:00.000000', 'Stock Out', 1, 'Item detector ', NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', '2025-10-22 15:56:58.604000', 1), -(498, 120, NULL, 4, 5, 'On Delivery', '2025-10-22 00:00:00.000000', 'Stock Out', 1, 'Item detector / Movement cancelled: no', NULL, '0001-01-01 00:00:00.000000', NULL, 4, NULL, 'Cancelled', NULL, 1), -(499, 120, NULL, 4, 5, NULL, NULL, 'Register', NULL, NULL, NULL, '0001-01-01 00:00:00.000000', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(500, 120, NULL, 4, 5, 'Faulty', '2025-10-22 16:02:44.063000', 'Stock Out', 1, 'Item detector ', NULL, '0001-01-01 00:00:00.000000', NULL, NULL, NULL, NULL, '2025-10-22 16:02:44.063000', 1), -(501, 121, NULL, 4, 5, NULL, NULL, 'Register', 1, NULL, NULL, '2025-10-24 09:09:55.660801', 5, 4, NULL, 'Ready To Deploy', NULL, 1), -(502, 121, NULL, 4, 5, 'On Delivery', '2025-10-24 00:00:00.000000', 'Stock Out', 1, '-', '/media/inventory/itemmovement/121_b7099b47-b729-474c-b639-1e3a8a2871a6121_Request.jpg', '0001-01-01 00:00:00.000000', 15, NULL, NULL, 'Delivered', '2025-10-24 15:34:05.879000', 1), -(503, 121, NULL, 4, 15, 'Delivered', '2025-10-24 16:26:55.295000', 'Assign', 1, '-', '/media/inventory/itemmovement/anis.zakaria TEOM-1405DF(NZKH75QW) Station.jpg', '2025-10-24 16:26:55.295000', 15, 4, 36, 'Delivered', '2025-10-24 16:26:55.295000', 1), -(504, 121, 36, 4, 15, 'Return', '2025-10-24 16:33:08.698000', 'StockIn', 1, '-', '/media/inventory/itemmovement/anis.zakaria TEOM-1405DF(0TK7Z0SC) Return.jpg', '2025-10-24 16:33:08.698000', 5, 4, NULL, 'Faulty', '2025-10-24 16:46:06.477000', 1); - --- -------------------------------------------------------- - --- --- Table structure for table `items` --- - -CREATE TABLE `items` ( - `ItemID` int NOT NULL, - `UniqueID` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `CompanyId` int NOT NULL, - `DepartmentId` int NOT NULL, - `ProductId` int NOT NULL, - `SerialNumber` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `TeamType` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `Quantity` int NOT NULL, - `Supplier` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `PartNumber` varchar(255) NOT NULL, - `PurchaseDate` datetime(6) NOT NULL, - `PONo` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `Currency` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `DefaultPrice` float NOT NULL, - `CurrencyRate` float NOT NULL, - `ConvertPrice` float NOT NULL, - `DONo` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `DODate` datetime(6) DEFAULT NULL, - `Warranty` int NOT NULL, - `EndWDate` datetime(6) NOT NULL, - `InvoiceNo` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `InvoiceDate` datetime(6) DEFAULT NULL, - `ItemStatus` int NOT NULL COMMENT '1 = In stock; 2 = Item Moving; 3 = Item Out; 4 = Item Broken; 5 = Item Lost; 6 = Item Stolen; 7 = Item Damaged; 8 = Item Discarded; 9 = Item Destroyed; 10 = Item Finished;', - `MovementId` int DEFAULT NULL, - `CreatedByUserId` int NOT NULL, - `CreatedDate` datetime DEFAULT NULL, - `ModifiedDate` datetime DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `items` --- - -INSERT INTO `items` (`ItemID`, `UniqueID`, `CompanyId`, `DepartmentId`, `ProductId`, `SerialNumber`, `TeamType`, `Quantity`, `Supplier`, `PartNumber`, `PurchaseDate`, `PONo`, `Currency`, `DefaultPrice`, `CurrencyRate`, `ConvertPrice`, `DONo`, `DODate`, `Warranty`, `EndWDate`, `InvoiceNo`, `InvoiceDate`, `ItemStatus`, `MovementId`, `CreatedByUserId`, `CreatedDate`, `ModifiedDate`) VALUES -(7, 'PIP00200007', 1, 1, 2, '151285324(B0001)', 'Continuous', 1, 'Xylem Water Solution Pte Ltd', '132', '2024-07-02 00:00:00.000000', 'PSTW-PO092231', 'MYR', 150, 1, 150, 'B00001', '2025-01-02 00:00:00.000000', 8, '2025-09-02 00:00:00.000000', 'QATF00S', '2025-01-02 00:00:00.000000', 2, 234, 3, NULL, NULL), -(8, 'ARA00500008', 3, 4, 5, '22C103391', 'Continuous', 1, 'AXIOMTEK', '559502-000', '2024-12-23 00:00:00.000000', 'AD-PO-2024-11-013', 'MYR', 1, 5216.28, 5216.28, 'DO1231', '2024-12-23 00:00:00.000000', 12, '2025-12-23 00:00:00.000000', 'Invoice123', '2024-10-23 00:00:00.000000', 2, 138, 6, NULL, NULL), -(9, 'ARA00600009', 3, 4, 6, 'SL2449002', 'Continuous', 1, '', 'SL1500 3G', '2025-01-06 00:00:00.000000', 'AD-PO-2024-12-012', 'MYR', 96900, 1, 96900, NULL, '2025-01-06 00:00:00.000000', 12, '2026-01-06 00:00:00.000000', NULL, '2025-01-06 00:00:00.000000', 2, 221, 6, NULL, NULL), -(34, 'PIP00100034', 1, 1, 1, '123', 'Continuous', 1, 'TRANSWATER API SDN. BHD.', '21', '2025-03-14 00:00:00.000000', 'PO1231DDW', 'MYR', 12312, 1, 12312, 'B00001', '2025-03-14 00:00:00.000000', 23, '2027-02-14 00:00:00.000000', 'QATF00S', '2025-03-14 00:00:00.000000', 2, 310, 5, NULL, NULL), -(37, 'ARP00200037', 3, 4, 2, '123', 'Continuous', 1, 'TRANSWATER API SDN. BHD.', '123', '2025-03-19 00:00:00.000000', 'PO1231', 'MYR', 231, 1, 231, 'DO1231', '2025-03-19 00:00:00.000000', 21, '2026-12-19 00:00:00.000000', 'Invoice123', '2025-03-19 00:00:00.000000', 1, 238, 6, NULL, NULL), -(38, 'PIA00600038', 1, 1, 6, '112233', 'Continuous', 1, 'Hydroaxys Sdn Bhd', '123', '2025-03-19 00:00:00.000000', '1231', 'MYR', 123, 1, 123, 'DO1231', '2025-03-19 00:00:00.000000', 23, '2027-02-19 00:00:00.000000', 'Invoice123', '2025-03-19 00:00:00.000000', 2, 265, 5, NULL, NULL), -(39, 'PID00400039', 1, 1, 4, NULL, 'Continuous', 2, 'TRANSWATER API SDN. BHD.', '123', '2025-03-19 00:00:00.000000', '1231', 'MYR', 123, 1, 123, 'DO1231', '2025-03-19 00:00:00.000000', 23, '2027-02-19 00:00:00.000000', 'Invoice123', '2025-03-19 00:00:00.000000', 1, 240, 5, NULL, NULL), -(49, 'PAD01900049', 1, 2, 19, NULL, 'Continuous', 1, 'AXIOMTEK SDN. BHD.', '1232', '2025-07-26 00:00:00.000000', 'PO123456', 'MYR', 15, 1, 15, 'DO123456', '2025-07-24 00:00:00.000000', 5, '2025-12-24 00:00:00.000000', 'INV1234567', '2025-07-31 00:00:00.000000', 1, NULL, 1, NULL, NULL), -(51, '', 1, 2, 19, NULL, 'Continuous', 1, 'AXIOMTEK SDN. BHD.', '1232', '2025-07-26 00:00:00.000000', 'PO123456', 'MYR', 15, 1, 15, 'DO123456', '2025-07-24 00:00:00.000000', 2, '2025-09-24 00:00:00.000000', 'INV1234567', '2025-07-31 00:00:00.000000', 1, NULL, 1, NULL, NULL), -(52, '', 1, 2, 19, NULL, 'Continuous', 1, 'AXIOMTEK SDN. BHD.', '1232', '2025-07-26 00:00:00.000000', 'PO123456', 'MYR', 15, 1, 15, 'DO123456', '2025-07-24 00:00:00.000000', 2, '2025-09-24 00:00:00.000000', 'INV1234567', '2025-07-31 00:00:00.000000', 1, NULL, 1, NULL, NULL), -(53, '', 1, 2, 19, NULL, 'Continuous', 1, 'AXIOMTEK SDN. BHD.', '1232', '2025-07-26 00:00:00.000000', 'PO123456', 'MYR', 15, 1, 15, 'DO123456', '2025-07-24 00:00:00.000000', 2, '2025-09-24 00:00:00.000000', 'INV1234567', '2025-07-31 00:00:00.000000', 1, NULL, 1, NULL, NULL), -(54, '', 1, 2, 19, NULL, 'Continuous', 1, 'AXIOMTEK SDN. BHD.', '1232', '2025-07-26 00:00:00.000000', 'PO123456', 'MYR', 15, 1, 15, 'DO123456', '2025-07-24 00:00:00.000000', 2, '2025-09-24 00:00:00.000000', 'INV1234567', '2025-07-31 00:00:00.000000', 1, NULL, 1, NULL, NULL), -(55, '', 14, 62, 2, '123', 'Manual', 1, 'AXIOMTEK SDN. BHD.', '1232', '2025-07-24 00:00:00.000000', 'PO123456', 'MYR', 2312, 1, 2312, 'DO123456', '2025-07-11 00:00:00.000000', 4, '2025-11-11 00:00:00.000000', 'INV1234567', '2025-06-29 00:00:00.000000', 1, NULL, 1, NULL, NULL), -(56, '', 14, 62, 2, '123', 'Manual', 0, 'AXIOMTEK SDN. BHD.', '1232', '2025-07-24 00:00:00.000000', 'PO123456', 'MYR', 2312, 1, 2312, 'DO123456', '2025-07-11 00:00:00.000000', 4, '2025-11-11 00:00:00.000000', 'INV1234567', '2025-06-29 00:00:00.000000', 1, NULL, 1, NULL, NULL), -(57, '', 14, 62, 19, NULL, 'Manual', 1, 'AXIOMTEK SDN. BHD.', '1232', '2025-07-11 00:00:00.000000', 'PO123456', 'MYR', 0.02, 1, 0.02, 'DO123456', '2025-07-25 00:00:00.000000', 2, '2025-09-25 00:00:00.000000', 'INV1234567', '2025-07-18 00:00:00.000000', 1, NULL, 1, NULL, NULL), -(78, 'PIP00300078', 1, 1, 3, '15128532', 'Continuous', 1, 'AXIOMTEK SDN BHD', '123', '2025-07-15 00:00:00.000000', 'PO123456', 'MYR', 111, 1, 111, 'DO123', '2025-07-15 00:00:00.000000', 8, '2026-03-15 00:00:00.000000', 'Invoice123', '2025-07-15 00:00:00.000000', 2, 316, 5, NULL, NULL), -(100, 'PID00400100', 1, 1, 4, NULL, 'Continuous', 0, 'AXIOMTEK SDN BHD', '123', '2025-07-25 00:00:00.000000', 'PO12345', 'MYR', 212, 1, 212, 'DO1234', '2025-07-23 00:00:00.000000', 2, '2025-09-23 00:00:00.000000', 'Invoice123', '2025-07-16 00:00:00.000000', 2, 466, 5, NULL, NULL), -(101, 'PID02300101', 1, 1, 23, NULL, 'Continuous', 0, 'AXIOMTEK SDN BHD', '123', '2025-07-26 00:00:00.000000', 'PO12345', 'MYR', 134, 1, 134, 'DO1231', '2025-07-24 00:00:00.000000', 1, '2025-08-24 00:00:00.000000', 'Invoice123', '2025-07-25 00:00:00.000000', 8, 467, 5, NULL, NULL), -(102, 'PIA00600102', 1, 1, 6, '112233', 'Continuous', 1, 'Hydroaxys Sdn Bhd', '123', '2025-07-25 00:00:00.000000', 'PO12345', 'MYR', 300, 1, 300, 'DO1234', '2025-07-24 00:00:00.000000', 2, '2025-09-24 00:00:00.000000', 'Invoice123', '2025-07-24 00:00:00.000000', 2, 461, 5, NULL, NULL), -(103, 'PID01900103', 1, 1, 19, NULL, 'Continuous', 3, 'TRANSWATER API SDN. BHD.', '123', '2025-07-29 00:00:00.000000', 'PO123456', 'MYR', 202, 1, 202, 'DO1234', '2025-07-29 00:00:00.000000', 5, '2025-12-29 00:00:00.000000', 'Invoice123', '2025-07-30 00:00:00.000000', 4, 471, 5, NULL, '2025-07-31 11:24:10'), -(104, 'PID00400104', 1, 1, 4, NULL, 'Continuous', 2, 'Axiomtek', '123', '2025-03-19 00:00:00.000000', '1231', 'MYR', 128, 1, 128, 'DO1231', '2025-03-19 00:00:00.000000', 23, '2027-02-19 00:00:00.000000', 'Invoice123', '2025-03-19 00:00:00.000000', 1, 472, 5, '2025-07-31 10:20:08', '2025-07-31 11:50:41'), -(105, 'PIA01100105', 1, 1, 11, '112233', 'Continuous', 1, 'TRANSWATER API SDN. BHD.', '123', '2025-03-19 00:00:00.000000', '1231', 'MYR', 444, 1, 444, 'DO1231', '2025-03-19 00:00:00.000000', 23, '2027-02-19 00:00:00.000000', 'Invoice123', '2025-03-19 00:00:00.000000', 1, 473, 5, '2025-07-31 11:16:32', '2025-07-31 11:24:46'), -(106, 'PID00400106', 1, 1, 4, NULL, 'Continuous', 2, 'TRANSWATER API SDN. BHD.', '123', '2025-03-19 00:00:00.000000', '1231', 'MYR', 166, 1, 166, 'DO1231', '2025-03-19 00:00:00.000000', 12, '2026-03-19 00:00:00.000000', 'Invoice123', '2025-03-19 00:00:00.000000', 1, 474, 5, '2025-07-31 11:26:20', '2025-07-31 11:28:30'), -(107, '', 2, 3, 4, NULL, 'Continuous', 2, 'AXIOMTEK', '1232', '2025-09-30 00:00:00.000000', 'PO123', 'MYR', 122, 1, 122, 'DO1234', '2025-09-30 00:00:00.000000', 2, '2025-11-30 00:00:00.000000', 'INV1234567', '2025-09-30 00:00:00.000000', 1, NULL, 1, '2025-09-30 15:36:32', NULL), -(108, 'OMD00400108', 2, 3, 4, NULL, 'Manual', 2, 'AXIOMTEK', '1232', '2025-09-30 00:00:00.000000', 'PO123', 'MYR', 122, 1, 122, 'DO1234', '2025-09-30 00:00:00.000000', 2, '2025-11-30 00:00:00.000000', 'INV1234567', '2025-09-30 00:00:00.000000', 1, NULL, 1, '2025-09-30 15:36:55', '2025-09-30 16:05:30'), -(109, '', 2, 3, 4, NULL, 'Continuous', 1, 'AXIOMTEK', '1232', '2025-09-30 00:00:00.000000', 'PO123', 'MYR', 122, 1, 122, 'DO1234', '2025-09-30 00:00:00.000000', 2, '2025-11-30 00:00:00.000000', 'INV1234567', '2025-09-30 00:00:00.000000', 1, NULL, 19, '2025-09-30 15:44:23', NULL), -(110, 'OMA00900110', 2, 3, 9, '12125', 'Continuous', 1, 'Matrix', '12222333', '2025-09-29 00:00:00.000000', 'RR22344', 'MYR', 2223, 1, 2223, 'DF1234', '2025-09-29 00:00:00.000000', 2, '2025-11-29 00:00:00.000000', 'invoice12333', '2025-09-29 00:00:00.000000', 1, NULL, 19, '2025-09-30 15:46:33', '2025-10-01 09:04:52'), -(111, '', 2, 3, 9, '1212', 'Continuous', 1, 'Matrix', '12222333', '2025-09-29 00:00:00.000000', 'RR22344', 'MYR', 2223, 1, 2223, 'DF1234', '2025-09-29 00:00:00.000000', 2, '2025-11-29 00:00:00.000000', 'invoice12333', '2025-09-29 00:00:00.000000', 1, NULL, 19, '2025-09-30 15:46:33', NULL), -(112, 'OMP00300112', 2, 3, 3, '12121111', 'Manual', 1, 'TRANSWATER API SDN. BHD.', '12222333', '2025-09-30 00:00:00.000000', 'RR22344', 'MYR', 332, 1, 332, 'DF1234', '2025-09-30 00:00:00.000000', 3, '2025-12-30 00:00:00.000000', 'invoice12333', '2025-09-29 00:00:00.000000', 1, NULL, 19, '2025-09-30 15:49:21', '2025-09-30 16:05:24'), -(113, 'OMA02400113', 2, 3, 24, '1212111199', 'Continuous', 1, 'Axiomtek Test', '12222333', '2025-09-17 00:00:00.000000', 'RR22344', 'MYR', 400, 1, 400, 'DF1234', '2025-09-17 00:00:00.000000', 3, '2025-12-17 00:00:00.000000', 'invoice12333', '2025-09-17 00:00:00.000000', 1, NULL, 19, '2025-09-30 16:00:17', '2025-09-30 16:01:25'), -(114, '', 2, 3, 24, '1212111199', 'Continuous', 1, 'Axiomtek Test', '12222333', '2025-09-29 00:00:00.000000', 'RR22344', 'MYR', 78, 1, 78, 'DF1234', '2025-09-29 00:00:00.000000', 1, '2025-10-29 00:00:00.000000', 'invoice12333', '2025-09-22 00:00:00.000000', 1, NULL, 19, '2025-09-30 16:12:09', NULL), -(115, '', 2, 3, 5, '1212', 'Continuous', 1, 'Axiomtek Test', '12222333', '2025-09-29 00:00:00.000000', 'RR22344', 'MYR', 213, 1, 213, 'DO1234', '2025-09-29 00:00:00.000000', 1, '2025-10-29 00:00:00.000000', 'invoice12333', '2025-09-28 00:00:00.000000', 1, NULL, 19, '2025-09-30 16:54:45', NULL), -(116, '', 2, 3, 10, '15128532', 'Continuous', 1, 'Axiomtek Test', '1232', '2025-09-30 00:00:00.000000', 'PO123', 'MYR', 122, 1, 122, 'DO1234', '2025-09-30 00:00:00.000000', 2, '2025-11-30 00:00:00.000000', 'INV1234567', '2025-09-30 00:00:00.000000', 1, NULL, 19, '2025-09-30 17:09:17', NULL), -(117, '', 2, 3, 7, '15128532', 'Manual', 1, 'Xylem Water Solution Pte Ltd', '1232', '2025-09-30 00:00:00.000000', 'PO123', 'MYR', 122, 1, 122, 'DO1234', '2025-09-30 00:00:00.000000', 2, '2025-11-30 00:00:00.000000', 'INV1234567', '2025-09-30 00:00:00.000000', 1, NULL, 19, '2025-09-30 17:14:47', NULL), -(118, '', 2, 3, 13, '1232', 'Continuous', 1, 'TRANSWATER API SDN. BHD.', '1232', '2025-09-25 00:00:00.000000', 'PO123', 'MYR', 122, 1, 122, 'DO1234', '2025-09-10 00:00:00.000000', 2, '2025-11-10 00:00:00.000000', 'INV1234567', '2025-09-29 00:00:00.000000', 1, NULL, 19, '2025-09-30 17:16:33', NULL), -(119, '', 2, 3, 5, '1232', 'Manual', 1, 'TRANSWATER API SDN. BHD.', '1232', '2025-09-25 00:00:00.000000', 'PO123', 'MYR', 122, 1, 122, 'DO1234', '2025-09-10 00:00:00.000000', 2, '2025-11-10 00:00:00.000000', 'INV1234567', '2025-09-29 00:00:00.000000', 1, NULL, 19, '2025-09-30 17:17:00', '2025-09-30 17:17:00'), -(120, 'PIP00300120', 1, 1, 3, '1212111199', 'Continuous', 1, 'Hydroaxys Sdn Bhd', '12222333', '2025-11-06 00:00:00.000000', 'RR22344', 'MYR', 999, 1, 999, 'DO1234', '2025-10-08 00:00:00.000000', 3, '2026-01-08 00:00:00.000000', 'INV1234567', '2025-10-30 00:00:00.000000', 8, 500, 5, '2025-10-16 11:02:10', NULL), -(121, 'PIA00900121', 1, 1, 9, '1212', 'Continuous', 1, 'AXIOMTEK SDN. BHD.', '1232', '2025-10-16 00:00:00.000000', 'RR22344', 'MYR', 777, 1, 777, 'DO1234', '2025-10-30 00:00:00.000000', 5, '2026-03-30 00:00:00.000000', 'INV1234567', '2025-10-24 00:00:00.000000', 2, 504, 5, '2025-10-24 09:09:55', NULL); - --- -------------------------------------------------------- - --- --- Table structure for table `manufacturers` --- - -CREATE TABLE `manufacturers` ( - `ManufacturerId` int NOT NULL, - `ManufacturerName` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `manufacturers` --- - -INSERT INTO `manufacturers` (`ManufacturerId`, `ManufacturerName`) VALUES -(1, 'Dell'), -(2, 'Thermofisher '), -(3, 'AMA instruments'), -(4, 'Metone'), -(5, 'Cooler Master'), -(6, 'Axiomtek'), -(7, 'Xylem Water Solution '), -(8, 'Hydroaxys Sdn Bhd'), -(9, 'THERMO FISHER SCIENTIFIC'), -(10, 'Axiomtek (M) Sdn. Bhd.'), -(14, 'Axiomtek Test'); - --- -------------------------------------------------------- - --- --- Table structure for table `products` --- - -CREATE TABLE `products` ( - 0`ProductId` int NOT NULL, - 0`ProductName` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `ProductShortName` varchar(255) NOT NULL DEFAULT '', - 0`ManufacturerId` int NOT NULL, - `Category` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - 0`ModelNo` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `QuantityProduct` int DEFAULT NULL, - `ImageProduct` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `products` --- - -INSERT INTO `products` (`ProductId`, `ProductName`, `ProductShortName`, `ManufacturerId`, `Category`, `ModelNo`, `QuantityProduct`, `ImageProduct`) VALUES -(1, 'Dell Latitude 7410 Battery', 'Dell Battery', 1, 'Part', 'Latitude 7410', 14, '/media/inventory/images/Latitude 7410.jpg'), -(2, 'Dell Latitude 7410 RAM', 'Dell Ram DDR444', 1, 'Part', 'Latitude 7410i', 10, '/media/inventory/images/Latitude 7410i.jpg'), -(3, 'detector assy', 'detector assy', 2, 'Part', '101780-00', 3, '/media/inventory/images/101780-00.jpg'), -(4, 'XDream PC fan', 'XDream pc fan', 6, 'Disposable', 'i117', 24, '/media/inventory/images/i117.jpg'), -(5, 'YSI EXO2 Multiparameter Sonde (No Depth)', 'EXO2 Sonde', 7, 'Asset', '599502-00', 3, '/media/inventory/images/599502-00.jpg'), -(6, 'Sontek SL1500 3G', 'SL1500 3G', 8, 'Asset', 'SL1500 3G', 2, '/Media/Inventory/Images/SL1500 3G.jpg'), -(7, 'TEOM-1405DF PM10&PM2.5', 'TEOM', 2, 'Asset', '1405A233741512', 1, '/media/inventory/images/1405A233741512.jpg'), -(8, 'TEOM-1405DF PM10&PM2.5', 'TEOM', 2, 'Asset', 'TEOM-1405DF', 1, '/media/inventory/images/TEOM-1405DF.jpg'), -(9, 'TEOM-1405DF PM10&PM2.5', 'TEOM', 2, 'Asset', 'TEOM-1405DF', 2, '/media/inventory/images/TEOM-1405DF.jpg'), -(10, 'TEOM-1405DF PM10&PM2.5', 'TEOM', 2, 'Asset', 'TEOM-1405DF', 1, '/media/inventory/images/TEOM-1405DF.jpg'), -(11, 'TEOM-1405DF PM10&PM2.5', 'TEOM', 2, 'Asset', 'TEOM-1405DF', 2, '/media/inventory/images/TEOM-1405DF.jpg'), -(12, 'MODEL 42i (NO-NO2-NOX) ANALYZER', '42i NOX', 9, 'Asset', 'CM15480140', 0, '/media/inventory/images/CM15480140.jpg'), -(13, 'MODEL 43i SO2 ANALYZER', '43i SO2', 9, 'Asset', '43i', 1, '/Media/Inventory/Images/43i.png'), -(19, 'XDream PC fan 2', 'XDream fan', 10, 'Disposable', 'i117', 6, '/media/inventory/images/i117.jpg'), -(23, 'XDream PC fan 3', 'XDream fan 3', 10, 'Disposable', 'i117', 7, '/media/inventory/images/i117.jpg'), -(24, 'Dell Latitude 7410 Batt', 'Test Dell Bat', 14, 'Asset', 'Latitude 7410', 2, '/media/inventory/images/Latitude 7410.jpg'); - --- -------------------------------------------------------- - --- --- Table structure for table `rates` --- - -CREATE TABLE `rates` ( - `RateId` int NOT NULL, - `RateValue` decimal(10,2) NOT NULL, - `UserId` int NOT NULL, - `LastUpdated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `rates` --- - -INSERT INTO `rates` (`RateId`, `RateValue`, `UserId`, `LastUpdated`) VALUES -(1, 1.30, 15, '2025-08-29 14:53:27'), -(2, 5.00, 14, '2025-04-23 08:46:30'), -(3, 5.00, 6, '2025-04-23 08:46:30'), -(4, 5.00, 4, '2025-04-23 10:09:13'), -(5, 5.00, 4, '2025-04-23 10:09:13'), -(6, 5.00, 12, '2025-04-23 10:09:13'), -(7, 5.00, 12, '2025-04-23 10:09:13'), -(8, 14.00, 17, '2025-05-29 16:18:50'), -(9, 13.00, 18, '2025-06-04 11:42:00'), -(10, 3000.00, 21, '2025-06-06 11:39:35'), -(11, 10.58, 23, '2025-06-05 10:40:10'), -(12, 1.00, 19, '2025-07-31 11:58:42'); - --- -------------------------------------------------------- - --- --- Table structure for table `request` --- - -CREATE TABLE `request` ( - `requestID` int NOT NULL, - `ProductId` int NOT NULL, - `StationId` int DEFAULT NULL, - `UserId` int NOT NULL, - `ProductCategory` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `RequestQuantity` int DEFAULT NULL, - `Document` longtext, - `remarkUser` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `remarkMasterInv` longtext, - `status` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `requestDate` datetime DEFAULT NULL, - `approvalDate` datetime(6) DEFAULT NULL, - `assignStoreItem` int DEFAULT NULL, - `fromStoreItem` int DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `request` --- - -INSERT INTO `request` (`requestID`, `ProductId`, `StationId`, `UserId`, `ProductCategory`, `RequestQuantity`, `Document`, `remarkUser`, `remarkMasterInv`, `status`, `requestDate`, `approvalDate`, `assignStoreItem`, `fromStoreItem`) VALUES -(36, 3, NULL, 1, 'Part', 2, NULL, '2', 'sad', 'Rejected', '2025-03-10 18:42:13', '2025-03-10 12:07:10.169830', NULL, NULL), -(37, 2, NULL, 1, 'Part', 2, NULL, '', 'sad', 'Approved', '2025-03-10 18:42:24', '2025-03-10 12:07:26.715069', NULL, NULL), -(41, 1, NULL, 5, 'Part', 1, NULL, 'out of stock', '', 'Approved', '2025-03-12 11:39:08', '2025-03-12 04:03:26.305750', 4, 5), -(42, 2, NULL, 9, 'Part', 1, NULL, 'out of stock', '', 'Requested', '2025-03-12 11:39:32', NULL, 5, 4), -(45, 19, 23, 21, 'Disposable', 1, '/media/inventory/request/core2user i117(B82KP4HD) Request.jpg', 'out of stock', '', 'Approved', '2025-07-14 11:58:55', '2025-07-14 04:00:42.733246', NULL, NULL), -(46, 19, 23, 21, 'Disposable', 1, NULL, '-', '', 'Approved', '2025-07-14 12:06:40', '2025-07-14 04:09:06.471180', NULL, NULL), -(47, 1, 23, 21, 'Part', 1, NULL, '', '', 'Approved', '2025-07-14 12:17:06', '2025-07-14 04:17:40.857691', NULL, NULL), -(48, 19, NULL, 23, 'Disposable', 2, NULL, '2', '', 'Approved', '2025-07-14 16:14:17', '2025-07-14 08:28:58.991573', NULL, NULL), -(49, 1, NULL, 23, 'Part', 1, NULL, '--', 'no stock', 'Rejected', '2025-07-14 16:14:50', '2025-07-14 08:29:26.510790', NULL, NULL), -(50, 3, NULL, 23, 'Part', 2, NULL, '2', '', 'Approved', '2025-07-14 16:24:13', '2025-07-14 08:33:59.790163', NULL, NULL), -(51, 3, NULL, 21, 'Part', 1, NULL, '--', '', 'Approved', '2025-07-15 08:42:57', '2025-07-15 00:44:02.545475', NULL, NULL), -(59, 3, NULL, 5, 'Part', 0, NULL, '', '', 'Requested', '2025-07-24 09:54:38', NULL, 4, 1), -(60, 6, NULL, 23, 'Asset', 2, NULL, '2', '', 'Requested', '2025-07-24 14:51:42', NULL, NULL, NULL), -(62, 23, 32, 21, 'Disposable', 2, '/media/inventory/request/core2user i117(BVF9L4Q4) Request.jpg', '2', '', 'Approved', '2025-07-25 16:20:21', '2025-07-25 16:23:26.442796', NULL, NULL), -(63, 13, 30, 21, 'Asset', 1, '/media/inventory/request/core2user 43i(6ER7FQVB) Request.jpg', '1', 'ok', 'Rejected', '2025-07-25 16:21:49', '2025-07-25 16:23:35.107180', NULL, NULL), -(64, 19, NULL, 5, 'Disposable', 2, '/media/inventory/request/al.alim i117(05FDF93P) Request.jpg', '2', '', 'Requested', '2025-07-29 10:01:59', NULL, 4, 1), -(65, 1, NULL, 18, 'Part', 1, NULL, 'test', '', 'Approved', '2025-09-25 10:25:44', '2025-09-25 10:28:45.272396', NULL, NULL), -(66, 4, NULL, 18, 'Disposable', 2, NULL, 'test', 'test', 'Rejected', '2025-09-25 11:24:50', '2025-09-29 11:00:44.718529', NULL, NULL), -(68, 3, NULL, 5, 'Part', 3, NULL, 'test', '', 'Requested', '2025-10-01 14:49:34', NULL, 4, 5), -(69, 3, NULL, 18, 'Part', 2, NULL, 'test', '', 'Approved', '2025-10-01 15:03:39', '2025-10-01 15:04:15.007818', NULL, NULL), -(70, 4, NULL, 18, 'Disposable', 2, NULL, 'test', '', 'Requested', '2025-10-01 15:04:51', NULL, NULL, NULL), -(71, 4, NULL, 15, 'Disposable', 1, NULL, '-', '', 'Requested', '2025-10-24 09:14:01', NULL, NULL, NULL); - --- -------------------------------------------------------- - --- --- Table structure for table `rooms` --- - -CREATE TABLE `rooms` ( - `RoomId` int NOT NULL, - `RoomName` varchar(120) NOT NULL, - `LocationCode` varchar(40) DEFAULT NULL, - `Capacity` int DEFAULT NULL, - `IsActive` tinyint(1) NOT NULL DEFAULT '1' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `rooms` --- - -INSERT INTO `rooms` (`RoomId`, `RoomName`, `LocationCode`, `Capacity`, `IsActive`) VALUES -(1, 'Room1', 'Level 1', 2, 1), -(2, 'Room2', 'Level 1', 3, 1), -(6, 'Consultation Room', 'Level 1', 11, 1), -(7, 'Test Room', 'Level 5', 20, 1); - --- -------------------------------------------------------- - --- --- Table structure for table `staffsign` --- - -CREATE TABLE `staffsign` ( - `StaffSignId` int NOT NULL, - `UserId` int NOT NULL, - `ImagePath` varchar(255) DEFAULT NULL, - `UpdateDate` datetime DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- -------------------------------------------------------- - --- --- Table structure for table `states` --- - -CREATE TABLE `states` ( - `StateId` int NOT NULL, - `StateName` varchar(100) NOT NULL, - `WeekendId` int NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `states` --- - -INSERT INTO `states` (`StateId`, `StateName`, `WeekendId`) VALUES -(1, 'Johor', 2), -(2, 'Kedah', 1), -(3, 'Kelantan', 1), -(4, 'Melaka', 2), -(5, 'Negeri Sembilan', 2), -(6, 'Pahang', 2), -(7, 'Perak', 2), -(8, 'Perlis', 2), -(9, 'Pulau Pinang', 2), -(10, 'Sabah', 2), -(11, 'Sarawak', 2), -(12, 'Selangor', 2), -(13, 'Terengganu', 1), -(14, 'Kuala Lumpur', 2), -(15, 'Labuan', 2), -(16, 'Putrajaya', 2); - --- -------------------------------------------------------- - --- --- Table structure for table `stations` --- - -CREATE TABLE `stations` ( - `StationId` int NOT NULL, - `StationPicID` int NOT NULL, - `StationName` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `DepartmentId` int NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `stations` --- - -INSERT INTO `stations` (`StationId`, `StationPicID`, `StationName`, `DepartmentId`) VALUES -(14, 14, 'SUNGAI KLANG', 1), -(15, 11, 'Sungai Tekala', 4), -(16, 14, 'SUNGAI SHAH ALAM', 2), -(17, 14, 'SUNGAI KL', 2), -(20, 9, 'CA01R Kangar, Perlis', 2), -(21, 7, 'CA50S Kota Kinabalu', 2), -(22, 7, 'CA28M Bandaraya Melaka', 2), -(23, 21, 'CM01K, PULAU LANGKAWI, KEDAH', 3), -(24, 21, 'CM02M PULAU UNDAN, MELAKA', 3), -(25, 21, 'CM03N PORT DICKSON, NEGERI SEMBILAN', 3), -(26, 21, 'Marine HQ', 3), -(27, 21, 'MWQM T2', 3), -(28, 21, 'MWQM T1', 3), -(29, 21, 'Marine IS', 3), -(30, 21, 'Marine SOJ', 3), -(31, 21, 'MWQM T3', 3), -(32, 21, 'MWQM T4', 3), -(36, 15, 'MWQM T6 Test', 1), -(37, 19, 'TEST MWQM T4', 3); - --- -------------------------------------------------------- - --- --- Table structure for table `stores` --- - -CREATE TABLE `stores` ( - `Id` int NOT NULL, - `CompanyId` int NOT NULL, - `StoreName` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `stores` --- - -INSERT INTO `stores` (`Id`, `CompanyId`, `StoreName`) VALUES -(1, 1, 'IT (PI)'), -(2, 1, 'AIR (PA)'), -(3, 3, 'RIVER (AR)'), -(4, 1, 'PSTW IT (PI)'), -(5, 1, 'PSTW AIR (PA)'); - --- -------------------------------------------------------- - --- --- Table structure for table `suppliers` --- - -CREATE TABLE `suppliers` ( - `SupplierId` int NOT NULL, - `SupplierCompName` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `SupplierAddress` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `SupplierPIC` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `SupplierEmail` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, - `SupplierPhoneNo` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; - --- --- Dumping data for table `suppliers` --- - -INSERT INTO `suppliers` (`SupplierId`, `SupplierCompName`, `SupplierAddress`, `SupplierPIC`, `SupplierEmail`, `SupplierPhoneNo`) VALUES -(1, 'Axiomtek', 'Axiomtek', 'Ms Kim', 'kim@test.com', NULL), -(2, 'Oyen Garang PLT', 'Triblade Oyen', NULL, 'oyen@test.com', NULL), -(3, 'Bizz ICT', 'BIZZ ICT SOLUTIONS', NULL, 'thpang@bizzictsolutions.com.my', '016-366 9680'), -(4, 'Thermofisher ', 'Thermofisher ', NULL, 'sales@thermofishrr.com', '0177777777'), -(5, 'Mantap Sdn Bhd', 'Mantap Sdn Bhd', 'Mrs Ting Ting', 'Tingting@supp.com', NULL), -(6, 'Matrix ', 'Matrix Berhad', NULL, NULL, NULL), -(7, 'AXIOMTEK', 'NO.16 JALAN TANDANG 51/205A,SEKSYEN 51,46050 PETALING JAYA', 'kim@axiomtek.com.my', 'www@axiomtek.com.my', ' +60377731203'), -(8, 'AXIOMTEK SDN. BHD.', 'no 16 jalan tandang 51/205A,seksyen 51 46050 petaling jaya', 'kim@axiomtek.com.my', 'www@axiomtek.com.my', ' +60377731203'), -(10, 'Xylem Water Solution Pte Ltd', '6 Wan Lee Road , \n627937 Singapore', 'benjamin.chiang@xylem.com', 'benjamin.chiang@xylem.com', NULL), -(12, 'TRANSWATER API SDN. BHD.', '35, JALAN PENGACARA U1/48, KAWASAN PERINDUSTRIAN TEMASYA, 40150 SHAH ALAM, SELANGOR', 'Hasnur.Izwan@transwater.com.my', 'api@transwater.com.my', '0178711492'), -(13, 'TRANSWATER API SDN. BHD.', '35, JALAN PENGACARA U1/48, KAWASAN PERINDUSTRIAN TEMASYA, 40150 SHAH ALAM, SELANGOR', 'Hasnur.Izwan@transwater.com.my', 'api@transwater.com.my', '0178711492'), -(32, 'Hydroaxys Sdn Bhd', 'D2-1, Jalan Dutamas 2, Balakog, 43200Cheras, Selangor', 'yslee@hydroaxys.com', 'yslee@hydroaxys.com', '03-95439299'), -(33, 'Axiomtek Test', 'NO.16 JALAN TANDANG 51/205A,SEKSYEN 51,46050 PETALING JAYA', 'kim@axiomtek.com.my', 'kim@axiomtek.com.my', '+60377731203'); - --- --- Indexes for dumped tables --- - --- --- Indexes for table `aspnetroleclaims` --- -ALTER TABLE `aspnetroleclaims` - ADD PRIMARY KEY (`Id`), - ADD KEY `IX_AspNetRoleClaims_RoleId` (`RoleId`); - --- --- Indexes for table `aspnetroles` --- -ALTER TABLE `aspnetroles` - ADD PRIMARY KEY (`Id`), - ADD UNIQUE KEY `RoleNameIndex` (`NormalizedName`); - --- --- Indexes for table `aspnetuserclaims` --- -ALTER TABLE `aspnetuserclaims` - ADD PRIMARY KEY (`Id`), - ADD KEY `IX_AspNetUserClaims_UserId` (`UserId`); - --- --- Indexes for table `aspnetuserlogins` --- -ALTER TABLE `aspnetuserlogins` - ADD PRIMARY KEY (`LoginProvider`,`ProviderKey`), - ADD KEY `IX_AspNetUserLogins_UserId` (`UserId`); - --- --- Indexes for table `aspnetuserroles` --- -ALTER TABLE `aspnetuserroles` - ADD PRIMARY KEY (`UserId`,`RoleId`), - ADD KEY `IX_AspNetUserRoles_RoleId` (`RoleId`); - --- --- Indexes for table `aspnetusers` --- -ALTER TABLE `aspnetusers` - ADD PRIMARY KEY (`Id`), - ADD UNIQUE KEY `UserNameIndex` (`NormalizedUserName`), - ADD KEY `EmailIndex` (`NormalizedEmail`), - ADD KEY `IX_AspNetUsers_departmentId` (`departmentId`); - --- --- Indexes for table `aspnetusertokens` --- -ALTER TABLE `aspnetusertokens` - ADD PRIMARY KEY (`UserId`,`LoginProvider`,`Name`); - --- --- Indexes for table `companies` --- -ALTER TABLE `companies` - ADD PRIMARY KEY (`CompanyId`); - --- --- Indexes for table `departments` --- -ALTER TABLE `departments` - ADD PRIMARY KEY (`DepartmentId`), - ADD KEY `IX_Departments_CompanyId` (`CompanyId`); - --- --- Indexes for table `hrusersetting` --- -ALTER TABLE `hrusersetting` - ADD PRIMARY KEY (`HrUserSettingId`), - ADD KEY `States_ID` (`StateId`), - ADD KEY `Set_User_ID` (`UserId`), - ADD KEY `FlexiHour_ID` (`FlexiHourId`), - ADD KEY `ApprovalFlow_ID` (`ApprovalFlowId`); - --- --- Indexes for table `inventorymasters` --- -ALTER TABLE `inventorymasters` - ADD PRIMARY KEY (`StoreId`), - ADD KEY `IX_InventoryMasters_UserId` (`UserId`); - --- --- Indexes for table `itemmovements` --- -ALTER TABLE `itemmovements` - ADD PRIMARY KEY (`Id`), - ADD KEY `IX_ItemMovements_LastStation` (`LastStation`), - ADD KEY `IX_ItemMovements_LastStore` (`LastStore`), - ADD KEY `IX_ItemMovements_LastUser` (`LastUser`), - ADD KEY `IX_ItemMovements_ToStation` (`ToStation`), - ADD KEY `IX_ItemMovements_ToStore` (`ToStore`), - ADD KEY `IX_ItemMovements_ToUser` (`ToUser`); - --- --- Indexes for table `items` --- -ALTER TABLE `items` - ADD PRIMARY KEY (`ItemID`), - ADD UNIQUE KEY `IX_Items_MovementId` (`MovementId`), - ADD KEY `IX_Items_CompanyId` (`CompanyId`), - ADD KEY `IX_Items_CreatedByUserId` (`CreatedByUserId`), - ADD KEY `IX_Items_DepartmentId` (`DepartmentId`), - ADD KEY `IX_Items_ProductId` (`ProductId`); - --- --- Indexes for table `manufacturers` --- -ALTER TABLE `manufacturers` - ADD PRIMARY KEY (`ManufacturerId`); - --- --- Indexes for table `products` --- -ALTER TABLE `products` - ADD PRIMARY KEY (`ProductId`), - ADD KEY `IX_Products_ManufacturerId` (`ManufacturerId`); - --- --- Indexes for table `rates` --- -ALTER TABLE `rates` - ADD PRIMARY KEY (`RateId`), - ADD KEY `FK_UserId` (`UserId`); - --- --- Indexes for table `request` --- -ALTER TABLE `request` - ADD PRIMARY KEY (`requestID`), - ADD KEY `FK_Product ID` (`ProductId`), - ADD KEY `FK_Station ID` (`StationId`), - ADD KEY `FK_User ID` (`UserId`), - ADD KEY `IX_request_assignStoreItem` (`assignStoreItem`), - ADD KEY `IX_request_fromStoreItem` (`fromStoreItem`); - --- --- Indexes for table `rooms` --- -ALTER TABLE `rooms` - ADD PRIMARY KEY (`RoomId`), - ADD KEY `ix_rooms_name` (`RoomName`), - ADD KEY `ix_rooms_active` (`IsActive`); - --- --- Indexes for table `staffsign` --- -ALTER TABLE `staffsign` - ADD PRIMARY KEY (`StaffSignId`), - ADD KEY `Staff_Id` (`UserId`); - --- --- Indexes for table `states` --- -ALTER TABLE `states` - ADD PRIMARY KEY (`StateId`), - ADD KEY `WeekendId` (`WeekendId`); - --- --- Indexes for table `stations` --- -ALTER TABLE `stations` - ADD PRIMARY KEY (`StationId`), - ADD KEY `IX_Stations_DepartmentId` (`DepartmentId`), - ADD KEY `IX_Stations_StationPicID` (`StationPicID`); - --- --- Indexes for table `stores` --- -ALTER TABLE `stores` - ADD PRIMARY KEY (`Id`), - ADD KEY `IX_Stores_CompanyId` (`CompanyId`); - --- --- Indexes for table `suppliers` --- -ALTER TABLE `suppliers` - ADD PRIMARY KEY (`SupplierId`); - --- --- AUTO_INCREMENT for dumped tables --- - --- --- AUTO_INCREMENT for table `aspnetroleclaims` --- -ALTER TABLE `aspnetroleclaims` - MODIFY `Id` int NOT NULL AUTO_INCREMENT; - --- --- AUTO_INCREMENT for table `aspnetroles` --- -ALTER TABLE `aspnetroles` - MODIFY `Id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12; - --- --- AUTO_INCREMENT for table `aspnetuserclaims` --- -ALTER TABLE `aspnetuserclaims` - MODIFY `Id` int NOT NULL AUTO_INCREMENT; - --- --- AUTO_INCREMENT for table `aspnetusers` --- -ALTER TABLE `aspnetusers` - MODIFY `Id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=25; - --- --- AUTO_INCREMENT for table `companies` --- -ALTER TABLE `companies` - MODIFY `CompanyId` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=15; - --- --- AUTO_INCREMENT for table `departments` --- -ALTER TABLE `departments` - MODIFY `DepartmentId` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=63; - --- --- AUTO_INCREMENT for table `hrusersetting` --- -ALTER TABLE `hrusersetting` - MODIFY `HrUserSettingId` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8; - --- --- AUTO_INCREMENT for table `itemmovements` --- -ALTER TABLE `itemmovements` - MODIFY `Id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=505; - --- --- AUTO_INCREMENT for table `items` --- -ALTER TABLE `items` - MODIFY `ItemID` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=122; - --- --- AUTO_INCREMENT for table `manufacturers` --- -ALTER TABLE `manufacturers` - MODIFY `ManufacturerId` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=15; - --- --- AUTO_INCREMENT for table `products` --- -ALTER TABLE `products` - MODIFY `ProductId` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=25; - --- --- AUTO_INCREMENT for table `rates` --- -ALTER TABLE `rates` - MODIFY `RateId` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13; - --- --- AUTO_INCREMENT for table `request` --- -ALTER TABLE `request` - MODIFY `requestID` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=72; - --- --- AUTO_INCREMENT for table `rooms` --- -ALTER TABLE `rooms` - MODIFY `RoomId` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8; - --- --- AUTO_INCREMENT for table `staffsign` --- -ALTER TABLE `staffsign` - MODIFY `StaffSignId` int NOT NULL AUTO_INCREMENT; - --- --- AUTO_INCREMENT for table `states` --- -ALTER TABLE `states` - MODIFY `StateId` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=17; - --- --- AUTO_INCREMENT for table `stations` --- -ALTER TABLE `stations` - MODIFY `StationId` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=38; - --- --- AUTO_INCREMENT for table `stores` --- -ALTER TABLE `stores` - MODIFY `Id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6; - --- --- AUTO_INCREMENT for table `suppliers` --- -ALTER TABLE `suppliers` - MODIFY `SupplierId` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=34; - --- --- Constraints for dumped tables --- - --- --- Constraints for table `aspnetroleclaims` --- -ALTER TABLE `aspnetroleclaims` - ADD CONSTRAINT `FK_AspNetRoleClaims_AspNetRoles_RoleId` FOREIGN KEY (`RoleId`) REFERENCES `aspnetroles` (`Id`) ON DELETE CASCADE; - --- --- Constraints for table `aspnetuserclaims` --- -ALTER TABLE `aspnetuserclaims` - ADD CONSTRAINT `FK_AspNetUserClaims_AspNetUsers_UserId` FOREIGN KEY (`UserId`) REFERENCES `aspnetusers` (`Id`) ON DELETE CASCADE; - --- --- Constraints for table `aspnetuserlogins` --- -ALTER TABLE `aspnetuserlogins` - ADD CONSTRAINT `FK_AspNetUserLogins_AspNetUsers_UserId` FOREIGN KEY (`UserId`) REFERENCES `aspnetusers` (`Id`) ON DELETE CASCADE; - --- --- Constraints for table `aspnetuserroles` --- -ALTER TABLE `aspnetuserroles` - ADD CONSTRAINT `FK_AspNetUserRoles_AspNetRoles_RoleId` FOREIGN KEY (`RoleId`) REFERENCES `aspnetroles` (`Id`) ON DELETE CASCADE, - ADD CONSTRAINT `FK_AspNetUserRoles_AspNetUsers_UserId` FOREIGN KEY (`UserId`) REFERENCES `aspnetusers` (`Id`) ON DELETE CASCADE; - --- --- Constraints for table `aspnetusers` --- -ALTER TABLE `aspnetusers` - ADD CONSTRAINT `FK_AspNetUsers_Departments_departmentId` FOREIGN KEY (`departmentId`) REFERENCES `departments` (`DepartmentId`); - --- --- Constraints for table `aspnetusertokens` --- -ALTER TABLE `aspnetusertokens` - ADD CONSTRAINT `FK_AspNetUserTokens_AspNetUsers_UserId` FOREIGN KEY (`UserId`) REFERENCES `aspnetusers` (`Id`) ON DELETE CASCADE; - --- --- Constraints for table `departments` --- -ALTER TABLE `departments` - ADD CONSTRAINT `FK_Departments_Companies_CompanyId` FOREIGN KEY (`CompanyId`) REFERENCES `companies` (`CompanyId`) ON DELETE CASCADE; - --- --- Constraints for table `hrusersetting` --- -ALTER TABLE `hrusersetting` - ADD CONSTRAINT `ApprovalFlow_ID` FOREIGN KEY (`ApprovalFlowId`) REFERENCES `approvalflow` (`ApprovalFlowId`) ON DELETE RESTRICT ON UPDATE RESTRICT, - ADD CONSTRAINT `FlexiHour_ID` FOREIGN KEY (`FlexiHourId`) REFERENCES `flexihour` (`FlexiHourId`) ON DELETE RESTRICT ON UPDATE RESTRICT, - ADD CONSTRAINT `Set_User_ID` FOREIGN KEY (`UserId`) REFERENCES `aspnetusers` (`Id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - ADD CONSTRAINT `States_ID` FOREIGN KEY (`StateId`) REFERENCES `states` (`StateId`) ON DELETE RESTRICT ON UPDATE RESTRICT; - --- --- Constraints for table `inventorymasters` --- -ALTER TABLE `inventorymasters` - ADD CONSTRAINT `FK_InventoryMasters_AspNetUsers_UserId` FOREIGN KEY (`UserId`) REFERENCES `aspnetusers` (`Id`) ON DELETE CASCADE, - ADD CONSTRAINT `FK_InventoryMasters_Stores_StoreId` FOREIGN KEY (`StoreId`) REFERENCES `stores` (`Id`) ON DELETE CASCADE; - --- --- Constraints for table `itemmovements` --- -ALTER TABLE `itemmovements` - ADD CONSTRAINT `FK_ItemMovements_AspNetUsers_LastUser` FOREIGN KEY (`LastUser`) REFERENCES `aspnetusers` (`Id`), - ADD CONSTRAINT `FK_ItemMovements_AspNetUsers_ToUser` FOREIGN KEY (`ToUser`) REFERENCES `aspnetusers` (`Id`), - ADD CONSTRAINT `FK_ItemMovements_Stations_LastStation` FOREIGN KEY (`LastStation`) REFERENCES `stations` (`StationId`), - ADD CONSTRAINT `FK_ItemMovements_Stations_ToStation` FOREIGN KEY (`ToStation`) REFERENCES `stations` (`StationId`), - ADD CONSTRAINT `FK_ItemMovements_Stores_LastStore` FOREIGN KEY (`LastStore`) REFERENCES `stores` (`Id`), - ADD CONSTRAINT `FK_ItemMovements_Stores_ToStore` FOREIGN KEY (`ToStore`) REFERENCES `stores` (`Id`); - --- --- Constraints for table `items` --- -ALTER TABLE `items` - ADD CONSTRAINT `FK_Items_AspNetUsers_CreatedByUserId` FOREIGN KEY (`CreatedByUserId`) REFERENCES `aspnetusers` (`Id`) ON DELETE CASCADE, - ADD CONSTRAINT `FK_Items_Companies_CompanyId` FOREIGN KEY (`CompanyId`) REFERENCES `companies` (`CompanyId`) ON DELETE CASCADE, - ADD CONSTRAINT `FK_Items_Departments_DepartmentId` FOREIGN KEY (`DepartmentId`) REFERENCES `departments` (`DepartmentId`) ON DELETE CASCADE, - ADD CONSTRAINT `FK_Items_ItemMovements_MovementId` FOREIGN KEY (`MovementId`) REFERENCES `itemmovements` (`Id`), - ADD CONSTRAINT `FK_Items_Products_ProductId` FOREIGN KEY (`ProductId`) REFERENCES `products` (`ProductId`) ON DELETE CASCADE; - --- --- Constraints for table `products` --- -ALTER TABLE `products` - ADD CONSTRAINT `FK_Products_Manufacturers_ManufacturerId` FOREIGN KEY (`ManufacturerId`) REFERENCES `manufacturers` (`ManufacturerId`) ON DELETE CASCADE; - --- --- Constraints for table `rates` --- -ALTER TABLE `rates` - ADD CONSTRAINT `FK_UserId` FOREIGN KEY (`UserId`) REFERENCES `aspnetusers` (`Id`) ON DELETE RESTRICT ON UPDATE RESTRICT; - --- --- Constraints for table `request` --- -ALTER TABLE `request` - ADD CONSTRAINT `FK_Product ID` FOREIGN KEY (`ProductId`) REFERENCES `products` (`ProductId`) ON DELETE RESTRICT ON UPDATE RESTRICT, - ADD CONSTRAINT `FK_request_Stores_assignStoreItem` FOREIGN KEY (`assignStoreItem`) REFERENCES `stores` (`Id`), - ADD CONSTRAINT `FK_request_Stores_fromStoreItem` FOREIGN KEY (`fromStoreItem`) REFERENCES `stores` (`Id`), - ADD CONSTRAINT `FK_Station ID` FOREIGN KEY (`StationId`) REFERENCES `stations` (`StationId`) ON DELETE RESTRICT ON UPDATE RESTRICT, - ADD CONSTRAINT `FK_User ID` FOREIGN KEY (`UserId`) REFERENCES `aspnetusers` (`Id`) ON DELETE RESTRICT ON UPDATE RESTRICT; - --- --- Constraints for table `staffsign` --- -ALTER TABLE `staffsign` - ADD CONSTRAINT `Staff_Id` FOREIGN KEY (`UserId`) REFERENCES `aspnetusers` (`Id`) ON DELETE RESTRICT ON UPDATE RESTRICT; - --- --- Constraints for table `states` --- -ALTER TABLE `states` - ADD CONSTRAINT `WeekendId` FOREIGN KEY (`WeekendId`) REFERENCES `weekends` (`WeekendId`) ON DELETE RESTRICT ON UPDATE RESTRICT; - --- --- Constraints for table `stations` --- -ALTER TABLE `stations` - ADD CONSTRAINT `FK_Stations_AspNetUsers_StationPicID` FOREIGN KEY (`StationPicID`) REFERENCES `aspnetusers` (`Id`) ON DELETE CASCADE, - ADD CONSTRAINT `FK_Stations_Departments_DepartmentId` FOREIGN KEY (`DepartmentId`) REFERENCES `departments` (`DepartmentId`) ON DELETE CASCADE; - --- --- Constraints for table `stores` --- -ALTER TABLE `stores` - ADD CONSTRAINT `FK_Stores_Companies_CompanyId` FOREIGN KEY (`CompanyId`) REFERENCES `companies` (`CompanyId`) ON DELETE CASCADE; -COMMIT; - -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/lib/screens/admin/item/item.dart b/lib/screens/admin/item/item.dart index 4f1a4a7..74ca07f 100644 --- a/lib/screens/admin/item/item.dart +++ b/lib/screens/admin/item/item.dart @@ -6,6 +6,9 @@ import 'package:inventory_system/screens/bottom_nav_bar.dart'; import 'package:inventory_system/screens/nav_bar.dart'; import 'package:inventory_system/screens/title_bar.dart'; import 'package:qr_flutter/qr_flutter.dart'; +import 'package:pdf/pdf.dart'; +import 'package:pdf/widgets.dart' as pw; +import 'package:printing/printing.dart'; class ItemScreen extends StatefulWidget { const ItemScreen({super.key}); @@ -126,6 +129,63 @@ class _ItemScreenState extends State { ); } + Future _printQrInfo(Map item) async { + final doc = pw.Document(); + + doc.addPage( + pw.Page( + pageFormat: PdfPageFormat.a4, + build: (pw.Context context) { + return pw.Column( + mainAxisSize: pw.MainAxisSize.min, + children: [ + pw.Row( + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + pw.Column( + children: [ + pw.BarcodeWidget( + barcode: pw.Barcode.qrCode(), + data: item['uniqueID'] ?? '', + width: 100, + height: 100, + ), + pw.SizedBox(height: 8), + pw.Text( + item['uniqueID'] ?? '', + style: const pw.TextStyle(fontSize: 12), // monospace not strictly required for PDF unless font loaded + ), + ], + ), + pw.SizedBox(width: 24), + pw.Expanded( + child: pw.Column( + crossAxisAlignment: pw.CrossAxisAlignment.start, + children: [ + pw.Text(item['currentStore'] ?? 'N/A', style: const pw.TextStyle(fontSize: 16)), + pw.SizedBox(height: 8), + pw.Text(item['productShortName'] ?? item['productName'] ?? '', style: const pw.TextStyle(fontSize: 16)), + pw.SizedBox(height: 8), + pw.Text(item['serialNumber'] ?? '', style: const pw.TextStyle(fontSize: 16)), + pw.SizedBox(height: 8), + pw.Text(item['partNumber'] ?? '', style: const pw.TextStyle(fontSize: 16)), + ], + ), + ), + ], + ), + ], + ); + }, + ), + ); + + await Printing.layoutPdf( + onLayout: (PdfPageFormat format) async => doc.save(), + name: '${item['uniqueID']}_QR.pdf', + ); + } + void _showPrintDialog(Map item) { showDialog( context: context, @@ -177,7 +237,7 @@ class _ItemScreenState extends State { SizedBox( width: double.infinity, child: ElevatedButton( - onPressed: () => Navigator.pop(context), + onPressed: () => _printQrInfo(item), style: ElevatedButton.styleFrom( backgroundColor: Colors.grey.shade200, foregroundColor: Colors.black87, diff --git a/lib/screens/admin/item_movement/item_movement_all.dart b/lib/screens/admin/item_movement/item_movement_all.dart index 0ce8154..e843950 100644 --- a/lib/screens/admin/item_movement/item_movement_all.dart +++ b/lib/screens/admin/item_movement/item_movement_all.dart @@ -430,9 +430,9 @@ class _ItemMovementAllScreenState extends State tiles = [ _buildDetailItem('Action', item['action'] ?? 'N/A'), _buildDetailItem('Product Category', item['productCategory'] ?? 'N/A'), - _buildDetailItem('Status', item['latestStatus'] ?? 'N/A'), + _buildDetailItem('Start Status', item['latestStatus'] ?? item['toOther'] ?? 'N/A'), _buildDetailItem('From Station', item['lastStationName'] ?? 'N/A'), - _buildDetailItem('From Store', item['lastStoreName'] ?? 'N/A'), + _buildDetailItem('From Store', item['lastStoreName'] ?? item['toStoreName'] ?? 'N/A'), _buildDetailItem('Quantity', item['quantity']?.toString() ?? 'N/A'), _buildDetailItem('Last User', item['lastUserName'] ?? 'N/A'), _buildDetailItem('From User', item['toUserName'] ?? 'N/A'), @@ -460,7 +460,7 @@ class _ItemMovementAllScreenState extends State _buildDetailItem('From User', item['toUserName'] ?? 'N/A'), _buildDetailItem('From Store', item['lastStoreName'] ?? 'N/A'), _buildDetailItem('To Store', item['toStoreName'] ?? 'N/A'), - _buildDetailItem('Latest Status', item['latestStatus'] ?? 'N/A'), + _buildDetailItem('Latest Status', item['latestStatus'] ?? item['toOther'] ?? 'N/A'), ]; break; } @@ -488,7 +488,7 @@ class _ItemMovementAllScreenState extends State if (note != null && note.toString().trim().isNotEmpty) ...[ const SizedBox(height: 12), Text( - 'Note / Remark', + 'Remark', style: TextStyle( fontSize: 12, color: Colors.grey.shade600, @@ -503,6 +503,7 @@ class _ItemMovementAllScreenState extends State ), ), ], + _buildDocumentTile(item['consignmentNote']), ], ); }, @@ -510,6 +511,86 @@ class _ItemMovementAllScreenState extends State ); } + Widget _buildDocumentTile(String? docPath) { + final hasDoc = docPath != null && docPath.isNotEmpty; + return Padding( + padding: const EdgeInsets.only(top: 12.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Document/Picture', + style: TextStyle( + fontSize: 12, + color: Colors.grey.shade600, + fontWeight: FontWeight.w500, + ), + ), + const SizedBox(height: 4), + hasDoc + ? InkWell( + onTap: () => _showDocument(docPath), + child: Text( + 'Show', + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + color: Colors.blue.shade700, + decoration: TextDecoration.underline, + ), + ), + ) + : const Text( + 'No Document', + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + color: Colors.black87, + ), + ), + ], + ), + ); + } + + void _showDocument(String docPath) { + showDialog( + context: context, + builder: (ctx) => Dialog( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + AppBar( + title: const Text('Document'), + leading: IconButton( + icon: const Icon(Icons.close), + onPressed: () => Navigator.pop(ctx), + ), + elevation: 0, + backgroundColor: Colors.transparent, + foregroundColor: Colors.black, + ), + InteractiveViewer( + child: Image.network( + ApiService.baseUrl + docPath, + fit: BoxFit.contain, + errorBuilder: (ctx, err, stack) => const Padding( + padding: EdgeInsets.all(20.0), + child: Column( + children: [ + Icon(Icons.broken_image, size: 50, color: Colors.grey), + Text('Failed to load image'), + ], + ), + ), + ), + ), + ], + ), + ), + ); + } + Widget _buildDetailItem(String label, String value) { return Column( crossAxisAlignment: CrossAxisAlignment.start, diff --git a/lib/screens/admin/item_movement/item_movement_item.dart b/lib/screens/admin/item_movement/item_movement_item.dart index 76edee0..3cc7b87 100644 --- a/lib/screens/admin/item_movement/item_movement_item.dart +++ b/lib/screens/admin/item_movement/item_movement_item.dart @@ -261,7 +261,7 @@ class _ItemMovementItemScreenState extends State { ), const SizedBox(height: 6), Text( - 'Status: ${event['latestStatus'] ?? 'N/A'}', + 'Status: ${event['latestStatus'] ?? event['toOther'] ?? 'N/A'}', style: const TextStyle(fontWeight: FontWeight.w600, color: Colors.black87), ), ], @@ -394,10 +394,37 @@ class _ItemMovementItemScreenState extends State { } Widget _buildMovementDetailCard(Map movement) { - final statusColor = _statusColor(movement['action'] ?? ''); + // --- Web App Logic for Labels and Colors --- + String toOther = movement['toOther'] ?? ''; + String action = movement['action'] ?? ''; + bool isToStation = movement['toStation'] != null; final movementId = movement['id'].toString(); final bool isInnerExpanded = _expandedMovements.contains(movementId); + // 1. Status Heading + String statusHeading = 'Assign'; + Color statusHeadingColor = Colors.cyan; // Default text-info + + if (toOther == 'Return') { + statusHeading = 'Return'; + statusHeadingColor = Colors.orange; // text-warning + } else if (toOther == 'On Delivery') { + statusHeading = 'Receive'; + statusHeadingColor = Colors.blue; // text-primary + } else if (isToStation) { + statusHeading = 'Change'; + statusHeadingColor = Colors.green; // text-success + } else if (toOther == 'Faulty' || toOther == 'Calibration' || toOther == 'Repair') { + statusHeading = toOther; + statusHeadingColor = Colors.grey.shade600; // text-numb (usually greyish) + } else if (action == 'Register') { + statusHeading = 'Register'; + statusHeadingColor = Colors.purple; // text-weird (arbitrary distinct color) + } else if (action == 'Assign' && !isToStation) { + statusHeading = 'Assign'; + statusHeadingColor = Colors.cyan; // text-info + } + return Container( padding: const EdgeInsets.all(12), decoration: BoxDecoration( @@ -413,15 +440,15 @@ class _ItemMovementItemScreenState extends State { children: [ Expanded( child: Text( - movement['action'] ?? '-', + statusHeading, style: TextStyle( fontSize: 18, fontWeight: FontWeight.bold, - color: statusColor, + color: statusHeadingColor, ), ), ), - _chip(movement['latestStatus'] ?? 'N/A', Colors.green.shade700), + _chip(movement['latestStatus'] ?? movement['toOther'] ?? 'N/A', Colors.green.shade700), const SizedBox(width: 8), _outlinedButton( isInnerExpanded ? 'Hide Details' : 'Show Details', @@ -451,9 +478,9 @@ class _ItemMovementItemScreenState extends State { const SizedBox(height: 12), Row( children: [ - Expanded(child: _actionButton('Remark', isPrimary: true)), + Expanded(child: _actionButton('Remark', isPrimary: true, onTap: () => _showRemark(movement['remark']))), const SizedBox(width: 12), - Expanded(child: _actionButton('Consignment Note')), + Expanded(child: _actionButton('Consignment Note', isPrimary: true, color: Colors.teal.shade600, onTap: () => _showDocument(movement['consignmentNote']))), ], ), ], @@ -465,6 +492,66 @@ class _ItemMovementItemScreenState extends State { ); } + void _showRemark(String? remark) { + showDialog( + context: context, + builder: (context) => AlertDialog( + title: const Text('Remark'), + content: Text(remark?.isNotEmpty == true ? remark! : 'No remark available.'), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: const Text('Close'), + ), + ], + ), + ); + } + + void _showDocument(String? docPath) { + if (docPath == null || docPath.isEmpty) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('No document available')), + ); + return; + } + showDialog( + context: context, + builder: (ctx) => Dialog( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + AppBar( + title: const Text('Document'), + leading: IconButton( + icon: const Icon(Icons.close), + onPressed: () => Navigator.pop(ctx), + ), + elevation: 0, + backgroundColor: Colors.transparent, + foregroundColor: Colors.black, + ), + InteractiveViewer( + child: Image.network( + ApiService.baseUrl + docPath, + fit: BoxFit.contain, + errorBuilder: (ctx, err, stack) => const Padding( + padding: EdgeInsets.all(20.0), + child: Column( + children: [ + Icon(Icons.broken_image, size: 50, color: Colors.grey), + Text('Failed to load image'), + ], + ), + ), + ), + ), + ], + ), + ), + ); + } + Widget _buildMovementFlow(Map movement) { return Container( padding: const EdgeInsets.all(12), @@ -620,12 +707,12 @@ class _ItemMovementItemScreenState extends State { ); } - Widget _actionButton(String text, {bool isPrimary = false}) { + Widget _actionButton(String text, {bool isPrimary = false, Color? color, VoidCallback? onTap}) { return ElevatedButton( - onPressed: () {}, + onPressed: onTap, style: isPrimary ? ElevatedButton.styleFrom( - backgroundColor: Colors.blue.shade600, + backgroundColor: color ?? Colors.blue.shade600, foregroundColor: Colors.white, elevation: 0, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), diff --git a/lib/screens/admin/item_movement/item_movement_station.dart b/lib/screens/admin/item_movement/item_movement_station.dart index 047bcf2..bce9fed 100644 --- a/lib/screens/admin/item_movement/item_movement_station.dart +++ b/lib/screens/admin/item_movement/item_movement_station.dart @@ -257,10 +257,11 @@ class _ItemMovementStationScreenState extends State { border: Border(top: BorderSide(color: Colors.grey.shade300)), ), child: DataTable( - columnSpacing: 20, + columnSpacing: 10, + horizontalMargin: 10, headingRowHeight: 40, dataRowMinHeight: 48, - dataRowMaxHeight: 56, + dataRowMaxHeight: 80, headingTextStyle: const TextStyle( fontWeight: FontWeight.bold, color: Colors.black87, @@ -278,8 +279,17 @@ class _ItemMovementStationScreenState extends State { return DataRow( cells: [ DataCell(Text(item['code']!)), - DataCell(Text(item['description']!)), - DataCell(Text(formattedDate)), + DataCell( + ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 180), + child: Text( + item['description']!, + softWrap: true, + style: const TextStyle(fontSize: 12), + ), + ), + ), + DataCell(Text(formattedDate, style: const TextStyle(fontSize: 12))), ], ); }).toList(), diff --git a/lib/screens/login_screen.dart b/lib/screens/login_screen.dart index f94d100..a6c491b 100644 --- a/lib/screens/login_screen.dart +++ b/lib/screens/login_screen.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; -import 'package:inventory_system/services/api_service.dart'; // 1. Import ApiService +import 'package:inventory_system/services/api_service.dart'; import 'package:inventory_system/services/auth_service.dart'; import 'package:inventory_system/screens/admin/home_screen/home_screen.dart'; import 'package:inventory_system/screens/user/home_screen/home_screen_user.dart'; import 'package:inventory_system/routes/slide_route.dart'; -import 'package:inventory_system/services/session_manager.dart'; +import 'package:inventory_system/services/session_manager.dart'; //To set the server URL class LoginScreen extends StatefulWidget { const LoginScreen({super.key}); @@ -70,7 +70,7 @@ class _LoginScreenState extends State { } } - // 2. ADD THIS METHOD to show the URL settings dialog + // To show the URL settings dialog void _showUrlDialog(BuildContext context) { final TextEditingController urlController = TextEditingController(); urlController.text = ApiService.baseUrl; // Set current URL @@ -119,9 +119,8 @@ class _LoginScreenState extends State { @override Widget build(BuildContext context) { return Scaffold( - body: Stack( // 3. Use a Stack to overlay the settings button + body: Stack( // Use a Stack to overlay the settings button children: [ - // This is your existing UI Container( width: double.infinity, height: double.infinity, diff --git a/lib/screens/nav_bar.dart b/lib/screens/nav_bar.dart index 47c2d8a..7dc9d19 100644 --- a/lib/screens/nav_bar.dart +++ b/lib/screens/nav_bar.dart @@ -40,13 +40,13 @@ class NavBar extends StatelessWidget { child: Builder( builder: (context) { final currentUser = SessionManager.instance.currentUser; - final String displayName = currentUser?['fullName'] ?? 'Not Logged In'; + final String displayName = currentUser?['fullName'] ?? 'Not Logged In'; //Display logged in user final bool isSuperAdmin = currentUser?['isSuperAdmin'] ?? false; final bool isInventoryMaster = currentUser?['isInventoryMaster'] ?? false; String userRole = 'User'; - if (isSuperAdmin) { + if (isSuperAdmin) { //To determine and display role of user userRole = 'Administrator'; } else if (isInventoryMaster) { userRole = 'Inventory Master'; @@ -97,12 +97,12 @@ class NavBar extends StatelessWidget { else ..._buildUserListTiles(context), const Divider(), - ListTile( - leading: const Icon(Icons.settings), - title: const Text('Settings'), - selected: selectedScreen == AppScreen.settings, - onTap: () {}, - ), + // ListTile( + // leading: const Icon(Icons.settings), + // title: const Text('Settings'), + // selected: selectedScreen == AppScreen.settings, + // onTap: () {}, + // ), ListTile( leading: const Icon(Icons.logout), title: const Text('Logout'), @@ -116,6 +116,7 @@ class NavBar extends StatelessWidget { ); } + // Admin/Inventory Master Navigation Bar List _buildAdminListTiles(BuildContext context) { return [ ListTile( @@ -209,6 +210,7 @@ class NavBar extends StatelessWidget { ]; } + // User Nav Bar List _buildUserListTiles(BuildContext context) { return [ ListTile( diff --git a/lib/screens/splash_screen.dart b/lib/screens/splash_screen.dart index 5f25c4a..ecb8658 100644 --- a/lib/screens/splash_screen.dart +++ b/lib/screens/splash_screen.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; import 'dart:async'; class SplashScreen extends StatefulWidget { @@ -97,7 +98,7 @@ class _SplashScreenState extends State with SingleTickerProviderSt child: Text( 'INVENTORY\nSYSTEM', textAlign: TextAlign.center, - style: TextStyle( + style: GoogleFonts.roboto( fontSize: 36, fontWeight: FontWeight.w900, letterSpacing: 4, diff --git a/lib/screens/user/item_movement/item_movement_all_user.dart b/lib/screens/user/item_movement/item_movement_all_user.dart index f042094..ccbd7b4 100644 --- a/lib/screens/user/item_movement/item_movement_all_user.dart +++ b/lib/screens/user/item_movement/item_movement_all_user.dart @@ -456,9 +456,9 @@ class _ItemMovementAllUserScreenState extends State tiles = [ _buildDetailItem('Action', item['action'] ?? 'N/A'), _buildDetailItem('Product Category', item['productCategory'] ?? 'N/A'), // Use productCategory - _buildDetailItem('Status', item['latestStatus'] ?? 'N/A'), // Use latestStatus + _buildDetailItem('Start Status', item['latestStatus'] ?? item['toOther'] ?? 'N/A'), // Use latestStatus _buildDetailItem('From Station', item['lastStationName'] ?? 'N/A'), - _buildDetailItem('From Store', item['lastStoreName'] ?? 'N/A'), + _buildDetailItem('From Store', item['lastStoreName'] ?? item['toStoreName'] ?? 'N/A'), _buildDetailItem('Quantity', item['quantity']?.toString() ?? 'N/A'), _buildDetailItem('From User', item['lastUserName'] ?? 'N/A'), _buildDetailItem('To User', item['toUserName'] ?? 'N/A'), @@ -485,7 +485,7 @@ class _ItemMovementAllUserScreenState extends State _buildDetailItem('To User', item['toUserName'] ?? 'N/A'), _buildDetailItem('From Store', item['lastStoreName'] ?? 'N/A'), _buildDetailItem('To Store', item['toStoreName'] ?? 'N/A'), - _buildDetailItem('Latest Status', item['latestStatus'] ?? 'N/A'), + _buildDetailItem('Latest Status', item['latestStatus'] ?? item['toOther'] ?? 'N/A'), ]; break; } @@ -528,6 +528,7 @@ class _ItemMovementAllUserScreenState extends State ), ), ], + _buildDocumentTile(item['consignmentNote']), ], ); }, @@ -535,6 +536,86 @@ class _ItemMovementAllUserScreenState extends State ); } + Widget _buildDocumentTile(String? docPath) { + final hasDoc = docPath != null && docPath.isNotEmpty; + return Padding( + padding: const EdgeInsets.only(top: 12.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Document/Picture', + style: TextStyle( + fontSize: 12, + color: Colors.grey.shade600, + fontWeight: FontWeight.w500, + ), + ), + const SizedBox(height: 4), + hasDoc + ? InkWell( + onTap: () => _showDocument(docPath), + child: Text( + 'Show', + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + color: Colors.blue.shade700, + decoration: TextDecoration.underline, + ), + ), + ) + : const Text( + 'No Document', + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + color: Colors.black87, + ), + ), + ], + ), + ); + } + + void _showDocument(String docPath) { + showDialog( + context: context, + builder: (ctx) => Dialog( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + AppBar( + title: const Text('Document'), + leading: IconButton( + icon: const Icon(Icons.close), + onPressed: () => Navigator.pop(ctx), + ), + elevation: 0, + backgroundColor: Colors.transparent, + foregroundColor: Colors.black, + ), + InteractiveViewer( + child: Image.network( + ApiService.baseUrl + docPath, + fit: BoxFit.contain, + errorBuilder: (ctx, err, stack) => const Padding( + padding: EdgeInsets.all(20.0), + child: Column( + children: [ + Icon(Icons.broken_image, size: 50, color: Colors.grey), + Text('Failed to load image'), + ], + ), + ), + ), + ), + ], + ), + ), + ); + } + /// A helper widget to display a label and its value. Widget _buildDetailItem(String label, String value) { return Column( diff --git a/lib/screens/user/item_movement/item_movement_item_user.dart b/lib/screens/user/item_movement/item_movement_item_user.dart index 20b33f3..54a9334 100644 --- a/lib/screens/user/item_movement/item_movement_item_user.dart +++ b/lib/screens/user/item_movement/item_movement_item_user.dart @@ -402,21 +402,26 @@ class _ItemMovementItemUserScreenState extends State // 1. Status Heading String statusHeading = 'Assign'; - Color statusHeadingColor = Colors.blue; + Color statusHeadingColor = Colors.cyan; // Default text-info if (toOther == 'Return') { statusHeading = 'Return'; - statusHeadingColor = Colors.orange; // Web: text-warning + statusHeadingColor = Colors.orange; // text-warning } else if (toOther == 'On Delivery') { statusHeading = 'Receive'; - statusHeadingColor = Colors.blue; // Web: text-primary + statusHeadingColor = Colors.blue; // text-primary } else if (isToStation) { statusHeading = 'Change'; - statusHeadingColor = Colors.green; // Web: text-success - } else { - // Default 'Assign' (text-info in web, usually light blue/cyan) - statusHeading = 'Assign'; - statusHeadingColor = Colors.cyan; + statusHeadingColor = Colors.green; // text-success + } else if (toOther == 'Faulty' || toOther == 'Calibration' || toOther == 'Repair') { + statusHeading = toOther; + statusHeadingColor = Colors.grey.shade600; // text-numb + } else if (action == 'Register') { + statusHeading = 'Register'; + statusHeadingColor = Colors.purple; // text-weird + } else if (action == 'Assign' && !isToStation) { + statusHeading = 'Assign'; + statusHeadingColor = Colors.cyan; // text-info } // 2. Completion Status @@ -509,22 +514,82 @@ class _ItemMovementItemUserScreenState extends State const SizedBox(height: 16), _buildMovementFlow(movement), const SizedBox(height: 12), - Row( - children: [ - Expanded(child: _actionButton('Remark', isPrimary: true)), - const SizedBox(width: 12), - Expanded(child: _actionButton('Consignment Note')), - ], - ), - ], - ) + Row( + children: [ + Expanded(child: _actionButton('Remark', isPrimary: true, onTap: () => _showRemark(movement['remark']))), + const SizedBox(width: 12), + Expanded(child: _actionButton('Consignment Note', isPrimary: true, color: Colors.teal.shade600, onTap: () => _showDocument(movement['consignmentNote']))), + ], + ), + ], + ) : const SizedBox.shrink(), ), ], ), ); } - + + void _showRemark(String? remark) { + showDialog( + context: context, + builder: (context) => AlertDialog( + title: const Text('Remark'), + content: Text(remark?.isNotEmpty == true ? remark! : 'No remark available.'), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: const Text('Close'), + ), + ], + ), + ); + } + + void _showDocument(String? docPath) { + if (docPath == null || docPath.isEmpty) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('No document available')), + ); + return; + } + showDialog( + context: context, + builder: (ctx) => Dialog( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + AppBar( + title: const Text('Document'), + leading: IconButton( + icon: const Icon(Icons.close), + onPressed: () => Navigator.pop(ctx), + ), + elevation: 0, + backgroundColor: Colors.transparent, + foregroundColor: Colors.black, + ), + InteractiveViewer( + child: Image.network( + ApiService.baseUrl + docPath, + fit: BoxFit.contain, + errorBuilder: (ctx, err, stack) => const Padding( + padding: EdgeInsets.all(20.0), + child: Column( + children: [ + Icon(Icons.broken_image, size: 50, color: Colors.grey), + Text('Failed to load image'), + ], + ), + ), + ), + ), + ], + ), + ), + ); + } + String _formatDate(String? dateStr) { if (dateStr == null || dateStr.isEmpty) return ''; try { @@ -696,12 +761,12 @@ class _ItemMovementItemUserScreenState extends State ); } - Widget _actionButton(String text, {bool isPrimary = false}) { + Widget _actionButton(String text, {bool isPrimary = false, Color? color, VoidCallback? onTap}) { return ElevatedButton( - onPressed: () {}, + onPressed: onTap, style: isPrimary ? ElevatedButton.styleFrom( - backgroundColor: Colors.blue.shade600, + backgroundColor: color ?? Colors.blue.shade600, foregroundColor: Colors.white, elevation: 0, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), diff --git a/lib/screens/user/item_movement/item_movement_station_user.dart b/lib/screens/user/item_movement/item_movement_station_user.dart index ac85a3d..f5326a5 100644 --- a/lib/screens/user/item_movement/item_movement_station_user.dart +++ b/lib/screens/user/item_movement/item_movement_station_user.dart @@ -527,7 +527,13 @@ class _ItemMovementStationUserScreenState extends State Column(children: [Icon(icon, size: 28, color: Colors.blueGrey), const SizedBox(height: 4), Text(label, style: const TextStyle(fontWeight: FontWeight.bold))]); - Widget _kvGrid(String l1, String? v1, String l2, String? v2) => Row(children: [Expanded(child: _kv(l1, v1)), Expanded(child: _kv(l2, v2))]); + Widget _kvGrid(String l1, String? v1, String l2, String? v2) => Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded(flex: 1, child: _kv(l1, v1)), + Expanded(flex: 1, child: _kv(l2, v2)) + ], + ); Widget _kv(String label, String? value) => Padding(padding: const EdgeInsets.symmetric(vertical: 4.0), child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [Text(label, style: TextStyle(fontSize: 12, color: Colors.grey.shade600)), const SizedBox(height: 2), Text(value ?? '-', style: const TextStyle(fontSize: 13, fontWeight: FontWeight.w600))])); diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 64a0ece..42b1fe4 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -7,9 +7,13 @@ #include "generated_plugin_registrant.h" #include +#include void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); file_selector_plugin_register_with_registrar(file_selector_linux_registrar); + g_autoptr(FlPluginRegistrar) printing_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "PrintingPlugin"); + printing_plugin_register_with_registrar(printing_registrar); } diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 2db3c22..03a2788 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -4,6 +4,7 @@ list(APPEND FLUTTER_PLUGIN_LIST file_selector_linux + printing ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index b488579..69402ec 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -8,11 +8,15 @@ import Foundation import file_picker import file_selector_macos import mobile_scanner +import path_provider_foundation +import printing import shared_preferences_foundation func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) MobileScannerPlugin.register(with: registry.registrar(forPlugin: "MobileScannerPlugin")) + PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) + PrintingPlugin.register(with: registry.registrar(forPlugin: "PrintingPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index bee5d9a..f15d74f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,6 +1,14 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + archive: + dependency: transitive + description: + name: archive + sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd" + url: "https://pub.dev" + source: hosted + version: "4.0.7" args: dependency: transitive description: @@ -17,6 +25,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.13.0" + barcode: + dependency: transitive + description: + name: barcode + sha256: "7b6729c37e3b7f34233e2318d866e8c48ddb46c1f7ad01ff7bb2a8de1da2b9f4" + url: "https://pub.dev" + source: hosted + version: "2.2.9" + bidi: + dependency: transitive + description: + name: bidi + sha256: "77f475165e94b261745cf1032c751e2032b8ed92ccb2bf5716036db79320637d" + url: "https://pub.dev" + source: hosted + version: "2.0.13" boolean_selector: dependency: transitive description: @@ -57,6 +81,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.3.5" + crypto: + dependency: transitive + description: + name: crypto + sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf + url: "https://pub.dev" + source: hosted + version: "3.0.7" csslib: dependency: transitive description: @@ -184,6 +216,14 @@ packages: description: flutter source: sdk version: "0.0.0" + google_fonts: + dependency: "direct main" + description: + name: google_fonts + sha256: ba03d03bcaa2f6cb7bd920e3b5027181db75ab524f8891c8bc3aa603885b8055 + url: "https://pub.dev" + source: hosted + version: "6.3.3" html: dependency: "direct main" description: @@ -208,6 +248,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.2" + image: + dependency: transitive + description: + name: image + sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928" + url: "https://pub.dev" + source: hosted + version: "4.5.4" image_picker: dependency: "direct main" description: @@ -360,6 +408,38 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.1" + path_parsing: + dependency: transitive + description: + name: path_parsing + sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + path_provider: + dependency: transitive + description: + name: path_provider + sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" + url: "https://pub.dev" + source: hosted + version: "2.1.5" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + sha256: f2c65e21139ce2c3dad46922be8272bb5963516045659e71bb16e151c93b580e + url: "https://pub.dev" + source: hosted + version: "2.2.22" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + sha256: "6d13aece7b3f5c5a9731eaf553ff9dcbc2eff41087fd2df587fd0fed9a3eb0c4" + url: "https://pub.dev" + source: hosted + version: "2.5.1" path_provider_linux: dependency: transitive description: @@ -384,6 +464,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.0" + pdf: + dependency: "direct main" + description: + name: pdf + sha256: "28eacad99bffcce2e05bba24e50153890ad0255294f4dd78a17075a2ba5c8416" + url: "https://pub.dev" + source: hosted + version: "3.11.3" + pdf_widget_wrapper: + dependency: transitive + description: + name: pdf_widget_wrapper + sha256: c930860d987213a3d58c7ec3b7ecf8085c3897f773e8dc23da9cae60a5d6d0f5 + url: "https://pub.dev" + source: hosted + version: "1.0.4" petitparser: dependency: transitive description: @@ -408,6 +504,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.8" + posix: + dependency: transitive + description: + name: posix + sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61" + url: "https://pub.dev" + source: hosted + version: "6.0.3" + printing: + dependency: "direct main" + description: + name: printing + sha256: "482cd5a5196008f984bb43ed0e47cbfdca7373490b62f3b27b3299275bf22a93" + url: "https://pub.dev" + source: hosted + version: "5.14.2" qr: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 672c73a..62214cc 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -30,6 +30,7 @@ environment: dependencies: flutter: sdk: flutter + google_fonts: ^6.3.3 flutter_slidable: 3.1.2 qr_flutter: ^4.1.0 mobile_scanner: ^6.0.2 @@ -44,6 +45,8 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 shared_preferences: ^2.5.3 + pdf: ^3.11.3 + printing: ^5.14.2 dev_dependencies: flutter_test: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 77ab7a0..45a0fe6 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -7,8 +7,11 @@ #include "generated_plugin_registrant.h" #include +#include void RegisterPlugins(flutter::PluginRegistry* registry) { FileSelectorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("FileSelectorWindows")); + PrintingPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("PrintingPlugin")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index a423a02..b433b6d 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -4,6 +4,7 @@ list(APPEND FLUTTER_PLUGIN_LIST file_selector_windows + printing ) list(APPEND FLUTTER_FFI_PLUGIN_LIST