ACUMATICA

Acumatica Lot Number Tracking Complete Guide

February 18, 2024 14 min read

Introduction

Lot number tracking in Acumatica allows you to track groups of items that were received together. This is essential for industries like food, pharmaceuticals, and chemicals where batch traceability and expiration tracking are critical.

Configuration

Configure items for lot tracking:

// Enable lot tracking on item
POST /api/data/IN202500
{
  "InventoryID": { "value": "CHEMICAL-001" },
  "ItemType": { "value": "Stock Item" },
  "TrackLots": { "value": true },
  "LotClass": { "value": "CHEMICALS" },
  "ShelfLife": { "value": 365 },
  "ShelfLifeUOM": { "value": "DAYS" }
}

Create Lot Classes

// Create lot class
POST /api/data/LM101000
{
  "ClassID": { "value": "CHEMICALS" },
  "Description": { "value": "Chemical Lot Tracking" },
  "AutoGenerate": { "value": true },
  "Format": { "value": "CHEM-{SEQ:6}" }
}

Receiving Lots

// Receive items with lot numbers
POST /api/data/PO301000
{
  "VendorRefNbr": { "value": "PO-2024-002" },
  "Lines": [
    {
      "InventoryID": { "value": "CHEMICAL-001" },
      "Qty": { "value": 100 },
      "UnitCost": { "value": 50.00 },
      "LotSerialNbr": { "value": "CHEM-000001" },
      "ExpirationDate": { "value": "2025-02-18" }
    }
  ]
}

Lot Fulfillment

// Issue lot-controlled items
POST /api/data/SO301000
{
  "OrderNbr": { "value": "SO-2024-001" },
  "Lines": [
    {
      "InventoryID": { "value": "CHEMICAL-001" },
      "Qty": { "value": 25 },
      "LotSerialNbr": { "value": "CHEM-000001" }
    }
  ]
}

Expiration Tracking

// Get expiring lots
GET /api/data/LM204000?$filter=ExpirationDate le '2024-03-01'
class LotManager {
    constructor(api) {
        this.api = api;
    }

    async receiveLot(itemId, qty, cost, lotClass) {
        return await this.api.post('PO301000', {
            Lines: [{
                InventoryID: { value: itemId },
                Qty: { value: qty },
                UnitCost: { value: cost },
                LotClass: { value: lotClass }
            }]
        });
    }

    async getExpiringLots(days = 30) {
        const futureDate = new Date();
        futureDate.setDate(futureDate.getDate() + days);
        
        return await this.api.get('LM204000', {
            '$filter': `ExpirationDate le '${futureDate.toISOString().split('T')[0]}'`
        });
    }

    async getLotHistory(lotNumber) {
        return await this.api.get('LM203000', {
            '$filter': `LotSerialNbr eq '${lotNumber}'`
        });
    }
}

Summary

Lot number tracking in Acumatica provides essential batch traceability for industries with regulatory requirements. Combined with expiration tracking, it ensures proper inventory rotation and compliance.

For more information, check out our other tutorials on Serial Number Tracking and Quality Control.