8.2 KiB
Software Design
| Document field | Value |
|---|---|
| Document | Software Design |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | เอกสารการออกแบบระบบ |
| Project period | 05/01/26–24/08/26 |
| Preparation date | 17/08/26 |
| Release | 17/08/26 V1.0 |
| Standard | ISO/IEC 29110 Basic Profile |
| Organizer | คุณอภิรัชต์ สุภัทรประทีป (Project Manager), ธนกร สถิตวิทยากุล (Developer / System Analyst) |
| Recorder | ธนกร สถิตวิทยากุล — Developer / System Analyst |
| Status | Final — describes the as-built architecture; reconstructed from the current codebase |
Basis
This design was reconstructed 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: ธนกร สถิตวิทยากุล
Role: Developer / System Analyst
Signature: ______________________________________________
Date: ___________________________________________________
Reviewed by
Name: คุณอภิรัชต์ สุภัทรประทีป
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
Reviewed and authorized by
Name: คุณเสรี วิริยะสกุลธรณ์
Project roles: Project Sponsor / Customer Representative / Authorized Approver
Position: กรรมการผู้จัดการ
Company: บริษัท บี.อาร์.เอ็น. เอ็นเตอร์ไพรส์ จำกัด
Signature: ______________________________________________
Date: ___________________________________________________