Changes between Version 18 and Version 19 of BozzaAnalisiFunzionale


Ignore:
Timestamp:
01/11/11 09:26:56 (4 years ago)
Author:
fero
Comment:

specificato che il workflow analizzato e' quello di ordine e consegna

Legend:

Unmodified
Added
Removed
Modified
  • BozzaAnalisiFunzionale

    v18 v19  
    88 * il Produttore definisce il suo !ListinoProduttore valido per '''ogni''' GAS specificando,  per ogni prodotto del suo !CatalogoProduttore, il prezzo base 
    99 * il Produttore sottoscrive il !PattoDiSolidarietà con un GAS 
     10 
    1011---- 
    1112== Eventi == 
     
    1415=== il Produttore aggiorna il prezzo di un Prodotto nel !ListinoProduttore === 
    1516Il Produttore, in qualsiasi momento, può aggiornare il suo !ListinoProduttore (ovvero modificare i prezzi base applicati a tutti i GAS); in questo caso: 
    16 * Il Produttore: 
    17  * modifica il prezzo di un Prodotto 
    18  * specifica la motivazione della variazione      
    19 * Il Sistema : 
    20   * registra il nuovo prezzo e la causale di modifica nello storico dei prezzi relativo al Produttore in questione (condiviso tra tutti i GAS) 
    21   * per ogni GAS che gestisce: 
    22    * notifica la variazione al !ReferenteProduttore 
    23    * aggiorna il ListinoProduttoreGAS e (di conseguenza) il !ListinoProduttoreGasista 
    24    * verifica se è aperto un !OrdineProduttore per il Produttore in questione; in caso affermativo: 
    25      * modifica le !VociDiCarrello interessate dalla variazione 
    26      * modifica gli !OrdiniGasistaProduttore interessati  dalla variazione 
    27      * notifica la variazione ai Gasisti che hanno già inserito nel Carrello dei 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)'' 
    28      * notifica la variazione ai Gasisti che hanno già effettuato degli !OrdiniGasistaProduttore comprendenti dei Prodotti toccati dalle variazioni di prezzo; se un Gasista non accetta la variazione, può modificare o revocare l'!OrdineGasista corrispondente  
     17 
     18 * Il Produttore: 
     19   * modifica il prezzo di un Prodotto 
     20   * specifica la motivazione della variazione 
     21 * Il Sistema : 
     22   * registra il nuovo prezzo e la causale di modifica nello storico dei prezzi relativo al Produttore in questione (condiviso tra tutti i GAS) 
     23   * per ogni GAS che gestisce: 
     24     * notifica la variazione al !ReferenteProduttore 
     25     * aggiorna il ListinoProduttoreGAS e (di conseguenza) il !ListinoProduttoreGasista 
     26     * verifica se è aperto un !OrdineProduttore per il Produttore in questione; in caso affermativo: 
     27       * modifica le !VociDiCarrello interessate dalla variazione 
     28       * modifica gli !OrdiniGasistaProduttore interessati  dalla variazione 
     29       * notifica la variazione ai Gasisti che hanno già inserito nel Carrello dei 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)'' 
     30       * notifica la variazione ai Gasisti che hanno già effettuato degli !OrdiniGasistaProduttore comprendenti dei Prodotti toccati dalle variazioni di prezzo; se un Gasista non accetta la variazione, può modificare o revocare l'!OrdineGasista corrispondente 
    2931 
    3032{{{ 
    3133definire che succede se l'OrdineGASProduttore è stato inviato ma non ancora consegnato 
    3234}}} 
    33  
    34   
    35 ''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à.'' 
     35 ''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à.'' 
    3636 
    3737=== il Produttore inserisce un nuovo Prodotto nel !CatalogoProduttore === 
     
    3939 
    4040Quando un Produttore inserisce un nuovo Prodotto nel !CatalogoProduttore: 
    41 * il Sistema: 
    42  * notifica il ReferenteProduttoreGAS di ogni GAS gestito dal Sistema, che abbia stipulato un !PattoDiSolidarietà con il Produttore 
    43 * il ReferenteProduttoreGAS di ogni GAS gestito dal Sistema, che abbia stipulato un !PattoDiSolidarietà con il Produttore: 
    44  * notifica il GAS del nuovo Prodotto 
    45 * Il GAS: 
    46  * valuta il nuovo Prodotto, e decide se includerlo nel CatalogoProduttoreGAS 
     41 
     42 * il Sistema: 
     43   * notifica il ReferenteProduttoreGAS di ogni GAS gestito dal Sistema, che abbia stipulato un !PattoDiSolidarietà con il Produttore 
     44 * il ReferenteProduttoreGAS di ogni GAS gestito dal Sistema, che abbia stipulato un !PattoDiSolidarietà con il Produttore: 
     45   * notifica il GAS del nuovo Prodotto 
     46 * Il GAS: 
     47   * valuta il nuovo Prodotto, e decide se includerlo nel CatalogoProduttoreGAS 
    4748 
    4849In caso affermativo: 
     50 
    4951 * il ReferenteProduttoreGAS effettua le opportune modifiche al !PattoDiSolidarietà (che si riflettono automaticamente sul CatalogoProduttoreGAS e il ListinoProduttoreGAS) 
    5052 
     
    5355 
    5456Quando un Produttore  rimuove un Prodotto dal suo !CatalogoProduttore: 
    55 * il Sistema: 
    56  * notifica il ReferenteProduttoreGAS di ogni GAS gestito dal Sistema, che abbia stipulato un !PattoDiSolidarietà con il Produttore 
    57  * apporta le necessarie modifiche al CatalogoProduttoreGAS (quindi, indirettamente,  al  PattoDiSolidarietà) e le sottopone al ReferenteProduttoreGAS per conferma 
    58 * verifica se è aperto un !OrdineProduttore per il Produttore in questione; in caso affermativo: 
    59      * elimina le !VociDiCarrello in cui compare il Prodotto rimosso  
    60      * modifica gli !OrdiniGasistaProduttore in cui compare il Prodotto rimosso 
    61      * notifica i Gasisti delle modifiche apportate 
    62   
    63 === il Produttore aggiorna la disponibilità dei Prodotti nel !ListinoProduttoreGAS ===  
     57 
     58 * il Sistema: 
     59   * notifica il ReferenteProduttoreGAS di ogni GAS gestito dal Sistema, che abbia stipulato un !PattoDiSolidarietà con il Produttore 
     60   * apporta le necessarie modifiche al CatalogoProduttoreGAS (quindi, indirettamente,  al  PattoDiSolidarietà) e le sottopone al ReferenteProduttoreGAS per conferma 
     61 * verifica se è aperto un !OrdineProduttore per il Produttore in questione; in caso affermativo: 
     62   * elimina le !VociDiCarrello in cui compare il Prodotto rimosso 
     63   * modifica gli !OrdiniGasistaProduttore in cui compare il Prodotto rimosso 
     64   * notifica i Gasisti delle modifiche apportate 
     65 
     66=== il Produttore aggiorna la disponibilità dei Prodotti nel !ListinoProduttoreGAS === 
    6467il Produttore, in qualsiasi momento, può aggiornare la quantità disponibile dei Prodotti che compaiono nel ListinoProduttoreGAS; 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: 
    65    * 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 
    66    * effettuare comunque l'!OrdineProduttore senza interventi preliminari, notificando i Gasisti che il loro !OrdineGasista potrebbe non essere soddisfatto in toto (la rettifica può comunque avvenire in fase di Ritiro o di Consegna) 
     68 
     69 * 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 
     70 * effettuare comunque l'!OrdineProduttore senza interventi preliminari, notificando i Gasisti che il loro !OrdineGasista potrebbe non essere soddisfatto in toto (la rettifica può comunque avvenire in fase di Ritiro o di Consegna) 
    6771 
    6872Un 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: 
     73 
    6974 1. il Prodotto passa da NON DISPONIBILE (quantità = 0) a DISPONIBILE (quantità > 0) 
    7075 1. il Prodotto passa da DISPONIBILE (quantità > 0) a NON DISPONIBILE (quantità = 0) 
    7176 
    72 Caso 1) 
    73 Il Produttore: 
     77Caso 1) Il Produttore: 
     78 
    7479 * incrementa la disponibilità di un Prodotto per un determinato GAS (modificando il relativo ListinoProduttoreGAS) da 0 ad un valore > 0 
     80 
    7581Il Sistema: 
     82 
    7683 * verifica se è aperto un !OrdineProduttore per il Produttore in questione; in caso affermativo: 
    77      * notifica il ReferenteProduttoreGAS e i Gasisti della disponibilità di un nuovo Prodotto (il !ListinoGasista viene aggiornato automaticamente) 
    78      
    79 Caso 2) 
    80 Il Produttore: 
    81  * annulla la disponibilità di un Prodotto per un determinato GAS (modificando il relativo ListinoProduttoreGAS)  
     84   * notifica il ReferenteProduttoreGAS e i Gasisti della disponibilità di un nuovo Prodotto (il !ListinoGasista viene aggiornato automaticamente) 
     85 
     86 Caso 2) Il Produttore: 
     87 
     88 * annulla la disponibilità di un Prodotto per un determinato GAS (modificando il relativo ListinoProduttoreGAS) 
     89 
    8290Il Sistema: 
     91 
    8392 * verifica se è aperto un !OrdineProduttore per il Produttore in questione; in caso affermativo: 
    84      * elimina le !VociDiCarrello in cui compare il Prodotto rimosso  
    85      * modifica gli !OrdiniGasistaProduttore in cui compare il Prodotto rimosso 
    86      * notifica i Gasisti delle modifiche apportate 
    87      * notifica il ReferenteProduttoreGAS e i Gasisti della indisponibilità del Prodotto 
    88     
     93   * elimina le !VociDiCarrello in cui compare il Prodotto rimosso 
     94   * modifica gli !OrdiniGasistaProduttore in cui compare il Prodotto rimosso 
     95   * notifica i Gasisti delle modifiche apportate 
     96   * notifica il ReferenteProduttoreGAS e i Gasisti della indisponibilità del Prodotto 
     97 
    8998=== L'!OrdineProduttore viene annullato (non verrà consegnato) === 
    90  
    91  Si elimina tutto quello che riguarda  L'!OrdineProduttore + Carrello +  !VoceDiOrdine + listini.  
     99  Si elimina tutto quello che riguarda  L'!OrdineProduttore  + Carrello +  !VoceDiOrdine  + listini. 
     100 
    92101---- 
    93102== Workflow di aggiornamento prezzi == 
    94  
    95103 * visualizza lo stato attuale del ListinoProduttoreGAS (in  particolare,  il Sistema mostra solo i Prodotti attualmente disponibili  ed evidenzia  le eventuali variazioni di prezzo rispetto al precedente   !OrdineProduttore) 
    96104 * il Sistema visualizza il !ListinoProduttoreGasista, a partire dal  ListinoProduttoreGAS (applicando le eventuali modifiche ai prezzi) 
     
    98106 * il ReferenteProduttoreGAS conferma il !ListinoProduttoreGasista, e  il  Sistema lo assegna automaticamente all'!OrdineProduttore in  questione 
    99107 
    100 ==  Workflow ==   
     108== Workflow di ordine e consegna == 
    101109In questa sezione riportiamo il workflow di base che fornisce un'implementazione del processo di Ordine e Consegna.  Alcune delle azioni descritte nel workflow sono a carico del Sistema, altre richiedono un intervento umano; comunque, il confine è sfumato e dipende anche dalle scelte organizzative di ogni singolo GAS (ad es., GAS diversi potrebbero decidere di fare un uso più o meno esteso della piattaforma informatica di cui dispongono). 
     110 
    102111---- 
    103112'''Nota preliminare''': al fine di modellizzare il processo di ordine e di consegna, è possibile partire da assunzioni diverse: 
     113 
    104114 1. si può assumere che le interazioni GAS-Produttori avvengano in maniera '''sincrona''', cioè siano scandite da un "clock" condiviso tra GAS e Produttori; in questo caso, il processo di ordine e consegna sarebbe un ciclo che si compie a cadenza fissata, ad esempio settimanale (l'ordine si apre il Lunedì e si chiude il Venerdì per '''tutti''' i Produttori che servono un GAS) 
    105115 1. si può assumere che le interazioni GAS-Produttori avvengano in maniera '''asincrona''', ovvero che il GAS e i Produttori interagiscano in modo non necessariamente coordinato. Ad esempio, diversi !ReferentiProduttore possono aprire e chiudere gli Ordini in autonomia, i Produttori possono variare i prezzi di listino in qualsiasi momento, ecc. 
    106116 
    107 Nel nostro caso, riteniamo che il secondo scenario sia più realistico nei contesti operativi dei GAS. Da notare che l'assenza di sincronizzazione ''a priori'' non esclude la sussistenza di meccanismi di coordinamento intra-GAS (e inter-GAS, in uno scenario di Retina); anzi, è probabile (e auspicabile)  che questi meccanismi sorgano spontaneamente come buone pratiche a livello di GAS (o di Retina), ma il Sistema non cerca in alcun modo di imporli.  
     117Nel nostro caso, riteniamo che il secondo scenario sia più realistico nei contesti operativi dei GAS. Da notare che l'assenza di sincronizzazione ''a priori'' non esclude la sussistenza di meccanismi di coordinamento intra-GAS (e inter-GAS, in uno scenario di Retina); anzi, è probabile (e auspicabile)  che questi meccanismi sorgano spontaneamente come buone pratiche a livello di GAS (o di Retina), ma il Sistema non cerca in alcun modo di imporli. 
     118 
    108119---- 
    109120'''Nota''': in una prima fase si può semplificare la gestione delle disponibilità dei Prodotti limitandosi ai due stati "disponibile" e "non disponibile". 
    110121 
    111122All'interno del GAS: 
    112     * per un Produttore, il ReferenteProduttoreGAS: 
    113       * apre un nuovo !OrdineProduttore, definendo: 
    114        * la data di apertura e chiusura  
    115        * le modalità di ritiro (vanno concordate con il Produttore, anche in un secondo momento) 
    116        * le modalità di consegna; per definirle il ReferenteProduttoreGAS può: 
    117         1. creare una nuovo appuntamento di consegna (Consegna), definendo: 
     123 
     124 * per un Produttore, il ReferenteProduttoreGAS: 
     125   * apre un nuovo !OrdineProduttore, definendo: 
     126     * la data di apertura e chiusura 
     127     * le modalità di ritiro (vanno concordate con il Produttore, anche in un secondo momento) 
     128     * le modalità di consegna; per definirle il ReferenteProduttoreGAS può: 
     129       1. creare una nuovo appuntamento di consegna (Consegna), definendo: 
    118130         * il !PuntoDiConsegna 
    119          * la data della Consegna  
    120          * l'ora di inizio e fine della Consegna  
    121          * il Turnista (o i Turnisti) responsabili della Consegna; è compito del ReferenteProduttoreGAS verificare l'effettiva disponibilità del Turnista/i      
    122         2. selezionare una (appuntamento di) Consegna già definita da un altro !ReferenteProduttoreGAS (oppure la (appuntamento di) Consegna di default) 
    123        * aggiunge una nota 
    124        * importo minimo (opzionale) 
    125      * valida il listino 
    126        * Sotto-workflow: aggiornamento prezzi 
     131         * la data della Consegna 
     132         * l'ora di inizio e fine della Consegna 
     133         * il Turnista (o i Turnisti) responsabili della Consegna; è compito del ReferenteProduttoreGAS verificare l'effettiva disponibilità del Turnista/i 
     134       1. selezionare una (appuntamento di) Consegna già definita da un altro !ReferenteProduttoreGAS (oppure la (appuntamento di) Consegna di default) 
     135     * aggiunge una nota 
     136     * importo minimo (opzionale) 
     137 * valida il listino 
     138   * Sotto-workflow: aggiornamento prezzi 
     139 
    127140Nota: il Sistema evidenzia eventuali altri OrdineProduttore aperti, ma non impedisce l'apertura di un nuovo OrdineProduttore 
    128141 
     
    130143 
    131144Quando un Gasista accede al Sistema: 
    132  * il Sistema visualizza il !ListinoGasista attuale, filtrando gli eventuali Prodotti la cui disponibilità è scesa a zero; la visualizzazione può essere fatta in forma aggregata per Produttore o per altri parametri (ad esempio la data di consegna) oppure come lista "flat"; questo comportamento può essere definito a livello di sistema o di utente (?), in base alle specifiche esigenze/sensibilità del GAS   
     145 
     146 * il Sistema visualizza il !ListinoGasista attuale, filtrando gli eventuali Prodotti la cui disponibilità è scesa a zero; la visualizzazione può essere fatta in forma aggregata per Produttore o per altri parametri (ad esempio la data di consegna) oppure come lista "flat"; questo comportamento può essere definito a livello di sistema o di utente (?), in base alle specifiche esigenze/sensibilità del GAS 
    133147 * il Gasista seleziona alcuni Prodotti dal !ListinoGasista attuale, indicando le quantità desiderate per ciascun Prodotto; il Sistema si occupa di implementare eventuali restrizioni sulle quantità ordinabili (minima/step_incremento/massima) 
    134148 * il Sistema aggiorna il Carrello, compreso il totale corrente 
     
    139153 
    140154Quando un ReferenteProduttore accede al Sistema: 
     155 
    141156 * il Sistema visualizza la situazione corrente di !OrdineGASProduttore per ogni Produttore per cui è attivo un !OrdineProduttore 
    142   
    143 Al momento della data di chiusura dell'ordine 
    144  * per ogni Produttore, il Sistema aggrega tale !OrdineGASProduttore con quelli già inviati dagli altri Gasisti, a beneficio del ReferenteProduttoreGAS  
     157 
     158 Al momento della data di chiusura dell'ordine 
     159 
     160 * per ogni Produttore, il Sistema aggrega tale !OrdineGASProduttore con quelli già inviati dagli altri Gasisti, a beneficio del ReferenteProduttoreGAS 
    145161 
    146162Quando la finestra temporale per  un OrdineProduttore si chiude, i Gasisti non sono più in grado di effettuare !OrdiniGasista per quel Produttore (fino all'apertura di un nuovo OrdineProduttore). 
    147163 
    148164A questo punto, ogni !ReferenteProduttore: 
     165 
    149166 * visualizza la situazione finale dell'!OrdineGASProduttore , con alcune viste in forma aggregata (quantità per prodotto, totale, ...) 
    150167 * valida l'!OrdineGASProduttore; se necessario, effettua le modifiche del caso ''(specificare quali azioni sono consentite!)'' e/o riapre l'OrdineProduttore in via temporanea per consentirne il completamento, per soddisfare eventuali vincoli posti dal Produttore (importo minimo, quantità minime. ecc.)  automatismi da prevedere 
    151  * se necessario, definisce con il Produttore le modalità di consegna  
     168 * se necessario, definisce con il Produttore le modalità di consegna 
    152169 * finalizza l'!OrdineProduttore; il Sistema genera e invia al produttore un documento di Ordine 
    153170 
    154171Ora, si entra nel processo di Consegna: 
     172 
    155173 * il Produttore consegna la merce relativa all' !OrdineProduttore  secondo le modalità stabilite in precedenza 
    156  * se necessario, qualcuno del GAS si occupa del trasferimento della merce  dal !PuntoDiRitiro al !PuntoDiConsegna  
     174 * se necessario, qualcuno del GAS si occupa del trasferimento della merce  dal !PuntoDiRitiro al !PuntoDiConsegna 
     175 
    157176'' TODO: definire una procedura di validazione della consegna da parte del Produttore (gestione delle eccezioni: prodotti mancanti o difformi,..)'' 
     177 
    158178 * in prossimità di una (appuntamento di) Consegna, il Sistema invia una notifica/reminder a: 
    159   * i Gasisti che devono ritirare dei Prodotti nel corso della Consegna (in base agli !OrdiniGasista che hanno eseguito) 
    160   * il Turnista incaricato a gestire la Consegna  
    161 * durante al Consegna,  presso il !PuntoDiConsegna, il Turnista coordina il ritiro della Partita (risultato dell'aggregazione degli !OrdiniProduttore assegnati alla Consegna in oggetto) osservando la seguente procedura: 
    162   * per ogni Gasista che si reca al !PuntoDiConsegna: 
    163     * il Sistema genera la lista dei Prodotti/quantità ordinati dal Gasista 
    164     * preleva i Prodotti nella lista e li consegna al Gasista 
    165     * chiede al Gasista di validare il ritiro e, in base all'esito, aggiorna lo stato della consegna: 
    166      * se il Gasista conferma che il ritirato corrisponde (in quantità e qualità) all'ordinato, il Turnista marca i Prodotti corrispondenti come `consegnati` (con l'ausilio del Sistema) 
    167     * se si presentano difformità (in quantità e qualità) tra il ritirato e l'ordinato, il Turnista inserisce nel Sistema le anomalie ''(gestione delle eccezioni; definire meglio i dettagli!)'' 
     179   * i Gasisti che devono ritirare dei Prodotti nel corso della Consegna (in base agli !OrdiniGasista che hanno eseguito) 
     180   * il Turnista incaricato a gestire la Consegna 
     181 * durante al Consegna,  presso il !PuntoDiConsegna, il Turnista coordina il ritiro della Partita (risultato dell'aggregazione degli !OrdiniProduttore assegnati alla Consegna in oggetto) osservando la seguente procedura: 
     182   * per ogni Gasista che si reca al !PuntoDiConsegna: 
     183     * il Sistema genera la lista dei Prodotti/quantità ordinati dal Gasista 
     184     * preleva i Prodotti nella lista e li consegna al Gasista 
     185     * chiede al Gasista di validare il ritiro e, in base all'esito, aggiorna lo stato della consegna: 
     186       * se il Gasista conferma che il ritirato corrisponde (in quantità e qualità) all'ordinato, il Turnista marca i Prodotti corrispondenti come `consegnati` (con l'ausilio del Sistema) 
     187     * se si presentano difformità (in quantità e qualità) tra il ritirato e l'ordinato, il Turnista inserisce nel Sistema le anomalie ''(gestione delle eccezioni; definire meglio i dettagli!)'' 
    168188 
    169189Note: 
     190 
    170191 * in uno scenario inter-GAS, per condividere entità come Produttori, Prodotti,  !PuntiDiConsegna,  !PuntiDiRitiro è necessario definire degli ID univoci (UUID); quelli "interni" al Sistema per ogni GAS non sono sufficienti; 
    171192 * per il momento, la gestione degli Stock a disposizione dei GAS è a carico del Produttore; 
    172  * sarebbe auspicabile gestire a livello inter-GAS gli Stock messi a disposizione dai produttori; altrimenti, potrebbe accadere che in un GAS lo Stock si esaurisca, mentre in un altro rimanga un invenduto.  Si potrebbe ovviare con un sistema di notifiche al Produttore nel caso un GAS abbia esaurito lo Stock a sua disposizione in modo che il Produttore aggiusti "dinamicamente" la suddivisione (oppure un meccanismo di adattamento in base allo storico).   
    173       
     193 * sarebbe auspicabile gestire a livello inter-GAS gli Stock messi a disposizione dai produttori; altrimenti, potrebbe accadere che in un GAS lo Stock si esaurisca, mentre in un altro rimanga un invenduto.  Si potrebbe ovviare con un sistema di notifiche al Produttore nel caso un GAS abbia esaurito lo Stock a sua disposizione in modo che il Produttore aggiusti "dinamicamente" la suddivisione (oppure un meccanismo di adattamento in base allo storico). 
     194 
    174195== !OrdiniPeriodici == 
    175196Al fine di semplificare al massimo la vita del !Gasista, è importante implementare un meccanismo che consenta la pianificazione (scheduling) degli Ordini ricorrenti (che avvengono periodicamente con cadenze fissate).  Il !Gasista dovrebbe poter inserire nel Sistema gli Ordini che si trova ad eseguire periodicamente (!OrdiniPeriodici), specificando: 
     197 
    176198 * prodotto 
    177199 * # di unità da ordinare 
     
    179201 * (opzionale) data di inizio e fine della validità dell' !OrdinePeriodico in questione 
    180202 
    181  === Workflow === 
    182 1. Il !GasistaAcquirente inserisce uno o più !OrdiniPeriodici  
    183 1. ogni giono, il Sistema 
    184  1. verifica se ci sono !OrdiniPeriodici previsti per il giorno corrente 
    185  1. per ogni !OrdinePeriodico  
    186     1. verifica se l' !OrdinePeriodico può essere soddisfatto (ovvero, per ogni Prodotto indicato nell' !OrdinePeriodico, esiste almeno uno Stock "attivo" e non vuoto in grado di soddisfare la richiesta)     
    187     * se l' !OrdinePeriodico può essere soddisfatto:  
    188       * genera e invia un !OrdineGasista (senza chiedere conferma al !GasistaAcquirente)  
    189       * invia una notifica al !GasistaAcquirente  
    190     *  se l' !OrdinePeriodico può essere soddisfatto (parzialmente o in toto) 
    191      * invia una notifica al !GasistaAcquirente  
     203=== Workflow === 
     204 1. Il !GasistaAcquirente inserisce uno o più !OrdiniPeriodici 
     205 1. ogni giono, il Sistema 
     206   1. verifica se ci sono !OrdiniPeriodici previsti per il giorno corrente 
     207   1. per ogni !OrdinePeriodico 
     208     1. verifica se l' !OrdinePeriodico può essere soddisfatto (ovvero, per ogni Prodotto indicato nell' !OrdinePeriodico, esiste almeno uno Stock "attivo" e non vuoto in grado di soddisfare la richiesta) 
     209     * se l' !OrdinePeriodico può essere soddisfatto: 
     210       * genera e invia un !OrdineGasista (senza chiedere conferma al !GasistaAcquirente) 
     211       * invia una notifica al !GasistaAcquirente 
     212     * se l' !OrdinePeriodico può essere soddisfatto (parzialmente o in toto) 
     213       * invia una notifica al !GasistaAcquirente 
     214 
    192215== Gestione Multi-GAS (livello di Retina) == 
    193  
    194216TODO 
    195217 
    196218= Scratch = 
    197 * L' UM dovrebbe permettere di calcolare in automatico il prezzo per Kilo o litro quando possibile) 
    198 * gestione degli storici (prezzi, ordini, ..) 
    199  
     219 * L' UM dovrebbe permettere di calcolare in automatico il prezzo per Kilo o litro quando possibile) 
     220 * gestione degli storici (prezzi, ordini, ..)