wiki:BozzaAnalisiFunzionale/Gestione dei fornitori e dei listini

Version 3 (modified by lfranc, 3 years ago) (diff)

Modifiche di formattazione e ritocchi minori.

Inizializzazione

In questa sezione riportiamo le procedure che devono essere eseguite in via preliminare (una tantum) per consentire il regolare svolgimento delle interazioni GAS-Produttori.

  • il Produttore crea e popola il suo CatalogoProduttore (valido per ogni GAS)
  • il Produttore definisce il suo ListinoProduttore valido per ogni GAS specificando, per ogni prodotto del suo CatalogoProduttore, il prezzo base
  • il Produttore sottoscrive il PattoDiSolidarietà con un GAS

Eventi

In questa sezione riportiamo gli eventi che possono verificarsi nel corso del processo di Ordine e Consegna, in maniera asincrona (indipendente) rispetto al workflow definito nella sezione successiva.

il Produttore aggiorna il prezzo di un Prodotto nel ListinoProduttore

Il Produttore, in qualsiasi momento, può aggiornare il suo ListinoProduttore (ovvero modificare i prezzi base applicati a tutti i GAS); in questo caso:

  • Il Produttore:
    • modifica il prezzo di un Prodotto
    • specifica la motivazione della variazione
  • Il Sistema:
    • registra il nuovo prezzo e la causale di modifica nello storico dei prezzi relativo al Produttore in questione (condiviso tra tutti i GAS)
    • per ogni GAS che gestisce:
      • notifica la variazione al ReferenteProduttoreGAS
      • aggiorna il ListinoProduttoreGAS e (di conseguenza) il ListinoProduttoreGasista
      • verifica se è aperto un OrdineProduttore per il Produttore in questione; in caso affermativo:
        • modifica le VociDiCarrello interessate dalla variazione
        • modifica gli OrdiniGasista (confermati) interessati dalla variazione
        • notifica la variazione ai Gasisti che hanno già inserito nel Carrello uno o più Prodotti toccati dalle variazioni di prezzo; se un Gasista non accetta la variazione, può rimuovere la relativa VoceDiCarrello; (sarebbe anche opportuno che il Sistema evidenziasse visivamente eventuali Prodotti che hanno subito variazioni di prezzo al momento della conferma dell'OrdineGasista)
        • notifica la variazione ai Gasisti che hanno già effettuato OrdiniGasista toccati dalle variazioni di prezzo; se un Gasista non accetta la variazione, può modificare o revocare l'OrdineGasista corrispondente.

Definire che succede se l'OrdineProduttore è stato inviato ma non ancora consegnato.

Si diceva che fa fede la fattura. Riconducendo tutto a questo caso si potrebbe dire che l'OrdineProduttore inviato ma non consegnato può essere modificato. Tuttavia, non credo opportuno implementare questa politica per tutti, ma anzi che sia strategico relegare questa decisione ai singoli GAS. Per questo propongo che il "punto di non ritorno" di modifica dei prezzi dei Prodotti di un OrdineProduttore, non dell'OrdineGasista, siano configurabili nel PattoDiSolidarietà.

Meglio usare 4 campi (2 gruppi: ordinato e consegnato). 2 per l'importo e della quantità ordinati e 2 per l'importo e la quantità consegnati. I primi 2 non possono essere modificati dopo la disposizione, gli altri 2 si. Questa implementazione riflette la realtà.

Nota: il legame di solidarietà reale (non gestito dalla piattaforma :)) fra GAS e Produttore evita che accadano eventi spiacevoli (ritocchi al rialzo dei prezzo "ad orologeria"); in caso contrario, il GAS può stracciare il Patto di Solidarietà.

il Produttore inserisce un nuovo Prodotto nel CatalogoProduttore

L'aggiunta, da parte di un Produttore, di un nuovo Prodotto al suo CatalogoProduttore non può causare una modifica automatica dei relativi Cataloghi/Listini a livello di GAS, in quanto è richiesta, eventualmente, una modifica preliminare al PattoDiSolidarietà tra il Produttore e ciascun GAS gestito dal Sistema, e questo comporta, ovviamente, un'approvazione da parte del GAS; tale processo può comunque essere assistito dalla piattaforma informatica.

Verificare questa affermazione.

Quando un Produttore inserisce un nuovo Prodotto nel CatalogoProduttore:

  • il Sistema:
    • notifica il ReferenteProduttoreGAS di ogni GAS gestito dal Sistema, che abbia stipulato un PattoDiSolidarietà con il Produttore
  • il ReferenteProduttoreGAS di ogni GAS gestito dal Sistema, che abbia stipulato un PattoDiSolidarietà con il Produttore:
    • notifica il GAS del nuovo Prodotto
  • Il GAS:

In caso affermativo:

  • il ReferenteProduttoreGAS effettua le opportune modifiche al PattoDiSolidarietà (che si riflettono automaticamente sul CatalogoProduttoreGAS e il ListinoProduttoreGAS)

il Produttore rimuove un Prodotto dal CatalogoProduttore

La rimozione, da parte di un Produttore, di un Prodotto dal suo CatalogoProduttore comporta una modifica del PattoDiSolidarietà per tutti i GAS, gestiti dal Sistema, che annoverino il Produttore tra i loro fornitori. Dovrebbe comunque trattarsi di un evento sporadico e preceduto da una comunicazione, da parte del Produttore, nei confronti di tutti i ReferentiProduttoreGAS interessati; tale processo può comunque essere assistito dalla piattaforma informatica.

Quando un Produttore rimuove un Prodotto dal suo CatalogoProduttore:

  • il Sistema:
    • notifica il ReferenteProduttoreGAS di ogni GAS gestito dal Sistema, che abbia stipulato un PattoDiSolidarietà con il Produttore
    • apporta le necessarie modifiche al CatalogoProduttoreGAS (quindi, indirettamente, al PattoDiSolidarietà) e le sottopone al ReferenteProduttoreGAS per conferma
  • verifica se è aperto un OrdineProduttore per il Produttore in questione; in caso affermativo:
    • elimina gli OrdiniGasista in cui compare il Prodotto rimosso (siano essi CONFERMATI o NON_CONFERMATI, ovvero VociDiCarrello)
    • notifica i Gasisti delle modifiche apportate

il Produttore aggiorna la disponibilità dei Prodotti nel ListinoProduttoreGAS

il Produttore, in qualsiasi momento, può aggiornare la quantità disponibile dei Prodotti che compaiono nel ListinoProduttoreGAS (vedi la discussione sulla gestione della disponibilità dei Prodotti); in questo caso, va definito cosa succede ai Gasisti che hanno inserito nel loro Carrello dei Prodotti la cui disponibilità sia stata rivista al ribasso; alcune strategie possibili:

  • definire un algoritmo che adegui i Carrelli alla nuova situazione (magari in base a criteri di equità/solidarietà tra Gasisti ;-)); può anche essere sufficiente il metodo del consenso
  • effettuare comunque l'OrdineProduttore senza interventi preliminari, notificando i Gasisti che i loro OrdiniGasista potrebbero non essere soddisfatti in toto (la rettifica può comunque avvenire in fase di Ritiro o di Consegna)

Quest'ultima è la scelta più opportuna per il primo anno: implementare l'opzione "politica di riduzione della disponibilità per gli OrdiniGasista" nel PattoDiSolidarietà prevedendo quest'ultimo comportamento di default per il primo anno. Consideriamo come funzionerebbe senza disponibilità quantitativa.

Un caso particolare di questa problematica è quello in cui si modifica la disponibilità "assoluta" di un Prodotto (SI/NO, contrapposta a quella "relativa" in cui si modifica la quantità ma il Prodotto rimane comunque disponibile); ci sono due casi possibili:

  1. il Prodotto passa da NON DISPONIBILE (quantità = 0) a DISPONIBILE (quantità > 0)
  2. il Prodotto passa da DISPONIBILE (quantità > 0) a NON DISPONIBILE (quantità = 0)

Caso 1) Il Produttore:

  • incrementa la disponibilità di un Prodotto per un determinato GAS (modificando il relativo ListinoProduttoreGAS) da 0 ad un valore > 0

Il Sistema:

Quest'ultimo punto è sbagliato se decidiamo di associare una lista statica di prodotti ad ogni ordine. Se prendiamo questa strada non è possibile aggiornare automaticamente i ListinoGasista. Propongo una soluzione per questo problema: nel CatalogoProduttoreGAS ogni prodotto abbia associato un "flag": "lo voglio sempre", "non lo voglio mai", "se è disponibile mostramelo al momento dell'ordine che scelgo". Meglio un peso: 100, 50, 10 così è estendibile e filtrabile. Nel PattoDiSolidarietà si mette un'opzione di default per il peso dei nuovi Prodotti nel CatalogoProduttoreGAS. Ritornando al problema principe di associare i prodotti ad un ordine il 90% dei GAS rimmarrà con il valore di default di peso 100 come preferenza nel CatalogoProduttoreGAS, mentre i più scettici lo abbasseranno (ovviamente per loro non sarà un numero) e potranno decidere di volta in volta. Mi fanno più paura gli sforzi dell'utente, più che quello dei programmatori.

Caso 2) Il Produttore:

  • annulla la disponibilità di un Prodotto per un determinato GAS (modificando il relativo ListinoProduttoreGAS)

Il Sistema:

  • verifica se è aperto un OrdineProduttore per il Produttore in questione; in caso affermativo:
    • elimina gli OrdiniGasista in cui compare il Prodotto rimosso (siano essi CONFERMATI o NON_CONFERMATI, ovvero VociDiCarrello)
    • notifica i Gasisti delle modifiche apportate
    • notifica il ReferenteProduttoreGAS e i Gasisti della indisponibilità del Prodotto