[{"data":1,"prerenderedAt":959},["ShallowReactive",2],{"guide:en:inventory-management/transactions":3},{"id":4,"title":5,"body":6,"description":951,"extension":952,"meta":953,"navigation":954,"path":955,"seo":956,"stem":957,"__hash__":958},"guide_en/en/user/inventory-management/transactions.md","Transactions — Inventory Audit Trail",{"type":7,"value":8,"toc":918},"minimark",[9,14,18,23,34,45,50,53,56,60,63,66,70,73,76,80,83,86,90,93,97,103,116,121,139,144,150,154,158,161,178,183,194,198,201,205,216,220,227,231,236,271,274,278,283,396,401,407,411,418,478,482,487,501,506,520,525,539,543,546,612,616,630,634,639,649,654,665,670,681,686,697,701,705,716,720,731,735,746,750,761,765,776,780,785,796,801,812,817,828,833,844,849,860,864,869,883,888,902,907],[10,11,13],"h1",{"id":12},"transactions","Transactions",[15,16,17],"p",{},"Transactions are the permanent record of every inventory movement in Aptli. Whether a shipment arrives at the warehouse, a worker scans a QR pickup code, materials are consumed on a job, or an adjustment corrects a count discrepancy — each event creates an immutable transaction entry. This audit trail cannot be edited or deleted, and corrections are always made by creating a new adjustment transaction that references the original.",[19,20,22],"h2",{"id":21},"transaction-types","Transaction Types",[24,25,30],"pre",{"className":26,"code":28,"language":29},[27],"language-text","Transaction Flow:\n\nReceipt          Transfer              Consumption        Adjustment\n   ↓                ↓                      ↓                 ↓\nNew Stock  →  Site A → Site B  →  Work Depletes Stock  Manual Correction\n(Purchase)    (QR Pickup)         (Report Submitted)   (Cycle Count)\n","text",[31,32,28],"code",{"__ignoreMap":33},"",[15,35,36,41],{},[37,38],"img",{"alt":39,"src":40},"Transactions List","/guide/inventory-management/transactions-list.png",[42,43,44],"em",{},"Transactions page showing audit trail of all inventory movements",[46,47,49],"h3",{"id":48},"receipt","Receipt",[15,51,52],{},"New inventory arrives at a site (purchases, returns from field).",[15,54,55],{},"Each receipt records the destination site, the resource received, and the new stock balance after the receipt. For example: 100 m of cable arrives at the warehouse, bringing the balance from 500 m to 600 m.",[46,57,59],{"id":58},"transfer","Transfer",[15,61,62],{},"Inventory moves between sites (warehouse → worker, worker → field site).",[15,64,65],{},"Each transfer records the source site, destination site, resource moved, and the resulting balances at each site. QR-based transfers also record the authorization code that was scanned, who scanned it, whether it was self-scanned or staff-assisted, and the GPS location of the scan. For example: a worker picks up 10 m of cable via QR scan, reducing the warehouse balance and adding to the worker's personal inventory.",[46,67,69],{"id":68},"consumption","Consumption",[15,71,72],{},"Field work depletes inventory (automatic creation when report submitted).",[15,74,75],{},"Each consumption records where the materials came from, the resource consumed, the remaining balance after consumption, and a link to the work report that triggered it. For example: a worker uses 8 m of cable completing a task, leaving 2 m in their inventory.",[46,77,79],{"id":78},"adjustment","Adjustment",[15,81,82],{},"Manual correction of stock levels (cycle counts, damage, loss).",[15,84,85],{},"Each adjustment records the stock item, the resource, the previous balance, the new balance, and a required reason. For example: a cycle count finds only 0 m of cable remaining, down from the recorded 2 m, with a note that the roll end was discarded.",[19,87,89],{"id":88},"transaction-fields","Transaction Fields",[15,91,92],{},"Every transaction records what type it is (receipt, transfer, consumption, or adjustment), the resource involved, the unit of measure, the timestamp, and the user who created it. Each type also records the relevant movement details — source and destination sites, balance changes, linked reports, scan details for QR-based transfers, and correction reasons for adjustments.",[19,94,96],{"id":95},"transaction-immutability","Transaction Immutability",[15,98,99],{},[100,101,102],"strong",{},"Cannot Be Edited:",[104,105,106,110,113],"ul",{},[107,108,109],"li",{},"Transactions are write-only",[107,111,112],{},"No update or delete operations",[107,114,115],{},"Preserves audit trail integrity",[15,117,118],{},[100,119,120],{},"Making Corrections:",[122,123,124,127,133,136],"ol",{},[107,125,126],{},"Don't try to edit wrong transaction",[107,128,129,130,132],{},"Create new ",[31,131,78],{}," transaction",[107,134,135],{},"Include detailed reason explaining correction",[107,137,138],{},"Both transactions stay in history",[15,140,141],{},[100,142,143],{},"Example Correction Flow:",[24,145,148],{"className":146,"code":147,"language":29},[27],"Day 1: Receipt shows 100 units arrived\n  → Creates transaction: toVolume = 100\n\nDay 2: Discover only 95 units actually received\n  → Create adjustment: fromVolume = 100, toVolume = 95\n  → Reason: \"Receipt count error - only 95 units in shipment\"\n\nResult: Both transactions visible in audit trail\n",[31,149,147],{"__ignoreMap":33},[19,151,153],{"id":152},"automatic-transaction-creation","Automatic Transaction Creation",[46,155,157],{"id":156},"from-report-submission","From Report Submission",[15,159,160],{},"When a worker submits a report that includes consumed-from entries:",[122,162,163,166,169,172,175],{},[107,164,165],{},"System validates stock availability at each stock item",[107,167,168],{},"Atomically creates consumption transactions for each resource",[107,170,171],{},"Links each transaction to the report that triggered it",[107,173,174],{},"Depletes stock item volumes",[107,176,177],{},"If insufficient stock → reject report OR prompt for partial consumption",[15,179,180],{},[100,181,182],{},"Benefits:",[104,184,185,188,191],{},[107,186,187],{},"Stock always accurate (can't forget to record consumption)",[107,189,190],{},"Report + transaction committed together (atomic)",[107,192,193],{},"Payment calculation has reliable data",[46,195,197],{"id":196},"from-qr-pickup-scan","From QR Pickup Scan",[15,199,200],{},"When a worker scans an assignment pickup QR, the system automatically verifies the authorization code and creates the transfer record.",[15,202,203],{},[100,204,182],{},[104,206,207,210,213],{},[107,208,209],{},"No manual transaction entry",[107,211,212],{},"GPS proves physical presence",[107,214,215],{},"Audit trail shows who authorized transfer",[19,217,219],{"id":218},"manual-transaction-entry-with-qr-code-scanning","Manual Transaction Entry with QR Code Scanning",[15,221,222,223,226],{},"For shipments arriving at sites where the items don't have existing QR codes, field staff can use the ",[100,224,225],{},"Manual Transaction Form"," with integrated QR scanning to quickly accept inventory using a physical reference book of resource QR codes.",[46,228,230],{"id":229},"creating-a-physical-resource-reference-book","Creating a Physical Resource Reference Book",[15,232,233],{},[100,234,235],{},"Admin Setup (One-Time):",[122,237,238,249,252,255,262,265,268],{},[107,239,240,241,244,245,248],{},"Navigate to ",[100,242,243],{},"Admin → Resource QR Codes"," (",[31,246,247],{},"/admin/resource-qr-codes",")",[107,250,251],{},"Filter by resource type if needed (Material, Labor, Equipment)",[107,253,254],{},"Search for specific resources to include",[107,256,257,258,261],{},"Click ",[100,259,260],{},"Print"," to generate printable QR code sheet",[107,263,264],{},"Print on standard letter/A4 paper",[107,266,267],{},"Laminate pages and bind into reference book",[107,269,270],{},"Place book at receiving dock or warehouse station",[15,272,273],{},"Each QR code encodes a reference to the resource — scanning it auto-fills the resource name, type, and default unit of measure into the transaction form.",[46,275,277],{"id":276},"mobile-workflow-for-receiving-shipments","Mobile Workflow for Receiving Shipments",[15,279,280],{},[100,281,282],{},"Field Staff Process:",[122,284,285,305,322,341,357,377],{},[107,286,287,290],{},[100,288,289],{},"Open Manual Transaction Form",[104,291,292,295,298],{},[107,293,294],{},"Navigate to Inventory → Transactions",[107,296,297],{},"Click \"Add Manual Transaction\" button",[107,299,300,301,304],{},"Requires ",[31,302,303],{},"canFacilitatePickups"," permission",[107,306,307,310,311],{},[100,308,309],{},"Enable Batch Mode"," (Optional but Recommended)",[104,312,313,316,319],{},[107,314,315],{},"Toggle \"Batch Mode\" switch at top of form",[107,317,318],{},"Allows scanning and entering multiple items before final submission",[107,320,321],{},"Saves time when shipment contains 5+ different items",[107,323,324,327],{},[100,325,326],{},"Scan Resource QR Code",[104,328,329,332,335,338],{},[107,330,331],{},"Click scan button (📷 icon) next to Resource Name field",[107,333,334],{},"Camera opens on mobile device",[107,336,337],{},"Point camera at QR code from reference book",[107,339,340],{},"QR data auto-fills: Resource Name, Resource ID, Default UOM",[107,342,343,346],{},[100,344,345],{},"Enter Quantity Details",[104,347,348,351,354],{},[107,349,350],{},"Volume field: Enter quantity received (e.g., \"50\")",[107,352,353],{},"UOM field: Pre-filled from QR, adjust if needed (e.g., \"m\" for meters)",[107,355,356],{},"Site: Drag-and-drop destination site or use current location",[107,358,359,362,363],{},[100,360,361],{},"Add to Batch"," (If Batch Mode Enabled)",[104,364,365,368,371,374],{},[107,366,367],{},"Click \"Add to Batch\" button",[107,369,370],{},"Item appears in batch list below",[107,372,373],{},"Form clears for next item",[107,375,376],{},"Repeat steps 3-5 for each item in shipment",[107,378,379,382],{},[100,380,381],{},"Submit Transaction(s)",[104,383,384,387,390,393],{},[107,385,386],{},"Single mode: Click \"Submit\" (creates one transaction)",[107,388,389],{},"Batch mode: Click \"Submit Batch (N items)\" (creates N transactions atomically)",[107,391,392],{},"Success notification shows how many items were accepted",[107,394,395],{},"If any items fail, system reports count but doesn't rollback others",[15,397,398],{},[100,399,400],{},"Example Batch Workflow:",[24,402,405],{"className":403,"code":404,"language":29},[27],"Shipment arrives with 5 different materials:\n1. Scan \"Cat6 Cable\" QR → Enter 50m → Add to Batch\n2. Scan \"Conduit 1in\" QR → Enter 20 units → Add to Batch\n3. Scan \"Junction Box\" QR → Enter 15 units → Add to Batch\n4. Scan \"Cable Tie\" QR → Enter 500 units → Add to Batch\n5. Scan \"Grounding Wire\" QR → Enter 100m → Add to Batch\n6. Submit Batch (5 items)\n→ Creates 5 stock items + 5 receipt transactions instantly\n",[31,406,404],{"__ignoreMap":33},[46,408,410],{"id":409},"handling-unknown-resources","Handling Unknown Resources",[15,412,413,414,417],{},"If shipment contains items ",[100,415,416],{},"not in reference book",":",[122,419,420,440,459],{},[107,421,422,425],{},[100,423,424],{},"Type Resource Name Manually",[104,426,427,430,433],{},[107,428,429],{},"Enter name in Resource Name field (no QR scan)",[107,431,432],{},"System searches for existing resource by name",[107,434,435,436,439],{},"If not found → automatically places in ",[100,437,438],{},"\"Holding/Staging\""," resource",[107,441,442,445],{},[100,443,444],{},"Holding/Staging Workflow",[104,446,447,450,453,456],{},[107,448,449],{},"Warning toast: \"Resource not found. Placed in Holding/Staging\"",[107,451,452],{},"Stock item created under the Holding/Staging resource category",[107,454,455],{},"Your original entry is preserved in the transaction notes",[107,457,458],{},"Later: Office staff allocates to the proper resource (see Allocating Staged Inventory below)",[107,460,461,464],{},[100,462,463],{},"Benefits of Auto-Staging",[104,465,466,469,472,475],{},[107,467,468],{},"Field staff doesn't need to wait for office approval",[107,470,471],{},"Inventory physically accepted and tracked immediately",[107,473,474],{},"Resource categorization happens asynchronously",[107,476,477],{},"No blocking delays for urgent shipments",[46,479,481],{"id":480},"batch-mode-features","Batch Mode Features",[15,483,484],{},[100,485,486],{},"Line Items Table:",[104,488,489,492,495,498],{},[107,490,491],{},"Shows all scanned items before submission",[107,493,494],{},"Displays: Resource Name, Volume, UOM",[107,496,497],{},"Remove individual items with X button",[107,499,500],{},"Clear visual of what will be committed",[15,502,503],{},[100,504,505],{},"Submission:",[104,507,508,511,514,517],{},[107,509,510],{},"Atomic batch processing (all-or-nothing where possible)",[107,512,513],{},"Individual item failures reported but don't block others",[107,515,516],{},"Success count: \"5 transactions created successfully\"",[107,518,519],{},"Partial failure handling: \"2 items failed to process\"",[15,521,522],{},[100,523,524],{},"Mobile Optimization:",[104,526,527,530,533,536],{},[107,528,529],{},"Large touch-friendly scan button",[107,531,532],{},"Camera access with flashlight toggle",[107,534,535],{},"Works offline with PWA caching",[107,537,538],{},"Batch is saved locally and survives page refresh",[46,540,542],{"id":541},"allocating-staged-inventory","Allocating Staged Inventory",[15,544,545],{},"After field staff accept unknown resources into Holding/Staging:",[122,547,548,561,574,596],{},[107,549,550,553],{},[100,551,552],{},"Navigate to Stock Items",[104,554,555,558],{},[107,556,557],{},"Filter by resource type or site to find Holding/Staging items",[107,559,560],{},"Look for stock items flagged as staged (shown with a \"Holding\" indicator)",[107,562,563,566],{},[100,564,565],{},"Open Allocation Modal",[104,567,568,571],{},[107,569,570],{},"Click \"Allocate Staged Inventory\" button on stock item",[107,572,573],{},"Shows: Current volume, Original name entered by field staff",[107,575,576,579],{},[100,577,578],{},"Select Proper Resource",[104,580,581,587,593],{},[107,582,583,586],{},[100,584,585],{},"Option A:"," Drag existing resource from resources table",[107,588,589,592],{},[100,590,591],{},"Option B:"," Toggle \"Create New Resource\" and enter details",[107,594,595],{},"Enter allocation reason (e.g., \"Identified as Cat6A cable, not Cat6\")",[107,597,598,601],{},[100,599,600],{},"Submit Allocation",[104,602,603,606,609],{},[107,604,605],{},"Updates the stock item to reference the proper resource",[107,607,608],{},"Creates an adjustment transaction recording the allocation reason",[107,610,611],{},"Preserves the original field-entered name in the transaction notes for traceability",[15,613,614],{},[100,615,182],{},[104,617,618,621,624,627],{},[107,619,620],{},"Field acceptance never blocked",[107,622,623],{},"Office categorization preserves audit trail",[107,625,626],{},"No inventory \"disappears\" during transition",[107,628,629],{},"Original field worker notes preserved",[19,631,633],{"id":632},"viewing-transactions","Viewing Transactions",[15,635,636],{},[100,637,638],{},"Global Transaction Log:",[104,640,641,643,646],{},[107,642,294],{},[107,644,645],{},"Filter by type, date range, site, resource",[107,647,648],{},"Export for reconciliation or compliance",[15,650,651],{},[100,652,653],{},"Stock Item History:",[104,655,656,659,662],{},[107,657,658],{},"Navigate to specific stock item",[107,660,661],{},"\"Transaction History\" shows all movements affecting this item",[107,663,664],{},"Trace lineage (where did materials come from, where did they go)",[15,666,667],{},[100,668,669],{},"Report Consumption:",[104,671,672,675,678],{},[107,673,674],{},"Navigate to work report",[107,676,677],{},"\"Materials Used\" section links to consumption transactions",[107,679,680],{},"Verify what was actually depleted from inventory",[15,682,683],{},[100,684,685],{},"Site Activity:",[104,687,688,691,694],{},[107,689,690],{},"Navigate to site",[107,692,693],{},"\"Recent Transactions\" shows receipts, transfers, consumptions",[107,695,696],{},"Monitor warehouse throughput",[19,698,700],{"id":699},"use-cases","Use Cases",[46,702,704],{"id":703},"compliance-auditing","Compliance Auditing",[104,706,707,710,713],{},[107,708,709],{},"Show all movements of controlled materials",[107,711,712],{},"Prove chain of custody (receipt → transfer → consumption)",[107,714,715],{},"Export transaction log for regulatory reporting",[46,717,719],{"id":718},"loss-prevention","Loss Prevention",[104,721,722,725,728],{},[107,723,724],{},"Compare receipts to consumptions over time",[107,726,727],{},"Identify discrepancies requiring investigation",[107,729,730],{},"Track adjustment patterns (frequent adjustments = potential issues)",[46,732,734],{"id":733},"payment-calculation","Payment Calculation",[104,736,737,740,743],{},[107,738,739],{},"Consumptions are linked to the report that triggered them",[107,741,742],{},"Calculate material costs for completed work",[107,744,745],{},"Verify worker used assigned materials (not personal stock)",[46,747,749],{"id":748},"inventory-reconciliation","Inventory Reconciliation",[104,751,752,755,758],{},[107,753,754],{},"Compare transaction-based balances to physical counts",[107,756,757],{},"Identify shrinkage or counting errors",[107,759,760],{},"Create adjustments to correct discrepancies",[46,762,764],{"id":763},"worker-accountability","Worker Accountability",[104,766,767,770,773],{},[107,768,769],{},"View individual worker's pickup and consumption history",[107,771,772],{},"Identify who scanned protected inventory",[107,774,775],{},"GPS validation shows where materials transferred",[19,777,779],{"id":778},"best-practices","Best Practices",[15,781,782],{},[100,783,784],{},"Always Include Reason for Adjustments:",[104,786,787,790,793],{},[107,788,789],{},"\"Physical count correction\" is better than no reason",[107,791,792],{},"\"Damaged materials discarded - storm event 2026-02-08\" even better",[107,794,795],{},"Helps future auditors understand corrections",[15,797,798],{},[100,799,800],{},"Use Smallest Transaction Types:",[104,802,803,806,809],{},[107,804,805],{},"Don't use adjustments when receipt/transfer appropriate",[107,807,808],{},"Adjustments should be exception, not routine",[107,810,811],{},"Receipts/transfers preserve richer context",[15,813,814],{},[100,815,816],{},"Regular Reconciliation:",[104,818,819,822,825],{},[107,820,821],{},"Weekly: Review adjustments (should be rare)",[107,823,824],{},"Monthly: Cycle count major stock items",[107,826,827],{},"Quarterly: Full warehouse reconciliation",[15,829,830],{},[100,831,832],{},"Leverage GPS for Transfers:",[104,834,835,838,841],{},[107,836,837],{},"Review GPS scan location for protected inventory transfers",[107,839,840],{},"Detect anomalies (scan recorded far from the warehouse)",[107,842,843],{},"Geofence validation prevents remote QR sharing",[15,845,846],{},[100,847,848],{},"Monitor Transaction Volume:",[104,850,851,854,857],{},[107,852,853],{},"High adjustment rate = process problems",[107,855,856],{},"Low consumption with high pickups = hoarding or theft",[107,858,859],{},"Receipt/consumption mismatch = demand forecasting issues",[19,861,863],{"id":862},"transaction-permissions","Transaction Permissions",[15,865,866],{},[100,867,868],{},"Creating Transactions:",[104,870,871,877,880],{},[107,872,873,876],{},[31,874,875],{},"transactionsCreate"," - Can create receipts, adjustments",[107,878,879],{},"Auto-created transactions (from reports, QR scans) don't require permission",[107,881,882],{},"Site-specific permissions can limit who creates receipts at which sites",[15,884,885],{},[100,886,887],{},"Viewing Transactions:",[104,889,890,893,896],{},[107,891,892],{},"All users can view transactions for their own stock items",[107,894,895],{},"Role restrictions can hide transactions for certain resources/sites",[107,897,898,901],{},[31,899,900],{},"viewDeleted"," allows seeing soft-deleted transactions (if ever implemented)",[15,903,904],{},[100,905,906],{},"No Delete Permission:",[104,908,909,912,915],{},[107,910,911],{},"Transactions cannot be deleted by anyone",[107,913,914],{},"Maintains audit trail integrity",[107,916,917],{},"Only database administrator could delete (operational emergency only)",{"title":33,"searchDepth":919,"depth":919,"links":920},2,[921,928,929,930,934,941,942,949,950],{"id":21,"depth":919,"text":22,"children":922},[923,925,926,927],{"id":48,"depth":924,"text":49},3,{"id":58,"depth":924,"text":59},{"id":68,"depth":924,"text":69},{"id":78,"depth":924,"text":79},{"id":88,"depth":919,"text":89},{"id":95,"depth":919,"text":96},{"id":152,"depth":919,"text":153,"children":931},[932,933],{"id":156,"depth":924,"text":157},{"id":196,"depth":924,"text":197},{"id":218,"depth":919,"text":219,"children":935},[936,937,938,939,940],{"id":229,"depth":924,"text":230},{"id":276,"depth":924,"text":277},{"id":409,"depth":924,"text":410},{"id":480,"depth":924,"text":481},{"id":541,"depth":924,"text":542},{"id":632,"depth":919,"text":633},{"id":699,"depth":919,"text":700,"children":943},[944,945,946,947,948],{"id":703,"depth":924,"text":704},{"id":718,"depth":924,"text":719},{"id":733,"depth":924,"text":734},{"id":748,"depth":924,"text":749},{"id":763,"depth":924,"text":764},{"id":778,"depth":919,"text":779},{"id":862,"depth":919,"text":863},"Every inventory movement — receipts, transfers, QR-based pickups, field consumption, and manual adjustments — is recorded as an immutable transaction that cannot be edited or deleted.","md",{},true,"/en/user/inventory-management/transactions",{"title":5,"description":951},"en/user/inventory-management/transactions","MJV91vFMI6rc1qyAHkBNgIZSAkH-z5yzRZvjzWnW1BA",1776295548506]