Files
wms-app/sdlc/2-SI Process (12 Work Product)/12.Software design/200-WMS-26-001-00 Software Design 25690817 V1.0.md
T
2026-08-18 12:37:28 +07:00

7.8 KiB
Raw Blame History

Software Design

Document field Value
Document Software Design
Project BRN WMS
Project code 200-WMS-26-001-00
Title System Design Document
Project period 05/01/26–24/08/26
Release 17/08/26 V1.0
Standard ISO/IEC 29110 Basic Profile
Organizer Apirach Supattaratpateep (Project Manager), Noppong Chareunsook (System Analyst), Thanakorn Sathitwitayakul (Developer)
Recorder Thanakorn Sathitwitayakul — Developer
Status Final — describes the as-built architecture; from the current codebase

Basis

This design was from the current repository structure and class list rather than authored before implementation. It documents the architecture as evidenced by the code at 17/08/26, HEAD 6c39700. Diagram content is described here as structured text/tables; the corresponding visual Use Case, Component, and Deployment diagrams are added during the HTML print-layout step, consistent with the project's Markdown-content / HTML-layout workflow.

HIGH LEVEL DESIGN

Use case actors and actions

Actor Description Representative actions
Owner Company owner; highest-privilege role within a company Full access to configuration, users, and all operational modules within the company
Admin Administrative user within a company Manage company settings, users, application access, and all operational modules
Staff Operational user Perform warehouse, sales, purchasing, and finance transactions within permitted scope
Viewer Read-only user View authorized screens and reports without creating/editing transactions
System (Node.js scheduler) Automated actor Executes scheduled stock/GL aggregate maintenance and low-stock/overdue-invoice alerts
Email/SMTP service External actor Delivers onboarding, password-reset, and notification email sent by the application

Component layers

Layer Composition SR reference
Presentation PHP page views under each app/<module>/ directory; responsive UI; app/assets/js/custom.js and supporting JS/CSS SR02:002, SR06:002, SR06:003
Business logic 31 manager/service classes in app/assets/utils/classes/ (Section "Software Unit" below), invoked from page controllers SR02:003, SR03:001–SR03:011
Data access Manager classes query two MariaDB databases directly (no separate ORM layer); StockTablesTrait centralizes shared stock-table access patterns SR02:004, SR06:001, SR08:001–SR08:005
Real-time/scheduled services Node.js server.js (Socket.IO notification relay) and scheduler.js (cron-style aggregate/alert jobs), managed by pm2 (ecosystem.config.js) SR03:011, SR06:004, SR06:005
External integration SMTP email delivery (SmtpManager); browser Socket.IO client for real-time notifications SR06:004, SR06:005

Deployment tiers

Tier Composition SR reference
Client Browser (Chrome/Edge/Firefox), responsive UI, Socket.IO client connection SR06:002, SR06:003, SR06:005
Web tier PHP 8+ application; manual LAMP install (setup.php) or docker/php container (php-apache, config generated from .env at entrypoint) SR01:003, SR02:005
Data tier MariaDB, two databases: wms (identity/company) and wms2 (WMS/accounting); manual install or docker/mariadb container SR06:001, SR08:001–SR08:004
Real-time/scheduler tier Node.js server.js + scheduler.js under pm2; manual install or docker/node container SR03:011, SR06:004, SR06:005
External SMTP server (configured per company via company_smtp) SR06:004

Software Unit

One unit per business-logic manager class, plus the two Node.js services. Each unit's SR reference is its owning module in the SRS (Section SR03).

ID Description Functional interfaces detail SR reference
UN01 UserManager User CRUD, role assignment, application-access flags SR03:001
UN02 PasswordManager Password hashing (bcrypt), validation, change SR03:001, SR01:004
UN03 PasswordResetManager Forgot-password token issuance and reset flow SR03:001
UN04 CompanyProfileManager Company profile CRUD SR03:002
UN05 CompanySettingManager Company-level system settings SR03:002
UN06 SmtpManager Per-company SMTP configuration and mail dispatch SR03:002, SR06:004
UN07 WarehouseManager Warehouse/storage/bin master data and capacity/occupancy SR03:003, SR03:004
UN08 ProductManager Product and product-category master data SR03:003
UN09 ContactManager Contact type and contact master data SR03:003
UN10 StockManager Stock-in/out/transfer, lot/serial/expiry, balances SR03:004
UN11 StockSourceManager Stock source/traceability resolution SR03:004
UN12 StockTablesTrait Shared stock-table query/aggregation logic reused by stock-facing managers SR03:004
UN13 BarcodeManager SKU/location barcode label generation and scan handling SR03:004
UN14 EtlStockManager Stock aggregate (ETL) table maintenance SR03:009, SR05:002
UN15 QuotationManager Quotation lifecycle SR03:005
UN16 OrderManager Sales-order lifecycle SR03:005
UN17 InvoiceManager Sales-invoice lifecycle SR03:005
UN18 ReturnManager Sales-return / credit-note lifecycle SR03:005
UN19 PurchaseRequestManager Purchase-request lifecycle SR03:006
UN20 PurchaseOrderManager Purchase-order lifecycle SR03:006
UN21 SupplierReturnManager Supplier-return lifecycle SR03:006
UN22 ReceiptBillingManager Receipt billing lifecycle SR03:007
UN23 ReceiptManager Receipt lifecycle SR03:007
UN24 PaymentBillingManager Payment billing lifecycle SR03:007
UN25 PaymentManager Payment lifecycle SR03:007
UN26 PostingManager Chart of accounts, account formulas, journal, GL posting SR03:008
UN27 ReportManager Operational and financial report generation SR03:009
UN28 DocumentNumberManager Controlled document-number sequence generation SR03:010
UN29 BatchActionManager Bulk/batch record operations SR02:003
UN30 OperationLockManager Posting-window / operation-lock enforcement SR07:002, SR09:003
UN31 UsageGuard Company usage-package/transaction-quota enforcement SR07:002
UN32 FileUploader Supported file-attachment upload handling SR03:004
UN33 nodejs/server.js Socket.IO real-time notification relay SR03:011, SR06:005
UN34 nodejs/scheduler.js Scheduled stock/GL aggregate maintenance and low-stock/overdue-invoice alerts SR03:011, SR05:002

User Interface Design

The delivered UI is an implemented, responsive PHP application (login, dashboard, warehouse/inventory, sales, purchasing, finance, accounting, reports, settings). Because the UI already exists as running screens rather than pre-implementation mockups, wireframe capture is not reproduced here; representative screenshots are added during the HTML print-layout step where useful, consistent with the Software User Documentation (work product 18), which documents actual screens.

Approval

Prepared by

Name: Thanakorn Sathitwitayakul
Role: Developer Signature: ______________________________________________
Date: ___________________________________________________

Reviewed by

Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________

Reviewed and authorized by

Name: Seri Viriyasakultorn
Project roles: Project Sponsor / Customer Representative / Authorized Approver
Position: Managing Director
Company: B.R.N. Enterprise Co., Ltd.
Signature: ______________________________________________
Date: ___________________________________________________