Aggiunta classe TCodicenumerazione e cambiata la

classe RiepilogoIVA in TRiepilogoIVA.
Impostati i parametri di default in TDcoumentoEsteso.


git-svn-id: svn://10.65.10.50/trunk@3417 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1996-08-21 10:24:21 +00:00
parent 484b8e471c
commit fb9ea98854
2 changed files with 121 additions and 22 deletions

View File

@ -1,18 +1,57 @@
#include "velib02.h" #include "velib02.h"
//////////////// /////////////////////////////////////////////////////////////
// Riepilogo IVA // TCodice_numerazione
//////////////// /////////////////////////////////////////////////////////////
Riepilogo_Iva& Riepilogo_Iva::operator=(Riepilogo_Iva& a) TCodice_numerazione::TCodice_numerazione(const char* codnum)
: TRectype(LF_TABCOM), _status(NOERR)
{
settab("NUM");
if (codnum && *codnum)
_status = read(codnum);
}
TCodice_numerazione::TCodice_numerazione(const TRectype& rec)
: TRectype(rec), _status(NOERR)
{ }
TCodice_numerazione::~TCodice_numerazione()
{
}
const TString& TCodice_numerazione::complete_num(long num)
{
TString codnum;
codnum.format("%ld");
codnum << prefisso();
codnum << num;
codnum << postfisso();
return codnum;
}
int TCodice_numerazione::read(const char* codnum)
{
TTable t("%NUM");
put("CODTAB", codnum);
int err = TRectype::read(t);
if (err != NOERR)
yesnofatal_box("Codice numerazione errato: %s", codnum);
return err;
}
/////////////////////////////////////////////////////////////
// TRiepilogo IVA
/////////////////////////////////////////////////////////////
TRiepilogo_Iva& TRiepilogo_Iva::operator=(TRiepilogo_Iva& a)
{ {
_imp = a.imp(); _iva = a.iva(); _ali = a.ali(); _imp = a.imp(); _iva = a.iva(); _ali = a.ali();
_cod = a.cod(); _tipo = a.tipo(); _des = a.des(); _cod = a.cod(); _tipo = a.tipo(); _des = a.des();
return *this; return *this;
} }
////////////////// /////////////////////////////////////////////////////////////
//TDocumentoEsteso //TDocumentoEsteso
////////////////// /////////////////////////////////////////////////////////////
void TDocumentoEsteso::compile_summary() void TDocumentoEsteso::compile_summary()
{ {
_sum_filter = 0; _sum_filter = 0;
@ -50,9 +89,9 @@ void TDocumentoEsteso::compile_summary()
iva.ceil(val ? _parm.imp_val : _parm.imp_lit); // imposta calcolata iva.ceil(val ? _parm.imp_val : _parm.imp_lit); // imposta calcolata
// Aggiorna o aggiunge l'elemento se non esiste // Aggiorna o aggiunge l'elemento se non esiste
Riepilogo_Iva riepilogo_tmp; TRiepilogo_Iva riepilogo_tmp;
const bool exists = _summary_table.is_key(codiva); const bool exists = _summary_table.is_key(codiva);
Riepilogo_Iva& riepilogo = (exists ? (Riepilogo_Iva&)_summary_table[codiva] : riepilogo_tmp); TRiepilogo_Iva& riepilogo = (exists ? (TRiepilogo_Iva&)_summary_table[codiva] : riepilogo_tmp);
// Aggiorna anche il totale importi netti ed il totale imposte // Aggiorna anche il totale importi netti ed il totale imposte
_importi_netti += imponibile; _importi_netti += imponibile;
_imposte += iva; _imposte += iva;
@ -86,7 +125,7 @@ void TDocumentoEsteso::summary_filter(byte selector)
// Procedimento: // Procedimento:
// Memorizza in un TString_array tante TToken_string quanti sono i filtri possibili // Memorizza in un TString_array tante TToken_string quanti sono i filtri possibili
// (al massimo 31 [1+2+4+8+16]). Ogni TToken_string contiene i codici IVA // (al massimo 31 [1+2+4+8+16]). Ogni TToken_string contiene i codici IVA
// delle righe di Riepilogo_Iva che soddisfano la condizione di filtro // delle righe di TRiepilogo_Iva che soddisfano la condizione di filtro
_sum_selected = TRUE; _sum_selected = TRUE;
_sum_filter = selector; _sum_filter = selector;
TToken_string& codici = _order_array.row(_sum_filter-1); TToken_string& codici = _order_array.row(_sum_filter-1);
@ -96,12 +135,12 @@ void TDocumentoEsteso::summary_filter(byte selector)
// Scorre sequenzialmente la tabella _summary_table e compone la TToken_string coni codici IVA // Scorre sequenzialmente la tabella _summary_table e compone la TToken_string coni codici IVA
const int items = _summary_table.items(); const int items = _summary_table.items();
Riepilogo_Iva* curr = (Riepilogo_Iva *) _summary_table.first_item(); TRiepilogo_Iva* curr = (TRiepilogo_Iva *) _summary_table.first_item();
for (int i = 0; i < items && curr != NULL; i++) for (int i = 0; i < items && curr != NULL; i++)
{ {
if (curr->tipo() & _sum_filter) // se fa parte del filtro selezionato schiaffa il codice nella TToken_string if (curr->tipo() & _sum_filter) // se fa parte del filtro selezionato schiaffa il codice nella TToken_string
codici.add(curr->cod()); codici.add(curr->cod());
curr = (Riepilogo_Iva*) _summary_table.succ_item(); curr = (TRiepilogo_Iva*) _summary_table.succ_item();
} }
codici.restart(); codici.restart();
summary_set_next(); // setta l'elemento corrente summary_set_next(); // setta l'elemento corrente
@ -117,7 +156,7 @@ void TDocumentoEsteso::summary_set_next()
if (codiva.not_empty() && _summary_table.is_key(codiva)) if (codiva.not_empty() && _summary_table.is_key(codiva))
{ {
// Estrae da _summary_table i dati relativio al codice corrispondente. // Estrae da _summary_table i dati relativio al codice corrispondente.
Riepilogo_Iva& riep= (Riepilogo_Iva&) _summary_table[codiva]; TRiepilogo_Iva& riep= (TRiepilogo_Iva&) _summary_table[codiva];
_sum_current = riep; _sum_current = riep;
} }
else else
@ -221,12 +260,12 @@ real TDocumentoEsteso::tot_imponibili(byte selector)
real number = 0.0; real number = 0.0;
const int items = _summary_table.items(); const int items = _summary_table.items();
Riepilogo_Iva* curr = (Riepilogo_Iva *) _summary_table.first_item(); TRiepilogo_Iva* curr = (TRiepilogo_Iva *) _summary_table.first_item();
for (int i = 0; i < items && curr != NULL; i++) for (int i = 0; i < items && curr != NULL; i++)
{ {
if (curr->tipo() & selector) // se fa parte del filtro selezionato schiaffa il codice nella TToken_string if (curr->tipo() & selector) // se fa parte del filtro selezionato schiaffa il codice nella TToken_string
number += curr->imp(); number += curr->imp();
curr = (Riepilogo_Iva*) _summary_table.succ_item(); curr = (TRiepilogo_Iva*) _summary_table.succ_item();
} }
return number; return number;
} }
@ -262,6 +301,21 @@ TDocumentoEsteso::TDocumentoEsteso(const TRectype& rec, TCliFor *cli)
{ {
_iva = new TTable("%IVA"); _iva = new TTable("%IVA");
if (cli != NULL) _condv = new TCond_vendita(*cli); if (cli != NULL) _condv = new TCond_vendita(*cli);
else
{
TCliFor cf;
TString16 tipocf,ocfpi;
long codcf;
tipocf = get("TIPOCF");
codcf = get_long("CODCF");
ocfpi = get("OCFPI");
cf.load(tipocf[0],codcf,ocfpi);
_condv = new TCond_vendita(cf);
}
// Inizializza i parametri di default
_parm.pri_lit = 0; _parm.pri_val = 3;
_parm.qta_lit = 3; _parm.qta_val = 3;
_parm.imp_lit = 0; _parm.imp_val = 3;
} }
TDocumentoEsteso::TDocumentoEsteso(const TRectype& rec, dec_parm & parm, TCliFor *cli) TDocumentoEsteso::TDocumentoEsteso(const TRectype& rec, dec_parm & parm, TCliFor *cli)
@ -270,6 +324,23 @@ TDocumentoEsteso::TDocumentoEsteso(const TRectype& rec, dec_parm & parm, TCliFor
_parm = parm; _parm = parm;
_iva = new TTable("%IVA"); _iva = new TTable("%IVA");
if (cli != NULL) _condv = new TCond_vendita(*cli); if (cli != NULL) _condv = new TCond_vendita(*cli);
else
{
TCliFor cf;
TString16 tipocf,ocfpi;
long codcf;
tipocf = get("TIPOCF");
codcf = get_long("CODCF");
ocfpi = get("OCFPI");
cf.load(tipocf[0],codcf,ocfpi);
_condv = new TCond_vendita(cf);
}
}
TDocumentoEsteso::TDocumentoEsteso()
: TDocumento(), _condv(NULL), _sum_filter(-1), _sum_selected(FALSE), _scadenze_current(-1)
{
_iva = new TTable("%IVA");
} }
TDocumentoEsteso::~TDocumentoEsteso() TDocumentoEsteso::~TDocumentoEsteso()

View File

@ -17,11 +17,38 @@ struct dec_parm {
// add other groups here // add other groups here
}; };
class TCodice_numerazione : public TRectype
{
int _status;
protected:
int read(const char * cod);
public:
TObject* dup() const { return new TCodice_numerazione(codice()); }
public:
const TString& codice() const { return get("CODTAB"); }
const TString& prefisso() const { return get("S6"); }
const TString& postfisso() const { return get("S7"); }
const bool manual_num() const { return get_bool("B0"); }
const bool auto_num() const { return get_bool("B1"); }
const TString& tipo_doc1() { return get("S2").mid(0,4);}
const TString& tipo_doc2() { return get("S2").mid(4,4);}
const TString& tipo_doc3() { return get("S2").mid(8,4);}
const TString& tipo_doc4() { return get("S2").mid(12,4);}
const TString& tipo_doc5() { return get("S2").mid(16,4);}
const TString& complete_num (long num);
int status() { return _status; }
TCodice_numerazione(const char* codnum = NULL);
TCodice_numerazione(const TRectype& rec);
virtual ~TCodice_numerazione();
};
////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////
// classe TDocumentoEsteso: oggetto che ha come finalita' il calcolo dei riepiloghi IVA // classe TDocumentoEsteso: oggetto che ha come finalita' il calcolo dei riepiloghi IVA
////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////
class Riepilogo_Iva : public TObject class TRiepilogo_Iva : public TObject
{ {
real _imp; real _imp;
real _iva; real _iva;
@ -40,10 +67,10 @@ public:
TString& des() { return _des;} // Descrizione TString& des() { return _des;} // Descrizione
byte& tipo(){ return _tipo;}// Tipo (Vedi opzioni per la selzione di filtro nella validate()) byte& tipo(){ return _tipo;}// Tipo (Vedi opzioni per la selzione di filtro nella validate())
void zero(){ _imp = 0.0; _iva = 0.0; _ali = 0.0; _tipo = 0; _cod = ""; _des = ""; } void zero(){ _imp = 0.0; _iva = 0.0; _ali = 0.0; _tipo = 0; _cod = ""; _des = ""; }
virtual TObject* dup() const { return new Riepilogo_Iva(*this); } virtual TObject* dup() const { return new TRiepilogo_Iva(*this); }
Riepilogo_Iva& operator = (Riepilogo_Iva& a); TRiepilogo_Iva& operator = (TRiepilogo_Iva& a);
Riepilogo_Iva() {_imp = 0.0; _iva = 0.0; _ali = 0.0; _tipo = 0;} TRiepilogo_Iva() {_imp = 0.0; _iva = 0.0; _ali = 0.0; _tipo = 0;}
~Riepilogo_Iva() {}; ~TRiepilogo_Iva() {};
}; };
class TDocumentoEsteso : public TDocumento class TDocumentoEsteso : public TDocumento
@ -58,10 +85,10 @@ class TDocumentoEsteso : public TDocumento
// membri per il calcolo del riepilogo IVA // membri per il calcolo del riepilogo IVA
bool _sum_selected; // TRUE se ha selezionato una riga del riepilogo, funge da semaforo per leggere la prossima bool _sum_selected; // TRUE se ha selezionato una riga del riepilogo, funge da semaforo per leggere la prossima
int _sum_filter; // Filtro corrente della riga Riepilogo_Iva in corso di stampa (-1 se non ha ancora calcolato la tabella) 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 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 TAssoc_array _summary_table; // Array dove vengono memorizzate le imposte per aliquota
Riepilogo_Iva _sum_current; // Riga corrente del riepilogo TRiepilogo_Iva _sum_current; // Riga corrente del riepilogo
// membri per il calcolo del riepilogo scadenze // membri per il calcolo del riepilogo scadenze
TString_array _scadenze_array;// Array che contiene le scadenze ("<data>|<importo>") TString_array _scadenze_array;// Array che contiene le scadenze ("<data>|<importo>")
@ -75,7 +102,7 @@ public:
void compile_summary(); // Aggiorna la tabella riepilogativa 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_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 void summary_set_next(); // seleziona il prossimo elemento del filtro
Riepilogo_Iva& sum_current() { return _sum_current; } // ritorna la riga corrente del filtro corrente 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 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 int summary_items() { return _summary_table.items();} // ritorna il numero di righe in totale della tabellina
TAssoc_array& summary() { return _summary_table; } TAssoc_array& summary() { return _summary_table; }
@ -110,6 +137,7 @@ public:
void set_condv(TCliFor * cli); // Cambia le condizioni di vendita void set_condv(TCliFor * cli); // Cambia le condizioni di vendita
TDocumentoEsteso (const TRectype & rec, dec_parm & parm, TCliFor * cli = NULL) ; TDocumentoEsteso (const TRectype & rec, dec_parm & parm, TCliFor * cli = NULL) ;
TDocumentoEsteso (const TRectype & rec, TCliFor * cli = NULL) ; TDocumentoEsteso (const TRectype & rec, TCliFor * cli = NULL) ;
TDocumentoEsteso () ;
~TDocumentoEsteso(); ~TDocumentoEsteso();
}; };