@cfxlabsinc/b2b-services
    Preparing search index...
    AdminProductQuote: Omit<
        SelectProductQuote,
        "id"
        | "customerId"
        | "identityId"
        | "organizationId"
        | "productId",
    > & {
        customerId: string;
        customerName: string;
        id: string;
        identityId: string | null;
        organizationId: string | null;
        productId: ProductName;
        productName: string;
        routeId: string;
        routeName: string;
        vendorId: Vendor;
    }

    product_quote row projected for admin consumers. Internal numeric ids are dropped in favour of the joined external ids. The route's external_id is exposed as routeId (joined through product_route_version → product_route) — the audit row pins to the version row, but admins reference routes by their identity-row external_id. productId comes from the joined product.external_id since the row's productId column is an internal FK. The four *VersionId columns stay numeric — they're internal version-row PKs that the admin dashboard renders as deep links into the version-history table; admin-only surface, not part of any public API.

    Type Declaration

    • customerId: string
    • customerName: string
    • id: string
    • identityId: string | null
    • organizationId: string | null
    • productId: ProductName
    • productName: string

      Human display name from product.name (NOT NULL) — the quote's product.

    • routeId: string
    • routeName: string

      Composed route display name: ${product.name} · ${product_vendor.name} for the quote's route (route product == quote product).

    • vendorId: Vendor