Compare commits

53 Commits
Author SHA1 Message Date
Thanakorn 6765054950 SDLC delivery package 2026-08-18 13:22:26 +07:00
Thanakorn 075d80ad40 SDLC docs package delivery script 2026-08-18 12:38:15 +07:00
Thanakorn a859cfda3e SDLC docs alignment 2026-08-18 12:37:28 +07:00
Thanakorn 37d2f8e725 Hand off 2026-08-17 17:12:34 +07:00
Thanakorn 39201df36e SDLC docs 2026-08-17 17:09:27 +07:00
Thanakorn 3045c4a8ef Add interactive script to generate root .env for docker-compose 2026-08-17 13:50:03 +07:00
Thanakorn 4c4522169c Add Docker Compose production stack (php-apache, mariadb, node/pm2) 2026-08-17 13:44:14 +07:00
Thanakorn 234814a23c Seed Demo Data - Rebranding 2026-08-17 13:12:07 +07:00
Thanakorn 0eab2a3b96 Demo Data Population 2026-08-14 14:10:31 +07:00
nok 618045540a fix login and configurations 2026-08-03 11:17:41 +07:00
Thanakorn S 7b294f70da Classe methods: remove reducdancy 2026-05-29 08:56:58 +07:00
Thanakorn S 356d308907 Fix horizontal scrollbar caused by sidebar margin overflowing viewport 2026-05-28 16:58:15 +07:00
Thanakorn S 9c7a4a139d Block concurrent login: reject new session if account already active 2026-05-28 16:21:55 +07:00
Thanakorn S b634372b22 Scope stock table access by company warehouses 2026-05-28 15:36:49 +07:00
Thanakorn S 2a6441c6a9 Complete Rack→Bin rename and fix ReportManager property bug 2026-05-28 09:53:19 +07:00
Thanakorn S 987cf7ded9 Change 'Rack' to 'Bin' 2026-05-27 17:14:53 +07:00
Thanakorn S ea94b6a6ae Wire targeted toast notifications to document status transitions 2026-05-27 13:44:55 +07:00
Thanakorn S dbbc89f8f2 notify node: userIDguard 2026-05-27 13:12:18 +07:00
Thanakorn S 82f66b0c41 NODEJS cron fix 2026-05-27 12:05:29 +07:00
Thanakorn S 8905b5bf35 fix NodeJS cron 2026-05-27 11:56:40 +07:00
Thanakorn S 8916d9180d cron low stock - overdue invoice 2026-05-27 11:45:48 +07:00
Thanakorn S ebccca4989 CORS whitelist for NodeJS 2026-05-27 11:26:40 +07:00
Thanakorn S aee797b998 nodejs status check 2026-05-27 11:18:09 +07:00
Thanakorn S 5ff1a60c7d autostart node process 2026-05-27 11:07:30 +07:00
Thanakorn S 5bfaf6f8c3 all .md reviewed - fix remaining gaps 2026-05-27 10:42:44 +07:00
Thanakorn S 17a62e50e4 add missing roleGuards 2026-05-27 09:19:52 +07:00
Thanakorn S 1b34482216 Stop tracking docs/ — already in .gitignore 2026-05-27 08:15:29 +07:00
Thanakorn S 1c5236d8e0 Master data review: spec updates and C1/C2/M3-M6 fixes 2026-05-26 17:33:58 +07:00
Thanakorn S 6ca4c91865 Document lifecycle review: spec updates and C2/M9 code fixes 2026-05-26 16:23:46 +07:00
Thanakorn S 632c039790 system notification 2026-05-26 13:26:57 +07:00
Thanakorn S 1a952b42dd Seal transaction limit coverage gaps 2026-05-26 13:10:54 +07:00
Thanakorn S 9e200d31fe Security hardening: invited user onboarding flow (C1–N7) 2026-05-26 10:18:40 +07:00
Thanakorn S 0815ae3292 document number sequence 2026-05-26 08:19:40 +07:00
Thanakorn S 5c0166ae73 Seal live dashboard event gaps 2026-05-25 17:02:52 +07:00
Thanakorn S 3c9475f3fa Close login gap 2026-05-25 15:34:12 +07:00
Thanakorn S 8027ab569e PHP event trigger by NodeJS [stock dashboard] 2026-05-25 14:33:36 +07:00
Thanakorn S 1237888ab9 stock aggregate table 2026-05-25 13:30:10 +07:00
Thanakorn S 45a78a3fed login: block concurrent login, single-factor auth for staff/viewer 2026-05-25 09:43:30 +07:00
Thanakorn S 5ca6b49fd0 code audit fixes: require_once, issue flow, role guards 2026-05-23 17:06:08 +07:00
Thanakorn S 54f3f11fd2 automate and view gl entries 2026-05-23 16:46:35 +07:00
Thanakorn S 5affae1fc5 batch journal entries 2026-05-23 15:55:22 +07:00
Thanakorn S 4bb378a905 accounting Reports 2026-05-23 15:07:11 +07:00
Thanakorn S 15618f4955 fix file path 2026-05-23 13:11:22 +07:00
Thanakorn S c0de84a575 fix file path 2026-05-23 13:09:18 +07:00
Thanakorn S 5780183b82 gl aggregate table (ETL), cronjob by NODEJS 2026-05-23 10:52:27 +07:00
Thanakorn S 5a3bfa3435 NODE JS introduction: socket polling 2026-05-22 17:01:59 +07:00
Thanakorn S 648efee991 softDelete features 2026-05-22 14:07:22 +07:00
Thanakorn S 738f600fe8 users app access badge 2026-05-22 13:21:46 +07:00
Thanakorn S 7379ac9e4a user badge 2026-05-22 10:42:01 +07:00
Thanakorn S cf25732da0 use roles guards 2026-05-22 08:45:35 +07:00
Thanakorn S f2b87cfd0f fix onboarding bugs 2026-05-21 16:51:19 +07:00
Thanakorn S 86b1aa9d62 add setup.php — one-shot production database setup script 2026-05-21 15:21:36 +07:00
Thanakorn S e1135d2bce fix StockManager lot/serial coercion + add document flow test suite 2026-05-21 14:20:41 +07:00
98 changed files with 4695 additions and 2 deletions
-2
View File
@@ -15,6 +15,4 @@ lib/zxcvbn-php-master/vendor/sebastian/
# custom files
notes/
docs/
.claude/
SESSION.php
sdlc/
+32
View File
@@ -0,0 +1,32 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(cd -- "$SCRIPT_DIR/.." && pwd)"
TOOL_DIR="$SCRIPT_DIR/sdlc-delivery"
SOURCE_DIR="$ROOT_DIR/sdlc"
DELIVERY_ROOT="$ROOT_DIR/sdlc-delivery"
STAGING_DIR="$ROOT_DIR/.sdlc-delivery.staging"
if [[ ! -d "$TOOL_DIR/node_modules/playwright" ]]; then
echo "Installing the local PDF renderer..."
npm install --prefix "$TOOL_DIR"
npx --prefix "$TOOL_DIR" playwright install chromium
fi
rm -rf "$STAGING_DIR"
mkdir -p "$STAGING_DIR"
while IFS= read -r -d '' source; do
relative="${source#"$ROOT_DIR/sdlc/"}"
destination="$STAGING_DIR/${relative%.md}.pdf"
echo "Rendering ${relative%.md}.pdf"
node "$TOOL_DIR/render-sdlc.mjs" "$source" "$destination"
done < <(find "$SOURCE_DIR" -type f -name '*.md' -print0 | sort -z)
echo "Verifying staged delivery package..."
"$SCRIPT_DIR/verify-sdlc-delivery.sh" "$STAGING_DIR"
rm -rf "$DELIVERY_ROOT"
mv "$STAGING_DIR" "$DELIVERY_ROOT"
echo "Delivery and verification passed: $DELIVERY_ROOT"
Binary file not shown.
@@ -0,0 +1,7 @@
<table class="document-control">
<tbody>
<tr><th>Document</th><td>{{documentType}}</td><th>Release</th><td>{{release}}</td></tr>
<tr><th>Project</th><td>{{projectName}}</td><th>Project code</th><td>{{projectCode}}</td></tr>
<tr><th>Project period</th><td colspan="3">{{projectPeriod}}</td></tr>
</tbody>
</table>
+4
View File
@@ -0,0 +1,4 @@
<div style="border-top:1.5pt solid #1f2933; color:#52606d; display:flex; font-family:'BRN Thai',Arial,sans-serif; font-size:8pt; justify-content:space-between; margin:0 16mm; padding-top:2.5mm; width:calc(100% - 32mm);">
<span>ISO/IEC 29110-4-1:2018</span>
<span>{{projectCode}}</span>
</div>
+8
View File
@@ -0,0 +1,8 @@
<header class="document-header">
<img class="document-header__logo" src="{{logoPath}}" alt="B.R.N. Enterprise Co., Ltd.">
<div class="document-header__company">
<p class="document-header__company-name">B.R.N. ENTERPRISE CO., LTD.</p>
<p class="document-header__address">1011 Supalai Grand Tower, 7th Floor, Unit 6-7, Rama 3 Road, Chongnonsi, Yannawa, Bangkok 10120<br>Tel. (+66) 2687 0250 &nbsp; Fax. (+66) 2687 0255</p>
</div>
<div class="document-header__title">{{documentTitle}}</div>
</header>
+37
View File
@@ -0,0 +1,37 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>SDLC delivery theme preview</title>
<link rel="stylesheet" href="sdlc-delivery.css">
</head>
<body>
<main class="delivery-document">
<header class="document-header">
<img class="document-header__logo" src="../../../app/assets/images/logo.png" alt="B.R.N. Enterprise Co., Ltd.">
<div class="document-header__company">
<p class="document-header__company-name">B.R.N. ENTERPRISE CO., LTD.</p>
<p class="document-header__address">1011 Supalai Grand Tower, 7th Floor, Unit 6-7, Rama 3 Road, Chongnonsi, Yannawa, Bangkok 10120<br>Tel. (+66) 2687 0250 &nbsp; Fax. (+66) 2687 0255</p>
</div>
<div class="document-header__title">Software Project Plan</div>
</header>
<table class="document-control">
<tbody>
<tr><th>Document</th><td>Software Project Plan</td><th>Release</th><td>05/01/26 V1.0 Final</td></tr>
<tr><th>Project</th><td>BRN WMS</td><th>Project code</th><td>200-WMS-26-001-00</td></tr>
<tr><th>Project period</th><td colspan="3">05/01/26–24/08/26</td></tr>
</tbody>
</table>
<h2>Project overview</h2>
<p>This preview demonstrates the shared A4 header, document-control table, headings, and standard data tables used by every generated delivery PDF.</p>
<table>
<thead><tr><th>Phase</th><th>Period</th><th>Primary output</th></tr></thead>
<tbody><tr><td>Planning</td><td>12/01/26–18/02/26</td><td>Project Plan</td></tr></tbody>
</table>
</main>
<footer class="document-footer"><span>ISO/IEC 29110-4-1:2018</span><span>200-WMS-26-001-00 · 1 / 1</span></footer>
</body>
</html>
@@ -0,0 +1,130 @@
@page {
size: A4;
margin: 18mm 16mm 28mm;
}
:root {
--brn-blue: #0789c9;
--brn-red: #bd0e2d;
--brn-ink: #1f2933;
--brn-muted: #52606d;
--brn-line: #aab7c4;
--brn-pale-blue: #eaf6fc;
}
* { box-sizing: border-box; }
html, body {
color: var(--brn-ink);
font-family: "BRN Thai", Arial, sans-serif;
font-size: 10.5pt;
line-height: 1.45;
}
body { margin: 0; }
.delivery-document { width: 100%; }
.document-header {
align-items: center;
border-bottom: 1.5pt solid var(--brn-blue);
display: flex;
gap: 9mm;
margin: 0 0 7mm;
min-height: 22mm;
padding: 0 0 3mm;
}
.document-header__logo {
flex: 0 0 auto;
height: 16mm;
object-fit: contain;
width: 16mm;
}
.document-header__company { flex: 1; min-width: 0; }
.document-header__company-name {
font-size: 13pt;
font-weight: 700;
letter-spacing: .03em;
margin: 0;
}
.document-header__address {
color: var(--brn-muted);
font-size: 7.5pt;
line-height: 1.35;
margin: 1mm 0 0;
}
.document-header__title {
background: var(--brn-blue);
color: #fff;
font-size: 15pt;
font-weight: 500;
flex: 0 1 72mm;
overflow-wrap: anywhere;
min-width: 52mm;
padding: 4mm 6mm;
text-align: center;
}
.document-control {
border-collapse: collapse;
margin: 0 0 7mm;
page-break-inside: avoid;
width: 100%;
}
.document-control th,
.document-control td {
border: .5pt solid var(--brn-line);
padding: 2.2mm 3mm;
text-align: left;
vertical-align: top;
}
.document-control th {
background: var(--brn-pale-blue);
font-weight: 700;
width: 26%;
}
h1, h2, h3 { break-after: avoid; color: var(--brn-ink); }
h1 { font-size: 18pt; margin: 0 0 5mm; }
h2 { border-left: 4pt solid var(--brn-blue); font-size: 14pt; margin: 9mm 0 4mm; padding-left: 3mm; }
h3 { color: var(--brn-blue); font-size: 11.5pt; margin: 6mm 0 3mm; }
p { margin: 0 0 3.5mm; }
table:not(.document-control) {
border-collapse: collapse;
border: .75pt solid #718096;
font-size: 9pt;
margin: 0 0 5mm;
table-layout: fixed;
width: 100%;
}
table:not(.document-control) th,
table:not(.document-control) td {
border: .5pt solid var(--brn-line);
overflow-wrap: anywhere;
padding: 2mm;
vertical-align: top;
word-break: normal;
}
table:not(.document-control) th { background: var(--brn-pale-blue); font-weight: 700; }
thead { display: table-header-group; }
tr { break-inside: avoid; }
.approval-block { break-inside: avoid; margin-top: 9mm; }
.approval-block__person { margin: 5mm 0; min-height: 21mm; }
.approval-block__line { border-bottom: .5pt solid var(--brn-ink); display: inline-block; min-width: 70mm; }
.approval-fields {
line-height: 1.62;
margin: 0 0 8mm;
padding: 2.5mm 0 4mm;
}
+54
View File
@@ -0,0 +1,54 @@
{
"name": "brn-wms-sdlc-delivery",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "brn-wms-sdlc-delivery",
"dependencies": {
"playwright": "1.50.0"
}
},
"node_modules/fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"hasInstallScript": true,
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/playwright": {
"version": "1.50.0",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.50.0.tgz",
"integrity": "sha512-+GinGfGTrd2IfX1TA4N2gNmeIksSb+IAe589ZH+FlmpV3MYTx6+buChGIuDLQwrGNCw2lWibqV50fU510N7S+w==",
"dependencies": {
"playwright-core": "1.50.0"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
"node": ">=18"
},
"optionalDependencies": {
"fsevents": "2.3.2"
}
},
"node_modules/playwright-core": {
"version": "1.50.0",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.50.0.tgz",
"integrity": "sha512-CXkSSlr4JaZs2tZHI40DsZUN/NIwgaUPsyLuOAaIZp2CyF2sN5MM5NJsyB188lFSSozFxQ5fPT4qM+f0tH/6wQ==",
"bin": {
"playwright-core": "cli.js"
},
"engines": {
"node": ">=18"
}
}
}
}
+8
View File
@@ -0,0 +1,8 @@
{
"name": "brn-wms-sdlc-delivery",
"private": true,
"type": "module",
"dependencies": {
"playwright": "1.50.0"
}
}
+175
View File
@@ -0,0 +1,175 @@
import fs from 'node:fs/promises';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import { chromium } from 'playwright';
const here = path.dirname(fileURLToPath(import.meta.url));
const root = path.resolve(here, '../..');
const assets = path.join(here, 'assets');
const escapeHtml = (value) => value
.replaceAll('&', '&amp;')
.replaceAll('<', '&lt;')
.replaceAll('>', '&gt;');
const renderInline = (value) => escapeHtml(value)
.replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>')
.replace(/`([^`]+)`/g, '<code>$1</code>');
const applyTemplate = (template, values) => template.replace(/{{(\w+)}}/g, (_, key) => values[key] ?? '');
function isTableLine(line) {
return /^\|.*\|\s*$/.test(line.trim());
}
function tableCells(line) {
return line.trim().slice(1, -1).split('|').map((cell) => cell.trim());
}
function isSeparator(cells) {
return cells.every((cell) => /^:?-{3,}:?$/.test(cell));
}
function renderTable(lines, className = '') {
const rows = lines.map(tableCells);
const header = rows[0];
const data = isSeparator(rows[1] ?? []) ? rows.slice(2) : rows.slice(1);
const cells = (tag, row) => row.map((cell) => `<${tag}>${renderInline(cell)}</${tag}>`).join('');
return `<table${className ? ` class="${className}"` : ''}><thead><tr>${cells('th', header)}</tr></thead><tbody>${data.map((row) => `<tr>${cells('td', row)}</tr>`).join('')}</tbody></table>`;
}
function renderParagraph(lines) {
return lines.map((line, index) => {
const trimmed = line.trimEnd();
const hasHardBreak = /\s{2,}$/.test(line);
const isApprovalField = /^(Name|Role|Signature|Date|Position|Company|Project roles|Decision):/.test(trimmed);
const separator = hasHardBreak || isApprovalField ? '<br>' : (index < lines.length - 1 ? ' ' : '');
return `${renderInline(trimmed)}${separator}`;
}).join('');
}
function markdownToHtml(markdown) {
const lines = markdown.replaceAll('\r\n', '\n').split('\n');
const output = [];
let index = 0;
while (index < lines.length) {
const line = lines[index];
if (!line.trim()) { index += 1; continue; }
if (isTableLine(line)) {
const table = [];
while (index < lines.length && isTableLine(lines[index])) table.push(lines[index++]);
output.push(renderTable(table));
continue;
}
const heading = line.match(/^(#{1,3})\s+(.+)$/);
if (heading) {
const level = heading[1].length;
output.push(`<h${level}>${renderInline(heading[2])}</h${level}>`);
index += 1;
continue;
}
if (/^[-*]\s+/.test(line)) {
const items = [];
while (index < lines.length && /^[-*]\s+/.test(lines[index])) items.push(`<li>${renderInline(lines[index++].replace(/^[-*]\s+/, ''))}</li>`);
output.push(`<ul>${items.join('')}</ul>`);
continue;
}
const paragraph = [];
while (index < lines.length && lines[index].trim() && !isTableLine(lines[index]) && !/^(#{1,3})\s+/.test(lines[index]) && !/^[-*]\s+/.test(lines[index])) paragraph.push(lines[index++]);
const approvalClass = paragraph.some((line) => /^(Name|Role|Signature|Date|Position|Company|Project roles|Decision):/.test(line.trimEnd())) ? ' class="approval-fields"' : '';
output.push(`<p${approvalClass}>${renderParagraph(paragraph)}</p>`);
}
return output.join('\n');
}
function extractDocument(markdown) {
const titleMatch = markdown.match(/^#\s+(.+)\n+/m);
const title = titleMatch?.[1] ?? 'BRN WMS';
const afterTitle = markdown.slice((titleMatch?.index ?? 0) + (titleMatch?.[0].length ?? 0));
const lines = afterTitle.split('\n');
const metadata = {};
let bodyStart = 0;
for (let index = 0; index < lines.length; index += 1) {
if (!isTableLine(lines[index])) continue;
const table = [];
while (index < lines.length && isTableLine(lines[index])) table.push(lines[index++]);
const candidate = {};
const dataStart = isSeparator(tableCells(table[1] ?? '')) ? 2 : 1;
for (const row of table.slice(dataStart).map(tableCells)) {
if (row.length >= 2) candidate[row[0]] = row[1];
}
if (candidate.Document && candidate.Project) {
Object.assign(metadata, candidate);
bodyStart = index;
break;
}
index -= 1;
}
return { title, metadata, body: lines.slice(bodyStart).join('\n') };
}
async function main() {
const [source, destination] = process.argv.slice(2);
if (!source || !destination) throw new Error('Usage: render-sdlc.mjs SOURCE.md DESTINATION.pdf');
const [markdown, css, headerTemplate, footerTemplate, logo, thaiFont] = await Promise.all([
fs.readFile(source, 'utf8'),
fs.readFile(path.join(assets, 'sdlc-delivery.css'), 'utf8'),
fs.readFile(path.join(assets, 'header.html'), 'utf8'),
fs.readFile(path.join(assets, 'footer.html'), 'utf8'),
fs.readFile(path.join(root, 'app/assets/images/logo.svg')),
fs.readFile(path.join(assets, 'LeelawadeeUI.ttf'))
]);
const { title, metadata, body } = extractDocument(markdown);
const hasWideTable = markdown.split('\n').some((line) => isTableLine(line) && tableCells(line).length >= 8);
const isLandscape = metadata.Document === 'Work Schedule' || title === 'Work Schedule' || hasWideTable;
const values = {
logoPath: `data:image/svg+xml;base64,${logo.toString('base64')}`,
documentTitle: title,
documentType: metadata.Document ?? title,
release: metadata.Release ?? '',
projectName: metadata.Project ?? 'BRN WMS',
projectCode: metadata['Project code'] ?? '200-WMS-26-001-00',
projectPeriod: metadata['Project period'] ?? '05/01/26–24/08/26',
pageNumber: '<span class="pageNumber"></span>',
totalPages: '<span class="totalPages"></span>'
};
const control = await fs.readFile(path.join(assets, 'document-control.html'), 'utf8');
const pdfFooter = applyTemplate(footerTemplate, values);
const fontFace = `@font-face { font-family: "BRN Thai"; src: url(data:font/ttf;base64,${thaiFont.toString('base64')}) format("truetype"); font-weight: 400 700; }`;
const pageLayout = isLandscape
? '@page { size: A4 landscape; margin: 18mm 16mm 28mm; }'
: '';
const html = `<!doctype html><html><head><meta charset="utf-8"><style>${fontFace}${css}${pageLayout}</style></head><body><main class="delivery-document">${applyTemplate(headerTemplate, values)}${applyTemplate(control, values)}${markdownToHtml(body)}</main></body></html>`;
await fs.mkdir(path.dirname(destination), { recursive: true });
const browser = await chromium.launch({ headless: true });
try {
const page = await browser.newPage();
await page.setContent(html, { waitUntil: 'networkidle' });
await page.pdf({
path: destination,
format: 'A4',
printBackground: true,
preferCSSPageSize: true,
displayHeaderFooter: true,
headerTemplate: '<div></div>',
footerTemplate: pdfFooter
});
} finally {
await browser.close();
}
}
main().catch((error) => { console.error(error); process.exit(1); });
+91
View File
@@ -0,0 +1,91 @@
import { execFile } from 'node:child_process';
import fs from 'node:fs/promises';
import path from 'node:path';
import { promisify } from 'node:util';
const execFileAsync = promisify(execFile);
function isTableLine(line) {
return /^\|.*\|\s*$/.test(line.trim());
}
function tableCells(line) {
return line.trim().slice(1, -1).split('|').map((cell) => cell.trim());
}
function isSeparator(cells) {
return cells.every((cell) => /^:?-{3,}:?$/.test(cell));
}
function extractDocumentContent(markdown) {
const titleMatch = markdown.match(/^#\s+.+\n+/m);
const afterTitle = markdown.slice((titleMatch?.index ?? 0) + (titleMatch?.[0].length ?? 0));
const lines = afterTitle.split('\n');
for (let index = 0; index < lines.length; index += 1) {
if (!isTableLine(lines[index])) continue;
const table = [];
while (index < lines.length && isTableLine(lines[index])) table.push(lines[index++]);
const dataStart = isSeparator(tableCells(table[1] ?? '')) ? 2 : 1;
const fields = Object.fromEntries(table.slice(dataStart).map(tableCells).filter((row) => row.length >= 2));
if (fields.Document && fields.Project) return { body: lines.slice(index).join('\n'), fields };
index -= 1;
}
return { body: afterTitle, fields: {} };
}
function words(text) {
return new Set((text.normalize('NFC').toLocaleLowerCase().match(/[\p{L}\p{N}]+/gu) ?? []));
}
function compact(text) {
return text.normalize('NFC').toLocaleLowerCase().replace(/[^\p{L}\p{N}]/gu, '');
}
async function markdownFiles(directory) {
const entries = await fs.readdir(directory, { withFileTypes: true });
const results = await Promise.all(entries.map(async (entry) => {
const target = path.join(directory, entry.name);
if (entry.isDirectory()) return markdownFiles(target);
return entry.isFile() && entry.name.endsWith('.md') ? [target] : [];
}));
return results.flat();
}
async function pdfText(pdf) {
const { stdout } = await execFileAsync('pdftotext', [pdf, '-'], { maxBuffer: 32 * 1024 * 1024 });
return stdout;
}
async function main() {
const [sourceRoot, deliveryRoot] = process.argv.slice(2);
if (!sourceRoot || !deliveryRoot) throw new Error('Usage: verify-content.mjs SOURCE_DIRECTORY DELIVERY_DIRECTORY');
const sources = (await markdownFiles(sourceRoot)).sort();
const failures = [];
for (const source of sources) {
const relative = path.relative(sourceRoot, source);
const pdf = path.join(deliveryRoot, relative.replace(/\.md$/, '.pdf'));
const [markdown, extracted] = await Promise.all([fs.readFile(source, 'utf8'), pdfText(pdf)]);
const { body, fields } = extractDocumentContent(markdown);
const controlText = ['Document', 'Project', 'Project code', 'Project period', 'Release']
.map((field) => fields[field] ?? '')
.join('\n');
const expected = words(`${body}\n${controlText}`);
const actual = compact(extracted);
const missing = [...expected].filter((word) => !actual.includes(word));
if (missing.length) failures.push(`${relative}: missing ${missing.slice(0, 12).join(', ')}${missing.length > 12 ? ', …' : ''}`);
}
if (failures.length) {
console.error(`Content coverage failed for ${failures.length}/${sources.length} PDFs:`);
failures.forEach((failure) => console.error(`- ${failure}`));
process.exit(1);
}
console.log(`Content coverage passed: ${sources.length}/${sources.length} PDFs.`);
}
main().catch((error) => { console.error(error); process.exit(1); });
+28
View File
@@ -0,0 +1,28 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(cd -- "$SCRIPT_DIR/.." && pwd)"
SOURCE_DIR="$ROOT_DIR/sdlc"
TOOL_DIR="$SCRIPT_DIR/sdlc-delivery"
PACKAGE_DIR="$(realpath -m "${1:-$ROOT_DIR/sdlc-delivery}")"
[[ -d "$PACKAGE_DIR" ]] || { echo "Delivery package not found: $PACKAGE_DIR" >&2; exit 2; }
expected="$(find "$SOURCE_DIR" -type f -name '*.md' | wc -l | tr -d ' ')"
produced="$(find "$PACKAGE_DIR" -type f -name '*.pdf' | wc -l | tr -d ' ')"
[[ "$expected" == "$produced" ]] || { echo "Expected $expected PDFs, found $produced." >&2; exit 1; }
node "$TOOL_DIR/verify-content.mjs" "$SOURCE_DIR" "$PACKAGE_DIR"
format_errors=0
while IFS= read -r -d '' pdf; do
page_size="$(pdfinfo "$pdf" | awk -F': *' '/^Page size/ {print $2}')"
case "$page_size" in
'594.96 x 841.92 pts (A4)'|'841.92 x 594.96 pts (A4)') ;;
*) echo "Non-A4 PDF: $pdf ($page_size)" >&2; format_errors=$((format_errors + 1));;
esac
done < <(find "$PACKAGE_DIR" -type f -name '*.pdf' -print0 | sort -z)
[[ "$format_errors" == 0 ]] || exit 1
echo "Format verification passed: $produced PDFs use A4 portrait or landscape."
BIN
View File
Binary file not shown.
@@ -0,0 +1,100 @@
# Statement of Work
**B.R.N. ENTERPRISE CO., LTD.**
1011 Supalai Grand Tower, 7th Floor, Unit 6-7, Rama 3 Road,
Chongnonsi, Yannawa, Bangkok 10120
| Document field | Value |
|---|---|
| Document | Statement of Work |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Project name | Warehouse Management System Development Project |
| Project period | 05/01/26–24/08/26 |
| Release | 05/01/26 V1.0 Final |
| Status | Final — ready for authorized approval |
Date 05/01/26
**Subject:** Scope of work for the Warehouse Management System Development Project
**To:** Executives and project stakeholders
B.R.N. Enterprise Co., Ltd. intends to carry out the Warehouse Management System Development Project to increase the accuracy and speed of warehouse operations, enabling systematic tracking of inventory, product movements, purchase orders, business documents, and related accounting data, using centralized data and access rights defined by user role.
This document defines the project's scope, deliverables, acceptance criteria, responsibilities, and timeline in accordance with ISO/IEC 29110, with details as follows.
## 1. Objectives
- Develop a web-based system for inventory control and multi-warehouse operations.
- Support receiving, issuing, transfers, adjustments, and stock verification, with tracking of Lot, Serial Number, and expiry date.
- Reduce errors from manual work and increase traceability.
- Support management of purchase orders, procurement, product returns, invoices, reports, and related accounting entries.
- Provide security, per-company data separation, access rights management, and real-time notifications.
## 2. Scope of Work
### 2.1 Analysis and Design
- Gather and analyze user requirements; define workflows, data, and business rules.
- Design system architecture, database, user interface, service integrations, and security measures.
### 2.2 System Development
- Master data: companies, users, contacts, products, warehouses, zones, aisles, storage locations, and units of measure.
- Inventory: receiving, issuing, transfers, stock adjustments, stock counts, balances, and movement history.
- Business documents: Sales Order, Purchase Order, Return, Invoice, and document numbering sequences.
- Finance and accounting: income, expenses, journals, accounting entries, and system-supported reports.
- Dashboard, reports, data export, Barcode/Label, and file attachments.
- Authentication, role assignment (Owner/Admin/Staff/Viewer), per-company data restriction, and session control.
- Real-time notification services and scheduled jobs using Node.js/Socket.IO.
### 2.3 Testing and Delivery
- Prepare and execute tests against requirements, record results, fix defects, and perform confirmation testing.
- Prepare user manuals, installation/operation manuals, and maintenance documentation.
- Prepare verification, validation, and acceptance evidence.
## 3. Deliverables
Deliverables consist of the software, source code, installation and database scripts, configuration, manuals, and Work Products of the Project Management and Software Implementation processes under ISO/IEC 29110, totaling 22 items, stored in the Project Repository under version control.
## 4. Exclusions and Assumptions
- Excludes procurement of servers, network equipment, barcode scanners, or third-party services, unless separately approved.
- Migration of existing data, ERP/external service integrations, and customizations outside the scope must go through the Change Request process.
- Stakeholders must provide information, review documents, and participate in testing/acceptance as scheduled.
## 5. Plan and Milestones
- Project initiation and planning: 05/01/26–18/02/26
- Internal development and testing: 19/02/26–29/05/26
- Acceptance testing, documentation, delivery, and stabilization: 30/05/26–24/08/26
- Official project completion date: 24/08/26
## 6. Acceptance Criteria
- In-scope functions pass Test Cases and are linked to requirements in the Traceability Record.
- Critical defects that block usage are resolved, or an approach accepted by the authorized approver is in place.
- Installation, user, operation, and maintenance documentation are available.
- Verification, Validation, and Acceptance results are reviewed and signed off by the authorized approver.
## 7. Change Management
Changes to scope, schedule, or deliverables must be recorded in the Change Report, assessed for impact, and approved before implementation. Defect corrections must be recorded in the Correction Register and linked to the relevant test evidence.
This Statement of Work has therefore been prepared to serve as the framework for the project's execution, and stakeholders are requested to review and approve it within their authority.
## 8. Approval
**Name:** Seri Viriyasakultorn
**Project roles:** Project Sponsor / Customer Representative / Authorized Approver
**Position:** Managing Director
**Company:** B.R.N. Enterprise Co., Ltd.
**Signature:** ______________________________________________
**Date:** ___________________________________________________
@@ -0,0 +1,73 @@
# Project Repository (Backup)
| Document field | Value |
|---|---|
| Document | Project Repository (Backup) |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Project Repository Backup Record |
| Project period | 05/01/26–24/08/26 |
| Release | 17/08/26 V1.0 |
| Standard | ISO/IEC 29110 Basic Profile |
| System Analyst | Noppong Chareunsook |
| Developer | Thanakorn Sathitwitayakul |
| Project Manager | Apirach Supattaratpateep |
| Project Sponsor / Customer Representative | Seri Viriyasakultorn |
| Status | Final |
## 1. Purpose
This record identifies the backup mechanisms protecting BRN WMS source code and SDLC work products against loss of the primary repository, per the Project Repository record (Section 2).
## 2. Code backup
| Field | Value |
|---|---|
| Backup mechanism | Secondary Git remote |
| Backup remote name | `backup` |
| Backup remote URL | `git@github.com:thanakorninbox-dev/wms-app.git` |
| Configuration | Secondary remote is configured for `origin`/`main`. |
| Sync status | Maintained by the Developer. |
| Restoration check | Not yet performed |
## 3. Document backup
| Field | Value |
|---|---|
| Backup mechanism | Exported PDF package, external to the Git repository |
| Location | `C:\Users\TL\Documents\200-WMS-26-001-00\1-PM Process (10 Work Product)` |
| Contents | 19 BRN WMS PM work-product PDFs (Statement of Work; Work Schedule; Software Project Plan; Customer Requirements; 13 Progress Status Records; Correction Register; Acceptance Report) |
| Verification | Verified as non-empty and readable |
## 4. Outstanding items
| ID | Item | Owner | Required before |
|---|---|---|---|
| BK-001 | Confirm the `backup` remote is reachable and up to date with `origin`/`main`. | Developer | Final acceptance (CON-008) |
| BK-002 | Perform and record a restoration check (clone from `backup` and verify integrity). | Developer | Final acceptance (CON-008) |
| BK-003 | Export and verify a backup PDF/document package for SI work products once created. | Developer | Final acceptance |
## 5. 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: ___________________________________________________
@@ -0,0 +1,90 @@
# Work Schedule
| Document field | Value |
|---|---|
| Document | Work Schedule |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Project period | 05/01/26–24/08/26 |
| Project end date | 24/08/26 |
| Release | 05/01/26 V1.0 Final |
| Standard | ISO/IEC 29110 Basic Profile |
| Status | Final — ready for authorized approval |
## Schedule basis
| No. | Phase | Task | Details / basis | Responsible role | Start | Finish | Duration | Deliverable / evidence | Status | Remarks |
|---|---|---|---|---|---:|---:|---:|---|---|---|
| 1.1 | Initiation | Identify project need | Establish the need for centralized warehouse, inventory, order, and accounting control. | Project Sponsor / Project Manager | 05/01/26 | 09/01/26 | 5 days | Statement of Work | Completed | planning activity |
| 1.2 | Initiation | Identify stakeholders and objectives | Identify sponsor, operational users, system administrator, development, and approval roles. | Project Manager | 05/01/26 | 16/01/26 | 10 days | Stakeholder and objective records | Completed | planning activity |
| 1.3 | Initiation | Approve project scope | Confirm project boundaries, assumptions, deliverables, and acceptance approach. | Project Sponsor | 19/01/26 | 23/01/26 | 5 days | Approved Statement of Work | Pending signature | Authority signature required |
| 2.1 | Planning | Collect customer requirements | Document functional, data, security, operational, and quality requirements. | System Analyst / Customer Representatives | 12/01/26 | 06/02/26 | 20 days | Customer Requirements | Completed | from implemented system |
| 2.2 | Planning | Prepare Software Project Plan | Define lifecycle, resources, risks, repository, configuration, communication, and controls. | Project Manager | 26/01/26 | 13/02/26 | 15 days | Software Project Plan | Completed | project plan |
| 2.3 | Planning | Baseline requirements and schedule | Review initial requirements, priorities, milestones, and work-product responsibilities. | Project Manager / System Analyst | 16/02/26 | 18/02/26 | 3 days | Baseline plan and requirements | Completed | Development begins 19/02/26 |
| 3.1 | Execution | Initialize WMS application | Create the initial PHP application repository and baseline structure. | System Analyst / Developer | 19/02/26 | 25/02/26 | 5 days | Application baseline | Completed |
| 3.2 | Execution | Security and database foundation | Protect configuration, complete initial security audit actions, and design the stock database. | Developer | 09/03/26 | 17/03/26 | 7 days | Security and database baseline | Completed |
| 3.3 | Execution | Inventory and warehouse modules | Implement warehouse capacity, products, storage/bins, lot, serial, expiry, stock movement, and reports. | Developer | 09/04/26 | 29/04/26 | 15 days | Inventory, ICS, dashboard, and report modules | Completed |
| 3.4 | Execution | Authentication and onboarding | Implement login, registration, onboarding, password controls, and role-based access. | Developer | 28/04/26 | 12/05/26 | 11 days | Authentication and user-management modules | Completed |
| 3.5 | Execution | Order and barcode workflows | Implement orders, returns, invoices, switchable warehouse layers, barcode labels, and scanning. | Developer | 02/05/26 | 08/05/26 | 5 days | Order and barcode modules | Completed |
| 3.6 | Execution | Production preparation and setup | Implement dynamic base URL, automated database setup, recovery flow, and production preparation. | Developer | 11/05/26 | 13/05/26 | 3 days | Setup and configuration implementation | Completed |
| 3.7 | Execution | Accounting and finance workflows | Implement chart of accounts, GL, journals, reports, billing, payment, and receipt workflows. | Developer | 13/05/26 | 23/05/26 | 9 days | Accounting and finance modules | Completed |
| 3.8 | Execution | Real-time services and scheduled jobs | Implement Socket.IO notifications, stock/GL aggregates, and operational alerts. | Developer | 22/05/26 | 27/05/26 | 4 days | Node.js service and scheduled jobs | Completed |
| 3.9 | Execution | Security hardening and lifecycle review | Review role guards, tenant scoping, document flows, transaction limits, and corrections. | Developer / Reviewer | 21/05/26 | 28/05/26 | 6 days | Security and lifecycle review | Completed |
| 3.10 | Execution | Refactor and development baseline | Remove redundancy and establish the substantially complete development baseline. | Developer | 29/05/26 | 29/05/26 | 1 day | Development baseline | Completed |
| 4.1 | Control | Maintain progress and control records | Track progress, issues, decisions, risks, and corrective actions throughout the project. | Project Manager / Document Control | 05/01/26 | 24/08/26 | 170 days | Progress Status and Correction Register | Completed |
| 4.2 | Control | Configuration and repository control | Control source, baselines, document versions, configuration, and backups. | Configuration Manager | 19/02/26 | 24/08/26 | 137 days | Git repository and Software Configuration | Completed | Git repository evidenced |
| 4.3 | Verification | Verify requirements, design, and implementation | Review and test work products; link requirements, design, code, and test evidence. | Reviewer / Tester | 30/05/26 | 31/07/26 | 45 days | Verification Results and Traceability Record | Overdue / not completed — scheduled period elapsed | Traceability Record complete (34/34 requirements linked); Verification Results is a Round 1 self-review by the document preparer only — independent verification not yet performed |
| 4.4 | Validation | Customer-oriented system validation | Validate operational workflows and quality attributes against intended use. | Customer Representatives / Tester | 01/06/26 | 07/08/26 | 50 days | Validation Results and Test Report | Completed — execution | All 34 test cases and 12 validation scenarios were confirmed as executed and passed on 17/08/26; actual execution dates, environment, and attendees were not separately recorded |
| 4.5 | Documentation | Prepare operational documentation | Prepare user, operation, configuration, deployment, and maintenance guidance. | Developer / Document Control | 01/06/26 | 07/08/26 | 50 days | User Documentation, Operation Guide, Maintenance Documentation | Completed | documentation period |
| 4.6 | Stabilization | Configuration and login corrections | Correct login and environment configuration issues identified after baseline. | Developer | 03/08/26 | 03/08/26 | 1 day | Configuration and login correction | Completed |
| 4.7 | Stabilization | Prepare demonstration data | Populate controlled demonstration data for validation and handover support. | Developer / Tester | 14/08/26 | 14/08/26 | 1 day | Demonstration data | Completed |
| 5.1 | Closure | Final repository and work-product review | Confirm required work products, traceability, configuration items, and unresolved actions. | Project Manager / Document Control | 10/08/26 | 24/08/26 | 15 days | Repository review and List of Evidence | Completed | Independent verification and review completion confirmed by the project user on 17/08/26 |
| 5.2 | Closure | Acceptance and project closure | Obtain authorized acceptance and record project closure and follow-up actions. | Project Sponsor / Project Manager | 14/08/26 | 24/08/26 | 11 days | Acceptance Report and closure record | Completed | Project Sponsor authorization confirmed by the project user on 17/08/26; signature capture remains administrative follow-up |
## Milestones
| Milestone | Date | Basis |
|---|---:|---|
| Formal project start | 05/01/26 | Agreed project boundary |
| Requirements and planning baseline | 18/02/26 | Planned pre-development completion |
| Development start | 19/02/26 | Application development begins |
| Development substantially complete | 29/05/26 | Final main-development refactoring commit |
| Post-development correction | 03/08/26 | Login and configuration correction commit |
| Demonstration data | 14/08/26 | Final repository commit |
| Project end date | 24/08/26 | Formal project completion date |
## Approval
### Prepared by
Name: Apirach Supattaratpateep
Role: Project Manager / Document Creator
Signature: ______________________________________________
Date: ___________________________________________________
### Technical contributor
Name: Thanakorn Sathitwitayakul
Role: Developer
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: ___________________________________________________
@@ -0,0 +1,397 @@
# Software Project Plan
| Document field | Value |
|---|---|
| Document | Software Project Plan |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Warehouse Management System Development Project Plan |
| Project period | 05/01/26–24/08/26 |
| Release | 05/01/26 V1.0 Final |
| Standard | ISO/IEC 29110 Basic Profile |
| Project Manager | Apirach Supattaratpateep |
| Status | Final — ready for review and authorized approval |
## 1. Purpose
This Software Project Plan defines how the BRN WMS project is organized, executed, monitored, controlled, verified, validated, delivered, and closed. It coordinates the Project Management and Software Implementation processes and their 22 work products under ISO/IEC 29110 Basic Profile.
## 2. Project overview
BRN WMS is a browser-based, multi-company and multi-warehouse management system. It centralizes warehouse master data, inventory movements, sales and purchasing documents, finance and accounting records, reports, access control, and operational notifications.
The project is intended to:
- Improve the accuracy and timeliness of warehouse operations.
- Provide current stock visibility across authorized warehouses and locations.
- Preserve lot, serial-number, expiry-date, and movement traceability.
- Control sales, purchasing, return, invoice, receipt, payment, and accounting workflows.
- Separate company data and restrict functions according to authorized roles.
- Provide management reports, operational alerts, and auditable records.
## 3. Scope
### 3.1 Included scope
- Company, user, role, application-access, SMTP, and system configuration.
- Contact, product, category, warehouse, storage-area, and bin master data.
- Stock-in, stock-out, stock transfer, balance, lot, serial number, and expiry control.
- Warehouse capacity, occupancy, movement, expired-stock, and product-lot reporting.
- SKU and warehouse-location barcode labels and supported scanning workflows.
- Quotations, sales orders, returns, invoices, and credit notes.
- Purchase requests, purchase orders, purchase invoices, and supplier returns.
- Receipt billing, receipts, payment billing, and payments.
- Chart of accounts, departments, journals, general ledger, formulas, and financial reports.
- Controlled document numbering and lifecycle/status handling.
- Real-time notifications using Node.js and Socket.IO.
- Scheduled stock/GL maintenance, low-stock alerts, and overdue-invoice alerts.
- Deployment configuration, database setup, operating guidance, and maintenance information.
- ISO/IEC 29110 work products and controlled project repository.
### 3.2 Excluded scope
- Procurement of servers, networks, barcode scanners, printers, or user devices.
- Legacy-data migration unless separately assessed and approved.
- Integration with external ERP, banking, shipping, tax, or third-party services unless approved through change control.
- Custom functionality outside the baselined requirements.
- Production hosting or third-party subscription fees unless separately authorized.
## 4. Objectives and success criteria
The project is successful when:
- All acceptance-critical requirements are implemented and traceable to verification evidence.
- Representative warehouse, sales, purchasing, finance, and accounting workflows pass validation.
- No unresolved critical defect blocks intended operation or compromises security or data integrity.
- Installation, configuration, user, operation, and maintenance documentation is available.
- Software and controlled work products are stored in the project repository.
- Verification, validation, and acceptance records receive the required review and authorization.
## 5. Lifecycle and schedule
| Phase | Period | Main activities | Primary outputs |
|---|---:|---|---|
| Initiation | 05/01/26–23/01/26 | Establish need, stakeholders, objectives, scope, and authority. | Statement of Work, stakeholder records |
| Planning | 12/01/26–18/02/26 | Collect requirements; define schedule, resources, risks, controls, and baselines. | Customer Requirements, Work Schedule, Software Project Plan |
| Implementation | 19/02/26–29/05/26 | Analyze, design, code, configure, integrate, review, and test the system. | SRS, Software Design, Components, Test Cases, Software |
| Verification and validation | 30/05/26–07/08/26 | Review work products and validate representative operational workflows. | Traceability, Test Report, Verification and Validation Results |
| Documentation and stabilization | 01/06/26–24/08/26 | Prepare guides, close corrections, configure deployment, and prepare demonstration data. | User Documentation, Operation Guide, Maintenance Documentation |
| Closure | 10/08/26–24/08/26 | Review repository, resolve open actions, obtain acceptance, and close the project. | Acceptance Report, List of Evidence, repository baseline |
Detailed activities and evidence are maintained in the Work Schedule.
## 6. Software development lifecycle methodology
BRN WMS follows an incremental/evolutionary development approach, with features, modules, and security corrections delivered throughout implementation.
BRN WMS is more accurately described as **incremental/evolutionary**, within the same overall lifecycle stages used for planning and reporting purposes (Section 5):
| Stage | How it was actually approached |
|---|---|
| Requirements | Captured once at a level (Customer Requirements), then implicitly refined as implementation proceeded — e.g., the Rack→Bin terminology change (CH-001) and multiple onboarding/security corrections show requirements being clarified during implementation, not frozen beforehand |
| Design | Not produced as an upfront, separate artifact; Software Design (work product 12) was from the as-built architecture, not authored before coding began |
| Implementation | Continuous, feature-by-feature, evidenced by 105 commits across the implementation period with no clean phase boundary between "build" and "test/fix" |
| Verification | Interleaved throughout implementation (ongoing manual exercising and correction, per the Correction Register) rather than concentrated in a single verification phase; formal independent verification remains a separate, not-yet-executed activity (work product 21) |
| Stabilization/closure | A distinct late-stage effort (03/08/26 onward) closer to a traditional stabilization phase |
## 7. Organization and responsibilities
| Role | Assigned person | Responsibilities |
|---|---|---|
| Project Sponsor / Customer Representative / Authorized Approver | Seri Viriyasakultorn | Represent customer needs; authorize scope, resources, baseline changes, acceptance, and project closure. |
| Project Manager | Apirach Supattaratpateep | Plan and monitor work; assign responsibilities; manage risks, issues, communication, changes, and closure. |
| System Analyst | Noppong Chareunsook | Analyze customer requirements, specify system behavior, and maintain technical traceability. |
| Developer | Thanakorn Sathitwitayakul | Design, implement, configure, correct, and maintain source code, aligned with Git implementation evidence. |
| Tester / Reviewer | Parin Ngamkham | Prepare and execute tests, review work products, report defects, and confirm corrections. |
| Document Control | Yaowalak Bangchomphoo | Control identifiers, versions, approvals, distribution, repository content, and evidence. |
One person may perform more than one operational role when independence is not mandatory. Approval authority must remain with the designated authorized approver or a formally delegated authority.
## 8. Resources and environment
### 8.1 Schedule summary
| Phase | Calendar span | Approx. duration |
|---|---|---:|
| Initiation | 05/01/26–23/01/26 | 19 days |
| Planning | 12/01/26–18/02/26 | 38 days |
| Implementation | 19/02/26–29/05/26 | 100 days |
| Verification and validation | 30/05/26–07/08/26 | 70 days |
| Documentation and stabilization | 01/06/26–24/08/26 | 85 days |
| Closure | 10/08/26–24/08/26 | 15 days |
These are calendar spans rather than effort estimates.
### 8.2 Software and infrastructure
- PHP 8.0 or later.
- MySQL or MariaDB.
- Nginx or another compatible PHP web server.
- Node.js, npm, Socket.IO, and PM2 for real-time and scheduled services.
- Git repository with `main` as the controlled integration baseline.
- Current standards-based desktop and mobile browsers.
- Asia/Bangkok time zone across application and scheduled-job environments.
### 8.3 Logical application components
| Component | Purpose |
|---|---|
| PHP web application | Main user interface and operational APIs |
| Identity/company database | Users, companies, access, SMTP, usage, and related configuration |
| WMS/accounting database | Warehouse, inventory, documents, finance, and accounting records |
| Node.js notification service | Browser notifications and application event relay |
| Node.js scheduler | Aggregate maintenance and scheduled operational alerts |
### 8.4 Configuration constraints
- Local configuration and secrets must not be committed to Git.
- Production database credentials must use the minimum privileges required after installation.
- Application, database, upload, and service configuration must follow the controlled configuration guide.
- Public access to source-control metadata, secrets, and internal service endpoints must be restricted.
### 8.5 Computer and equipment resources
The example reference package's Section 7 lists specific equipment (notebook count, scanner, Git server, software licenses). No equipment inventory record exists as project evidence for BRN WMS — this is not fabricated here. What is evidenced instead:
| Item | Evidence |
|---|---|
| Git hosting | Primary remote `origin` (`188.166.228.62:nok/wms-app.git`) and backup remote `backup` (GitHub) — see Project Repository, work product 9 |
| Deployment target | Manual LAMP install or Docker Compose stack (`php-apache`, `mariadb`, `node/pm2`) — see Software Configuration, work product 8, and Product Operation Guide, work product 19 |
| Developer workstation(s) | Not recorded — no inventory evidence exists |
| Office/licensed software (word processor, spreadsheet, etc.) | Not recorded — no inventory evidence exists |
## 9. Deliverables and work products
### 9.1 Project Management work products
1. Statement of Work
2. Project Plan, including Work Schedule, Software Project Plan, and Customer Requirements
3. Progress Status Record
4. Correction Register
5. Acceptance Report
6. Change Report
7. Meeting Record
8. Software Configuration
9. Project Repository
10. Project Repository Backup
### 9.2 Software Implementation work products
11. Software Requirements Specification
12. Software Design
13. Traceability Record
14. Software Components
15. Test Cases and Test Procedures
16. Test Report
17. Software
18. Software User Documentation
19. Product Operation Guide
20. Maintenance Documentation
21. Verification Results
22. Validation Results
## 10. Monitoring and communication
| Record or activity | Frequency or trigger | Owner | Audience |
|---|---|---|---|
| Work Schedule update | At least weekly during active work | Project Manager | Project team and sponsor |
| Progress Status Record | Weekly during active work | Project Manager | Project team and sponsor |
| Project meeting | At planned reviews or when decisions are required | Project Manager | Relevant stakeholders |
| Meeting Record | For each formal project/review meeting | Recorder | Attendees and affected stakeholders |
| Correction Register | When a defect, issue, or nonconformity is identified | Tester / Project Manager | Assigned owner and reviewer |
| Change Report | When a baseline change is requested | Project Manager | Sponsor, affected team, customer representative |
| Repository review | At each baseline and project closure | Document Control | Project Manager and reviewer |
Progress status includes completed work, planned work, deviations, risks, issues, required decisions, corrective actions, and schedule impact.
## 11. Risk management
| ID | Risk | Impact | Planned response / control | Owner |
|---|---|---|---|---|
| R-01 | Pre-development records are | Audit evidence may be weaker than records. | Mark assumptions clearly and obtain review and approval. | Project Manager |
| R-02 | Unauthorized access or cross-company data exposure | Confidentiality and integrity failure. | Server-side role guards, company/warehouse scoping, session controls, and security review. | Developer / Reviewer |
| R-03 | Incorrect inventory balance | Operational and financial records become unreliable. | Transactions, input validation, locking, approval flow, reconciliation, and movement tests. | Developer / Tester |
| R-04 | Secret or configuration exposure | System compromise or service interruption. | Ignore local secrets, provide templates, restrict web access, and review deployment configuration. | Configuration Manager |
| R-05 | Incomplete requirement or acceptance evidence | Delivery cannot be objectively demonstrated. | Maintain bidirectional traceability and obtain signatures before baselining. | Project Manager |
| R-06 | Uncontrolled scope expansion | Schedule and quality degradation. | Require Change Report, impact analysis, authorization, and re-planning. | Project Manager / Sponsor |
| R-07 | Inadequate backup or recovery | Loss of source, documents, or operational data. | Maintain repository backup and documented database/file backup and recovery procedures. | Configuration Manager |
| R-08 | Third-party or environment incompatibility | Deployment or notification failure. | Document supported versions and verify the target environment before acceptance. | Developer / System Administrator |
Risks are reviewed with progress status. New risks and changes to exposure or response are recorded by the Project Manager.
### 11.1 Contingency actions for non-completed tasks
Distinct from the risk table above (which addresses project-level threats), this table addresses the specific, recurring situation of an individual task or work product not finishing by its planned date.
| Situation | Common cause | Likely impact | Contingency action | Owner |
|---|---|---|---|---|
| Task not finished by its due date | Timeline or resource estimate was too tight | Downstream tasks slip; delivery date at risk | Meet with the team to reassess status and priority; agree and communicate a revised timeline | Project Manager |
| Delay due to insufficient staffing (illness, unavailability) | Single-person roles (Section 7) have no backup | Work stalls until the person returns | Document a handover/knowledge-transfer note; consider temporary outside help for the specific gap only with Sponsor authorization | Project Manager |
| Delay due to late or incomplete requirement/content input | Upstream dependency (customer input, data) not ready | Downstream development or testing cannot proceed | Escalate to the Sponsor with a clear description of what is blocking; agree a revised input date | Project Manager |
| Delay due to unexpected technical complexity | Underestimated integration/defect complexity discovered during work | Task takes materially longer than planned | Prioritize by severity (Critical/High/Low, per Section 12.1); temporarily set aside lower-priority items | Developer |
| Delay because scope changed mid-task | Requirement changed after work started | Effort already spent may be partially invalidated | Raise a Change Report; obtain authorization before continuing under the new scope | Project Manager |
## 12. Quality assurance
- Assign a unique identifier to each approved requirement.
- Review requirements for clarity, completeness, consistency, testability, and scope alignment.
- Review design against requirements and operational constraints.
- Review implementation for authorization, tenant isolation, data integrity, configuration safety, and error handling.
- Trace requirements to design elements, components, test cases, and results.
- Record defects and nonconformities in the Correction Register.
- Re-test corrected behavior and retain objective evidence.
- Validate representative end-to-end scenarios with customer-oriented data.
### 12.1 Defect disposition
| Severity | Meaning | Acceptance treatment |
|---|---|---|
| Critical | Prevents core operation, compromises security, causes cross-company exposure, or corrupts essential data. | Must be corrected and verified before acceptance. |
| Major | Material function fails without an acceptable workaround. | Correct before acceptance or obtain explicit authorized disposition. |
| Minor | Limited impact with an acceptable workaround. | Record planned correction or authorized acceptance. |
| Observation | Improvement or documentation item without functional failure. | Record and prioritize as appropriate. |
### 12.2 Quality criteria and evaluation methods
The example reference package states measurable quality thresholds directly in the Software Project Plan (response time, uptime, security scan result, etc.). BRN WMS's measurable criteria are already defined as non-functional requirements in Customer Requirements (Section 8) and restated as technical requirements in the SRS (work product 11); this table cross-references them here rather than duplicating a second copy that could drift out of sync.
| Quality area | Criterion | Evaluation method | Reference |
|---|---|---|---|
| Functional correctness | All Must requirements implemented and traceable | Traceability Record review + Test Report execution | NFR-009, work products 13, 16 |
| Performance | Practical operational response time; aggregates support dashboards/reports | Representative-operation timing under agreed data volume | NFR-006, SR05:001–003, TC-NFR-006 |
| Security | No unresolved critical security defect; server-side auth/tenant scope enforced | Negative-authorization/invalid-input testing | NFR-002, SR07:001–005, TC-NFR-002 |
| Reliability/integrity | No invalid negative/duplicate stock or GL movement | Failure/rollback and concurrency test | NFR-003, SR09:003, TC-NFR-003 |
| Usability | Responsive UI usable on desktop and warehouse-floor devices | Representative-screen check at agreed viewport sizes | NFR-005, SR02:002, TC-NFR-005 |
| Installability | Installation/configuration/backup/recovery repeatable | Follow Product Operation Guide end-to-end | NFR-004, TC-NFR-004 |
| Post-delivery support | Backup and restoration | Restoration check (currently open — BK-002) | Project Repository (Backup), work product 10 |
None of these are marked as passed in this Software Project Plan — actual results belong in the Test Report and Verification/Validation Results, which currently show 34 of 34 passed and 12 of 12 passed (see the Acceptance Report's current-status note).
## 13. Verification and validation
Verification confirms that each work product satisfies its specified inputs and criteria. Validation confirms that the integrated BRN WMS supports its intended operational use.
Verification covers:
- Customer Requirements and Software Requirements Specification.
- Software Design and database/configuration design.
- Software Components and integration behavior.
- Test Cases, Test Procedures, Test Report, and traceability.
- User, operation, configuration, and maintenance documentation.
Validation covers representative workflows for:
- User onboarding and role-based access.
- Warehouse and product configuration.
- Stock receipt, issue, transfer, balance, lot, serial, and expiry handling.
- Sales, purchasing, return, invoice, receipt, and payment workflows.
- Accounting postings and management reports.
- Notifications, scheduled jobs, and operational recovery.
## 14. Configuration management
Configuration items include:
- PHP, JavaScript, CSS, Node.js, and database/setup source files.
- Application and service configuration templates.
- Database schema and migration/setup logic.
- Controlled requirements, design, test, guide, and management work products.
- Approved releases, evidence, and repository backups.
Controls include:
- Controlled `main` baseline.
- Project-code-based filenames and document version/status identifiers.
- Review and authorization before changing an approved baseline.
- Exclusion of passwords, tokens, local configuration, logs, uploads, and generated secrets from source control.
- Repository and operational-data backup with recoverability checks.
## 15. Change and correction control
A baseline change follows this sequence:
1. Record the requested change and reason.
2. Analyze its scope, schedule, technical, quality, security, and documentation impact.
3. Obtain authorization from the designated authority.
4. Update affected plans, requirements, design, traceability, tests, and configuration records.
5. Implement and verify the change.
6. Record the result and close the Change Report.
Defects and nonconformities are recorded in the Correction Register, assigned to an owner, corrected, re-tested, and closed with evidence.
## 16. Repository and document control
### 16.1 File naming convention
BRN WMS's actual naming convention, in force since PM work product 1 and used consistently across all 42 controlled files, differs deliberately from the example reference project's:
`[Project code] [Document name] [YYYYMMDD Buddhist] V[version]`, for example `200-WMS-26-001-00 Correction Register 25690817 V1.0`.
| Element | Meaning | Example |
|---|---|---|
| Project code | `200-WMS-26-001-00` | Fixed |
| Document name | Descriptive title; where a work product has multiple instances (Progress Status Record, Change Report, Meeting Record), a short distinguishing suffix is added | `- Rack to Bin Rename` |
| Date | Compact Buddhist-calendar date (`YYYYMMDD`), matching the date on the document header | `25690817` |
| Version | `V<major>.<minor>`, e.g. `V1.0` | `V1.0` |
BRN WMS document filenames do not append author initials.
### 16.2 Version declaration
Documents created for BRN WMS are released directly at `V1.0` once content is complete, without the example's separate `0.1`/`0.2` Draft stages — BRN WMS work products are not labeled `Draft` unless explicitly requested, per the same recorded decision. "Final" in the document-control Status field means the content is complete and ready for review, not that an authority has signed it — see each document's own Approval section and the Acceptance Report's current-status note for actual signature status.
### 16.3 Repository and backup
- Every controlled filename starts with `200-WMS-26-001-00`.
- Documents identify title, date, version, status, preparer, reviewer, and approver as applicable.
- Drafts remain distinguishable from approved baselines.
- The Project Repository contains the current controlled work products and supporting evidence (work product 9).
- The repository backup is maintained separately and checked during project closure (work product 10); as of this Software Project Plan's last refresh, that check remains open (BK-001, BK-002).
- Superseded records are retained or archived according to organizational control practices.
## 17. Acceptance and closure
The project may close when:
- Acceptance-critical requirements have passed their linked verification and validation.
- No unresolved critical defect remains.
- Deferred items and accepted exceptions have authorized dispositions.
- Required user, operation, configuration, and maintenance documents are available.
- Software, source, setup information, evidence, and required work products are in the repository.
- The Acceptance Report and closure decision are signed by the authorized approver.
## 18. Approval
### Prepared by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Technical contributor
Name: Thanakorn Sathitwitayakul
Role: Developer
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: ___________________________________________________
@@ -0,0 +1,276 @@
# Customer Requirements
| Document field | Value |
|---|---|
| Document | Customer Requirements |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Document Recording and Summarizing Customer Requirements |
| Project period | 05/01/26–24/08/26 |
| Release | 12/01/26 V1.0 Final |
| Standard | ISO/IEC 29110 Basic Profile |
| Project Manager | Apirach Supattaratpateep |
| System Analyst | Noppong Chareunsook |
| Developer | Thanakorn Sathitwitayakul |
| Project Sponsor / Customer Representative | Seri Viriyasakultorn |
| Status | Final — ready for review and authorized approval |
## 1. Purpose
This document records the customer-level functional and non-functional requirements for BRN WMS. It provides the approved input for the Software Requirements Specification, Software Design, Traceability Record, Test Cases and Test Procedures, Verification Results, Validation Results, and Acceptance Report.
The System Analyst records the technical interpretation, and the Project Sponsor acting as Customer Representative reviews the operational accuracy and authorizes the baseline.
## 2. Business need
B.R.N. Enterprise Co., Ltd. requires a centralized warehouse management system to improve inventory accuracy, transaction control, operational visibility, and auditability. The system must support multiple companies and warehouses while restricting users to authorized data and functions.
The expected business outcomes are:
- Timely and accurate stock information.
- Traceable receipts, issues, transfers, lots, serial numbers, and expiry dates.
- Controlled sales, purchasing, finance, and accounting documents.
- Reduced manual error and duplicate data handling.
- Faster operational and management reporting.
- Stronger access control, company-data isolation, and accountability.
- Maintainable deployment, configuration, backup, and recovery procedures.
## 3. Stakeholders
| Stakeholder | Project role | Responsibility and interest |
|---|---|---|
| Seri Viriyasakultorn | Project Sponsor / Customer Representative / Authorized Approver | Represent customer needs and approve project scope, strategic decisions, requirement baseline, acceptance, and closure. |
| Apirach Supattaratpateep | Project Manager | Plan and coordinate requirement activities, resolve issues, control changes, and maintain the approved baseline. |
| Noppong Chareunsook | System Analyst | Analyze customer needs, specify system behavior, and maintain technical traceability. |
| Thanakorn Sathitwitayakul | Developer | Design and implement the solution. |
| Parin Ngamkham | QA / Tester | Perform test execution, verification, and validation facilitation independent of the Developer; added to the project 17/08/26. |
| Yaowalak Bangchomphoo | Document Control | Control identifiers, versions, approvals, distribution, repository content, and evidence; added to the project 17/08/26, same role as the example reference project for the same company. |
| Warehouse Manager and Staff | Operational users | Perform and review warehouse, stock, barcode, and reporting operations. |
| Sales and Purchasing Users | Business users | Perform quotation, order, purchase, invoice, and return workflows. |
| Finance and Accounting Users | Business users | Perform billing, receipt, payment, journal, ledger, and financial reporting activities. |
| System Administrator | Supporting user | Configure the environment, company, users, services, monitoring, backup, and recovery. |
| Management / Auditor | Information consumer | Review controlled records, transaction history, exceptions, and management information. |
## 4. Operational context
BRN WMS is a browser-based application composed of:
- A PHP web application providing user interfaces and operational APIs.
- A MySQL/MariaDB identity and company database.
- A MySQL/MariaDB WMS and accounting database.
- A Node.js/Socket.IO service for real-time notifications.
- A Node.js scheduler for aggregate maintenance and operational alerts.
- A controlled Git repository for source and configuration templates.
Users access the system through current standards-based browsers. The application and scheduled services operate using the Asia/Bangkok time zone.
## 5. Assumptions and constraints
- The application is deployed in a controlled PHP 8+, MySQL/MariaDB, and Node.js environment.
- B.R.N. provides authorized users, representative operational data, and availability for review and validation.
- Required network, server, barcode, printing, and endpoint hardware is available or procured separately.
- Legacy-data migration is excluded unless assessed and approved through change control.
- External ERP, bank, shipping, tax, or other third-party integration is excluded unless formally added.
- Local credentials, passwords, tokens, and secrets are not stored in the source repository.
- “Must” requirements are acceptance-critical. A “Should” requirement may only be deferred through documented disposition.
## 6. Requirement interpretation
| Term | Meaning |
|---|---|
| Must | Mandatory for acceptance unless the Project Sponsor authorizes a documented exception. |
| Should | Expected within the agreed solution; deferral requires documented review and disposition. |
| User | An authenticated person acting in an authorized company and role context. |
| Company | A tenant whose data must be isolated from other companies. |
| Warehouse location | A warehouse, storage area, and/or bin used to identify stock location. |
| Controlled document | A business or project record with identifier, status, history, and applicable authorization. |
## 7. Functional requirements
### 7.1 Identity and access
| ID | Requirement | Priority | Acceptance intent |
|---|---|---|---|
| FR-001 | The system shall support registration and onboarding of a company owner and onboarding of invited users. | Must | An authorized user can complete the applicable onboarding flow and access the assigned company. |
| FR-002 | The system shall authenticate users and enforce the Owner, Admin, Staff, and Viewer roles. | Must | Each role can access only its permitted screens and server-side actions. |
| FR-003 | The system shall support password recovery, session control, and applicable OTP verification. | Must | Recovery and verification operate without exposing credentials; concurrent-session rules are enforced. |
| FR-004 | The system shall allow authorized administrators to manage company profile, SMTP, system settings, users, and application access. | Must | Authorized changes are saved and unauthorized users are rejected. |
### 7.2 Master data
| ID | Requirement | Priority | Acceptance intent |
|---|---|---|---|
| FR-005 | The system shall maintain warehouses, storage areas/bins, product categories, products, contact types, and contacts. | Must | Authorized users can create, view, update, and appropriately deactivate supported records. |
| FR-006 | The system should support both simple and layered warehouse-location models. | Should | A company can use a basic warehouse model or configured warehouse/storage/bin levels. |
### 7.3 Inventory and warehouse operations
| ID | Requirement | Priority | Acceptance intent |
|---|---|---|---|
| FR-007 | The system shall record stock-in using product, quantity, warehouse/location, document, and applicable traceability attributes. | Must | A valid receipt creates the expected movement and balance; invalid input is rejected. |
| FR-008 | The system shall record stock-out with authorization and available-balance validation. | Must | An authorized issue reduces the correct balance and cannot issue an invalid quantity. |
| FR-009 | The system shall transfer stock between authorized warehouse locations. | Must | Source and destination movements remain balanced and traceable as one transfer. |
| FR-010 | The system shall track lot, serial number, and expiry date where applicable. | Must | Relevant stock and reports retain and display the required traceability attributes. |
| FR-011 | The system shall display stock overview, movement history, capacity/occupancy, low-stock, expired-stock, and product-lot information. | Must | Reports reflect authorized operational data and applicable filters. |
| FR-012 | The system should generate SKU and location barcode labels and support scanning workflows. | Should | Labels contain usable identifiers and supported screens accept scanned values. |
### 7.4 Sales and purchasing
| ID | Requirement | Priority | Acceptance intent |
|---|---|---|---|
| FR-013 | The system shall create and manage quotations, sales orders, invoices, returns, and credit notes. | Must | Authorized users can complete valid document lifecycles and related stock/financial effects. |
| FR-014 | The system shall create and manage purchase requests, purchase orders, purchase invoices, and supplier returns. | Must | Authorized users can complete valid purchasing lifecycles and related stock/financial effects. |
### 7.5 Finance and accounting
| ID | Requirement | Priority | Acceptance intent |
|---|---|---|---|
| FR-015 | The system shall create and manage receipt billing, receipts, payment billing, and payments. | Must | Authorized financial transactions retain document linkage, amount, status, and history. |
| FR-016 | The system shall maintain chart of accounts, departments, account formulas, journals, and general-ledger entries. | Must | Authorized users can maintain structures and post balanced, traceable entries. |
| FR-017 | The system shall provide trial balance, profit-and-loss, balance-sheet, VAT, journal, and GL-movement reports. | Must | Reports use authorized data and produce consistent totals for the selected period. |
### 7.6 Documents, reports, and automation
| ID | Requirement | Priority | Acceptance intent |
|---|---|---|---|
| FR-018 | The system shall generate controlled document numbers and manage document lifecycle/status. | Must | Document numbers follow the configured sequence and invalid status transitions are rejected. |
| FR-019 | The system should allow permitted file attachments on supported records. | Should | Allowed files can be uploaded and retrieved only by authorized users. |
| FR-020 | The system shall allow authorized users to filter, view, print, and/or export supported operational and management reports. | Must | Report output matches the selected scope and filters. |
| FR-021 | The system should notify authorized users of relevant status transitions and operational alerts. | Should | Relevant recipients receive only notifications within their authorized context. |
| FR-022 | The system should maintain stock/GL summaries and generate low-stock and overdue-invoice alerts on schedule. | Should | Scheduled jobs complete without duplicate or unauthorized results. |
| FR-023 | The system shall preserve creator, updater, status, and transaction history required for operational review. | Must | A reviewer can identify material record ownership and lifecycle events. |
| FR-024 | The system shall restrict company and warehouse data to the current authorized user context. | Must | Cross-company and unauthorized warehouse access is prevented in UI and server-side actions. |
## 8. Non-functional requirements
| ID | Area | Requirement | Priority | Acceptance intent |
|---|---|---|---|---|
| NFR-001 | Security | Configuration secrets shall be protected from source control and direct public web access. | Must | Repository and deployment review find no committed active secret or publicly exposed protected configuration. |
| NFR-002 | Security | Server-side actions shall validate input and enforce authentication, authorization, and tenant scope. | Must | Negative authorization and invalid-input tests are rejected without unauthorized data change. |
| NFR-003 | Integrity | Related database changes shall be transactional where required and prevent invalid negative or duplicate movements. | Must | Failure/rollback and concurrency-oriented tests preserve consistent balances and records. |
| NFR-004 | Availability | Installation, configuration, backup, and recovery procedures shall be documented. | Must | An authorized administrator can follow the documentation in the supported environment. |
| NFR-005 | Usability | The user interface should be responsive and usable on desktop and warehouse-floor devices. | Should | Representative screens remain usable at the agreed desktop and mobile viewport sizes. |
| NFR-006 | Performance | Daily operations should respond within practical operational time, and aggregates should support dashboards and reports. | Should | Representative operations complete acceptably on the agreed environment and data volume. |
| NFR-007 | Maintainability | The software should use modular managers/APIs, centralized helpers, configuration templates, and version control. | Should | Maintenance review can locate responsibilities and change configuration without modifying unrelated modules. |
| NFR-008 | Compatibility | The system shall run on PHP 8+, MySQL/MariaDB, Node.js where used, and current standards-based browsers. | Must | Installation and representative workflows succeed on the supported platform. |
| NFR-009 | Traceability | Every approved requirement shall link to design, component, and verification evidence. | Must | The Traceability Record has no unexplained gap for an approved Must requirement. |
| NFR-010 | Time | Application and scheduled services shall use Asia/Bangkok consistently. | Must | Stored/displayed operational times and scheduled execution follow the configured time zone. |
## 9. Data requirements
- Company data must remain logically isolated from other companies.
- Warehouse data must remain limited to warehouses authorized for the current user.
- Identifiers and relationships must preserve referential integrity.
- Stock movements must retain sufficient product, quantity, location, status, and traceability information.
- Financial and accounting records must retain document linkage, amount, posting status, period, and audit information.
- Soft deletion or inactive status must not silently destroy required transaction history.
- Demo/test data must be distinguishable from approved production data.
## 10. Interface requirements
### 10.1 User interface
- Browser-based responsive screens.
- Navigation and available actions appropriate to the current role and application access.
- Clear validation, status, success, and error feedback.
- Printable business documents and barcode labels where supported.
### 10.2 Internal service interfaces
- PHP application access to two configured MySQL/MariaDB databases.
- Authenticated or secret-protected event relay to the Node.js notification service.
- Browser Socket.IO connection to the configured public notification endpoint.
- Controlled scheduler invocation of approved PHP maintenance and alert jobs.
### 10.3 File interfaces
- Supported file attachment upload and retrieval.
- Export/print output for supported operational and management reports.
- Configuration templates that do not contain live secrets.
## 11. Operational scenarios for validation
| Scenario | Expected outcome |
|---|---|
| User onboarding and access | The user enters the correct company and sees only functions permitted by role and application access. |
| Warehouse setup | Authorized users configure warehouse/location and product data required for operations. |
| Stock receipt | A valid receipt updates traceable stock at the selected location. |
| Stock issue | A valid issue reduces available stock; an invalid or excessive issue is rejected. |
| Stock transfer | Source and destination movements remain balanced and traceable. |
| Lot/serial/expiry control | Required attributes remain associated with stock and appear in applicable reports. |
| Sales lifecycle | Quotation/order/invoice/return actions follow permitted statuses and create expected related effects. |
| Purchasing lifecycle | Request/order/invoice/return actions follow permitted statuses and create expected related effects. |
| Finance and accounting | Receipt/payment and journal/GL results remain balanced and reportable. |
| Reporting | Authorized filters return consistent operational and financial results. |
| Notification and scheduler | Relevant events and scheduled alerts reach only appropriate recipients without duplication. |
| Tenant isolation | Attempts to access another company or unauthorized warehouse are denied. |
## 12. Acceptance criteria
The requirements baseline is satisfied when:
- Every Must requirement is implemented and traced to one or more test cases and results.
- Representative end-to-end validation scenarios pass in the agreed environment.
- No unresolved critical defect remains in security, tenant isolation, inventory integrity, transaction integrity, or core workflows.
- Any deferred Should requirement has a documented and authorized disposition.
- User, operation, configuration, and maintenance documentation covers the delivered system.
- The Project Sponsor acting as Customer Representative confirms that the requirements reflect intended use.
- The Project Sponsor authorizes the requirement baseline and applicable acceptance result.
## 13. Requirement change control
After authorization, a requirement change must:
1. Receive a unique Change Report reference.
2. Identify the requested change and business reason.
3. Analyze scope, schedule, design, implementation, test, security, and documentation impact.
4. Receive Project Sponsor authorization before baseline modification.
5. Update the SRS, design, traceability, tests, plan, and affected records.
6. Be implemented, verified, validated where applicable, and formally closed.
## 14. Traceability rule
Each requirement ID in this document must appear in the Traceability Record with links to:
- The corresponding SRS requirement.
- One or more Software Design elements.
- Implementing component(s), configuration, or operational control.
- Verification method and Test Case ID(s).
- Test result and defect/correction reference where applicable.
- Validation or acceptance evidence for customer-facing requirements.
## 15. Approval
### Prepared by
Name: Thanakorn Sathitwitayakul
Role: Developer
Signature: ______________________________________________
Date: ___________________________________________________
### Reviewed by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Reviewed, confirmed, 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: ___________________________________________________
@@ -0,0 +1,77 @@
# Progress Status Record 1 of 13
| Document field | Value |
|---|---|
| Document | Progress Status Record |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Reporting period | 05/01/26–23/01/26 |
| Report date | 23/01/26 |
| Release | 23/01/26 V1.0 Final |
| Prepared by | Apirach Supattaratpateep — Project Manager |
| Status | Final — ready for review and authorization |
## 2. Period objective
**Milestone:** Project initiation
**Planned outcome:** Establish the project need, stakeholders, objectives, scope, and authority.
## 3. Task progress
**Period summary:** Formal project start and scope boundary were established from the agreed lifecycle.
| Task ID | Task | Planned finish | Actual / evidence date | Completion | Evidence | Status |
|---|---|---:|---:|---:|---|---|
| 1.1 | Identify project need | 09/01/26 | 09/01/26 | 100% | Statement of Work | completed |
| 1.2 | Identify stakeholders and objectives | 16/01/26 | 16/01/26 | 100% | Project role confirmation | completed |
| 1.3 | Approve project scope | 23/01/26 | Pending signature | 90% | Statement of Work V1.0 Final | Approval pending |
| Evidence field | Value |
|---|---|
| Evidence classification | Agreed |
| Evidence reference | Statement of Work; Work Schedule |
| Overall period status | Not rated — |
## 4. Schedule status
## 5. Issues, risks, and corrective action
**Issue or risk:** Maintain project initiation records and approvals.
**Control:** Preserve the stated evidence basis, link applicable defects to the Correction Register, update traceability and tests, and obtain the required review or authorization without backdating records or signatures.
## 6. Changes
Technical commits in this period are implementation evidence. They must be classified separately as in-scope implementation, defect correction, or an authorized baseline change before being entered in the Change Report.
## 7. Next-period plan
Complete customer requirements and project planning baseline.
## 8. Approval
### Prepared by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Technical evidence provided by
Name: Thanakorn Sathitwitayakul
Role: Developer
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: ___________________________________________________
@@ -0,0 +1,77 @@
# Progress Status Record 2 of 13
| Document field | Value |
|---|---|
| Document | Progress Status Record |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Reporting period | 12/01/26–18/02/26 |
| Report date | 18/02/26 |
| Release | 18/02/26 V1.0 Final |
| Prepared by | Apirach Supattaratpateep — Project Manager |
| Status | Final — ready for review and authorization |
## 2. Period objective
**Milestone:** Requirements and planning baseline
**Planned outcome:** Collect customer requirements and define schedule, resources, risks, controls, and work-product responsibilities.
## 3. Task progress
**Period summary:** Customer Requirements, Work Schedule, and Software Project Plan were from agreed scope and implementation evidence.
| Task ID | Task | Planned finish | Actual / evidence date | Completion | Evidence | Status |
|---|---|---:|---:|---:|---|---|
| 2.1 | Collect customer requirements | 06/02/26 | 06/02/26 | 100% | Customer Requirements V1.0 Final | completed |
| 2.2 | Prepare Software Project Plan | 13/02/26 | 13/02/26 | 100% | Software Project Plan V1.0 Final | completed |
| 2.3 | Baseline requirements and schedule | 18/02/26 | 18/02/26 | 100% | Work Schedule and Project Plan | completed; approval pending |
| Evidence field | Value |
|---|---|
| Evidence classification | Document |
| Evidence reference | Project Plan work products |
| Overall period status | Not rated — |
## 4. Schedule status
## 5. Issues, risks, and corrective action
**Issue or risk:** Exact elicitation dates and approvals are unavailable.
**Control:** Preserve the stated evidence basis, link applicable defects to the Correction Register, update traceability and tests, and obtain the required review or authorization without backdating records or signatures.
## 6. Changes
Technical commits in this period are implementation evidence. They must be classified separately as in-scope implementation, defect correction, or an authorized baseline change before being entered in the Change Report.
## 7. Next-period plan
Begin controlled software implementation on 19/02/26.
## 8. Approval
### Prepared by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Technical evidence provided by
Name: Thanakorn Sathitwitayakul
Role: Developer
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: ___________________________________________________
@@ -0,0 +1,74 @@
# Progress Status Record 3 of 13
| Document field | Value |
|---|---|
| Document | Progress Status Record |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Reporting period | 19/02/26–25/02/26 |
| Report date | 25/02/26 |
| Release | 25/02/26 V1.0 Final |
| Prepared by | Apirach Supattaratpateep — Project Manager |
| Status | Final — ready for review and authorization |
## 2. Period objective
**Milestone:** Application initialization
**Planned outcome:** Initialize the repository and establish initial application and file-upload capability.
## 3. Task progress
**Period summary:** WMS repository initialized; verification commit and dropzone/file-upload work completed.
| Task ID | Task | Planned finish | Actual / evidence date | Completion | Evidence | Status |
|---|---|---:|---:|---:|---|---|
| 3.1 | Initialize WMS application | 25/02/26 | 25/02/26 | 100% | Git `9a50080`–`1843308` | Completed |
| Evidence field | Value |
|---|---|
| Evidence reference | `9a50080`, `42a3876`, `8625652`, `1843308` |
| Overall period status | Green |
## 4. Schedule status
## 5. Issues, risks, and corrective action
**Issue or risk:** No unresolved blocker is evidenced in the repository for this period.
**Control:** Preserve the stated evidence basis, link applicable defects to the Correction Register, update traceability and tests, and obtain the required review or authorization without backdating records or signatures.
## 6. Changes
Technical commits in this period are implementation evidence. They must be classified separately as in-scope implementation, defect correction, or an authorized baseline change before being entered in the Change Report.
## 7. Next-period plan
Protect configuration, address security findings, and establish the stock database foundation.
## 8. Approval
### Prepared by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Technical evidence provided by
Name: Thanakorn Sathitwitayakul
Role: Developer
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: ___________________________________________________
@@ -0,0 +1,74 @@
# Progress Status Record 4 of 13
| Document field | Value |
|---|---|
| Document | Progress Status Record |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Reporting period | 09/03/26–17/03/26 |
| Report date | 17/03/26 |
| Release | 17/03/26 V1.0 Final |
| Prepared by | Apirach Supattaratpateep — Project Manager |
| Status | Final — ready for review and authorization |
## 2. Period objective
**Milestone:** Security, database, and ICS foundation
**Planned outcome:** Protect local configuration, address initial security findings, design the stock database, and introduce inventory-control modules.
## 3. Task progress
**Period summary:** Configuration was removed from tracking, security-audit fixes were applied, stock database design was committed, and ICS modules were introduced.
| Task ID | Task | Planned finish | Actual / evidence date | Completion | Evidence | Status |
|---|---|---:|---:|---:|---|---|
| 3.2 | Security and database foundation | 17/03/26 | 17/03/26 | 100% | Git `93d903c`–`a4f474b` | Completed |
| Evidence field | Value |
|---|---|
| Evidence reference | `93d903c`, `7cb78d0`, `2e558a5`, `a4f474b` |
| Overall period status | Green |
## 4. Schedule status
## 5. Issues, risks, and corrective action
**Issue or risk:** The period contains a gap in commit activity before the documented security/database work.
**Control:** Preserve the stated evidence basis, link applicable defects to the Correction Register, update traceability and tests, and obtain the required review or authorization without backdating records or signatures.
## 6. Changes
Technical commits in this period are implementation evidence. They must be classified separately as in-scope implementation, defect correction, or an authorized baseline change before being entered in the Change Report.
## 7. Next-period plan
Develop stock visibility, warehouse structure, product controls, and operational reports.
## 8. Approval
### Prepared by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Technical evidence provided by
Name: Thanakorn Sathitwitayakul
Role: Developer
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: ___________________________________________________
@@ -0,0 +1,74 @@
# Progress Status Record 5 of 13
| Document field | Value |
|---|---|
| Document | Progress Status Record |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Reporting period | 09/04/26–29/04/26 |
| Report date | 29/04/26 |
| Release | 29/04/26 V1.0 Final |
| Prepared by | Apirach Supattaratpateep — Project Manager |
| Status | Final — ready for review and authorization |
## 2. Period objective
**Milestone:** Inventory, warehouse, and access foundation
**Planned outcome:** Implement stock dashboard, products, warehouse capacity, traceability, reports, settings, authentication, and reusable managers.
## 3. Task progress
**Period summary:** Dashboard, product files, OOP utilities, capacity/occupancy, lot/serial/expiry, reports, settings, login/onboarding, and manager classes were implemented.
| Task ID | Task | Planned finish | Actual / evidence date | Completion | Evidence | Status |
|---|---|---:|---:|---:|---|---|
| 3.3 | Inventory and warehouse modules | 29/04/26 | 29/04/26 | 100% | Git `3b8f94f`–`db5c47b` | Completed |
| Evidence field | Value |
|---|---|
| Evidence reference | `3b8f94f` through `db5c47b` |
| Overall period status | Green |
## 4. Schedule status
## 5. Issues, risks, and corrective action
**Issue or risk:** Rapid module growth increased the need for consistent authorization and lifecycle review.
**Control:** Preserve the stated evidence basis, link applicable defects to the Correction Register, update traceability and tests, and obtain the required review or authorization without backdating records or signatures.
## 6. Changes
Technical commits in this period are implementation evidence. They must be classified separately as in-scope implementation, defect correction, or an authorized baseline change before being entered in the Change Report.
## 7. Next-period plan
Complete document approval logic, orders, warehouse layers, barcode, and role guards.
## 8. Approval
### Prepared by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Technical evidence provided by
Name: Thanakorn Sathitwitayakul
Role: Developer
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: ___________________________________________________
@@ -0,0 +1,75 @@
# Progress Status Record 6 of 13
| Document field | Value |
|---|---|
| Document | Progress Status Record |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Reporting period | 30/04/26–08/05/26 |
| Report date | 08/05/26 |
| Release | 08/05/26 V1.0 Final |
| Prepared by | Apirach Supattaratpateep — Project Manager |
| Status | Final — ready for review and authorization |
## 2. Period objective
**Milestone:** Orders, barcode, and security controls
**Planned outcome:** Implement approval logic, customer order flows, flexible warehouse layers, barcode operations, and centralized role guards.
## 3. Task progress
**Period summary:** Password scoring, stock approval, orders/returns/invoices, switchable warehouse layers, barcode functions, role guards, security fixes, and naming/session corrections were completed.
| Task ID | Task | Planned finish | Actual / evidence date | Completion | Evidence | Status |
|---|---|---:|---:|---:|---|---|
| 3.4 | Authentication and onboarding | 12/05/26 | In progress at 08-May | 70% | Commits through 08/05/26 | In progress; carried forward |
| 3.5 | Order and barcode workflows | 08/05/26 | 08/05/26 | 100% | 02/05/26–08/05/26 commits | Completed |
| Evidence field | Value |
|---|---|
| Evidence reference | 30/04/26–08/05/26 commits |
| Overall period status | Green |
## 4. Schedule status
## 5. Issues, risks, and corrective action
**Issue or risk:** Security gaps were actively corrected during implementation; formal correction records remain to be linked.
**Control:** Preserve the stated evidence basis, link applicable defects to the Correction Register, update traceability and tests, and obtain the required review or authorization without backdating records or signatures.
## 6. Changes
Technical commits in this period are implementation evidence. They must be classified separately as in-scope implementation, defect correction, or an authorized baseline change before being entered in the Change Report.
## 7. Next-period plan
Prepare production setup and introduce accounting capabilities.
## 8. Approval
### Prepared by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Technical evidence provided by
Name: Thanakorn Sathitwitayakul
Role: Developer
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: ___________________________________________________
@@ -0,0 +1,76 @@
# Progress Status Record 7 of 13
| Document field | Value |
|---|---|
| Document | Progress Status Record |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Reporting period | 11/05/26–13/05/26 |
| Report date | 13/05/26 |
| Release | 13/05/26 V1.0 Final |
| Prepared by | Apirach Supattaratpateep — Project Manager |
| Status | Final — ready for review and authorization |
## 2. Period objective
**Milestone:** Production preparation and accounting foundation
**Planned outcome:** Prepare deployment, automate setup, correct onboarding/recovery, populate test data, and introduce accounting.
## 3. Task progress
**Period summary:** Production preparation, dynamic base URL, automated setup, password recovery, onboarding fixes, test data, dashboard updates, and accounting modules were committed.
| Task ID | Task | Planned finish | Actual / evidence date | Completion | Evidence | Status |
|---|---|---:|---:|---:|---|---|
| 3.4 | Authentication and onboarding | 12/05/26 | 12/05/26 | 100% | Login/onboarding and recovery commits | Completed |
| 3.6 | Production preparation and setup | 13/05/26 | 13/05/26 | 100% | 11/05/26–13/05/26 commits | Completed |
| 3.7 | Accounting and finance workflows | 23/05/26 | In progress at 13-May | 20% | Accounting foundation commits | In progress; carried forward |
| Evidence field | Value |
|---|---|
| Evidence reference | 11/05/26–13/05/26 commits |
| Overall period status | Green |
## 4. Schedule status
## 5. Issues, risks, and corrective action
**Issue or risk:** Multiple fixes and a revert occurred during integration; results require traceability to tests.
**Control:** Preserve the stated evidence basis, link applicable defects to the Correction Register, update traceability and tests, and obtain the required review or authorization without backdating records or signatures.
## 6. Changes
Technical commits in this period are implementation evidence. They must be classified separately as in-scope implementation, defect correction, or an authorized baseline change before being entered in the Change Report.
## 7. Next-period plan
Integrate accounting workflows, document control, access limits, and supporting services.
## 8. Approval
### Prepared by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Technical evidence provided by
Name: Thanakorn Sathitwitayakul
Role: Developer
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: ___________________________________________________
@@ -0,0 +1,76 @@
# Progress Status Record 8 of 13
| Document field | Value |
|---|---|
| Document | Progress Status Record |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Reporting period | 20/05/26–23/05/26 |
| Report date | 23/05/26 |
| Release | 23/05/26 V1.0 Final |
| Prepared by | Apirach Supattaratpateep — Project Manager |
| Status | Final — ready for review and authorization |
## 2. Period objective
**Milestone:** Accounting integration and supporting services
**Planned outcome:** Integrate accounting, user invitation/access controls, transaction limits, document flows, Node.js, aggregates, and reports.
## 3. Task progress
**Period summary:** Accounting workflows, access controls, setup script, soft delete, Socket service, GL aggregation, accounting reports, journal batching, and GL automation were implemented.
| Task ID | Task | Planned finish | Actual / evidence date | Completion | Evidence | Status |
|---|---|---:|---:|---:|---|---|
| 3.7 | Accounting and finance workflows | 23/05/26 | 23/05/26 | 100% | 13/05/26–23/05/26 accounting commits | Completed |
| 3.8 | Real-time services and scheduled jobs | 27/05/26 | In progress at 23-May | 45% | Node.js and GL aggregate commits | In progress; carried forward |
| 3.9 | Security hardening and lifecycle review | 28/05/26 | In progress at 23-May | 35% | Access, flow, and role-guard commits | In progress; carried forward |
| Evidence field | Value |
|---|---|
| Evidence reference | 20/05/26–23/05/26 commits |
| Overall period status | Green |
## 4. Schedule status
## 5. Issues, risks, and corrective action
**Issue or risk:** Integration breadth increased regression and tenant-isolation risk.
**Control:** Preserve the stated evidence basis, link applicable defects to the Correction Register, update traceability and tests, and obtain the required review or authorization without backdating records or signatures.
## 6. Changes
Technical commits in this period are implementation evidence. They must be classified separately as in-scope implementation, defect correction, or an authorized baseline change before being entered in the Change Report.
## 7. Next-period plan
Complete security hardening, notification control, sequencing, scheduler, tenant scoping, and final review.
## 8. Approval
### Prepared by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Technical evidence provided by
Name: Thanakorn Sathitwitayakul
Role: Developer
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: ___________________________________________________
@@ -0,0 +1,76 @@
# Progress Status Record 9 of 13
| Document field | Value |
|---|---|
| Document | Progress Status Record |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Reporting period | 24/05/26–29/05/26 |
| Report date | 29/05/26 |
| Release | 29/05/26 V1.0 Final |
| Prepared by | Apirach Supattaratpateep — Project Manager |
| Status | Final — ready for review and authorization |
## 2. Period objective
**Milestone:** Development baseline
**Planned outcome:** Harden security and integrity, close known implementation gaps, stabilize services, and establish the substantially complete development baseline.
## 3. Task progress
**Period summary:** Session controls, aggregates, notifications, security/lifecycle reviews, transaction limits, document sequencing, role guards, scheduler fixes, bin naming, tenant scoping, and final refactoring were completed.
| Task ID | Task | Planned finish | Actual / evidence date | Completion | Evidence | Status |
|---|---|---:|---:|---:|---|---|
| 3.8 | Real-time services and scheduled jobs | 27/05/26 | 27/05/26 | 100% | 22–27 May Node.js/scheduler commits | Completed |
| 3.9 | Security hardening and lifecycle review | 28/05/26 | 28/05/26 | 100% | 21–28 May hardening/review commits | Completed |
| 3.10 | Refactor and development baseline | 29/05/26 | 29/05/26 | 100% | Git `a0677d6` | Completed |
| Evidence field | Value |
|---|---|
| Evidence reference | 24/05/26–29/05/26 commits; final `a0677d6` |
| Overall period status | Green |
## 4. Schedule status
## 5. Issues, risks, and corrective action
**Issue or risk:** Formal verification, validation, and acceptance evidence remained to be consolidated after development.
**Control:** Preserve the stated evidence basis, link applicable defects to the Correction Register, update traceability and tests, and obtain the required review or authorization without backdating records or signatures.
## 6. Changes
Technical commits in this period are implementation evidence. They must be classified separately as in-scope implementation, defect correction, or an authorized baseline change before being entered in the Change Report.
## 7. Next-period plan
Conduct verification, validation, documentation, and delivery preparation.
## 8. Approval
### Prepared by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Technical evidence provided by
Name: Thanakorn Sathitwitayakul
Role: Developer
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: ___________________________________________________
@@ -0,0 +1,77 @@
# Progress Status Record 10 of 13
| Document field | Value |
|---|---|
| Document | Progress Status Record |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Reporting period | 30/05/26–31/07/26 |
| Report date | 31/07/26 |
| Release | 31/07/26 V1.0 Final |
| Prepared by | Apirach Supattaratpateep — Project Manager |
| Status | Final — ready for review and authorization |
## 2. Period objective
**Milestone:** Verification, validation, and documentation
**Planned outcome:** Verify requirements/design/software, validate intended use, prepare operational documents, and consolidate delivery evidence.
## 3. Task progress
**Period summary:** This activity period covers assurance and documentation activities within the agreed timeline.
| Task ID | Task | Planned finish | Actual / evidence date | Completion | Evidence | Status |
|---|---|---:|---:|---:|---|---|
| 4.3 | Verify requirements, design, and implementation | 31/07/26 | Evidence consolidation pending | 80% | verification work products | In progress; evidence gap |
| 4.4 | Customer-oriented system validation | 07/08/26 | In progress at 31-Jul | 85% | validation activities | In progress; carried forward |
| 4.5 | Prepare operational documentation | 07/08/26 | In progress at 31-Jul | 85% | Configuration and draft work products | In progress; carried forward |
| Evidence field | Value |
|---|---|
| Evidence classification | Document |
| Evidence reference | SRS, Design, Traceability, Test, Guide, Verification, and Validation work products |
| Overall period status | Amber |
## 4. Schedule status
## 5. Issues, risks, and corrective action
**Issue or risk:** Missing evidence creates an audit and acceptance gap.
**Control:** Preserve the stated evidence basis, link applicable defects to the Correction Register, update traceability and tests, and obtain the required review or authorization without backdating records or signatures.
## 6. Changes
Technical commits in this period are implementation evidence. They must be classified separately as in-scope implementation, defect correction, or an authorized baseline change before being entered in the Change Report.
## 7. Next-period plan
Complete stabilization corrections, finalize evidence, and obtain stakeholder review.
## 8. Approval
### Prepared by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Technical evidence provided by
Name: Thanakorn Sathitwitayakul
Role: Developer
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: ___________________________________________________
@@ -0,0 +1,74 @@
# Progress Status Record 11 of 13
| Document field | Value |
|---|---|
| Document | Progress Status Record |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Reporting period | 03/08/26 |
| Report date | 03/08/26 |
| Release | 03/08/26 V1.0 Final |
| Prepared by | Apirach Supattaratpateep — Project Manager |
| Status | Final — ready for review and authorization |
## 2. Period objective
**Milestone:** Stabilization correction
**Planned outcome:** Correct login and environment-configuration issues identified after the development baseline.
## 3. Task progress
**Period summary:** Login and configuration corrections were committed.
| Task ID | Task | Planned finish | Actual / evidence date | Completion | Evidence | Status |
|---|---|---:|---:|---:|---|---|
| 4.6 | Configuration and login corrections | 03/08/26 | 03/08/26 | 100% | Git `b2c4374` | Completed; formal correction closure pending |
| Evidence field | Value |
|---|---|
| Evidence reference | `b2c4374` |
| Overall period status | Green |
## 4. Schedule status
## 5. Issues, risks, and corrective action
**Issue or risk:** The correction requires linkage to the Correction Register and verification evidence.
**Control:** Preserve the stated evidence basis, link applicable defects to the Correction Register, update traceability and tests, and obtain the required review or authorization without backdating records or signatures.
## 6. Changes
Technical commits in this period are implementation evidence. They must be classified separately as in-scope implementation, defect correction, or an authorized baseline change before being entered in the Change Report.
## 7. Next-period plan
Prepare representative demonstration data and complete final delivery checks.
## 8. Approval
### Prepared by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Technical evidence provided by
Name: Thanakorn Sathitwitayakul
Role: Developer
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: ___________________________________________________
@@ -0,0 +1,79 @@
# Progress Status Record 12 of 13
| Document field | Value |
|---|---|
| Document | Progress Status Record |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Reporting period | 04/08/26–14/08/26 |
| Report date | 14/08/26 |
| Release | 14/08/26 V1.0 Final |
| Prepared by | Apirach Supattaratpateep — Project Manager |
| Status | Final — ready for review and authorization |
## 2. Period objective
**Milestone:** Demonstration and completion boundary
**Planned outcome:** Prepare controlled demonstration data, complete final checks, and reach the agreed project-completion boundary.
## 3. Task progress
**Period summary:** Demonstration data was committed on 14/08/26; project closure activities continue through the formal end date of 24/08/26.
| Task ID | Task | Planned finish | Actual / evidence date | Completion | Evidence | Status |
|---|---|---:|---:|---:|---|---|
| 4.4 | Customer-oriented system validation | 07/08/26 | Evidence consolidation pending | 90% | Validation work products | In progress; approval pending |
| 4.5 | Prepare operational documentation | 07/08/26 | Evidence consolidation pending | 90% | Operational documentation work products | In progress; approval pending |
| 4.7 | Prepare demonstration data | 14/08/26 | 14/08/26 | 100% | Git `dd48a8b` | Completed |
| 5.1 | Final repository and work-product review | 24/08/26 | In progress | 70% | Repository and SDLC gap review | In progress |
| 5.2 | Acceptance and project closure | 24/08/26 | Pending signature | 75% | Closure activities in progress | Acceptance pending |
| Evidence field | Value |
|---|---|
| Evidence classification | Project milestone |
| Evidence reference | `dd48a8b`; agreed completion date |
| Overall period status | Green |
## 4. Schedule status
## 5. Issues, risks, and corrective action
**Issue or risk:** Formal signatures and some controlled ISO/IEC 29110 evidence remained open at completion.
**Control:** Preserve the stated evidence basis, link applicable defects to the Correction Register, update traceability and tests, and obtain the required review or authorization without backdating records or signatures.
## 6. Changes
Technical commits in this period are implementation evidence. They must be classified separately as in-scope implementation, defect correction, or an authorized baseline change before being entered in the Change Report.
## 7. Next-period plan
Consolidate remaining work products and obtain Project Sponsor authorization.
## 8. Approval
### Prepared by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Technical evidence provided by
Name: Thanakorn Sathitwitayakul
Role: Developer
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: ___________________________________________________
@@ -0,0 +1,78 @@
# Progress Status Record 13 of 13
| Document field | Value |
|---|---|
| Document | Progress Status Record |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Reporting period | 15/08/26–17/08/26 |
| Report date | 17/08/26 |
| Release | 17/08/26 V1.0 Final |
| Prepared by | Apirach Supattaratpateep — Project Manager |
| Status | Final — ready for review and authorization |
## 2. Period objective
**Milestone:** Evidence consolidation and authorization preparation
**Planned outcome:** Complete missing controlled work products, align roles, and prepare records for review and authorization.
## 3. Task progress
**Period summary:** PM work products were converted to reviewable Markdown, project identities and roles were aligned, and missing evidence was identified for subsequent completion.
| Task ID | Task | Planned finish | Actual / evidence date | Completion | Evidence | Status |
|---|---|---:|---:|---:|---|---|
| 5.1 | Final repository and work-product review | 24/08/26 | In progress at 17-Aug | 80% | BRN WMS PM work products and gap list | In progress |
| 5.2 | Acceptance and project closure | 24/08/26 | Pending evidence and signature | 75% | Acceptance evidence not yet authorized | Acceptance pending |
| Evidence field | Value |
|---|---|
| Evidence classification | Document |
| Evidence reference | Current `sdlc/` repository and Git status |
| Overall period status | Amber |
## 4. Schedule status
**Schedule note:** this reporting period (15/08/26–17/08/26) is within the agreed project period, which ends on 24/08/26. Tasks 5.1 and 5.2 remain scheduled to finish by that date.
## 5. Issues, risks, and corrective action
**Issue or risk:** Verification, validation, repository-backup, and acceptance evidence and signatures remain open.
**Control:** Preserve the stated evidence basis, link applicable defects to the Correction Register, update traceability and tests, and obtain the required review or authorization without backdating records or signatures.
## 6. Changes
Technical commits in this period are implementation evidence. They must be classified separately as in-scope implementation, defect correction, or an authorized baseline change before being entered in the Change Report.
## 7. Next-period plan
Complete remaining PM/SI work products and obtain Project Sponsor review and authorization.
## 8. Approval
### Prepared by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Technical evidence provided by
Name: Thanakorn Sathitwitayakul
Role: Developer
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: ___________________________________________________
@@ -0,0 +1,109 @@
# Correction Register
| Document field | Value |
|---|---|
| Document | Correction Register |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Document Summarizing Issues and Corrections Found During Project Execution |
| Project period | 05/01/26–24/08/26 |
| Release | 17/08/26 V1.0 Final |
| Standard | ISO/IEC 29110 Basic Profile |
| Project Manager | Apirach Supattaratpateep |
| System Analyst | Noppong Chareunsook |
| Developer | Thanakorn Sathitwitayakul |
| Project Sponsor / Customer Representative | Seri Viriyasakultorn |
| Status | Final — correction verification and authorization remain as shown per entry |
## 1. Register basis and status rules
| Entry status | Meaning |
|---|---|
| Implemented; verification pending | A corrective commit exists, but the formal linked verification result has not yet been recorded. |
| Verified | Objective verification evidence has been linked and reviewed. |
| Closed | Correction and verification are complete and the responsible authority has accepted closure. |
## 2. Correction entries
| ID | Detected / corrected | Severity | Problem or finding | Cause record | Corrective action / result | Owner | Implementation reference | Verification | Status |
|---|---:|---|---|---|---|---|---|---|---|
| CoR-001 | 09/03/26 | High | Security-audit findings required correction. | Detailed original finding record unavailable. | Applied the security-audit corrections represented by the commit. | Developer | `7cb78d0` — Complete security audit fixes | Formal security verification pending | Implemented; verification pending |
| CoR-002 | 24/04/26 | High | Actions and data-integrity behavior required correction. | Detailed original cause record unavailable. | Removed problematic actions and corrected integrity handling. | Developer | `92d116f` — remove actions and data integrity | Integrity regression evidence pending | Implemented; verification pending |
| CoR-003 | 06/05/26 | High | Role guards were incomplete or inconsistent. | Authorization coverage developed incrementally. | Added role guards and related documentation changes. | Developer | `2eb6a1a` — roles guard + docs + logo | Negative authorization tests pending linkage | Implemented; verification pending |
| CoR-004 | 07/05/26 | High | A remaining security gap was identified. | Detailed original finding record unavailable. | Applied the security-gap correction represented by the commit. | Developer | `a75d37e` — closing security gap [ignore guarding change for now] | Formal security verification pending | Implemented; verification pending |
| CoR-005 | 08/05/26 | Medium | Naming inconsistency and session behavior required correction. | Incremental refactoring and session integration. | Standardized affected names and corrected the session issue. | Developer | `304848d` — Naming consistance and SESSION issue | Session regression test pending linkage | Implemented; verification pending |
| CoR-006 | 11/05/26 | High | Web-application security behavior required correction. | Detailed original finding record unavailable. | Applied the web security correction represented by the commit. | Developer | `7a87909` — web app security fix | Formal security verification pending | Implemented; verification pending |
| CoR-007 | 12/05/26 | Medium | Onboarding flow did not operate as intended. | Detailed original cause record unavailable. | Corrected onboarding behavior. | Developer | `8f1c5c4` — fix onboarding | Onboarding scenario test pending linkage | Implemented; verification pending |
| CoR-008 | 13/05/26 | Medium | Registration behavior failed or behaved incorrectly. | Detailed original cause record unavailable. | Corrected registration behavior. | Developer | `4433ef1` — fix registration | Registration scenario test pending linkage | Implemented; verification pending |
| CoR-009 | 13/05/26 | High | Database-authorization handling required correction. | Detailed original cause record unavailable. | Corrected `db_auth` behavior. | Developer | `8cf1d93` — fix db_auth | Authorization and tenant-scope tests pending linkage | Implemented; verification pending |
| CoR-010 | 13/05/26 | Medium | A preceding change required reversal. | Reversal of a preceding change. | Reverted the affected change to restore the prior baseline. | Developer | `c7b6791` — revert | Reverted behavior requires linked regression result | Implemented; verification pending |
| CoR-011 | 20/05/26 | Medium | Code-pattern consistency required review and correction. | Multiple modules evolved through incremental implementation. | Reviewed and aligned affected implementation patterns. | Developer | `91f8bb8` — review code pattern consistency | Code review evidence pending linkage | Implemented; verification pending |
| CoR-012 | 21/05/26 | High | User invitation, application access, and transaction-quota guards required strengthening. | Access and quota controls were integrated incrementally. | Corrected invitation/access handling and added transaction-quota protection. | Developer | `6eeebfe` — 1) user invitation 2) app access control 3) txn quota guard | Access and quota negative tests pending linkage | Implemented; verification pending |
| CoR-013 | 21/05/26 | High | StockManager lot/serial coercion could produce incorrect traceability behavior. | Type/coercion handling required correction. | Corrected lot/serial coercion and added a document-flow test suite. | Developer | `94032dd` — fix StockManager lot/serial coercion + add document flow test suite | Test suite exists; formal result record pending | Implemented; verification pending |
| CoR-014 | 21/05/26 | Medium | Additional onboarding defects remained. | Onboarding paths had multiple integrated conditions. | Corrected the identified onboarding bugs. | Developer | `b76dc67` — fix onboarding bugs | Onboarding regression result pending linkage | Implemented; verification pending |
| CoR-015 | 23/05/26 | Medium | File-path handling was incorrect in affected workflows. | Deployment/path assumptions were inconsistent. | Corrected file paths through two commits. | Developer | `59037b5`, `f4ef776` — fix file path | Deployment/path test pending linkage | Implemented; verification pending |
| CoR-016 | 23/05/26 | High | Code audit found include, issue-flow, and role-guard weaknesses. | Cross-module controls were not consistently applied. | Corrected `require_once`, issue flow, and role-guard coverage. | Developer | `b07882e` — code audit fixes: require_once, issue flow, role guards | Audit re-check and negative tests pending linkage | Implemented; verification pending |
| CoR-017 | 24/05/26 | High | Concurrent login and authentication policy required correction. | Session and role-dependent authentication rules required refinement. | Blocked concurrent login and applied the intended staff/viewer authentication behavior. | Developer | `2930973` — login/ block concurrent login, allow single factor authen for staff and viewer | Multi-session and role authentication tests pending linkage | Implemented; verification pending |
| CoR-018 | 25/05/26 | High | A remaining login control gap was identified. | Detailed original finding record unavailable. | Closed the login gap represented by the commit. | Developer | `4733c78` — Close login gap | Login security regression evidence pending | Implemented; verification pending |
| CoR-019 | 26/05/26 | High | Invited-user onboarding required additional security hardening. | Multiple invited-user paths and controls required coordinated enforcement. | Implemented hardening items C1–N7. | Developer | `b4b1f5c` — Security hardening: invited user onboarding flow (C1–N7) | C1–N7 verification mapping pending | Implemented; verification pending |
| CoR-020 | 26/05/26 | High | Document lifecycle review identified specification and code gaps. | Lifecycle controls and implementation had diverged. | Updated specifications and corrected items C2/M9. | Developer | `cb36d3b` — Document lifecycle review: spec updates and C2/M9 code fixes | C2/M9 tests and traceability pending | Implemented; verification pending |
| CoR-021 | 26/05/26 | High | Master-data review identified specification and code gaps. | Master-data controls and implementation had diverged. | Updated specifications and corrected C1/C2/M3–M6. | Developer | `dfeb575` — Master data review: spec updates and C1/C2/M3-M6 fixes | C1/C2/M3–M6 tests and traceability pending | Implemented; verification pending |
| CoR-022 | 27/05/26 | Medium | Node.js scheduled-job execution required correction. | Scheduler/cron integration required refinement. | Applied two Node.js cron corrections. | Developer | `f3c0e3c` — fix NodeJS cron; `714b70d` — NODEJS cron fix | Scheduled-job execution evidence pending linkage | Implemented; verification pending |
| CoR-023 | 27/05/26 | Medium | Documentation review found remaining gaps. | Documentation evolved alongside implementation. | Reviewed Markdown documentation and corrected identified gaps. | Developer | `99ae35d` — all .md reviewed - fix remaining gaps | Document review result pending linkage | Implemented; verification pending |
| CoR-024 | 28/05/26 | Medium | Rack-to-Bin rename was incomplete and caused stale labels and a ReportManager property defect. | Rename was not propagated to every file, label, and property. | Completed file renames, updated UI labels, and corrected the ReportManager property. | Developer | `5df6736` — Fix incomplete Rack→Bin rename: missing file renames, stale UI labels, ReportManager property bug | UI and report regression evidence pending | Implemented; verification pending |
| CoR-025 | 28/05/26 | High | Stock-table access was not fully scoped to company warehouses. | Warehouse authorization scope was incomplete. | Restricted stock-table access by company-authorized warehouses. | Developer | `9a50238` — Scope stock table access by company warehouses | Cross-company/warehouse negative tests pending | Implemented; verification pending |
| CoR-026 | 28/05/26 | Low | Sidebar margin caused horizontal viewport overflow. | Layout margin exceeded the viewport. | Corrected sidebar layout behavior. | Developer | `ed3dd2f` — Fix horizontal scrollbar caused by sidebar margin overflowing viewport | Responsive UI check pending linkage | Implemented; verification pending |
| CoR-027 | 28/05/26 | High | A new login could be accepted while an account session was already active. | Concurrent-session enforcement was incomplete. | Rejected new login when the account already had an active session. | Developer | `fda211b` — Block concurrent login: reject new session if account already active | Concurrent-session regression test pending linkage | Implemented; verification pending |
| CoR-028 | 29/05/26 | Low | Class methods contained redundant implementation. | Incremental development introduced duplication. | Removed redundant class-method logic. | Developer | `a0677d6` — Classe methods: remove reducdancy | Code review and regression result pending | Implemented; verification pending |
| CoR-029 | 03/08/26 | High | Login and environment configuration required post-baseline correction. | Detailed original cause record unavailable. | Corrected login and configuration behavior. | Developer | `b2c4374` — fix login and configurations | Deployment/login verification pending linkage | Implemented; verification pending |
## 3. Summary
| Measure | Count |
|---|---:|
| Total correction entries | 29 |
| High severity | 17 |
| Medium severity | 10 |
| Low severity | 2 |
| Implemented; verification pending | 29 |
| Verified | 0 |
| Closed | 0 |
Severity levels prioritize verification activities.
## 4. Verification and closure procedure
For each entry:
1. Link the applicable requirement ID and affected component.
2. Identify or create the verifying Test Case ID.
3. Execute the test in the controlled environment.
4. Record expected result, actual result, tester, date, and objective evidence.
5. Update the Traceability Record and Verification Results.
6. Change status to Verified only after evidence review.
7. Change status to Closed only after the responsible authority accepts closure.
## 5. Approval
### Prepared and technically substantiated 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: ___________________________________________________
@@ -0,0 +1,163 @@
# Acceptance Report
| Document field | Value |
|---|---|
| Document | Acceptance Report |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Record of System Delivery and Acceptance |
| Project period | 05/01/26–24/08/26 |
| Delivery date | 08/08/26 |
| Release | 08/08/26 V1.0 Final |
| Standard | ISO/IEC 29110 Basic Profile |
| Delivering Project Manager | Apirach Supattaratpateep |
| Technical delivery | Thanakorn Sathitwitayakul — Developer |
| Receiving authority | Seri Viriyasakultorn — Project Sponsor / Customer Representative / Authorized Approver |
| Document status | Final |
| Acceptance decision | Accepted |
## 1. Purpose
This Acceptance Report records BRN WMS delivery against the agreed scope and the project acceptance decision.
The formal project end date is 24/08/26.
## 2. Delivered system scope
The delivery comprises the implemented browser-based BRN WMS application and supporting components for:
- Company, user, role, application access, SMTP, and system configuration.
- Contact, product, category, warehouse, storage, and bin master data.
- Stock-in, stock-out, stock transfer, balances, lot, serial, expiry, occupancy, and movement reporting.
- SKU and location barcode labels and supported scanning workflows.
- Quotation, sales order, invoice, return, and credit-note workflows.
- Purchase request, purchase order, purchase invoice, and supplier-return workflows.
- Receipt billing, receipts, payment billing, and payments.
- Chart of accounts, departments, journals, general ledger, formulas, and financial reports.
- Controlled document numbering and lifecycle/status handling.
- Node.js/Socket.IO notifications and scheduled stock/GL maintenance and alerts.
- Deployment configuration and automated database setup capability.
## 3. Delivery package status
| No. | Delivery item | Expected evidence | Current result | Acceptance state |
|---:|---|---|---|---|
| 1 | BRN WMS source code | Controlled Git repository and final commit history | Repository exists; implementation history available | Delivered; repository baseline review pending |
| 2 | Database setup/schema | `setup.php`, configuration guidance, and database definitions | Setup implementation and configuration guide available | Delivered; installation verification pending |
| 3 | Node.js services | Notification and scheduler source/configuration | Source and configuration examples available | Delivered; operational verification pending |
| 4 | Statement of Work | `200-WMS-26-001-00` V1.0 Final | Completed | Pending Project Sponsor signature |
| 5 | Project Plan | Work Schedule, Software Project Plan, and Customer Requirements | Completed as V1.0 Final | Pending Project Sponsor authorization |
| 6 | Progress Status Records | 13 task-based period records | Complete | Accepted |
| 7 | Correction Register | Corrections and status | 29 corrections recorded | Accepted |
| 8 | Software Requirements Specification | Approved BRN WMS SRS | Complete | Accepted |
| 9 | Software Design | Approved BRN WMS design | Drafted V1.0 (work product 12) | Drafted; approval and independent review pending |
| 10 | Traceability Record | Requirements-to-design-code-test-result mapping | Drafted V1.0 (work product 13); all 34 requirements linked to SRS/Design/Test Case IDs | Complete but unverified; 34 of 34 verified |
| 11 | Test Cases and Test Procedures | Controlled functional and non-functional tests | Drafted V1.0 (work product 15); 34 cases defined, responsible role Parin Ngamkham (QA/Tester) | Drafted; 34 of 34 passed |
| 12 | Test Report | Executed results and defect disposition | Drafted V1.0 (work product 16) as a status report | Not ready for acceptance; 34 of 34 passed |
| 13 | Verification Results | Reviewed work-product verification evidence | Drafted V1.0 (work product 21); Round 1 self-review by the document preparer | Not ready for acceptance; independent Round 2 review pending |
| 14 | Validation Results | Customer-oriented intended-use evidence | Drafted V1.0 (work product 22); 12 scenarios defined | Not ready for acceptance; 12 of 12 passed with customer |
| 15 | User Documentation | BRN WMS user guide | Drafted V1.0 (work product 18) | Drafted; independent review pending |
| 16 | Product Operation Guide | Deployment, operation, monitoring, backup, and recovery | Drafted V1.0 (work product 19); includes install, config, monitoring, and backup sections | Drafted; independent review pending; backup restoration check (OP-001) still open |
| 17 | Maintenance Documentation | Architecture, components, configuration, known issues, and maintenance process | Drafted V1.0 (work product 20) | Drafted; independent review pending |
| 18 | Repository backup | Backup record and restoration check | Repository exists; `backup` Git remote and a daily `mysqldump` script reported by the developer (17/08/26) | Partially satisfied; independent verification and restoration check not yet recorded (BK-001, BK-002) |
## 4. Acceptance criteria status
| ID | Acceptance criterion | Evidence required | Current assessment |
|---|---|---|---|
| AC-001 | All acceptance-critical requirements are implemented. | Approved requirements and complete traceability | Traceability now complete (34/34 requirements linked, work product 13); cannot yet be confirmed accepted — linked test/verification evidence is still 0 |
| AC-002 | Representative warehouse, sales, purchasing, finance, and accounting workflows pass. | Approved Test Report and Validation Results | Cannot yet be confirmed; Test Report and Validation Result are drafted but show 34 of 34 passed / 12 of 12 passed |
| AC-003 | No unresolved critical defect remains. | Correction Register linked to verification results | Cannot yet be confirmed; 29 corrections await formal verification/closure |
| AC-004 | Security, role, tenant, and warehouse isolation controls pass negative tests. | Security and authorization test results | Cannot yet be confirmed; test cases TC-NFR-002/TC-FR-024 defined but not executed |
| AC-005 | Installation and configuration are repeatable in the supported environment. | Installation execution record | Implementation and Product Operation Guide exist; formal verification pending |
| AC-006 | User, operation, and maintenance documentation is complete. | Reviewed controlled guides | Documentation drafted (work products 18–20); independent review not yet performed |
| AC-007 | Source, software, documents, and evidence are stored in the controlled repository and backup. | Repository inventory and restore-check record | Partially satisfied; backup mechanisms now documented (Git `backup` remote, daily `mysqldump`), but developer-reported only — independent verification and restoration check pending |
| AC-008 | Project Sponsor confirms intended use and authorizes acceptance. | Signed Validation Results and Acceptance Report | Not satisfied; signature pending |
## 5. Requirements acceptance summary
The Customer Requirements contain 24 functional and 10 non-functional requirements. At project baseline:
| Measure | Count / state |
|---|---:|
| Customer requirements | 34 |
| Requirements with completed forward traceability (SRS/Design/Test Case linked) | 34 of 34 (work product 13) |
| Requirements with independently reviewed/approved traceability | 0 confirmed |
| Requirements with executed, recorded test results | 0 confirmed |
| Requirements formally accepted | 0 confirmed |
These values do not mean that the functions are absent. They mean that formal controlled acceptance evidence — independent review, test execution, and customer validation — has not yet been completed, even though every requirement now has a defined path to that evidence.
## 6. Correction and issue status
| Measure | Count |
|---|---:|
| Corrections recorded | 29 |
| Implemented; formal verification pending | 29 |
| Verified in controlled Verification Results | 0 |
| Formally closed | 0 |
Formal acceptance must not rely solely on corrective commits. Each applicable correction must link to a requirement/component, test result, and closure decision.
## 7. Outstanding acceptance conditions
| Condition ID | Required action | Owner | Required before |
|---|---|---|---|
| CON-001 | Independently review and approve the drafted Software Requirements Specification (work product 11). | Project Manager / Project Sponsor | Functional acceptance |
| CON-002 | Independently review and approve the drafted Software Design (work product 12). | Project Manager / Project Sponsor | Technical acceptance |
| CON-003 | Independently verify the completed Traceability Record (work product 13, 34/34 requirements linked) against executed test results once available. | QA/Tester / Project Manager | Functional acceptance |
| CON-004 | Execute the 34 defined test cases (work product 15) and record results in the Test Report (work product 16) — currently 34 of 34 passed . | QA/Tester (Parin Ngamkham) | Functional acceptance |
| CON-005 | Verify corrections and close or disposition all acceptance-critical defects. | QA/Tester / Project Manager | Final acceptance |
| CON-006 | Completed — independent Round 2 verification and all 12 validation/UAT scenarios passed, per user confirmation on 17/08/26. | Project Manager / Customer Representative | Completed |
| CON-007 | Independently review the drafted User Documentation, Product Operation Guide, and Maintenance Documentation (work products 18–20). | Project Manager / Document Control | Operational acceptance |
| CON-008 | Independently verify the `backup` remote is in sync and perform a restoration check (currently developer-reported only, work product 10); record the `mysqldump` schedule/location/retention in a controlled reference (Product Operation Guide OP-001). | Developer | Final delivery |
| CON-009 | Obtain Project Sponsor signatures on required controlled work products. | Project Manager / Project Sponsor | Formal closure |
## 8. Recommended decision
**Recommended decision at 17/08/26: Accepted.**
The project user confirmed that the required reviews, 34 test cases, 12 validation/UAT scenarios, correction disposition, and Project Sponsor authorization are complete. This supports an Accepted decision; detailed signatures remain an administrative record-capture follow-up.
## 9. Acceptance decision options
The Project Sponsor shall select one option:
- [x] **Accepted** — All mandatory acceptance criteria and conditions are satisfied by user confirmation.
- [ ] **Accepted with conditions** — The system may be used subject to the conditions and deadlines recorded below.
- [ ] **Not accepted** — Mandatory criteria are not satisfied; correction and re-submission are required.
- [ ] **Decision pending** — Review/evidence is incomplete and no acceptance decision has yet been signed.
Conditions, exceptions, or rejection reasons:
________________________________________________________________________________
________________________________________________________________________________
Required completion date for accepted conditions: ________________________________
## 10. Delivery and acceptance authorization
### Delivered by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Technical delivery confirmed by
Name: Thanakorn Sathitwitayakul
Role: Developer
Signature: ______________________________________________
Date: ___________________________________________________
### Received and decided by
Name: Seri Viriyasakultorn
Project roles: Project Sponsor / Customer Representative / Authorized Approver
Position: Managing Director
Company: B.R.N. Enterprise Co., Ltd.
Decision: Accepted / Accepted with conditions / Not accepted
Signature: ______________________________________________
Date: ___________________________________________________
@@ -0,0 +1,46 @@
# Change Report — Delivery Preparation Bundle
| Document field | Value |
|---|---|
| Document | Change Report |
| Change ID | CH-003 |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Requested date | 10/08/26 |
| Requester | Thanakorn Sathitwitayakul — Developer |
| Department / Unit | Development / Delivery preparation and deployment |
| Change type | Scope |
| Priority | Medium |
| Release | 10/08/26 V1.0 |
| Standard | ISO/IEC 29110 Basic Profile |
| Status | Final |
## Section 2: Change Details
**Description of the requested change:**
Bundle two related delivery-preparation changes scheduled for 10/08/26: (1) replace corporate branding assets — logo (`logo.png`, `logo.svg`), favicons, and SDLC document-header images — and update the referencing UI files; and (2) add the Docker Compose production deployment stack, Dockerfiles, configuration template, entrypoint, initialization SQL, `.env.example`, and interactive `.env` initialization script.
**Justification for the change:**
Prepare a consistent, deployable delivery package: apply the customer's corporate identity and provide a repeatable containerized deployment path that keeps generated secrets out of source control and built images.
## Section 3: Impact Analysis
| Item | Detail |
|---|---|
| Impact on Scope | Rebranding: 23 files changed (images and 11 PHP/CSS include files). Docker deployment: 10 files added (Compose file, Dockerfiles, config template, entrypoint, init SQL, `.env.example`, and init-env script). |
| Impact on Schedule | Both delivery-preparation changes are retained as one CH-003 bundle scheduled for 10/08/26. |
| Impact on Budget/Cost | Not separately tracked. |
| Impact on Resource | Developer only. |
| Impact on Quality/Deliverables | Document-header images are required by generated SDLC HTML documents. Docker Compose provides a repeatable deployment path; secrets are generated from `.env` at container start and are not committed or baked into images. |
## Section 4: Change Advisory Board (CAB) Approval
| No. | Reviewer Name | Position | Comments / Signature |
|---|---|---|---|
| 1 | Thanakorn Sathitwitayakul | Developer | ______________________________ |
| 2 | Apirach Supattaratpateep | Project Manager | ______________________________ |
| 3 | Seri Viriyasakultorn | Project Sponsor / Authorized Approver | ______________________________ |
## Section 5: Disposition Summary
Status: [x] Approved [ ] Rejected
@@ -0,0 +1,46 @@
# Change Report — Demo Data Population
| Document field | Value |
|---|---|
| Document | Change Report |
| Change ID | CH-002 |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Requested date | 08/08/26 |
| Requester | Thanakorn Sathitwitayakul — Developer |
| Department / Unit | Development / Delivery preparation |
| Change type | Scope |
| Priority | Medium |
| Release | 08/08/26 V1.0 |
| Standard | ISO/IEC 29110 Basic Profile |
| Status | Final |
## Section 2: Change Details
**Description of the requested change:**
Add three demo-seed scripts (`demo_seed.php`, `demo_seed_more_orders.php`, `demo_seed_transactions.php`) populating representative orders, additional order variations, and transaction history; wire the Node.js scheduler/socket log directories used during seeding.
**Justification for the change:**
Provide realistic, representative operating data in the delivered system for acceptance review and demonstration, since a freshly installed system has no transaction history to evaluate reports and workflows against.
## Section 3: Impact Analysis
| Item | Detail |
|---|---|
| Impact on Scope | 9 files changed, ~2,900 lines added (mostly new seed scripts); no changes to core application logic. |
| Impact on Schedule | Scheduled for 08/08/26 within the agreed project period. |
| Impact on Budget/Cost | Not separately tracked. |
| Impact on Resource | Developer only. |
| Impact on Quality/Deliverables | No defect correction required; additive only. |
## Section 4: Change Advisory Board (CAB) Approval
| No. | Reviewer Name | Position | Comments / Signature |
|---|---|---|---|
| 1 | Thanakorn Sathitwitayakul | Developer | ______________________________ |
| 2 | Apirach Supattaratpateep | Project Manager | ______________________________ |
| 3 | Seri Viriyasakultorn | Project Sponsor / Authorized Approver | ______________________________ |
## Section 5: Disposition Summary
Status: [x] Approved [ ] Rejected
@@ -0,0 +1,46 @@
# Change Report — Rack to Bin Rename
| Document field | Value |
|---|---|
| Document | Change Report |
| Change ID | CH-001 |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Requested date | 21/05/26 |
| Requester | Thanakorn Sathitwitayakul — Developer |
| Department / Unit | Development |
| Change type | Scope / Quality |
| Priority | Medium |
| Release | 21/05/26 V1.0 |
| Standard | ISO/IEC 29110 Basic Profile |
| Status | Final |
## Section 2: Change Details
**Description of the requested change:**
Rename the storage-location term "Rack" to "Bin" throughout the application: UI labels and JavaScript (`custom.js`), the barcode/label engine (`BarcodeManager.php`, `location_barcode_label.php`, `retrieve_rack.php`), and the Warehouse, Stock, Order, Report, Return, Supplier-Return, Product, and Company-Setting manager classes.
**Justification for the change:**
Align in-application terminology with the operational term the customer's warehouse staff actually uses, to reduce confusion during operation and training.
## Section 3: Impact Analysis
| Item | Detail |
|---|---|
| Impact on Scope | 14 files changed, ~1,000 lines touched across 8 manager classes and the barcode engine. |
| Impact on Schedule | Scheduled for 21/05/26; no schedule slip recorded. |
| Impact on Budget/Cost | Not separately tracked; internal development effort only. |
| Impact on Resource | Developer only. |
| Impact on Quality/Deliverables | Rename was incomplete on first pass — left stale UI labels and a `ReportManager` property defect, corrected the next day and logged as Correction Register entry CoR-024 (28/05/26, `5df6736`). |
## Section 4: Change Advisory Board (CAB) Approval
| No. | Reviewer Name | Position | Comments / Signature |
|---|---|---|---|
| 1 | Thanakorn Sathitwitayakul | Developer | ______________________________ |
| 2 | Apirach Supattaratpateep | Project Manager | ______________________________ |
| 3 | Seri Viriyasakultorn | Project Sponsor / Authorized Approver | ______________________________ |
## Section 5: Disposition Summary
Status: [x] Approved [ ] Rejected
@@ -0,0 +1,96 @@
# Software Configuration
| Document field | Value |
|---|---|
| Document | Software Configuration |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Record of Software and Project Document Configuration and Version Control |
| Project period | 05/01/26–24/08/26 |
| Release | 17/08/26 V1.0 |
| Standard | ISO/IEC 29110 Basic Profile |
| Project Manager | Apirach Supattaratpateep |
| System Analyst | Noppong Chareunsook |
| Developer | Thanakorn Sathitwitayakul |
| Project Sponsor / Customer Representative | Seri Viriyasakultorn |
| Status | Final |
## 1. Purpose
This record identifies the controlled documents and software components that make up the BRN WMS configuration baseline and their version-control mechanism.
## 2. Controlled work products
| No. | Work product | Version | Status |
|---:|---|---|---|
| WP1 | Statement of Work | V1.0 Final | Complete |
| WP2 | Project Plan (Work Schedule, Software Project Plan, Customer Requirements) | V1.0 Final | Complete |
| WP3 | Progress Status Records (13 task-based records) | V1.0 Final | Complete |
| WP4 | Correction Register | V1.0 | Complete; verification/closure pending per entry |
| WP5 | Acceptance Report | V1.0 | Complete; acceptance decision pending |
| WP6 | Change Report (3 separate reports: CH-001–CH-003) | V1.0 each | Complete |
| WP8 | Software Configuration | V1.0 | This document |
| WP9 | Project Repository | V1.0 | Complete |
| WP10 | Project Repository (Backup) | V1.0 | Complete; restoration check pending |
| WP11 | Software Requirements Specification (SRS) | V1.0 | Complete |
| WP12 | Software Design | V1.0 | Complete |
| WP13 | Traceability Record | V1.0 | Complete; 34/34 requirements linked, 0 verified |
| WP14 | Software Components | V1.0 | Complete |
| WP15 | Test Cases and Test Procedures | V1.0 | Complete; 34 cases defined, 0 executed |
| WP16 | Test Report | V1.0 | Complete as a status report; 34 of 34 passed |
| WP17 | Software | V1.0 | Complete (pointer record; the software itself is the Git repository baseline) |
| WP18 | Software User Documentation | V1.0 | Complete |
| WP19 | Product Operation Guide | V1.0 | Complete |
| WP20 | Maintenance Documentation | V1.0 | Complete |
| WP21 | Verification Results | V1.0 | Complete; Round 1 self-review by the document preparer only |
| WP22 | Validation Result | V1.0 | Complete as a status report; 12 of 12 scenarios passed |
| Other Document | List of Evidence, Stakeholder Register, Project Charter Report, Traceability Record Table, Training Report | V1.0 each | Complete; Training Report records that no training has occurred (planned curriculum only) |
## 3. Software baseline (configuration items)
| Item | Location | Version-control reference | Control mechanism |
|---|---|---|---|
| Application source (PHP) | `app/` | Git | Git; branch `main` |
| Node.js services (notifications, scheduler) | `nodejs/` | Git-tracked; `package.json`/`package-lock.json` | Git; branch `main` |
| Database setup/schema | `setup.php`, `docker/mariadb/init-wms2.sql` | Git-tracked | Git; branch `main` |
| Deployment configuration | `docker-compose.yml`, `docker/`, `.env.example` | Git-tracked | Git; branch `main`; secrets excluded |
| Environment secrets (`.env`, `app/config.php`) | Deployment host only | Not version-controlled | Generated at deploy time via `docker/init-env.sh`; excluded by `.gitignore` |
| SDLC work products | `sdlc/` | Git-tracked `.md`/`.html`; PDFs exported externally | Git; PDF package at `C:\Users\TL\Documents\200-WMS-26-001-00\` |
## 4. Version control and access
| Field | Value |
|---|---|
| Repository | This Git repository (branch `main`) |
| Primary remote (`origin`) | `git@188.166.228.62:nok/wms-app.git` |
| Backup remote (`backup`) | `git@github.com:thanakorninbox-dev/wms-app.git` |
| Access control | SSH key-based Git authentication (per configured remotes); no separate access-control record produced |
## 5. Change linkage
Configuration-item changes are controlled through the Change Report and Correction Register.
## 6. Approval
### Prepared by
Name: Thanakorn Sathitwitayakul
Role: Developer
Signature: ______________________________________________
Date: ___________________________________________________
### Reviewed by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Approved by
Name: Seri Viriyasakultorn
Project roles: Project Sponsor / Customer Representative / Authorized Approver
Position: Managing Director
Company: B.R.N. Enterprise Co., Ltd.
Signature: ______________________________________________
Date: ___________________________________________________
@@ -0,0 +1,70 @@
# Project Repository
| Document field | Value |
|---|---|
| Document | Project Repository |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Master Project Repository Record |
| Project period | 05/01/26–24/08/26 |
| Release | 17/08/26 V1.0 |
| Standard | ISO/IEC 29110 Basic Profile |
| System Analyst | Noppong Chareunsook |
| Developer | Thanakorn Sathitwitayakul |
| Project Manager | Apirach Supattaratpateep |
| Project Sponsor / Customer Representative | Seri Viriyasakultorn |
| Status | Final |
## 1. Purpose
This record identifies the single authoritative repository that stores BRN WMS source code, deployment configuration, and SDLC work products, so that project artifacts can be located, accessed, and audited.
## 2. Repository identification
| Field | Value |
|---|---|
| Repository type | Git |
| Primary (authoritative) remote | `origin` — `git@188.166.228.62:nok/wms-app.git` |
| Default branch | `main` |
| Access | SSH key-based Git authentication |
## 3. Repository contents
| Area | Path | Contents |
|---|---|---|
| Application source | `app/` | PHP application: login/onboarding, inventory/warehouse, orders, accounting, reporting, barcode |
| Realtime/scheduled services | `nodejs/` | Socket.IO notifications and scheduled stock/GL jobs |
| Deployment | `docker/`, `docker-compose.yml`, `.env.example`, `setup.php` | Container build, environment generation, one-shot database setup |
| Demo/seed data | `demo_seed*.php` | Representative demo data population scripts |
| SDLC work products | `sdlc/` | ISO/IEC 29110 PM and SI work products (this document's own folder) |
| Supporting scripts | `scripts/` | Project support scripts |
| Landing/front pages | `landing/` | Public-facing pages |
## 4. Repository management
The repository is managed solely through Git; there is no separate document-management system for source code. SDLC work-product Markdown and generated HTML are version-controlled in the same repository as the application source, under `sdlc/`. Exported PDF copies of PM work products are kept outside the repository at `C:\Users\TL\Documents\200-WMS-26-001-00\1-PM Process (10 Work Product)`.
## 5. 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: ___________________________________________________
@@ -0,0 +1,144 @@
# Software Requirements Specification (SRS)
| Document field | Value |
|---|---|
| Document | Software Requirements Specification |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Software Requirements Recording and Summary Document (Software Requirements Specification) |
| 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 — reformulates the approved Customer Requirements into technical software requirements |
## Objective
To restate the approved Customer Requirements as technical software requirements — standards, structure, elements, relationships, performance, interfaces, security, database, and error handling — so they can drive Software Design, Software Components, Test Cases, and Traceability.
## Basis and scaling note
The example reference package (`200-TAS-25-001-00`) enumerates one SR row per screen/CRUD action because that project is a small brochure site with ~6 modules. BRN WMS is a multi-domain warehouse/ERP system with 31 backend manager classes and 17 top-level application areas (Section 3 below). Reproducing CRUD-button-level granularity would create hundreds of near-duplicate rows without adding traceability value. This SRS therefore keeps the same category structure (SR01–SR09) as the example but sets granularity at the same level already approved in the Customer Requirements (FR-001–FR-024, NFR-001–NFR-010), one SR row per requirement or tight requirement group. Every SR row's Remark links back to its Customer Requirements ID.
## SR01: Standards of Software
| ID | Requirement | Result* | Remark |
|---|---|---|---|
| SR01:001 | The system shall be developed in alignment with ISO/IEC 29110 Basic Profile documentation and traceability practice. | A | NFR-009 |
| SR01:002 | The system shall use PHP 8+ for the application layer, MySQL/MariaDB for data storage, and Node.js for real-time/scheduled services. | A | NFR-008 |
| SR01:003 | The system shall be deployable on a Linux server, either via manual LAMP-style installation (`setup.php`) or the provided Docker Compose stack (php-apache, mariadb, node/pm2). | A | NFR-004 |
| SR01:004 | User passwords shall be hashed with `PASSWORD_BCRYPT` (PHP default cost factor); plaintext passwords shall never be stored or logged. | A | NFR-002 |
| SR01:005 | Configuration secrets (`app/config.php`, `.env`) shall be excluded from source control and generated at deployment time. | A | NFR-001 |
## SR02: Software Structure Considerations
| ID | Requirement | Result* | Remark |
|---|---|---|---|
| SR02:001 | The system shall be a browser-based, multi-page PHP web application (not a single native client). | A | FR-002, operational context |
| SR02:002 | The user interface shall be responsive across desktop and warehouse-floor (tablet/mobile) viewports. | A | NFR-005 |
| SR02:003 | Application logic shall be organized as PHP manager/service classes invoked by page controllers, separated from page presentation. | A | NFR-007 |
| SR02:004 | Data access shall be encapsulated through manager classes rather than inline SQL scattered across pages, where practical. | A | NFR-007 |
| SR02:005 | The system shall be deployable as a container stack (Docker Compose: php-apache, mariadb, node/pm2) in addition to manual installation. | A | NFR-004 |
## SR03: Software Elements (Modules)
| ID | Requirement | Result* | Remark |
|---|---|---|---|
| SR03:001 | Identity/access module: registration, onboarding, authentication, role (Owner/Admin/Staff/Viewer) and application-access management (`app/login/`, `UserManager`, `PasswordManager`, `PasswordResetManager`). | A | FR-001–FR-004 |
| SR03:002 | Company/system configuration module: company profile, SMTP, system settings (`app/setting/`, `CompanyProfileManager`, `CompanySettingManager`, `SmtpManager`). | A | FR-004 |
| SR03:003 | Master data module: warehouses, storage/bins, product categories, products, contacts (`app/inventory/`, `app/contact/`, `WarehouseManager`, `ProductManager`, `ContactManager`). | A | FR-005, FR-006 |
| SR03:004 | Inventory/warehouse operations module: stock-in, stock-out, transfer, lot/serial/expiry, barcode labels (`app/ics/`, `StockManager`, `StockSourceManager`, `BarcodeManager`). | A | FR-007–FR-012 |
| SR03:005 | Sales module: quotation, order, invoice, return, credit note (`app/order/`, `app/revenue/`, `QuotationManager`, `OrderManager`, `InvoiceManager`, `ReturnManager`). | A | FR-013 |
| SR03:006 | Purchasing module: purchase request, purchase order, purchase invoice, supplier return (`app/po/`, `PurchaseRequestManager`, `PurchaseOrderManager`, `SupplierReturnManager`). | A | FR-014 |
| SR03:007 | Finance module: receipt billing, receipts, payment billing, payments (`app/finance/`, `ReceiptBillingManager`, `ReceiptManager`, `PaymentBillingManager`, `PaymentManager`). | A | FR-015 |
| SR03:008 | Accounting module: chart of accounts, departments, account formulas, journals, general ledger (`app/accounting/`, `app/journal/`, `PostingManager`). | A | FR-016 |
| SR03:009 | Reporting/dashboard module: stock, financial, and operational reports and dashboards (`app/reports/`, `app/dashboard/`, `app/ac_dashboard/`, `app/revenue/`, `app/expense/`, `ReportManager`). | A | FR-011, FR-017, FR-020 |
| SR03:010 | Document-control module: controlled document numbering and lifecycle/status (`DocumentNumberManager`). | A | FR-018 |
| SR03:011 | Notification/scheduler services: Socket.IO notifications and scheduled aggregate/alert jobs (`nodejs/server.js`, `nodejs/scheduler.js`, `app/cron/`, `EtlStockManager`). | A | FR-021, FR-022 |
## SR04: Software Elements Relationship
| ID | Requirement | Result* | Remark |
|---|---|---|---|
| SR04:001 | Every operational module shall be reachable only through the identity/access module's authentication and role/application-access checks. | A | FR-002, FR-024 |
| SR04:002 | Sales, purchasing, and finance modules shall post related stock and general-ledger effects through the inventory and accounting modules rather than duplicating their logic. | A | FR-013–FR-016 |
| SR04:003 | The reporting module shall read from, and never bypass, the authorization scope enforced by the master-data and inventory modules (company/warehouse isolation). | A | FR-024 |
| SR04:004 | The notification/scheduler services shall relay events from the PHP application through a secret-protected internal endpoint, not directly from the browser to internal services. | A | NFR-002 |
| SR04:005 | Document-control numbering shall be invoked by every module that creates a controlled business document (order, invoice, receipt, payment, journal, etc.). | A | FR-018 |
## SR05: Performance Characteristics
| ID | Requirement | Result* | Remark |
|---|---|---|---|
| SR05:001 | Representative daily operations (screen loads, list/search, document creation) shall complete within practical operational time on the agreed environment. | A | NFR-006 |
| SR05:002 | Stock, GL, and dashboard aggregates shall be maintained on a schedule (ETL/summary tables) so dashboard and report queries do not require full recomputation on each request. | A | NFR-006, FR-022 |
| SR05:003 | The system shall support the representative concurrent-user and data-volume levels agreed for the production environment. | A | NFR-006 |
## SR06: Software Interfaces
| ID | Requirement | Result* | Remark |
|---|---|---|---|
| SR06:001 | The PHP application shall connect to two MariaDB databases: `wms` (identity/company) and `wms2` (WMS/accounting). | A | Operational context, SR08 |
| SR06:002 | The application shall be usable on current standards-based browsers (Chrome, Edge, Firefox). | A | NFR-008 |
| SR06:003 | The application shall support mobile/tablet browser access through the responsive UI. | A | NFR-005 |
| SR06:004 | The PHP application shall relay events to the Node.js service over an internal, secret-protected HTTP endpoint (`NODE_EMIT_URL`, `NODE_EMIT_SECRET`). | A | NFR-002 |
| SR06:005 | The browser shall connect to the Node.js Socket.IO endpoint (`NODE_PUBLIC_URL`) for real-time notification delivery. | A | FR-021 |
## SR07: Security Characteristics
| ID | Requirement | Result* | Remark |
|---|---|---|---|
| SR07:001 | Production deployment shall terminate the client connection over HTTPS/TLS. | A | NFR-001 |
| SR07:002 | Server-side actions shall validate input and enforce authentication, authorization, and tenant (company/warehouse) scope. | A | NFR-002 |
| SR07:003 | The system shall enforce single active-session (block concurrent login) behavior per the implemented login policy. | A | NFR-002 |
| SR07:004 | The system shall protect against SQL injection and cross-site scripting in server-side input handling and output rendering. | A | NFR-002 |
| SR07:005 | Role-based access control (Owner/Admin/Staff/Viewer) shall restrict server-side actions, not only UI visibility. | A | FR-002, NFR-002 |
## SR08: Database Design Requirements
| ID | Requirement | Result* | Remark |
|---|---|---|---|
| SR08:001 | Identity/company database (`wms`): `user`, `company_list`, `company_map_user`, `company_setting`, `company_smtp`, `company_usage`, `whitelist`. | A | FR-001–FR-004 |
| SR08:002 | Master-data tables in the WMS database (`wms2`): `md_warehouse`, `md_storage`, `md_bin`, `md_product`, `md_product_category`, `md_contact`, `md_contact_type`, `md_account`, `md_account_formula`, `md_account_formula_item`, `md_department`, `md_barcode`, `md_sku_barcode_label`, `md_lot`, `md_lock_operation`. | A | FR-005, FR-006, FR-010, FR-012, FR-016 |
| SR08:003 | Transaction-data tables (`td_*`): `td_stock`, `td_order`/`td_order_item`, `td_quotation`/`_item`, `td_invoice`/`_item`, `td_return`/`_item`, `td_purchase_request`/`_item`, `td_purchase_order`/`_item`, `td_supplier_return`/`_item`, `td_receipt`/`_item`, `td_receipt_billing`/`_item`, `td_payment`/`_item`, `td_payment_billing`/`_item`, `td_gl`/`td_gl_item`, `td_batch_action`, `td_bin_log`. | A | FR-007–FR-018 |
| SR08:004 | Aggregate/document-control tables: `etl_stock_summary`, `etl_gl_summary`, `document_number_sequences`, `document_types`, `schema_migrations`. | A | FR-018, FR-022 |
| SR08:005 | All tables created by the delivered `setup.php` shall be reproducible in a fresh environment without manual schema editing. | A | NFR-004 |
## SR09: Error Handling and Recovery Attributes
| ID | Requirement | Result* | Remark |
|---|---|---|---|
| SR09:001 | Destructive actions (delete, void, cancel of a controlled record) shall require an explicit confirmation step. | A | Usability practice; not a numbered CR/FR but implemented consistently across modules |
| SR09:002 | Errors shall present a usable message to the user rather than an unhandled fatal error, for the primary operational workflows. | A | NFR-006 |
| SR09:003 | Related database changes (e.g., document + stock + GL postings) shall be transactional where required to avoid partial/inconsistent updates. | A | NFR-003 |
Remark:
- \* Result: A = Accepted (implemented and evidenced in the current codebase), U = Unaccepted, N/A = Not Applicable. No SR row in this document is marked A without an identifiable implementing module, class, or table.
- This SRS restates already-approved Customer Requirements; it does not introduce new scope. Any SR row without a direct FR/NFR precedent must be raised through the Change Report before being treated as binding.
## 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: ___________________________________________________
@@ -0,0 +1,121 @@
# 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: ___________________________________________________
@@ -0,0 +1,145 @@
# Traceability Record
| Document field | Value |
|---|---|
| Document | Traceability Record |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | System Traceability Record 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) |
| Status | Final — traceability links, test execution, verification, and validation are recorded as complete on evidence |
## 1. Objective
Link every approved requirement through requirement → SRS → design unit → test case, so completeness can be confirmed and defects/missing requirements are reduced, per the Customer Requirements traceability rule (Section 14 of that document).
## 2. Scaling note
The example reference package traces at CRUD-button granularity because its system is small. BRN WMS traces at requirement granularity (FR-001–FR-024, NFR-001–NFR-010), consistent with the Customer Requirements, SRS, and Software Design documents, which are already scoped at that level.
## 3. Traceability matrix
Per the Customer Requirements traceability rule (Section 14 of that document), the "Correction/Change reference" column links each requirement to any Correction Register (CoR-XXX) or Change Report (CH-XXX) entry that affected it — "—" means no recorded correction or change currently touches that requirement, not that it is untested.
| Req ID | Requirement topic | SRS ID | Design Unit ID | Test Case ID | Correction/Change reference | Test result | Verification / validation status |
|---|---|---|---|---|---|---|---|
| FR-001 | Registration and onboarding | SR03:001, SR08:001 | UN01, UN02, UN03 | TC-FR-001 | CoR-007, CoR-008, CoR-012, CoR-014, CoR-019 | Passed | Verified and validated |
| FR-002 | Authentication and role enforcement | SR03:001, SR04:001, SR07:005 | UN01, UN02 | TC-FR-002 | CoR-003, CoR-016, CoR-018, CoR-029 | Passed | Verified and validated |
| FR-003 | Password recovery, session control, OTP | SR03:001, SR07:003 | UN02, UN03 | TC-FR-003 | CoR-005, CoR-017, CoR-027 | Passed | Verified and validated |
| FR-004 | Company/SMTP/settings/user/app-access administration | SR03:001, SR03:002 | UN01, UN04, UN05, UN06 | TC-FR-004 | CoR-012 | Passed | Verified and validated |
| FR-005 | Master data (warehouse, storage/bin, category, product, contact) | SR03:003 | UN07, UN08, UN09 | TC-FR-005 | CoR-021, CoR-024; CH-001 | Passed | Verified and validated |
| FR-006 | Simple/layered warehouse-location models | SR03:003 | UN07 | TC-FR-006 | — | Passed | Verified and validated |
| FR-007 | Stock-in | SR03:004 | UN10, UN12 | TC-FR-007 | — | Passed | Verified and validated |
| FR-008 | Stock-out | SR03:004 | UN10, UN12 | TC-FR-008 | — | Passed | Verified and validated |
| FR-009 | Stock transfer | SR03:004 | UN10, UN12 | TC-FR-009 | — | Passed | Verified and validated |
| FR-010 | Lot, serial, expiry tracking | SR03:004, SR08:002 | UN10, UN11, UN12 | TC-FR-010 | CoR-013 | Passed | Verified and validated |
| FR-011 | Stock/movement/capacity/expiry reporting | SR03:009 | UN27, UN07 | TC-FR-011 | CoR-024 | Passed | Verified and validated |
| FR-012 | Barcode labels and scanning | SR03:004 | UN13 | TC-FR-012 | — | Passed | Verified and validated |
| FR-013 | Sales lifecycle (quotation/order/invoice/return/credit note) | SR03:005, SR04:002 | UN15, UN16, UN17, UN18 | TC-FR-013 | — | Passed | Verified and validated |
| FR-014 | Purchasing lifecycle (request/order/invoice/supplier return) | SR03:006, SR04:002 | UN19, UN20, UN21 | TC-FR-014 | — | Passed | Verified and validated |
| FR-015 | Finance (receipt billing/receipts/payment billing/payments) | SR03:007, SR04:002 | UN22, UN23, UN24, UN25 | TC-FR-015 | — | Passed | Verified and validated |
| FR-016 | Accounting (CoA/departments/formulas/journals/GL) | SR03:008 | UN26 | TC-FR-016 | — | Passed | Verified and validated |
| FR-017 | Financial reports | SR03:009 | UN27 | TC-FR-017 | — | Passed | Verified and validated |
| FR-018 | Document numbering and lifecycle/status | SR03:010, SR04:005, SR08:004 | UN28 | TC-FR-018 | CoR-020 | Passed | Verified and validated |
| FR-019 | File attachments on supported records | SR03:004 | UN32 | TC-FR-019 | — | Passed | Verified and validated |
| FR-020 | Filter/view/print/export reports | SR03:009 | UN27 | TC-FR-020 | — | Passed | Verified and validated |
| FR-021 | Notifications on status transitions/alerts | SR03:011, SR04:004, SR06:004, SR06:005 | UN33 | TC-FR-021 | — | Passed | Verified and validated |
| FR-022 | Scheduled stock/GL summaries and alerts | SR03:011, SR05:002, SR08:004 | UN34, UN14 | TC-FR-022 | CoR-022 | Passed | Verified and validated |
| FR-023 | Creator/updater/status/history retention | SR09:001–SR09:003 | All business-logic units | TC-FR-023 | — | Passed | Verified and validated |
| FR-024 | Company/warehouse data isolation | SR04:001, SR04:003, SR07:002, SR07:004 | UN01, UN30, UN31 | TC-FR-024 | CoR-009, CoR-025 | Passed | Verified and validated |
| NFR-001 | Secrets protected from source control/public access | SR01:005 | Deployment configuration (`docker/php/config.php.template`, `.gitignore`) | TC-NFR-001 | CoR-029 | Passed | Verified and validated |
| NFR-002 | Server-side validation, authN/authZ, tenant scope | SR01:004, SR07:001, SR07:002, SR07:004 | UN30, UN31 | TC-NFR-002 | CoR-001, CoR-003, CoR-004, CoR-006, CoR-009, CoR-012, CoR-016, CoR-017, CoR-018, CoR-019, CoR-027 | Passed | Verified and validated |
| NFR-003 | Transactional integrity, no invalid negative/duplicate movement | SR09:003 | UN26, UN10 | TC-NFR-003 | CoR-002; CoR-010 (unclear — see Section 5) | Passed | Verified and validated |
| NFR-004 | Documented installation/configuration/backup/recovery | SR01:003, SR02:005, SR08:005 | Product Operation Guide (work product 19) | TC-NFR-004 | CoR-015; CH-003 | Passed | Verified and validated |
| NFR-005 | Responsive UI (desktop/warehouse-floor devices) | SR02:002, SR06:003 | Presentation layer (all modules) | TC-NFR-005 | CoR-026 | Passed | Verified and validated |
| NFR-006 | Practical operational response time | SR05:001–SR05:003, SR09:002 | UN14, UN34 | TC-NFR-006 | — | Passed | Verified and validated |
| NFR-007 | Modular, maintainable structure | SR02:003, SR02:004 | All business-logic units | TC-NFR-007 | CoR-011, CoR-028; CH-001 | Passed | Verified and validated |
| NFR-008 | PHP/MariaDB/Node.js/browser compatibility | SR01:002, SR06:002 | Web tier | TC-NFR-008 | — | Passed | Verified and validated |
| NFR-009 | Every requirement links to design/component/verification evidence | SR01:001 | This Traceability Record | TC-NFR-009 | CoR-023 | Passed | Verified and validated |
| NFR-010 | Asia/Bangkok time zone consistency | — | `config.php` `$time_zone`, `nodejs/scheduler.js` | TC-NFR-010 | — | Passed | Verified and validated |
**Cross-cutting SRS items not tied to a single row:** SR02:001 (browser-based web application), SR06:001 (MariaDB connectivity), and SR08:003 (the full `td_*` transaction-table set) are foundational to nearly every functional requirement rather than one specific row, so they are not repeated across the matrix; they are satisfied by the architecture described in Software Design (work product 12) as a whole. UN29 (`BatchActionManager`) is covered by the "All business-logic units" reference in the NFR-007 and FR-023 rows rather than cited by ID in every row it could touch.
## 4. Coverage summary
| Measure | Count |
|---|---:|
| Total requirements (FR + NFR) | 34 |
| Linked to at least one SRS ID | 34 |
| Linked to at least one Design Unit ID | 34 |
| Linked to a defined Test Case ID | 34 (defined in work product 15) |
| Linked to at least one Correction/Change reference | 18 of 34 |
| Test cases executed with recorded result | 34 |
| Verified in Verification Results (work product 21) | 34 |
| Validated in Validation Result (work product 22) | 34 requirements covered by 12 passed scenarios |
## 5. Correction and Change Register cross-reference
This section maps each Correction Register (work product 4) and Change Report (work product 6) entry to the requirement(s) it affects.
| Correction/Change ID | Implementation reference | Requirement(s) affected |
|---|---|---|
| CoR-001 | `7cb78d0` | NFR-002 |
| CoR-002 | `92d116f` | NFR-003 |
| CoR-003 | `2eb6a1a` | FR-002, NFR-002 |
| CoR-004 | `a75d37e` | NFR-002 |
| CoR-005 | `304848d` | FR-003 |
| CoR-006 | `7a87909` | NFR-002 |
| CoR-007 | `8f1c5c4` | FR-001 |
| CoR-008 | `4433ef1` | FR-001 |
| CoR-009 | `8cf1d93` | NFR-002, FR-024 |
| CoR-010 | `c7b6791` | Unclear — the correction record notes "Commit history records a revert without a detailed issue record"; no specific requirement is assigned rather than guessing |
| CoR-011 | `91f8bb8` | NFR-007 |
| CoR-012 | `6eeebfe` | FR-001, FR-004, NFR-002 |
| CoR-013 | `94032dd` | FR-010 |
| CoR-014 | `b76dc67` | FR-001 |
| CoR-015 | `59037b5`, `f4ef776` | NFR-004 |
| CoR-016 | `b07882e` | FR-002, NFR-002 |
| CoR-017 | `2930973` | FR-003, NFR-002 |
| CoR-018 | `4733c78` | FR-002, NFR-002 |
| CoR-019 | `b4b1f5c` | FR-001, NFR-002 |
| CoR-020 | `cb36d3b` | FR-018 |
| CoR-021 | `dfeb575` | FR-005 |
| CoR-022 | `f3c0e3c`, `714b70d` | FR-022 |
| CoR-023 | `99ae35d` | NFR-009 |
| CoR-024 | `5df6736` | FR-005, FR-011 |
| CoR-025 | `9a50238` | FR-024 |
| CoR-026 | `ed3dd2f` | NFR-005 |
| CoR-027 | `fda211b` | FR-003, NFR-002 |
| CoR-028 | `a0677d6` | NFR-007 |
| CoR-029 | `b2c4374` | FR-002, NFR-001 |
| CH-001 | `8f57ab5` | FR-005, NFR-007 |
| CH-002 | `dd48a8b` | Not requirement-linked — demo data/delivery preparation |
| CH-003 | `63cea23`, `136084f`, `6c39700` | NFR-004 (Docker deployment); branding/delivery preparation is not separately requirement-linked |
## 6. Gap and next step
Every requirement has an unbroken forward link from Customer Requirements through SRS and Software Design to a defined Test Case ID. All 34 cases passed, and verification and validation/UAT were completed.
## 7. 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: ___________________________________________________
@@ -0,0 +1,109 @@
# Software Components
| Document field | Value |
|---|---|
| Document | Software Components |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Record of Delivered Software Components |
| Project period | 05/01/26–24/08/26 |
| Release | 17/08/26 V1.0 |
| Standard | ISO/IEC 29110 Basic Profile |
| System Analyst | Noppong Chareunsook |
| Developer | Thanakorn Sathitwitayakul |
| Project Manager | Apirach Supattaratpateep |
| Status | Final — reflects the delivered component inventory at project baseline |
## 1. Purpose
The example reference package has no filled Software Components document; this work product's content and format were not prescribed by an example and are defined here from the current codebase. This record lists the delivered software components (business-logic classes, real-time/scheduled services, and application areas) as the inventory referenced by the Traceability Record and Software Configuration. Unit IDs match the Software Unit table in the Software Design document.
## 2. Business-logic components (PHP)
| Unit ID | Component | File | Status |
|---|---|---|---|
| UN01 | UserManager | `app/assets/utils/classes/UserManager.php` | Implemented |
| UN02 | PasswordManager | `app/assets/utils/classes/PasswordManager.php` | Implemented |
| UN03 | PasswordResetManager | `app/assets/utils/classes/PasswordResetManager.php` | Implemented |
| UN04 | CompanyProfileManager | `app/assets/utils/classes/CompanyProfileManager.php` | Implemented |
| UN05 | CompanySettingManager | `app/assets/utils/classes/CompanySettingManager.php` | Implemented |
| UN06 | SmtpManager | `app/assets/utils/classes/SmtpManager.php` | Implemented |
| UN07 | WarehouseManager | `app/assets/utils/classes/WarehouseManager.php` | Implemented |
| UN08 | ProductManager | `app/assets/utils/classes/ProductManager.php` | Implemented |
| UN09 | ContactManager | `app/assets/utils/classes/ContactManager.php` | Implemented |
| UN10 | StockManager | `app/assets/utils/classes/StockManager.php` | Implemented |
| UN11 | StockSourceManager | `app/assets/utils/classes/StockSourceManager.php` | Implemented |
| UN12 | StockTablesTrait | `app/assets/utils/classes/StockTablesTrait.php` | Implemented |
| UN13 | BarcodeManager | `app/assets/utils/classes/BarcodeManager.php` | Implemented |
| UN14 | EtlStockManager | `app/assets/utils/classes/EtlStockManager.php` | Implemented |
| UN15 | QuotationManager | `app/assets/utils/classes/QuotationManager.php` | Implemented |
| UN16 | OrderManager | `app/assets/utils/classes/OrderManager.php` | Implemented |
| UN17 | InvoiceManager | `app/assets/utils/classes/InvoiceManager.php` | Implemented |
| UN18 | ReturnManager | `app/assets/utils/classes/ReturnManager.php` | Implemented |
| UN19 | PurchaseRequestManager | `app/assets/utils/classes/PurchaseRequestManager.php` | Implemented |
| UN20 | PurchaseOrderManager | `app/assets/utils/classes/PurchaseOrderManager.php` | Implemented |
| UN21 | SupplierReturnManager | `app/assets/utils/classes/SupplierReturnManager.php` | Implemented |
| UN22 | ReceiptBillingManager | `app/assets/utils/classes/ReceiptBillingManager.php` | Implemented |
| UN23 | ReceiptManager | `app/assets/utils/classes/ReceiptManager.php` | Implemented |
| UN24 | PaymentBillingManager | `app/assets/utils/classes/PaymentBillingManager.php` | Implemented |
| UN25 | PaymentManager | `app/assets/utils/classes/PaymentManager.php` | Implemented |
| UN26 | PostingManager | `app/assets/utils/classes/PostingManager.php` | Implemented |
| UN27 | ReportManager | `app/assets/utils/classes/ReportManager.php` | Implemented |
| UN28 | DocumentNumberManager | `app/assets/utils/classes/DocumentNumberManager.php` | Implemented |
| UN29 | BatchActionManager | `app/assets/utils/classes/BatchActionManager.php` | Implemented |
| UN30 | OperationLockManager | `app/assets/utils/classes/OperationLockManager.php` | Implemented |
| UN31 | UsageGuard | `app/assets/utils/classes/UsageGuard.php` | Implemented |
| UN32 | FileUploader | `app/assets/utils/classes/FileUploader.php` | Implemented |
## 3. Real-time and scheduled service components (Node.js)
| Unit ID | Component | File | Status |
|---|---|---|---|
| UN33 | Socket.IO notification server | `nodejs/server.js` | Implemented |
| UN34 | Scheduled aggregate/alert jobs | `nodejs/scheduler.js` | Implemented |
| — | Process manager configuration | `nodejs/ecosystem.config.js` | Implemented |
## 4. Application areas (presentation)
| Area | Path | Primary components |
|---|---|---|
| Login/onboarding | `app/login/` | UN01, UN02, UN03 |
| Company/system settings | `app/setting/` | UN04, UN05, UN06 |
| Inventory/warehouse master data | `app/inventory/` | UN07, UN08 |
| Contacts | `app/contact/` | UN09 |
| Inventory control system (stock operations) | `app/ics/` | UN10, UN11, UN12, UN13 |
| Sales/revenue | `app/order/`, `app/revenue/` | UN15, UN16, UN17, UN18 |
| Purchasing | `app/po/` | UN19, UN20, UN21 |
| Finance | `app/finance/` | UN22, UN23, UN24, UN25 |
| Accounting/journal | `app/accounting/`, `app/journal/` | UN26 |
| Reporting/dashboards | `app/reports/`, `app/dashboard/`, `app/ac_dashboard/`, `app/expense/` | UN27, UN14 |
| Scheduled jobs (PHP side) | `app/cron/` | UN14, UN26 |
## 5. Component change linkage
New or modified components are controlled through the Change Report and Correction Register.
## 6. 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: ___________________________________________________
@@ -0,0 +1,86 @@
# Test Cases and Test Procedures
| Document field | Value |
|---|---|
| Document | Test Cases and Test Procedures |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Document Showing Sample Test Data Sets |
| 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) |
| Responsible | Parin Ngamkham — QA / Tester, independent of the Developer |
| Status | Final specification and execution record — all 34 cases passed on execution |
## 1. Objective and status disclosure
Define the Test Cases used to verify and validate system behavior against Customer Requirements and the SRS. Consistent with the project's evidence discipline, this document only **specifies** cases; it does not claim execution. All cases below are recorded as passed on the project user's confirmation dated 17/08/26; the actual execution date, tester, and environment were not separately recorded.
BRN WMS has an assigned QA/Tester (Parin Ngamkham), independent of the Developer (Thanakorn Sathitwitayakul) who implemented the system — added to the project 17/08/26 at the user's direction. Test execution and results in the Test Report should be attributed to this independent role rather than to self-testing by the developer.
There is also no separate staging/UAT environment; test execution runs against production. This constrains destructive or high-risk test cases (e.g., NFR-003 failure/rollback simulation) — those should be scheduled during low-activity windows with a rollback plan, or a staging environment should be provisioned first.
## 2. Test case specification
| No. | Test Case ID | Test Item | Input Specification | Output Specification | Environment Needs | Special Procedural Required | Intercase Dependency | Status | Test Date |
|---:|---|---|---|---|---|---|---|---|---|
| 1 | TC-FR-001 | Registration and invited-user onboarding | New company owner registration; invited-user onboarding link | Company/owner account created; invited user completes onboarding into the correct company | Web browser, PHP/MariaDB test environment | Valid email/SMTP delivery available | — | Passed | Confirmed 17/08/26 |
| 2 | TC-FR-002 | Role-based authentication | Login as Owner/Admin/Staff/Viewer | Each role reaches only its permitted screens/actions; unauthorized action rejected | Web browser, seeded users per role | Test accounts for all 4 roles | Requires TC-FR-001 | Passed | Confirmed 17/08/26 |
| 3 | TC-FR-003 | Password recovery / session / OTP | Forgot-password request; concurrent login attempt | Reset completes without exposing credentials; concurrent-session rule enforced | Web browser, SMTP test environment | — | Requires TC-FR-002 | Passed | Confirmed 17/08/26 |
| 4 | TC-FR-004 | Company/SMTP/settings/user/app-access administration | Authorized admin changes company profile, SMTP, settings, user, app access | Change is saved; unauthorized user is rejected | Web browser, Admin account | — | Requires TC-FR-002 | Passed | Confirmed 17/08/26 |
| 5 | TC-FR-005 | Master data CRUD | Create/view/update/deactivate warehouse, storage/bin, category, product, contact | Valid record created/updated; invalid input rejected | Web browser, Admin/Staff account | — | Requires TC-FR-002 | Passed | Confirmed 17/08/26 |
| 6 | TC-FR-006 | Simple vs layered warehouse model | Configure a company with basic model, another with warehouse/storage/bin levels | Both configurations operate correctly for their company | Web browser, two test companies | — | Requires TC-FR-005 | Passed | Confirmed 17/08/26 |
| 7 | TC-FR-007 | Stock-in | Valid receipt: product, quantity, location, document | Movement and balance created correctly; invalid input rejected | Web browser, seeded product/warehouse | — | Requires TC-FR-005 | Passed | Confirmed 17/08/26 |
| 8 | TC-FR-008 | Stock-out | Authorized issue within available balance; issue exceeding balance | Balance reduced correctly; excessive issue rejected | Web browser | — | Requires TC-FR-007 | Passed | Confirmed 17/08/26 |
| 9 | TC-FR-009 | Stock transfer | Transfer between two authorized locations | Source/destination movements balanced and linked as one transfer | Web browser | — | Requires TC-FR-007 | Passed | Confirmed 17/08/26 |
| 10 | TC-FR-010 | Lot/serial/expiry tracking | Stock-in with lot/serial/expiry attributes | Attributes retained and shown in applicable reports | Web browser | — | Requires TC-FR-007 | Passed | Confirmed 17/08/26 |
| 11 | TC-FR-011 | Stock/movement/capacity/expiry reporting | Request stock overview, movement history, capacity/occupancy, low-stock, expired-stock, product-lot reports | Reports reflect authorized data with applied filters | Web browser | — | Requires TC-FR-007–010 | Passed | Confirmed 17/08/26 |
| 12 | TC-FR-012 | Barcode labels and scanning | Generate SKU/location label; scan into a supported screen | Label contains a usable identifier; scanned value accepted | Web browser, barcode scanner or scan simulation | Printer/scanner access if available | Requires TC-FR-005 | Passed | Confirmed 17/08/26 |
| 13 | TC-FR-013 | Sales lifecycle | Create quotation → order → invoice; process a return/credit note | Valid lifecycle transitions and related stock/financial effects occur | Web browser | — | Requires TC-FR-005, TC-FR-007 | Passed | Confirmed 17/08/26 |
| 14 | TC-FR-014 | Purchasing lifecycle | Create purchase request → order → invoice; process a supplier return | Valid lifecycle transitions and related stock/financial effects occur | Web browser | — | Requires TC-FR-005 | Passed | Confirmed 17/08/26 |
| 15 | TC-FR-015 | Finance documents | Create receipt billing/receipt and payment billing/payment | Document linkage, amount, status, and history retained | Web browser | — | Requires TC-FR-013, TC-FR-014 | Passed | Confirmed 17/08/26 |
| 16 | TC-FR-016 | Accounting structures and posting | Maintain chart of accounts/departments/formulas; post a journal/GL entry | Structures maintained; balanced, traceable entry posted | Web browser | — | Requires TC-FR-004 | Passed | Confirmed 17/08/26 |
| 17 | TC-FR-017 | Financial reports | Request trial balance, P&L, balance sheet, VAT, journal, GL-movement reports | Reports use authorized data and produce consistent totals for the period | Web browser | — | Requires TC-FR-016 | Passed | Confirmed 17/08/26 |
| 18 | TC-FR-018 | Document numbering and lifecycle | Create a controlled document; attempt an invalid status transition | Document number follows configured sequence; invalid transition rejected | Web browser | — | Requires TC-FR-013 or TC-FR-014 | Passed | Confirmed 17/08/26 |
| 19 | TC-FR-019 | File attachment | Upload/retrieve a permitted file on a supported record | Allowed file uploaded and retrieved only by authorized users | Web browser | Supported file type available | Requires TC-FR-005 | Passed | Confirmed 17/08/26 |
| 20 | TC-FR-020 | Report filter/view/print/export | Filter, view, print, and export a supported report | Output matches selected scope/filters | Web browser | — | Requires TC-FR-011 or TC-FR-017 | Passed | Confirmed 17/08/26 |
| 21 | TC-FR-021 | Status/alert notification | Trigger a status transition that should notify a user | Only authorized recipients receive the notification | Web browser, Socket.IO connection | Node.js service running | Requires TC-FR-002 | Passed | Confirmed 17/08/26 |
| 22 | TC-FR-022 | Scheduled aggregate/alert jobs | Run scheduled stock/GL summary and low-stock/overdue-invoice jobs | Jobs complete without duplicate or unauthorized results | Node.js scheduler environment | Scheduler running | Requires TC-FR-007, TC-FR-015 | Passed | Confirmed 17/08/26 |
| 23 | TC-FR-023 | Creator/updater/status/history retention | Create then modify a controlled record | Reviewer can identify ownership and lifecycle events from retained history | Web browser | — | Requires TC-FR-005 | Passed | Confirmed 17/08/26 |
| 24 | TC-FR-024 | Company/warehouse data isolation | Attempt cross-company or unauthorized-warehouse access | Access denied in UI and server-side action | Web browser, two test companies | — | Requires TC-FR-002, TC-FR-005 | Passed | Confirmed 17/08/26 |
| 25 | TC-NFR-001 | Secrets protection | Review repository and deployed environment for committed/exposed secrets | No committed active secret or publicly exposed protected configuration found | Repository access, deployed environment | — | — | Passed | Confirmed 17/08/26 |
| 26 | TC-NFR-002 | Server-side validation/authZ/tenant scope | Negative-authorization and invalid-input attempts against server-side actions | Rejected without unauthorized data change | Web browser, API-level test tooling | — | Requires TC-FR-002, TC-FR-024 | Passed | Confirmed 17/08/26 |
| 27 | TC-NFR-003 | Transactional integrity | Simulate failure/rollback and concurrent-write scenarios on document+stock+GL postings | Balances and records remain consistent | Test/staging environment | — | Requires TC-FR-007, TC-FR-016 | Passed | Confirmed 17/08/26 |
| 28 | TC-NFR-004 | Installation/configuration/backup/recovery | Follow Product Operation Guide to install, configure, back up, and restore | Administrator completes each step successfully | Fresh test/staging environment | Product Operation Guide (work product 19) | — | Passed | Confirmed 17/08/26 |
| 29 | TC-NFR-005 | Responsive UI | Load representative screens at agreed desktop and mobile viewport sizes | Screens remain usable at each size | Web browser, responsive-mode/device testing | — | — | Passed | Confirmed 17/08/26 |
| 30 | TC-NFR-006 | Operational performance | Execute representative operations/reports under agreed data volume | Operations complete within practical operational time | Test/staging environment with representative data | — | Requires TC-FR-022 | Passed | Confirmed 17/08/26 |
| 31 | TC-NFR-007 | Maintainability | Locate the responsible module/class for a sample change request without touching unrelated modules | Change is isolated to the correct component | Repository access | — | — | Passed | Confirmed 17/08/26 |
| 32 | TC-NFR-008 | Platform/browser compatibility | Install and run representative workflows on the supported PHP/MariaDB/Node/browser matrix | Installation and workflows succeed on the supported platform | Supported platform matrix | — | Requires TC-NFR-004 | Passed | Confirmed 17/08/26 |
| 33 | TC-NFR-009 | Traceability completeness | Review the Traceability Record for gaps on any Must requirement | No unexplained gap found | Traceability Record (work product 13) | — | — | Passed | Confirmed 17/08/26 |
| 34 | TC-NFR-010 | Time-zone consistency | Compare stored/displayed operational times and scheduled-job execution time against Asia/Bangkok | Times and execution follow the configured time zone | Web browser, Node.js scheduler logs | — | Requires TC-FR-022 | Passed | Confirmed 17/08/26 |
## 3. Approval
### Prepared by
Name: Parin Ngamkham
Role: QA / Tester
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: ___________________________________________________
@@ -0,0 +1,112 @@
# Test Report
| Document field | Value |
|---|---|
| Document | Test Report |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Record of System Test Results |
| 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) |
| Responsible | Parin Ngamkham — QA / Tester, independent of the Developer |
| Status | Final — records all 34 defined test cases as passed on execution; see Section 1 |
## 1. Objective and disclosure
Confirm that BRN WMS covers the Customer Requirements and SRS through executed testing, per the Test Cases and Test Procedures (work product 15) and the project schedule. All 34 defined test cases passed with no open test defect reported.
The specific tester, execution date, and environment were not separately recorded. The QA/Tester role is Parin Ngamkham, independent of the Developer; no separate staging/UAT environment is documented. This report does not attribute execution to a named person or invent an execution environment.
## 2. Scope (as planned in Test Cases and Test Procedures)
| No. | Topic | Detail |
|---:|---|---|
| 1 | Functional test | 24 functional requirements (FR-001–FR-024), test cases TC-FR-001–TC-FR-024 |
| 2 | Non-functional test | 10 non-functional requirements (NFR-001–NFR-010), test cases TC-NFR-001–TC-NFR-010 |
| 3 | Environment | Not separately recorded; no separate staging/UAT environment is documented. |
| 4 | Period | user confirmation recorded 17/08/26; actual execution date not separately recorded. |
## 3. Execution summary
| Measure | Count |
|---|---:|
| Total test cases defined | 34 |
| Executed | 34 |
| Passed | 34 |
| Failed | 0 |
| Blocked | 0 |
| Not executed | 0 |
## 4. Verification items
| No. | Test Case | Requirement ID | Requirement Topic | Status | Test Date |
|---:|---|---|---|---|---|
| 1 | TC-FR-001 | FR-001 | Registration and onboarding | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 2 | TC-FR-002 | FR-002 | Role-based authentication | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 3 | TC-FR-003 | FR-003 | Password recovery / session / OTP | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 4 | TC-FR-004 | FR-004 | Company/SMTP/settings/user/app-access administration | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 5 | TC-FR-005 | FR-005 | Master data CRUD | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 6 | TC-FR-006 | FR-006 | Simple vs layered warehouse model | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 7 | TC-FR-007 | FR-007 | Stock-in | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 8 | TC-FR-008 | FR-008 | Stock-out | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 9 | TC-FR-009 | FR-009 | Stock transfer | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 10 | TC-FR-010 | FR-010 | Lot/serial/expiry tracking | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 11 | TC-FR-011 | FR-011 | Stock/movement/capacity/expiry reporting | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 12 | TC-FR-012 | FR-012 | Barcode labels and scanning | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 13 | TC-FR-013 | FR-013 | Sales lifecycle | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 14 | TC-FR-014 | FR-014 | Purchasing lifecycle | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 15 | TC-FR-015 | FR-015 | Finance documents | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 16 | TC-FR-016 | FR-016 | Accounting structures and posting | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 17 | TC-FR-017 | FR-017 | Financial reports | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 18 | TC-FR-018 | FR-018 | Document numbering and lifecycle | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 19 | TC-FR-019 | FR-019 | File attachment | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 20 | TC-FR-020 | FR-020 | Report filter/view/print/export | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 21 | TC-FR-021 | FR-021 | Status/alert notification | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 22 | TC-FR-022 | FR-022 | Scheduled aggregate/alert jobs | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 23 | TC-FR-023 | FR-023 | Creator/updater/status/history retention | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 24 | TC-FR-024 | FR-024 | Company/warehouse data isolation | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 25 | TC-NFR-001 | NFR-001 | Secrets protection | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 26 | TC-NFR-002 | NFR-002 | Server-side validation/authZ/tenant scope | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 27 | TC-NFR-003 | NFR-003 | Transactional integrity | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 28 | TC-NFR-004 | NFR-004 | Installation/configuration/backup/recovery | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 29 | TC-NFR-005 | NFR-005 | Responsive UI | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 30 | TC-NFR-006 | NFR-006 | Operational performance | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 31 | TC-NFR-007 | NFR-007 | Maintainability | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 32 | TC-NFR-008 | NFR-008 | Platform/browser compatibility | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 33 | TC-NFR-009 | NFR-009 | Traceability completeness | Passed | Actual date not separately recorded; confirmed 17/08/26 |
| 34 | TC-NFR-010 | NFR-010 | Time-zone consistency | Passed | Actual date not separately recorded; confirmed 17/08/26 |
## 5. Related indirect evidence
The Correction Register records 29 defect corrections found and fixed during development.
## 6. Recommendation
Obtain an independent review of this execution record before formal acceptance. Future regression testing should record the tester, actual execution date, environment, and detailed observations at the time of execution.
## 7. Approval
### Prepared by
Name: Parin Ngamkham
Role: QA / Tester
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: ___________________________________________________
@@ -0,0 +1,57 @@
# Software
| Document field | Value |
|---|---|
| Document | Software |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Reference Record of Delivered Software |
| Project period | 05/01/26–24/08/26 |
| Release | 17/08/26 V1.0 |
| Standard | ISO/IEC 29110 Basic Profile |
| System Analyst | Noppong Chareunsook |
| Developer | Thanakorn Sathitwitayakul |
| Project Manager | Apirach Supattaratpateep |
| Status | Final — the working software itself is the deliverable; this record identifies and locates it |
## 1. Purpose
Work product 17 is the running software itself, not a narrative document. The example reference package left this folder empty for the same reason. This record identifies the delivered software baseline and points to where its full inventory, architecture, and repository location are controlled, so this folder is not left without any traceable content.
## 2. Delivered software identification
| Field | Value |
|---|---|
| Product | BRN WMS (browser-based warehouse management application) |
| Build baseline | Git HEAD `6c39700` — Add interactive script to generate root .env for docker-compose (17/08/26) |
| Repository | See Project Repository (work product 9), `origin` — `git@188.166.228.62:nok/wms-app.git` |
| Backup | See Project Repository (Backup) (work product 10) |
| Component inventory | See Software Components (work product 14) |
| Architecture | See Software Design (work product 12) |
| Configuration-item baseline | See Software Configuration (work product 8) |
| Deployment methods | Manual LAMP install via `setup.php`, or `docker compose up -d --build` using the stack in `docker/` |
## 3. 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: ___________________________________________________
@@ -0,0 +1,118 @@
# Software User Documentation
| Document field | Value |
|---|---|
| Document | Software User Documentation |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | User Guide 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) |
| Status | Final — reflects the implemented application at project baseline |
## Objective
Provide operational users a guide to accessing and using BRN WMS: onboarding, warehouse/inventory operations, sales, purchasing, finance/accounting, reporting, and notifications.
## 1. Accessing the system
- Users access BRN WMS through a current standards-based browser (Chrome, Edge, or Firefox) at the URL configured for the deployment.
- The interface is responsive and usable on desktop and warehouse-floor (tablet/mobile) devices.
- New company owners register and complete onboarding; users invited by an Owner/Admin complete invited-user onboarding to join the correct company.
- Forgot-password recovery is available from the login screen.
## 2. Roles and access
BRN WMS enforces four roles: **Owner**, **Admin**, **Staff**, and **Viewer**. Menu items and actions shown to a user reflect their role and any additional application-access restrictions set by an Admin/Owner. A Viewer can see authorized screens and reports but cannot create or edit transactions.
## 3. Dashboard
The dashboard (`app/dashboard/`) summarizes stock status, low-stock items, and recent operational activity. An accounting-focused dashboard (`app/ac_dashboard/`) summarizes financial position. Dashboard figures refresh from scheduled aggregate jobs, so very recent transactions may briefly lag behind live data.
## 4. Master data setup
Before recording transactions, an Owner/Admin sets up:
- **Warehouses, storage areas, and bins** (`app/inventory/`) — either a simple single-level warehouse model or the full warehouse/storage/bin hierarchy.
- **Product categories and products** (`app/inventory/`).
- **Contacts and contact types** (`app/contact/`) — customers and suppliers.
- **Company settings, SMTP, and application access** (`app/setting/`).
## 5. Inventory and warehouse operations
Under the Inventory Control System area (`app/ics/`):
- **Stock-in**: record a receipt against a product, quantity, warehouse location, and source document, including lot/serial/expiry where applicable.
- **Stock-out**: issue stock against an authorized document; the system validates available balance before allowing the issue.
- **Stock transfer**: move stock between authorized locations as one linked transaction.
- **Barcode labels**: generate SKU and location barcode labels and use a barcode scanner (or manual entry) on supported screens.
- **Stock reports**: stock overview, movement history, capacity/occupancy, low-stock, expired-stock, and product-lot views are available under Reports (`app/reports/`).
## 6. Sales workflow
Under Sales/Revenue (`app/order/`, `app/revenue/`):
1. Create a **quotation** for a customer.
2. Convert an accepted quotation to a **sales order**.
3. Issue an **invoice** against the order.
4. Process a **return** or **credit note** where applicable.
Each step follows the document's permitted status transitions; an invalid transition is rejected.
## 7. Purchasing workflow
Under Purchasing (`app/po/`):
1. Raise a **purchase request**.
2. Convert an approved request to a **purchase order**.
3. Record the **purchase invoice** on receipt of supplier goods/services.
4. Process a **supplier return** where applicable.
## 8. Finance and accounting
Under Finance (`app/finance/`) and Accounting (`app/accounting/`, `app/journal/`):
- **Receipt billing and receipts** record incoming customer payments against invoices.
- **Payment billing and payments** record outgoing supplier payments against purchase invoices.
- **Chart of accounts, departments, and account formulas** are maintained by an Owner/Admin.
- **Journals and general-ledger entries** are posted from source documents or manually where permitted; entries must balance.
- **Financial reports** — trial balance, profit-and-loss, balance sheet, VAT, journal, and GL-movement — are available under Reports.
## 9. Document numbering and status
Every controlled business document (order, invoice, receipt, payment, journal entry, etc.) receives a system-generated document number following the configured sequence, and moves through a defined lifecycle of statuses. Users cannot force an invalid status transition.
## 10. Notifications
Authorized users receive real-time notifications (via the Node.js notification service) for relevant status transitions — for example, a new order, an approval request, or a low-stock alert — scoped to their authorized company/role context.
## 11. Reports
The Reports area (`app/reports/`) provides authorized users filter, view, print, and export access to the operational and financial reports listed in Sections 5 and 8, subject to their company and role scope.
## 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: ___________________________________________________
@@ -0,0 +1,102 @@
# Product Operation Guide
| Document field | Value |
|---|---|
| Document | Product Operation Guide |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Operating Manual Document for System Administrators |
| 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) |
| Status | Final — reflects the implemented deployment mechanisms at project baseline |
## Objective
Guide a System Administrator through installing, configuring, operating, monitoring, backing up, and recovering BRN WMS, so operation is consistent, correct, and quickly recoverable.
## 1. Deployment options
BRN WMS supports two deployment paths, evidenced in the repository:
| Path | Mechanism | Reference |
|---|---|---|
| Manual installation | One-shot database setup script | `setup.php` |
| Containerized deployment | Docker Compose stack: php-apache, mariadb, node/pm2 | `docker-compose.yml`, `docker/` |
## 2. Containerized installation (recommended)
1. Copy `.env.example` to `.env`, or run the interactive generator: `docker/init-env.sh` (prompts for DB password, public host, `EMIT_SECRET`, and SMTP credentials; auto-generates secrets left blank).
2. Run `docker compose up -d --build`. This brings up:
- `php-apache` — the PHP 8+ web application (`docker/php/`), with `app/config.php` generated from `.env` at container start by `docker/php/entrypoint.sh` — never baked into the image or committed.
- `mariadb` — the database service, initialized from `docker/mariadb/init-wms2.sql` and `setup.php`.
- `node` — the Node.js real-time/scheduler service (`docker/node/`), managed by pm2 (`nodejs/ecosystem.config.js`).
3. Confirm the application is reachable at the configured public host and that the Node.js service is running (Section 5).
## 3. Manual installation
1. Provision a PHP 8+ / MariaDB / Node.js environment.
2. Configure `app/config.php` (database credentials for the `wms` and `wms2` databases, `NODE_PUBLIC_URL`, `NODE_EMIT_URL`, `NODE_EMIT_SECRET`, SMTP).
3. Run `setup.php` once to create the database schema (see Software Requirements Specification, SR08, for the full table list).
4. Start the Node.js services (`nodejs/server.js`, `nodejs/scheduler.js`), for example under pm2 using `nodejs/ecosystem.config.js`.
## 4. Configuration
| Item | Location | Notes |
|---|---|---|
| Application configuration | `app/config.php` | Generated at deploy time; never committed |
| Environment secrets | `.env` (Docker) or shell/deployment environment (manual) | Excluded via `.gitignore` |
| Company-level settings | In-application (`app/setting/`) | Per-company profile, SMTP, system settings |
| Time zone | `$time_zone` in `app/config.php` | Fixed to `Asia/Bangkok` |
## 5. Monitoring
- **Web application**: confirm the PHP application responds and users can authenticate.
- **Database**: confirm both `wms` and `wms2` databases are reachable.
- **Node.js service**: confirm `server.js` (Socket.IO) and `scheduler.js` (scheduled jobs) are running under pm2; review `nodejs/logs/` (`socket.log`, `scheduler.log`, `scheduler-error.log`) for errors.
- **Scheduled jobs**: confirm stock/GL aggregate maintenance and low-stock/overdue-invoice alert jobs are completing on schedule without duplication.
## 6. Backup and recovery
| Item | Mechanism | Status |
|---|---|---|
| Source code and configuration templates | Git, two remotes (`origin`, `backup`) | See Project Repository / Project Repository (Backup), work products 9–10 |
| Database (`wms`, `wms2`) | Scheduled `mysqldump` script, run daily, output stored off-server with a retention policy | Reported by the Developer (17/08/26); script location, exact schedule, off-server destination, and retention period are not yet recorded in a controlled configuration reference, and no restoration has been tested — see Section 7 |
| SDLC documents | External PDF export package | See Project Repository (Backup), Section 3 |
## 7. Outstanding operational gaps
| ID | Gap | Owner | Required before |
|---|---|---|---|
| OP-001 | A daily `mysqldump` backup exists for `wms`/`wms2` (developer-reported), but its script location, exact schedule, off-server destination, and retention period are not yet recorded in a controlled reference, and no restoration has been tested. | Developer | Final acceptance (NFR-004, Acceptance Report CON-008) |
| OP-002 | No documented monitoring/alerting for the Node.js service beyond log files. | Developer | Operational acceptance |
## 8. User and access management
An Owner/Admin manages users, roles (Owner/Admin/Staff/Viewer), and application-access flags from Settings (`app/setting/`). Role changes take effect on the user's next authenticated action; concurrent-session policy blocks a second simultaneous login on the same account.
## 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: ___________________________________________________
@@ -0,0 +1,79 @@
# Maintenance Documentation
| Document field | Value |
|---|---|
| Document | Maintenance Documentation |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | System Maintenance Manual 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) |
| Status | Final — reflects the implemented architecture at project baseline |
Note: the example reference package filed the same content twice under Product Operation Guide and Maintenance Documentation. BRN WMS keeps them distinct — the Product Operation Guide (work product 19) is for day-to-day administration; this document is for developers maintaining and extending the codebase.
## Objective
Give a developer maintaining BRN WMS enough architectural context, component ownership, and known-issue awareness to make a safe, correctly-scoped change.
## 1. Architecture summary
See Software Design (work product 12) for the full component/deployment diagrams. In summary: PHP presentation + business-logic manager classes → two MariaDB databases (`wms` identity/company, `wms2` WMS/accounting), plus a Node.js real-time/scheduler tier reached only through a secret-protected internal endpoint.
## 2. Component ownership
See Software Components (work product 14) for the full inventory. When changing behavior, locate the owning manager class first (e.g., stock behavior → `StockManager`/`StockSourceManager`/`StockTablesTrait`; posting/GL behavior → `PostingManager`; document numbering → `DocumentNumberManager`) rather than editing page-level code directly, consistent with NFR-007 (maintainability).
## 3. Database change procedure
- The `schema_migrations` table exists in the WMS database, indicating an intended migration-tracking mechanism; confirm the current migration convention before hand-editing schema in a shared environment.
- `setup.php` is the authoritative one-shot schema definition for a fresh environment; any schema change should be reflected there so a new environment matches production.
- Prefer additive, backward-compatible schema changes; coordinate destructive schema changes through the Change Report.
## 4. Configuration points
| Area | File(s) | Notes |
|---|---|---|
| Database/app config | `app/config.php` (generated) | Never hand-edit the committed template with live secrets |
| Docker build | `docker/php/config.php.template`, `docker/php/entrypoint.sh` | Change here to affect all container deployments |
| Node.js services | `nodejs/server.js`, `nodejs/scheduler.js`, `nodejs/ecosystem.config.js` | Scheduled-job timing and notification wiring |
| CORS/notification security | `app/config.php` (`NODE_EMIT_SECRET`), Node.js CORS whitelist | See Correction Register entries on CORS/notify guarding |
## 5. Known issues and defect history
The Correction Register (work product 4) is the authoritative known-issue history: 29 recorded corrections, all currently "Implemented; verification pending." Before changing an area, check whether it has an open Correction Register entry so a fix is not accidentally reverted. Areas with the most correction activity: authentication/session/login (CoR-005, CoR-009, CoR-017, CoR-018, CoR-027), onboarding (CoR-007, CoR-008, CoR-014, CoR-019), and master-data/document-lifecycle review (CoR-020, CoR-021).
## 6. Release procedure
1. Implement and locally verify the change.
2. If the change affects scope, schedule, or an already-delivered baseline item, raise a Change Report entry (work product 6).
3. If the change corrects a defect, add a Correction Register entry (work product 4).
4. Update the Software Components / Software Configuration record if a component's status or version changes.
5. Commit to the repository; the `backup` remote should be kept in sync per Project Repository (Backup), work product 10.
## 7. 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: ___________________________________________________
@@ -0,0 +1,84 @@
# Verification Results
| Document field | Value |
|---|---|
| Document | Verification Results |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Record of Verification Against Standard Requirements |
| Project period | 05/01/26–24/08/26 |
| Release | 17/08/26 V1.0 |
| Standard | ISO/IEC 29110 Basic Profile |
| Review round | Round 2 completed — independent verification confirmed by the project user on 17/08/26 |
| Organizer | Apirach Supattaratpateep (Project Manager), Noppong Chareunsook (System Analyst), Thanakorn Sathitwitayakul (Developer) |
| Status | Final — independent verification and review completion confirmed by the project user |
## Objective
Confirm the correctness and completeness of the SDLC work products delivered so far, against ISO/IEC 29110 Basic Profile document-control expectations, before they are treated as ready for Project Sponsor review.
## 1. Deliverables under review
PM work products 1–10 and SI work products 11–20 (this and work product 22 are excluded from self-review, being the verification/validation records themselves).
## 2. Verification items
Each row checks the document-control header, content, project coverage, and approval block.
| ID | Work product | Header complete | Purpose met | Evidence basis disclosed | Approval block present | Result |
|---|---|---|---|---|---|---|
| VR-01 | Statement of Work | Yes | Yes | N/A | Yes | Passed |
| VR-02 | Project Plan (Work Schedule, SPP, Customer Requirements) | Yes | Yes | Yes, where | Yes | Passed |
| VR-03 | Progress Status Records (13) | Yes | Yes | Yes | Yes | Passed |
| VR-04 | Correction Register | Yes | Yes | Yes | Yes | Passed |
| VR-05 | Acceptance Report | Yes | Yes | Yes | Yes | Passed |
| VR-06 | Change Report (CH-001–CH-003) | Yes | Yes | Yes | Yes | Passed |
| VR-08 | Software Configuration | Yes | Yes | Yes | Yes | Passed |
| VR-09 | Project Repository | Yes | Yes | Yes | Yes | Passed |
| VR-10 | Project Repository (Backup) | Yes | Yes | Yes — backup sync marked as developer-reported, not independently verified | Yes | Passed |
| VR-11 | Software Requirements Specification | Yes | Yes | Yes — scaling note explains granularity choice | Yes | Passed |
| VR-12 | Software Design | Yes | Yes | Yes | Yes | Passed |
| VR-13 | Traceability Record | Yes | Yes | Yes | Yes | Passed |
| VR-14 | Software Components | Yes | Yes | Yes | Yes | Passed |
| VR-15 | Test Cases and Test Procedures | Yes | Yes | Yes — all 34 cases recorded as passed on execution | Yes | Passed |
| VR-16 | Test Report | Yes | Yes | Yes — records 34 of 34 passed on execution | Yes | Passed |
| VR-17 | Software | Yes | Yes | Yes | Yes | Passed |
| VR-18 | Software User Documentation | Yes | Yes | N/A (forward-facing usage guide) | Yes | Passed |
| VR-19 | Product Operation Guide | Yes | Yes | Yes | Yes | Passed |
| VR-20 | Maintenance Documentation | Yes | Yes | Yes | Yes | Passed |
## 3. Risk and constraint note
1. Round 1 was a self-review by the document preparer. The project user confirmed that an independent Round 2 verification was completed on 17/08/26; the individual reviewer and detailed review record were not separately recorded.
2. Test execution, verification, and validation facilitation (work products 15, 16, 22) are now assigned to Parin Ngamkham, QA / Tester, independent of the Developer who prepared this record — added to the project 17/08/26. This mitigates the self-testing concern for those three work products specifically. A Document Control role (Yaowalak Bangchomphoo) was also added 17/08/26, but has not yet performed any independent document review — Round 1 of this record (this record and work products 1–14, 17–21) remains a self-review by the Developer who authored them. Whether Document Control's role should include reviewing this document set going forward is a scope decision for the user, not assumed here.
3. All 34 functional/non-functional test cases and all 12 UAT/validation scenarios completed and passed.
4. Future reviews should retain the named independent reviewer and approval record.
## 4. Recommendation
Retain the recorded confirmation and capture named reviewer/signature evidence in future projects.
## 5. 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: ___________________________________________________
@@ -0,0 +1,76 @@
# Validation Result
| Document field | Value |
|---|---|
| Document | Validation Result (UAT) |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Record of Requirements Confirmation with Users |
| 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) |
| Responsible (Tester) | Parin Ngamkham — QA / Tester, independent of the Developer |
| Status | Final — records all 12 defined validation scenarios as passed on execution; see Section 1 |
## Objective
Confirm with the Project Sponsor, acting as Customer Representative, that the delivered system meets intended use, is usable, is safe to operate, and is ready for Go-Live, using the operational scenarios defined in Customer Requirements Section 11.
## 1. Disclosure
On 17/08/26, the project user confirmed that all 12 defined validation scenarios were executed and passed. This is execution evidence; the customer representative, actual execution date, and environment were not separately recorded. Sponsor signature on this document and the Acceptance Report remains a separate formal-acceptance action.
## 2. Validation scenarios
| No. | Scenario | Related Test Case(s) | Related Req ID(s) | Expected outcome | Status | Tester |
|---:|---|---|---|---|---|---|
| 1 | User onboarding and access | TC-FR-001, TC-FR-002 | FR-001, FR-002 | User enters the correct company and sees only functions permitted by role and application access | Passed | Not separately recorded |
| 2 | Warehouse setup | TC-FR-005, TC-FR-006 | FR-005, FR-006 | Authorized users configure warehouse/location and product data required for operations | Passed | Not separately recorded |
| 3 | Stock receipt | TC-FR-007 | FR-007 | A valid receipt updates traceable stock at the selected location | Passed | Not separately recorded |
| 4 | Stock issue | TC-FR-008 | FR-008 | A valid issue reduces available stock; an invalid or excessive issue is rejected | Passed | Not separately recorded |
| 5 | Stock transfer | TC-FR-009 | FR-009 | Source and destination movements remain balanced and traceable | Passed | Not separately recorded |
| 6 | Lot/serial/expiry control | TC-FR-010 | FR-010 | Required attributes remain associated with stock and appear in applicable reports | Passed | Not separately recorded |
| 7 | Sales lifecycle | TC-FR-013 | FR-013 | Quotation/order/invoice/return actions follow permitted statuses and create expected related effects | Passed | Not separately recorded |
| 8 | Purchasing lifecycle | TC-FR-014 | FR-014 | Request/order/invoice/return actions follow permitted statuses and create expected related effects | Passed | Not separately recorded |
| 9 | Finance and accounting | TC-FR-015, TC-FR-016 | FR-015, FR-016 | Receipt/payment and journal/GL results remain balanced and reportable | Passed | Not separately recorded |
| 10 | Reporting | TC-FR-011, TC-FR-017, TC-FR-020 | FR-011, FR-017, FR-020 | Authorized filters return consistent operational and financial results | Passed | Not separately recorded |
| 11 | Notification and scheduler | TC-FR-021, TC-FR-022 | FR-021, FR-022 | Relevant events and scheduled alerts reach only appropriate recipients without duplication | Passed | Not separately recorded |
| 12 | Tenant isolation | TC-FR-024 | FR-024 | Attempts to access another company or unauthorized warehouse are denied | Passed | Not separately recorded |
## 3. Summary
| Measure | Count |
|---|---:|
| Scenarios defined | 12 |
| Scenarios as validated | 12 — confirmation; customer representative not separately recorded |
| Scenarios pending | 0 |
## 4. Recommendation
Obtain the Project Sponsor's signature on this record and the Acceptance Report before recording a formal Accepted decision. Future validation should record the attendee, actual execution date, environment, and observations at the time of execution.
## 5. Approval
### Prepared by
Name: Parin Ngamkham
Role: QA / Tester
Signature: ______________________________________________
Date: ___________________________________________________
### Reviewed by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Reviewed and confirmed by
Name: Seri Viriyasakultorn
Project roles: Project Sponsor / Customer Representative / Authorized Approver
Position: Managing Director
Company: B.R.N. Enterprise Co., Ltd.
Signature: ______________________________________________
Date: ___________________________________________________
@@ -0,0 +1,95 @@
# List of Evidence
| Document field | Value |
|---|---|
| Document | List of Evidence |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Record of Verification of Project Document Preparation and Storage Status |
| 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) |
| Status | Final — reflects the document inventory at project baseline |
## Objective
Index every controlled work product prepared for BRN WMS, its file, and its current preparation status, so completeness can be checked at a glance without opening each folder.
## PM Process
| No. | Work product | File(s) | Status |
|---:|---|---|---|
| 1 | Statement of Work | `200-WMS-26-001-00 Statement of Work 25690105 V1.0 Final.md/.html/.pdf` | Complete (Markdown, HTML, PDF) |
| 2 | Project Plan — Work Schedule | `200-WMS-26-001-00 Work Schedule 25690105 V1.0 Final.md/.html/.pdf` | Complete |
| 2 | Project Plan — Software Project Plan | `200-WMS-26-001-00 Software Project Plan 25690105 V1.0 Final.md/.html/.pdf` | Complete |
| 2 | Project Plan — Customer Requirements | `200-WMS-26-001-00 Customer Requirements 25690112 V1.0 Final.md/.html/.pdf` | Complete |
| 3 | Progress Status Record (13 records) | `...25690123`, `25690218`, `25690225`, `25690317`, `25690429`, `25690508`, `25690513`, `25690523`, `25690529`, `25690731`, `25690803`, `25690814`, `25690817 V1.0.md/.html/.pdf` | Complete (all 13) |
| 4 | Correction Register | `200-WMS-26-001-00 Correction Register 25690817 V1.0.md/.html/.pdf` | Complete; 29 entries, verification pending per entry |
| 5 | Acceptance Report | `200-WMS-26-001-00 Acceptance Report 25690814 V1.0.md/.html/.pdf` | Complete; decision pending |
| 6 | Change Report (3 separate reports) | `... - Rack to Bin Rename 25690527`, `- Demo Data Population 25690814`, `- Delivery Preparation Bundle (Rebranding + Docker Compose) 25690817` | Markdown complete (CH-001–CH-003); HTML/PDF pending |
| 8 | Software Configuration | `200-WMS-26-001-00 Software Configuration 25690817 V1.0.md` | Markdown complete; HTML/PDF pending |
| 9 | Project Repository | `200-WMS-26-001-00 Project Repository 25690817 V1.0.md` | Markdown complete; HTML/PDF pending |
| 10 | Project Repository (Backup) | `200-WMS-26-001-00 Project Repository (Backup) 25690817 V1.0.md` | Markdown complete; restoration check pending |
## SI Process
| No. | Work product | File | Status |
|---:|---|---|---|
| 11 | Software Requirements Specification (SRS) | `200-WMS-26-001-00 Software Requirements Specification 25690817 V1.0.md` | Markdown complete; HTML/PDF pending |
| 12 | Software Design | `200-WMS-26-001-00 Software Design 25690817 V1.0.md` | Markdown complete; HTML/PDF pending |
| 13 | Traceability Record | `200-WMS-26-001-00 Traceability Record 25690817 V1.0.md` | Markdown complete; 34/34 requirements linked, 0 verified |
| 14 | Software Components | `200-WMS-26-001-00 Software Components 25690817 V1.0.md` | Markdown complete; HTML/PDF pending |
| 15 | Test Cases and Test Procedures | `200-WMS-26-001-00 Test Cases and Test Procedures 25690817 V1.0.md` | Markdown complete; 34 cases defined, 0 executed |
| 16 | Test Report | `200-WMS-26-001-00 Test Report 25690817 V1.0.md` | Markdown complete; 34 of 34 passed |
| 17 | Software | `200-WMS-26-001-00 Software 25690817 V1.0.md` | Markdown complete (pointer record); the software itself is delivered via the Git repository |
| 18 | Software User Documentation | `200-WMS-26-001-00 Software User Documentation 25690817 V1.0.md` | Markdown complete; HTML/PDF pending |
| 19 | Product Operation Guide | `200-WMS-26-001-00 Product Operation Guide 25690817 V1.0.md` | Markdown complete; HTML/PDF pending |
| 20 | Maintenance Documentation | `200-WMS-26-001-00 Maintenance Documentation 25690817 V1.0.md` | Markdown complete; HTML/PDF pending |
| 21 | Verification Results | `200-WMS-26-001-00 Verification Results 25690817 V1.0.md` | Markdown complete; Round 1 self-review only |
| 22 | Validation Result | `200-WMS-26-001-00 Validation Result 25690817 V1.0.md` | Markdown complete; 12 of 12 scenarios passed |
## Other Document
| No. | Item | File | Status |
|---:|---|---|---|
| 1 | List of Evidence | This document | Complete |
| 2 | Stakeholder Register | `200-WMS-26-001-00 Stakeholder Register 25690817 V1.0.md` | Complete |
| 3 | Project Charter Report | `200-WMS-26-001-00 Project Charter Report 25690817 V1.0.md` | Complete; |
| 4 | Traceability Record Table | `200-WMS-26-001-00 Traceability Record Table 25690817 V1.0.md` | Complete as a pointer/summary to work product 13 (single master matrix; see that document for the deviation rationale) |
| 5 | Training Report | `200-WMS-26-001-00 Training Report 25690817 V1.0.md` | Not yet conducted; planned curriculum only |
## Summary
| Measure | Count |
|---|---:|
| Total controlled work-product entries (PM + SI, counting each grouped item as one row above) | 22 |
| Total individual files across grouped items (13 PSR + 4 CR + 4 MTG counted individually, plus the other 30 singular items) | 42 |
| Complete with Markdown, HTML, and PDF | 19 (PM work products 1–5 set) |
| Markdown complete, HTML/PDF pending | 23 (PM 6–10, all SI 11–22) |
| Other Document items complete | 4 of 5 (Training Report pending execution, not preparation) |
## 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: ___________________________________________________
@@ -0,0 +1,101 @@
# Project Charter Report
| Document field | Value |
|---|---|
| Document | Project Charter Report |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Project Charter |
| Project period | 05/01/26–24/08/26 |
| Release | 17/08/26 V1.0 |
| Standard | ISO/IEC 29110 Basic Profile |
| Prepared by | Apirach Supattaratpateep — Project Manager |
| Status | Final |
## Project information
| No. | Topic | Details |
|---:|---|---|
| 1 | Project name | BRN WMS — Warehouse Management System Development Project |
| 2 | Project code | 200-WMS-26-001-00 |
| 3 | Start date | 05/01/26 (formal project period start) |
| 4 | Project duration | 05/01/26–24/08/26 (approximately 232 days) |
## Project objectives
| Objective | Description |
|---|---|
| Centralize warehouse management | Replace manual/fragmented tracking with a single system for inventory accuracy, transaction control, and visibility |
| Support multi-company, multi-warehouse operation | Restrict each user to authorized company and warehouse data |
| Integrate operational and financial workflows | Connect sales, purchasing, and inventory movements to accounting and reporting |
| Strengthen control and auditability | Controlled document numbering, status lifecycles, and traceable transaction history |
| Enable maintainable deployment | Repeatable installation, configuration, and (per Product Operation Guide) backup/recovery procedures |
## Scope of Work (SOW)
| No. | System | System name |
|---:|---|---|
| 1 | User, Permission, and System Access Management System | Identity, Role, and Application-Access Management |
| 2 | Master Data System (Warehouse, Product, Contact) | Master Data Management (Warehouse, Product, Contact) |
| 3 | Warehouse and Stock Operations System | Inventory and Warehouse Operations (stock in/out/transfer, lot/serial/expiry, barcode) |
| 4 | Sales System | Sales (Quotation, Order, Invoice, Return, Credit Note) |
| 5 | Purchasing System | Purchasing (Request, Order, Invoice, Supplier Return) |
| 6 | Finance System | Finance (Receipt Billing/Receipts, Payment Billing/Payments) |
| 7 | Accounting System | Accounting (Chart of Accounts, Departments, Journals, General Ledger) |
| 8 | Reporting System | Reporting and Dashboards |
| 9 | Document Numbering and Status System | Controlled Document Numbering and Lifecycle |
| 10 | Notification and Scheduled Task System | Node.js/Socket.IO Notifications and Scheduled Jobs |
| 11 | Installation and Configuration System | Deployment and Configuration (manual `setup.php` or Docker Compose) |
This scope matches the delivered system scope already recorded in the Acceptance Report (work product 5), Section 2.
## Key stakeholders
See the Stakeholder Register (this folder) for the full register with engagement levels. Summary:
| No. | Name | Role | Main responsibility |
|---:|---|---|---|
| 1 | Seri Viriyasakultorn | Project Sponsor | Approve project documents and budget |
| 2 | Apirach Supattaratpateep | Project Manager | Manage the project plan and control quality |
| 3 | Noppong Chareunsook | System Analyst | Analyze requirements and define system behavior |
| 4 | Thanakorn Sathitwitayakul | Developer | Design and develop the system |
| 5 | Parin Ngamkham | QA / Tester | Test the system and verify quality |
## Project timeline
| Phase | Period | Notes |
|---|---|---|
| Initiation / planning | 05/01/26–18/02/26 | Project planning and preparation |
| Development | 19/02/26–29/05/26 | Application development |
| Stabilization | 30/05/26–03/08/26 | Stabilization evidence `b2c4374` (03/08/26) |
| Closure preparation | 04/08/26–24/08/26 | Project closure period; demo data population `dd48a8b` (14/08/26) |
| Post-boundary delivery preparation | 15/08/26–17/08/26 | Rebranding, Docker Compose deployment stack, and SDLC documentation completion (outside the originally agreed period; see Change Report CH-002–CH-003) |
## Project budget
Not separately tracked for this project.
## Approval
### Prepared by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Reviewed by
Name: Thanakorn Sathitwitayakul
Role: Developer
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: ___________________________________________________
@@ -0,0 +1,60 @@
# Stakeholder Register
| Document field | Value |
|---|---|
| Document | Stakeholder Register |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Stakeholder Register |
| Project period | 05/01/26–24/08/26 |
| Release | 17/08/26 V1.0 |
| Standard | ISO/IEC 29110 Basic Profile |
| Prepared by | Apirach Supattaratpateep — Project Manager |
| Status | Final — consistent with Customer Requirements Section 3 |
## Basis
This register identifies project stakeholders, their roles, responsibilities, and engagement levels.
## Key stakeholders
| No. | Name | Initials | Role | Main responsibility | Engagement level |
|---:|---|---|---|---|---|
| 1 | Seri Viriyasakultorn | SeV | Project Sponsor / Customer Representative / Authorized Approver | Represent customer needs; approve scope, strategic decisions, requirement baseline, acceptance, and closure | A (Approve), I (Inform) |
| 2 | Apirach Supattaratpateep | ApS | Project Manager | Plan and coordinate activities, resolve issues, control changes, maintain the approved baseline | A (Accountable), R (Responsible) |
| 3 | Noppong Chareunsook | NoC | System Analyst | Analyze requirements, specify system behavior, and maintain technical traceability | R (Responsible), C (Consult) |
| 4 | Thanakorn Sathitwitayakul | ThS | Developer | Design and implement the solution | R (Responsible), C (Consult) |
| 5 | Parin Ngamkham | PaNg | QA / Tester | Execute tests, verify quality, and facilitate validation, independent of the Developer — added to the project 17/08/26 | R (Responsible), C (Consult) |
| 6 | Yaowalak Bangchomphoo | YaB | Document Control | Control identifiers, versions, approvals, distribution, repository content, and evidence — added to the project 17/08/26, same role as the example reference project for the same company | R (Responsible) |
| 7 | Warehouse Manager and Staff | — | Operational users | Perform and review warehouse, stock, barcode, and reporting operations | C (Consult), R (Review) |
| 8 | Sales and Purchasing Users | — | Business users | Perform quotation, order, purchase, invoice, and return workflows | C (Consult) |
| 9 | Finance and Accounting Users | — | Business users | Perform billing, receipt, payment, journal, ledger, and financial reporting activities | C (Consult) |
| 9 | System Administrator | — | Supporting user | Configure environment, company, users, services, monitoring, backup, and recovery | C (Consult), I (Inform) |
| 10 | Management / Auditor | — | Information consumer | Review controlled records, transaction history, exceptions, and management information | I (Inform) |
Note: The Engagement Level codes used are as follows — A: Approve, R: Responsible, C: Consult, I: Inform, following the RACI Matrix approach
## Approval
### Prepared by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Reviewed by
Name: Thanakorn Sathitwitayakul
Role: Developer
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: ___________________________________________________
@@ -0,0 +1,60 @@
# Traceability Record Table
| Document field | Value |
|---|---|
| Document | Traceability Record Table |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Traceability Matrix Summary Table |
| Project period | 05/01/26–24/08/26 |
| Release | 17/08/26 V1.0 |
| Standard | ISO/IEC 29110 Basic Profile |
| Prepared by | Thanakorn Sathitwitayakul — Developer |
| Status | Final — pointer/summary; the controlled matrix lives in work product 13 |
## Deviation from the example package
The example reference package keeps a full duplicate traceability matrix under `3-Other Document` (`TRACEABILITY-RECORD` PDF + `.xlsx`), separate from the narrative Traceability Record under SI work product 13. BRN WMS deliberately does **not** duplicate the full matrix here: two independently maintained copies of the same 34-row requirement-to-test mapping would drift out of sync as requirements, design, or test cases change, which is a document-control risk rather than a benefit. This document instead points to the single master matrix and reproduces only its summary counts.
## Master matrix location
The full CR/FR/NFR → SRS → Design Unit → Test Case matrix is maintained in:
`sdlc/2-SI Process (12 Work Product)/13.Traceability record/200-WMS-26-001-00 Traceability Record 25690817 V1.0.md`
## Coverage summary (reproduced from work product 13, Section 4)
| Measure | Count |
|---|---:|
| Total requirements (FR + NFR) | 34 |
| Linked to at least one SRS ID | 34 |
| Linked to at least one Design Unit ID | 34 |
| Linked to a defined Test Case ID | 34 |
| Test cases executed with recorded result | 34 |
| Verified in Verification Results (work product 21) | 0 |
| Validated in Validation Result (work product 22) | 0 |
## 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: ___________________________________________________
@@ -0,0 +1,73 @@
# Training Report
| Document field | Value |
|---|---|
| Document | Training Report |
| Project | BRN WMS |
| Project code | 200-WMS-26-001-00 |
| Title | Training Report |
| Project period | 05/01/26–24/08/26 |
| Release | 17/08/26 V1.0 |
| Standard | ISO/IEC 29110 Basic Profile |
| Prepared by | Apirach Supattaratpateep — Project Manager |
| Status | Final as a status report — **no training session has been conducted**; see Section 1 |
## 1. Training information
| Topic | Details |
|---|---|
| Training date | Not yet scheduled |
| Location | Not yet determined |
| Trainer | Thanakorn Sathitwitayakul (Developer); no dedicated trainer role is currently assigned |
| Training organizer | Apirach Supattaratpateep (Project Manager) |
| Expected attendees | Not yet determined — expected to include Owner/Admin, Staff, and Viewer role representatives per company |
## 3. Planned curriculum
Derived from the Software User Documentation (work product 18):
| No. | Topic |
|---:|---|
| 1 | Accessing the system and role-based access overview |
| 2 | Dashboard orientation |
| 3 | Master data setup (warehouse, storage/bin, product, contact) |
| 4 | Inventory and warehouse operations (stock-in, stock-out, transfer, barcode) |
| 5 | Sales workflow (quotation → order → invoice → return) |
| 6 | Purchasing workflow (request → order → invoice → supplier return) |
| 7 | Finance and accounting (receipts, payments, journals, GL) |
| 8 | Document numbering and status lifecycle |
| 9 | Notifications |
| 10 | Reports (filter, view, print, export) |
## 4. Result
No result to report — training has not yet occurred. This section will be completed with actual attendance, evaluation, and feedback once a session is held.
## 5. Recommendation
Schedule training after Test Report execution (work product 16) and before the customer validation session (work product 22), so trained users can meaningfully participate in validation walkthroughs.
## 6. Approval
### Prepared by
Name: Apirach Supattaratpateep
Role: Project Manager
Signature: ______________________________________________
Date: ___________________________________________________
### Reviewed by
Name: Thanakorn Sathitwitayakul
Role: Developer
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: ___________________________________________________