Il ciclo di vita del quote

Nel modulo Sales di Dynamics 365 il quote (preventivo) non è un semplice documento: è un record con una macchina a stati precisa, e conoscerne le transizioni è centrale in MB-280. Gli stati principali sono Draft, Active e Closed, con quest’ultimo che si articola nei motivi Won, Lost, Canceled e Revised.

Alla creazione, ogni quote nasce in Draft. In questo stato è completamente editabile: puoi aggiungere quote line (righe prodotto), applicare write-in product per articoli non a catalogo, cambiare quantità e sconti manuali. Il punto chiave è che un quote in Draft non può essere vinto: prima devi eseguire l’azione Activate Quote, che lo porta in stato Active e assegna un Quote ID definitivo per l’invio al cliente.

Draft → Active → Won/Closed

Una volta Active, il quote è “congelato” per la modifica diretta: i campi delle righe diventano di sola lettura. Da qui puoi solo:

  • Close Quote con motivo Won → genera (opzionalmente) un Sales Order;
  • Close Quote con motivo Lost o Canceled;
  • Revise per riportarlo in modifica (vedi sotto).

Revisionare un quote attivo

Non puoi editare un quote Active. Per correggere un prezzo, aggiungere una riga o cambiare la data di scadenza usi l’azione Revise. Questo:

  • chiude la versione corrente con motivo Revised;
  • crea una nuova revisione dello stesso quote, riportandola in Draft con il Revision Number incrementato (mantenendo lo stesso Quote ID logico).

Dopo aver applicato le modifiche dovrai riattivare la revisione con Activate. Questo pattern preserva lo storico delle versioni negoziate con il cliente — utile nelle domande d’esame sullo “audit trail” delle trattative.

La catena opportunity → quote → order → invoice

Il flusso quote-to-order vive dentro il ciclo di vendita completo:

  1. Opportunity — qualifica il deal, tiene traccia di stakeholder, prodotti stimati e budget.
  2. Quote — dalla opportunity generi uno o più preventivi; ereditano righe e price list.
  3. Sales Order — nasce dal quote vinto; rappresenta l’impegno confermato del cliente.
  4. Invoice — generata dall’ordine per la fatturazione.

Ogni entità richiede una price list (Price List / Price Level) valida: è la price list, non il prodotto in sé, a determinare l’unit price delle righe. Senza price list attiva, l’aggiunta di prodotti a catalogo fallisce (puoi solo inserire write-in product).

Lock e unlock del pricing: Use System Pricing vs Use Current Pricing

Su order e invoice il calcolo dei prezzi può essere bloccato o sbloccato tramite due comandi sul ribbon:

  • Use Current Pricingblocca (lock) il pricing. I prezzi attualmente presenti sulle righe restano fissi anche se la price list o i listini prodotto cambiano in seguito. È lo scenario tipico: il cliente ha già accettato quei prezzi, non vogliono ricalcolarsi.
  • Use System Pricingsblocca (unlock) e ricalcola le righe in base alla price list attiva, sovrascrivendo eventuali override manuali.

Il campo tecnico sottostante è Is Price Locked (ispricelocked) sull’order. Regola pratica: se devi onorare i prezzi negoziati sul quote, mantieni Use Current Pricing; se hai cambiato price list o listini e vuoi allineare l’ordine ai nuovi valori, usa Use System Pricing — ma attenzione, così perdi gli sconti manuali di riga.

Trappole tipiche d’esame

  • Scenario: provi a marcare un quote in Draft come Won e non trovi l’opzione. → Risposta: devi prima eseguire Activate Quote; solo un quote Active può essere chiuso come Won.
  • Scenario: devi correggere una riga di un quote già inviato e Active. → Risposta: usa Revise (che riporta in Draft una nuova revisione), non tentare l’edit diretto né duplicare il record.
  • Scenario: chiudi l’opportunity come Lost mentre ha quote attivi collegati. → Risposta: la chiusura dell’opportunity agisce sui quote attivi associati (vengono chiusi/annullati); ricordare che vincere un quote chiude automaticamente la parent opportunity come Won.
  • Scenario: hai aggiornato la price list ma l’ordine mostra ancora i vecchi prezzi. → Risposta: l’ordine ha il pricing bloccato (Use Current Pricing); applica Use System Pricing per ricalcolare dalla price list.
  • Scenario: aggiungi un prodotto a catalogo a un quote e il prezzo non compare. → Risposta: manca o non è valida la price list associata al record.