Serial identity

One serial per unit, unique in active stock, read from scans that may hold other codes.

Request with "decision": "serial" and one of these operations: receive, pick, pack, count.

Clauses applied

  • receive.factor: UOM factor is frozen once; serial captures use factor 1 and base quantity 1.
  • serial.unique: Serial-controlled stock requires one unit per captured serial and no second positive active position for the same item/serial.
  • variance.manager: Discovery, identity change, reserved/owned stock, above-threshold value or exceptional cost requires independent Warehouse Manager.

Evidence questions

scan_is_serial@1

This value was scanned from one unit of the item described. Is it that unit's own serial number?

AnswerMeaning
trueIt is the unit's own serial number, unique to this one unit.
falseIt is another code printed on the unit or its packaging: a product barcode (GTIN, UPC, EAN), model or part number, lot or batch, date, or a carton or pallet code.

Examples

A product barcode scanned as a serial

{
  "decision": "serial",
  "proposal": {
    "operation": "receive",
    "qty": "2",
    "scans": [
      "SN 2304K118842",
      "0885911425308"
    ]
  },
  "item": {
    "sku": "DCD771C2",
    "description": "20V cordless drill kit",
    "serial_controlled": true,
    "gtin": "00885911425308",
    "identifiers": [
      "DCD771C2"
    ],
    "serial_format": "S/N then 4 digits, a letter, 6 digits"
  },
  "active_serials": []
}

Response from the rules with no model loaded, so every question abstains.

{
  "verdict": "reject",
  "next": {
    "action": "rescan",
    "text": "1 scan(s) are not serial numbers ('0885911425308' first). Rescan the units' serial labels."
  },
  "questions": [
    {
      "ask": "scans/0",
      "question": "scan_is_serial@1",
      "status": "model_unavailable",
      "evidence": [
        "/proposal/scans/0"
      ]
    }
  ]
}

Download the request

Request schema

{
  "type": "object",
  "required": [
    "decision",
    "proposal",
    "item"
  ],
  "additionalProperties": false,
  "properties": {
    "decision": {
      "const": "serial"
    },
    "proposal": {
      "type": "object",
      "required": [
        "operation",
        "qty",
        "scans"
      ],
      "additionalProperties": false,
      "properties": {
        "operation": {
          "type": "string",
          "enum": [
            "receive",
            "pick",
            "pack",
            "count"
          ]
        },
        "qty": {
          "type": "string",
          "format": "decimal"
        },
        "scans": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "maxItems": 1000
        }
      }
    },
    "item": {
      "type": "object",
      "required": [
        "sku",
        "serial_controlled"
      ],
      "additionalProperties": false,
      "properties": {
        "sku": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "description": {
          "type": "string",
          "minLength": 1,
          "maxLength": 4000
        },
        "serial_controlled": {
          "type": "boolean"
        },
        "gtin": {
          "type": "string",
          "pattern": "^\\d{8}$|^\\d{12,14}$"
        },
        "identifiers": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "maxItems": 20
        },
        "serial_mask": {
          "type": "string",
          "minLength": 1,
          "maxLength": 60
        },
        "serial_format": {
          "type": "string",
          "minLength": 1,
          "maxLength": 4000
        }
      }
    },
    "active_serials": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "maxItems": 100000
    },
    "source_serials": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "maxItems": 100000
    }
  }
}