Aggiunte utili (indispensabili!) setkey(1) ovunque ci fosse una read

git-svn-id: svn://10.65.10.50/trunk@728 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1994-12-05 14:21:36 +00:00
parent 0bc26beeb3
commit f653e062d1
8 changed files with 2883 additions and 2900 deletions

View File

@ -1631,6 +1631,14 @@ bool TPrimanota_application::corrlire_handler(TMask_field& f, KEY key)
} }
} }
if (key == K_ENTER)
{
const TString16 im(m.get(F_IMPONIBILI));
const char* cl = f.get();
if (im != cl)
warning_box("Il corrispettivo in lire e' diverso dal totale degli imponibili");
}
return TRUE; return TRUE;
} }

View File

@ -46,6 +46,7 @@ bool TRegistro::read(const char* cod, int year)
int err = ~NOERR; int err = ~NOERR;
TTable reg("REG"); TTable reg("REG");
reg.setkey(1);
if (cod && *cod > ' ') if (cod && *cod > ' ')
{ {
TString16 chiave; chiave.format("%04d%s", year, cod); TString16 chiave; chiave.format("%04d%s", year, cod);
@ -144,6 +145,7 @@ bool TRegistro::read_att()
return TRUE; return TRUE;
TLocalisamfile attiv(LF_ATTIV); TLocalisamfile attiv(LF_ATTIV);
attiv.setkey(1);
attiv.put("CODDITTA", main_app().get_firm()); attiv.put("CODDITTA", main_app().get_firm());
attiv.put("CODATT", attivita()); attiv.put("CODATT", attivita());
const int err = attiv.read(); const int err = attiv.read();
@ -220,17 +222,16 @@ bool TRegistro::update(long protiva, const TDate& datareg)
// Legge il libro giornale dell'anno specificato // Legge il libro giornale dell'anno specificato
bool TLibro_giornale::read(int y) bool TLibro_giornale::read(int y)
{ {
bool found = FALSE;
if (y <= 0) if (y <= 0)
{ {
const TDate oggi(TODAY); const TDate oggi(TODAY);
y = oggi.year(); y = oggi.year();
} }
TTable reg("REG");
bool found = FALSE;
TString16 anno; anno.format("%04d", y); TString16 anno; anno.format("%04d", y);
TTable reg("REG");
reg.setkey(1); reg.setkey(1);
reg.put("CODTAB", anno); // Cerca il primo registro dell'anno y reg.put("CODTAB", anno); // Cerca il primo registro dell'anno y
@ -260,8 +261,9 @@ TLibro_giornale::TLibro_giornale(int y)
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
TCausale::TCausale(const char* cod, int year) TCausale::TCausale(const char* cod, int year)
: TArray(12), _rec(LF_CAUSALI), _iva(iva_errata), : TArray(12), _rec(LF_CAUSALI),
_sezione_clifo(' '), _sezione_ritsoc(' '), _corrisp(FALSE) _iva(iva_errata), _corrisp(FALSE),
_sezione_clifo(' '), _sezione_ritsoc(' ')
{ {
if (*cod) read(cod, year); if (*cod) read(cod, year);
} }
@ -281,7 +283,6 @@ bool TCausale::read(const char* cod, int year)
if (*cod > ' ') if (*cod > ' ')
{ {
caus.setkey(1); caus.setkey(1);
caus.zero();
caus.put(CAU_CODCAUS, cod); caus.put(CAU_CODCAUS, cod);
int err = caus.read(); int err = caus.read();
@ -290,7 +291,6 @@ bool TCausale::read(const char* cod, int year)
TLocalisamfile rcaus(LF_RCAUSALI); TLocalisamfile rcaus(LF_RCAUSALI);
rcaus.setkey(1); rcaus.setkey(1);
rcaus.zero();
rcaus.put(CAU_CODCAUS, cod); rcaus.put(CAU_CODCAUS, cod);
rcaus.put(CAU_NRIGA, 0); rcaus.put(CAU_NRIGA, 0);
@ -312,6 +312,7 @@ bool TCausale::read(const char* cod, int year)
if (!ok && codreg.not_empty()) if (!ok && codreg.not_empty())
return error_box("Non esiste il registro '%s' per l'anno %d", return error_box("Non esiste il registro '%s' per l'anno %d",
(const char*)codreg, year); (const char*)codreg, year);
calcIVA();
} }
else else
{ {
@ -429,44 +430,36 @@ char TCausale::sezione_ritsoc()
return _sezione_ritsoc; return _sezione_ritsoc;
} }
TipoIVA TCausale::iva() const void TCausale::calcIVA()
{ {
if (_iva == iva_errata) TipoIVA i = nessuna_iva; // Tipo IVA di default
{ bool c = FALSE; // Corrispettivi di default
TipoIVA i = nessuna_iva; // Tipo IVA di default
bool c = FALSE; // Corrispettivi di default
TString16 tipodoc(_rec.get("TIPODOC")); const TString16 tipodoc(_rec.get("TIPODOC"));
if (tipodoc.not_empty()) if (tipodoc.not_empty())
{
TTable tpd("%TPD");
tpd.setkey(1);
tpd.put("CODTAB", tipodoc);
if (tpd.read() == NOERR)
{ {
TTable tpd("%TPD"); i = (TipoIVA)tpd.get_int("I0"); // IVA acquisti, vendite, generica
tpd.put("CODTAB", tipodoc); const TipoIVA ri = _reg.iva();
if (tpd.read() == NOERR) if (i == iva_generica)
i = ri;
if (i != ri)
{ {
i = (TipoIVA)tpd.get_int("I0"); // IVA acquisti, vendite, generica error_box("Tipo documento '%s' incompatibile con tipo registro", (const char*)tipodoc);
const TipoIVA ri = _reg.iva(); i = iva_errata;
if (i == iva_generica) }
i = ri; c = tpd.get_bool("B0");
if (i != ri)
{
error_box("Tipo documento incompatibile con tipo registro");
i = iva_errata;
}
c = tpd.get_bool("B0");
}
} }
((TCausale*)this)->_iva = i; // Ricorda IVA per la prossima volta else error_box("Tipo documento sconosciuto: '%s'", (const char*)tipodoc);
((TCausale*)this)->_corrisp = c; // Ricorda flag per la prossima volta
} }
return _iva; _iva = i;
_corrisp = c;
} }
bool TCausale::corrispettivi() const
{
if (_iva == iva_errata) iva();
return _corrisp;
}
bool TCausale::similar(const TCausale& c) const bool TCausale::similar(const TCausale& c) const
{ {
const char* err = ""; const char* err = "";

View File

@ -80,6 +80,7 @@ class TCausale : public TArray
protected: protected:
const TRectype& row(int num) const; const TRectype& row(int num) const;
void calcIVA();
public: public:
TBill& bill(int num, TBill& c) const; TBill& bill(int num, TBill& c) const;
@ -99,8 +100,8 @@ public:
const char* tipo_doc() const; const char* tipo_doc() const;
TRegistro& reg() const { return (TRegistro&)_reg; } TRegistro& reg() const { return (TRegistro&)_reg; }
TipoIVA iva() const; TipoIVA iva() const { return _iva; }
bool corrispettivi() const; bool corrispettivi() const { return _corrisp; }
bool saldaconto() const; bool saldaconto() const;
virtual bool ok() const; virtual bool ok() const;

View File

@ -1,144 +1,148 @@
#include <applicat.h> #include <applicat.h>
#include <mask.h> #include <mask.h>
#include <progind.h> #include <progind.h>
#include <urldefid.h> #include <urldefid.h>
#include "cg2200.h" #include "cg2200.h"
#include "cg2101.h" #include "cg2101.h"
#include <mov.h> #include <mov.h>
#include <rmov.h> #include <rmov.h>
#include <rmoviva.h> #include <rmoviva.h>
TString& add_plural(TString& s, long num, const char* name) TString& add_plural(TString& s, long num, const char* name)
{ {
const TFixed_string n(name); const TFixed_string n(name);
const char last = n[n.len()-1]; const char last = n[n.len()-1];
if (num < 1) if (num < 1)
{ {
s << "nessun"; s << "nessun";
if (toupper(last) == 'A' || toupper(n[0]) == 'Z' || if (toupper(last) == 'A' || toupper(n[0]) == 'Z' ||
toupper(n[0]) == 'S' && strchr("aeiouAEIOU", n[1]) == NULL) toupper(n[0]) == 'S' && strchr("aeiouAEIOU", n[1]) == NULL)
s << tolower(last); s << tolower(last);
s << ' ' << name; s << ' ' << name;
} }
else else
{ {
s << num << ' ' << name; s << num << ' ' << name;
if (num > 1) if (num > 1)
s[s.len()-1] = (last == 'a') ? 'e' : 'i'; s[s.len()-1] = (last == 'a') ? 'e' : 'i';
} }
return s; return s;
} }
class TDeleteprovv_app : public TApplication class TDeleteprovv_app : public TApplication
{ {
protected: protected:
virtual bool create(); virtual bool create();
virtual bool destroy(); virtual bool destroy();
virtual bool menu(MENU_TAG m); virtual bool menu(MENU_TAG m);
public: public:
TDeleteprovv_app() {}; TDeleteprovv_app() {};
}; };
bool TDeleteprovv_app::create() bool TDeleteprovv_app::create()
{ {
dispatch_e_menu(BAR_ITEM(1)); dispatch_e_menu(BAR_ITEM(1));
return TRUE; return TRUE;
} }
bool TDeleteprovv_app::destroy() bool TDeleteprovv_app::destroy()
{ {
return TRUE; return TRUE;
} }
bool TDeleteprovv_app::menu(MENU_TAG) bool TDeleteprovv_app::menu(MENU_TAG)
{ {
TMask m("cg2200a"); TMask m("cg2200a");
TCursor& cur = *m.efield(F_FROMDATE).browse()->cursor(); TCursor& cur = *m.efield(F_FROMDATE).browse()->cursor();
TLocalisamfile& mov = cur.file(LF_MOV); TLocalisamfile& mov = cur.file(LF_MOV);
TLocalisamfile rmov(LF_RMOV); TLocalisamfile rmov(LF_RMOV);
TLocalisamfile rmoviva(LF_RMOVIVA); TLocalisamfile rmoviva(LF_RMOVIVA);
while (m.run() != K_QUIT) while (m.run() != K_QUIT)
{ {
TRecnotype last = cur.items()-1; TRecnotype last = cur.items()-1;
mov.zero(); mov.zero();
const char* s = m.get(F_TODATE); const char* s = m.get(F_TODATE);
if (*s) if (*s)
{ {
mov.put(MOV_DATAREG, s); mov.put(MOV_DATAREG, s);
mov.put(MOV_NUMREG, m.get(F_TOREG)); mov.put(MOV_NUMREG, m.get(F_TOREG));
last = cur.read(); last = cur.read();
} }
mov.zero(); mov.zero();
mov.put(MOV_DATAREG, m.get(F_FROMDATE)); mov.put(MOV_DATAREG, m.get(F_FROMDATE));
mov.put(MOV_NUMREG, m.get(F_FROMREG)); mov.put(MOV_NUMREG, m.get(F_FROMREG));
const TRecnotype first = cur.read(); const TRecnotype first = cur.read();
const TRecnotype total = last-first+1; const TRecnotype total = last-first+1;
TString80 caption("Cancellazione di "); TString80 caption("Cancellazione di ");
add_plural(caption, total, "movimento"); add_plural(caption, total, "movimento");
if (!yesno_box(caption) || total < 1) if (!yesno_box(caption) || total < 1)
continue; continue;
TProgind pi(total, caption, FALSE, TRUE, 24); TProgind pi(total, caption, FALSE, TRUE, 24);
for (cur = first; cur.pos() <= last; ++cur) cur.freeze();
{ for (cur = first; cur.pos() <= last; ++cur)
const long numreg = mov.get_long(MOV_NUMREG); {
const long numreg = mov.get_long(MOV_NUMREG);
int err = cur.lock();
for (int rig = 1; err == NOERR; rig++) int err = cur.lock();
{ for (int rig = 1; err == NOERR; rig++)
rmov.put(RMV_NUMREG, numreg); {
rmov.put(RMV_NUMRIG, rig); rmov.put(RMV_NUMREG, numreg);
if (rmov.read(_isequal, _lock) != NOERR) break; rmov.put(RMV_NUMRIG, rig);
err = rmov.remove(); if (rmov.read(_isequal, _lock) != NOERR) break;
if (err != NOERR) err = rmov.remove();
caption.format("riga contabile %d", rig); if (err != NOERR)
} caption.format("riga contabile %d", rig);
for (rig = 1; err == NOERR; rig++) }
{ for (rig = 1; err == NOERR; rig++)
rmoviva.put(RMI_NUMREG, numreg); {
rmoviva.put(RMI_NUMRIG, rig); rmoviva.put(RMI_NUMREG, numreg);
if (rmoviva.read(_isequal, _lock) != NOERR) break; rmoviva.put(RMI_NUMRIG, rig);
err = rmov.remove(); if (rmoviva.read(_isequal, _lock) != NOERR) break;
if (err != NOERR) err = rmov.remove();
caption.format("riga IVA %d", rig); if (err != NOERR)
} caption.format("riga IVA %d", rig);
}
if (err == NOERR)
{ if (err == NOERR)
mov.setkey(1); // Isam bug on remove with key != 1 {
err = mov.remove(); const TRecnotype n = mov.recno();
} mov.setkey(1); // Isam bug on remove with key != 1
else mov.readat(n);
caption = "testata"; err = mov.remove();
if (err != NOERR)
if (err == NOERR) caption = "testata";
pi.addstatus(1); }
else
{ if (err == NOERR)
error_box("Errore %d nella cancellazione della %s del movimento %ld", pi.addstatus(1);
err, (const char*)caption, numreg); else
break; {
} error_box("Errore %d nella cancellazione della %s del movimento %ld",
} err, (const char*)caption, numreg);
} break;
}
return FALSE; }
} cur.freeze(FALSE);
}
int cg2200(int argc, char** argv) return FALSE;
{ }
TDeleteprovv_app a;
a.run(argc, argv, "Eliminazione movimenti provvisori");
return 0; int cg2200(int argc, char** argv)
{
TDeleteprovv_app a;
a.run(argc, argv, "Eliminazione provvisori");
return 0;
} }

File diff suppressed because it is too large Load Diff

View File

@ -1291,16 +1291,9 @@ void TMastrini_application::ricerca_dati_ditta()
_comuni->setkey(1); _comuni->setkey(1);
_comuni->curr().zero(); _comuni->curr().zero();
_comuni->curr().put(COM_COM,_comulc); _comuni->curr().put(COM_COM,_comulc);
if (_comuni->read() == NOERR) _comuni->read();
{ _com=_comuni->curr().get(COM_DENCOM);
_com=_comuni->curr().get(COM_DENCOM); _prov=_comuni->curr().get(COM_PROVCOM);
_prov=_comuni->curr().get(COM_PROVCOM);
}
else
{
_com="";
_prov="";
}
} }
// Crea l'intestazione per la stampa a 132 e a 198 caratteri // Crea l'intestazione per la stampa a 132 e a 198 caratteri
@ -1674,7 +1667,6 @@ void TMastrini_application::ricerca_clifo()
paiv = clifo.get(CLI_PAIV); paiv = clifo.get(CLI_PAIV);
cofi = clifo.get(CLI_COFI); cofi = clifo.get(CLI_COFI);
indcf = clifo.get(CLI_INDCF); indcf = clifo.get(CLI_INDCF);
indcf << " " << clifo.get(CLI_CIVCF);
capcf = clifo.get(CLI_CAPCF); capcf = clifo.get(CLI_CAPCF);
ptel = clifo.get(CLI_PTEL); ptel = clifo.get(CLI_PTEL);
tel = clifo.get(CLI_TEL); tel = clifo.get(CLI_TEL);
@ -1685,16 +1677,9 @@ void TMastrini_application::ricerca_clifo()
_comuni->curr().zero(); _comuni->curr().zero();
_comuni->curr().put(COM_STATO, statocf); _comuni->curr().put(COM_STATO, statocf);
_comuni->curr().put(COM_COM, comcf); _comuni->curr().put(COM_COM, comcf);
if (_comuni->read() == NOERR) _comuni->read();
{ dencom = _comuni->curr().get(COM_DENCOM);
dencom = _comuni->curr().get(COM_DENCOM); provcom = _comuni->curr().get(COM_PROVCOM);
provcom = _comuni->curr().get(COM_PROVCOM);
}
else
{
dencom = "";
provcom = "";
}
pconti.setkey(1); pconti.setkey(1);
pconti.zero(); pconti.zero();
@ -1750,28 +1735,19 @@ void TMastrini_application::ricerca_clifo()
set_header (5, "Comp. da@9g%s", (const char*) dataini); set_header (5, "Comp. da@9g%s", (const char*) dataini);
set_header (5, "@20ga@22g%s", (const char*) datafine); set_header (5, "@20ga@22g%s", (const char*) datafine);
} }
TParagraph_string s(indcf), s1(dencom);
set_header (5, "@33gP.I.@37g%-11s",(const char*) paiv); set_header (5, "@33gP.I.@37g%-11s",(const char*) paiv);
set_header (5, "@49gCF@52g%-16s",(const char*) cofi); set_header (5, "@49gCF@52g%-16s",(const char*) cofi);
set_header (5, "@69g%-25s", s.get()); set_header (5, "@69g%-25s",(const char*) indcf);
set_header (5, "@95g%-5s",(const char*) capcf); set_header (5, "@95g%-5s",(const char*) capcf);
set_header (5, "@101g%-25s", s1.get()); set_header (5, "@101g%-24s",(const char*) dencom);
set_header (5,"@127g%-5s",(const char*) provcom); set_header (5,"@126g%-5s",(const char*) provcom);
if (_numcarat == 2) if (_numcarat == 2)
{ {
set_header (5,"@134g%-4s",(const char*) ptel); set_header (5,"@134g%-4s",(const char*) ptel);
set_header (5,"@138g/@139g%-10s",(const char*) tel); set_header (5,"@138g/@139g%-10s",(const char*) tel);
} }
const char * p = s.get();
if (p != NULL)
set_header (5, "@69g%-25s", p);
p = s1.get();
if (p != NULL)
set_header (5, "@101g%-25s", p);
} }
// Se la ricerca selezionata sulla maschera e' per gruppo, conto, sottoconto // Se la ricerca selezionata sulla maschera e' per gruppo, conto, sottoconto
@ -1975,3 +1951,4 @@ int cg3200(int argc, char* argv[])
return 0; return 0;
} }

View File

@ -1,95 +1,95 @@
// TRigaiva_array // TRigaiva_array
// Tabella per il calcolo degli imponibili Iva // Tabella per il calcolo degli imponibili Iva
#include "cglib03.h" #include "cglib03.h"
bool TRigaiva_array::add_riga(const real& imponibile, const real& imposta, const char* codiva, const int tipodet, const int tipocr, const real& imponibilep, const real& impostap) bool TRigaiva_array::add_riga(const real& imponibile, const real& imposta, const char* codiva, const int tipodet, const int tipocr, const real& imponibilep, const real& impostap)
{ {
bool found = FALSE; bool found = FALSE;
for (int i = 0; i < items(); i++) for (int i = 0; i < items(); i++)
{ {
TRigaiva& r = riga(i); TRigaiva& r = riga(i);
if (r._codiva==codiva && tipodet==r._tipodet && tipocr==r._tipocr) if (r._codiva==codiva && tipodet==r._tipodet && tipocr==r._tipocr)
{ {
found = TRUE; found = TRUE;
r._imponibile += imponibile; r._imponibile += imponibile;
r._imposta += imposta; r._imposta += imposta;
r._imponibilep += imponibilep; r._imponibilep += imponibilep;
r._impostap += impostap; r._impostap += impostap;
} }
} }
if (!found) if (!found)
{ {
TRigaiva* r = new TRigaiva(imponibile,imposta,codiva,tipodet,tipocr,imponibilep,impostap); TRigaiva* r = new TRigaiva(imponibile,imposta,codiva,tipodet,tipocr,imponibilep,impostap);
add(r); add(r);
} }
return found; return found;
} }
bool TRiga_array::add_riga(const real& imponibile, const real& imposta, const char* codiva, const char* tipodoc, const real& imponibilep, const real& impostap) bool TRiga_array::add_riga(const real& imponibile, const real& imposta, const char* codiva, const char* tipodoc, const real& imponibilep, const real& impostap)
{ {
bool found = FALSE; bool found = FALSE;
for (int i = 0; i < items(); i++) for (int i = 0; i < items(); i++)
{ {
TRiga& r = riga(i); TRiga& r = riga(i);
if (r._codiva==codiva && r._tipodoc==tipodoc) if (r._codiva==codiva && r._tipodoc==tipodoc)
{ {
found = TRUE; found = TRUE;
r._imponibile += imponibile; r._imponibile += imponibile;
r._imposta += imposta; r._imposta += imposta;
r._imponibilep += imponibilep; r._imponibilep += imponibilep;
r._impostap += impostap; r._impostap += impostap;
} }
} }
if (!found) if (!found)
{ {
TRiga* r = new TRiga(imponibile,imposta,codiva,tipodoc,imponibilep,impostap); TRiga* r = new TRiga(imponibile,imposta,codiva,tipodoc,imponibilep,impostap);
add(r); add(r);
} }
return found; return found;
} }
bool TDociva_array::add_riga(const char* _descrdociva, const real& _importo,const int _natdoc) bool TDociva_array::add_riga(const char* _descrdociva, const real& _importo,const int _natdoc)
{ {
bool found = FALSE; bool found = FALSE;
for (int i = 0; i < items(); i++) for (int i = 0; i < items(); i++)
{ {
TDociva& r = riga(i); TDociva& r = riga(i);
if (r._descrdoc==_descrdociva) if (r._descrdoc==_descrdociva)
{ {
found = TRUE; found = TRUE;
if ((r._ndoc == 1)||(r._ndoc == 2)||(r._ndoc == 9))//||(r._ndoc == 4)) if ((r._ndoc == 1)||(r._ndoc == 2)||(r._ndoc == 9))//||(r._ndoc == 4))
r._totdociva += _importo; r._totdociva += _importo;
} }
} }
if (!found) if (!found)
{ {
if ((_natdoc == 1)||(_natdoc == 2)||(_natdoc == 9))//||(_natdoc == 4)) if ((_natdoc == 1)||(_natdoc == 2)||(_natdoc == 9))//||(_natdoc == 4))
{ {
TDociva* r = new TDociva(_descrdociva,_importo,_natdoc); TDociva* r = new TDociva(_descrdociva,_importo,_natdoc);
add(r); add(r);
} }
} }
return found; return found;
} }
bool TTipodoc_array::add_riga(const char* tipodoc, const char* descrdoc, const real& totdoc) bool TTipodoc_array::add_riga(const char* tipodoc, const char* descrdoc, const real& totdoc)
{ {
bool found = FALSE; bool found = FALSE;
for (int i = 0; i < items(); i++) for (int i = 0; i < items(); i++)
{ {
TTipodoc& r = (TTipodoc&)(*this)[i]; TTipodoc& r = (TTipodoc&)(*this)[i];
if (r._tipodoc==tipodoc) if (r._tipodoc==tipodoc)
{ {
found = TRUE; found = TRUE;
r._totdoc += totdoc; r._totdoc += totdoc;
} }
} }
if (!found) if (!found)
{ {
TTipodoc* r = new TTipodoc(tipodoc,descrdoc,totdoc); TTipodoc* r = new TTipodoc(tipodoc,descrdoc,totdoc);
add(r); add(r);
} }
return found; return found;
} }

View File

@ -1,83 +1,83 @@
// cglib03.h // cglib03.h
// TRigaiva_array // TRigaiva_array
// Tabella per il calcolo degli imponibili Iva // Tabella per il calcolo degli imponibili Iva
#ifndef __CGLIB03_H #ifndef __CGLIB03_H
#define __CGLIB03_H #define __CGLIB03_H
#ifndef __REAL_H #ifndef __REAL_H
#include <real.h> #include <real.h>
#endif #endif
#ifndef __STRINGS_H #ifndef __STRINGS_H
#include <strings.h> #include <strings.h>
#endif #endif
struct TDociva : public TObject struct TDociva : public TObject
{ {
TString _descrdoc; TString _descrdoc;
real _totdociva; real _totdociva;
int _ndoc; int _ndoc;
TDociva(const char* _descrdociva, const real& _importo,const int _natdoc):_descrdoc(_descrdociva),_totdociva(_importo),_ndoc(_natdoc) TDociva(const char* _descrdociva, const real& _importo,const int _natdoc):_descrdoc(_descrdociva),_totdociva(_importo),_ndoc(_natdoc)
{} {}
}; };
class TDociva_array : public TArray class TDociva_array : public TArray
{ {
public: public:
bool add_riga(const char* _descrdociva,const real& _importo,const int _natdoc); bool add_riga(const char* _descrdociva,const real& _importo,const int _natdoc);
TDociva& riga(int i) { return (TDociva&)(*this)[i]; } TDociva& riga(int i) { return (TDociva&)(*this)[i]; }
}; };
struct TRigaiva : public TObject struct TRigaiva : public TObject
{ {
real _imponibile, _imposta, _imponibilep, _impostap; //imponibili, imposte del periodo e progressivi real _imponibile, _imposta, _imponibilep, _impostap; //imponibili, imposte del periodo e progressivi
TString _codiva; TString _codiva;
int _tipodet, _tipocr; int _tipodet, _tipocr;
TRigaiva (const real& imponibile, const real& imposta, const char* codiva, const int tipodet, const int tipocr, const real& imponibilep, const real& impostap): TRigaiva (const real& imponibile, const real& imposta, const char* codiva, const int tipodet, const int tipocr, const real& imponibilep, const real& impostap):
_imponibile(imponibile),_imposta(imposta),_codiva(codiva),_tipodet(tipodet),_tipocr(tipocr),_imponibilep(imponibilep),_impostap(impostap) _imponibile(imponibile),_imposta(imposta),_codiva(codiva),_tipodet(tipodet),_tipocr(tipocr),_imponibilep(imponibilep),_impostap(impostap)
{} {}
}; };
class TRigaiva_array : public TArray class TRigaiva_array : public TArray
{ {
public: public:
bool add_riga(const real& imponibile, const real& imposta, const char* codiva, const int tipodet, const int tipocr, const real& imponibilep, const real& impostap); bool add_riga(const real& imponibile, const real& imposta, const char* codiva, const int tipodet, const int tipocr, const real& imponibilep, const real& impostap);
TRigaiva& riga(int i) { return (TRigaiva&)(*this)[i]; } TRigaiva& riga(int i) { return (TRigaiva&)(*this)[i]; }
}; };
struct TTipodoc : public TObject struct TTipodoc : public TObject
{ {
TString _tipodoc, _descrdoc; TString _tipodoc, _descrdoc;
real _totdoc; real _totdoc;
TTipodoc (const char* tipodoc, const char* descrdoc, const real& totdoc): TTipodoc (const char* tipodoc, const char* descrdoc, const real& totdoc):
_tipodoc(tipodoc),_descrdoc(descrdoc),_totdoc(totdoc) {} _tipodoc(tipodoc),_descrdoc(descrdoc),_totdoc(totdoc) {}
}; };
class TTipodoc_array : public TArray class TTipodoc_array : public TArray
{ {
public: public:
bool add_riga(const char* tipodoc, const char* descrdoc, const real& totdoc); bool add_riga(const char* tipodoc, const char* descrdoc, const real& totdoc);
TTipodoc& riga(int i) { return (TTipodoc&)(*this)[i]; } TTipodoc& riga(int i) { return (TTipodoc&)(*this)[i]; }
}; };
struct TRiga : public TObject struct TRiga : public TObject
{ {
real _imponibile, _imposta, _imponibilep, _impostap; real _imponibile, _imposta, _imponibilep, _impostap;
TString _codiva, _tipodoc; TString _codiva, _tipodoc;
TRiga (const real& imponibile, const real& imposta, const char* codiva, const char* tipodoc, const real& imponibilep, const real& impostap): TRiga (const real& imponibile, const real& imposta, const char* codiva, const char* tipodoc, const real& imponibilep, const real& impostap):
_imponibile(imponibile),_imposta(imposta),_codiva(codiva),_tipodoc(tipodoc),_imponibilep(imponibilep),_impostap(impostap) {} _imponibile(imponibile),_imposta(imposta),_codiva(codiva),_tipodoc(tipodoc),_imponibilep(imponibilep),_impostap(impostap) {}
}; };
class TRiga_array : public TArray class TRiga_array : public TArray
{ {
public: public:
bool add_riga(const real& imponibile, const real& imposta, const char* codiva, const char* tipodoc, const real& imponibilep, const real& impostap); bool add_riga(const real& imponibile, const real& imposta, const char* codiva, const char* tipodoc, const real& imponibilep, const real& impostap);
TRiga& riga(int i) { return (TRiga&)(*this)[i]; } TRiga& riga(int i) { return (TRiga&)(*this)[i]; }
}; };
#endif #endif