Quotation Adapters
Accept and process quotation (request-for-quote) requests for shop items, manually or automatically. Several adapters can be registered; the first adapter that activates for a quotation handles it.
Creating an adapter
Use the registerQuotation factory. Only adapterId is required — every callback has a sensible default. The example below requires manual verification and proposal. When the proposal is submitted, quote sets its expiry to one hour later.
import { registerQuotation } from '@unchainedshop/core';
registerQuotation({
adapterId: 'manual',
isManualRequestVerificationRequired: true,
isManualProposalRequired: true,
quote: async (context) => ({
expires: new Date(Date.now() + 3600 * 1000),
}),
transformItemConfiguration: async (params, context) => ({
quantity: params.quantity,
configuration: params.configuration,
}),
});
Callback reference
| Option | Description |
|---|---|
quote(context) | produce the offer (a QuotationProposal) |
transformItemConfiguration(params, context) | normalize the submitted request JSON into a structured item configuration |
isManualRequestVerificationRequired | a request must be verified by a human before it is valid (boolean) |
isManualProposalRequired | the quote is created manually rather than automatically (boolean) |
submitRequest / verifyRequest / rejectRequest | lifecycle hooks returning a boolean for the corresponding transition |
For full control of every
IQuotationAdaptermethod, build the adapter directly and register it viapluginRegistry.register()— see Plugin System.
Related
- Plugin Factories —
registerQuotation - Manual quotation plugin — the shipped adapter