PhoenixKitWarehouse (PhoenixKitWarehouse v0.3.0)

Copy Markdown View Source

PhoenixKit module: multi-warehouse stock scope, stocktakes, transfers with cancel reverse-posting, deficit control with min-stock settings, turnover report, internal orders, supplier orders, goods receipts, and goods issues.

All four sibling packages are hard dependencies in mix.exs — none is declared optional:, so all four are always compiled in:

  • phoenix_kit_catalogue — warehouse only ever tracks catalogue items.
  • phoenix_kit_locations — every document carries a location_uuid resolved through it.
  • phoenix_kit_billing — currency formatting for unit values, via a compile-time import of CurrencyDisplay.currency_compact/1.
  • phoenix_kit_comments — six form LiveViews use PhoenixKitComments.Embed. A use is macro expansion at compile time, so this one can be neither guarded nor made optional; that is why mix.exs floors it at 0.2.8 rather than 0.2.

A hard package dependency is not the same thing as a required module. required_modules/0 lists only "catalogue" and "locations" — the two whose PhoenixKit modules a host must actually have enabled. Billing is never enablement-checked at all (its component is imported, not called conditionally), and comments is checked at runtime but not required: PhoenixKitWarehouse.Comments.available?/0 gates every comments call on PhoenixKitComments.enabled?/0, and all six form LiveViews assign comments_available? from it, so a host that has the comments module installed but switched off simply renders no threads.

Documents link to host-owned records (a sub-order, a top-level order, or anything else a consuming app wants to link) through the generic PhoenixKitWarehouse.SourceKinds registry rather than a direct dependency on any specific "order" concept — see that module's docs.