Modificata la creazione del riepilogo, aggiungendo la memorizzazione

separata degli importi per singola riga.


git-svn-id: svn://10.65.10.50/trunk@3427 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1996-08-23 07:12:47 +00:00
parent 14e6fd8fd8
commit 3cfcc807d9
2 changed files with 27 additions and 12 deletions

View File

@ -58,10 +58,13 @@ void TDocumentoEsteso::compile_summary()
const int items = rows();
_summary_table.destroy();
_summary_array.destroy();
_imposte = 0.0;
_importi_netti = 0.0;
const bool val = in_valuta();
// Scorre tutte le righe e compila la tabellina _summary_table
// Scorre tutte le righe e compila la tabellina _summary_table, per codice iva,
// nonche' il galactic_array _summary_array dove le informazioni sono registrate per singola riga
// cio' ad usi generici: porco diavolo!
for (int i = 1; i <= items; i++)
{
TRectype& r = row(i);
@ -89,23 +92,32 @@ void TDocumentoEsteso::compile_summary()
iva.ceil(val ? _parm.imp_val : _parm.imp_lit); // imposta calcolata
// Aggiorna o aggiunge l'elemento se non esiste
TRiepilogo_Iva riepilogo_tmp;
TRiepilogo_Iva riepilogo_tmp,row_riep;
const bool exists = _summary_table.is_key(codiva);
TRiepilogo_Iva& riepilogo = (exists ? (TRiepilogo_Iva&)_summary_table[codiva] : riepilogo_tmp);
// Aggiorna anche il totale importi netti ed il totale imposte
_importi_netti += imponibile;
_imposte += iva;
riepilogo.imp() += imponibile; riepilogo.iva() += iva;
row_riep.imp() = imponibile; row_riep.iva() = iva;
riepilogo.ali() = aliquota; riepilogo.cod() = codiva;
row_riep.ali() = aliquota; row_riep.cod() = codiva;
TString16 tipo(_iva->get("S1"));
if (tipo == "VE") riepilogo.tipo() = 2;
else if (tipo == "ES") riepilogo.tipo() = 4;
else if (tipo == "NI") riepilogo.tipo() = 8;
else if (tipo == "NS") riepilogo.tipo() = 16;
else riepilogo.tipo() = 1; // Regime IVA normale
int tipo_i = 1;// Regime IVA normale
if (tipo == "VE") tipo = 2;
else if (tipo == "ES") tipo = 4;
else if (tipo == "NI") tipo = 8;
else if (tipo == "NS") tipo= 16;
riepilogo.tipo() = tipo_i;
row_riep.tipo() = tipo_i;
if (riepilogo.tipo() != 1) // Se non e' regime normale salva anche la descrizione
riepilogo.des() = _iva->get("S0");
{
TString s(_iva->get("S0"));
riepilogo.des() = s;
row_riep.des() = s;
}
_summary_table.add(codiva,riepilogo,exists);
_summary_array.add(row_riep,nriga);
}
// Inizializza l'array di ordine
for (i = 0; i<32;i++)
@ -187,7 +199,7 @@ void TDocumentoEsteso::scadenze_recalc()
const bool valuta = in_valuta();
if (valuta)
{
real change(cambio());
const real change(cambio());
real val1 = totimponibili * change;
real val2 = totimposte * change;
real val3 = totspese * change;

View File

@ -88,7 +88,8 @@ class TDocumentoEsteso : public TDocumento
int _sum_filter; // Filtro corrente della riga TRiepilogo_Iva in corso di stampa (-1 se non ha ancora calcolato la tabella)
TString_array _order_array; // Array di TToken_string contenenti i codici IVA soddisfacenti ad ogni tipo di filtro
TAssoc_array _summary_table; // Array dove vengono memorizzate le imposte per aliquota
TRiepilogo_Iva _sum_current; // Riga corrente del riepilogo
TArray _summary_array; // Array dove vengono memorizzate le imposte/imponibili per riga
TRiepilogo_Iva _sum_current; // Riga corrente del riepilogo
// membri per il calcolo del riepilogo scadenze
TString_array _scadenze_array;// Array che contiene le scadenze ("<data>|<importo>")
@ -102,10 +103,12 @@ public:
void compile_summary(); // Aggiorna la tabella riepilogativa
void summary_filter(byte selector); // filtra la tabellina secondo il filtro corrente se non e' gia' stato fatto
void summary_set_next(); // seleziona il prossimo elemento del filtro
TRiepilogo_Iva& sum_current() { return _sum_current; } // ritorna la riga corrente del filtro corrente
const TRiepilogo_Iva& sum_current() { return _sum_current; } // ritorna la riga corrente del filtro corrente
const char * summary_get(const TString& w); // ritorna l'informazione richiesta estratta dall'elemento corrente
int summary_items() { return _summary_table.items();} // ritorna il numero di righe in totale della tabellina
TAssoc_array& summary() { return _summary_table; }
const TAssoc_array& summary() { return _summary_table; }
const TArray& summary_array() { return _summary_array;}
// Funzioni per il ricalcolo delle scadenze
void scadenze_recalc(); // resetta e ricalcola le scadenze