Quote Management Data & Events
The Quote Management drop-in uses the event bus to emit and listen to events for communication between drop-ins and external integrations.
Events reference
Section titled “Events reference”| Event | Direction | Description |
|---|---|---|
| quote-management/file-upload-error | Emits | Emitted when a specific condition or state change occurs. |
| quote-management/line-item-note-set | Emits | Emitted when a specific condition or state change occurs. |
| quote-management/negotiable-quote-delete-error | Emits | Emitted when a specific condition or state change occurs. |
| quote-management/negotiable-quote-deleted | Emits | Emitted when a specific condition or state change occurs. |
| quote-management/negotiable-quote-requested | Emits | Emitted when a specific condition or state change occurs. |
| quote-management/quote-data/error | Emits | Emitted when an error occurs. |
| quote-management/quote-data/initialized | Emits | Emitted when the component completes initialization. |
| quote-management/quote-template-data/error | Emits | Emitted when an error occurs. |
| quote-management/quote-template-deleted | Emits | Emitted when a specific condition or state change occurs. |
| quote-management/quote-template-generated | Emits | Emitted when a specific condition or state change occurs. |
| quote-management/quote-templates-data | Emits | Emitted when a specific condition or state change occurs. |
| auth/permissions | Listens | Fired by Auth (auth) when permissions are updated. |
| checkout/updated | Listens | Fired by Checkout (checkout) when the component state is updated. |
| quote-management/initialized | Emits and listens | Emitted when the component completes initialization. |
| quote-management/negotiable-quote-close-error | Emits and listens | Emitted and consumed for internal and external communication. |
| quote-management/negotiable-quote-closed | Emits and listens | Emitted and consumed for internal and external communication. |
| quote-management/permissions | Emits and listens | Emitted when permissions are updated. |
| quote-management/quantities-updated | Emits and listens | Emitted and consumed for internal and external communication. |
| quote-management/quote-data | Emits and listens | Emitted and consumed for internal and external communication. |
| quote-management/quote-duplicated | Emits and listens | Emitted and consumed for internal and external communication. |
| quote-management/quote-items-removed | Emits and listens | Emitted and consumed for internal and external communication. |
| quote-management/quote-renamed | Emits and listens | Emitted and consumed for internal and external communication. |
| quote-management/quote-sent-for-review | Emits and listens | Emitted and consumed for internal and external communication. |
| quote-management/quote-template-data | Emits and listens | Emitted and consumed for internal and external communication. |
| quote-management/shipping-address-set | Emits and listens | Emitted and consumed for internal and external communication. |
Event details
Section titled “Event details”The following sections provide detailed information about each event, including its direction, event payload, and usage examples.
auth/permissions (listens)
Section titled “auth/permissions (listens)”Fired by Auth (auth) when Adobe Commerce permissions are updated.
Event payload
Section titled “Event payload”AuthPermissionsPayloadExample
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('auth/permissions', (payload) => { console.log('auth/permissions event received:', payload); // Add your custom logic here});checkout/updated (listens)
Section titled “checkout/updated (listens)”Fired by Checkout (checkout) when the component state is updated. Quote Management uses it to reload quote data when the checkout type is quote.
Event payload
Section titled “Event payload”Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('checkout/updated', (payload) => { console.log('checkout/updated event received:', payload); // Add your custom logic here});quote-management/file-upload-error (emits)
Section titled “quote-management/file-upload-error (emits)”Emitted when uploadFile() fails to upload or finalize a file attachment.
Event payload
Section titled “Event payload”{ error: string; fileName?: string;}Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/file-upload-error', (payload) => { console.log('quote-management/file-upload-error event received:', payload); // Add your custom logic here});quote-management/initialized (emits and listens)
Section titled “quote-management/initialized (emits and listens)”Emitted when the Quote Management initializer finishes loading store configuration.
Event payload
Section titled “Event payload”{ config: StoreConfigModel;}See StoreConfigModel for full type definition.
Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/initialized', (payload) => { console.log('quote-management/initialized event received:', payload); // Add your custom logic here});quote-management/line-item-note-set (emits)
Section titled “quote-management/line-item-note-set (emits)”Emitted after setLineItemNote() updates a line item note for a negotiable quote.
Event payload
Section titled “Event payload”{ quote: NegotiableQuoteModel; input: { quoteUid: string; itemUid: string; note: string; quantity?: number;}}See NegotiableQuoteModel for full type definition.
Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/line-item-note-set', (payload) => { console.log('quote-management/line-item-note-set event received:', payload); // Add your custom logic here});quote-management/negotiable-quote-close-error (emits and listens)
Section titled “quote-management/negotiable-quote-close-error (emits and listens)”Emitted when closeNegotiableQuote() fails to close one or more negotiable quotes.
Event payload
Section titled “Event payload”{ error: Error; attemptedQuoteUids: string[];}Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/negotiable-quote-close-error', (payload) => { console.log('quote-management/negotiable-quote-close-error event received:', payload); // Add your custom logic here});quote-management/negotiable-quote-closed (emits and listens)
Section titled “quote-management/negotiable-quote-closed (emits and listens)”Emitted after closeNegotiableQuote() closes one or more negotiable quotes.
Event payload
Section titled “Event payload”{ closedQuoteUids: string[]; resultStatus: string;}Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/negotiable-quote-closed', (payload) => { console.log('quote-management/negotiable-quote-closed event received:', payload); // Add your custom logic here});quote-management/negotiable-quote-delete-error (emits)
Section titled “quote-management/negotiable-quote-delete-error (emits)”Emitted when deleteQuote() fails to delete one or more negotiable quotes.
Event payload
Section titled “Event payload”{ error: Error; attemptedQuoteUids: string[];}Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/negotiable-quote-delete-error', (payload) => { console.log('quote-management/negotiable-quote-delete-error event received:', payload); // Add your custom logic here});quote-management/negotiable-quote-deleted (emits)
Section titled “quote-management/negotiable-quote-deleted (emits)”Emitted after deleteQuote() deletes one or more negotiable quotes.
Event payload
Section titled “Event payload”{ deletedQuoteUids: string[]; resultStatus: string;}Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/negotiable-quote-deleted', (payload) => { console.log('quote-management/negotiable-quote-deleted event received:', payload); // Add your custom logic here});quote-management/negotiable-quote-requested (emits)
Section titled “quote-management/negotiable-quote-requested (emits)”Emitted after requestNegotiableQuote() creates a negotiable quote from a cart.
Event payload
Section titled “Event payload”{ quote: NegotiableQuoteModel | null; input: { cartId: string; quoteName: string; comment?: string; attachments?: { key: string }[]; isDraft?: boolean;}}See NegotiableQuoteModel for full type definition.
Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/negotiable-quote-requested', (payload) => { console.log('quote-management/negotiable-quote-requested event received:', payload); // Add your custom logic here});quote-management/permissions (emits and listens)
Section titled “quote-management/permissions (emits and listens)”Emitted when the permissions state for Quote Management changes (for example, after auth/permissions is processed or on logout).
Event payload
Section titled “Event payload”typeof state.permissionsExample
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/permissions', (payload) => { console.log('quote-management/permissions event received:', payload); // Add your custom logic here});quote-management/quantities-updated (emits and listens)
Section titled “quote-management/quantities-updated (emits and listens)”Emitted after updateQuantities() updates item quantities in a negotiable quote.
Event payload
Section titled “Event payload”{ quote: NegotiableQuoteModel; input: { quoteUid: string; items: Array<{ quoteItemUid: string; quantity: number }>;}}See NegotiableQuoteModel for full type definition.
Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/quantities-updated', (payload) => { console.log('quote-management/quantities-updated event received:', payload); // Add your custom logic here});quote-management/quote-data (emits and listens)
Section titled “quote-management/quote-data (emits and listens)”Emitted when negotiable quote data is loaded or updated.
Event payload
Section titled “Event payload”{ quote: NegotiableQuoteModel; permissions: typeof state.permissions;}See NegotiableQuoteModel for full type definition.
Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/quote-data', (payload) => { console.log('quote-management/quote-data event received:', payload); // Add your custom logic here});quote-management/quote-data/error (emits)
Section titled “quote-management/quote-data/error (emits)”Emitted when Quote Management fails to load negotiable quote data during initialization.
Event payload
Section titled “Event payload”{ error: Error;}Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/quote-data/error', (payload) => { console.log('quote-management/quote-data/error event received:', payload); // Add your custom logic here});quote-management/quote-data/initialized (emits)
Section titled “quote-management/quote-data/initialized (emits)”Emitted the first time Quote Management successfully loads negotiable quote data during initialization.
Event payload
Section titled “Event payload”{ quote: NegotiableQuoteModel; permissions: typeof state.permissions;}See NegotiableQuoteModel for full type definition.
Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/quote-data/initialized', (payload) => { console.log('quote-management/quote-data/initialized event received:', payload); // Add your custom logic here});quote-management/quote-duplicated (emits and listens)
Section titled “quote-management/quote-duplicated (emits and listens)”Emitted after duplicateQuote() creates a copy of a negotiable quote.
Event payload
Section titled “Event payload”{ quote: NegotiableQuoteModel; input: { quoteUid: string; duplicatedQuoteUid: string;} hasOutOfStockItems?: boolean;}See NegotiableQuoteModel for full type definition.
Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/quote-duplicated', (payload) => { console.log('quote-management/quote-duplicated event received:', payload); // Add your custom logic here});quote-management/quote-items-removed (emits and listens)
Section titled “quote-management/quote-items-removed (emits and listens)”Emitted after removeNegotiableQuoteItems() removes one or more items from a negotiable quote.
Event payload
Section titled “Event payload”{ quote: NegotiableQuoteModel; removedItemUids: string[]; input: RemoveNegotiableQuoteItemsInput;}See NegotiableQuoteModel for full type definition.
Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/quote-items-removed', (payload) => { console.log('quote-management/quote-items-removed event received:', payload); // Add your custom logic here});quote-management/quote-renamed (emits and listens)
Section titled “quote-management/quote-renamed (emits and listens)”Emitted after renameNegotiableQuote() updates the name (and optional comment) of a negotiable quote.
Event payload
Section titled “Event payload”{ quote: NegotiableQuoteModel; input: { quoteUid: string; quoteName: string; quoteComment?: string;}}See NegotiableQuoteModel for full type definition.
Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/quote-renamed', (payload) => { console.log('quote-management/quote-renamed event received:', payload); // Add your custom logic here});quote-management/quote-sent-for-review (emits and listens)
Section titled “quote-management/quote-sent-for-review (emits and listens)”Emitted after sendForReview() submits a negotiable quote for merchant review.
Event payload
Section titled “Event payload”{ quote: NegotiableQuoteModel; input: { quoteUid: string; comment?: string; attachments?: { key: string }[];}}See NegotiableQuoteModel for full type definition.
Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/quote-sent-for-review', (payload) => { console.log('quote-management/quote-sent-for-review event received:', payload); // Add your custom logic here});quote-management/quote-template-data (emits and listens)
Section titled “quote-management/quote-template-data (emits and listens)”Emitted when quote template data is loaded or updated.
Event payload
Section titled “Event payload”{ quoteTemplate: NegotiableQuoteTemplateModel; permissions: typeof state.permissions;}See NegotiableQuoteTemplateModel for full type definition.
Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/quote-template-data', (payload) => { console.log('quote-management/quote-template-data event received:', payload); // Add your custom logic here});quote-management/quote-template-data/error (emits)
Section titled “quote-management/quote-template-data/error (emits)”Emitted when Quote Management fails to load quote template data during initialization.
Event payload
Section titled “Event payload”{ error: Error;}Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/quote-template-data/error', (payload) => { console.log('quote-management/quote-template-data/error event received:', payload); // Add your custom logic here});quote-management/quote-template-deleted (emits)
Section titled “quote-management/quote-template-deleted (emits)”Emitted after deleteQuoteTemplate() deletes a quote template.
Event payload
Section titled “Event payload”{ templateId: string;}Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/quote-template-deleted', (payload) => { console.log('quote-management/quote-template-deleted event received:', payload); // Add your custom logic here});quote-management/quote-template-generated (emits)
Section titled “quote-management/quote-template-generated (emits)”Emitted after generateQuoteFromTemplate() creates a new negotiable quote from a template.
Event payload
Section titled “Event payload”{ quoteId: string;}Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/quote-template-generated', (payload) => { console.log('quote-management/quote-template-generated event received:', payload); // Add your custom logic here});quote-management/quote-templates-data (emits)
Section titled “quote-management/quote-templates-data (emits)”Emitted after getQuoteTemplates() loads the quote templates list.
Event payload
Section titled “Event payload”{ quoteTemplates: NegotiableQuoteTemplatesListModel; permissions: typeof state.permissions;}See NegotiableQuoteTemplatesListModel for full type definition.
Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/quote-templates-data', (payload) => { console.log('quote-management/quote-templates-data event received:', payload); // Add your custom logic here});quote-management/shipping-address-set (emits and listens)
Section titled “quote-management/shipping-address-set (emits and listens)”Emitted after setShippingAddress() updates the shipping address for a negotiable quote.
Event payload
Section titled “Event payload”{ quote: NegotiableQuoteModel; input: { quoteUid: string; addressId?: number; addressData?: AddressInput;}}See NegotiableQuoteModel for full type definition.
Example
Section titled “Example”import { events } from '@dropins/tools/event-bus.js';
events.on('quote-management/shipping-address-set', (payload) => { console.log('quote-management/shipping-address-set event received:', payload); // Add your custom logic here});Data Models
Section titled “Data Models”The following data models are used in event payloads for this drop-in.
NegotiableQuoteModel
Section titled “NegotiableQuoteModel”Used in: quote-management/line-item-note-set, quote-management/negotiable-quote-requested, quote-management/quantities-updated, quote-management/quote-data, quote-management/quote-data/initialized, quote-management/quote-duplicated, quote-management/quote-items-removed, quote-management/quote-renamed, quote-management/quote-sent-for-review, quote-management/shipping-address-set.
interface NegotiableQuoteModel { uid: string; name: string; createdAt: string; salesRepName: string; expirationDate: string; updatedAt: string; status: NegotiableQuoteStatus; isVirtual: boolean; buyer: { firstname: string; lastname: string; }; email?: string; templateName?: string; totalQuantity: number; comments?: { uid: string; createdAt: string; author: { firstname: string; lastname: string; }; text: string; attachments?: { name: string; url: string; }[]; }[]; history?: NegotiableQuoteHistoryEntry[]; prices: { appliedDiscounts?: Discount[]; appliedTaxes?: Tax[]; discount?: Currency; grandTotal?: Currency; grandTotalExcludingTax?: Currency; shippingExcludingTax?: Currency; shippingIncludingTax?: Currency; subtotalExcludingTax?: Currency; subtotalIncludingTax?: Currency; subtotalWithDiscountExcludingTax?: Currency; totalTax?: Currency; }; items: CartItemModel[]; shippingAddresses?: ShippingAddress[]; canCheckout: boolean; canSendForReview: boolean; lockedForEditing?: boolean; canDelete: boolean; canClose: boolean; canUpdateQuote: boolean; readOnly: boolean;}NegotiableQuoteTemplateModel
Section titled “NegotiableQuoteTemplateModel”Used in: quote-management/quote-template-data.
interface NegotiableQuoteTemplateModel { id: string; uid: string; name: string; createdAt: string; updatedAt: string; expirationDate?: string; status: NegotiableQuoteTemplateStatus; salesRepName: string; buyer: { firstname: string; lastname: string; }; comments?: QuoteTemplateComment[]; history?: NegotiableQuoteHistoryEntry[]; prices: { subtotalExcludingTax?: Currency; subtotalIncludingTax?: Currency; subtotalWithDiscountExcludingTax?: Currency; grandTotal?: Currency; appliedTaxes?: { amount: Currency; label: string; }[]; }; items: CartItemModel[]; shippingAddresses?: ShippingAddress[]; referenceDocuments?: { uid: string; name: string; identifier?: string; url: string; }[]; // Template-specific fields quantityThresholds?: { min?: number; max?: number; }; canAccept: boolean; canDelete: boolean; canReopen: boolean; canCancel: boolean; canSendForReview: boolean; canGenerateQuoteFromTemplate: boolean; canEditTemplateItems: boolean;}NegotiableQuoteTemplatesListModel
Section titled “NegotiableQuoteTemplatesListModel”Used in: quote-management/quote-templates-data.
interface NegotiableQuoteTemplatesListModel { items: NegotiableQuoteTemplateListEntry[]; pageInfo: { currentPage: number; pageSize: number; totalPages: number; }; totalCount: number; paginationInfo?: PaginationInfo; sortFields?: { default: string; options: Array<{ label: string; value: string; }>; };}StoreConfigModel
Section titled “StoreConfigModel”Used in: quote-management/initialized.
interface StoreConfigModel { quoteSummaryDisplayTotal: number; quoteSummaryMaxItems: number; quoteDisplaySettings: { zeroTax: boolean; subtotal: QuoteDisplayAmount; price: QuoteDisplayAmount; shipping: QuoteDisplayAmount; fullSummary: boolean; grandTotal: boolean; }; useConfigurableParentThumbnail: boolean; quoteMinimumAmount: number | null; quoteMinimumAmountMessage: string | null;}