Skip to content

FastBound Acquisition Module

Technical name: fastbound_acquisition Version: 18.0.1.0.0 Category: Inventory / Compliance Dependencies: fastbound_core, product_addons, purchase, stock, product, sale


The Acquisition module handles all inbound firearm workflows -- every scenario where a serialized item enters your inventory and must be recorded in your FastBound A&D book.


Acquisition Workflows

The module supports four distinct inbound paths, all managed through a unified fastbound.inbound model:

1. Standard Purchase Order Receipt

The most common workflow for receiving firearms from a distributor or manufacturer.

flowchart LR
    A[Purchase Order] --> B[Receive Goods]
    B --> C[Validate Receipt]
    C --> D[FastBound Acquire]
    D --> E[Print Labels]

Steps:

  1. Create a Purchase Order for your vendor.
  2. Receive the goods -- Odoo creates stock moves and lots with serial numbers.
  3. On the receipt (stock picking), click Acquire in FastBound to create the acquisition.
  4. The module sends each serialized item to FastBound via the CreateAndCommit API.
  5. FastBound assigns item numbers (A&D book numbers) that are saved back to each stock.lot.
  6. Print labels directly from the receipt or lot list.

Automatic Compliance Defaults

When a lot is created for a compliance product, the module automatically copies the product template's manufacturer, caliber, model, item type, and importer to the lot. You can override these per-serial if needed.

2. Dealer Transfer In

FFL-to-FFL transfers where another dealer ships firearms to you.

flowchart LR
    A[Create Transfer In] --> B[Select FFL Contact]
    B --> C[Add Items]
    C --> D[Acquire in FastBound]
    D --> E[Create Inventory]

Steps:

  1. Navigate to FastBound > Acquisitions > Dealer Transfer In and create a new record.
  2. Select the sending dealer -- use the FFL Lookup button to search by FFL number and auto-populate contact details from the ATF database.
  3. Add each firearm with serial number, manufacturer, model, caliber, and item type.
  4. Click Acquire to commit the acquisition in FastBound.
  5. Click Create Inventory to generate stock lots and quants in your warehouse.

Sequence Numbers

Transfer In documents are numbered with the TRANS/XXXX sequence.

3. Customer Trade-In

When a customer trades in a firearm, you acquire it and optionally issue trade credit.

flowchart LR
    A[Create Trade-In] --> B[Select Customer]
    B --> C[Add Items + Valuation]
    C --> D[Acquire in FastBound]
    D --> E[Create Inventory]
    E --> F[Issue Trade Credit]

Steps:

  1. Navigate to FastBound > Acquisitions > Customer Trade-In and create a new record.
  2. Select the customer contact.
  3. Add each firearm with its trade value (the amount offered to the customer).
  4. Click Acquire to commit in FastBound.
  5. Click Create Inventory to add the items to stock.
  6. Trade credit is automatically tracked in the customer's Trade History (see Disposition module).

Sequence Numbers

Trade-In documents are numbered with the TRADE/XXXX sequence.

4. Direct Buy

Walk-in purchases where someone sells a firearm directly to your shop.

flowchart LR
    A[Create Direct Buy] --> B[Add Items]
    B --> C[Acquire in FastBound]
    C --> D[Create Purchase Order]
    D --> E[Validate PO]

Steps:

  1. Navigate to FastBound > Acquisitions > Direct Buy and create a new record.
  2. Optionally select a vendor (the individual selling the firearm).
  3. Add each firearm with its cost price.
  4. Click Acquire to commit in FastBound.
  5. Click Create Purchase Order to generate a PO for accounting purposes.
  6. Validate the PO to create the vendor bill.

Sequence Numbers

Direct Buy documents are numbered with the BUY/YYYY/XXXX sequence.


Inbound Document Lifecycle

All four workflows share the same state progression:

stateDiagram-v2
    [*] --> New
    New --> Acquired : Acquire in FastBound
    New --> Cancelled : Cancel
    Acquired --> "PO Created" : Create Purchase Order
    "PO Created" --> "PO Validated" : Validate PO
    Cancelled --> New : Reset to Draft
State Description
New Document created, items being added
Acquired Items committed in FastBound -- item numbers assigned
PO Created Purchase order generated (Direct Buy only)
PO Validated Purchase order confirmed (Direct Buy only)
Cancelled Document cancelled (only if no items have been disposed)

Serial Number Tracking

Stock Lot Extensions

The Acquisition module extends stock.lot with comprehensive FastBound tracking fields:

Identification Fields

Field Description
FastBound Item ID UUID assigned by FastBound
Item Number A&D book number assigned on acquisition
PSN Number Point of Sale Number
External ID Odoo lot ID sent to FastBound for cross-referencing
FastBound Account Which FastBound configuration this lot is tracked in

Status Fields

Field Description
Acquired Whether the item has been acquired in FastBound
Disposed Whether the item has been disposed in FastBound
Acquire Date When the item was acquired
Dispose Date When the item was disposed
Acquisition Type How the item was acquired (Purchase, Trade-In, etc.)
Disposition Type How the item was disposed (Sale, Transfer, etc.)
FastBound Status Computed: Not Synced, Acquired, or Disposed

Compliance Attributes

Each lot can override the product template's default compliance attributes:

Field Description
Manufacturer Override product manufacturer for this serial
Caliber Override product caliber
Model Override product model
Item Type Override product type (Pistol, Rifle, etc.)
Importer Override product importer
Condition Item condition (New, Used, Refurbished)

Product Defaults

When a lot is created, compliance attributes are pre-populated from the product template. Override them on the lot only when a specific serial differs from the product default (e.g., a different caliber variant of the same SKU).

Lot Actions

Button Description
View in FastBound Opens the item in the FastBound web interface
Fetch from FastBound Pulls the latest item data from FastBound and updates the lot
Print Label Prints a label for this serial number
Print Labels (batch) Prints labels for all selected serial numbers

Undispose

If a disposed item needs to be returned to inventory (e.g., a customer return), the Undo Disposition action:

  1. Calls PUT /Items/{id}/Undispose in FastBound.
  2. Clears the disposed flag and date on the lot.
  3. Resets the disposition type.

CreateAndCommit API Pattern

The module uses FastBound's optimized CreateAndCommit endpoint to reduce API calls by 75%:

1 API call per acquisition:

POST /Acquisitions/CreateAndCommit
{
  "type": "Purchase",
  "date": "2026-01-16T10:00:00.000Z",
  "contactId": "abc-123-def",
  "externalId": "PICK/00001",
  "items": [
    {
      "serial": "ABC123",
      "manufacturer": "Glock",
      "model": "19",
      "caliber": "9mm",
      "type": "Pistol",
      "externalId": "42"
    }
  ]
}

4 API calls per acquisition:

  1. POST /Acquisitions -- Create acquisition
  2. PUT /Acquisitions/{id}/AttachContact/{contactId} -- Attach contact
  3. POST /Acquisitions/{id}/Items -- Add items
  4. POST /Acquisitions/{id}/Commit -- Commit acquisition

Chunked Processing

FastBound limits batches to 50 items. When acquiring more than 50 items (e.g., a large shipment), the module automatically chunks the request:

  • Items are split into batches of 50.
  • Each batch gets its own CreateAndCommit call.
  • External IDs are suffixed with the chunk number (e.g., PICK/00001-1, PICK/00001-2).
  • Results from all chunks are merged and matched to lot records by serial number.

Label Printing

The module includes four label templates for serial number tags:

Label Formats

Format Paper Size Use Case
Standard Default General-purpose serial label
DYMO 1.125" x 3.5" (30252) DYMO LabelWriter thermal printers
Retail 2.5" x 1.5" Retail price tags for display cases
Full Page Letter/A4 Full-page labels for records or binders

Label Content

All label formats include:

  • Serial number
  • Manufacturer and model
  • Caliber and item type
  • Item number (A&D book number)
  • Barcode (if product has a UPC/barcode)
  • Product name

Printing Labels

Labels can be printed from multiple places:

  • Inbound document -- click Print Labels to print all acquired items.
  • Stock lot form -- click Print Label for a single serial.
  • Stock lot list -- select multiple lots and use Print > Serial Label from the action menu.

Compliance Attributes

Every item sent to FastBound requires certain compliance fields. The module validates these before submission:

Required Fields

Field Required For Source
Serial Number All items Entered by user
Manufacturer All items Product template or lot override
Item Type All items Product template or lot override

Optional Fields

Field Source
Model Product template or lot override
Caliber Product template or lot override
Importer Product template or lot override
Condition Lot-level field
UPC Product barcode

Validation Rules

The module validates before sending to FastBound:

  • Serial number is not empty and does not exceed 100 characters.
  • No duplicate serial numbers within the same batch.
  • Manufacturer is set for every item.
  • Item type is set for every item.
  • For transfers/trade-ins: contact is selected and synced to FastBound.

Product Template Extensions

Products that represent firearms must be flagged for compliance tracking. The Acquisition module extends product.template with default compliance attributes that flow down to lots:

Field Description
Requires Compliance Master flag -- marks this product as a serialized firearm
Manufacturer Default manufacturer for new lots
Caliber Default caliber
Model Default model
Item Type Default type (Pistol, Rifle, Shotgun, etc.)
Importer Default importer

Setting Up Products

When creating a new firearm product, check Requires Compliance and fill in the default compliance fields. Every serial number created for this product will inherit these defaults, saving time during receiving.


Purchase Order Integration

The Acquisition module extends purchase.order with a FastBound Account field (fb_config_id). When receiving goods from a PO:

  1. The receipt picking inherits the FastBound configuration from the PO.
  2. The Acquire in FastBound button on the picking processes all compliance lots.
  3. Item numbers from FastBound are written back to each stock.lot.

Import Product Wizard

The Import Product wizard allows bulk creation of compliance products from a CSV or manual entry, pre-populating manufacturer, caliber, type, and other attributes from SmartList values.