Files
sap-erp/dist-1/public/guide.html
T
John 69b4e68baf
SAP-ERP Portal CI/CD / build (push) Failing after 5m20s
first commit
2026-09-23 17:31:02 +05:30

448 lines
36 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<script src="/auth-guard.js?v=4"></script>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"/>
<title>Guide / Help — SAP B1</title>
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&family=Bebas+Neue&display=swap" rel="stylesheet"/>
<style>
:root{--ink:#080e18;--ink2:#0d1626;--ink3:#111f35;--purple:#9f5afd;--blue:#1a6fff;--amber:#f5a623;--green:#0dbb8a;--red:#e53e3e;--teal:#06b6d4;--border:#1c2e48;--border2:#243650;--text:#c8d6e8;--text2:#7a9ab8;--text3:#3d5470;--surface:#0f1d30;--surface2:#142338;--surface3:#0b1520;--radius:10px;--font:'Space Grotesk',sans-serif;--mono:'JetBrains Mono',monospace;--display:'Bebas Neue',sans-serif;--shadow:0 8px 32px rgba(0,0,0,.5)}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--font);background:var(--ink);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased}
nav{position:sticky;top:0;z-index:200;background:rgba(8,14,24,.92);backdrop-filter:blur(20px);border-bottom:1px solid var(--border);padding:0 12px;height:50px;display:flex;align-items:center;justify-content:space-between;gap:6px}
.nav-logo{background:var(--blue);color:#fff;font-family:var(--display);font-size:15px;letter-spacing:2px;padding:3px 8px;border-radius:5px}
.nav-links{display:flex;gap:2px;overflow-x:auto;flex:1;justify-content:center}
.nav-link{padding:4px 8px;border-radius:5px;font-size:10px;font-weight:600;color:var(--text2);text-decoration:none;white-space:nowrap}.nav-link.active{color:var(--blue);background:rgba(26,111,255,.1)}
.btn-sm{padding:4px 8px;border-radius:5px;font-size:10px;font-weight:700;border:1px solid var(--border2);color:var(--text3);background:none;cursor:pointer;font-family:var(--font)}.btn-sm:hover{border-color:var(--red);color:var(--red)}
main{padding:16px;max-width:1200px;margin:0 auto;display:grid;grid-template-columns:220px 1fr;gap:18px;align-items:start}
@media(max-width:860px){main{grid-template-columns:1fr}}
.toc{position:sticky;top:62px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px;max-height:calc(100vh - 80px);overflow:auto}
@media(max-width:860px){.toc{position:static;max-height:none}}
.toc-t{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--text3);margin-bottom:8px}
.toc a{display:block;padding:6px 8px;border-radius:6px;font-size:12px;color:var(--text2);text-decoration:none;margin-bottom:1px}
.toc a:hover{background:var(--surface2);color:var(--text)}
.toc a.active{background:rgba(26,111,255,.12);color:var(--blue);font-weight:600}
.hero{background:linear-gradient(135deg,rgba(26,111,255,.12),rgba(159,90,253,.08));border:1px solid var(--border);border-radius:14px;padding:20px 22px;margin-bottom:18px}
.hero h1{font-family:var(--display);font-size:30px;letter-spacing:.5px;color:var(--text)}
.hero p{font-size:13px;color:var(--text2);margin-top:6px;line-height:1.55;max-width:640px}
.hero .note{margin-top:10px;font-size:11.5px;color:var(--text3);background:var(--surface3);border:1px solid var(--border);border-radius:8px;padding:8px 11px;display:inline-block}
.sec{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin-bottom:14px;overflow:hidden;scroll-margin-top:62px}
.sec summary{list-style:none;cursor:pointer;padding:14px 16px;display:flex;align-items:center;gap:10px;background:var(--surface3);font-weight:700;font-size:14px;color:var(--text)}
.sec summary::-webkit-details-marker{display:none}
.sec summary .chev{margin-left:auto;color:var(--text3);transition:transform .15s;font-size:14px}
.sec[open] summary .chev{transform:rotate(90deg)}
.sec-ico{width:30px;height:30px;border-radius:8px;background:rgba(26,111,255,.12);display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0}
.sec-bd{padding:16px 18px}
.sec-bd p.lead{font-size:12.5px;color:var(--text2);margin-bottom:12px;line-height:1.6}
ol.steps{counter-reset:step;list-style:none;padding:0}
ol.steps>li{position:relative;padding:8px 0 8px 34px;font-size:13px;color:var(--text);line-height:1.55;border-bottom:1px solid var(--border)}
ol.steps>li:last-child{border-bottom:none}
ol.steps>li::before{counter-increment:step;content:counter(step);position:absolute;left:0;top:8px;width:22px;height:22px;border-radius:6px;background:var(--blue);color:#fff;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;font-family:var(--mono)}
ol.steps b{color:var(--text)}
.badge{display:inline-block;font-size:9.5px;font-weight:700;padding:1px 7px;border-radius:20px;background:var(--surface2);border:1px solid var(--border2);color:var(--text2);margin:0 2px}
.b-blue{background:rgba(26,111,255,.12);color:var(--blue);border-color:rgba(26,111,255,.25)}
.b-green{background:rgba(13,187,138,.12);color:var(--green);border-color:rgba(13,187,138,.25)}
.b-amber{background:rgba(245,166,35,.12);color:var(--amber);border-color:rgba(245,166,35,.25)}
.b-teal{background:rgba(6,182,212,.12);color:var(--teal);border-color:rgba(6,182,212,.25)}
.flow{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:10px 0 14px;font-size:11.5px}
.flow span.step{background:var(--surface2);border:1px solid var(--border2);border-radius:20px;padding:4px 11px;color:var(--text2);font-weight:600}
.flow span.arrow{color:var(--text3)}
.tip{font-size:12px;color:var(--text2);background:var(--surface3);border-left:3px solid var(--teal);border-radius:6px;padding:8px 11px;margin-top:10px;line-height:1.5}
.tip b{color:var(--teal)}
.warn{font-size:12px;color:var(--text2);background:rgba(245,166,35,.07);border-left:3px solid var(--amber);border-radius:6px;padding:8px 11px;margin-top:10px;line-height:1.5}
.warn b{color:var(--amber)}
.linklike{color:var(--blue);font-weight:600}
</style>
<link rel="stylesheet" href="/theme.css?v=3"/>
</head>
<body>
<nav>
<span class="nav-logo">SAP</span>
<div class="nav-links"><a href="/" class="nav-link">Home</a><a href="/guide" class="nav-link active">Guide / Help</a></div>
<button class="btn-sm" id="btn-logout">Logout</button>
</nav>
<main>
<div class="toc" id="toc">
<div class="toc-t">On this page</div>
<a href="#start">1. Getting Started</a>
<a href="#bom">2. BOM Requests</a>
<a href="#items">3. Items</a>
<a href="#workorder">4. Work Order</a>
<a href="#batchissue">5. Batch Issuance</a>
<a href="#requirements">6. Requirements</a>
<a href="#prodorder">7. Production Order</a>
<a href="#issue">8. Issue for Production</a>
<a href="#receipt">9. Receipt from Production</a>
<a href="#verifywo">10. Verify Work Order</a>
<a href="#manpower">11. Man Power</a>
<a href="#oee">12. OEE</a>
<a href="#purchase">13. Purchase</a>
<a href="#custvendor">14. Customer / Vendor</a>
<a href="#approvals">15. Approvals</a>
<a href="#projects">16. Projects</a>
<a href="#reports">17. Reports &amp; Dashboards</a>
<a href="#documents">18. Documents</a>
<a href="#profile">19. Your Profile</a>
</div>
<div>
<div class="hero">
<h1>User Guide</h1>
<p>A step-by-step walkthrough of how to work in this portal — from logging in to completing everyday tasks like Work Orders, Production, Purchases and Approvals. Click any section below to expand it.</p>
<div class="note">This guide covers day-to-day work only. Admin setup (user permissions, system settings) is documented separately for administrators.</div>
</div>
<details class="sec" id="start" open>
<summary><span class="sec-ico">🔑</span> 1. Getting Started <span class="chev">›</span></summary>
<div class="sec-bd">
<p class="lead">A few things to set up the first time you log in.</p>
<ol class="steps">
<li>Log in with the <b>username and password</b> given to you. Closing the browser fully ends your session — you'll need to log in again next time.</li>
<li>The <b>sidebar</b> on the left shows only the modules you've been granted. If something you need is missing, ask your admin to grant it — you don't need to request it here.</li>
<li>Open <b>Profile</b> (top-right area / sidebar) and check three things: your <b>full name &amp; email</b> are correct, your <b>SAP User ID &amp; Password</b> are set (needed for anything that posts to SAP — Work Orders, Production, Purchase), and your <b>Signature image</b> is uploaded if you'll be approving or issuing anything — it prints on Work Order PDFs wherever you sign.</li>
</ol>
<div class="tip"><b>Tip:</b> If a page says "You are not assigned this permission," it means an approval step needs to be granted to you — ask your admin, don't try to work around it.</div>
<div class="tip"><b>Tip:</b> Keeping your <b>email</b> correct in Profile matters — Work Order, Production Order and Batch Issuance now email whoever needs to act next at each stage, so you'll be notified automatically once something is waiting on you (as long as email is set up by your admin).</div>
</div>
</details>
<details class="sec" id="bom">
<summary><span class="sec-ico">🧪</span> 2. BOM Requests <span class="chev">›</span></summary>
<div class="sec-bd">
<p class="lead">Bill of Materials changes go through a multi-level review before they reach SAP.</p>
<div class="flow"><span class="step">Submitted</span><span class="arrow">→</span><span class="step">Manager (L1)</span><span class="arrow">→</span><span class="step">Sr. Manager (L2)</span><span class="arrow">→</span><span class="step">SAP Adder (Final)</span><span class="arrow">→</span><span class="step badge b-green">Pushed to SAP</span></div>
<ol class="steps">
<li>Open <b>BOM</b> and submit a new request with the product, components and quantities.</li>
<li>Each approver in the chain reviews and either <b>approves</b> (moves to the next level) or <b>rejects</b> (sends it back with a reason).</li>
<li>Once every level approves, the final approver pushes it into SAP B1.</li>
<li>Track status any time from the BOM list — Pending / L1 Approved / L2 Approved / Pushed / Rejected.</li>
</ol>
</div>
</details>
<details class="sec" id="items">
<summary><span class="sec-ico">📦</span> 3. Items <span class="chev">›</span></summary>
<div class="sec-bd">
<ol class="steps">
<li>Use <b>Create Item</b> to add a new SAP item with its code, description, group and UoM.</li>
<li>Use <b>View Items</b> to search existing items before creating a duplicate.</li>
</ol>
</div>
</details>
<details class="sec" id="workorder">
<summary><span class="sec-ico">📋</span> 4. Work Order <span class="chev">›</span></summary>
<div class="sec-bd">
<p class="lead">A Work Order records the batch's product, raw materials and packing materials, and passes through a QA/Production sign-off chain before it's fully approved.</p>
<div class="flow"><span class="step">Prepared By QA</span><span class="arrow">→</span><span class="step">Checked By Store In-Charge</span><span class="arrow">→</span><span class="step">Checked By Mgr. Production</span><span class="arrow">→</span><span class="step badge b-green">Approved By Mgr. QA</span></div>
<ol class="steps">
<li>Open <b>Work Order</b> and click <b>+ New Work Order</b>. Fill in the product, batch size, total units, MFG/EXP dates, and the Raw Material / Packing Material tables (or a single Components table if the product has no real raw materials).</li>
<li>Enter <b>Weighing Balance ID</b> and <b>AR No.</b> per raw material row if known at this stage — they can also be filled in later by whoever issues the item.</li>
<li>Save. The order enters the chain above — whoever holds the current step can <b>Approve</b> or <b>Reject</b> it from the Work Order list.</li>
<li>Once fully approved, open the order and use <b>Print</b> (browser print) or <b>Download PDF</b> (a ready-to-file PDF) to get the printable Work Order — it shows Qty issued and the Issued/Received/Verified By columns as they get filled in (see section 10).</li>
</ol>
<div class="warn"><b>Note:</b> A blood-bag finished good's Expiry date auto-fills to 3 years after the Mfg date during Batch Issuance — you can still override it, but Expiry must always be after Mfg.</div>
<div class="tip"><b>Note:</b> "Checked By QC" currently isn't part of this chain (it's switched off in system settings), so it's left out above. If it's ever switched back on, it appears again between Prepared By QA and Checked By Store In-Charge.</div>
<div class="tip"><b>Header Profiles:</b> the company name, address, FORM NO., dates and logo printed at the top of the Work Order PDF can differ by product group (e.g. Blood Bag vs. CAPD vs. Accessories) — open <b>Work Order → Header Profiles</b> to manage them. Whoever holds "Approved By (Manager QA)" can manage these too, not just an admin. Each Work Order automatically picks the right profile from its product's SAP item group; if none match, the profile marked <b>Default</b> is used.</div>
</div>
</details>
<details class="sec" id="batchissue">
<summary><span class="sec-ico">🗓️</span> 5. Batch Issuance <span class="chev">›</span></summary>
<div class="sec-bd">
<ol class="steps">
<li>Open <b>Batch Issuance</b> and select the product/requirement this batch fulfils. Each batch's <b>Total Units</b> defaults to that item's full pending quantity — edit it down (or add more batches) if you're splitting the requirement across several batches.</li>
<li>Enter the <b>Mfg date</b> — for blood-bag finished goods the <b>Exp date</b> auto-fills to 3 years later (minus a day/month so it lands exactly at the end of the shelf life, e.g. 10-Jan-2026 → 09-Jan-2029; editable). The Exp date picker won't let you choose a date before Mfg.</li>
<li>Save to record the intimation. Its status shows as <span class="badge b-amber">SENT TO QA</span> until a Work Order is generated for at least one of its batches, then <b>PARTIALLY CAPTURED</b> or <span class="badge b-green">FULLY CAPTURED</span> once every batch has one.</li>
</ol>
<div class="warn"><b>Note:</b> Once a Work Order has been generated from a batch, that Intimation locks — Edit and Delete are disabled (editing afterward could desync from a Work Order that already copied its data), and that same (item, batch) can't be used to generate a second Work Order.</div>
<div class="tip"><b>Tip:</b> If your admin has turned on the SFG Workflow, a second <b>Without Intimation</b> tab appears — search and add items directly with no Requirement needed at all. It's restricted to items whose SAP Item Group is tagged <b>Without Intimation</b> in Item Group Rules (Admin). You can also set a <b>Batch Size (Ltr)</b> here — it's fetched automatically into the Work Order's Solution Batch Size when generated from this batch.</div>
</div>
</details>
<details class="sec" id="requirements">
<summary><span class="sec-ico">📝</span> 6. Requirements <span class="chev">›</span></summary>
<div class="sec-bd">
<ol class="steps">
<li>Open <b>Requirements</b> and log a new requirement period with <b>From</b> and <b>To</b> dates — To must be strictly after From (you'll see an inline alert if not).</li>
<li>Not sure what quantity to request? Use the <b>Calculator</b> tab: set your two comparison periods, pick the Stock and Quarantine warehouses, add items, then <b>Calculate All</b> — it works out Average Sale/Month, Stock in Hand and a suggested Requirement per item from historical sale data and current SAP stock.</li>
<li>Tick the items you want, then <b>Send Selected to New Requirement →</b> — it carries the computed quantities straight into the Create tab so you can review and submit.</li>
<li>Requirements drive what shows up as "ready" for Batch Issuance and Work Orders.</li>
</ol>
<div class="tip"><b>Optional — Store Review Workflow:</b> if your admin has turned this on, you can <b>Share with Store</b> a requirement before raising Batch Issuance. Store cross-checks it against SAP's own MRP Wizard, adjusts quantities if needed, and reverts it back to you — you'll see exactly what changed in a <b>Before / After</b> summary. It's a single round trip (no further back-and-forth), and it's optional unless your admin has separately made it a hard gate on raising Batch Intimation.</div>
</div>
</details>
<details class="sec" id="prodorder">
<summary><span class="sec-ico">🏭</span> 7. Production Order <span class="chev">›</span></summary>
<div class="sec-bd">
<p class="lead">A Production Order is created from an approved Work Order and moves through a fixed sequence in SAP.</p>
<div class="flow"><span class="step">Create</span><span class="arrow">→</span><span class="step">Release</span><span class="arrow">→</span><span class="step">Issuance</span><span class="arrow">→</span><span class="step">Receipt</span><span class="arrow">→</span><span class="step">Transfer to FG</span><span class="arrow">→</span><span class="step badge b-green">Close</span></div>
<ol class="steps">
<li>Open <b>Production Order</b>, pick the approved Work Order to create from (or a manual entry, if you're permitted to create without a Work Order). A Work Order can only ever produce <b>one</b> Production Order — once it has one, it no longer appears in this picker.</li>
<li>Components that exist in both the item's SAP BOM and the Work Order's approved materials are pre-filled with the <b>Work Order's approved quantity</b>, not SAP's plain BOM-ratio calculation — it already reflects any real overage/measured adjustment approved for this batch. Any Work Order item that isn't in the standard BOM at all is added as an extra component automatically.</li>
<li><b>Release</b> the order once it's created — this makes it available for issuance.</li>
<li>Go to <b>Issue</b> to post the raw material issuance (see section 8 for the full flow).</li>
<li>Go to <b>Receipt</b> to receive the finished quantity into stock (section 9).</li>
<li>Once fully received, <b>Transfer to Finished Goods</b> then <b>Close</b> the order.</li>
<li>Open any order's detail to see the <b>QA — Approved vs Issued</b> comparison: BOM Planned vs Work Order Approved vs actually Issued, with mismatches highlighted. A component with no entry in the Work Order at all is flagged <b>NOT IN WORK ORDER</b>, and one that also isn't a real ingredient anywhere in the item's BOM is flagged <b>NOT IN BOM</b> too — so QA can catch anything added directly on the Production Order before releasing/closing. (Solution containers, e.g. a chemical solution that's approved via its own raw ingredients, are exempt from this flag — that's expected, not an error.)</li>
<li><b>Raise Deviation</b> — once an order has completed Issuance, you can raise a <b>Shortage</b> (extra quantity needed), <b>Substitution</b> (replace one item with another) or <b>Damage/Loss</b> deviation with a reason. Any SAP write-off for a Damage/Loss deviation posts automatically — there's no separate checkbox to trigger it. If your admin requires QA approval, the deviation sits <b>Pending</b> until QA approves or rejects it; approving applies the change to the Production Order, rejecting reverses anything it already did. Whoever raised it and whoever holds the Deviation approval step both get an email at every stage — raised, approved, and rejected.</li>
</ol>
<div class="warn"><b>Optional — Pre-PWO Store Review:</b> if your admin has turned this on, creating from a Work Order no longer writes to SAP straight away. It first stages a <b>Pre-PWO</b> in the portal (same components table, editable, nothing sent to SAP yet) — find it under the new <b>Pre-PWO</b> tab. You must <b>Share it with Store</b>, who can adjust quantities or add/remove/substitute components outright, then revert it back to you. This is a <b>hard gate</b>: the order cannot be pushed to SAP until Store has completed that review — there's no way to skip ahead. Once pushed, the Pre-PWO locks and the normal Release → Issuance → Receipt → Transfer to FG → Close sequence above continues as usual.</div>
</div>
</details>
<details class="sec" id="issue">
<summary><span class="sec-ico">📤</span> 8. Issue for Production <span class="chev">›</span></summary>
<div class="sec-bd">
<p class="lead">You don't have to issue every component at once — pick exactly what you're issuing today.</p>
<ol class="steps">
<li>Open <b>Issue</b>, pick a Released order from the grid (search by item, description or document/order number if needed).</li>
<li>Each component shows as a card with a <b>checkbox</b> (checked by default), the quantity to issue, warehouse and any batches. <b>Uncheck</b> any item you don't want to issue right now — its inputs grey out.</li>
<li>Use <b>✕ Remove</b> to take an item out of the list entirely for this session (a "Restore" option appears if you remove one by mistake). This doesn't affect SAP — it just declutters your current screen.</li>
<li>Use <b>Select all / Clear all</b> at the top of the list for quick bulk changes, and check the running "<b>X of Y selected · Qty to issue Z</b>" summary before posting.</li>
<li>Adjust quantities/warehouse/batches as needed, then click <b>Issue to Production</b>. Only the checked items with a quantity are posted to SAP.</li>
<li>Items already fully issued show a <span class="badge b-green">✓ Fully Issued</span> badge and can't be changed.</li>
</ol>
<div class="tip"><b>Tip:</b> If you're restricted to certain Item Groups (Admin → Issue Items), items outside your allowed groups simply won't appear.</div>
</div>
</details>
<details class="sec" id="receipt">
<summary><span class="sec-ico">📥</span> 9. Receipt from Production <span class="chev">›</span></summary>
<div class="sec-bd">
<ol class="steps">
<li>Open <b>Receipt</b> and select the order (fully or partially issued orders both show up here).</li>
<li>Enter the received quantity per warehouse line. The <b>Transaction Type</b> (Complete/Reject) is set automatically based on the warehouse you choose — you don't pick it manually.</li>
<li>Enter batch, Mfg and Exp dates if the item requires batch tracking.</li>
<li>Submit to post the receipt into SAP.</li>
<li>Check <b>Receipts History</b> any time to see everything received against an order.</li>
</ol>
</div>
</details>
<details class="sec" id="verifywo">
<summary><span class="sec-ico">✅</span> 10. Verify Work Order <span class="chev">›</span></summary>
<div class="sec-bd">
<p class="lead">This is where "Issued By", "Received By" and "Verified By" get recorded for the printed Work Order — per material row, since different items are often issued/received/verified on different days by different people.</p>
<div class="flow"><span class="step badge b-teal">Issued By</span><span class="arrow">→</span><span class="step badge b-blue">Received By</span><span class="arrow">→</span><span class="step badge b-green">Verified By</span></div>
<ol class="steps">
<li>Open <b>Verify Work Order</b> — it lists Production Orders that have reached Issuance.</li>
<li>Click <b>View Materials</b> to see every raw/packing material row for that Work Order.</li>
<li>If you're the one issuing, you can type the row's <b>Weighing Balance ID</b> and <b>AR No.</b> right there, and click <b>Mark Issued</b> — this stamps your name and the current date/time on that row.</li>
<li>Once a row is marked Issued, whoever is responsible for receiving can click <b>Mark Received</b> on it; once Received, whoever verifies can click <b>Mark Verified</b>. Each step only becomes available after the one before it — you'll see "Waiting on issued/received" until then.</li>
<li>These stamps appear automatically on the Work Order's printed PDF and its own detail popup — nothing further to do.</li>
</ol>
<div class="tip"><b>Tip:</b> Each of these three actions requires its own permission — you may be able to do one, two, or all three depending on what's been granted to you.</div>
</div>
</details>
<details class="sec" id="manpower">
<summary><span class="sec-ico">👷</span> 11. Man Power <span class="chev">›</span></summary>
<div class="sec-bd">
<ol class="steps">
<li>Open <b>Man Power</b> and click <b>+ New Entry</b> for the day.</li>
<li>You'll only see the production-area <b>tabs</b> you've been assigned — fill in each one's rows (Section, Target, Manpower, Actual Production, Rejection, etc.).</li>
<li>Save. The list view shows only your assigned tabs' totals.</li>
</ol>
</div>
</details>
<details class="sec" id="oee">
<summary><span class="sec-ico">📈</span> 12. OEE (Overall Equipment Efficiency) <span class="chev">›</span></summary>
<div class="sec-bd">
<ol class="steps">
<li>Open <b>OEE</b> and pick the form for your area (EBB Production, Plastic Sheet Plant, Moulding, Autoclave, etc. — forms not yet set up show as "Coming soon").</li>
<li>Click <b>+ New Entry</b>, pick the month, then <b>+ Add Shift</b> for each shift you want to log.</li>
<li>Fill in the downtime/output fields for that shift — Availability, Performance, Quality and the overall <b>OEE %</b> calculate live as you type.</li>
<li>Save the shift, then save the whole entry once all shifts for the month are in.</li>
</ol>
</div>
</details>
<details class="sec" id="purchase">
<summary><span class="sec-ico">🛒</span> 13. Purchase <span class="chev">›</span></summary>
<div class="sec-bd">
<div class="flow"><span class="step">Purchase Request</span><span class="arrow">→</span><span class="step">Quotation</span><span class="arrow">→</span><span class="step">Purchase Order</span><span class="arrow">→</span><span class="step badge b-green">Goods Receipt PO</span></div>
<ol class="steps">
<li>Raise a <b>Purchase Request</b> for what's needed.</li>
<li>Record vendor <b>Quotations</b> against it if comparison/approval is required.</li>
<li>Convert the approved request into a <b>Purchase Order</b>.</li>
<li>When goods arrive, post a <b>Goods Receipt PO (GRPO)</b> to bring them into stock.</li>
</ol>
</div>
</details>
<details class="sec" id="custvendor">
<summary><span class="sec-ico">🏢</span> 14. Customer / Vendor Registration <span class="chev">›</span></summary>
<div class="sec-bd">
<div class="flow"><span class="step">Submitted</span><span class="arrow">→</span><span class="step">Verify</span><span class="arrow">→</span><span class="step badge b-green">Approved → pushed to SAP</span></div>
<ol class="steps">
<li>Fill out the <b>Customer</b> or <b>Vendor</b> registration form with the required details.</li>
<li>A verifier checks it (Pending → Verified), then a final approver pushes it into SAP B1 as a real Business Partner.</li>
</ol>
</div>
</details>
<details class="sec" id="approvals">
<summary><span class="sec-ico">🛡️</span> 15. Approvals <span class="chev">›</span></summary>
<div class="sec-bd">
<ol class="steps">
<li><b>External Approval</b> — review and act on items awaiting your sign-off from outside SAP's own approval flow.</li>
<li><b>SAP Approval</b> — review documents pending approval inside SAP B1 itself.</li>
</ol>
</div>
</details>
<details class="sec" id="projects">
<summary><span class="sec-ico">💼</span> 16. Projects <span class="chev">›</span></summary>
<div class="sec-bd">
<div class="flow"><span class="step">New Project</span><span class="arrow">→</span><span class="step">Purchase</span><span class="arrow">→</span><span class="step">Engineering</span><span class="arrow">→</span><span class="step">QA</span><span class="arrow">→</span><span class="step">QC</span><span class="arrow">→</span><span class="step">Legal</span><span class="arrow">→</span><span class="step">Owner</span><span class="arrow">→</span><span class="step">Plant</span><span class="arrow">→</span><span class="step badge b-green">Finance</span></div>
<ol class="steps">
<li>Create a <b>New Project</b> with its scope and details.</li>
<li>It moves through each department's approval in sequence — every department you're assigned to can approve/reject at their step.</li>
<li>Track any project's current stage from <b>View Projects</b>.</li>
</ol>
</div>
</details>
<details class="sec" id="reports">
<summary><span class="sec-ico">📊</span> 17. Reports &amp; Dashboards <span class="chev">›</span></summary>
<div class="sec-bd">
<ol class="steps">
<li><b>Reports</b> — sales, purchase and inventory reports for day-to-day reference.</li>
<li><b>Board Dashboard</b> (if granted) — company-wide growth analysis: sales by division, product group, customer, with date-range and product-group filters.</li>
<li><b>Production Dashboard</b> — production analytics across orders and lines.</li>
</ol>
</div>
</details>
<details class="sec" id="documents">
<summary><span class="sec-ico">📁</span> 18. Documents <span class="chev">›</span></summary>
<div class="sec-bd">
<ol class="steps">
<li>Open <b>Documents</b> to upload or browse shared files relevant to your work.</li>
</ol>
</div>
</details>
<details class="sec" id="profile">
<summary><span class="sec-ico">👤</span> 19. Your Profile <span class="chev">›</span></summary>
<div class="sec-bd">
<ol class="steps">
<li><b>Edit Profile</b> — update your name and email.</li>
<li><b>Change Password</b> — update your login password any time.</li>
<li><b>My SAP Account</b> — set your own SAP User ID &amp; Password so documents you post are attributed to you, not a shared login.</li>
<li><b>My Signature</b> — upload a signature image; it's drawn on printed Work Orders wherever you've signed an approval, issuance, receipt or verification step.</li>
</ol>
</div>
</details>
</div>
</main>
<script>
'use strict';
try{
const tok=sessionStorage.getItem('portal_token');
if(!tok) window.location.href='/';
}catch(_e){}
document.getElementById('btn-logout').onclick=()=>{sessionStorage.clear();document.cookie='portal_token=;path=/;expires=Thu, 01 Jan 1970 00:00:00 GMT';document.cookie='portal_user=;path=/;expires=Thu, 01 Jan 1970 00:00:00 GMT';localStorage.removeItem('token');localStorage.removeItem('portal_user');window.location.href='/';};
// ── Personalize: show only the sections this user actually has access to ──
// (same modules/role that gate the sidebar itself — see public/sidebar.js's
// hasModule()). "Getting Started" and "Your Profile" always show since every
// user logs in and has a profile, regardless of what else they're granted.
(function personalizeGuide(){
let user=null;
try{ const u=sessionStorage.getItem('portal_user'); if(u) user=JSON.parse(u); }catch(_e){}
const isAdmin=!!(user&&(user.role==='admin'||user.role==='sap_adder')); // matches sidebar.js's bypass exactly — system_admin is NOT full-bypass, it only sees its own granted modules
const mods=Array.isArray(user&&user.modules)?user.modules:null;
const LEGACY_BROAD_MODULES={production:'production-',purchase:'purchase-',costing:'finance-',projects:'projects-'};
function hasModule(m){
if(isAdmin)return true;
if(!mods)return false;
if(mods.includes(m))return true;
for(const b in LEGACY_BROAD_MODULES){ if(mods.includes(b)&&m.indexOf(LEGACY_BROAD_MODULES[b])===0)return true; }
return false;
}
const RULES={
start: {always:true},
bom: {modules:['bom']},
items: {modules:['items']},
workorder: {modules:['production-work-order']},
batchissue: {modules:['production-batch-issuance']},
requirements:{modules:['production-requirements']},
prodorder: {modules:['production-create']},
issue: {modules:['production-issue']},
receipt: {modules:['production-receipt']},
verifywo: {modules:['work-order-verify','production-verify']},
manpower: {modules:['man-power']},
oee: {modules:['oee']},
purchase: {modules:['purchase-request','purchase-quotation','purchase-order','purchase-grpo']},
custvendor: {modules:['customers','vendors']},
approvals: {modules:['approvals','sap-approvals']},
projects: {modules:['projects-new','projects-view','projects-approvals']},
reports: {modules:['reports','board-dashboard','production-dashboard'],roles:['board_member']},
documents: {modules:['documents']},
profile: {always:true},
};
function isVisible(id){
const r=RULES[id];
if(!r)return true; // unknown section → show (fail open)
if(r.always||isAdmin)return true;
if(r.roles&&user&&r.roles.includes(user.role))return true;
if(r.modules&&r.modules.some(hasModule))return true;
return false;
}
document.querySelectorAll('.sec').forEach(sec=>{ if(!isVisible(sec.id)) sec.style.display='none'; });
document.querySelectorAll('.toc a').forEach(a=>{ if(!isVisible(a.getAttribute('href').slice(1))) a.style.display='none'; });
// Renumber whatever's left so the visible list always reads 1, 2, 3…
// instead of skipping numbers for hidden sections.
let n=0;
document.querySelectorAll('.sec').forEach(sec=>{
if(sec.style.display==='none')return;
n++;
const summary=sec.querySelector('summary');
if(summary) summary.innerHTML=summary.innerHTML.replace(/(<\/span>\s*)\d+\.\s/,`$1${n}. `);
});
let m=0;
document.querySelectorAll('.toc a').forEach(a=>{
if(a.style.display==='none')return;
m++;
a.textContent=a.textContent.replace(/^\d+\.\s/,`${m}. `);
});
const visibleCount=document.querySelectorAll('.sec:not([style*="display: none"])').length;
if(visibleCount<=2){
const hero=document.querySelector('.hero');
if(hero)hero.insertAdjacentHTML('beforeend','<div class="note" style="margin-top:8px">You don\'t have many modules granted yet — ask your admin for access, and more of this guide will show up automatically.</div>');
}
})();
// Clicking a TOC link opens that section (in case it was collapsed) and
// highlights the active entry while scrolling.
document.querySelectorAll('.toc a').forEach(a=>{
a.addEventListener('click',()=>{
const id=a.getAttribute('href').slice(1);
const sec=document.getElementById(id);
if(sec && sec.tagName==='DETAILS') sec.open=true;
});
});
const tocLinks=Array.from(document.querySelectorAll('.toc a')).filter(a=>a.style.display!=='none');
const secs=tocLinks.map(a=>document.getElementById(a.getAttribute('href').slice(1))).filter(Boolean);
function syncToc(){
let activeIdx=0;
const y=window.scrollY+80;
secs.forEach((s,i)=>{ if(s.offsetTop<=y) activeIdx=i; });
tocLinks.forEach((a,i)=>a.classList.toggle('active',i===activeIdx));
}
window.addEventListener('scroll',syncToc,{passive:true});
syncToc();
</script>
<script src="/sidebar.js?v=25"></script>
</body>
</html>