devcode-it / openstamanager

Il software gestionale open source per l'assistenza tecnica e la fatturazione
https://www.openstamanager.com
GNU General Public License v3.0
104 stars 69 forks source link

Generalizzazione sistema evasioni documenti #786

Open Dasc3er opened 4 years ago

Dasc3er commented 4 years ago

Comportamento richiesto

Molto spesso vengono richieste delle nuove relazioni di importazione documenti in altri documenti. Esempio: importare attività in ordini, ddt in attività, preventivi in ddt, ... (#742, #582)

Potrebbe essere utile sviluppare una generalizzazione del sistema attuale: dato un elenco di classi standard, il sistema dovrebbe visualizzare in automatico i record relativi per l'anagrafica corrente che possono essere evasi o utilizzati per creare nuovi documenti. Questo dovrebbe inoltre essere personalizzabile dall'utente a livello di interfaccia grafica, in modo da non riempire le pagine di pulsanti poco utili. Per generalizzare gli stati propongo l'introduzione di nuovi flag is_evadibilie e is_evaso, che andrebbero a sostituire i il relativo funzionamento di is_fatturabile e is_completo per l'evasione documenti. is_completo deve essere utilizzato per gestire il completamento del documento, che diviene quindi non modificabile.

Un primo problema in questo contesto è la gestione degli interventi, che presenta un sistema non standard di importazione a causa di sessioni di lavoro, viaggio e diritto di chiamata. Un interessante applicazione in questo senso può essere: https://stackoverflow.com/questions/50585390/laravel-variable-model-polymorphic, che permette di separare la gestione delle righe dalle classi standard Row/Article/... e lascerebbe una maggiore flessibilità anche per la gestione delle sessioni.

E' inoltre necessario prevedere una generalizzazione per l'aggiunta di un collegamento tra documenti, come avviene ora tra interventi e contratti/preventivi: in questo caso l'evasione del contratto/preventivo dovrebbe automaticamente evadere l'intervento, semplicemente modificandone lo stato e non lavorando sulle quantità. Questo problema dei documenti collegati ma non tramite evasione si potrebbe risolvere con un metodo generale getRelatedDocuments() che restituisce i documenti che devono essere processati insieme al corrente. In questo caso, se ad esempio un contratto viene considerato come semplice contenitore per diversi interventi, il metodo restituisce solo gli interventi e pertanto il contratto viene completamente ignorato. In questo sistema resta da definire come procedere con i riferimenti, perché tutti i documenti vengono importati separatamente e pertanto si perderebbe il riferimento al "contenitore".

Dasc3er commented 4 years ago

Il sistema dovrebbe essere anche in grado di prevedere una gestione più complessa dei contenuti, quale quella prevista per la fatturazione di contratti e preventivi per le future versioni #788.

Dasc3er commented 4 years ago

Riferimento ulteriore con dettagli: #381