46 lines
2.5 KiB
Plaintext
46 lines
2.5 KiB
Plaintext
|
Struttura base del programma
|
|||
|
----------------------------
|
|||
|
ca3800.cpp : gestione maschera, creazione report ed applicazione
|
|||
|
ca3801.cpp : gestione report a colonne variabili in base alla struttura del piano dei conti
|
|||
|
ca3883.cpp : programma vero e proprio, con tutta la parte di calcolo
|
|||
|
|
|||
|
La sequenza di calcolo <20> la seguente:
|
|||
|
1) calcolo del contributo dei saldi analitici alla data fine esercizio; tale data corrisponde alla fine dell'esercizio selezionato se specificata sulla
|
|||
|
maschera, oppure alla fine dell'esercizio precedente se specificata una data inferiore (bilancio alla data)
|
|||
|
2) calcolo del contributo (ai soli totali) dei saldi futuri; partono dell'esercizio selezionato se il campo 'alla data' <20> < datafine esercizio, oppure
|
|||
|
dall'esercizio successivo se il campo 'alla data' coincide con datafine esercizio
|
|||
|
Solo per il bilancio alla data:
|
|||
|
3) calcolo del contributo dei movimenti analitici nel periodo di calcolo dell'esercizio selezionato
|
|||
|
4) calcolo del contributo dei documenti non contabilizzati nello stesso periodo
|
|||
|
5) calcolo del contributo degli ordini non evasi nello stesso periodo
|
|||
|
|
|||
|
|
|||
|
Calcolo della durata della vita di una riga
|
|||
|
-------------------------------------------
|
|||
|
|
|||
|
1) se il movimento <20> di quelli con la data fine competenza = data fine commessa di ogni riga (MOVANA.AUTOFCOMP) pone la datafinecomp della riga
|
|||
|
= data finale della commessa sulla riga tenendo conto anche di eventuali proroghe
|
|||
|
|
|||
|
2) se invece il movimento ha datafinecomp autonoma, Viene letta la data di fine competenza in testata (MOVANA.DATAFCOMP) valida per ogni riga
|
|||
|
|
|||
|
3) se anche questa data fosse vuota -> pone la datafinecomp = datacomp (MOVANA.DATAFCOMP = MOVANA.DATACOMP) -> movimento con durata 1 giorno
|
|||
|
|
|||
|
4) se la datafinecomp < datainizio esercizio selezionato -> scarta la riga perch<63> <20> gi<67> espirata prima del periodo da calcolare
|
|||
|
|
|||
|
5) calcola la vita totale della riga = datafinecomp - datacomp + 1 (in giorni)
|
|||
|
|
|||
|
6) se vita_totale_riga > 1 giorno procede al riproporzionamento dell'importo
|
|||
|
|
|||
|
7) Calcolo della frazione di vita utile della riga
|
|||
|
--------------------------------------------------
|
|||
|
La frazione di vita utile della riga che verr<72> usata per il riproporzionamento degli importi <20>:
|
|||
|
|
|||
|
vita_frazione_riga = fine_intervallo - inizio_intervallo + 1 (in giorni)
|
|||
|
|
|||
|
dove:
|
|||
|
fine_intervallo = MIN(datacalcolo sulla maschera, datafinecomp)
|
|||
|
inizio_intervallo = MAX(data inizio esercizio selezionato, datacompetenza)
|
|||
|
|
|||
|
se (vita_frazione_riga > 1 AND < vita_totale_riga) si procede al riproporzionamento:
|
|||
|
|
|||
|
importo_riproporzionato = importo_riga * vita_frazione / vita_totale
|