577 lines
51 KiB
HTML
577 lines
51 KiB
HTML
<!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="#planning">7. Production Planning</a>
|
||
<a href="#prodorder">8. Production Order</a>
|
||
<a href="#issue">9. Issue for Production</a>
|
||
<a href="#receipt">10. Receipt from Production</a>
|
||
<a href="#verifyprod">11. Verify Production</a>
|
||
<a href="#closeprod">12. Close Production</a>
|
||
<a href="#verifywo">13. Verify Work Order</a>
|
||
<a href="#manpower">14. Man Power</a>
|
||
<a href="#oee">15. OEE</a>
|
||
<a href="#rejection">16. Rejection Register & Analytics</a>
|
||
<a href="#purchase">17. Purchase</a>
|
||
<a href="#custvendor">18. Customer / Vendor</a>
|
||
<a href="#approvals">19. Approvals</a>
|
||
<a href="#projects">20. Projects</a>
|
||
<a href="#finance">21. Finance</a>
|
||
<a href="#gst">22. GST Reports</a>
|
||
<a href="#masters">23. Business Master & General Ledger</a>
|
||
<a href="#reports">24. Reports & Dashboards</a>
|
||
<a href="#logs">25. Audit Logs & Mail Log</a>
|
||
<a href="#documents">26. Documents</a>
|
||
<a href="#profile">27. 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 & email</b> are correct, your <b>SAP User ID & 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 11).</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 class="tip"><b>Round Up / Exact:</b> each Packing/Component Qty Req. row has its own toggle pill — some items should round up to the next whole unit, others shouldn't, and this is set per row rather than one plant-wide setting.</div>
|
||
<div class="tip"><b>Intimation No. vs. Reference:</b> a Work Order's card/detail shows both — <b>Intimation No.</b> is the actual linked Batch Intimation (always accurate, can't be hand-edited), while <b>Reference</b> is a free-text field anyone can type over (e.g. a customer/PO reference) — don't assume Reference always matches the Intimation it was generated from.</div>
|
||
<div class="tip"><b>Search & filters:</b> the Work Order list has a search box (WO No., product, batch, reference) and All/Pending/Approved/Rejected filter chips, with pagination once the list gets long.</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 class="tip"><b>Multiple Solutions per batch (if enabled):</b> for a product whose BOM has more than one Solution, a single Batch Volume field isn't enough — click <b>+ Solutions</b> to open a modal that auto-detects every Solution in the product's own SAP BOM and lets you enter each one's Volume (Ltr) separately. These carry through exactly into the Work Order's per-Solution Batch Size, instead of one number being applied to every Solution.</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="planning">
|
||
<summary><span class="sec-ico">🗓️</span> 7. Production Planning <span class="chev">›</span></summary>
|
||
<div class="sec-bd">
|
||
<p class="lead">A day-by-day production plan per item — separate from Batch Issuance/Work Order, used for scheduling and tracking what's planned to run vs. what's approved.</p>
|
||
<ol class="steps">
|
||
<li>Open <b>Production Planning</b> and click <b>+ New Plan</b>. Pick the <b>Product Name</b> — only items with <b>Item Defaults</b> already configured for them are searchable here (see below).</li>
|
||
<li>No. of Package, Per Cycle Qty and No. of Cycle/Day auto-fill from that item's Item Defaults and are read-only on the plan itself — <b>Quantity</b> is the only thing you enter, and it's capped at Total Qty/Day (Per Cycle Qty × No. of Cycle/Day).</li>
|
||
<li>For a <b>CAPD</b> product type, No. of Package and Prod. As per Single don't apply and are hidden automatically.</li>
|
||
<li>Save. The plan goes through its own Approve/Reject chain — track status (Pending/Approved/Rejected) from the list, and toggle a plan's day-to-day <b>Status</b> independently of that approval.</li>
|
||
</ol>
|
||
<div class="tip"><b>Item Defaults:</b> before a product can be planned, an admin/QA lead adds it once under <b>Item Defaults</b> — No. of Package, Per Cycle Qty, No. of Cycle/Day and Product Type (Blood Bag/CAPD). This is master data, set up once per item, not re-entered on every plan.</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details class="sec" id="prodorder">
|
||
<summary><span class="sec-ico">🏭</span> 8. 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 <b>Manual Entry</b>, 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 9 for the full flow).</li>
|
||
<li>Go to <b>Receipt</b> to receive the finished quantity into stock (section 10).</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 class="tip"><b>Manual Entry item restriction (if set):</b> an admin can limit which SAP Item Groups you're allowed to originate a Manual Entry Production Order for (Admin → user → <b>Manual PWO Item Groups</b>) — separate from the Issue Items restriction. If it's set, the Product No. search only shows items in your permitted groups, and the server independently re-checks on submit either way. No restriction set = you can create for any item, as before.</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details class="sec" id="issue">
|
||
<summary><span class="sec-ico">📤</span> 9. 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> 10. 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="verifyprod">
|
||
<summary><span class="sec-ico">🔍</span> 11. Verify Production <span class="chev">›</span></summary>
|
||
<div class="sec-bd">
|
||
<p class="lead">A single order-level sign-off on a completed Production Order's material accuracy — different from Verify Work Order below, which stamps individual material rows.</p>
|
||
<ol class="steps">
|
||
<li>Open <b>Verify</b> and pick an eligible Production Order.</li>
|
||
<li>Review the same <b>QA — Approved vs Issued</b> comparison shown on the Production Order detail (BOM Planned vs Work Order Approved vs actually Issued, with mismatches and NOT IN WORK ORDER / NOT IN BOM flags called out).</li>
|
||
<li>Once satisfied it's accurate, click <b>Verify</b> to stamp the order — this is a one-time, order-level action, separate from and in addition to closing it (see <b>Close Production</b> next).</li>
|
||
</ol>
|
||
<div class="tip"><b>Tip:</b> This needs its own permission (<code>production_order:verify</code>) — you may have Issue/Receipt access without having this, or vice versa.</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details class="sec" id="closeprod">
|
||
<summary><span class="sec-ico">🔒</span> 12. Close Production <span class="chev">›</span></summary>
|
||
<div class="sec-bd">
|
||
<p class="lead">The final step of a Production Order's life — posts the actual closure into SAP.</p>
|
||
<ol class="steps">
|
||
<li>Open <b>Close</b> — it lists every order eligible to be closed (fully received and transferred to Finished Goods; a <b>Consumable Order</b> is the exception and can close right after Issue, skipping Receipt/Transfer entirely).</li>
|
||
<li>Click a card to open its detail — check the components and receipt data one more time.</li>
|
||
<li>Click <b>Close</b> to post it. This uses <b>your own</b> SAP login (Profile → My SAP Account), so make sure that's set up before you try.</li>
|
||
</ol>
|
||
<div class="tip"><b>Tip:</b> Closing needs its own permission too (<code>production_order:close</code>, or a separate <code>production_order:consumable_close</code> just for Consumable Orders) — admins bypass this automatically.</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details class="sec" id="verifywo">
|
||
<summary><span class="sec-ico">✅</span> 13. 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 every fully <b>Approved</b> Work Order (independent of whatever stage its linked Production Order happens to be at in SAP).</li>
|
||
<li>Use the <b>search box</b> (WO No., product, batch, Intimation No.) and the <b>Issued By / Received By / Verified By</b> filter chips to jump straight to whatever still needs a specific sign-off — each chip shows only Work Orders with at least one row still pending that stamp. Results are paginated for large lists.</li>
|
||
<li>Click a card 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 class="tip"><b>Sign as / Re-sign (if granted):</b> some users can sign a row as <em>any</em> user and backdate the date — useful for entering a paper sign-off after the fact — and can even re-sign a row that was already stamped, to correct who it's recorded against. This needs a separate override permission; most users won't see it.</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details class="sec" id="manpower">
|
||
<summary><span class="sec-ico">👷</span> 14. 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> 15. 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="rejection">
|
||
<summary><span class="sec-ico">🚫</span> 16. Rejection Register & Analytics <span class="chev">›</span></summary>
|
||
<div class="sec-bd">
|
||
<p class="lead">A line/shift operator counts in-process rejections against a batch at their Stage (EBB, Sheet Plant, Moulding, Packing, CAPD stages, …); QA reviews and analyzes it plant-wide.</p>
|
||
<ol class="steps">
|
||
<li>Open <b>Rejection Register</b> and step through the wizard: pick your <b>Stage</b>, type the <b>Batch No.</b> (the product auto-fills if a matching Batch Intimation/Work Order exists), then enter Shift, Date and Batch Size.</li>
|
||
<li><b>Count</b> step — for each cause, enter <b>Rejected</b> and <b>Sent for rework</b>. These are two independent piles pulled from the same batch, entered side by side; together they can never exceed the Batch Size. If no causes are set up yet for your Stage, you get a free-text fallback screen instead — QA follows up to code it properly.</li>
|
||
<li><b>Rework</b> step — for each cause that had Rejected or Sent-for-rework qty, enter only <b>Okay after rework</b> (how much of the rework pile actually recovered). <b>Reject after rework</b> (= Sent for rework − Okay) and <b>Net</b> (= Rejected + Reject after rework) are computed for you.</li>
|
||
<li><b>Review</b> step — check the summary, add Remarks if needed, and Submit.</li>
|
||
</ol>
|
||
<div class="tip"><b>Rejection Analytics (QA/managers):</b> plant-wide KPIs (Net Rejection %, Saved by Rework), a daily trend, Top Causes, and deep-dive charts (cause-wise Net/Rework, Produced Qty vs. Net %, cause-wise by SFG) — all filterable by Company/Stage/Date and a shared Batch/Day/Week/Month/Year period picker. Export the whole thing to a styled Excel workbook. QA can also re-code any entry that used "Other/Unknown" once the real cause is known, from the "Needs Cause Review" list.</div>
|
||
<div class="tip"><b>Root Cause Setup (QA lead/admin):</b> maintains the Stage list and each Stage's causes (each cause rolls up to one Root Cause) — this is what populates the Count step's cause list above.</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details class="sec" id="purchase">
|
||
<summary><span class="sec-ico">🛒</span> 17. 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> 18. 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> 19. 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> 20. 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="finance">
|
||
<summary><span class="sec-ico">💰</span> 21. Finance <span class="chev">›</span></summary>
|
||
<div class="sec-bd">
|
||
<p class="lead">A connected set of P&L, balance sheet, cost and payroll tools built on SAP ledger data. <b>Monthly Accounts</b> is the foundation — most of the rest reads from the snapshots it produces.</p>
|
||
<ol class="steps">
|
||
<li><b>Monthly Accounts</b> — pick a date range and <b>Load Data</b> to pull SAP ledger transactions into 9 categorized tabs (Revenue, Purchase, Employee, Factory, Admin, S&D, Finance, Other Income, Other), or switch to <b>Trial Balance</b> mode. Add manual Provision amounts/notes per account, then <b>Save All</b>. Use <b>Save Snapshot</b> to freeze a completed period — Opening Stock auto-carries from the prior month's Closing Stock. (Admin-only <b>Configure</b> tab maps SAP accounts to these categories.)</li>
|
||
<li><b>P&L Comparison</b> — select two or more saved (non-Trial-Balance) snapshots, click <b>Compare</b>, optionally toggle <b>% of Revenue</b>, then Print or Download an Excel workbook with live formulas.</li>
|
||
<li><b>Cost Sheet</b> — set a date range (and optionally Salary Periods / an Employee Pool Snapshot), <b>Load Cost Sheet</b> for a per-item cost breakdown (RM, Employee, QA, QC, Boiler, Power, R&M, R&D) split by Blood Bag vs CAPD. Expand <b>Configure Cost Allocation</b> to override the BB/CAPD % per cost head — left blank, it's computed from the salary/RM ratio automatically.</li>
|
||
<li><b>Balance Sheet</b> — set an As-Of date and P&L date range, pick a Monthly Accounts snapshot (auto-matched by date, auto-fills Net Profit), then <b>Load</b>. It back-solves a <b>Provisions</b> line so Assets always equal Liabilities — watch the <b>Balanced ✓</b> vs <b>Difference</b> indicator. (Admin-only Configure panel maps account codes to each line item.)</li>
|
||
<li><b>Cash Flow</b> — set a date range, pick a snapshot for working-capital items and optionally a separate one for profit, then <b>Load Cash Flow</b>; <b>Download Excel</b> when done. (Admin configures which account codes feed each Asset/Liability/Capital/Cash line item, once.)</li>
|
||
<li><b>Salary</b> — <b>Upload</b> tab: drop a payroll Excel for a period. <b>Configure</b> tab: map each department to one of 13 cost centres (BLOOD BAG, CAPD, QA, …), or set a sheet-level % allocation fallback with a BB/CAPD split ratio. <b>Summary</b> tab shows allocated totals and flags anything unmapped — this feeds Cost Sheet's Employee Cost. Export to Excel any time.</li>
|
||
</ol>
|
||
<div class="tip"><b>Tip:</b> Each Finance tool is its own permission — Monthly Accounts, P&L Comparison, Cost Sheet, Balance Sheet, Cash Flow and Salary can all be granted independently.</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details class="sec" id="gst">
|
||
<summary><span class="sec-ico">🧾</span> 22. GST Reports <span class="chev">›</span></summary>
|
||
<div class="sec-bd">
|
||
<p class="lead">Builds statutory GST return data straight from SAP documents for a period, ready to export or push out to your filing tool.</p>
|
||
<ol class="steps">
|
||
<li><b>GSTR-1</b> — sales-side return. <b>Load Data</b> pulls SAP invoices into B2B/B2CL/B2CS/Export/HSN/Docs Issued tabs; open any row in the slide-in panel to review/edit, filter by section, then <b>Download Excel</b> or <b>Upload to TCS</b> (your external GST filing tool).</li>
|
||
<li><b>GSTR-2 Purchase</b> — same load/edit/export/Upload-to-TCS pattern for purchases (B2B/IMPG/B2BUR/HSN/CDN tabs); you can also temporarily import an external Excel into a tab, and set a TCS Period (MMYYYY) before uploading.</li>
|
||
<li><b>ITC-04 Job Work</b> — challan report for goods sent to/received from job workers (SAP stock transfers starting <code>JW</code>). Pick Type (send/receive), date range, quarter period and Action Flag (Add/Modify/Delete), <b>Load Data</b>, then Download CSV or Upload to GSP.</li>
|
||
</ol>
|
||
</div>
|
||
</details>
|
||
|
||
<details class="sec" id="masters">
|
||
<summary><span class="sec-ico">🗄️</span> 23. Business Master & General Ledger <span class="chev">›</span></summary>
|
||
<div class="sec-bd">
|
||
<ol class="steps">
|
||
<li><b>Business Master</b> — search SAP Business Partners (Customers/Vendors/Leads) by type/name/code, click a row to open its tabbed detail (addresses, contacts, etc.), edit and save.</li>
|
||
<li><b>General Ledger</b> — a transaction-level GL report (separate from the summarized Reports page below). Set a date range, use <b>Select Accounts</b> to pick from a searchable, grouped multi-select, then <b>Load Report</b> for a running cumulative balance per account — Download Excel or Print from there.</li>
|
||
</ol>
|
||
</div>
|
||
</details>
|
||
|
||
<details class="sec" id="reports">
|
||
<summary><span class="sec-ico">📊</span> 24. Reports & 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> — Work Order and Rejection Register KPIs in one place: Net Rejection %, Saved by Rework, WO approval counts/cycle time, volume by Stage, top products, and the same deep-dive charts as Rejection Analytics, all with a Company/Date filter.</li>
|
||
<li><b>PPC Report</b> — open Sales Orders pending dispatch, with Item Group / Order Type / Customer Type filters and item-code/customer search; exports to Excel. Order Type's options are admin-managed (System Settings → PPC Report), so a new value used in SAP can be added there without needing a code change.</li>
|
||
<li><b>PWO Source Report</b> — for every Production Order, shows whether each stage (Created/Released/Issued/Received) was done through this portal or directly in SAP — useful for spotting activity that bypassed the portal. Filterable per stage and exportable to Excel.</li>
|
||
</ol>
|
||
</div>
|
||
</details>
|
||
|
||
<details class="sec" id="logs">
|
||
<summary><span class="sec-ico">🗒️</span> 25. Audit Logs & Mail Log <span class="chev">›</span></summary>
|
||
<div class="sec-bd">
|
||
<ol class="steps">
|
||
<li><b>Audit Logs</b> — an immutable, global record of every mutating action in the portal (create/update/delete/approve/login and more). Filter by date/user/module/action/result or search text; click a row to see the exact field-level before/after change.</li>
|
||
<li><b>Mail Log</b> — every outbound system email the portal has sent (e.g. Work Order/Production Order/Batch Issuance stage notifications). Filter by date, status (Sent/Failed/Skipped) or search; a failed row shows the error message so you can see why someone wasn't notified.</li>
|
||
</ol>
|
||
<div class="tip"><b>Tip:</b> Audit Logs is gated by admin access or the 'audit' module specifically — most users won't see it, by design.</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details class="sec" id="documents">
|
||
<summary><span class="sec-ico">📁</span> 26. 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> 27. 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 & 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']},
|
||
planning: {modules:['production-planning']},
|
||
prodorder: {modules:['production-create']},
|
||
issue: {modules:['production-issue']},
|
||
receipt: {modules:['production-receipt']},
|
||
verifyprod: {modules:['production-verify']},
|
||
closeprod: {modules:['production-close']},
|
||
verifywo: {modules:['work-order-verify']},
|
||
manpower: {modules:['man-power']},
|
||
oee: {modules:['oee']},
|
||
rejection: {modules:['rejection-register','rejection-analytics']},
|
||
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']},
|
||
finance: {modules:['finance-monthly','finance-comparison','finance-costsheet','finance-balancesheet','finance-cashflow','salary']},
|
||
gst: {modules:['gstr1','gstr2','itc04']},
|
||
masters: {modules:['business-master','general-ledger']},
|
||
reports: {modules:['reports','board-dashboard','production-dashboard','ppc-report','pwo-source-audit'],roles:['board_member']},
|
||
logs: {modules:['audit','mail_log']},
|
||
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>
|