Correzione errori segnalati da Gabri

git-svn-id: svn://10.65.10.50/trunk@183 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1994-09-07 16:59:33 +00:00
parent 228233db31
commit 60064f97d3
15 changed files with 979 additions and 613 deletions

View File

@ -52,6 +52,7 @@ TMask* TPrimanota_application::load_mask(int n)
m->set_handler(F_TOTALE, totale_handler);
m->set_handler(F_RITFIS, ritfis_handler);
m->set_handler(F_RITSOC, ritsoc_handler);
m->set_handler(F_CODIVA, main_codiva_handler);
m->set_handler(F_VISVAL, visval_handler);
m->set_handler(F_OCCASEDIT, occas_handler);
m->set_handler(F_SOLAIVA, solaiva_handler);
@ -152,16 +153,20 @@ bool TPrimanota_application::user_destroy()
bool TPrimanota_application::read_caus(const char* cod, int year)
{
const bool ok = causale().read(cod, year);
bool nob = FALSE, dob = FALSE;
if (ok)
{
TMask& m = *load_mask(_iva == nessuna_iva ? 1 : 2);
TEdit_field& nd = (TEdit_field&)m.field(F_NUMDOC); // Numero documento obbligatorio?
nd.check_type(_causale.num_doc() ? CHECK_REQUIRED : CHECK_NORMAL);
TEdit_field& dd = (TEdit_field&)m.field(F_DATADOC); // Data documento obbligatoria?
dd.check_type(_causale.data_doc() ? CHECK_REQUIRED : CHECK_NORMAL);
nob = _causale.num_doc();
dob = _causale.data_doc();
}
TMask& m = *load_mask(causale().iva() == nessuna_iva ? 1 : 2);
TEdit_field& nd = (TEdit_field&)m.field(F_NUMDOC); // Numero documento obbligatorio?
nd.check_type(nob ? CHECK_REQUIRED : CHECK_NORMAL);
TEdit_field& dd = (TEdit_field&)m.field(F_DATADOC); // Data documento obbligatoria?
dd.check_type(dob ? CHECK_REQUIRED : CHECK_NORMAL);
return ok;
}

View File

@ -32,7 +32,7 @@ END
NUMBER F_NUMREG 7
BEGIN
PROMPT 1 3 "Operazione n. "
PROMPT 57 3 "Operazione n."
FIELD NUMREG
FLAGS "RD"
KEY 1
@ -40,44 +40,44 @@ END
DATE F_DATAREG
BEGIN
PROMPT 44 3 "Data operazione "
PROMPT 1 3 "Data operazione "
FIELD DATAREG
END
STRING F_NUMDOC 7
BEGIN
PROMPT 1 4 "Documento n. "
FIELD NUMDOC
WARNING "La causale impone di specificare il numero documento"
END
DATE F_DATACOMP
BEGIN
PROMPT 44 4 "Data di competenza "
PROMPT 1 4 "Data di competenza "
FIELD DATACOMP
END
NUMBER F_ANNOES 4
BEGIN
PROMPT 1 5 "Esercizio "
PROMPT 57 4 "Esercizio "
FIELD ANNOES
FLAGS "D"
END
DATE F_DATADOC
BEGIN
PROMPT 1 5 "Data del documento "
FIELD DATADOC
WARNING "Specificare una data del documento non superiore a quella di registrazione"
VALIDATE DATE_CMP_FUNC <= F_DATAREG
END
STRING F_NUMDOC 7
BEGIN
PROMPT 57 5 "Documento n. "
FIELD NUMDOC
WARNING "La causale impone di specificare il numero documento"
END
NUMBER F_ANNOIVA 4
BEGIN
FLAGS "H"
END
DATE F_DATADOC
BEGIN
PROMPT 44 5 "Data del documento "
FIELD DATADOC
FLAGS "A"
WARNING "Specificare una data del documento non superiore a quella di registrazione"
VALIDATE DATE_CMP_FUNC <= F_DATAREG
END
STRING F_DESCAGG 5
BEGIN
PROMPT 1 6 "Descrizione "

View File

@ -53,6 +53,15 @@ BEGIN
FLAGS "DG"
END
NUMBER F_NUMREG 6
BEGIN
PROMPT 57 3 "Operazione n. "
FIELD NUMREG
FLAGS "RDG"
KEY 1
MESSAGE COPY,H_NUMREG
END
DATE F_DATAREG
BEGIN
PROMPT 1 3 "Data operazione "
@ -97,15 +106,6 @@ BEGIN
FLAGS "D"
END
NUMBER F_NUMREG 6
BEGIN
PROMPT 57 3 "Operazione n. "
FIELD LF_MOV->NUMREG
FLAGS "DG"
KEY 1
MESSAGE COPY,H_NUMREG
END
STRING F_NUMDOC 7
BEGIN
PROMPT 57 5 "Documento n. "
@ -373,7 +373,7 @@ END
STRING F_CODPAG 4
BEGIN
PROMPT 61 11 "Pagamento "
PROMPT 60 11 "Pagamento "
USE %CPG
INPUT CODTAB F_CODPAG
DISPLAY "Codice" CODTAB
@ -382,9 +382,33 @@ BEGIN
CHECKTYPE NORMAL
END
NUMBER F_TOTALE 15
BEGIN
PROMPT 1 12 "Totale documento "
FIELD TOTDOC
FLAGS "RV"
PICTURE "."
END
NUMBER F_RITFIS 15
BEGIN
PROMPT 1 13 "Ritenute fiscali "
FIELD RITFIS
FLAGS "RV"
PICTURE "."
END
NUMBER F_RITSOC 15
BEGIN
PROMPT 1 14 "Ritenute sociali "
FIELD LF_MOV->RITSOC
FLAGS "RV"
PICTURE "."
END
STRING F_CODIVA 4
BEGIN
PROMPT 1 12 "Codice IVA "
PROMPT 60 12 "Codice IVA "
FLAGS "U"
USE %IVA
INPUT CODTAB F_CODIVA
@ -396,48 +420,23 @@ BEGIN
CHECKTYPE NORMAL
END
NUMBER F_TOTALE 15
BEGIN
PROMPT 45 12 "Totale documento "
FIELD TOTDOC
FLAGS "RV"
PICTURE "."
END
NUMBER F_RITFIS 15
BEGIN
PROMPT 45 13 "Ritenute fiscali "
FIELD RITFIS
FLAGS "RV"
PICTURE "."
END
NUMBER F_RITSOC 15
BEGIN
PROMPT 45 14 "Ritenute sociali "
FIELD LF_MOV->RITSOC
FLAGS "RV"
PICTURE "."
END
DATE F_DATA74TER
BEGIN
PROMPT 1 13 "Data 74/ter "
PROMPT 54 13 "Data 74/ter "
CHECKTYPE REQUIRED
FIELD DATA74TER
END
NUMBER F_ANNORIF 4
BEGIN
PROMPT 1 14 "Rif.partita "
PROMPT 45 14 "Rif.partita "
FLAGS "A"
HELP "Anno di riferimento partita"
END
NUMBER F_NUMRIF 7
BEGIN
PROMPT 20 14 "/"
PROMPT 69 14 "/"
HELP "Numero documento (o protocollo IVA) di riferimento"
END

View File

@ -186,14 +186,18 @@ int TMovimentoPN::write(bool force, TDate&)
iva(i).put("TIPOATT", tipoatt);
}
}
_oldcg = _oldiva = 0;
int err = registra(FALSE, force);
if (err == NOERR)
{
const TDate datareg(r.get("DATAREG"));
TLibro_giornale gio(datareg.year());
gio.update(0L, datareg); // Aggiorna data registrazione sul libro giornale
if (reg.not_empty())
{
{ // Aggiorna data registrazione e protocollo IVA sul registro
const long protiva = r.get_long("PROTIVA");
const long uprotiva = r.get_long("UPROTIVA");
const TDate datareg = r.get_date("DATAREG");

View File

@ -1,44 +1,44 @@
#ifndef __RELATION_H
#include <relation.h>
#endif
class TMovimentoPN : public TRelation
{
// class TMovimentoPN : public TRelation
// @END
// @DPRIV
TArray _cg, _iva;
int _oldcg, _oldiva;
real _balance;
// @END
protected:
// @FPROT
int write_rec(bool re, const TRectype&r, TLocalisamfile* f);
int cancella(TLocalisamfile* f, int da, int a);
int registra(bool re, bool force);
int read_mov_rows();
// @END
public:
// @FPUB
virtual int next(TReclock lockop = _nolock) { return (file()->next(lockop) || read_mov_rows()); }
virtual int prev(TReclock lockop = _nolock) { return (file()->prev(lockop) || read_mov_rows()); }
virtual int first(TReclock lockop = _nolock) { return (file()->first(lockop) || read_mov_rows()); }
virtual int last(TReclock lockop = _nolock) { return (file()->last(lockop) || read_mov_rows()); }
virtual int skip(TRecnotype nrec, TReclock lockop = _nolock) { return (file()->skip(nrec, lockop) || read_mov_rows()); }
virtual int read(TIsamop op = _isgteq, TReclock lockop = _nolock, TDate& atdate = botime);
virtual int write (bool force = TRUE, TDate& atdate = botime);
virtual int rewrite(bool force = TRUE, TDate& atdate = botime);
virtual int remove (TDate& atdate = botime);
TRectype& cg(int i);
TRectype& iva(int i);
int cg_items() const { return _cg.items(); }
int iva_items() const { return _iva.items(); }
void destroy_rows();
TMovimentoPN();
virtual ~TMovimentoPN() {}
};
#ifndef __RELATION_H
#include <relation.h>
#endif
class TMovimentoPN : public TRelation
{
// class TMovimentoPN : public TRelation
// @END
// @DPRIV
TArray _cg, _iva;
int _oldcg, _oldiva;
real _balance;
// @END
protected:
// @FPROT
int write_rec(bool re, const TRectype&r, TLocalisamfile* f);
int cancella(TLocalisamfile* f, int da, int a);
int registra(bool re, bool force);
int read_mov_rows();
// @END
public:
// @FPUB
virtual int next(TReclock lockop = _nolock) { return (file()->next(lockop) || read_mov_rows()); }
virtual int prev(TReclock lockop = _nolock) { return (file()->prev(lockop) || read_mov_rows()); }
virtual int first(TReclock lockop = _nolock) { return (file()->first(lockop) || read_mov_rows()); }
virtual int last(TReclock lockop = _nolock) { return (file()->last(lockop) || read_mov_rows()); }
virtual int skip(TRecnotype nrec, TReclock lockop = _nolock) { return (file()->skip(nrec, lockop) || read_mov_rows()); }
virtual int read(TIsamop op = _isgteq, TReclock lockop = _nolock, TDate& atdate = (TDate&)botime);
virtual int write (bool force = TRUE, TDate& atdate = (TDate&)botime);
virtual int rewrite(bool force = TRUE, TDate& atdate = (TDate&)botime);
virtual int remove (TDate& atdate = (TDate&)botime);
TRectype& cg(int i);
TRectype& iva(int i);
int cg_items() const { return _cg.items(); }
int iva_items() const { return _iva.items(); }
void destroy_rows();
TMovimentoPN();
virtual ~TMovimentoPN() {}
};

View File

@ -53,18 +53,19 @@ int TPrimanota_application::date2esc(const TDate& d, int* prevesc)
// Calcolo della percentuale di un dato codice IVA
// Certified 99%
const real& TPrimanota_application::cod2IVA(const char* codiva)
const real& TPrimanota_application::cod2IVA(const TMask& m)
{
static TString16 _codiva;
static real _percent;
const TString& codiva = m.get(102);
if (_codiva != codiva)
{
_codiva = codiva;
TCodiceIVA c(_codiva);
_percent = c.percentuale();
}
return _percent;
}
@ -76,6 +77,23 @@ real TPrimanota_application::scorpora(real& imponibile, const real& percent)
return imposta;
}
real TPrimanota_application::totale_documento()
{
const TMask& m = mask();
const bool swapt = test_swap(FALSE); // Totale invertito ?
const bool swaps = test_swap(TRUE); // Ritenute sociali invertite ?
real tot(m.get(F_TOTALE));
tot += real(m.get(F_RITFIS));
real ritsoc(m.get(F_RITSOC));
if (swapt ^ swaps)
ritsoc = -ritsoc;
tot += ritsoc;
return tot;
}
// Determina se un codice sospeso o no
// Certified 50%
@ -452,6 +470,14 @@ bool TPrimanota_application::cg_notify(int r, KEY k)
cg.sheet_mask().enable(DLG_DELREC, tipo == ' ');
break;
case K_ENTER:
if (r == 0 && app().iva() == nessuna_iva && cg.row(1).empty_items())
{
TImporto i; i = row; i.swap_section();
TConto contro(row, 9, 0x3);
app().set_cgs_row(1, i, contro, "", ' ');
TConto conto(cg.row(1), 2, 0x3);
conto.add_to(cg.row(1), 2, 0x3);
}
app().calcola_saldo();
break;
case K_DEL:
@ -522,7 +548,7 @@ bool TPrimanota_application::imponibile_handler(TMask_field& f, KEY key)
}
if (iva.not_empty()) // Se c'e' il codice IVA
{
const real& percent = cod2IVA(iva);
const real& percent = cod2IVA(f.mask());
const real imponibile(f.get());
real imposta = abs(imponibile) * percent / 100.0; imposta.ceil();
if (imponibile.sign() < 0) imposta = -imposta;
@ -556,7 +582,7 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
if (key == K_ENTER)
{
const real imponibile(f.mask().get(101));
const real& percent = cod2IVA(f.mask().get(102));
const real& percent = cod2IVA(f.mask());
real imposta = abs(imponibile) * percent / 100.0;
imposta.ceil();
if (imponibile < ZERO) imposta = -imposta;
@ -564,7 +590,7 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
const real val(f.get());
if (val != imposta)
{
if (val != 0.0 || !app().causale().reg().corrispettivi())
if (val != 0.0 || !app().causale().corrispettivi())
{
const TString16 wrong(val.string("."));
const TString16 right(imposta.string("."));
@ -576,7 +602,7 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
if (key == K_F8 && f.get().empty())
{
real imponibile(f.mask().get(101));
const real& percent = cod2IVA(f.mask().get(102));
const real& percent = cod2IVA(f.mask());
const real imposta = scorpora(imponibile, percent);
f.mask().set(101, imponibile.string());
f.set(imposta.string());
@ -704,18 +730,7 @@ bool TPrimanota_application::iva_handler(TMask_field& f, KEY k)
if (k != K_ENTER) return TRUE;
const real imp = app().calcola_imp();
const TMask& m = f.mask();
const bool swapt = app().test_swap(FALSE);
const bool swaps = app().test_swap(TRUE);
real tot(m.get(F_TOTALE));
tot += real(m.get(F_RITFIS));
if (swapt ^ swaps)
tot -= real(m.get(F_RITSOC));
else
tot += real(m.get(F_RITSOC));
const real tot = app().totale_documento();
if (imp != tot)
{
@ -822,24 +837,36 @@ bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
if (!ok)
return f.error_box("Non esiste il libro giornale dell'esercizio %d", ae);
if (dr < app().giornale().last_print())
return f.error_box("La data dell'operazione e' antecedente alla "
"data di stampa del libro giornale dell'esercizio %d", ae);
const TLibro_giornale& gio = app().giornale();
const TDate ljp(gio.global_last_print());
if (dr <= ljp)
return f.error_box("La data dell'operazione e' antecedente alla data\n"
"dell'ultima stampa del libro giornale: %s", ljp.string());
if (dr < gio.last_reg())
warning_box("La data dell'operazione e' antecedente al %s, ultima registrazione\n"
"sul libro giornale del %d",
gio.last_reg().string(), ae);
if (!m.query_mode() && app().iva() != nessuna_iva)
{
const int annoiva = m.get_int(F_ANNOIVA);
if (dr.year() != annoiva)
TRegistro& reg = app().causale().reg();
const TString16 codreg(reg.name());
if (reg.year() != dr.year())
{
TRegistro& reg = app().causale().reg();
const TString16 codreg(reg.name());
ok = reg.read(codreg, dr.year());
if (ok && dr < reg.last_reg())
warning_box("La data dell'operazione e' antecedente al %s, ultima registrazione "
"sul registro '%s' del %d",
reg.last_reg().string(), (const char*)codreg, dr.year());
const bool ok = reg.read(codreg, dr.year());
if (!ok) return FALSE;
}
if (dr <= reg.last_print())
return error_box("La data dell'operazione e' antecedente al %s, ultima\n"
"data di stampa del registro '%s' dell'anno %d",
reg.last_print().string(), (const char*)codreg, dr.year());
if (dr < reg.last_reg())
warning_box("La data dell'operazione e' antecedente al %s, ultima registrazione\n"
"sul registro '%s' dell'anno %d",
reg.last_reg().string(), (const char*)codreg, dr.year());
}
}
return ok;
@ -989,7 +1016,7 @@ void TPrimanota_application::add_cgs_tot(TMask& m)
conto = bill.conto(); m.set(F_CONTOCLIFO, conto);
}
if (tipo == 'C' && causale().reg().corrispettivi())
if (tipo == 'C' && causale().corrispettivi())
tipo = ' ';
TConto c(gruppo, conto, codice, tipo);
real tot(m.get(F_TOTALE));
@ -997,41 +1024,6 @@ void TPrimanota_application::add_cgs_tot(TMask& m)
// Creazione/Aggiornamento riga totale
const int pos = type2pos('T');
set_cgs_row(pos, real2imp(tot, 'T'), c, "Totale documento", 'T');
const TCodiceIVA iva(m.get(F_CODIVA));
TToken_string& row = ivas().row(0);
const real imp(row.get(0));
if (imp == ZERO && iva.ok())
{
iva_notify(0, K_SPACE);
const real imposta = scorpora(tot, iva.percentuale());
row.add(tot.string(), 0); // imponibile
row.add(iva.codice(), 1); // codice IVA
row.add(imposta.string(), 3); // imposta
TConto bill; // Conto della prima riga IVA
const TString& tipo = iva.tipo();
if (tipo.not_empty())
{
if (tipo == "ES") _causale.bill(5, bill); else
if (tipo == "NI") _causale.bill(6, bill); else
if (tipo == "NS") _causale.bill(7, bill);
}
if (!bill.ok() && !causale().reg().corrispettivi())
bill.set(m.get_int(F_GRUPPORIC), m.get_int(F_CONTORIC), m.get_long(F_SOTTOCONTORIC));
if (!bill.ok())
_causale.bill(2, bill);
row.add(bill.tipo(), 5);
row.add(bill.gruppo(), 6);
row.add(bill.conto(), 7);
row.add(bill.sottoconto(), 8);
row.add(bill.descrizione(), 9);
app().ivas().force_update(0);
iva_notify(0, K_ENTER);
}
}
@ -1054,17 +1046,68 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
}
// Handler of the F_CODIVA
// Certified 99%
bool TPrimanota_application::main_codiva_handler(TMask_field& f, KEY key)
{
if (key == K_TAB && f.focusdirty() && f.get().not_empty())
{
TToken_string& row = app().ivas().row(0);
const real imp(row.get(0));
if (imp == ZERO)
{
iva_notify(0, K_SPACE);
const TCodiceIVA iva(f.get());
real tot = app().totale_documento();
real imposta;
if (!app().causale().corrispettivi())
imposta = app().scorpora(tot, iva.percentuale());
row.add(tot.string(), 0); // imponibile
row.add(iva.codice(), 1); // codice IVA
row.add(imposta.string(), 3); // imposta
TConto bill; // Conto della prima riga IVA
const TString& tipo = iva.tipo();
if (tipo.not_empty())
{
if (tipo == "ES") app().causale().bill(5, bill); else
if (tipo == "NI") app().causale().bill(6, bill); else
if (tipo == "NS") app().causale().bill(7, bill);
}
if (!bill.ok() && !app().causale().corrispettivi())
{
const TMask& m = f.mask();
bill.set(m.get_int(F_GRUPPORIC), m.get_int(F_CONTORIC), m.get_long(F_SOTTOCONTORIC));
}
if (!bill.ok())
app().causale().bill(2, bill);
row.add(bill.tipo(), 5);
row.add(bill.gruppo(), 6);
row.add(bill.conto(), 7);
row.add(bill.sottoconto(), 8);
row.add(bill.descrizione(), 9);
app().ivas().force_update(0);
iva_notify(0, K_ENTER);
}
}
return TRUE;
}
// Handler of the F_TOTALE
// Certified 99%
bool TPrimanota_application::totale_handler(TMask_field& f, KEY key)
{
bool ok = TRUE;
if (key == K_TAB && f.focusdirty())
{
app().add_cgs_tot(f.mask());
} else
if (key == K_ENTER && f.get().empty())
return f.yesno_box("Totale documento nullo: continuare ugualmente?");
return TRUE;
if (key == K_ENTER && f.get().empty())
ok = f.yesno_box("Totale documento nullo: continuare ugualmente?");
return ok;
}
@ -1130,8 +1173,7 @@ bool TPrimanota_application::solaiva_handler(TMask_field& f, KEY key)
TMask& m = f.mask();
const bool anchecg = !m.get_bool(F_SOLAIVA);
m.enable_page(2, anchecg);
app().cgs().enable(anchecg);
app().cgs().show(anchecg);
if (m.is_running() && anchecg)
{
@ -1144,11 +1186,16 @@ bool TPrimanota_application::solaiva_handler(TMask_field& f, KEY key)
if (m.get(F_RITFIS).not_empty()) app().add_cgs_rit(TRUE);
if (m.get(F_RITSOC).not_empty()) app().add_cgs_rit(FALSE);
TToken_string oldrow(128);
for (int i = 0; i < righe; i++)
{
if (!iva.row(i).empty_items())
{
TToken_string& r = iva.row(i);
if (!r.empty_items())
{
oldrow = r;
r = "";
iva_notify(i, K_SPACE);
r = oldrow;
iva_notify(i, K_ENTER);
}
pi.setstatus(i+1);

View File

@ -58,11 +58,13 @@ class TPrimanota_application : public TRelation_application
static bool totale_handler(TMask_field& f, KEY key);
static bool ritfis_handler(TMask_field& f, KEY key);
static bool ritsoc_handler(TMask_field& f, KEY key);
static bool main_codiva_handler(TMask_field& f, KEY key);
static bool visval_handler(TMask_field& f, KEY key);
static bool occas_code_handler(TMask_field& f, KEY key);
static bool occas_handler(TMask_field& f, KEY key);
static bool solaiva_handler(TMask_field& f, KEY key);
static bool descr_handler(TMask_field& f, KEY k);
static bool imponibile_handler(TMask_field& f, KEY key);
static bool codiva_handler(TMask_field& f, KEY key);
static bool imposta_handler(TMask_field& f, KEY key);
@ -111,7 +113,7 @@ protected:
static TipoIVA reg2IVA(const char* registro, int anno);
static TipoIVA cau2IVA(const char* causale, int anno);
static int type2pos(char tipo);
static const real& cod2IVA(const char* codiva);
static const real& cod2IVA(const TMask& m);
static real scorpora(real& imponibile, const real& percentuale);
static int date2esc(const TDate& d, int* prev = NULL);
static bool detraibile(int tipodet);
@ -126,6 +128,7 @@ protected:
bool test_swap(bool ritsoc);
TImporto real2imp(const real& r, char tipo);
real totale_documento();
void set_cgs_imp(int n, const TImporto& importo);
TImporto get_cgs_imp(int n);

View File

@ -11,13 +11,17 @@ const char* iva2name(TipoIVA iva)
const char* i;
switch(iva)
{
case nessuna_iva : i = "Nessuna IVA"; break;
case iva_acquisti: i = "IVA Acquisti"; break;
case iva_vendite : i = "IVA Vendite"; break;
case iva_generica: i = "IVA Generica"; break;
default : i = "IVA ERRATA!"; break;
}
case nessuna_iva:
i = "Nessuna IVA"; break;
case iva_acquisti:
i = "IVA Acquisti"; break;
case iva_vendite:
i = "IVA Vendite"; break;
case iva_generica:
i = "IVA Generica"; break;
default:
i = "IVA ERRATA!"; break;
}
return i;
}
@ -193,6 +197,23 @@ bool TLibro_giornale::read(int y)
return found;
}
TDate TLibro_giornale::global_last_print() const
{
TTable reg("REG");
reg.setkey(1);
TDate last(botime);
for (int err = reg.first(); err == NOERR; err = reg.next())
{
if (reg.get_int("I0") == libro_giornale)
{
const TDate l(reg.get("D3"));
if (l > last) last = l;
}
}
return last;
}
TLibro_giornale::TLibro_giornale(int y)
{
read(y);
@ -352,6 +373,7 @@ TipoIVA TCausale::iva() const
i = (TipoIVA)tpd.get_int("I0"); // IVA acquisti, vendite, generica
if (i == iva_generica)
i = _reg.iva();
((TCausale*)this)->_corrisp = tpd.get_bool("B0"); // Ricorda flag per la prossima volta
}
}
}
@ -360,6 +382,11 @@ TipoIVA TCausale::iva() const
return _iva;
}
bool TCausale::corrispettivi() const
{
if (_iva == iva_errata) iva();
return _corrisp;
}
bool TCausale::similar(const TCausale& c) const
{
@ -450,10 +477,9 @@ const TImporto& TImporto::operator -= (const TImporto& i)
return *this;
}
const TImporto& TImporto::swap()
const TImporto& TImporto::swap_section()
{
_sezione = (_sezione == 'D') ? 'A' : 'D';
_valore = -_valore;
return *this;
}

View File

@ -58,6 +58,8 @@ class TLibro_giornale : public TRegistro
{
public:
bool read(int year);
TDate global_last_print() const;
TLibro_giornale(int year = 0);
virtual ~TLibro_giornale() {}
};
@ -69,6 +71,7 @@ class TCausale : public TArray
TRegistro _reg;
TipoIVA _iva;
bool _corrisp;
char _sezione_clifo, _sezione_ritsoc;
protected:
@ -89,6 +92,7 @@ public:
TRegistro& reg() { return _reg; }
TipoIVA iva() const;
bool corrispettivi() const;
virtual bool ok() const { return !_rec.empty(); }
bool similar(const TCausale& c) const;
@ -127,8 +131,7 @@ public:
const TImporto& operator=(TToken_string& sv);
const TImporto& operator+=(const TImporto& i);
const TImporto& operator-=(const TImporto& i);
const TImporto& swap();
const TImporto& TImporto::normalize() { if (_valore < ZERO) swap(); return *this; }
const TImporto& swap_section();
const TImporto& set(char s, const real& v);
const TImporto& add_to(TToken_string& s) const;

View File

@ -4,7 +4,7 @@
#include "cg4400.h"
#include "cg4400a.h"
TFixed_string TMP (__tmp, MAXSTR);
static TString256 TMP;
CG4400_application * app() { return (CG4400_application*) MainApp(); }
@ -310,7 +310,7 @@ const char * CG4400_application::descr_doc(const char * tipo)
else
TMP = "";
return __tmp;
return TMP;
}
const char * CG4400_application::descr_iva(const char * cod)
@ -325,7 +325,7 @@ const char * CG4400_application::descr_iva(const char * cod)
else
TMP = "";
return __tmp;
return TMP;
}
const char * CG4400_application::desc_attivita(const char * codatt)
@ -338,7 +338,7 @@ const char * CG4400_application::desc_attivita(const char * codatt)
TMP = attiv.get("S0");
else
TMP = "";
return __tmp;
return TMP;
}
const char * CG4400_application::ricerca_cf(char tipocf, long codcf)
@ -350,7 +350,7 @@ const char * CG4400_application::ricerca_cf(char tipocf, long codcf)
TMP = _clifo->get(CLI_RAGSOC);
else
TMP = "";
return __tmp;
return TMP;
}
const char * CG4400_application::ricerca_occ(const char * occ)
@ -364,7 +364,7 @@ const char * CG4400_application::ricerca_occ(const char * occ)
TMP = occas.get(OCC_RAGSOC);
else
TMP = "";
return __tmp;
return TMP;
}
void CG4400_application::user_create()

View File

@ -24,9 +24,6 @@
#include "cglib03.h"
const int MAXSTR = 128;
static char __tmp[MAXSTR];
//enum STAMPA { bollati=1, unici=2 };
const int TABREG = (int)TTable::name2log("REG");

View File

@ -1,113 +1,112 @@
// cg4401.cpp
//
#include <applicat.h>
#include <isam.h>
#include <strings.h>
#include <lffiles.h>
#include <utility.h>
#include <nditte.h>
#include <anagr.h>
#include <comuni.h>
#include "cg4400.h"
static TFixed_string tmp(__tmp, MAXSTR);
TRectype& TDati_ditta::look_com(const char * cod)
{
_comuni->zero();
_comuni->put(COM_COM,cod);
_comuni->read();
if (_comuni->bad()) _comuni->zero();
return _comuni->curr();
}
TDati_ditta::TDati_ditta(long cod_ditta, int stampa_width)
{
_stampa_width = stampa_width;
_codditta = cod_ditta;
_nditte = new TLocalisamfile(LF_NDITTE);
_anag = new TLocalisamfile(LF_ANAG);
_comuni = new TLocalisamfile(LF_COMUNI);
}
TDati_ditta::~TDati_ditta()
{
delete _anag; delete _nditte; delete _comuni;
}
void TDati_ditta::get_dati_ditta ()
{
TString codanagr;
TString tipoa;
_nditte->zero();
_nditte->put(NDT_CODDITTA, _codditta);
_nditte->read();
if (_nditte->bad()) _nditte->zero();
_ragsoc = _nditte->get(NDT_RAGSOC);
codanagr = _nditte->curr().get(NDT_CODANAGR);
tipoa = _nditte->curr().get(NDT_TIPOA);
_anag->setkey(1);
_anag->zero();
_anag->put (ANA_TIPOA, tipoa);
_anag->put (ANA_CODANAGR, codanagr);
_anag->read();
if (_anag->bad()) _anag->zero();
_cofi = _anag->get(ANA_COFI);
_paiva = _anag->get(ANA_PAIV);
_comunefis = _anag->get(ANA_COMRF);
if (_comunefis.trim().empty())
_comunefis = _anag->get(ANA_COMRES);
TRectype dep = look_com (_comunefis);
_comunefis = dep.get(COM_DENCOM);
_provfis = dep.get(COM_PROVCOM);
_cap = dep.get(COM_CAPCOM);
if (_comunefis.trim().empty())
{
_viafis = _anag->get(ANA_INDRF);
_viafis.rtrim();
_viafis << " " << _anag->curr().get (ANA_CIVRF);
}
else
{
_viafis = _anag->get(ANA_INDRES);
_viafis.rtrim();
_viafis << " " << _anag->get (ANA_CIVRES);
// cg4401.cpp
//
#include <applicat.h>
#include <isam.h>
#include <strings.h>
#include <lffiles.h>
#include <utility.h>
#include <nditte.h>
#include <anagr.h>
#include <comuni.h>
#include "cg4400.h"
static TString256 tmp;
TRectype& TDati_ditta::look_com(const char * cod)
{
_comuni->zero();
_comuni->put(COM_COM,cod);
_comuni->read();
if (_comuni->bad()) _comuni->zero();
return _comuni->curr();
}
TDati_ditta::TDati_ditta(long cod_ditta, int stampa_width)
{
_stampa_width = stampa_width;
_codditta = cod_ditta;
_nditte = new TLocalisamfile(LF_NDITTE);
_anag = new TLocalisamfile(LF_ANAG);
_comuni = new TLocalisamfile(LF_COMUNI);
}
TDati_ditta::~TDati_ditta()
{
delete _anag; delete _nditte; delete _comuni;
}
void TDati_ditta::get_dati_ditta ()
{
TString16 codanagr;
char tipoa;
_nditte->zero();
_nditte->put(NDT_CODDITTA, _codditta);
_nditte->read();
if (_nditte->bad()) _nditte->zero();
_ragsoc = _nditte->get(NDT_RAGSOC);
codanagr = _nditte->get(NDT_CODANAGR);
tipoa = _nditte->get_char(NDT_TIPOA);
_anag->setkey(1);
_anag->zero();
_anag->put (ANA_TIPOA, tipoa);
_anag->put (ANA_CODANAGR, codanagr);
_anag->read();
if (_anag->bad()) _anag->zero();
_cofi = _anag->get(ANA_COFI);
_paiva = _anag->get(ANA_PAIV);
_comunefis = _anag->get(ANA_COMRF);
if (_comunefis.trim().empty())
_comunefis = _anag->get(ANA_COMRES);
TRectype dep = look_com (_comunefis);
_comunefis = dep.get(COM_DENCOM);
_provfis = dep.get(COM_PROVCOM);
_cap = dep.get(COM_CAPCOM);
if (_comunefis.trim().empty())
{
_viafis = _anag->get(ANA_INDRF);
_viafis.rtrim();
_viafis << " " << _anag->curr().get (ANA_CIVRF);
}
else
{
_viafis = _anag->get(ANA_INDRES);
_viafis.rtrim();
_viafis << " " << _anag->get (ANA_CIVRES);
}
}
const char * TDati_ditta::prima_riga()
{
TString riga(_stampa_width);
tmp = "";
get_dati_ditta();
riga.format("Ditta %d %s Via %s %s %s %s", _codditta,
(const char *)_ragsoc,(const char *)_viafis, (const char *)_cap,
(const char *)_comunefis, (const char *)_provfis);
tmp = riga;
return __tmp;
}
const char * TDati_ditta::seconda_riga()
{
TString riga(_stampa_width);
tmp = "";
riga = "Data @<";
riga.right_just(_stampa_width-15);
riga.overwrite (format ("Partita iva %s @26gCodice fiscale %s",
(const char*)_paiva, (const char*)_cofi));
tmp = riga;
return __tmp;
}
const char * TDati_ditta::prima_riga()
{
get_dati_ditta();
/*
tmp.format("Ditta %d %s Via %s %s %s %s", _codditta,
(const char *)_ragsoc,(const char *)_viafis, (const char *)_cap,
(const char *)_comunefis, (const char *)_provfis);
*/
tmp << "Ditta " << _codditta << ' ' << _ragsoc << " Via " << _viafis << ' '
<< _cap << ' ' << _comunefis << ' ' << _provfis;
return tmp;
}
const char * TDati_ditta::seconda_riga()
{
tmp = "Data @<";
tmp.right_just(_stampa_width-15);
tmp.overwrite (format ("Partita iva %s @26gCodice fiscale %s",
(const char*)_paiva, (const char*)_cofi));
return tmp;
}

File diff suppressed because it is too large Load Diff

View File

@ -52,6 +52,18 @@ TConto& TConto::set(int g, int c, long s, char t, const char* d)
return *this;
}
const TConto& TConto::add_to(TToken_string& ts, int from, int mode)
{
if (mode & 0x1)
ts.add(_tipo, from++);
ts.add(_gruppo, from++);
ts.add(_conto, from++);
ts.add(_sottoconto, from++);
if (mode & 0x2)
ts.add(descrizione(), from);
return *this;
}
// Certified 100%
bool TConto::ok() const

View File

@ -33,8 +33,10 @@ public:
virtual ~TConto() {}
TConto& set(int g = 0, int c = 0, long s = 0L, char t = ' ', const char* d = NULL);
const TConto& add_to(TToken_string& ts, int from, int mode = 0);
virtual bool ok() const; // Gruppo, Conto e Sottoconto non nulli
real& dare() { return _dare; }
real& avere() { return _avere; }
real& darepro() { return _darepro; }