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_TOTALE, totale_handler);
m->set_handler(F_RITFIS, ritfis_handler); m->set_handler(F_RITFIS, ritfis_handler);
m->set_handler(F_RITSOC, ritsoc_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_VISVAL, visval_handler);
m->set_handler(F_OCCASEDIT, occas_handler); m->set_handler(F_OCCASEDIT, occas_handler);
m->set_handler(F_SOLAIVA, solaiva_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) bool TPrimanota_application::read_caus(const char* cod, int year)
{ {
const bool ok = causale().read(cod, year); const bool ok = causale().read(cod, year);
bool nob = FALSE, dob = FALSE;
if (ok) if (ok)
{ {
TMask& m = *load_mask(_iva == nessuna_iva ? 1 : 2); nob = _causale.num_doc();
dob = _causale.data_doc();
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);
} }
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; return ok;
} }

View File

@ -32,7 +32,7 @@ END
NUMBER F_NUMREG 7 NUMBER F_NUMREG 7
BEGIN BEGIN
PROMPT 1 3 "Operazione n. " PROMPT 57 3 "Operazione n."
FIELD NUMREG FIELD NUMREG
FLAGS "RD" FLAGS "RD"
KEY 1 KEY 1
@ -40,44 +40,44 @@ END
DATE F_DATAREG DATE F_DATAREG
BEGIN BEGIN
PROMPT 44 3 "Data operazione " PROMPT 1 3 "Data operazione "
FIELD DATAREG FIELD DATAREG
END 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 DATE F_DATACOMP
BEGIN BEGIN
PROMPT 44 4 "Data di competenza " PROMPT 1 4 "Data di competenza "
FIELD DATACOMP FIELD DATACOMP
END END
NUMBER F_ANNOES 4 NUMBER F_ANNOES 4
BEGIN BEGIN
PROMPT 1 5 "Esercizio " PROMPT 57 4 "Esercizio "
FIELD ANNOES FIELD ANNOES
FLAGS "D" FLAGS "D"
END 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 NUMBER F_ANNOIVA 4
BEGIN BEGIN
FLAGS "H" FLAGS "H"
END 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 STRING F_DESCAGG 5
BEGIN BEGIN
PROMPT 1 6 "Descrizione " PROMPT 1 6 "Descrizione "

View File

@ -53,6 +53,15 @@ BEGIN
FLAGS "DG" FLAGS "DG"
END 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 DATE F_DATAREG
BEGIN BEGIN
PROMPT 1 3 "Data operazione " PROMPT 1 3 "Data operazione "
@ -97,15 +106,6 @@ BEGIN
FLAGS "D" FLAGS "D"
END 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 STRING F_NUMDOC 7
BEGIN BEGIN
PROMPT 57 5 "Documento n. " PROMPT 57 5 "Documento n. "
@ -373,7 +373,7 @@ END
STRING F_CODPAG 4 STRING F_CODPAG 4
BEGIN BEGIN
PROMPT 61 11 "Pagamento " PROMPT 60 11 "Pagamento "
USE %CPG USE %CPG
INPUT CODTAB F_CODPAG INPUT CODTAB F_CODPAG
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
@ -382,9 +382,33 @@ BEGIN
CHECKTYPE NORMAL CHECKTYPE NORMAL
END 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 STRING F_CODIVA 4
BEGIN BEGIN
PROMPT 1 12 "Codice IVA " PROMPT 60 12 "Codice IVA "
FLAGS "U" FLAGS "U"
USE %IVA USE %IVA
INPUT CODTAB F_CODIVA INPUT CODTAB F_CODIVA
@ -396,48 +420,23 @@ BEGIN
CHECKTYPE NORMAL CHECKTYPE NORMAL
END 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 DATE F_DATA74TER
BEGIN BEGIN
PROMPT 1 13 "Data 74/ter " PROMPT 54 13 "Data 74/ter "
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FIELD DATA74TER FIELD DATA74TER
END END
NUMBER F_ANNORIF 4 NUMBER F_ANNORIF 4
BEGIN BEGIN
PROMPT 1 14 "Rif.partita " PROMPT 45 14 "Rif.partita "
FLAGS "A" FLAGS "A"
HELP "Anno di riferimento partita" HELP "Anno di riferimento partita"
END END
NUMBER F_NUMRIF 7 NUMBER F_NUMRIF 7
BEGIN BEGIN
PROMPT 20 14 "/" PROMPT 69 14 "/"
HELP "Numero documento (o protocollo IVA) di riferimento" HELP "Numero documento (o protocollo IVA) di riferimento"
END END

View File

@ -192,8 +192,12 @@ int TMovimentoPN::write(bool force, TDate&)
if (err == NOERR) 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()) if (reg.not_empty())
{ { // Aggiorna data registrazione e protocollo IVA sul registro
const long protiva = r.get_long("PROTIVA"); const long protiva = r.get_long("PROTIVA");
const long uprotiva = r.get_long("UPROTIVA"); const long uprotiva = r.get_long("UPROTIVA");
const TDate datareg = r.get_date("DATAREG"); const TDate datareg = r.get_date("DATAREG");

View File

@ -4,34 +4,34 @@
class TMovimentoPN : public TRelation class TMovimentoPN : public TRelation
{ {
// class TMovimentoPN : public TRelation // class TMovimentoPN : public TRelation
// @END // @END
// @DPRIV // @DPRIV
TArray _cg, _iva; TArray _cg, _iva;
int _oldcg, _oldiva; int _oldcg, _oldiva;
real _balance; real _balance;
// @END // @END
protected: protected:
// @FPROT // @FPROT
int write_rec(bool re, const TRectype&r, TLocalisamfile* f); int write_rec(bool re, const TRectype&r, TLocalisamfile* f);
int cancella(TLocalisamfile* f, int da, int a); int cancella(TLocalisamfile* f, int da, int a);
int registra(bool re, bool force); int registra(bool re, bool force);
int read_mov_rows(); int read_mov_rows();
// @END // @END
public: public:
// @FPUB // @FPUB
virtual int next(TReclock lockop = _nolock) { return (file()->next(lockop) || read_mov_rows()); } 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 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 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 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 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 read(TIsamop op = _isgteq, TReclock lockop = _nolock, TDate& atdate = (TDate&)botime);
virtual int write (bool force = TRUE, TDate& atdate = botime); virtual int write (bool force = TRUE, TDate& atdate = (TDate&)botime);
virtual int rewrite(bool force = TRUE, TDate& atdate = botime); virtual int rewrite(bool force = TRUE, TDate& atdate = (TDate&)botime);
virtual int remove (TDate& atdate = botime); virtual int remove (TDate& atdate = (TDate&)botime);
TRectype& cg(int i); TRectype& cg(int i);
TRectype& iva(int i); TRectype& iva(int i);

View File

@ -53,11 +53,12 @@ int TPrimanota_application::date2esc(const TDate& d, int* prevesc)
// Calcolo della percentuale di un dato codice IVA // Calcolo della percentuale di un dato codice IVA
// Certified 99% // Certified 99%
const real& TPrimanota_application::cod2IVA(const char* codiva) const real& TPrimanota_application::cod2IVA(const TMask& m)
{ {
static TString16 _codiva; static TString16 _codiva;
static real _percent; static real _percent;
const TString& codiva = m.get(102);
if (_codiva != codiva) if (_codiva != codiva)
{ {
_codiva = codiva; _codiva = codiva;
@ -76,6 +77,23 @@ real TPrimanota_application::scorpora(real& imponibile, const real& percent)
return imposta; 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 // Determina se un codice sospeso o no
// Certified 50% // Certified 50%
@ -452,6 +470,14 @@ bool TPrimanota_application::cg_notify(int r, KEY k)
cg.sheet_mask().enable(DLG_DELREC, tipo == ' '); cg.sheet_mask().enable(DLG_DELREC, tipo == ' ');
break; break;
case K_ENTER: 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(); app().calcola_saldo();
break; break;
case K_DEL: 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 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()); const real imponibile(f.get());
real imposta = abs(imponibile) * percent / 100.0; imposta.ceil(); real imposta = abs(imponibile) * percent / 100.0; imposta.ceil();
if (imponibile.sign() < 0) imposta = -imposta; if (imponibile.sign() < 0) imposta = -imposta;
@ -556,7 +582,7 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
if (key == K_ENTER) if (key == K_ENTER)
{ {
const real imponibile(f.mask().get(101)); 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; real imposta = abs(imponibile) * percent / 100.0;
imposta.ceil(); imposta.ceil();
if (imponibile < ZERO) imposta = -imposta; if (imponibile < ZERO) imposta = -imposta;
@ -564,7 +590,7 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
const real val(f.get()); const real val(f.get());
if (val != imposta) 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 wrong(val.string("."));
const TString16 right(imposta.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()) if (key == K_F8 && f.get().empty())
{ {
real imponibile(f.mask().get(101)); 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); const real imposta = scorpora(imponibile, percent);
f.mask().set(101, imponibile.string()); f.mask().set(101, imponibile.string());
f.set(imposta.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; if (k != K_ENTER) return TRUE;
const real imp = app().calcola_imp(); const real imp = app().calcola_imp();
const real tot = app().totale_documento();
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));
if (imp != tot) if (imp != tot)
{ {
@ -823,23 +838,35 @@ bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
if (!ok) if (!ok)
return f.error_box("Non esiste il libro giornale dell'esercizio %d", ae); return f.error_box("Non esiste il libro giornale dell'esercizio %d", ae);
if (dr < app().giornale().last_print()) const TLibro_giornale& gio = app().giornale();
return f.error_box("La data dell'operazione e' antecedente alla " const TDate ljp(gio.global_last_print());
"data di stampa del libro giornale dell'esercizio %d", ae); 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) 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(); TRegistro& reg = app().causale().reg();
const TString16 codreg(reg.name()); const TString16 codreg(reg.name());
ok = reg.read(codreg, dr.year());
if (ok && dr < reg.last_reg()) if (reg.year() != dr.year())
warning_box("La data dell'operazione e' antecedente al %s, ultima registrazione " {
"sul registro '%s' del %d", const bool ok = reg.read(codreg, dr.year());
reg.last_reg().string(), (const char*)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; return ok;
@ -989,7 +1016,7 @@ void TPrimanota_application::add_cgs_tot(TMask& m)
conto = bill.conto(); m.set(F_CONTOCLIFO, conto); conto = bill.conto(); m.set(F_CONTOCLIFO, conto);
} }
if (tipo == 'C' && causale().reg().corrispettivi()) if (tipo == 'C' && causale().corrispettivi())
tipo = ' '; tipo = ' ';
TConto c(gruppo, conto, codice, tipo); TConto c(gruppo, conto, codice, tipo);
real tot(m.get(F_TOTALE)); real tot(m.get(F_TOTALE));
@ -997,41 +1024,6 @@ void TPrimanota_application::add_cgs_tot(TMask& m)
// Creazione/Aggiornamento riga totale // Creazione/Aggiornamento riga totale
const int pos = type2pos('T'); const int pos = type2pos('T');
set_cgs_row(pos, real2imp(tot, 'T'), c, "Totale documento", '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 // Handler of the F_TOTALE
// Certified 99% // Certified 99%
bool TPrimanota_application::totale_handler(TMask_field& f, KEY key) bool TPrimanota_application::totale_handler(TMask_field& f, KEY key)
{ {
bool ok = TRUE;
if (key == K_TAB && f.focusdirty()) if (key == K_TAB && f.focusdirty())
{
app().add_cgs_tot(f.mask()); app().add_cgs_tot(f.mask());
} else
if (key == K_ENTER && f.get().empty()) if (key == K_ENTER && f.get().empty())
return f.yesno_box("Totale documento nullo: continuare ugualmente?"); ok = f.yesno_box("Totale documento nullo: continuare ugualmente?");
return TRUE; return ok;
} }
@ -1130,8 +1173,7 @@ bool TPrimanota_application::solaiva_handler(TMask_field& f, KEY key)
TMask& m = f.mask(); TMask& m = f.mask();
const bool anchecg = !m.get_bool(F_SOLAIVA); const bool anchecg = !m.get_bool(F_SOLAIVA);
m.enable_page(2, anchecg); app().cgs().show(anchecg);
app().cgs().enable(anchecg);
if (m.is_running() && 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_RITFIS).not_empty()) app().add_cgs_rit(TRUE);
if (m.get(F_RITSOC).not_empty()) app().add_cgs_rit(FALSE); if (m.get(F_RITSOC).not_empty()) app().add_cgs_rit(FALSE);
TToken_string oldrow(128);
for (int i = 0; i < righe; i++) 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); iva_notify(i, K_SPACE);
r = oldrow;
iva_notify(i, K_ENTER); iva_notify(i, K_ENTER);
} }
pi.setstatus(i+1); 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 totale_handler(TMask_field& f, KEY key);
static bool ritfis_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 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 visval_handler(TMask_field& f, KEY key);
static bool occas_code_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 occas_handler(TMask_field& f, KEY key);
static bool solaiva_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 descr_handler(TMask_field& f, KEY k);
static bool imponibile_handler(TMask_field& f, KEY key); static bool imponibile_handler(TMask_field& f, KEY key);
static bool codiva_handler(TMask_field& f, KEY key); static bool codiva_handler(TMask_field& f, KEY key);
static bool imposta_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 reg2IVA(const char* registro, int anno);
static TipoIVA cau2IVA(const char* causale, int anno); static TipoIVA cau2IVA(const char* causale, int anno);
static int type2pos(char tipo); 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 real scorpora(real& imponibile, const real& percentuale);
static int date2esc(const TDate& d, int* prev = NULL); static int date2esc(const TDate& d, int* prev = NULL);
static bool detraibile(int tipodet); static bool detraibile(int tipodet);
@ -126,6 +128,7 @@ protected:
bool test_swap(bool ritsoc); bool test_swap(bool ritsoc);
TImporto real2imp(const real& r, char tipo); TImporto real2imp(const real& r, char tipo);
real totale_documento();
void set_cgs_imp(int n, const TImporto& importo); void set_cgs_imp(int n, const TImporto& importo);
TImporto get_cgs_imp(int n); TImporto get_cgs_imp(int n);

View File

@ -11,13 +11,17 @@ const char* iva2name(TipoIVA iva)
const char* i; const char* i;
switch(iva) switch(iva)
{ {
case nessuna_iva : i = "Nessuna IVA"; break; case nessuna_iva:
case iva_acquisti: i = "IVA Acquisti"; break; i = "Nessuna IVA"; break;
case iva_vendite : i = "IVA Vendite"; break; case iva_acquisti:
case iva_generica: i = "IVA Generica"; break; i = "IVA Acquisti"; break;
default : i = "IVA ERRATA!"; break; case iva_vendite:
i = "IVA Vendite"; break;
case iva_generica:
i = "IVA Generica"; break;
default:
i = "IVA ERRATA!"; break;
} }
return i; return i;
} }
@ -193,6 +197,23 @@ bool TLibro_giornale::read(int y)
return found; 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) TLibro_giornale::TLibro_giornale(int y)
{ {
read(y); read(y);
@ -352,6 +373,7 @@ TipoIVA TCausale::iva() const
i = (TipoIVA)tpd.get_int("I0"); // IVA acquisti, vendite, generica i = (TipoIVA)tpd.get_int("I0"); // IVA acquisti, vendite, generica
if (i == iva_generica) if (i == iva_generica)
i = _reg.iva(); 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; return _iva;
} }
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
{ {
@ -450,10 +477,9 @@ const TImporto& TImporto::operator -= (const TImporto& i)
return *this; return *this;
} }
const TImporto& TImporto::swap() const TImporto& TImporto::swap_section()
{ {
_sezione = (_sezione == 'D') ? 'A' : 'D'; _sezione = (_sezione == 'D') ? 'A' : 'D';
_valore = -_valore;
return *this; return *this;
} }

View File

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

View File

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

View File

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

View File

@ -13,7 +13,7 @@
#include "cg4400.h" #include "cg4400.h"
static TFixed_string tmp(__tmp, MAXSTR); static TString256 tmp;
TRectype& TDati_ditta::look_com(const char * cod) TRectype& TDati_ditta::look_com(const char * cod)
{ {
@ -40,8 +40,8 @@ TDati_ditta::~TDati_ditta()
void TDati_ditta::get_dati_ditta () void TDati_ditta::get_dati_ditta ()
{ {
TString codanagr; TString16 codanagr;
TString tipoa; char tipoa;
_nditte->zero(); _nditte->zero();
_nditte->put(NDT_CODDITTA, _codditta); _nditte->put(NDT_CODDITTA, _codditta);
@ -50,8 +50,8 @@ void TDati_ditta::get_dati_ditta ()
if (_nditte->bad()) _nditte->zero(); if (_nditte->bad()) _nditte->zero();
_ragsoc = _nditte->get(NDT_RAGSOC); _ragsoc = _nditte->get(NDT_RAGSOC);
codanagr = _nditte->curr().get(NDT_CODANAGR); codanagr = _nditte->get(NDT_CODANAGR);
tipoa = _nditte->curr().get(NDT_TIPOA); tipoa = _nditte->get_char(NDT_TIPOA);
_anag->setkey(1); _anag->setkey(1);
_anag->zero(); _anag->zero();
@ -86,28 +86,27 @@ void TDati_ditta::get_dati_ditta ()
} }
} }
const char * TDati_ditta::prima_riga() const char * TDati_ditta::prima_riga()
{ {
TString riga(_stampa_width);
tmp = "";
get_dati_ditta(); get_dati_ditta();
/*
riga.format("Ditta %d %s Via %s %s %s %s", _codditta, tmp.format("Ditta %d %s Via %s %s %s %s", _codditta,
(const char *)_ragsoc,(const char *)_viafis, (const char *)_cap, (const char *)_ragsoc,(const char *)_viafis, (const char *)_cap,
(const char *)_comunefis, (const char *)_provfis); (const char *)_comunefis, (const char *)_provfis);
tmp = riga; */
return __tmp; tmp << "Ditta " << _codditta << ' ' << _ragsoc << " Via " << _viafis << ' '
<< _cap << ' ' << _comunefis << ' ' << _provfis;
return tmp;
} }
const char * TDati_ditta::seconda_riga() const char * TDati_ditta::seconda_riga()
{ {
TString riga(_stampa_width); tmp = "Data @<";
tmp = ""; tmp.right_just(_stampa_width-15);
riga = "Data @<"; tmp.overwrite (format ("Partita iva %s @26gCodice fiscale %s",
riga.right_just(_stampa_width-15);
riga.overwrite (format ("Partita iva %s @26gCodice fiscale %s",
(const char*)_paiva, (const char*)_cofi)); (const char*)_paiva, (const char*)_cofi));
tmp = riga; return tmp;
return __tmp;
} }

View File

@ -11,10 +11,11 @@
#include <config.h> #include <config.h>
#include <urldefid.h> #include <urldefid.h>
#include <cglib.h> #include "cglib.h"
#include <cg4.h> #include "cg4.h"
#include <cg4600.h> #include "cg4600.h"
#include <cg2101.h> #include "cg2101.h"
#include <pconti.h> #include <pconti.h>
#include <mov.h> #include <mov.h>
#include <saldi.h> #include <saldi.h>
@ -28,6 +29,29 @@ bool mask_distinti (TMask_field&, KEY);
class CG4600_application : public TApplication class CG4600_application : public TApplication
{ {
<<<<<<< cg4600.cpp
friend bool mask_datac (TMask_field&, KEY);
friend bool mask_dataap (TMask_field&, KEY);
friend bool mask_distinti (TMask_field&, KEY);
TTable* _esc, * _reg;
TRelation* _rel;
TMovimentoPN* _pn;
TLocalisamfile* _saldi;
TRectype* _rec;
TLocalisamfile* _mov;
TCursor* _cur;
TSaldo_agg* _sld;
Saldo* _sale;
TConto _tcbilch,_tcproper,_tcbilap,_tcutilp,_tcperdp,_tcutile,_tcperde, _conto_corrente;
real _saldo, _totale_saldo;
int _annoesch, _annoesap;
long _numreg;
TDate _dataregap, _dataregch;
TString _codcausap, _codcausch, _annoeseprec;
=======
friend bool mask_datac (TMask_field&, KEY); friend bool mask_datac (TMask_field&, KEY);
friend bool mask_dataap (TMask_field&, KEY); friend bool mask_dataap (TMask_field&, KEY);
friend bool mask_distinti (TMask_field&, KEY); friend bool mask_distinti (TMask_field&, KEY);
@ -49,7 +73,27 @@ class CG4600_application : public TApplication
TDate _dataregap, _dataregch; TDate _dataregap, _dataregch;
TString _codcausap, _codcausch; TString _codcausap, _codcausch;
>>>>>>> 1.6
public: public:
<<<<<<< cg4600.cpp
virtual bool create();
virtual bool destroy();
virtual bool menu(MENU_TAG m);
void costi ();
void ricavi();
void attivita();
void passivita();
void rmov_proper (int, long, TRectype&, TConto&, real&, bool);
void ultima_registrazione();
void anno_ese_precedente();
void compila_testata(int,TDate&,TString&);
void chiusura_conto_economico();
void chiusura_conto_patrimoniale();
bool set();
// bool epilogo_conti();
CG4600_application() {}
=======
virtual bool create(); virtual bool create();
virtual bool destroy(); virtual bool destroy();
virtual bool menu(MENU_TAG m); virtual bool menu(MENU_TAG m);
@ -66,6 +110,7 @@ public:
// bool epilogo_conti(); // bool epilogo_conti();
CG4600_application() {} CG4600_application() {}
>>>>>>> 1.6
}; };
HIDDEN CG4600_application* app() { return (CG4600_application *) MainApp(); } HIDDEN CG4600_application* app() { return (CG4600_application *) MainApp(); }
@ -104,7 +149,7 @@ bool mask_datac (TMask_field& f, KEY k)
} }
if ( (f.get() >= inizio) && (f.get() <= fine) ) //la data di chiusura e' cioe' relativa all'esercizio in corso if ( (f.get() >= inizio) && (f.get() <= fine) ) //la data di chiusura e' cioe' relativa all'esercizio in corso
anno = fine.year(); anno = fine.year();
else if ( (f.get() >= iniziop) && (f.get() <= finep) ) //la data di chiusura e' cioe' relativa all'esercizio precedente else if ( (f.get() >= iniziop) && (f.get() <= finep) ) //la data di chiusura e' cioe' relativa all'esercizio precedente
anno = finep.year(); anno = finep.year();
TabReg.zero(); TabReg.zero();
@ -171,7 +216,7 @@ bool mask_dataap (TMask_field& f, KEY k)
if ( (f.get() >= inizio) && (f.get() <= fine) ) //la data di apertura e' cioe' relativa all'esercizio in corso if ( (f.get() >= inizio) && (f.get() <= fine) ) //la data di apertura e' cioe' relativa all'esercizio in corso
anno = fine.year(); anno = fine.year();
else if( (f.get() >= iniziop) && (f.get() <= finep) ) //la data di apertura e' cioe' relativa all'esercizio precedente else if( (f.get() >= iniziop) && (f.get() <= finep) ) //la data di apertura e' cioe' relativa all'esercizio precedente
anno = finep.year(); anno = finep.year();
TabReg.zero(); TabReg.zero();
@ -391,27 +436,53 @@ bool CG4600_application::set()
_tcperde.set (gperde,cperde,sperde); _tcperde.set (gperde,cperde,sperde);
ultima_registrazione(); ultima_registrazione();
// anno_ese_precedente(); // anno_ese_precedente();
<<<<<<< cg4600.cpp
// (*_cur) = 0L;
=======
(*_cur) = 0L; (*_cur) = 0L;
>>>>>>> 1.6
_sld->set_anno_es(_annoesch); _sld->set_anno_es(_annoesch);
_sld->set_movprovv(FALSE); _sld->set_movprovv(FALSE);
_sld->set_movap(FALSE); _sld->set_movap(FALSE);
<<<<<<< cg4600.cpp
// costi ();
=======
costi (); costi ();
>>>>>>> 1.6
<<<<<<< cg4600.cpp
// _sld->reset(); //Azzera la tabella dei conti dell'oggetto TSaldo_agg
// _pn->destroy_rows(); //Azzero l'oggetto pn.
// ultima_registrazione();
// *_cur = 0l;
// ricavi();
// _sld->reset();
=======
_sld->reset(); //Azzera la tabella dei conti dell'oggetto TSaldo_agg _sld->reset(); //Azzera la tabella dei conti dell'oggetto TSaldo_agg
_pn->destroy_rows(); //Azzero l'oggetto pn. _pn->destroy_rows(); //Azzero l'oggetto pn.
ultima_registrazione(); ultima_registrazione();
*_cur = 0l; *_cur = 0l;
>>>>>>> 1.6
ricavi(); ricavi();
_sld->reset(); _sld->reset();
<<<<<<< cg4600.cpp
// chiusura_conto_economico();
=======
chiusura_conto_economico(); chiusura_conto_economico();
>>>>>>> 1.6
_totale_saldo = ZERO; _totale_saldo = ZERO;
<<<<<<< cg4600.cpp
// _sld->reset();
=======
_sld->reset(); _sld->reset();
>>>>>>> 1.6
_pn->destroy_rows(); //Azzero l'oggetto pn. _pn->destroy_rows(); //Azzero l'oggetto pn.
ultima_registrazione(); ultima_registrazione();
@ -476,13 +547,13 @@ void CG4600_application::rmov_proper(int anno,long numrig,TDate& datareg,TRectyp
_sld->aggiorna(tc,totale,sez_rmov);//Aggiorno anche i saldi con l'oggetto _sld->aggiorna(tc,totale,sez_rmov);//Aggiorno anche i saldi con l'oggetto
//TSaldo_agg //TSaldo_agg
} }
else else
{ {
rmov.put(RMV_SEZIONE, sezione); rmov.put(RMV_SEZIONE, sezione);
_sld->aggiorna(tc,totale,sezione);//Aggiorno anche i saldi con l'oggetto _sld->aggiorna(tc,totale,sezione);//Aggiorno anche i saldi con l'oggetto
//TSaldo_agg //TSaldo_agg
} }
rmov.put(RMV_IMPORTO, totale); rmov.put(RMV_IMPORTO, totale);
} }
void CG4600_application::costi() void CG4600_application::costi()
@ -530,6 +601,26 @@ void CG4600_application::costi()
if (_saldi->curr() > (*_rec) || _saldi->eof()) if (_saldi->curr() > (*_rec) || _saldi->eof())
{ {
<<<<<<< cg4600.cpp
// Aggiungo un ulteriore riga di movimento contenente la somma
// di tutti i saldi aventi lo stesso conto, indicandola
// con una sezione opposta al risultato (della somma).
if (j >= 1)
{
numrig++;
rmov_proper(_annoesch,numrig,rmov,_tcproper,tot_saldo,FALSE);
tot_saldo = ZERO;
}
break;
}
numrig++;
s = _saldi->get_long(SLD_SOTTOCONTO);
// int annoeseprec = atoi(_annoeseprec);
sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil);
=======
// Aggiungo un ulteriore riga di movimento contenente la somma // Aggiungo un ulteriore riga di movimento contenente la somma
// di tutti i saldi aventi lo stesso conto, indicandola // di tutti i saldi aventi lo stesso conto, indicandola
// con una sezione opposta al risultato (della somma). // con una sezione opposta al risultato (della somma).
@ -547,6 +638,7 @@ void CG4600_application::costi()
numrig++; numrig++;
s = _saldi->get_long(SLD_SOTTOCONTO); s = _saldi->get_long(SLD_SOTTOCONTO);
sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil);
>>>>>>> 1.6
_saldo = sale.saldo(); _saldo = sale.saldo();
if (_saldo.is_zero()) continue; if (_saldo.is_zero()) continue;
@ -566,7 +658,7 @@ void CG4600_application::costi()
tot_saldo += _saldo; // quando ho raggiunto un massimo di 200 tot_saldo += _saldo; // quando ho raggiunto un massimo di 200
_totale_saldo += _saldo; _totale_saldo += _saldo;
} // righe di movimento, genero un' altra } // righe di movimento, genero un' altra
else // riga con importo di sezione opposta else // riga con importo di sezione opposta
if (sezione == 'A') // alla somma, mandando a zero if (sezione == 'A') // alla somma, mandando a zero
{ // il saldo di quel movimento. { // il saldo di quel movimento.
sez_rmov = 'D'; sez_rmov = 'D';
@ -576,6 +668,17 @@ void CG4600_application::costi()
if (j == MAX || _saldi->eof()) if (j == MAX || _saldi->eof())
{ {
<<<<<<< cg4600.cpp
// Aggiungo un ulteriore riga di movimento contenente la somma
// di tutti i saldi aventi lo stesso sottoconto, indicandola
// con una sezione opposta al risultato (della somma).
// numrig++;
rmov_proper (_annoesch,numrig,rmov,_tcproper,tot_saldo,FALSE);
tot_saldo = ZERO;
}
=======
// Aggiungo un ulteriore riga di movimento contenente la somma // Aggiungo un ulteriore riga di movimento contenente la somma
// di tutti i saldi aventi lo stesso sottoconto, indicandola // di tutti i saldi aventi lo stesso sottoconto, indicandola
// con una sezione opposta al risultato (della somma). // con una sezione opposta al risultato (della somma).
@ -585,6 +688,7 @@ void CG4600_application::costi()
tot_saldo = ZERO; tot_saldo = ZERO;
} }
>>>>>>> 1.6
if (!_saldi->eof()) if (!_saldi->eof())
{ {
@ -660,6 +764,26 @@ void CG4600_application::ricavi()
if (_saldi->curr() > (*_rec) || _saldi->eof()) if (_saldi->curr() > (*_rec) || _saldi->eof())
{ {
<<<<<<< cg4600.cpp
// Aggiungo un ulteriore riga di movimento contenente la somma
// di tutti i saldi aventi lo stesso conto, indicandola
// con una sezione opposta al risultato (della somma).
if (j >= 1)
{
numrig++;
rmov_proper(_annoesch,numrig,rmov,_tcproper,tot_saldo,FALSE);
tot_saldo = ZERO;
}
break;
}
numrig++;
s = _saldi->get_long(SLD_SOTTOCONTO);
// int annoeseprec = atoi(_annoeseprec);
sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil);
=======
// Aggiungo un ulteriore riga di movimento contenente la somma // Aggiungo un ulteriore riga di movimento contenente la somma
// di tutti i saldi aventi lo stesso conto, indicandola // di tutti i saldi aventi lo stesso conto, indicandola
// con una sezione opposta al risultato (della somma). // con una sezione opposta al risultato (della somma).
@ -677,6 +801,7 @@ void CG4600_application::ricavi()
numrig++; numrig++;
s = _saldi->get_long(SLD_SOTTOCONTO); s = _saldi->get_long(SLD_SOTTOCONTO);
sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil);
>>>>>>> 1.6
_saldo = sale.saldo(); _saldo = sale.saldo();
if (_saldo.is_zero()) continue; if (_saldo.is_zero()) continue;
@ -696,7 +821,7 @@ void CG4600_application::ricavi()
tot_saldo += _saldo; // quando ho raggiunto un massimo di 200 tot_saldo += _saldo; // quando ho raggiunto un massimo di 200
_totale_saldo += _saldo; _totale_saldo += _saldo;
} // righe di movimento, genero un' altra } // righe di movimento, genero un' altra
else // riga con importo di sezione opposta else // riga con importo di sezione opposta
if (sezione == 'A') // alla somma, mandando a zero if (sezione == 'A') // alla somma, mandando a zero
{ // il saldo di quel movimento. { // il saldo di quel movimento.
sez_rmov = 'D'; sez_rmov = 'D';
@ -706,6 +831,17 @@ void CG4600_application::ricavi()
if (j == MAX || _saldi->eof()) if (j == MAX || _saldi->eof())
{ {
<<<<<<< cg4600.cpp
// Aggiungo un ulteriore riga di movimento contenente la somma
// di tutti i saldi aventi lo stesso sottoconto, indicandola
// con una sezione opposta al risultato (della somma).
// numrig++;
rmov_proper (_annoesch,numrig,rmov,_tcproper,tot_saldo,FALSE);
tot_saldo = ZERO;
}
=======
// Aggiungo un ulteriore riga di movimento contenente la somma // Aggiungo un ulteriore riga di movimento contenente la somma
// di tutti i saldi aventi lo stesso sottoconto, indicandola // di tutti i saldi aventi lo stesso sottoconto, indicandola
// con una sezione opposta al risultato (della somma). // con una sezione opposta al risultato (della somma).
@ -715,6 +851,7 @@ void CG4600_application::ricavi()
tot_saldo = ZERO; tot_saldo = ZERO;
} }
>>>>>>> 1.6
if (!_saldi->eof()) if (!_saldi->eof())
{ {
@ -752,9 +889,14 @@ void CG4600_application::chiusura_conto_economico()
{ {
int j; int j;
<<<<<<< cg4600.cpp
//Compilo la testata per perdite di es. c.economico a Profitti e Perdite
//Chiusura conto economico
=======
//Compilo la testata per perdite di es. c.economico a Profitti e Perdite //Compilo la testata per perdite di es. c.economico a Profitti e Perdite
//Chiusura conto economico //Chiusura conto economico
>>>>>>> 1.6
j = 0; j = 0;
ultima_registrazione(); ultima_registrazione();
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 3 compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 3
@ -765,14 +907,19 @@ void CG4600_application::chiusura_conto_economico()
numrig++; numrig++;
j++; j++;
TRectype& rmov2 = _pn->cg(j); TRectype& rmov2 = _pn->cg(j);
<<<<<<< cg4600.cpp
rmov_proper(_annoesch,numrig,rmov2,_tcperde,_totale_saldo,FALSE);
=======
rmov_proper(_annoesch,numrig,_dataregch,rmov2,_tcperde,_totale_saldo,FALSE); rmov_proper(_annoesch,numrig,_dataregch,rmov2,_tcperde,_totale_saldo,FALSE);
>>>>>>> 1.6
_pn->write(); _pn->write();
_sld->registra(); _sld->registra();
_sld->reset(); _sld->reset();
//Compilo la testata per perdite di es. c.patrimon. a Perdita di es. c. econom. //Compilo la testata per perdite di es. c.patrimon. a Perdita di es. c. econom.
//Chiusura capitale netto //Chiusura capitale netto
_pn->destroy_rows(); //Azzero l'oggetto pn. _pn->destroy_rows(); //Azzero l'oggetto pn.
j = 0; j = 0;
@ -789,6 +936,32 @@ void CG4600_application::chiusura_conto_economico()
rmov_proper(_annoesch,numrig,_dataregch,rmov4,_tcperdp,_totale_saldo,FALSE); rmov_proper(_annoesch,numrig,_dataregch,rmov4,_tcperdp,_totale_saldo,FALSE);
_pn->write(); _pn->write();
<<<<<<< cg4600.cpp
_sld->registra();
}
else
if (_totale_saldo.sign() < 0)
{
int j;
//Compilo la testata per Profitti e perdite a Utile di es. c.economico
//Chiusura conto economico
_pn->destroy_rows(); //Azzero l'oggetto pn.
j = 0;
ultima_registrazione();
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 3
TRectype& rmov1 = _pn->cg(j);
long numrig = 1;
rmov_proper(_annoesch,numrig,rmov1,_tcutile,_totale_saldo,FALSE);
numrig++;
j++;
TRectype& rmov2 = _pn->cg(j);
rmov_proper(_annoesch,numrig,rmov2,_tcproper,_totale_saldo,TRUE);
=======
_sld->registra(); _sld->registra();
_sld->reset(); _sld->reset();
@ -809,7 +982,15 @@ void CG4600_application::chiusura_conto_economico()
j++; j++;
TRectype& rmov6 = _pn->cg(j); TRectype& rmov6 = _pn->cg(j);
rmov_proper(_annoesap,numrig,_dataregap,rmov6,_tcperdp,_totale_saldo,FALSE); rmov_proper(_annoesap,numrig,_dataregap,rmov6,_tcperdp,_totale_saldo,FALSE);
>>>>>>> 1.6
<<<<<<< cg4600.cpp
_pn ->write();
_sld->registra();
//Compilo la testata per Utile di es. c.economico a Utile di es. c.patrimoniale
//Chiusura capitale netto
=======
_pn->write(); _pn->write();
_sld->registra(); _sld->registra();
_sld->set_anno_es(_annoesch); _sld->set_anno_es(_annoesch);
@ -821,7 +1002,22 @@ void CG4600_application::chiusura_conto_economico()
//Compilo la testata per Profitti e perdite a Utile di es. c.economico //Compilo la testata per Profitti e perdite a Utile di es. c.economico
//Chiusura conto economico //Chiusura conto economico
>>>>>>> 1.6
<<<<<<< cg4600.cpp
_pn->destroy_rows(); //Azzero l'oggetto pn.
j = 0;
ultima_registrazione();
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 4
TRectype& rmov3 = _pn->cg(j);
numrig = 1;
rmov_proper(_annoesch,numrig,rmov3,_tcutilp,_totale_saldo,FALSE);
numrig++;
j++;
TRectype& rmov4 = _pn->cg(j);
rmov_proper(_annoesch,numrig,rmov4,_tcutile,_totale_saldo,TRUE);
=======
_pn->destroy_rows(); //Azzero l'oggetto pn. _pn->destroy_rows(); //Azzero l'oggetto pn.
j = 0; j = 0;
ultima_registrazione(); ultima_registrazione();
@ -876,11 +1072,17 @@ void CG4600_application::chiusura_conto_economico()
j++; j++;
TRectype& rmov6 = _pn->cg(j); TRectype& rmov6 = _pn->cg(j);
rmov_proper(_annoesap,numrig,_dataregap,rmov6,_tcutilp,_totale_saldo,FALSE); rmov_proper(_annoesap,numrig,_dataregap,rmov6,_tcutilp,_totale_saldo,FALSE);
>>>>>>> 1.6
<<<<<<< cg4600.cpp
_pn ->write();
_sld->registra();
=======
_pn->write(); _pn->write();
_sld->registra(); _sld->registra();
_sld->set_anno_es(_annoesch); _sld->set_anno_es(_annoesch);
>>>>>>> 1.6
} }
} }
@ -892,8 +1094,8 @@ void CG4600_application::chiusura_conto_patrimoniale()
if (_totale_saldo > ZERO) if (_totale_saldo > ZERO)
{ {
//Compilo la testata per Bilancio di chiusura a Perdita di es. c. patrimoniale //Compilo la testata per Bilancio di chiusura a Perdita di es. c. patrimoniale
//Chiusura conto patrimoniale //Chiusura conto patrimoniale
_pn->destroy_rows(); //Azzero l'oggetto pn. _pn->destroy_rows(); //Azzero l'oggetto pn.
j = 0; j = 0;
@ -912,12 +1114,26 @@ void CG4600_application::chiusura_conto_patrimoniale()
_sld->registra(); _sld->registra();
} }
else else
if (_totale_saldo < ZERO) if (_totale_saldo < ZERO)
{ {
//Compilo la testata per Utile di es. c.patrimon. a Bilancio di chiusura //Compilo la testata per Utile di es. c.patrimon. a Bilancio di chiusura
//Chiusura conto patrimoniale //Chiusura conto patrimoniale
<<<<<<< cg4600.cpp
_pn->destroy_rows(); //Azzero l'oggetto pn.
j = 0;
ultima_registrazione();
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 7
TRectype& rmov1 = _pn->cg(j);
numrig = 1;
rmov_proper(_annoesch,numrig,rmov1,_tcbilch,_totale_saldo,TRUE);
numrig++;
j++;
TRectype& rmov2 = _pn->cg(j);
rmov_proper(_annoesch,numrig,rmov2,_tcperdp,_totale_saldo,FALSE);
=======
_pn->destroy_rows(); //Azzero l'oggetto pn. _pn->destroy_rows(); //Azzero l'oggetto pn.
j = 0; j = 0;
ultima_registrazione(); ultima_registrazione();
@ -930,6 +1146,7 @@ void CG4600_application::chiusura_conto_patrimoniale()
j++; j++;
TRectype& rmov2 = _pn->cg(j); TRectype& rmov2 = _pn->cg(j);
rmov_proper(_annoesch,numrig,_dataregch,rmov2,_tcperdp,_totale_saldo,FALSE); rmov_proper(_annoesch,numrig,_dataregch,rmov2,_tcperdp,_totale_saldo,FALSE);
>>>>>>> 1.6
_pn ->write(); _pn ->write();
_sld->registra(); _sld->registra();
@ -981,6 +1198,26 @@ void CG4600_application::attivita()
if (_saldi->curr() > rec || _saldi->eof()) if (_saldi->curr() > rec || _saldi->eof())
{ {
<<<<<<< cg4600.cpp
// Aggiungo un ulteriore riga di movimento contenente la somma
// di tutti i saldi aventi lo stesso conto, indicandola
// con una sezione opposta al risultato (della somma).
if (j >= 1)
{
numrig++;
rmov_proper(_annoesch,numrig,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura
tot_saldo = ZERO;
}
break;
}
numrig++;
s = _saldi->get_long(SLD_SOTTOCONTO);
// int annoeseprec = atoi(_annoeseprec);
sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil);
=======
// Aggiungo un ulteriore riga di movimento contenente la somma // Aggiungo un ulteriore riga di movimento contenente la somma
// di tutti i saldi aventi lo stesso conto, indicandola // di tutti i saldi aventi lo stesso conto, indicandola
// con una sezione opposta al risultato (della somma). // con una sezione opposta al risultato (della somma).
@ -998,6 +1235,7 @@ void CG4600_application::attivita()
numrig++; numrig++;
s = _saldi->get_long(SLD_SOTTOCONTO); s = _saldi->get_long(SLD_SOTTOCONTO);
sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil);
>>>>>>> 1.6
_saldo = sale.saldo(); _saldo = sale.saldo();
if (_saldo == ZERO) continue; if (_saldo == ZERO) continue;
@ -1017,7 +1255,7 @@ void CG4600_application::attivita()
tot_saldo += _saldo; // quando ho raggiunto un massimo di 200 tot_saldo += _saldo; // quando ho raggiunto un massimo di 200
_totale_saldo += _saldo; _totale_saldo += _saldo;
} // righe di movimento, genero un' altra } // righe di movimento, genero un' altra
else // riga con importo di sezione opposta else // riga con importo di sezione opposta
if (sezione == 'A') // alla somma, mandando a zero if (sezione == 'A') // alla somma, mandando a zero
{ // il saldo di quel movimento. { // il saldo di quel movimento.
sez_rmov = 'D'; sez_rmov = 'D';
@ -1031,8 +1269,13 @@ void CG4600_application::attivita()
// di tutti i saldi aventi lo stesso sottoconto, indicandola // di tutti i saldi aventi lo stesso sottoconto, indicandola
// con una sezione opposta al risultato (della somma). // con una sezione opposta al risultato (della somma).
<<<<<<< cg4600.cpp
// numrig++;
rmov_proper (_annoesch,numrig,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura
=======
// numrig++; // numrig++;
rmov_proper (_annoesch,numrig,_dataregch,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura rmov_proper (_annoesch,numrig,_dataregch,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura
>>>>>>> 1.6
tot_saldo = ZERO; tot_saldo = ZERO;
} }
@ -1166,6 +1409,26 @@ void CG4600_application::passivita()
if (_saldi->curr() > rec || _saldi->eof()) if (_saldi->curr() > rec || _saldi->eof())
{ {
<<<<<<< cg4600.cpp
// Aggiungo un ulteriore riga di movimento contenente la somma
// di tutti i saldi aventi lo stesso conto, indicandola
// con una sezione opposta al risultato (della somma).
if (j >= 1)
{
numrig++;
rmov_proper(_annoesch,numrig,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura
tot_saldo = ZERO;
}
break;
}
numrig++;
s = _saldi->get_long(SLD_SOTTOCONTO);
// int annoeseprec = atoi(_annoeseprec);
sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil);
=======
// Aggiungo un ulteriore riga di movimento contenente la somma // Aggiungo un ulteriore riga di movimento contenente la somma
// di tutti i saldi aventi lo stesso conto, indicandola // di tutti i saldi aventi lo stesso conto, indicandola
// con una sezione opposta al risultato (della somma). // con una sezione opposta al risultato (della somma).
@ -1183,6 +1446,7 @@ void CG4600_application::passivita()
numrig++; numrig++;
s = _saldi->get_long(SLD_SOTTOCONTO); s = _saldi->get_long(SLD_SOTTOCONTO);
sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil);
>>>>>>> 1.6
_saldo = sale.saldo(); _saldo = sale.saldo();
if (_saldo.is_zero()) continue; if (_saldo.is_zero()) continue;
@ -1202,7 +1466,7 @@ void CG4600_application::passivita()
tot_saldo += _saldo; // quando ho raggiunto un massimo di 200 tot_saldo += _saldo; // quando ho raggiunto un massimo di 200
_totale_saldo += _saldo; _totale_saldo += _saldo;
} // righe di movimento, genero un' altra } // righe di movimento, genero un' altra
else // riga con importo di sezione opposta else // riga con importo di sezione opposta
if (sezione == 'A') // alla somma, mandando a zero if (sezione == 'A') // alla somma, mandando a zero
{ // il saldo di quel movimento. { // il saldo di quel movimento.
sez_rmov = 'D'; sez_rmov = 'D';
@ -1216,8 +1480,13 @@ void CG4600_application::passivita()
// di tutti i saldi aventi lo stesso sottoconto, indicandola // di tutti i saldi aventi lo stesso sottoconto, indicandola
// con una sezione opposta al risultato (della somma). // con una sezione opposta al risultato (della somma).
<<<<<<< cg4600.cpp
// numrig++;
rmov_proper (_annoesch,numrig,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura
=======
// numrig++; // numrig++;
rmov_proper (_annoesch,numrig,_dataregch,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura rmov_proper (_annoesch,numrig,_dataregch,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura
>>>>>>> 1.6
tot_saldo = ZERO; tot_saldo = ZERO;
} }

View File

@ -52,6 +52,18 @@ TConto& TConto::set(int g, int c, long s, char t, const char* d)
return *this; 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% // Certified 100%
bool TConto::ok() const bool TConto::ok() const

View File

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