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:
parent
484b8e471c
commit
fb9ea98854
@ -1,18 +1,57 @@
|
||||
#include "velib02.h"
|
||||
|
||||
////////////////
|
||||
// Riepilogo IVA
|
||||
////////////////
|
||||
Riepilogo_Iva& Riepilogo_Iva::operator=(Riepilogo_Iva& a)
|
||||
/////////////////////////////////////////////////////////////
|
||||
// TCodice_numerazione
|
||||
/////////////////////////////////////////////////////////////
|
||||
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();
|
||||
_cod = a.cod(); _tipo = a.tipo(); _des = a.des();
|
||||
return *this;
|
||||
}
|
||||
|
||||
//////////////////
|
||||
/////////////////////////////////////////////////////////////
|
||||
//TDocumentoEsteso
|
||||
//////////////////
|
||||
/////////////////////////////////////////////////////////////
|
||||
void TDocumentoEsteso::compile_summary()
|
||||
{
|
||||
_sum_filter = 0;
|
||||
@ -50,9 +89,9 @@ void TDocumentoEsteso::compile_summary()
|
||||
iva.ceil(val ? _parm.imp_val : _parm.imp_lit); // imposta calcolata
|
||||
|
||||
// Aggiorna o aggiunge l'elemento se non esiste
|
||||
Riepilogo_Iva riepilogo_tmp;
|
||||
TRiepilogo_Iva riepilogo_tmp;
|
||||
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
|
||||
_importi_netti += imponibile;
|
||||
_imposte += iva;
|
||||
@ -86,7 +125,7 @@ void TDocumentoEsteso::summary_filter(byte selector)
|
||||
// Procedimento:
|
||||
// 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
|
||||
// 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_filter = selector;
|
||||
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
|
||||
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++)
|
||||
{
|
||||
if (curr->tipo() & _sum_filter) // se fa parte del filtro selezionato schiaffa il codice nella TToken_string
|
||||
codici.add(curr->cod());
|
||||
curr = (Riepilogo_Iva*) _summary_table.succ_item();
|
||||
curr = (TRiepilogo_Iva*) _summary_table.succ_item();
|
||||
}
|
||||
codici.restart();
|
||||
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))
|
||||
{
|
||||
// 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;
|
||||
}
|
||||
else
|
||||
@ -221,12 +260,12 @@ real TDocumentoEsteso::tot_imponibili(byte selector)
|
||||
|
||||
real number = 0.0;
|
||||
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++)
|
||||
{
|
||||
if (curr->tipo() & selector) // se fa parte del filtro selezionato schiaffa il codice nella TToken_string
|
||||
number += curr->imp();
|
||||
curr = (Riepilogo_Iva*) _summary_table.succ_item();
|
||||
curr = (TRiepilogo_Iva*) _summary_table.succ_item();
|
||||
}
|
||||
return number;
|
||||
}
|
||||
@ -262,6 +301,21 @@ TDocumentoEsteso::TDocumentoEsteso(const TRectype& rec, TCliFor *cli)
|
||||
{
|
||||
_iva = new TTable("%IVA");
|
||||
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)
|
||||
@ -270,6 +324,23 @@ TDocumentoEsteso::TDocumentoEsteso(const TRectype& rec, dec_parm & parm, TCliFor
|
||||
_parm = parm;
|
||||
_iva = new TTable("%IVA");
|
||||
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()
|
||||
|
44
ve/velib02.h
44
ve/velib02.h
@ -17,11 +17,38 @@ struct dec_parm {
|
||||
// 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
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class Riepilogo_Iva : public TObject
|
||||
class TRiepilogo_Iva : public TObject
|
||||
{
|
||||
real _imp;
|
||||
real _iva;
|
||||
@ -40,10 +67,10 @@ public:
|
||||
TString& des() { return _des;} // Descrizione
|
||||
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 = ""; }
|
||||
virtual TObject* dup() const { return new Riepilogo_Iva(*this); }
|
||||
Riepilogo_Iva& operator = (Riepilogo_Iva& a);
|
||||
Riepilogo_Iva() {_imp = 0.0; _iva = 0.0; _ali = 0.0; _tipo = 0;}
|
||||
~Riepilogo_Iva() {};
|
||||
virtual TObject* dup() const { return new TRiepilogo_Iva(*this); }
|
||||
TRiepilogo_Iva& operator = (TRiepilogo_Iva& a);
|
||||
TRiepilogo_Iva() {_imp = 0.0; _iva = 0.0; _ali = 0.0; _tipo = 0;}
|
||||
~TRiepilogo_Iva() {};
|
||||
};
|
||||
|
||||
class TDocumentoEsteso : public TDocumento
|
||||
@ -58,10 +85,10 @@ class TDocumentoEsteso : public TDocumento
|
||||
|
||||
// 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
|
||||
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
|
||||
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
|
||||
TString_array _scadenze_array;// Array che contiene le scadenze ("<data>|<importo>")
|
||||
@ -75,7 +102,7 @@ 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
|
||||
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
|
||||
int summary_items() { return _summary_table.items();} // ritorna il numero di righe in totale della tabellina
|
||||
TAssoc_array& summary() { return _summary_table; }
|
||||
@ -110,6 +137,7 @@ public:
|
||||
void set_condv(TCliFor * cli); // Cambia le condizioni di vendita
|
||||
TDocumentoEsteso (const TRectype & rec, dec_parm & parm, TCliFor * cli = NULL) ;
|
||||
TDocumentoEsteso (const TRectype & rec, TCliFor * cli = NULL) ;
|
||||
TDocumentoEsteso () ;
|
||||
~TDocumentoEsteso();
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user