ST. EDWARD SCHOOL

Merchandise Monitoring & Inventory Control

Masterfile, waitlist, controlled release, physical inventory, variance, and audit monitoring.

ACTIVE ITEMS0
PHYSICAL STOCK0
ACTUAL COUNT0
WAITLISTED QTY0
FOR RELEASE QTY0
NEGATIVE ITEMS0
OPEN VARIANCE0
INVENTORY STATUSNONE
Loading merchandise monitoring data...
MASTERFILE

Merchandise

Current Stock is physical uncommitted stock. Actual Count is the net balance after commitments and may be negative.

ItemCode / BarcodeVariationPriceCurrent StockActual CountStatusActions
ACTIVE PRE-ORDER QUEUE

Waitlisted

Oldest orders are allocated first. The report is formatted for attachment to monitoring reports and purchase requests.

DateCustomerItemRemainingAmountPaymentContact / RemarksActions
READY FOR CLAIMING

For Release

Reserved units were already deducted from physical stock. Completing release will not deduct stock again.

Date AllocatedCustomerItemQuantityPaymentContactReferenceAction
CONTROLLED RELEASE HISTORY

Release Summary

Each release includes its purpose and the required OR, MRRF, or Marketing Purpose reference.

Released DateRecipientItemQtyPurposeReferenceReleased ByAmount
TWO-COUNT PHYSICAL INVENTORY

Inventory Counting

No active inventory session.

The printed count sheet intentionally does not show system stock. Count 1 and Count 2 can be edited before variance is run. Finalization adjusts Current Stock and Actual Count only after review.

ItemCodeCount 1Count 2FinalVarianceRemarksAction

Recent Inventory Sessions

SessionDateTitleStatusCreated ByFinalized By
SHORTAGE / OVERAGE REPORT

Variance

Monitoring Stock Out automatically creates a shortage variance. Inventory variance records are created after Run Variance and finalized after stock adjustment.

DateItemExpectedCount 1Count 2FinalVarianceStatus / Reason
EVERY CHANGE

Audit Log

Records masterfile edits, stock adjustments, waitlist changes, allocations, releases, counts, variance runs, and finalization.

TimestampActionRecordItemQtyChanged ByReasonSource
`); win.document.close(); } function executePrintReport(mode,options){ if(mode==="print-waitlist")printWaitlistReport(options); else if(mode==="print-release")printReleaseReport(options); else if(mode==="print-inventory")printInventorySheet(options); else if(mode==="print-variance")printVarianceReport(options); } function printWaitlistReport(options){ const records=filterReportRecords(state.data.waitlisted||[],"Date Waitlisted",options); const totalQty=records.reduce((s,r)=>s+n(r["Quantity Remaining"]),0); const totalAmount=records.reduce((s,r)=>s+n(r["Waitlisted Amount"]),0); const rows=records.map((r,i)=>[ i+1, escapeHtml(r["Date Waitlisted"]), escapeHtml(r["Customer / Recipient"]||"—"), escapeHtml(r["Contact Number"]||"—"), escapeHtml(r["Email Address"]||"—"), escapeHtml(r["Item Name"]), escapeHtml(r["Variation"]||"—"), n(r["Quantity Remaining"]), money(r["Unit Price"]), money(r["Waitlisted Amount"]), escapeHtml(r["Payment Status"]||"—"), escapeHtml(r["Remarks"]||"") ]); printDocument( "ITEM PRE-ORDER / WAITLISTED REPORT", `${reportPeriodLabel(options)} · Active pre-orders: ${records.length} · Total quantity: ${totalQty} · Total amount: ${money(totalAmount)}`, ["No.","Date","Customer","Contact","Email","Item","Variation","Qty","Unit Price","Amount","Payment","Remarks"], rows, "landscape", "For attachment to the merchandise monitoring report and/or purchase request.", ["Prepared By","Noted By"] ); } function printReleaseReport(options){ const records=filterReportRecords(state.data.releases||[],"Released Date",options); const totalQty=records.reduce((s,r)=>s+n(r["Quantity Released"]),0); const totalAmount=records.reduce((s,r)=>s+n(r["Total Amount"]),0); const rows=records.map((r,i)=>[ i+1, escapeHtml(r["Released Date"]), escapeHtml(r["Customer / Recipient"]||"—"), escapeHtml(r["Contact Number"]||"—"), escapeHtml(r["Email Address"]||"—"), escapeHtml(r["Item Name"]), escapeHtml(r["Variation"]||"—"), n(r["Quantity Released"]), escapeHtml(r["Release Purpose"]||"—"), escapeHtml(referenceText(r)), escapeHtml(r["Process / Reason"]||""), escapeHtml(r["Released By"]||"—"), money(r["Total Amount"]) ]); printDocument( "MERCHANDISE RELEASE SUMMARY", `${reportPeriodLabel(options)} · Release transactions: ${records.length} · Total quantity: ${totalQty} · Total amount: ${money(totalAmount)}`, ["No.","Released Date","Recipient","Contact","Email","Item","Variation","Qty","Purpose","Reference","Process / Reason","Released By","Amount"], rows, "landscape", "", ["Prepared By","Noted By"] ); } function printInventorySheet(options){ const session=state.data.activeInventorySession; let records=state.data.inventoryCounts||[]; if(!session||!records.length){setStatus("Start an inventory session before printing the count sheet.","bad");return;} records=filterReportRecords(records,"Inventory Date",options); if(!records.length){setStatus("The current inventory session is outside the selected report period.","warning");return;} const includeOnHand=options.includeOnHand==="INCLUDE ON-HAND / SYSTEM STOCK"; const headers=includeOnHand ?["No.","Item Code","Item Name","Variation","On-Hand / System Stock","Actual Count","Count 1","Counter Initial","Count 2","Recount Initial","Variance Reason","Remarks"] :["No.","Item Code","Item Name","Variation","Count 1","Counter Initial","Count 2","Recount Initial","Variance Reason","Remarks"]; const rows=records.map((r,i)=>{ const base=[i+1,escapeHtml(r["Item Code"]||r["Barcode"]||"—"),escapeHtml(r["Item Name"]),escapeHtml(r["Variation"]||"—")]; if(includeOnHand)base.push(n(r["System Stock Snapshot"]),n(r["Actual Count Snapshot"])); return base.concat(['
','
','
','
','
','']); }); printDocument( "PHYSICAL INVENTORY COUNT SHEET", `${session["Session Title"]} · Session ${session["Session ID"]} · Inventory Date: ${session["Inventory Date"]} · ${reportPeriodLabel(options)} · ${includeOnHand?"ON-HAND DISPLAYED":"SYSTEM STOCK HIDDEN"}`, headers, rows, "landscape", "Do not write over Count 1. Use Count 2 only for recount or verification. A possible reason is required when an item with system stock is counted as zero.", ["Counted / Prepared By","Verified By","Noted By"] ); } function printVarianceReport(options){ const records=filterReportRecords(state.data.variances||[],"Date Recorded",options); const shortage=records.filter(r=>n(r["Variance Quantity"])<0).reduce((s,r)=>s+Math.abs(n(r["Variance Quantity"])),0); const overage=records.filter(r=>n(r["Variance Quantity"])>0).reduce((s,r)=>s+n(r["Variance Quantity"]),0); const rows=records.map((r,i)=>[ i+1, escapeHtml(r["Date Recorded"]), escapeHtml(r["Inventory Session ID"]||"Manual Stock Out"), escapeHtml(r["Item Code"]||r["Barcode"]||"—"), escapeHtml(r["Item Name"]), n(r["Expected Stock"]), hasNumber(r["Count 1"])?n(r["Count 1"]):"—", hasNumber(r["Count 2"])?n(r["Count 2"]):"—", n(r["Final Count"]), n(r["Variance Quantity"]), escapeHtml(r["Variance Type"]), escapeHtml(r["Status"]), escapeHtml(r["Reason"]||"") ]); printDocument( "MERCHANDISE VARIANCE REPORT", `${reportPeriodLabel(options)} · Variance records: ${records.length} · Total shortage: ${shortage} · Total overage: ${overage}`, ["No.","Date","Session","Code","Item","Expected","Count 1","Count 2","Final","Variance","Type","Status","Reason"], rows, "landscape", "", ["Prepared By","Verified By"] ); } root.addEventListener("click",event=>{ const queueAction=event.target.closest("[data-queue-action]");if(queueAction){const id=queueAction.dataset.queueId;if(queueAction.dataset.queueAction==="retry")retryQueue(id);else dismissQueue(id);return;} const closeModalTarget=event.target.closest("[data-close-modal]");if(closeModalTarget){closeModal();return;} const closeAlertTarget=event.target.closest("[data-close-alert]");if(closeAlertTarget){els.releaseAlert.hidden=true;return;} const tab=event.target.closest("[data-tab]");if(tab){switchTab(tab.dataset.tab);return;} const action=event.target.closest("[data-action]");if(!action)return; if(action.dataset.action==="edit-item")openModal("edit-item",findItem(action.dataset.row)); if(action.dataset.action==="adjust-stock")openModal("adjust-stock",findItem(action.dataset.row)); if(action.dataset.action==="edit-waitlist")openModal("edit-waitlist",findWaitlist(action.dataset.id)); if(action.dataset.action==="cancel-waitlist")openModal("cancel-waitlist",findWaitlist(action.dataset.id)); if(action.dataset.action==="release-item")openModal("release-item",findForRelease(action.dataset.id)); if(action.dataset.action==="count-item")openModal("count-item",findInventoryCount(action.dataset.code)); }); root.addEventListener("change",event=>{if(event.target.name==="releasePurpose")updateReleaseFields();if(event.target.name==="countRound"&&state.modalMode==="count-item"){const r=state.modalRecord;const q=event.target.value==="2"?r["Count 2"]:r["Count 1"];els.modalForm.elements.countedQuantity.value=hasNumber(q)?n(q):0;}}); els.modalForm.addEventListener("submit",submitModal); els.search.addEventListener("input",renderAll); $("mmAddItemBtn").addEventListener("click",()=>openModal("add-item")); $("mmRefreshBtn").addEventListener("click",()=>loadData(false)); $("mmAllocateBtn").addEventListener("click",()=>call("allocate_waitlists",{requestId:makeRequestId("ALLOC")},"Checking available stock against the waitlist")); $("mmDirectReleaseBtn").addEventListener("click",()=>openModal("direct-release")); $("mmStartInventoryBtn").addEventListener("click",()=>openModal("start-inventory")); $("mmInventoryStartBtn").addEventListener("click",()=>openModal("start-inventory")); $("mmRunVarianceBtn").addEventListener("click",()=>{if(state.data.activeInventorySession)openModal("run-variance");}); $("mmFinalizeInventoryBtn").addEventListener("click",()=>{if(state.data.activeInventorySession)openModal("finalize-inventory");}); $("mmCancelInventoryBtn").addEventListener("click",()=>{if(state.data.activeInventorySession)openModal("cancel-inventory");}); $("mmPrintWaitlistBtn").addEventListener("click",()=>openModal("print-waitlist")); $("mmPrintReleaseBtn").addEventListener("click",()=>openModal("print-release")); $("mmPrintInventoryBtn").addEventListener("click",()=>openModal("print-inventory")); $("mmPrintVarianceBtn").addEventListener("click",()=>openModal("print-variance")); $("mmFullscreenBtn").addEventListener("click",()=>{if(!document.fullscreenElement)root.requestFullscreen?.();else document.exitFullscreen?.();}); $("mmViewForReleaseBtn").addEventListener("click",()=>{els.releaseAlert.hidden=true;switchTab("forRelease");}); els.autoRefresh.addEventListener("change",setupAutoRefresh); els.queueToggle.addEventListener("click",()=>{els.queuePanel.hidden=!els.queuePanel.hidden;}); els.clearSavedQueue.addEventListener("click",()=>{state.queue=state.queue.filter(task=>task.status!=="saved");persistQueue();renderQueue();}); function setupAutoRefresh(){if(state.refreshTimer)clearInterval(state.refreshTimer);state.refreshTimer=null;if(els.autoRefresh.checked)state.refreshTimer=setInterval(()=>loadData(true),30000);} if(!WEB_APP_URL||WEB_APP_URL.includes("PASTE_YOUR"))setStatus("Replace WEB_APP_URL with your Apps Script /exec deployment URL.","bad");else{setupAutoRefresh();restoreQueue();checkServerVersion().then(()=>loadData(false)).catch(error=>{setStatus(error.message||String(error),"bad");loadData(false);});} })();

Contact Us Today

Learn more about us and our programs and curriculum today.

Scroll to Top
The St. Edward School website uses a third-party service to analyze non-identifiable web traffic data for us. This service does not use cookies. Data generated is not shared with any other party. For more info, see our Privacy Policy.