inventory_mobile/WORK_LOG.md
2025-12-19 11:53:29 +08:00

11 KiB

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

  • Profile Page

    • New Screen (profile_screen.dart):
      • Implemented a dedicated profile page displaying user information: Email, Company, Department, and Role.
      • Integrated with AuthService to fetch user details using the session cookie.
    • Navigation:
      • Added a "Profile" tab to the BottomNavBar (Index 2).
      • Registered /profile route in main.dart.
      • Updated NavBar enum to support the profile screen context.
  • Login Screen (login_screen.dart)

    • Visual Update:
      • Moved the application logo to the top of the screen and increased its size for better branding visibility.
      • Restored and positioned the "Person" icon below the logo.
  • List Item Actions (Admin Screens)

    • UI Consistency:
      • Standardized the "Edit" and "Delete" slideable actions across multiple admin screens:
        • Supplier
        • Manufacturer
        • Station
        • Product
        • Item
    • Styling:
      • Adjusted padding and margins to ensure action buttons strictly match the height of the list item containers.
      • Added rounded corners (border-radius) to the "Delete" action button to seamlessly match the rounded shape of the item cards.

Friday, December 5, 2025

Features & UI Updates

  • Scan Result User Screen (scan_result_user.dart)
    • Refactoring:
      • Redesigned the UI to match the style of the Admin ScanResultScreen.
      • Implemented a DefaultTabController with "Item Movement" and "Item Information" tabs.
      • Adopted the "framed image" style and consistent Key-Value pair styling with icons.
    • Data & Display:
      • Added a "Station" field to both the "Item Movement" and "Item Information" tabs.
      • Renamed "Current Information" container to "Sender Information" in the Item Movement tab.
      • Cleaned up the "Sender Information" container to display only the "User", removing the redundant "Store" and "Station" fields in that specific context.
    • Actions:
      • Integrated user-specific actions (Receive, Return, Deploy Station, Cancel) into the new _buildDynamicActionSection within the Item Movement tab.
    • Verification:
      • Successfully built the APK (flutter build apk --debug) to verify the changes.

Thursday, December 4, 2025

Features & Logic Updates

  • Dashboard Reporting (Admin & User)
    • Service Layer:
      • Created lib/services/report_service.dart to interface with the /InvMainAPI/GetInventoryReport/{deptId} endpoint.
    • Admin Dashboard (home_screen.dart):
      • Integrated ReportService to fetch real-time inventory statistics.
      • Implemented logic to determine the correct department context:
        • Fetches data for "All" (0) if the user is SuperAdmin/SystemAdmin.
        • Fetches data for the specific department ID for other admin roles.
      • Replaced the placeholder "Inventory Report" table with a dynamic table displaying:
        • Total Items Registered
        • Current Stock
        • New Items (This/Last Month)
        • Stock Out (This/Last Month)
    • User Dashboard (home_screen_user.dart):
      • Integrated ReportService to fetch inventory statistics specific to the user's department.
      • Updated the "INFORMATION" card (orange gradient) to display fetched data:
        • Total Items
        • Current Stock
        • New (Month)
        • Stock Out (Month)
      • Added loading indicators (...) for data fields while fetching.

Wednesday, December 3, 2025

Features & Logic Updates

  • QR Scanning & Item Movement (User Side)

    • New Screens:
      • Created lib/screens/user/scan/scan_user.dart: Dedicated camera scanning screen for users.
      • Created lib/screens/user/scan/scan_result_user.dart: Implements user-specific scanning logic based on QrUser.txt.
    • Logic Implementation:
      • Receive Item: Only allowed if the item is "On Delivery" and assigned to the current user.
      • Return Item: Allowed if the user currently holds the item.
      • Deploy Station: Enables assigning an item to a station managed by the user.
      • Cancel Movement: Implemented cancellation logic specific to user movements (similar to Admin but tailored for user context).
      • Status Handling: Added logic to handle "Request Again" (already returned) and "Not Assigned to You" scenarios.
      • Type Safety: Fixed type comparison bugs (User ID string vs int) to ensuring accurate permission checks.
    • Navigation:
      • Updated BottomNavBar to route non-admin users to /scan-user and admins to /scan.
      • Registered /scan-user route in main.dart.
      • Configured all actions (Receive, Return, Cancel, Deploy) to redirect back to the scanner screen upon success.
  • QR Scanning (Admin Side)

    • Redirect Logic: Updated lib/screens/admin/scan/scan_result.dart to redirect back to the scanner screen (Navigator.pop) instead of the Home Dashboard after successful actions (Receive, Add Movement, Cancel).
    • Modal Handling: Fixed the "Add Movement" flow to correctly close both the modal and the result screen (double pop) on success.
  • Service Updates

    • ItemMovementService: Added endpoints for user actions: updateItemMovementUser, returnItemMovementUser, and stationItemMovementUser.

Tuesday, December 2, 2025

Features & Logic Updates

  • Item Movement User Pages (Refactoring to match Web App)
    • Item View (item_movement_item_user.dart):
      • Implemented filtering logic to truncate history at the point of a completed "Return" or "Ready To Deploy" status.
      • Corrected data mapping for "Start" (formerly last...) and "End" (formerly to...) fields.
      • Added Status Headings (Receive, Return, Change, Assign) with specific color coding.
      • Added Completion Status (Complete, Incomplete, Canceled) indicators.
      • Replaced the timeline visualization with a detailed list of movement cards for full history visibility.
      • Updated Icon logic for Start/End locations.
    • Station View (item_movement_station_user.dart):
      • Integrated ItemMovementService to fetch real data (removed mock data).
      • Implemented grouping logic: Group by Station -> Group by Item -> History.
      • Applied the same history filtering/truncation logic as the Item View.
      • Updated UI components to be consistent with the detailed movement cards in Item View.
    • All View (item_movement_all_user.dart):
      • Updated _fetchInitialData to group movements by uniqueID and select only the latest valid movement.
      • Implemented filtering to exclude items from the main view if their latest status is "Return" or "Ready To Deploy" and they are completed.
      • Restored missing state variables and fixed import issues during refactoring.

Monday, December 1, 2025

Features & Logic Updates

  • QR Scanning & Item Movement (scan_result.dart)

    • Completely rewrote ScanResultScreen to match the web application's logic (QrMaster.txt).
    • Implemented dynamic UI tabs:
      • Item Information: Displays read-only item details (Image, Name, Part/Serial No, Quantity, PIC).
      • Item Movement: Displays current status and context-aware action buttons (Receive, Cancel, Add Movement).
    • Actions & Logic:
      • Assigning: Implemented a modal form to assign items to User, Station, Store, Supplier, or mark as Faulty.
      • Consignment Note: Added functionality to upload Consignment Notes via Camera or File Gallery (converted to Base64).
      • Receiving: Added logic to receive items based on their current status (e.g., "On Delivery" -> "Delivered", "Repair" -> "Ready To Deploy").
      • Cancellation: Implemented a complex cancellation flow that updates the movement status to "Cancelled", creates a new "Register" movement to restore stock, and updates the item quantity.
      • Redirect: Configured automatic redirection to the Dashboard (/home) upon successful completion of any action.
  • Service Updates

    • ItemService: Added getItem (fetch by ID) and updateItemQuantity.
    • ItemMovementService: Added addItemMovement, updateItemMovementMaster, and getItemMovementById.

Wednesday, November 26, 2025

Features & Logic Updates

  • Admin Filtering (Item Movement & Product Request)

    • Implemented client-side department-based filtering for "Inventory Master" role in item_movement_service.dart and product_request_service.dart.
    • Logic now ensures Inventory Masters only see requests/movements involving users from their own department (combined with existing store management logic).
    • Fetched user lists to map User IDs to Department IDs dynamically.
  • UI Updates

    • Navigation Bar (nav_bar.dart): Updated the Drawer Header to display the logged-in user's Department Name below their role.
    • Dashboard Experiments: Briefly implemented and then reverted Department Name displays on Admin and User Dashboards and Title Bars based on user preference.

Tuesday, November 25, 2025

Features & UI Updates

  • Product Request User Page (product_request_user.dart)

    • Removed section headers ("Pending Request", "Complete Request", "Rejected Request").
    • Updated "Requested" and "Rejected" details layout to a 3-column grid.
    • Increased animation speed for expanding/collapsing details.
    • Added "Pull to Refresh" functionality.
    • Added a "Show" button for documents/pictures to view them in a dialog.
    • Implemented "Delete Request" functionality connected to the API.
  • Item Movement User Pages

    • Added "Pull to Refresh" to:
      • item_movement_all_user.dart
      • item_movement_item_user.dart
      • item_movement_station_user.dart
    • Item Movement Item User (item_movement_item_user.dart)
      • Removed product image from the main card.
      • Simplified title to show only Item ID (matching Admin style).
      • Confirmed usage of timeline_tile.
  • Product Request Form (product_request_user_form.dart)

    • Integrated file_picker package.
    • Implemented file selection for documents/pictures.
    • Added Base64 conversion for file upload payload.
  • Admin & Technician Pages

    • Inventory Master (invMaster_to_invMaster.dart): Added "Show" button for documents/pictures.
    • Technician (technician_to_invMaster.dart): Added "Show" button for documents/pictures.

Fixes

  • Fixed a compilation error in product_request_service.dart (missing closing brace).