2025-12-11 to 2026-01-06

December 11, 2025 - January 6, 2026

· Last Updated January 6, 2026

Breaking Changes

Bucket Functionality Removed

  • PR: #2504 | ClickUp: 868gtp6td

  • Completely removed the bucket functionality from the application

  • Deleted all bucket-related models, controllers, views, tests, and database migrations

  • Any workflows depending on buckets will need to be updated


New Features

B2B Company Payment Bypass

  • PR: #2456 | ClickUp: 868gum9k3

  • Orders with B2B company payors no longer require a payment method

  • Automatic invoice generation when B2B orders move past PendingPayment

  • Email invoices sent automatically for companies with SEND_EVERY_INVOICE statement type

  • Invoice template updated to only show prescription order items (excludes shipping services)

NetSuite Integration Enhancements

Company Sync to NetSuite

  • PR: #2497 | ClickUp: 868gcb1xv

  • Companies can now be synced to NetSuite as customers

  • Introduced NetSuiteCustomer contract and SyncsCustomerWithNetSuite trait

  • Unified sync mechanism for both Patients and Companies

  • Added manual sync button in Company UI

  • New NetSuite fields added to Company model

Formula Assembly Item Sync

  • PR: #2410 | ClickUp: 868grv9jb

  • Formulas now automatically sync as Assembly Items to NetSuite when first formula log is finalized

  • SyncNetSuiteAssembly event dispatched on formula log finalization

Chemical Item ID Naming

  • PR: #2441 | ClickUp: 868guc18p

  • New naming convention for chemicals in NetSuite:

    • Primary NDC → use NDC directly

    • Multiple NDCs with primary set → use primary NDC

    • Multiple NDCs without primary → use first NDC

    • No NDC but has UPC → prefix with UPC-

    • No NDC/UPC but has OTHER identifier → prefix with OTHER-

    • No identifiers → fallback to Chemical-<internal-key>

Order Locking for Fill Views

  • PR: #2466, #2514 | ClickUp: 868gv37md

  • Added lock status indicators to PV verification, dispensing, shipping, and pickup pages

  • Action buttons disabled/hidden when order is locked by another user

  • New OrderIsLocked middleware for fill routes

  • New fill sub-layout component for consistent lock status display

Pricing Engine Refactor

  • PR: #2219 | ClickUp: 868fyeb36

  • Introduced PricingContext DTO to replace loose arrays

  • Enhanced rule and discount matching logic

  • Comprehensive unit tests for rule resolution, inheritance, discount stacking, and min price enforcement

  • PR: #2535 | ClickUp: 868gw2mr3

  • Fixed pricing discount caching issue in applies-to dropdown

Pharmacist Consultation Tab Enhancements

  • PR: #2473 | ClickUp: 868gubrzw

  • Added alert message to consultation page

  • Added bill_to contact details

  • Added PrescriptionItem list with order items and fills

  • "New Rx/Refill" badge now visible in all modes

Chemical Identifier Requirements

  • PR: #2444, #2539 | ClickUp: 868gujkyd

  • At least one identifier now required when creating a chemical

  • Only one primary identifier allowed per chemical

Inventory Validation for Expired/Zero Stock

  • PR: #2491 | ClickUp: 868fmctt8

  • Prevents using expired or zero-stock inventory for:

    • Chemical, device, or formula lot inventories during compounding

    • Formula lots during fill dispensing

  • Two-level validation: UI error on scan + backend validation

  • Inventory adjustment dialog now reopens on validation errors


Improvements

RBAC & Permissions

Pharmacy Settings Reorganization

  • PR: #2460 | ClickUp: 868gugbjh

  • NetSuite fields relocated to Integrations section

  • Integrations organized by service categories

  • Added "NetSuite Enabled" field

Preset Queues Consolidation

  • PR: #2505 | ClickUp: 868gwcde0, 868gwcc0j, 868gwcc5g, 868gwcckz

  • All preset queue functionality consolidated under Pharmacy Settings

  • Removed duplicate controllers and routes

  • Pre-seeded queues no longer show delete option

Number Formatting Standardization

  • PR: #2127 | ClickUp: 868gech0v

  • Created FormatsTotalInStock trait

  • New numberFormatter PHP helper matching frontend utility

  • Standardized number display across table columns and UIs

Activity Log Improvements

  • PR: #2490 | ClickUp: 868gtxycn

  • Fixed activity tracking for bulk updates

  • Date fields now properly formatted

  • Improved field display labels

Vendor Feature Flags

  • PR: #2482 | ClickUp: 868gpyjrq

  • Added feature flags for vendor edit, delete, and restore operations

  • UI actions hidden when features are disabled

Shipping Service Improvements

  • PR: #2489 | ClickUp: 868gwdvhh

  • Preset shipping services now fetched from ShipEngine API

  • Resolves carrier ID mismatch issues

Rx Origin Options Cleanup

  • PR: #2488 | ClickUp: 868ghtq9b

  • Removed Surescripts and Prescriber Portal options

  • E-Fax orders now auto-select E-Fax as Rx Origin (read-only)

Formula Rx Last Date Used

  • PR: #2282 | ClickUp: 868ftfdj3

  • "Rx Last date used" now properly populated from latest fill timestamp

Company Resource Address Structure

  • PR: #2503 | ClickUp: 868gwmjqn

  • Simplified company address to singular address key

  • Optimized eager loading


Bug Fixes

Order Management

PR

Description

ClickUp

#2400, #2522

Fixed unlinking Order Groups removing all linked orders

868gr81vf

#2411

Fixed linked orders scope always classified as shipping

868gr811c

#2532

Made cancellation reason field required

868gvjbzv

#2487

Disabled payment page in view mode

868gwb88r

#2510

Fixed patient search by complete DOB

868gw2r9c

Prescription & Medication

PR

Description

ClickUp

#2464

Prevented duplicate prescriptions with same medication

868gubp9b

#2500

Fixed prescription image upload display

868gvjebu

#2493

Auto-populate quantity owed in dispensing

868grcnum

#2511

Fixed HTML tags showing in medication instructions

868gw2pmk

Patient & Clinical Info

PR

Description

ClickUp

#2465

Fixed clinical info page crash on patient removal

868gum310

#2478

Added activate/deactivate for patient allergies and medications

868g8p27x

#2481

Fixed null middle name display in payment tab

868gvjen9

Verification & Dispensing

PR

Description

ClickUp

#2467

Fixed pharmacist checks

868gtp4pj

#2484

Fixed hidden checklist items still being validated

868gw37nn

#2524

Added type field to checklist items form

868gwcduw

Inventory & Compounding

PR

Description

ClickUp

#2429

Fixed newly created storage location not appearing until refresh

868gncx8j, 868gncxmr

UI & Search Issues

PR

Description

ClickUp

#2479

Fixed advanced search badge glitch on clear all

868gvjd4b

#2480

Fixed missing package size in medication search results

868gvjdd7

#2512

Fixed false "unsaved changes" warnings

868ghrabb

#2477

Made activation labels consistent across interfaces

868gvjeyy

#2508

Fixed Order/Fill ID label inconsistency in queues

868gw2rfw

Table Sorting Issues

PR

Description

ClickUp

#2531

Fixed PV2 memo column sorting

868gvzgvm

#2501

Fixed sig codes language column sorting

868gw2t78

#2496

Fixed shipping methods price column sorting

868gw2tw9

#2518

Fixed permissions page sorting

868gwq8hu

Form Validation

PR

Description

ClickUp

#2499

Fixed shipping methods form validation display

868gw2tcr

#2502

Fixed sig code duplicate validation error

868gw2t0w

#2506

Fixed sig code import validation for empty files

868gw2ry0

Pharmacy & Prescriber

PR

Description

ClickUp

#2486

Fixed carrier name search in pharmacy settings

868ghw3m6

#2517

Fixed empty user count in pharmacies table

868gwq90y

#2509

Fixed company fields editable in view mode on prescriber form

868gw2qt4

#2516

Fixed "Prescriber Portal" label inconsistency

868gw2thw

Transactions

PR

Description

ClickUp

#2494

Removed pharmacy search from transactions (was causing errors)

868gvjdtu, 868gvjdmy

#2530

Added user-friendly labels for transaction status

868gw2rqh

Other Fixes

PR

Description

ClickUp

#2536

Fixed userback initialization error

-

#2537

Fixed pricing engine data resolution

-

#2547, #2549

Fixed table header spacing

-