Skip to main content

Buy an owner's units just in time

3PL add-on For: Administrator, Compliance manager, Warehouse staff, Sales and purchasing Checked on 18.0.0.2.0, 18.0.1.0.0

With just-in-time buying, your own sales may take units that you hold for an owner, and your company buys those units from the owner at the moment the delivery (or the pick) is validated. The software then creates a title transfer and a purchase order to the owner by itself, issues the owner's side of the sale as its agent, and ships the units as your own stock.

Background: just-in-time buying is a per-owner option, off by default, in which the delivery of your own sale converts the owner's units it picks, in the same step as the delivery (FD&C Act § 581(6), (22), (24), (26), (27); § 582(a)(1), (a)(7); § 584(d); see Compliance background). The idea behind title transfers: The title model.

The usual order is: set up the owner once (3PL-JIT-01), then ship your sales as usual on one-step routes (3PL-JIT-02) or pick, pack and ship routes (3PL-JIT-03), and review and bill the purchase orders the software created (3PL-JIT-04). A consignor is bought the same way: see Take in and sell consignment stock.

Set up an owner for just-in-time buying​

Let your own sales take an owner's units and buy them when your delivery is validated. Do this only when you have agreed with the owner that you may buy its stock this way: the owner's profile setting is the owner's standing approval of every such purchase. Your procedure decides which owners you buy from just in time, at what price and with whose approval; the software requires the settings below.

This changes how your own warehouse works: "Once an owner we buy from just in time holds units of a product in our warehouse, our own sales of that product may take its units after ours. The step that takes any of them (the pick on pick/pack/ship routes) needs their serials scanned, and then every unit it moves; steps that take only our own units work as before." Products that no just-in-time owner holds in the warehouse, and companies without just-in-time owners, work exactly as before.

Who: Rx Tracking Manager

Requires: Rx Tracking (DSCSA): 3PL and title model, with 3PL switched on.

Before you start:

  • The owner is ready for title transfers in place: your wholesale facility license for the warehouse, the owner's active profile, and Authorized Trading Partner. See Get ready for title transfers in place.
  • The owner is in issuing mode B: the company setting Issue documents as the owner's agent is Always, or the owner's written authorization is recorded. See Set how the owner's documents are issued.
  • Optionally, the owner's price for each product it may sell you, as a vendor price on the product's Purchase tab (vendor = the owner). Recording it needs Purchase Administrator or Inventory Administrator.
  1. Go to Inventory ‣ Rx Tracking ‣ Owners (in the 3PL ‣ Configuration section) and open the owner, for example Summit Specialty Pharma Inc.

  2. On the Documents tab, check that Issuing Mode is Mode B: we send the owner's documents to its customer.

  3. Select the Title Transfer tab, then select Title Transfers Allowed and Just-in-Time Transfers.

    Result: Transfer Price appears, set to Vendor pricelist.

    Screenshot of Summit Specialty Pharma's owner profile, Title Transfer tab: both options selected and Transfer Price outlined.

  4. In Transfer Price, choose where the price of each automatic purchase order comes from:

    ChooseThe purchase order's unit price is
    Vendor pricelistthe owner's vendor price for the product, when the product has one; otherwise the product's Cost
    Manualthe product's Cost. Nobody types a price while a delivery is validated; correct it on the vendor bill
  5. Optionally, on the Agreement tab, enter the Service Agreement reference, for example SSP-3PL-2026-02. It is copied into the Vendor Reference of each automatic purchase order.

  6. Select the save icon.

Result: the owner is a just-in-time owner. Records: the owner profile (its chatter logs the change of Title Transfers Allowed and Just-in-Time Transfers; a change of Transfer Price is not logged). From the next reservation on, your own deliveries of a DSCSA product this owner holds in the warehouse take your own units first, then the owner's.

A consignor (Owner Type Consignor) is bought just in time by its type, without Just-in-Time Transfers: see Take in and sell consignment stock.

If it doesn't work

  • "Just-in-time transfers for OWNER need issuing mode B: we generate the owner's transaction information and statement at the transfer, so we must be authorized to issue them.": the owner is in mode A. Select Discard changes, record the owner's written authorization first, then repeat. See Error: "Just-in-time transfers for … need issuing mode B …".
  • There is no Just-in-Time Transfers checkbox you can select: you have the Rx Tracking User right, which reads owner profiles only. Ask an Rx Tracking Manager.
  • Your deliveries never take the owner's units: see The owner's units are never taken by our sales.
Known issue

Known issue (PF-W13-01): Just-in-Time Transfers saves without Title Transfers Allowed, with no message, but the owner is then not a just-in-time owner and your sales never take its units. Always select both.

Next: Ship our own sale that takes a just-in-time owner's units

Ship our own sale that takes a just-in-time owner's units​

On a one-step delivery route, your delivery is the step that takes the owner's units. You scan every unit as for any delivery; validating it buys the owner's units first, then ships everything as your own sale, all in one step.

Note

With Odoo Enterprise's Barcode app, see Scan owner stock in the Barcode app and the Known issue below.

Who: Rx Tracking User or Manager

Requires: Rx Tracking (DSCSA): 3PL and title model, with 3PL switched on.

Before you start:

  • The owner is a just-in-time owner. See Set up an owner for just-in-time buying.
  • Your sales order is confirmed, its delivery is Ready, and your own stock didn't cover it, so the delivery reserved some of the owner's units. See Confirm a sales order for DSCSA products.
  • The customer needs package-level (serialized) data. A delivery to an exempt small dispenser at lot level never takes owner units.
  1. Go to Inventory ‣ Operations ‣ Deliveries and open the delivery, for example WH/OUT/00016 (2 Prototamol for Riverside Community Pharmacy, source document S00025).

  2. To see whose units the delivery reserved, select the Moves smart button.

    Result: Detailed Operations lists one line per reserved lot and owner. A line with Held for Owner empty is your own stock; a line that names the owner takes the owner's units.

    Screenshot of the Detailed Operations list of WH/OUT/00016: one own line and one line held for Summit Specialty Pharma, outlined.

  3. Go back to the delivery and select Scan Serials.

  4. Scan the DataMatrix of each unit you ship, yours and the owner's, one per line, then select Register.

    Result: the DSCSA Packages tab lists every scanned unit In Stock, and the chatter says "N DSCSA package(s) scanned.".

  5. Select Validate.

    Result: the delivery is Done. The chatter says "Just-in-time title transfer TT/YYYY/NNNNN: N unit(s) held for OWNER bought in place (PNNNNN) before this delivery." and then "DSCSA document DSCSA/OUT/YYYY/NNNNN posted for this transfer."

    Screenshot of the done delivery WH/OUT/00016 and its chatter, with the just-in-time title transfer message outlined.

  6. To see the title transfer, go to Inventory ‣ Rx Tracking ‣ Title Transfers (in the 3PL ‣ Operations section) and open it.

    Result: the transfer is Done, with Kind Owner to us, Trigger Just in time, JIT Delivery = your delivery, and Title Purchase Order = the new purchase order, whose reference reads "Standing JIT approval, owner profile CODE (SERVICE-AGREEMENT)". Its Documents tab lists the owner's Seller-Side Document (DSCSA/CODE/OUT/YYYY/NNNNN, issued by you as its agent) and your Buyer-Side Document (DSCSA/IN/YYYY/NNNNN).

    Screenshot of the done title transfer TT/2026/00008 from Summit with Trigger Just in time outlined and JIT Delivery WH/OUT/00016.

Result: you bought the owner's units and shipped them as your own sale. Records: the delivery WH/OUT/NNNNN (Done); a title transfer TT/YYYY/NNNNN (Done, trigger Just in time) with two done transfers WH/TT/NNNNN; a purchase order PNNNNN to the owner (Purchase Order, the units Received); the in-place documents (the owner's seller side and your buyer side, with no ship date); your outbound document DSCSA/OUT/YYYY/NNNNN, whose history runs from your sale back through the owner (Sell units bought in place as our own stock); two Gate Log rows. The owner keeps its other units.

Several owners, backorders and who may validate​

  • Units of several just-in-time owners on one delivery make one title transfer and one purchase order per owner.
  • The units you scan decide what is bought. If you scan owner units instead of your own, the owner's units are bought and yours stay on the shelf (see the Known issue below).
  • If you scan fewer units than the delivery asks for, Validate offers Create Backorder?. Nothing is bought for the units left for the backorder until the backorder is validated.
  • An Inventory User without an Rx Tracking right can't scan, but can validate a delivery that a colleague has scanned; the owner's units are still bought (the owner profile is the standing approval).

What never takes an owner's units​

Only moves of your own sales orders take a just-in-time owner's units. A delivery created by hand without a sales order, a lot-level delivery to an exempt small dispenser (such as Hillcrest Family Pharmacy), an owner's own order, and products that no just-in-time owner holds in that warehouse work exactly as without 3PL: when your own stock is short, the delivery waits (Waiting).

If it doesn't work

Known issue

Known issue (PF-W21-05, PF-W21-04, PF-A08-08): the delivery reserves your own units first, but Scan Serials accepts the owner's units in their place and nothing warns you: scanning two owner units buys both even when your own unit of the same lot is reserved. Check the Moves list before you scan. The move's details window (the list icon on the Operations tab) shows the owner's line like your own; only the Moves list shows Held for Owner. In Odoo Enterprise's Barcode app, just-in-time deliveries are untested and the lot pre-fill offers your own stock only; scan the owner's units in the backend Scan Serials window.

Next: Review and bill the automatic just-in-time purchase orders

Pick, pack and ship when a just-in-time owner holds the product​

On a route with two or three steps for deliveries, the pick is the step that takes units from stock, so the pick is where the owner's units are taken and bought. Pack and ship then move only your own units.

Note

Once an owner we buy from just in time holds units of a product in our warehouse, our own sales of that product may take its units after ours. The step that takes any of them (the pick on pick/pack/ship routes) needs their serials scanned, and then every unit it moves; steps that take only our own units work as before.

Who: Rx Tracking User or Manager

Requires: Rx Tracking (DSCSA): 3PL and title model, with 3PL switched on.

Before you start:

  • The owner is a just-in-time owner. See Set up an owner for just-in-time buying.
  • The warehouse ships in several steps (Outgoing Shipments in 2 or 3 steps, as the Albany Annex does), and the pick of your sales order is Ready.
  • The units' DataMatrix labels, for every unit the pick moves.
  1. Go to Inventory ‣ Overview and, on the Pick card of the warehouse (for example Albany Annex), select To Process. Open the pick, for example WH2/PICK/00001 (source document S00026).

  2. Select the Moves smart button to see the lines: a line with Held for Owner filled takes the owner's units.

  3. If any line takes the owner's units, the pick needs a scan of every unit it moves. Go back to the pick and select Scan Serials, scan every unit (yours and the owner's), then select Register.

  4. Select Validate.

    Result: the pick is Done. The chatter says "Just-in-time title transfer TT/YYYY/NNNNN: N unit(s) held for OWNER bought in place (PNNNNN) before this delivery." The Next Transfer smart button opens the next step.

  5. Open the pack step (for example WH2/PACK/NNNNN) and select Validate.

    Result: the pack is Done; it needs no scan.

  6. Open the shipment (for example WH2/OUT/NNNNN) and select Validate. The units scanned at the pick are already on its DSCSA Packages tab.

    Result: the shipment is Done, and the chatter says "DSCSA document DSCSA/OUT/YYYY/NNNNN posted for this transfer."

Result: the owner's units were bought at the pick and shipped as your own. Records: the pick, pack and shipment (Done); the title transfer (Done, trigger Just in time, JIT Delivery = the pick, Transferred On = the pick's validation); the purchase order to the owner; the in-place documents; your outbound document posted by the shipment.

When the pick takes only your own units, it validates without scans, as without 3PL, and you scan the serials on the shipment (Scan the serials of a delivery and validate it).

If it doesn't work

  • "DSCSA owner isolation (3PL):" with a line per lot and owner, for example "… (WH2/PICK/00001), lot BPPTM2508B: 0 package(s) held for Summit Specialty Pharma Inc. scanned but 1.0 of its unit(s) picked.": the pick takes owner units and some units are not scanned, yours included. Scan every unit the pick moves (step 3). See Error: "… package(s) held for … scanned but … of its unit(s) picked.".

    Screenshot of the Invalid Operation window of pick WH2/PICK/00001: nothing scanned for our own stock and for Summit Specialty Pharma.

  • Create Backorder? after you scanned only some units: the scanned units set the quantity. Select Discard and scan the rest, or create a backorder for them.

  • The other refusals of 3PL-JIT-02 apply to the pick as well.

Known issue

Known issue (PF-W21-01): in the pick's refusal, the picked quantity is printed with a decimal ("1.0 of its unit(s) picked") while the scanned count is a whole number. Read "1.0" as one unit.

Next: Review and bill the automatic just-in-time purchase orders

Review and bill the automatic just-in-time purchase orders​

Every just-in-time purchase creates a confirmed purchase order to the owner, received in full. Review it, then bill it as any purchase when the owner's invoice arrives.

Who: Purchase User (any level) to review the order and create the draft bill; no Rx Tracking right is needed. Confirming the bill needs an Invoicing right (Invoicing Invoicing or Administrator). The title transfer behind an order is visible only with Rx Tracking User or Manager.

Requires: Rx Tracking (DSCSA): 3PL and title model, with 3PL switched on, and the Purchase app.

Before you start:

  1. Go to Purchase ‣ Orders ‣ Purchase Orders.

    Result: the just-in-time orders show the owner as Vendor, the user who validated the delivery as Buyer, the title transfer TT/YYYY/NNNNN as Source Document, and Billing Status Waiting Bills. The order's status, Purchase Order, shows on its form (step 2).

  2. Open the order, for example P00015.

    Result: Vendor Reference reads "Standing JIT approval, owner profile CODE (SERVICE-AGREEMENT)", Title Transfer in Place is selected, and each product line shows Received = the units bought and Unit Price from the owner profile's Transfer Price (for example 9.10, Summit's vendor price for Prototamol).

    Screenshot of purchase order P00015 to Summit Specialty Pharma with its Vendor Reference outlined and 1 Prototamol received at 9.10.

  3. When the owner's invoice arrives, select Create Bill.

    Result: a draft vendor bill opens with the received quantity at the order's unit price. Change the price there if the owner's invoice differs. A Purchase user without an Invoicing right sees no Confirm button on the bill: a user with Invoicing Invoicing or Administrator (an accountant) selects Confirm.

Result: the purchase is billed. Records: the purchase order PNNNNN (Billing Status changes as usual) and the vendor bill.

With Purchase's two-step order approval, just-in-time orders are approved anyway: the owner profile set by an Rx Tracking Manager is the standing approval, even when an Inventory user validates the delivery.

To list the just-in-time title transfers themselves, go to Inventory ‣ Rx Tracking ‣ Title Transfers (in the 3PL ‣ Operations section), open the search options, and under Group By select Add Custom Group ‣ Trigger.

If it doesn't work

  • The price is not the owner's price: the product has no vendor price for the owner, or the profile's Transfer Price is Manual (3PL-JIT-01 step 4). Correct the price on the vendor bill.
  • The order has no Receipt or Title Transfers smart button: you have no Rx Tracking right. That doesn't stop the bill.
Known issue

Known issue (PF-A08-06): the title transfer list has no Trigger filter; group by Trigger as above.

Known issue (PF-A08-02): a consignor's profile doesn't show Transfer Price: its orders always use Vendor pricelist.