What is checked where
Core module For: Administrator Checked on 18.0.0.2.0
Where each Rx Tracking check runs, which ways of doing the same action it covers, and which stock paths it refuses or leaves alone. For administrators planning processes and for testers; the procedures and their messages are on the pages linked from each row.
How the checks work
- On the server, for every route. A check runs where the record changes, not only on the button. A form, a list action on several records, an import, an API call, the customer portal and an online payment all meet the same check and the same message.
- For everyone. No setting, role or user skips a check; the administrator is refused like anyone else. The checks that write records (the package ledger, documents) run with system rights, so they work for users without any Rx Tracking right too.
- All or nothing. A refused action writes nothing; an import with one refused row imports nothing; a list action on several records refuses all of them and lists each one's reason.
- DSCSA products only. A check looks only at products whose DSCSA Product box is ticked. Its message names only those products, and an order or transfer without them goes through exactly as in standard Odoo.
Background: the modules' design rule is server-side enforcement that never touches other products.
Every check and the routes it covers
| Check | Form | List action | Import | API | Portal, payment | Where it is documented |
|---|---|---|---|---|---|---|
| Sale confirmation: the customer and the delivery address are authorized trading partners | Confirm | yes | Accept & Sign; online payment of a quotation (refused before any payment) | Confirm a sales order for DSCSA products, Let a customer accept or pay an order online | ||
| Purchase confirmation and approval: the vendor is authorized | Confirm Order, Approve Order | Confirm RFQ | yes | Confirm a purchase of DSCSA product from an authorized supplier | ||
| Transfer validation: the trading partners of receipts, deliveries and returns (and of their sale or purchase order) are authorized, then one scanned serial per unit | Validate | Validate | yes | Scan the serials of a delivery and validate it, Validate a DSCSA receipt | ||
| Done operations: package states and lot counts are checked again; returns must match your own sale to that customer; no line is added to or changed on a done transfer | Validate | Validate | yes | yes | Error: "DSCSA packages don't match the quantities …" | |
| Reservation: quarantined lots and units waiting in Returns to Verify are never reserved | automatic | Quarantine a lot | ||||
| Quarantined lots can't go to a customer, a supplier, a transit location or another company | Validate | Validate | yes | Error: "These lots are quarantined …" | ||
| Scrap and counts of DSCSA products need the serials of the units concerned; Revert Inventory Adjustment is refused for them | Validate, Apply | Apply All | yes | yes | Scrap DSCSA units, Count stock | |
| Master data: only managers tick or clear DSCSA Product, and never clear it once the product is in the DSCSA record; only Rx Tracking users set a partner's DSCSA Role and Small Business Dispenser; a verified license's facts are frozen | read only for others | yes | yes | Set up a DSCSA product, Onboard a trading partner | ||
| Rights on every DSCSA action ("Only DSCSA users …", "Only a DSCSA manager …") | button hidden | yes | yes | yes | Roles and permissions | |
| The package ledger: packages change only through scans, receipts, deliveries, returns, scraps, counts and quarantine | read only | refused | refused | Look up a unit in the package ledger | ||
| Posted documents refuse every change except chatter, the portal link, legal hold and archive references; nobody deletes a document | read only | refused | refused | Records that are kept | ||
| Trace requests: the log is written only by Search, Respond and Cancel Request | buttons | refused | refused | Search the records a trace request asks for | ||
| Stored files: document files, retention exports and license evidence can't be deleted, renamed or moved to another record | refused | refused | Error: "These files are DSCSA records that must be kept …" | |||
| Lots named in a posted document can't be renamed | refused | refused | refused | Correct a lot's number or expiry after documents were posted |
A blank cell means the route doesn't exist for that action (Odoo offers no list action or import for it).
Which outbound paths are refused or skipped
Besides the checks above, Rx Tracking watches every stock move of a DSCSA product. The paths below are the ones that don't go through a receipt, a delivery or a return, and what happens to each:
| Path | What happens | Message, or what to do |
|---|---|---|
| Dropship (the vendor ships straight to your customer) | allowed: the customer is checked when the sales order is confirmed, the vendor when the purchase order is confirmed, and both again when the dropship is validated; there is no serial count and no outbound document, because the vendor that ships sends the transaction data | Sell DSCSA product by dropship |
| A move to or from a customer or a supplier without a transfer (a script or an integration) | refused | "PRODUCTS: DSCSA products are received from or shipped to a trading partner only on a transfer (receipt, delivery or return), where the trading partner and the serials are checked." |
| Manufacturing, repair and kits that consume or produce a DSCSA product | refused | "DSCSA products can't be consumed or produced here (MOVES): the package ledger can't record which serialized units are used. …" Scrap units instead: Scrap DSCSA units |
| Relocate: changing a lot's Location to a place outside the company's internal locations | refused | "DSCSA stock (PRODUCTS) can only be relocated to an internal location of its company, not to LOCATION. Use a transfer, a scrap or an inventory count." |
| Point of Sale order of a DSCSA product | the order is paid, but its delivery stays open | an Rx Tracking user scans the serials and validates the delivery in Inventory (Scan the serials of a delivery and validate it) |
| A quarantined lot sent to a transit location or another company | refused | "These lots are quarantined and can't be shipped or sent to transit or another company until a DSCSA manager releases them: …" |
| A delivery to another of your companies through Odoo's inter-company transit location | not handled: no trading-partner check, no serial count, no document; the packages stay In Stock in the sending company | ship it as a sale to a trading partner: Move DSCSA stock between two of our companies (Known issue PF-W04-01) |
| An internal transfer between your own locations, a two- or three-step receipt or delivery route | allowed, no serial count on the internal steps; the serials are counted on the step that leaves or enters your stock | Receive through a two- or three-step route |
| A delivery that is Done | history: its lines, quantities, lots and locations can't change | to take units back, receive a customer return |
Point of Sale, Manufacturing and Repair are not installed with Rx Tracking; the rows apply if you install them. The shared message entries are on Error: "DSCSA products can't be consumed or produced here ...".
Known issue (PF-W04-01): when a database has several companies, Odoo sends sales to your other companies through the inter-company transit location, which Rx Tracking doesn't handle. Follow Move DSCSA stock between two of our companies.