Cycle Benchmark
DOCUMENT FLOW Appendix
SOURCE CODE
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1100 720" width="100%" height="auto" style="max-width:1100px; display:block; margin:0 auto; font-family:'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;">
<defs>
<!-- Gradient for background -->
<linearGradient id="bgGrad" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="#f8fafc"/>
<stop offset="100%" stop-color="#eef4fb"/>
</linearGradient>
<!-- Arrowhead marker -->
<marker id="arrowhead" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto">
<polygon points="0 0, 10 4, 0 8" fill="#475569"/>
</marker>
<!-- Drop shadows -->
<filter id="shadow" x="-5%" y="-5%" width="115%" height="120%">
<feDropShadow dx="0" dy="3" stdDeviation="4" flood-color="#0f172a" flood-opacity="0.12"/>
</filter>
<filter id="shadowLight" x="-5%" y="-5%" width="115%" height="115%">
<feDropShadow dx="0" dy="2" stdDeviation="2.5" flood-color="#0f172a" flood-opacity="0.08"/>
</filter>
<!-- Reusable doc icon shapes -->
<symbol id="icon-doc" viewBox="0 0 24 24">
<path d="M6 2h9l5 5v13a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2z" fill="none" stroke="currentColor" stroke-width="1.8"/>
<path d="M14 2v6h6" fill="none" stroke="currentColor" stroke-width="1.8"/>
</symbol>
</defs>
<!-- ================= BACKGROUND ================= -->
<rect width="1100" height="720" fill="url(#bgGrad)" rx="20"/>
<!-- ================= TITLE ================= -->
<text x="550" y="52" text-anchor="middle" font-size="24" font-weight="700" fill="#0b2b4f" letter-spacing="-0.3">
📋 AIS Document-Trace Flow
</text>
<text x="550" y="78" text-anchor="middle" font-size="14" fill="#475569" font-style="italic">
Purchasing Cycle → Receiving Cycle → IT Controls
</text>
<line x1="300" y1="95" x2="800" y2="95" stroke="#f0b429" stroke-width="3" stroke-linecap="round"/>
<!-- ================= LEGEND ================= -->
<g transform="translate(50, 115)">
<text x="0" y="0" font-size="12" font-weight="700" fill="#1e293b" letter-spacing="0.5">LEGEND:</text>
<g transform="translate(80, -6)">
<rect x="0" y="0" width="16" height="16" rx="4" fill="#fef3c7" stroke="#fcd34d" stroke-width="1.5"/>
<text x="22" y="12" font-size="11" fill="#92400e" font-weight="600">Requisition</text>
</g>
<g transform="translate(190, -6)">
<rect x="0" y="0" width="16" height="16" rx="4" fill="#dbeafe" stroke="#93c5fd" stroke-width="1.5"/>
<text x="22" y="12" font-size="11" fill="#1e3a8a" font-weight="600">PO / Supplier</text>
</g>
<g transform="translate(330, -6)">
<rect x="0" y="0" width="16" height="16" rx="4" fill="#ccfbf1" stroke="#5eead4" stroke-width="1.5"/>
<text x="22" y="12" font-size="11" fill="#115e59" font-weight="600">GRN / Receiving</text>
</g>
<g transform="translate(480, -6)">
<rect x="0" y="0" width="16" height="16" rx="4" fill="#fee2e2" stroke="#fca5a5" stroke-width="1.5"/>
<text x="22" y="12" font-size="11" fill="#991b1b" font-weight="600">Invoice</text>
</g>
<g transform="translate(590, -6)">
<rect x="0" y="0" width="16" height="16" rx="4" fill="#ede9fe" stroke="#c4b5fd" stroke-width="1.5"/>
<text x="22" y="12" font-size="11" fill="#4c1d95" font-weight="600">Payment / IT</text>
</g>
</g>
<!-- ============================================================
SECTION 1 — PURCHASING CYCLE
============================================================ -->
<g transform="translate(40, 160)">
<!-- Section box -->
<rect x="0" y="0" width="1020" height="175" rx="14" fill="#ffffff" stroke="#e2e9f2" stroke-width="1.5" filter="url(#shadowLight)"/>
<rect x="0" y="0" width="1020" height="38" rx="14" fill="#1e3a5f"/>
<rect x="0" y="20" width="1020" height="18" fill="#1e3a5f"/>
<text x="20" y="25" font-size="15" font-weight="700" fill="#ffffff" letter-spacing="0.4">1. PURCHASING CYCLE</text>
<!-- Node 1.1: Requisition -->
<rect x="30" y="60" width="170" height="90" rx="12" fill="#fef3c7" stroke="#fcd34d" stroke-width="2" filter="url(#shadow)"/>
<text x="115" y="88" text-anchor="middle" font-size="13" font-weight="700" fill="#92400e">📄 Purchase</text>
<text x="115" y="107" text-anchor="middle" font-size="13" font-weight="700" fill="#92400e">Requisition</text>
<text x="115" y="130" text-anchor="middle" font-size="10" fill="#b45309" font-style="italic">Pre-numbered · Authorized</text>
<!-- Arrow -->
<line x1="200" y1="105" x2="248" y2="105" stroke="#475569" stroke-width="2.5" marker-end="url(#arrowhead)"/>
<!-- Node 1.2: PO -->
<rect x="250" y="60" width="170" height="90" rx="12" fill="#dbeafe" stroke="#93c5fd" stroke-width="2" filter="url(#shadow)"/>
<text x="335" y="88" text-anchor="middle" font-size="13" font-weight="700" fill="#1e3a8a">📑 Purchase</text>
<text x="335" y="107" text-anchor="middle" font-size="13" font-weight="700" fill="#1e3a8a">Order (PO)</text>
<text x="335" y="130" text-anchor="middle" font-size="10" fill="#1d4ed8" font-style="italic">Approved · Threshold</text>
<!-- Arrow -->
<line x1="420" y1="105" x2="468" y2="105" stroke="#475569" stroke-width="2.5" marker-end="url(#arrowhead)"/>
<!-- Node 1.3: Supplier Master -->
<rect x="470" y="60" width="170" height="90" rx="12" fill="#dbeafe" stroke="#93c5fd" stroke-width="2" filter="url(#shadow)"/>
<text x="555" y="88" text-anchor="middle" font-size="13" font-weight="700" fill="#1e3a8a">🗂️ Supplier</text>
<text x="555" y="107" text-anchor="middle" font-size="13" font-weight="700" fill="#1e3a8a">Master File</text>
<text x="555" y="130" text-anchor="middle" font-size="10" fill="#1d4ed8" font-style="italic">Bank changes · Reconcile</text>
<!-- Arrow -->
<line x1="640" y1="105" x2="688" y2="105" stroke="#475569" stroke-width="2.5" marker-end="url(#arrowhead)"/>
<!-- Node 1.4: Quotation -->
<rect x="690" y="60" width="170" height="90" rx="12" fill="#dbeafe" stroke="#93c5fd" stroke-width="2" filter="url(#shadow)"/>
<text x="775" y="88" text-anchor="middle" font-size="13" font-weight="700" fill="#1e3a8a">📊 Quotation &</text>
<text x="775" y="107" text-anchor="middle" font-size="13" font-weight="700" fill="#1e3a8a">Vendor Selection</text>
<text x="775" y="130" text-anchor="middle" font-size="10" fill="#1d4ed8" font-style="italic">≥ 3 quotes</text>
<!-- Internal control note -->
<rect x="885" y="60" width="115" height="90" rx="10" fill="#f1f5f9" stroke="#cbd5e1" stroke-width="1.5" stroke-dasharray="4,3"/>
<text x="942" y="88" text-anchor="middle" font-size="10" font-weight="700" fill="#475569">🔒 CONTROL</text>
<text x="942" y="106" text-anchor="middle" font-size="9" fill="#64748b">Segregation</text>
<text x="942" y="120" text-anchor="middle" font-size="9" fill="#64748b">of duties</text>
</g>
<!-- ============================================================
SECTION 2 — RECEIVING CYCLE
============================================================ -->
<g transform="translate(40, 355)">
<rect x="0" y="0" width="1020" height="175" rx="14" fill="#ffffff" stroke="#e2e9f2" stroke-width="1.5" filter="url(#shadowLight)"/>
<rect x="0" y="0" width="1020" height="38" rx="14" fill="#0f766e"/>
<rect x="0" y="20" width="1020" height="18" fill="#0f766e"/>
<text x="20" y="25" font-size="15" font-weight="700" fill="#ffffff" letter-spacing="0.4">2. RECEIVING CYCLE</text>
<!-- Node 2.1: GRN -->
<rect x="30" y="60" width="190" height="90" rx="12" fill="#ccfbf1" stroke="#5eead4" stroke-width="2" filter="url(#shadow)"/>
<text x="125" y="85" text-anchor="middle" font-size="13" font-weight="700" fill="#115e59">📦 Goods Receipt</text>
<text x="125" y="104" text-anchor="middle" font-size="13" font-weight="700" fill="#115e59">Note (GRN)</text>
<text x="125" y="128" text-anchor="middle" font-size="10" fill="#0f766e" font-style="italic">Independent · Timely</text>
<!-- Arrow -->
<line x1="220" y1="105" x2="278" y2="105" stroke="#475569" stroke-width="2.5" marker-end="url(#arrowhead)"/>
<!-- Node 2.2: Three-Way Match -->
<rect x="280" y="55" width="250" height="100" rx="12" fill="#f0fdfa" stroke="#2dd4bf" stroke-width="2" filter="url(#shadow)"/>
<text x="405" y="80" text-anchor="middle" font-size="13" font-weight="700" fill="#0f766e">🔍 THREE-WAY MATCH</text>
<text x="405" y="100" text-anchor="middle" font-size="10" fill="#134e4a">PO ↔ GRN ↔ Invoice</text>
<!-- Mini doc icons -->
<rect x="310" y="112" width="50" height="22" rx="6" fill="#dbeafe" stroke="#93c5fd" stroke-width="1.2"/>
<text x="335" y="127" text-anchor="middle" font-size="8" font-weight="700" fill="#1e3a8a">PO</text>
<rect x="378" y="112" width="50" height="22" rx="6" fill="#ccfbf1" stroke="#5eead4" stroke-width="1.2"/>
<text x="403" y="127" text-anchor="middle" font-size="8" font-weight="700" fill="#115e59">GRN</text>
<rect x="446" y="112" width="50" height="22" rx="6" fill="#fee2e2" stroke="#fca5a5" stroke-width="1.2"/>
<text x="471" y="127" text-anchor="middle" font-size="8" font-weight="700" fill="#991b1b">INV</text>
<!-- Arrow -->
<line x1="530" y1="105" x2="588" y2="105" stroke="#475569" stroke-width="2.5" marker-end="url(#arrowhead)"/>
<!-- Node 2.3: GRNI -->
<rect x="590" y="60" width="190" height="90" rx="12" fill="#ccfbf1" stroke="#5eead4" stroke-width="2" filter="url(#shadow)"/>
<text x="685" y="85" text-anchor="middle" font-size="13" font-weight="700" fill="#115e59">⏳ GRNI</text>
<text x="685" y="104" text-anchor="middle" font-size="11" font-weight="600" fill="#115e59">Goods Received</text>
<text x="685" y="120" text-anchor="middle" font-size="11" font-weight="600" fill="#115e59">Not Invoiced</text>
<text x="685" y="140" text-anchor="middle" font-size="10" fill="#0f766e" font-style="italic">Periodic review</text>
<!-- Internal control note -->
<rect x="810" y="60" width="190" height="90" rx="10" fill="#f1f5f9" stroke="#cbd5e1" stroke-width="1.5" stroke-dasharray="4,3"/>
<text x="905" y="88" text-anchor="middle" font-size="10" font-weight="700" fill="#475569">🔒 CONTROL</text>
<text x="905" y="106" text-anchor="middle" font-size="9" fill="#64748b">Quantities & prices</text>
<text x="905" y="120" text-anchor="middle" font-size="9" fill="#64748b">must match</text>
<text x="905" y="134" text-anchor="middle" font-size="9" fill="#64748b">(exception handling)</text>
</g>
<!-- ============================================================
SECTION 3 — IT CONTROLS
============================================================ -->
<g transform="translate(40, 550)">
<rect x="0" y="0" width="1020" height="140" rx="14" fill="#ffffff" stroke="#e2e9f2" stroke-width="1.5" filter="url(#shadowLight)"/>
<rect x="0" y="0" width="1020" height="38" rx="14" fill="#6b21a8"/>
<rect x="0" y="20" width="1020" height="18" fill="#6b21a8"/>
<text x="20" y="25" font-size="15" font-weight="700" fill="#ffffff" letter-spacing="0.4">3. INFORMATION TECHNOLOGY (IT) CONTROLS</text>
<!-- IT Node 1: ERP -->
<rect x="30" y="55" width="290" height="70" rx="12" fill="#ede9fe" stroke="#c4b5fd" stroke-width="2" filter="url(#shadow)"/>
<text x="175" y="80" text-anchor="middle" font-size="12" font-weight="700" fill="#4c1d95">⚙️ ERP System Integration</text>
<text x="175" y="100" text-anchor="middle" font-size="10" fill="#6b21a8">Auto data flow · Real-time validation</text>
<text x="175" y="116" text-anchor="middle" font-size="10" fill="#6b21a8">Unauthorized receipts blocked</text>
<!-- Arrow -->
<line x1="320" y1="90" x2="358" y2="90" stroke="#475569" stroke-width="2.5" marker-end="url(#arrowhead)"/>
<!-- IT Node 2: Exception Reports -->
<rect x="360" y="55" width="290" height="70" rx="12" fill="#ede9fe" stroke="#c4b5fd" stroke-width="2" filter="url(#shadow)"/>
<text x="505" y="80" text-anchor="middle" font-size="12" font-weight="700" fill="#4c1d95">🚨 Exception Reports</text>
<text x="505" y="100" text-anchor="middle" font-size="10" fill="#6b21a8">Alerts for anomalies</text>
<text x="505" y="116" text-anchor="middle" font-size="10" fill="#6b21a8">Self-received / self-approved</text>
<!-- Arrow -->
<line x1="650" y1="90" x2="688" y2="90" stroke="#475569" stroke-width="2.5" marker-end="url(#arrowhead)"/>
<!-- IT Node 3: Audit Trail -->
<rect x="690" y="55" width="310" height="70" rx="12" fill="#ede9fe" stroke="#c4b5fd" stroke-width="2" filter="url(#shadow)"/>
<text x="845" y="80" text-anchor="middle" font-size="12" font-weight="700" fill="#4c1d95">🔎 Audit Trail</text>
<text x="845" y="100" text-anchor="middle" font-size="10" fill="#6b21a8">Complete change logs retained</text>
<text x="845" y="116" text-anchor="middle" font-size="10" fill="#6b21a8">Requisition → Payment traceable</text>
</g>
<!-- ================= FOOTER ================= -->
<text x="550" y="712" text-anchor="middle" font-size="11" fill="#94a3b8" font-style="italic">
AIS Document-Trace Flow — Purchasing & Receiving Cycles | Design Benchmark Reference
</text>
</svg>
Comments
Post a Comment