Skip to main content

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​

CheckFormList actionImportAPIPortal, paymentWhere it is documented
Sale confirmation: the customer and the delivery address are authorized trading partnersConfirmyesAccept & 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 authorizedConfirm Order, Approve OrderConfirm RFQyesConfirm 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 unitValidateValidateyesScan 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 transferValidateValidateyesyesError: "DSCSA packages don't match the quantities …"
Reservation: quarantined lots and units waiting in Returns to Verify are never reservedautomaticQuarantine a lot
Quarantined lots can't go to a customer, a supplier, a transit location or another companyValidateValidateyesError: "These lots are quarantined …"
Scrap and counts of DSCSA products need the serials of the units concerned; Revert Inventory Adjustment is refused for themValidate, ApplyApply AllyesyesScrap 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 frozenread only for othersyesyesSet up a DSCSA product, Onboard a trading partner
Rights on every DSCSA action ("Only DSCSA users …", "Only a DSCSA manager …")button hiddenyesyesyesRoles and permissions
The package ledger: packages change only through scans, receipts, deliveries, returns, scraps, counts and quarantineread onlyrefusedrefusedLook 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 documentread onlyrefusedrefusedRecords that are kept
Trace requests: the log is written only by Search, Respond and Cancel RequestbuttonsrefusedrefusedSearch 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 recordrefusedrefusedError: "These files are DSCSA records that must be kept …"
Lots named in a posted document can't be renamedrefusedrefusedrefusedCorrect 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:

PathWhat happensMessage, 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 dataSell 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 productrefused"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 locationsrefused"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 productthe order is paid, but its delivery stays openan 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 companyrefused"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 locationnot handled: no trading-partner check, no serial count, no document; the packages stay In Stock in the sending companyship 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 routeallowed, no serial count on the internal steps; the serials are counted on the step that leaves or enters your stockReceive through a two- or three-step route
A delivery that is Donehistory: its lines, quantities, lots and locations can't changeto 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

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.