Skip to content

Generalizzazione sistema evasioni documenti #786

@Dasc3er

Description

@Dasc3er

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".

Metadata

Metadata

Assignees

No one assigned

    Labels

    da definireModifiche da pianficare e approfondirediscussioneDiscussioni sulle funzionalità e i loro utilizzomiglioriaProposte di miglioramenti

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions