Modifiche a causali bilanci libro giornale

git-svn-id: svn://10.65.10.50/trunk@314 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
nik 1994-10-04 17:25:53 +00:00
parent b677c3edf9
commit 1aa60d0476
12 changed files with 3209 additions and 2379 deletions

View File

@ -153,11 +153,12 @@ void TRighe_rcaus::set_descr(int i, const char * dfi, char tipocf)
if (r == NULL) if (r == NULL)
{ {
r = new Riga_rcaus (tc,dfi,tipocf); // r = new Riga_rcaus (tc,dfi,tipocf);
r = new Riga_rcaus (tc,dfi);
add(r,i); add(r,i);
} }
r->add(dfi, 0); r->add(dfi, 0);
r->add(tipocf, 1); // r->add(tipocf, 1);
} }
bool filtra_reg(const TRelation * r); bool filtra_reg(const TRelation * r);
@ -249,7 +250,7 @@ bool CG0500_application::leggi_riga(int r, KEY k)
if (k == K_ENTER) if (k == K_ENTER)
{ {
TToken_string &riga = app()->ss().row(r); TToken_string &riga = app()->ss().row(r);
const int g = riga.get_int(3); const int g = riga.get_int(2);
if (g == 0) // riga azzerata if (g == 0) // riga azzerata
{ {
riga.add("", 1); // pulisco tipo C/F riga.add("", 1); // pulisco tipo C/F
@ -263,27 +264,34 @@ bool CG0500_application::leggi_riga(int r, KEY k)
bool filtra_reg(const TRelation * r) bool filtra_reg(const TRelation * r)
{ {
TFixed_string codtab(r->lfile().get("CODTAB")); const TString codtab(r->lfile().get("CODTAB"));
const int anno = atoi(codtab.cut(4)); int tiporeg = r->lfile().get_int("I0");
if (anno == anno_iva()) bool corrisp = r->lfile().get_bool("B0");
{
const int tiporeg = r->lfile().get_int("I0");
const bool corrisp = r->lfile().get_bool("B0");
switch (app()->_filtro) const int anno = atoi(codtab.left(4));
{
case 1: switch (app()->_filtro)
return (tiporeg == 1); {
case 2: case 1:
return (tiporeg == 1 && corrisp); if (anno == anno_iva() && tiporeg == 1)
case 3: return TRUE;
return (tiporeg == 2); break;
case 4: // tiporeg 1 senza corrisp OPPURE 2 (NC ST ND AF) case 2:
return ( (tiporeg == 1 && !corrisp) || tiporeg == 2 ); if (anno == anno_iva() && tiporeg == 1 && corrisp)
default: return TRUE;
return FALSE; break;
} case 3:
} if (anno == anno_iva() && tiporeg == 2)
return TRUE;
break;
case 4: // tiporeg 1 senza corrisp OPPURE 2 (NC ST ND AF)
if (anno == anno_iva())
if ( (tiporeg == 1 && !corrisp) || tiporeg == 2 )
return TRUE;
break;
default:
return FALSE;
}
return FALSE; return FALSE;
} }
@ -358,31 +366,6 @@ bool CG0500_application::tipodoc_hndl (TMask_field& f, KEY k)
field_reg.browse()->cursor()->set_filterfunction(filtra_reg); field_reg.browse()->cursor()->set_filterfunction(filtra_reg);
} }
} }
/**************************************************************
// Cambio il filtro sui registri: con tipo=1
if (val == "FV" || val == "FF" || val == "FS") {
app()->_filtro = 1;
field_reg.browse()->cursor()->set_filterfunction(filtra_reg);
} else
// con tipo=1 e corrisp="X"
if (val == "CN" || val == "RN" || val == "CR" ||
val == "SC" || val == "RF" || val == "SN") {
app()->_filtro = 2;
field_reg.browse()->cursor()->set_filterfunction(filtra_reg);
} else
// Possono essere 1 o 2
if (val == "NC" || val == "ST" || val == "ND" ||
val == "AF") {
app()->_filtro = 4;
field_reg.browse()->cursor()->set_filterfunction(filtra_reg);
} else
// con tipo=2
if (val == "FA" || val == "BD") {
app()->_filtro = 3;
field_reg.browse()->cursor()->set_filterfunction(filtra_reg);
}
**************************************************************/
} }
else // TIPODOC vuoto || IN || PG || AN else // TIPODOC vuoto || IN || PG || AN
{ {
@ -398,25 +381,25 @@ bool CG0500_application::tipodoc_hndl (TMask_field& f, KEY k)
} }
// Ma davvero esiste il registro ? // Ma davvero esiste il registro ?
const TString16 codreg=f.mask().get(F_COD_REG); TString16 codreg=f.mask().get(F_COD_REG);
if (codreg.not_empty()) if (codreg.not_empty())
{ {
const TRegistro registro(codreg, anno_iva()); TRegistro registro(codreg, anno_iva());
if (!registro.ok()) if (!registro.read(codreg, anno_iva()))
return f.error_box("Non esiste il registro %s per l'anno %d", return f.warning_box("Non esiste il registro %s per l'anno %d",
(const char*)codreg, anno_iva()); (const char *)codreg, anno_iva());
} }
app()->MostraCampi(f); app()->MostraCampi(f);
app()->fill_sheet(f.mask()); if (f.focusdirty())
app()->fill_sheet(f.mask());
} }
return TRUE; return TRUE;
} }
bool CG0500_application::tipomov_hndl (TMask_field& f, KEY k) bool CG0500_application::tipomov_hndl (TMask_field& f, KEY k)
{ {
if (k == K_SPACE) if (k == K_SPACE) {
{
app()->MostraCampi(f); app()->MostraCampi(f);
if (f.focusdirty()) app()->fill_sheet(f.mask()); if (f.focusdirty()) app()->fill_sheet(f.mask());
} }
@ -427,15 +410,14 @@ bool CG0500_application::tipomov_hndl (TMask_field& f, KEY k)
// essere puramente contabile (= codreg vuoto e tpm = Nessuno // essere puramente contabile (= codreg vuoto e tpm = Nessuno
bool CG0500_application::codcausim_hndl (TMask_field& f, KEY k) bool CG0500_application::codcausim_hndl (TMask_field& f, KEY k)
{ {
if (f.to_check(k)) if (f.to_check(k)) {
{ TString16 causim(f.get());
const TString16 causim(f.get());
TLocalisamfile& caus = app()->_rel->lfile(LF_CAUSALI); TLocalisamfile& caus = app()->_rel->lfile(LF_CAUSALI);
caus.zero(); caus.zero();
caus.put(CAU_CODCAUS, causim); caus.put(CAU_CODCAUS, causim);
if (caus.read() == NOERR) if (caus.read() == NOERR)
{ {
const int tpm = caus.get_int(CAU_TIPOMOV); const int tpm = caus.get_int(CAU_TIPOMOV);
TString16 codreg = caus.get(CAU_REG); TString16 codreg = caus.get(CAU_REG);
if (codreg.not_empty() || tpm != 0) if (codreg.not_empty() || tpm != 0)
return f.warning_box("La causale per l'incasso immediato specificata (%s) deve essere puramente contabile", return f.warning_box("La causale per l'incasso immediato specificata (%s) deve essere puramente contabile",
@ -449,8 +431,8 @@ bool CG0500_application::codcausim_hndl (TMask_field& f, KEY k)
bool CG0500_application::MostraCampi(TMask_field& f) bool CG0500_application::MostraCampi(TMask_field& f)
{ {
TMask& m = f.mask(); TMask& m = f.mask();
const int tpm = m.get_int(F_TIPO_MOV); const int tpm = m.get_int(F_TIPO_MOV);
const TString16 codreg = m.get(F_COD_REG); TString16 codreg = m.get(F_COD_REG);
if (codreg.empty()) if (codreg.empty())
{ {
m.hide(F_AUTO_FAT); m.hide(F_AUTO_FAT);
@ -458,15 +440,14 @@ bool CG0500_application::MostraCampi(TMask_field& f)
m.hide(F_FAT_RITARDO); m.hide(F_FAT_RITARDO);
m.hide(F_OP_INTRACOM); m.hide(F_OP_INTRACOM);
m.hide(F_VALINTRA); m.hide(F_VALINTRA);
if (salda_conto()) if (salda_conto()) m.hide(F_COD_CAUS_IM);
m.hide(F_COD_CAUS_IM);
switch (tpm) switch (tpm) {
{
case 0: case 0:
m.show(F_OP_FINE_ANNO); m.show(F_OP_FINE_ANNO);
m.show(F_COLL_CESP); m.show(F_COLL_CESP);
m.show(F_M_770); m.show(F_M_770);
m.hide(F_MOV_VALU); if (salda_conto()) m.hide(F_MOV_VALU);
m.hide(F_MOV_SEZ); m.hide(F_MOV_SEZ);
break; break;
case 3: case 3:
@ -482,8 +463,7 @@ bool CG0500_application::MostraCampi(TMask_field& f)
break; break;
} }
} }
else else { // codreg non vuoto
{ // codreg non vuoto
m.hide(F_OP_FINE_ANNO); m.hide(F_OP_FINE_ANNO);
m.hide(F_MOV_SEZ); m.hide(F_MOV_SEZ);
if (gestione_valuta()) m.show(F_MOV_VALU); if (gestione_valuta()) m.show(F_MOV_VALU);
@ -500,11 +480,9 @@ bool CG0500_application::MostraCampi(TMask_field& f)
bool CG0500_application::cod_reg_hndl (TMask_field& f, KEY k) bool CG0500_application::cod_reg_hndl (TMask_field& f, KEY k)
{ {
if (k == K_TAB) if (k == K_TAB) {
{
app()->MostraCampi(f); app()->MostraCampi(f);
if (f.focusdirty()) if (f.focusdirty()) app()->fill_sheet(f.mask());
app()->fill_sheet(f.mask());
return TRUE; return TRUE;
} }
@ -526,53 +504,13 @@ bool CG0500_application::cod_reg_hndl (TMask_field& f, KEY k)
i = (TipoIVA)tabtpd.get_int("I0"); // IVA acquisti, vendite, generica i = (TipoIVA)tabtpd.get_int("I0"); // IVA acquisti, vendite, generica
const TipoIVA ri = grog.iva(); const TipoIVA ri = grog.iva();
if (i == iva_generica) i = ri; if (i == iva_generica) i = ri;
if (i != ri) if (i != ri) {
{
return f.warning_box("Tipo documento incompatibile con tipo registro"); return f.warning_box("Tipo documento incompatibile con tipo registro");
i = iva_errata; i = iva_errata;
} }
} }
} }
} }
/*
if (tpd.not_empty() && tpd != "AN" && tpd != "PG" && tpd != "IN")
{
if (codreg.empty())
return f.warning_box("Manca il codice del registro");
}
else
{
// con tipo=1
if (tpd == "FV" || tpd == "FS" || tpd == "FS")
{
if (tipo != 1) ok = FALSE;
} else
// con tipo=1 e corrisp="X"
if (tpd == "CN" || tpd == "RN" || tpd == "CR" ||
tpd == "SC" || tpd == "RF" || tpd == "SN")
{
if (tipo != 1 || !corrisp) ok = FALSE;
} else
// Possono essere 1 o 2
if (tpd == "NC" || tpd == "ST" || tpd == "ND" ||
tpd == "AF")
{
if (tipo != 1 && tipo != 2) ok = FALSE;
} else
// con tipo=2
if (tpd == "FA" || tpd == "BD")
{
if (tipo != 2) ok = FALSE;
}
}
if (!ok)
return f.warning_box("Il registro (tipo %d) non e' compatibile con il tipo di documento (%s)",
tipo, (const char*)tpd);
}
*/
return TRUE; return TRUE;
} }
@ -580,9 +518,9 @@ bool CG0500_application::cod_reg_hndl (TMask_field& f, KEY k)
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////
// Handler della maschera dello spreadsheet // Handler della maschera dello spreadsheet
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////
// Se specifico il conto deve essere non vuoto il gruppo
bool CG0500_application::conto_hndl (TMask_field& f, KEY k) bool CG0500_application::conto_hndl (TMask_field& f, KEY k)
{ {
// Se specifico il conto deve essere non vuoto il gruppo
if (f.to_check(k)) if (f.to_check(k))
{ {
int io = f.dlg(); int io = f.dlg();
@ -593,7 +531,7 @@ bool CG0500_application::conto_hndl (TMask_field& f, KEY k)
if (g == 0) if (g == 0)
return f.warning_box("Non accetto un conto senza gruppo"); return f.warning_box("Non accetto un conto senza gruppo");
} }
// Controllo: << solo la riga 1 o 7 possono essere C/F >> // Controllo: << se e' fattura solo la riga 1 o 7 possono essere C/F >>
if (k == K_ENTER) if (k == K_ENTER)
{ {
char scarta = '\0'; char scarta = '\0';
@ -601,52 +539,50 @@ bool CG0500_application::conto_hndl (TMask_field& f, KEY k)
char cf = f.mask().get(SS_TIPOCF)[0]; char cf = f.mask().get(SS_TIPOCF)[0];
TMask_field& cfld = f.mask().field(SS_TIPOCF); TMask_field& cfld = f.mask().field(SS_TIPOCF);
const int tpr = app()->main_mask()->get_int(F_TIPO_REG); const int tpr = app()->main_mask()->get_int(F_TIPO_REG);
bool puramente_contabile = FALSE;
switch (tpr) switch (tpr)
{ {
case 1: case 1: scarta = 'F'; break;
scarta = 'F'; case 2: scarta = 'C'; break;
break; case 0:
case 2: scarta = 'Z'; // Accetto tutto
scarta = 'C'; puramente_contabile = TRUE;
break; switch (app()->_tipo_des)
case 0: {
scarta = 'Z'; // Accetto tutto case incasso_pagamento: ultima = 11; break;
switch (app()->_tipo_des) case incasso_pagamento_gesval: ultima = 12; break;
{ default: break;
case incasso_pagamento: }
ultima = 11; }
break;
case incasso_pagamento_gesval: if (!puramente_contabile)
ultima = 12; {
break; if (app()->_riga > ultima) // se sono nelle righe libere accetto TUTTO..
default: return TRUE;
break;
}
}
if (app()->_riga > ultima) // se sono nelle righe libere accetto tutto
return TRUE;
else
if (app()->_riga == 0 || app()->_riga == 6)
{
if (cf == scarta)
return cfld.warning_box(
"Impossibile inserire un %s con registro di tipo %s nella riga %d",
cf == 'C' ? "cliente" : "fornitore",
tpr == 1 ? "vendite" : "acquisti", app()->_riga+1);
}
else else
if (cf != '\0') if (app()->_riga == 0 || app()->_riga == 6)
return cfld.warning_box( {
"Impossibile inserire un %s con registro di tipo %s nella riga %d", if (cf == scarta)
cf == 'C' ? "cliente" : "fornitore", return cfld.warning_box(
tpr == 1 ? "vendite" : "acquisti", app()->_riga+1); "Impossibile inserire un %s con registro di tipo %s nella riga %d",
cf == 'C' ? "cliente" : "fornitore",
tpr == 1 ? "vendite" : "acquisti", app()->_riga+1);
}
else
if (cf == 'C' || cf == 'F')
return cfld.warning_box(
"Impossibile inserire un %s con registro di tipo %s nella riga %d",
cf == 'C' ? "cliente" : "fornitore",
tpr == 1 ? "vendite" : "acquisti", app()->_riga+1);
}
} }
return TRUE; return TRUE;
} }
// Se specifico il sottoconto devono essere non vuoti gruppo e conto // 1. Se specifico il sottoconto devono essere non vuoti gruppo e conto
bool CG0500_application::sottoconto_hndl (TMask_field& f, KEY k) // 2. g-c-s devono esistere
bool CG0500_application::sottoconto_hndl (TMask_field& f, KEY k)
{ {
if (f.to_check(k)) if (f.to_check(k))
{ {
@ -658,6 +594,10 @@ bool CG0500_application::sottoconto_hndl (TMask_field& f, KEY k)
if (s > 0) if (s > 0)
if (g == 0 || c == 0) if (g == 0 || c == 0)
return f.warning_box("Non accetto un sottoconto con gruppo o conto vuoti"); return f.warning_box("Non accetto un sottoconto con gruppo o conto vuoti");
TConto tc(g,c,s);
if (!tc.read())
return f.warning_box("Conto inesistente");
} }
return TRUE; return TRUE;
} }
@ -706,15 +646,15 @@ void TRighe_rcaus::CausaleAcquisti()
int i=0; int i=0;
app()->_tipo_des = acquisto; app()->_tipo_des = acquisto;
// set_descr( i++, "C Fornitori", 'F'); // set_descr( i++, "C Fornitori", 'F');
set_descr( i++, "C Fornitori", ' '); set_descr( i++, "C Fornitori");
set_descr(i++, "C Di costo", ' '); set_descr(i++, "C Di costo");
set_descr(i++, "C Iva acquisti", ' '); set_descr(i++, "C Iva acquisti");
set_descr(i++, "C Iva non detraibile", ' '); set_descr(i++, "C Iva non detraibile");
set_descr(i++, "C Imp. esenti", ' '); set_descr(i++, "C Imp. esenti");
set_descr(i++, "C Imp. non imponibili", ' '); set_descr(i++, "C Imp. non imponibili");
set_descr(i++, "C Imp. non soggetti", ' '); set_descr(i++, "C Imp. non soggetti");
set_descr(i++, "C Ritenute fiscali", ' '); set_descr(i++, "C Ritenute fiscali");
set_descr(i++, "C Ritenute soc.", ' '); set_descr(i++, "C Ritenute soc.");
CaricaRigheLibere(); CaricaRigheLibere();
} }
@ -764,8 +704,7 @@ void CG0500_application::compilaarray(const TString& tpd, int tpm, int tpr, int
{ {
if (salda_conto()) if (salda_conto())
{ {
switch (tpm) switch (tpm) {
{
case 3: case 3:
case 5: case 5:
case 6: case 6:
@ -774,8 +713,7 @@ void CG0500_application::compilaarray(const TString& tpd, int tpm, int tpr, int
case 0: case 0:
if (m770 == 6) if (m770 == 6)
_righe_rcaus.CausaleRitenutaOccas(); _righe_rcaus.CausaleRitenutaOccas();
else else {
{
_forcedCopy = TRUE; _forcedCopy = TRUE;
_righe_rcaus.ClearDescr(); _righe_rcaus.ClearDescr();
_righe_rcaus.CaricaRigheLibere(); _righe_rcaus.CaricaRigheLibere();
@ -788,8 +726,7 @@ void CG0500_application::compilaarray(const TString& tpd, int tpm, int tpr, int
break; break;
} }
} }
else else { // NO saldaconto
{ // NO saldaconto
_forcedCopy = TRUE; _forcedCopy = TRUE;
_righe_rcaus.ClearDescr(); _righe_rcaus.ClearDescr();
_righe_rcaus.CaricaRigheLibere(); _righe_rcaus.CaricaRigheLibere();
@ -833,9 +770,13 @@ void CG0500_application::add_riga(int numrig,
{ {
TSheet_field& cs = ss(); TSheet_field& cs = ss();
TToken_string & riga = cs.row(numrig); TToken_string & riga = cs.row(numrig);
riga.add(cf, 1); riga.add(tc.gruppo(), 2); riga.add(cf, 1);
riga.add(tc.conto(), 3); riga.add(tc.sottoconto(),4); riga.add(tc.gruppo(), 2);
riga.add(sz, 5); riga.add(d, 6); riga.add(da,7); riga.add(tc.conto(), 3);
riga.add(tc.sottoconto(),4);
riga.add(sz, 5);
riga.add(d, 6);
riga.add(da,7);
riga.add(riva ? "X" : "", 8); riga.add(riva ? "X" : "", 8);
riga.add(civa, 9); riga.add(civa, 9);
} }
@ -850,12 +791,16 @@ void CG0500_application::read_rcaus(TMask& m)
TLocalisamfile& rcaus = _rel->lfile(LF_RCAUSALI); TLocalisamfile& rcaus = _rel->lfile(LF_RCAUSALI);
_rel->update(); // chiamo position_rels() _rel->update(); // chiamo position_rels()
const TString cod(_rel->lfile().get(RCA_CODCAUS));
_righe_gia_presenti.reset(); _righe_gia_presenti.reset();
// _righe_rcaus.destroy(); // _righe_rcaus.destroy();
rcaus.zero();
rcaus.put(RCA_CODCAUS, cod);
int e = rcaus.read(_isgteq);
bool ok = _rel->is_first_match(LF_RCAUSALI); while (e == NOERR && rcaus.get(RCA_CODCAUS) == cod)
while (ok)
{ {
numrig = rcaus.get_int(RCA_NRIGA); numrig = rcaus.get_int(RCA_NRIGA);
CHECK(numrig > 0, "Causale con numero riga nullo"); CHECK(numrig > 0, "Causale con numero riga nullo");
@ -865,7 +810,6 @@ void CG0500_application::read_rcaus(TMask& m)
sz = rcaus.get_char(RCA_SEZIONE); sz = rcaus.get_char(RCA_SEZIONE);
d = rcaus.get(RCA_DESC); d = rcaus.get(RCA_DESC);
da = rcaus.get(RCA_CODDESC); da = rcaus.get(RCA_CODDESC);
// cf = rcaus.get(RCA_TIPOCF)[0];
cf = rcaus.get_char(RCA_TIPOCF); cf = rcaus.get_char(RCA_TIPOCF);
riva = rcaus.get_bool(RCA_RIGAIVA); riva = rcaus.get_bool(RCA_RIGAIVA);
civa = rcaus.get(RCA_CODIVA); civa = rcaus.get(RCA_CODIVA);
@ -873,8 +817,8 @@ void CG0500_application::read_rcaus(TMask& m)
add_riga(numrig-1, cf, sz, d, da, riva, civa, tc); add_riga(numrig-1, cf, sz, d, da, riva, civa, tc);
_righe_gia_presenti.set(numrig); _righe_gia_presenti.set(numrig);
ok = _rel->next_match(LF_RCAUSALI); e = rcaus.next();
} }
} }
@ -915,22 +859,18 @@ bool CG0500_application::descr2array(TMask& m, bool fromHandler)
int tpm, m770, tpr; int tpm, m770, tpr;
// if (m.mode() == MODE_MOD && !fromHandler) // if (m.mode() == MODE_MOD && !fromHandler)
if (fromHandler) if (fromHandler) {
{
codreg = m.field(F_COD_REG).get(); codreg = m.field(F_COD_REG).get();
tpd = m.field(F_TIPO_DOC).get(); tpd = m.field(F_TIPO_DOC).get();
tpm = m.get_int(F_TIPO_MOV); tpm = m.get_int(F_TIPO_MOV);
m770 = m.get_int(F_M_770); m770 = m.get_int(F_M_770);
} } else if (m.mode() == MODE_MOD) {
else if (m.mode() == MODE_MOD)
{
codreg = caus.get("REG"); codreg = caus.get("REG");
tpd = caus.get("TIPODOC"); tpd = caus.get("TIPODOC");
tpm = caus.get_int("TIPOMOV"); tpm = caus.get_int("TIPOMOV");
m770 = caus.get_int("M770"); m770 = caus.get_int("M770");
} }
else else { // sono in inserimento e prima di entrare negli handler
{ // sono in inserimento e prima di entrare negli handler
codreg = m.field(F_COD_REG).get(); codreg = m.field(F_COD_REG).get();
tpd = m.field(F_TIPO_DOC).get(); tpd = m.field(F_TIPO_DOC).get();
tpm = m.get_int(F_TIPO_MOV); tpm = m.get_int(F_TIPO_MOV);
@ -939,13 +879,12 @@ bool CG0500_application::descr2array(TMask& m, bool fromHandler)
if (fromHandler) if (fromHandler)
tpr = m.get_int(F_TIPO_REG); tpr = m.get_int(F_TIPO_REG);
else else {
{
TString16 chiave; chiave << anno_iva() << codreg; TString16 chiave; chiave << anno_iva() << codreg;
TTable reg("REG"); TTable reg("REG");
reg.put("CODTAB", chiave); reg.put("CODTAB", chiave);
reg.read(); reg.read();
tpr = reg.get_int("I0"); tpr = reg.get_int("I0");
} }
// carico le descrizioni fisse nell'array Righe_rcaus // carico le descrizioni fisse nell'array Righe_rcaus
@ -957,7 +896,7 @@ bool CG0500_application::descr2array(TMask& m, bool fromHandler)
void CG0500_application::togli_dal_file(const TString& cau) void CG0500_application::togli_dal_file(const TString& cau)
{ {
long i; long i;
TLocalisamfile &rcaus = _rel->lfile(LF_RCAUSALI); TLocalisamfile& rcaus = _rel->lfile(LF_RCAUSALI);
long last = _righe_gia_presenti.last_one(); long last = _righe_gia_presenti.last_one();
long start = _righe_gia_presenti.first_one(); long start = _righe_gia_presenti.first_one();
@ -988,10 +927,10 @@ int CG0500_application::rewrite(const TMask& m)
int CG0500_application::re_write(const TMask& m,bool rewrite) int CG0500_application::re_write(const TMask& m,bool rewrite)
{ {
const TString16 cau(m.get(F_COD_CAUS)); const TString16 cau(m.get(F_COD_CAUS));
TString80 desc; TString80 desc;
TString16 coddesc; TString16 coddesc;
TLocalisamfile &caus = _rel->lfile(LF_CAUSALI); TLocalisamfile& caus = _rel->lfile(LF_CAUSALI);
TLocalisamfile &rcaus = _rel->lfile(LF_RCAUSALI); TLocalisamfile& rcaus = _rel->lfile(LF_RCAUSALI);
m.autosave(_rel); m.autosave(_rel);
@ -1004,14 +943,13 @@ int CG0500_application::re_write(const TMask& m,bool rewrite)
TToken_string &riga = cs.row(i); TToken_string &riga = cs.row(i);
if (riga.empty_items()) continue; if (riga.empty_items()) continue;
desc = riga.get(0); const char tipo_cf = riga.get_char(1);
const char tipo_cf = riga.get_char(); const int g = riga.get_int(2);
const int g = riga.get_int(); const int c = riga.get_int(3);
const int c = riga.get_int(); long s = riga.get_long(4);
long s = riga.get_long(); char sezione = riga.get_char(5);
char sezione = riga.get_char(); desc = riga.get(6);
desc = riga.get(); coddesc = riga.get(7);
coddesc = riga.get();
if (g > 0 || c > 0 || s > 0L) if (g > 0 || c > 0 || s > 0L)
{ {
@ -1035,7 +973,7 @@ int CG0500_application::re_write(const TMask& m,bool rewrite)
} }
else else
rcaus.write(); rcaus.write();
} }
} }
if (rewrite) if (rewrite)
@ -1050,10 +988,12 @@ int CG0500_application::re_write(const TMask& m,bool rewrite)
bool CG0500_application::remove() bool CG0500_application::remove()
{ {
_rel->restore_status(); // senno' non riesco a leggere il cod. caus.
_rel->update(); // chiamo position_rels()
const TString cod(_rel->lfile().get(RCA_CODCAUS));
const bool ok = TRelation_application::remove(); const bool ok = TRelation_application::remove();
if (ok) if (ok)
{ {
const TString cod(_rel->lfile().get(RCA_CODCAUS));
TLocalisamfile& rcaus = _rel->lfile(LF_RCAUSALI); TLocalisamfile& rcaus = _rel->lfile(LF_RCAUSALI);
rcaus.zero(); rcaus.zero();
rcaus.put(RCA_CODCAUS, cod); rcaus.put(RCA_CODCAUS, cod);
@ -1101,15 +1041,13 @@ bool CG0500_application::user_create()
_msk = new TMask("cg0500a"); _msk = new TMask("cg0500a");
if (!salda_conto()) if (!salda_conto()) {
{
_msk->hide (F_MOV_SEZ); _msk->hide (F_MOV_SEZ);
_msk->hide (F_TIPO_MOV_1); _msk->hide (F_TIPO_MOV_1);
_msk->hide (F_TIPO_MOV_2); _msk->hide (F_TIPO_MOV_2);
_msk->show (F_COD_CAUS_IM); _msk->show (F_COD_CAUS_IM);
} }
else else {
{
_msk->show (F_MOV_SEZ); _msk->show (F_MOV_SEZ);
_msk->hide (F_COD_CAUS_IM); _msk->hide (F_COD_CAUS_IM);
} }

View File

@ -81,9 +81,10 @@ BEGIN
OUTPUT F_COD_REG CODTAB[5,7] OUTPUT F_COD_REG CODTAB[5,7]
OUTPUT F_TIPO_REG I0 OUTPUT F_TIPO_REG I0
OUTPUT F_CORRISP B0 OUTPUT F_CORRISP B0
HELP "Codice registro" HELP "Inserire il codice registro"
WARNING "Non trovo il registro"
CHECKTYPE NORMAL CHECKTYPE NORMAL
FLAGS "DU" FLAGS "DUZ"
END END
// Questo rimane sempre nascosto // Questo rimane sempre nascosto

View File

@ -11,15 +11,9 @@ END
LISTBOX 102 1 11 LISTBOX 102 1 11
BEGIN BEGIN
PROMPT 33 1 "C/F " PROMPT 33 1 "C/F "
ITEM " |Conto" ITEM " |Conto" MESSAGE SHOW,105|HIDE,205|HIDE,305|SHOW,107|HIDE,207|HIDE,307
MESSAGE SHOW,105|HIDE,205|HIDE,305 ITEM "C|Cliente" MESSAGE SHOW,205|HIDE,105|HIDE,305|SHOW,207|HIDE,107|HIDE,307
MESSAGE SHOW,107|HIDE,207|HIDE,307 ITEM "F|Fornitore" MESSAGE SHOW,305|HIDE,105|HIDE,205|SHOW,307|HIDE,107|HIDE,207
ITEM "C|Cliente"
MESSAGE SHOW,205|HIDE,105|HIDE,305
MESSAGE SHOW,207|HIDE,107|HIDE,307
ITEM "F|Fornitore"
MESSAGE SHOW,305|HIDE,105|HIDE,205
MESSAGE SHOW,307|HIDE,107|HIDE,207
FLAGS "DG" FLAGS "DG"
GROUP 1 GROUP 1
// FLAGS "U" // FLAGS "U"
@ -60,7 +54,10 @@ BEGIN
OUTPUT 102 TMCF OUTPUT 102 TMCF
OUTPUT 104 CONTO OUTPUT 104 CONTO
OUTPUT 103 GRUPPO OUTPUT 103 GRUPPO
OUTPUT 107 DESCR OUTPUT 107 DESCR
OUTPUT 207 DESCR
OUTPUT 307 DESCR
MESSAGE DIRTY,105|DIRTY,205|DIRTY,305
WARNING "Conto inesistente o mancante" WARNING "Conto inesistente o mancante"
ADD RUN CG0 -0 ADD RUN CG0 -0
GROUP 1 GROUP 1
@ -85,6 +82,8 @@ BEGIN
OUTPUT 107 DESCR OUTPUT 107 DESCR
ADD RUN CG0 -0 ADD RUN CG0 -0
CHECKTYPE NORMAL CHECKTYPE NORMAL
HELP "Inserire il sottoconto"
WARNING "Sottoconto inesistente"
GROUP 1 GROUP 1
END END
@ -103,8 +102,19 @@ BEGIN
DISPLAY "Ragione sociale@50" RAGSOC DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Tipo C/F" TIPOCF DISPLAY "Tipo C/F" TIPOCF
OUTPUT 205 CODCF OUTPUT 205 CODCF
<<<<<<< cg0500b.uml
OUTPUT 105 CODCF
OUTPUT 207 RAGSOC OUTPUT 207 RAGSOC
OUTPUT 107 RAGSOC
OUTPUT 307 RAGSOC
=======
OUTPUT 207 RAGSOC
>>>>>>> 1.11
CHECKTYPE NORMAL CHECKTYPE NORMAL
<<<<<<< cg0500b.uml
FLAGS "H"
=======
>>>>>>> 1.11
ADD RUN CG0 -1 ADD RUN CG0 -1
GROUP 1 GROUP 1
END END
@ -123,8 +133,20 @@ BEGIN
DISPLAY "Ragione sociale@50" RAGSOC DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Tipo C/F" TIPOCF DISPLAY "Tipo C/F" TIPOCF
OUTPUT 305 CODCF OUTPUT 305 CODCF
<<<<<<< cg0500b.uml
OUTPUT 205 CODCF
OUTPUT 105 CODCF
OUTPUT 107 RAGSOC
OUTPUT 207 RAGSOC
OUTPUT 307 RAGSOC OUTPUT 307 RAGSOC
=======
OUTPUT 307 RAGSOC
>>>>>>> 1.11
CHECKTYPE NORMAL CHECKTYPE NORMAL
<<<<<<< cg0500b.uml
FLAGS "H"
=======
>>>>>>> 1.11
ADD RUN CG0 -1 ADD RUN CG0 -1
GROUP 1 GROUP 1
END END
@ -154,6 +176,11 @@ BEGIN
OUTPUT 104 CONTO OUTPUT 104 CONTO
OUTPUT 103 GRUPPO OUTPUT 103 GRUPPO
OUTPUT 107 DESCR OUTPUT 107 DESCR
<<<<<<< cg0500b.uml
OUTPUT 207 DESCR
OUTPUT 307 DESCR
=======
>>>>>>> 1.11
ADD RUN CG0 -0 ADD RUN CG0 -0
GROUP 1 GROUP 1
END END
@ -171,8 +198,15 @@ BEGIN
DISPLAY "Gruppo" GRUPPO DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" CODCF DISPLAY "Sottoconto" CODCF
OUTPUT 105 CODCF
OUTPUT 205 CODCF OUTPUT 205 CODCF
OUTPUT 305 CODCF
OUTPUT 107 RAGSOC
OUTPUT 207 RAGSOC OUTPUT 207 RAGSOC
<<<<<<< cg0500b.uml
OUTPUT 307 RAGSOC
=======
>>>>>>> 1.11
GROUP 1 GROUP 1
FLAGS "H" FLAGS "H"
END END
@ -191,7 +225,14 @@ BEGIN
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" CODCF DISPLAY "Sottoconto" CODCF
OUTPUT 305 CODCF OUTPUT 305 CODCF
OUTPUT 205 CODCF
OUTPUT 105 CODCF
OUTPUT 307 RAGSOC OUTPUT 307 RAGSOC
<<<<<<< cg0500b.uml
OUTPUT 207 RAGSOC
OUTPUT 107 RAGSOC
=======
>>>>>>> 1.11
GROUP 1 GROUP 1
FLAGS "H" FLAGS "H"
END END
@ -232,18 +273,18 @@ END
BUTTON DLG_OK 9 2 BUTTON DLG_OK 9 2
BEGIN BEGIN
PROMPT -13 -1 "" PROMPT -13 -1 ""
END END
BUTTON DLG_CANCEL 9 2 BUTTON DLG_CANCEL 9 2
BEGIN BEGIN
PROMPT -23 -1 "" PROMPT -23 -1 ""
END END
BUTTON DLG_NULL 9 2 BUTTON DLG_NULL 9 2
BEGIN BEGIN
PROMPT -33 -1 "Azzera" PROMPT -33 -1 "Azzera"
MESSAGE RESET,1@ MESSAGE RESET,1@
END END
ENDPAGE ENDPAGE

File diff suppressed because it is too large Load Diff

View File

@ -203,7 +203,7 @@ BEGIN
END END
*/ */
LIST F_ORDINAMENTO 12 LIST F_ORDINAMENTO 11
BEGIN BEGIN
PROMPT 2 11 "Tipo ordinamento " PROMPT 2 11 "Tipo ordinamento "
ITEM "1|Per codice" ITEM "1|Per codice"

File diff suppressed because it is too large Load Diff

View File

@ -28,10 +28,10 @@
#include "cg3400a.h" #include "cg3400a.h"
#include "cg3400b.h" #include "cg3400b.h"
#define REAL_PICTURE "###.###.###.###" HIDDEN const char* REAL_PICTURE = "###.###.###.###";
HIDDEN const char* REAL_TOT_PIC = "##.###.###.###.###.###";
HIDDEN const int RIGHE_MODULO = 66; HIDDEN const int RIGHE_MODULO = 66;
HIDDEN const int RIGHE_FOOTER = 10; HIDDEN const int RIGHE_FOOTER = 10;
HIDDEN TString256 tmp; HIDDEN TString256 tmp;
@ -42,7 +42,8 @@ HIDDEN enum descr { causale, conto, operazione };
class CG3400_application : public TPrintapp class CG3400_application : public TPrintapp
{ {
static bool mask_a_cod_reg (TMask_field& f, KEY k); static bool mask_a_cod_reg (TMask_field& f, KEY k);
static bool mask_a_data (TMask_field& f, KEY k); static bool data_a_hndl (TMask_field& f, KEY k);
static bool data_da_hndl (TMask_field& f, KEY k);
static bool mask_b_ripristina(TMask_field& f, KEY k); static bool mask_b_ripristina(TMask_field& f, KEY k);
public: public:
@ -55,9 +56,11 @@ public:
TString80 _reg_descr; TString80 _reg_descr;
TDate _data_da, _data_a, _last_data; TDate _data_da, _data_a, _last_data;
real _tot_dare, _tot_avere; // valori di partenza real _tot_dare, _tot_avere; // valori di partenza
real _tot_dare_progr, _tot_avere_progr; // progressivi real _tot_dare_progr, _tot_avere_progr; // progressivi anno in corso
real _tot_dare_progr_ap, _tot_avere_progr_ap; // progr. anno prec.
real _tot_dare_gg , _tot_avere_gg ; // giornalieri real _tot_dare_gg , _tot_avere_gg ; // giornalieri
real _tot_dare_ac , _tot_avere_ac ; // anno precedente real _tot_dare_ap , _tot_avere_ap ; // giornalieri anno precedente
real _tot_dare_generale, _tot_avere_generale; // tot. generali
long _nprog_da, _nprog_mov; long _nprog_da, _nprog_mov;
int _num_rig, _stampa_width, _stampa_len; int _num_rig, _stampa_width, _stampa_len;
@ -106,9 +109,11 @@ public:
void setta_righe_valuta(); void setta_righe_valuta();
void setta_righe_descr(TParagraph_string*, enum descr); void setta_righe_descr(TParagraph_string*, enum descr);
void calcola_iva(); void calcola_iva();
void init_print();
virtual bool cancel_hook(); virtual bool cancel_hook();
virtual bool set_print(int); virtual bool set_print(int);
void init_totals();
int stampa_intestazione_ditta(); int stampa_intestazione_ditta();
int set_header_132(); int set_header_132();
int set_header_198(); int set_header_198();
@ -123,7 +128,7 @@ public:
const char* get_descr_caus (const char * codcaus); const char* get_descr_caus (const char * codcaus);
TRectype& look_com (const char * cod); TRectype& look_com (const char * cod);
CG3400_application() : _tot_dare_progr(ZERO),_tot_avere_progr (ZERO) {}; CG3400_application() {};
virtual ~CG3400_application() {}; virtual ~CG3400_application() {};
}; };
@ -237,6 +242,7 @@ void CG3400_application::get_dati_ditta ()
void CG3400_application::user_create() void CG3400_application::user_create()
{ {
_ae = 0;
_tabreg = new TTable ("REG"); _tabreg = new TTable ("REG");
_tabval = new TTable ("%VAL"); _tabval = new TTable ("%VAL");
_tabes = new TTable ("ESC"); _tabes = new TTable ("ESC");
@ -252,7 +258,7 @@ void CG3400_application::user_create()
_descr_operazione = new TParagraph_string ("",28); _descr_operazione = new TParagraph_string ("",28);
_descr_causale = new TParagraph_string ("",20); _descr_causale = new TParagraph_string ("",20);
// disable_print_menu(); // disable_print_menu();
_rel = new TRelation (LF_MOV); _rel = new TRelation (LF_MOV);
_rel->add (LF_RMOV, "NUMREG=NUMREG"); _rel->add (LF_RMOV, "NUMREG=NUMREG");
@ -331,31 +337,34 @@ void CG3400_application::scrivi_numgio(long nprog)
// //
void CG3400_application::set_totali_giorno(const TDate& data, const int righeiva) void CG3400_application::set_totali_giorno(const TDate& data, const int righeiva)
{ {
int r = 1 + righeiva; int r = 1 + righeiva;
TString dep(_stampa_width); TString dep(_stampa_width);
TString16 frm;
dep = "Operazioni del "; dep << data.string();
if (_stampa_width == 132) if (_stampa_width == 132)
set_row (r++, "@b@10g%s Dare: %r Avere: %r", (const char *)dep, &_tot_dare_gg, &_tot_avere_gg ); frm = "@b@10g";
else
set_row (r++, "@b@10g%s Dare: %r Avere: %r", (const char *)dep, &_tot_dare_gg, &_tot_avere_gg ); if (_tot_avere_gg != ZERO || _tot_dare_gg != ZERO)
if ( _tot_avere_ac != ZERO || _tot_dare_ac != ZERO )
{ {
dep = "Operazioni del "; dep << data.string() << " " << "Anno precedente"; dep = frm;
dep << "Operazioni del "; dep << data.string();
if (_stampa_width == 132) set_row (r++, "%s Dare: %r Avere: %r", (const char *)dep,
set_row (r++, "@b@10g%s Dare: %r Avere: %r", (const char *)dep, &_tot_dare_ac, &_tot_avere_ac ); &_tot_dare_gg, &_tot_avere_gg );
else _tot_dare_gg = _tot_avere_gg = ZERO;
set_row (r++, "@b@10g%s Dare: %r Avere: %r", (const char *)dep, &_tot_dare_ac, &_tot_avere_ac ); }
_tot_avere_ac = _tot_dare_ac = ZERO; if ( _tot_avere_ap != ZERO || _tot_dare_ap != ZERO )
{
dep = frm;
dep << "Operazioni del "; dep << data.string() << " " << "Anno precedente";
set_row (r, ""); set_row (r++, "%s Dare: %r Avere: %r", (const char *)dep, &_tot_dare_ap,
&_tot_avere_ap );
_tot_avere_ap = _tot_dare_ap = ZERO;
} }
else
set_row (r, ""); // Lascio una riga vuota dopo il totale set_row (r, ""); // Lascio una riga vuota dopo il totale
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
@ -371,23 +380,24 @@ void CG3400_application::set_page_132 (int file, int counter)
case LF_MOV: case LF_MOV:
if (_libro_giornale_iva_unico) if (_libro_giornale_iva_unico)
{ {
if (_stampa_definitiva) if (_stampa_definitiva)
set_row(r,"Registrazione n. #-3ld del @d documento n. @3n del @d @s Anno di competenza %04d", {
&_nprog_mov, set_row(r,"Operazione n. #-3ld", &_nprog_mov);
FLD(LF_MOV, MOV_DATAREG), set_row(r," del @d", FLD(LF_MOV, MOV_DATAREG) );
FLD(LF_MOV, MOV_NUMDOC), set_row(r," documento n. @3pn", FLD(LF_MOV, MOV_NUMDOC, "###") );
FLD(LF_MOV, MOV_DATADOC), set_row(r," del @d @s", FLD(LF_MOV, MOV_DATADOC),
FLD(LF_MOV, MOV_DESCR), FLD(LF_MOV, MOV_DESCR));
_ae); set_row(r," Anno di competenza @4pn", FLD(LF_MOV, MOV_ANNOES, "@@@@") );
}
else else
set_row(r,"Registrazione n. @3,lpn del @d documento n. @7s del @d @s Anno di competenza %04d", {
FLD(LF_MOV, MOV_NUMREG, "#######"), set_row(r,"Operazione n. @3,lpn", FLD(LF_MOV, MOV_NUMREG, "###"));
FLD(LF_MOV, MOV_DATAREG), set_row(r," del @d", FLD(LF_MOV, MOV_DATAREG) );
FLD(LF_MOV, MOV_NUMDOC), set_row(r," documento n. @3pn", FLD(LF_MOV, MOV_NUMDOC, "###") );
FLD(LF_MOV, MOV_DATADOC), set_row(r," del @d @s", FLD(LF_MOV, MOV_DATADOC),
FLD(LF_MOV, MOV_DESCR), FLD(LF_MOV, MOV_DESCR));
_ae); set_row(r," Anno di competenza @4pn", FLD(LF_MOV, MOV_ANNOES, "@@@@") );
}
} }
else else
if (!_gia_settata_riga_mov) if (!_gia_settata_riga_mov)
@ -404,12 +414,10 @@ void CG3400_application::set_page_132 (int file, int counter)
if (!_stampa_definitiva) if (!_stampa_definitiva)
set_row (r, "%3d", _num_rig); set_row (r, "%3d", _num_rig);
set_row (r, "@5g@3s@56g@pn@pn@pn", // set_row (r, "@5g@3s", FLD(LF_MOV, MOV_CODCAUS));
FLD(LF_MOV, MOV_CODCAUS), set_row (r, "@56g@pn", FLD(LF_RMOV, RMV_GRUPPO, "@@."));
FLD(LF_RMOV, RMV_GRUPPO, "@@."), set_row (r, "@pn", FLD(LF_RMOV, RMV_CONTO , "@@."));
FLD(LF_RMOV, RMV_CONTO , "@@."), set_row (r, "@pn", FLD(LF_RMOV, RMV_SOTTOCONTO, "@@@@@@"));
FLD(LF_RMOV, RMV_SOTTOCONTO, "@@@@@@")
);
} }
else // no libro_giornale_iva_unico else // no libro_giornale_iva_unico
{ {
@ -425,8 +433,7 @@ void CG3400_application::set_page_132 (int file, int counter)
); );
} }
break; break;
case LF_RMOVIVA:
break;
default: default:
break; break;
} }
@ -516,24 +523,72 @@ void CG3400_application::postclose_print()
void CG3400_application::preprocess_footer() void CG3400_application::preprocess_footer()
{ {
TString16 dare = _tot_dare_progr.string("###.###.###.###"); TString progr_dare_ap(22), progr_avere_ap(22);
TString16 avere = _tot_avere_progr.string("###.###.###.###"); TString256 riga, frm;
int r=2; bool ap = FALSE;
int r=2;
if (_tot_avere_progr_ap != ZERO || _tot_dare_progr_ap != ZERO)
{
progr_dare_ap = _tot_dare_progr_ap.string(REAL_TOT_PIC);
progr_avere_ap = _tot_avere_progr_ap.string(REAL_TOT_PIC);
ap = TRUE;
}
if (_stampa_width == 132) if (_stampa_width == 132)
set_footer (r, "@b@u@65gTotale progressivi generali@r @bDare: %s Avere: %s", frm = "@b@45g";
(const char *) dare,
(const char *) avere);
else else
set_footer (r, "@b@100gTotale progressivi generali Totale dare %s Totale avere %s", frm = "@b@100g";
(const char *) dare,
(const char *) avere); if (_cur->pos() >= _cur->items()-1) // se sono sull'ultimo
{
const TFixed_string progr_dare ( _tot_dare_progr.string(REAL_TOT_PIC));
const TFixed_string progr_avere ( _tot_avere_progr.string(REAL_TOT_PIC));
riga = frm;
riga << format("Totale progressivi Dare: %s Avere: %s",
(const char *) progr_dare, (const char *) progr_avere);
set_footer (r++, (const char*) riga);
if (ap)
{
// riga = frm;
riga.format("%sTotale progressivi anno precedente Dare: %s Avere: %s",
(const char*) frm,
(const char *) progr_dare_ap, (const char *) progr_avere_ap);
set_footer (r++, (const char*) riga);
}
_tot_dare_generale = _tot_dare_progr + _tot_dare_progr_ap;
_tot_avere_generale = _tot_avere_progr + _tot_avere_progr_ap;
const TFixed_string dts(_tot_dare_generale.string(REAL_TOT_PIC));
const TFixed_string ats(_tot_avere_generale.string(REAL_TOT_PIC));
riga = frm;
riga << format ("Totale progressivi generali Dare: %s Avere: %s", (const char *) dts, (const char *) ats);
set_footer (r++, (const char*) riga);
}
else // Non ancora totale generale
{
real dt = _tot_dare_progr + _tot_dare_progr_ap;
real at = _tot_avere_progr + _tot_avere_progr_ap;
const TFixed_string dts(dt.string(REAL_TOT_PIC));
const TFixed_string ats(at.string(REAL_TOT_PIC));
riga = frm;
riga << format ("A riportare Dare: %s Avere: %s@r", (const char *) dts,
(const char *) ats);
set_footer (r++, (const char*) riga);
}
} }
int CG3400_application::stampa_intestazione_ditta() int CG3400_application::stampa_intestazione_ditta()
{ {
int r=1; int r=1;
#if XVT_OS == XVT_OS_SCOUNIX
TString riga(_stampa_width);
#endif
get_dati_ditta(); get_dati_ditta();
@ -557,6 +612,9 @@ int CG3400_application::stampa_intestazione_ditta()
return r; return r;
} }
////////////////////////////////////////////////////////////////////
// HEADER 198
////////////////////////////////////////////////////////////////////
int CG3400_application::set_header_198() int CG3400_application::set_header_198()
{ {
int r=1; int r=1;
@ -566,9 +624,9 @@ int CG3400_application::set_header_198()
if (_stampa_intesta) r = stampa_intestazione_ditta(); if (_stampa_intesta) r = stampa_intestazione_ditta();
set_header(r, "@iCodice libro: %s %s @40gdalla data: %s alla data: %s", set_header(r, "@bCodice libro:@r %s %s @bdalla data:@r %s @balla data:@r %s @bEsercizio:@r %04d",
(const char *) _reg_cod, (const char *) _reg_descr, (const char *) _reg_cod, (const char *) _reg_descr,
(const char *) data_da, (const char *) data_a); (const char *) data_da, (const char *) data_a, _ae);
r++; r++;
riga.fill('-'); riga.fill('-');
@ -629,13 +687,13 @@ int CG3400_application::set_header_132()
set_header(r, riga); set_header(r, riga);
#endif #endif
set_header(r++, "@bCodice libro:@r %s %s @50g@bdalla data:@r %s @balla data:@r %s", set_header(r++, "@bCodice libro:@r %s %s @50g@bdalla data:@r %s @balla data:@r %s @bEsercizio:@r %04d",
(const char *) _reg_cod, (const char *) _reg_descr, (const char *) _reg_cod, (const char *) _reg_descr,
(const char *) data_da, (const char *) data_a); (const char *) data_da, (const char *) data_a, _ae);
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// LIBRO GIORNALE IVA UNICO // LIBRO GIORNALE IVA UNICO
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
if (_libro_giornale_iva_unico) if (_libro_giornale_iva_unico)
{ {
set_header(r, "Ri"); set_header(r, "Ri");
@ -653,9 +711,9 @@ int CG3400_application::set_header_132()
r++; r++;
} }
else else
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// NO LIBRO GIORNALE IVA UNICO // NO LIBRO GIORNALE IVA UNICO
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
{ {
set_header(r, "Numero@12gDocumento@28gCodice@115gImporti@127g A S"); set_header(r, "Numero@12gDocumento@28gCodice@115gImporti@127g A S");
r++; r++;
@ -678,23 +736,31 @@ int CG3400_application::set_header_132()
void CG3400_application::preprocess_header() void CG3400_application::preprocess_header()
{ {
int pag = printer().getcurrentpage(); int r = _last_header + 1;
TString dare = _tot_dare_progr.string(REAL_PICTURE); int pag = printer().getcurrentpage();
TString avere = _tot_avere_progr.string(REAL_PICTURE); TString16 frm;
int r = _last_header + 1; real riporto_dare, riporto_avere;
if (pag > 0) // Stampa riporti if (pag > 0) // Stampa riporti
{ {
dare.right_just(); riporto_dare = _tot_dare_progr + _tot_dare_progr_ap;
avere.right_just(); riporto_avere = _tot_avere_progr + _tot_avere_progr_ap;
TString dare(riporto_dare.string(REAL_TOT_PIC));
TString avere(riporto_avere.string(REAL_TOT_PIC));
if (_stampa_width == 132) if (_stampa_width == 132)
_riporto.format ("@b@86gRiporto: %15s %15s", frm = "@b@78g";
(const char *) dare,
(const char *) avere );
else else
_riporto.format ("@b@100gRiporto %s @140g %s", (const char *) dare, frm = "@b@100g";
(const char *) avere );
_riporto = frm;
_riporto << format ("Riporto: %15s %15s", (const char *) dare,
(const char *) avere );
set_header (r++, "%s", (const char *) _riporto); set_header (r++, "%s", (const char *) _riporto);
set_header (r, ""); set_header (r, "");
} }
} }
@ -724,14 +790,8 @@ bool CG3400_application::preprocess_print(int file, int counter)
case LF_MOV: case LF_MOV:
_gia_settata_riga_mov = FALSE; // Stampa o no la riga di mov (solo se _gia_settata_riga_mov = FALSE; // Stampa o no la riga di mov (solo se
// NO stampa giornale_iva_unico // NO stampa giornale_iva_unico
_num_rig = 1; _num_rig = 1;
_tot_dare_ac = ZERO;
_tot_avere_ac = ZERO;
_tot_dare_gg = ZERO;
_tot_avere_gg = ZERO;
_tot_dare_progr = _tot_dare;
_tot_avere_progr = _tot_avere;
_iva_array.destroy(); _iva_array.destroy();
if (_cur->items() == 0) if (_cur->items() == 0)
@ -796,17 +856,12 @@ print_action CG3400_application::postprocess_page(int file, int counter)
--(*_cur); --(*_cur);
_cur->restore_status(); _cur->restore_status();
// if (_data_corr != _data_succ || _cur->lastrec()) // if (_data_corr != _data_succ || _cur->lastrec())
if (_data_corr != _data_succ || _cur->pos() == _cur->items()) if (_data_corr != _data_succ || _cur->pos() == _cur->items())
{ {
nuovo_mese = (_mese_succ != _mese_corr); nuovo_mese = (_mese_succ != _mese_corr);
set_totali_giorno(_data_corr, righe_iva_settate); set_totali_giorno(_data_corr, righe_iva_settate);
_tot_dare_gg = _tot_avere_gg = ZERO;
_gia_settata_riga_mov = FALSE; _gia_settata_riga_mov = FALSE;
return REPEAT_PAGE; return REPEAT_PAGE;
} }
else else
@ -814,7 +869,7 @@ print_action CG3400_application::postprocess_page(int file, int counter)
if (righe_iva_settate > 0) if (righe_iva_settate > 0)
return REPEAT_PAGE; return REPEAT_PAGE;
break; break;
case LF_RMOVIVA: case LF_RMOVIVA:
@ -839,19 +894,22 @@ bool CG3400_application::preprocess_page(int file, int counter)
int g, c; int g, c;
long s; long s;
bool gia_stampato=FALSE; bool gia_stampato=FALSE;
static bool settata_causale=FALSE;
TString80 rmv_descr; TString80 rmv_descr;
char sezione; char sezione;
real importo; real importo;
TString16 frm; TString16 frm;
TConto tc; TConto tc;
if (counter) return TRUE; if (counter) return TRUE;
switch (file) { switch (file) {
case LF_MOV: case LF_MOV:
_num_rig=1; _num_rig=1;
settata_causale = FALSE;
_iva_array.destroy(); _iva_array.destroy();
if (!_cur->is_first_match(LF_RMOV)) return FALSE; if (!_cur->is_first_match(LF_RMOV)) return FALSE;
@ -911,25 +969,37 @@ bool CG3400_application::preprocess_page(int file, int counter)
_descr_conto->set_width(198); _descr_conto->set_width(198);
} }
*_descr_causale = get_descr_caus(_caus);
*_descr_operazione = (const char *)rmv_descr; *_descr_operazione = (const char *)rmv_descr;
*_descr_conto = tc.descrizione(); *_descr_conto = tc.descrizione();
setta_righe_descr (_descr_causale, causale); // Il codice e descrizione della causale vanno solo sulla prima riga
if (!settata_causale)
{
set_row (1, "@5g%3s", (const char*) _caus );
*_descr_causale = get_descr_caus(_caus);
setta_righe_descr (_descr_causale, causale);
settata_causale = TRUE;
}
setta_righe_descr (_descr_operazione, operazione); setta_righe_descr (_descr_operazione, operazione);
setta_righe_descr (_descr_conto, conto); setta_righe_descr (_descr_conto, conto);
if (cf > ' ') if (cf > ' ')
if (_libro_cronologico) if (_libro_cronologico)
setta_righe_indirizzo(cf, s); setta_righe_indirizzo(cf, s);
if (sezione == 'D') if (sezione == 'D')
{ {
_tot_dare_progr += importo; // prog. generali
if (_annoEsMov != _ae) if (_annoEsMov != _ae)
_tot_dare_ac += importo; // prog. anno precedente {
_tot_dare_ap += importo; // prog. anno precedente
_tot_dare_progr_ap += importo;
}
else else
{
_tot_dare_gg += importo; // prog. giornalieri _tot_dare_gg += importo; // prog. giornalieri
_tot_dare_progr += importo; // prog. generali
}
if (_stampa_width == 132) if (_stampa_width == 132)
frm = "@95g%r"; frm = "@95g%r";
@ -937,13 +1007,17 @@ bool CG3400_application::preprocess_page(int file, int counter)
frm = "@142g%r"; frm = "@142g%r";
} }
else else
{ {
_tot_avere_progr += importo;
if (_annoEsMov != _ae) if (_annoEsMov != _ae)
_tot_avere_ac += importo; {
_tot_avere_ap += importo;
_tot_avere_progr_ap += importo;
}
else else
{
_tot_avere_gg += importo; _tot_avere_gg += importo;
_tot_avere_progr += importo;
}
if (_stampa_width == 132) if (_stampa_width == 132)
frm = "@112g%r"; frm = "@112g%r";
@ -1040,14 +1114,14 @@ int CG3400_application::setta_righe_iva()
{ {
case 0 : set_row(r, "@73gDetraibile"); case 0 : set_row(r, "@73gDetraibile");
break; break;
case 1 : set_row(r, "@73gIndetraibile su op.es."); case 1 : set_row(r, "@73gIndetraibile su op.es.");
break; break;
case 3 : set_row(r, "@73gPassaggi interni"); case 3 : set_row(r, "@73gPassaggi interni");
break; break;
case 9 : set_row(r, "@73gIndetraibile art.19"); case 9 : set_row(r, "@73gIndetraibile art.19");
break; break;
default: break; default: break;
} }
} }
_iva_array.destroy(); _iva_array.destroy();
set_row (j+1, ""); // lascio una riga vuota dopo tutto cio' set_row (j+1, ""); // lascio una riga vuota dopo tutto cio'
@ -1094,40 +1168,40 @@ void CG3400_application::setta_righe_indirizzo(char tipocf, long codcf)
capcf = occ.get (OCC_CAP); capcf = occ.get (OCC_CAP);
comcf = occ.get (OCC_COM); comcf = occ.get (OCC_COM);
} }
else else
{ {
_clifo->zero(); _clifo->zero();
_clifo->put(CLI_CODCF, codcf); _clifo->put(CLI_CODCF, codcf);
_clifo->put(CLI_TIPOCF, tipocf); _clifo->put(CLI_TIPOCF, tipocf);
if (_clifo->read() == NOERR) if (_clifo->read() == NOERR)
{
viacf = _clifo->get(CLI_INDCF);
civcf = _clifo->get(CLI_CIVCF);
comcf = _clifo->get(CLI_COMCF);
capcf = _clifo->get(CLI_CAPCF);
statocf = _clifo->get(CLI_STATOCF);
}
}
TRectype dep = look_com (comcf);
comune = dep.get(COM_DENCOM);
prov = dep.get(COM_PROVCOM);
if (_libro_giornale_iva_unico)
{ {
set_row (2, "@69g%s %s", (const char *)viacf, (const char *)civcf); viacf = _clifo->get(CLI_INDCF);
set_row (3, "@69g%s %s %s", (const char *)capcf, (const char *)comune, civcf = _clifo->get(CLI_CIVCF);
(const char *)prov); comcf = _clifo->get(CLI_COMCF);
} capcf = _clifo->get(CLI_CAPCF);
else // no libro iva unico. Cambia la colonna di inizio statocf = _clifo->get(CLI_STATOCF);
{
set_row (2, "@26g%s %s", (const char *)viacf, (const char *)civcf);
set_row (3, "@26g%s %s %s", (const char *)capcf, (const char *)comune,
(const char *)prov);
} }
} }
TRectype dep = look_com (comcf);
comune = dep.get(COM_DENCOM);
prov = dep.get(COM_PROVCOM);
if (_libro_giornale_iva_unico)
{
set_row (2, "@69g%s %s", (const char *)viacf, (const char *)civcf);
set_row (3, "@69g%s %s %s", (const char *)capcf, (const char *)comune,
(const char *)prov);
}
else // no libro iva unico. Cambia la colonna di inizio
{
set_row (2, "@26g%s %s", (const char *)viacf, (const char *)civcf);
set_row (3, "@26g%s %s %s", (const char *)capcf, (const char *)comune,
(const char *)prov);
}
}
// //
// Lettura/aggiornamento tabella registri // Lettura/aggiornamento tabella registri
// //
@ -1146,8 +1220,8 @@ void CG3400_application::aggiorna_tabreg(int partito_da, int stampate)
_tabreg->put ("I1", _pagine_stampate + stampate); _tabreg->put ("I1", _pagine_stampate + stampate);
_tabreg->put ("I7", partito_da); // partito_da = -1 se stampa OK _tabreg->put ("I7", partito_da); // partito_da = -1 se stampa OK
_tabreg->put ("I6", _nprog_mov); _tabreg->put ("I6", _nprog_mov);
_tabreg->put ("R1", _tot_dare_progr); _tabreg->put ("R1", _tot_dare_generale);
_tabreg->put ("R2", _tot_avere_progr); _tabreg->put ("R2", _tot_avere_generale);
_tabreg->put ("D3", _data_a); _tabreg->put ("D3", _data_a);
_tabreg->rewrite(); _tabreg->rewrite();
} }
@ -1205,15 +1279,19 @@ HIDDEN int date2esc(const TDate& d, int* prevesc)
// //
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
bool CG3400_application::mask_a_data (TMask_field& f, KEY k) bool CG3400_application::data_a_hndl (TMask_field& f, KEY k)
{ {
if (k == K_TAB && f.focusdirty() || k == K_ENTER) if (f.to_check(k))
{ {
TMask& m = f.mask(); TMask& m = f.mask();
const TDate data_a(f.get()); const TDate data_a(f.get());
const TString16 codreg(m.get(CODREG)); const TString16 codreg(m.get(CODREG));
const int ae = date2esc(data_a); // Anno esercizio const int ae = date2esc(data_a); // Anno esercizio
const bool definitiva = m.get_bool(STAMPA_DEF); const bool definitiva = m.get_bool(STAMPA_DEF);
TString16 dep(data_a.string());
if (dep.empty())
return TRUE;
app()->_ae = ae; app()->_ae = ae;
@ -1221,15 +1299,15 @@ bool CG3400_application::mask_a_data (TMask_field& f, KEY k)
return f.error_box("La data specificata non appartiene a nessun esercizio"); return f.error_box("La data specificata non appartiene a nessun esercizio");
TRegistro reg(codreg, ae); TRegistro reg(codreg, ae);
if (!reg.ok()) if (!reg.ok())
return f.warning_box("Non trovo il libro giornale %s per l'esercizio %d", return f.warning_box("Non trovo il libro giornale %s per l'esercizio %d",
(const char *) codreg, ae); (const char *) codreg, ae);
if (reg.tipo() != 5) if (reg.tipo() != 5)
return f.warning_box("Il registro %s per l'anno %d non e' di tipo libro giornale", return f.warning_box("Il registro %s per l'anno %d non e' di tipo libro giornale",
(const char *) codreg, ae); (const char *) codreg, ae);
const TDate data_da(m.get(DATA_DA)); const TDate data_da(m.get(DATA_DA));
TString16 dtda(data_da.string()); TString16 dtda(data_da.string());
@ -1237,15 +1315,35 @@ bool CG3400_application::mask_a_data (TMask_field& f, KEY k)
{ {
if (dtda.not_empty()) // senno' ci metto inizioEs if (dtda.not_empty()) // senno' ci metto inizioEs
if (data_da < app()->_inizioEs || data_a > app()->_fineEs); if (data_da < app()->_inizioEs || data_a > app()->_fineEs);
return f.warning_box("Le date specificate non appartengono allo stesso esercizio"); return f.warning_box("Le date specificate non appartengono allo stesso esercizio");
} }
else else
// se la stampa e' di prova DALLA_DATA e' obbligatoria // se la stampa e' di prova DALLA_DATA e' obbligatoria
if (dtda.empty()) if (dtda.empty())
return f.warning_box("Manca la data di partenza"); return f.warning_box("Manca la data di partenza");
else else
if (data_da > data_a) if (data_da > data_a)
return f.warning_box("La data di inizio non puo' essere maggiore della data finale"); return f.warning_box("La data di inizio non puo' essere maggiore della data finale");
}
return TRUE;
}
bool CG3400_application::data_da_hndl(TMask_field& f, KEY k)
{
if (f.to_check(k))
{
TMask& m = f.mask();
const TDate data_da (f.get());
const TString16 data_a(m.get(DATA_A));
const int ae_data_da = date2esc(data_da);
const TString16 dep(data_da.string());
if (dep.empty() || data_a.empty())
return TRUE;
if (app()->_ae != 0)
if (app()->_ae != ae_data_da)
return f.error_box("Le due date non appartengono allo stesso esercizio");
} }
return TRUE; return TRUE;
} }
@ -1301,16 +1399,64 @@ bool CG3400_application::mask_b_ripristina (TMask_field& f, KEY k)
return TRUE; return TRUE;
} }
void CG3400_application::init_print()
{
if (_stampa_len != 0)
printer().formlen(_stampa_len);
else
printer().formlen(RIGHE_MODULO);
printer().footerlen(RIGHE_FOOTER);
reset_print();
reset_header();
reset_footer();
set_background();
set_real_picture (REAL_PICTURE);
set_print_zero(TRUE);
if (_stampa_width == 1)
_stampa_width = 132;
else
_stampa_width = 198;
force_setpage(TRUE);
printer().set_from_page (_pagina_da);
if (_stampa_ok != -1) // la stampa precedente era andata male
set_page_number (_stampa_ok);
if (_stampa_width == 132)
_last_header = set_header_132();
else
_last_header = set_header_198();
}
void CG3400_application::init_totals()
{
_tot_dare_ap = ZERO;
_tot_avere_ap = ZERO;
_tot_dare_progr_ap = ZERO;
_tot_avere_progr_ap = ZERO;
_tot_dare_gg = ZERO;
_tot_avere_gg = ZERO;
_tot_dare_generale = ZERO;
_tot_avere_generale = ZERO;
_tot_dare_progr = _tot_dare;
_tot_avere_progr = _tot_avere;
}
bool CG3400_application::set_print(int) bool CG3400_application::set_print(int)
{ {
TMask ma ("cg3400a"); TMask ma ("cg3400a");
KEY tasto; KEY tasto;
ma.set_handler (CODREG, mask_a_cod_reg); ma.set_handler (CODREG, mask_a_cod_reg);
ma.set_handler (DATA_A, mask_a_data); ma.set_handler (DATA_A, data_a_hndl);
ma.set_handler (DATA_DA, data_da_hndl);
// m.set_handler (REG_ANNO, mask_set_pagina_da);
// m.set_handler (REG_DESC, mask_set_pagina_da);
tasto = ma.run(); tasto = ma.run();
@ -1327,8 +1473,8 @@ bool CG3400_application::set_print(int)
_stampa_width = ma.get_int(STAMPA_WIDTH); _stampa_width = ma.get_int(STAMPA_WIDTH);
_stampa_len = ma.get_int(STAMPA_LEN); _stampa_len = ma.get_int(STAMPA_LEN);
// Se stampa definita DALLA_DATA e' l'ultima data di stampa del // Se stampa definita DALLA_DATA e' l'ultima data di stampa del
// registro, se indicata, oppure la data di inizio esercizio // registro, se indicata, oppure la data di inizio esercizio
if (_stampa_definitiva) if (_stampa_definitiva)
if (_last_data.ok()) if (_last_data.ok())
_data_da = _last_data; _data_da = _last_data;
@ -1337,18 +1483,9 @@ bool CG3400_application::set_print(int)
leggi_tabreg(_reg_cod, _ae); leggi_tabreg(_reg_cod, _ae);
if (_stampa_len != 0) init_print();
printer().formlen(_stampa_len); init_totals();
else
printer().formlen(RIGHE_MODULO);
printer().footerlen(RIGHE_FOOTER);
if (_stampa_width == 1)
_stampa_width = 132;
else
_stampa_width = 198;
TRectype da (_cur->file(LF_MOV).curr()); TRectype da (_cur->file(LF_MOV).curr());
TRectype a (_cur->file(LF_MOV).curr()); TRectype a (_cur->file(LF_MOV).curr());
@ -1358,27 +1495,6 @@ bool CG3400_application::set_print(int)
_cur->setregion(da, a); _cur->setregion(da, a);
force_setpage(TRUE);
set_background();
reset_print();
reset_header();
reset_footer();
set_real_picture (REAL_PICTURE);
set_print_zero(TRUE);
printer().set_from_page (_pagina_da);
if (_stampa_ok != -1) // la stampa precedente era andata male
set_page_number (_stampa_ok);
if (_stampa_width == 132)
_last_header = set_header_132();
else
_last_header = set_header_198();
if (_stampa_definitiva) if (_stampa_definitiva)
{ {
TMask mb("cg3400b"); TMask mb("cg3400b");

View File

@ -25,7 +25,7 @@ typedef enum {stampagruppo, stampaconto, stampasottoconto, fine} tipo;
class CG3500_application : public TPrintapp class CG3500_application : public TPrintapp
{ {
TProgind * _prog; TProgind * _prog;
TClifo_list* _lista; TSaldi_list* _lista;
TLocalisamfile* _com, * _pcn, * _clifo, * _saldi, * _nditte,* _anag; TLocalisamfile* _com, * _pcn, * _clifo, * _saldi, * _nditte,* _anag;
TIsamtempfile * _tmp_saldi; TIsamtempfile * _tmp_saldi;
tipo _tp; tipo _tp;
@ -88,11 +88,11 @@ bool CG3500_application::riepilogo()
g = _pcn->get_int (PCN_GRUPPO); g = _pcn->get_int (PCN_GRUPPO);
c = _pcn->get_int (PCN_CONTO); c = _pcn->get_int (PCN_CONTO);
s = _pcn->get_long(PCN_SOTTOCONTO); s = _pcn->get_long(PCN_SOTTOCONTO);
tipo_conto = _pcn->get(PCN_TMCF)[0]; tipo_conto = _pcn->get_char(PCN_TMCF);
TConto conto (g,c,s,tipo_conto); TConto conto (g,c,s,tipo_conto);
//il conto e' cambiato anche se e' rimasto invariato il conto ma e' cambiato il gruppo //il "conto" e' cambiato anche se e' rimasto invariato il conto ma e' cambiato il gruppo
if ( (((cp != -1) && (conto.conto() != cp)) || ((gp != -1) && (conto.gruppo() != gp))) if ( (((cp != -1) && (conto.conto() != cp)) || ((gp != -1) && (conto.gruppo() != gp)))
&& esiste_sc ) && esiste_sc )
{ {
@ -230,10 +230,11 @@ bool CG3500_application::riepilogo()
if (_richiesta == 1) if (_richiesta == 1)
sld.prg_attuali(_annoese,conto,indbil,prg_dare,prg_avere); sld.prg_attuali(_annoese,conto,indbil,prg_dare,prg_avere);
else sld.prg_mov_eliminati(_annoese,conto,indbil,prg_dare,prg_avere); else sld.prg_mov_eliminati(_annoese,conto,indbil,prg_dare,prg_avere);
saldo = prg_dare - prg_avere; saldo = prg_dare - prg_avere;
prg_conto_dare += prg_dare; prg_conto_dare += prg_dare;
prg_conto_avere += prg_avere; prg_conto_avere += prg_avere;
if (_scelta == 1) //riepilogo conti if (_scelta == 1) //riepilogo conti
{ {
@ -320,15 +321,15 @@ bool CG3500_application::ricerca_cf(TConto& conto,int indbil,real& prg_conto_dar
long s; long s;
real prg_dare, prg_avere, saldo; real prg_dare, prg_avere, saldo;
_lista = new TClifo_list (g,c,tipo); _lista = new TSaldi_list (g,c,_annoese);
TRecnotype items = _lista->items(); TRecnotype items = _lista->items();
prg_conto_dare = 0.00; prg_conto_dare = 0.00;
prg_conto_avere = 0.00; prg_conto_avere = 0.00;
for (int i = 0; i < items; i++) for (int i = 0; i < items; i++)
{ {
_prog->addstatus(1); _prog->addstatus(1);
const TRectype& r = _lista->clifo(i); const TRectype& r = _lista->saldi(i);
s = r.get_long(CLI_CODCF); s = r.get_long(SLD_SOTTOCONTO);
esiste_sc = TRUE; esiste_sc = TRUE;
prg_dare = 0.00; prg_dare = 0.00;
prg_avere = 0.00; prg_avere = 0.00;
@ -420,7 +421,9 @@ tipo CG3500_application::leggi_conti(int counter)
{ {
_ultima_data = UltimaData(_gcorr,_ccorr,_scorr,_annoese); _ultima_data = UltimaData(_gcorr,_ccorr,_scorr,_annoese);
_tmp_saldi->readat(pos); _tmp_saldi->readat(pos);
_tipo = _tmp_saldi->get(SLD_FLAGSALINI)[0]; _tipo = _tmp_saldi->get_char(SLD_FLAGSALINI);
if (_tipo != 'C' && _tipo != 'F')
_tipo = ' ';
TConto conto (_gcorr,_ccorr,_scorr,_tipo); TConto conto (_gcorr,_ccorr,_scorr,_tipo);
_descr = conto.descrizione(); _descr = conto.descrizione();
_prg_dare = _tmp_saldi->get_real(SLD_PDARE); _prg_dare = _tmp_saldi->get_real(SLD_PDARE);
@ -442,7 +445,9 @@ tipo CG3500_application::leggi_conti(int counter)
_ultima_data = UltimaData(_gcorr,_ccorr,_scorr,_annoese); _ultima_data = UltimaData(_gcorr,_ccorr,_scorr,_annoese);
_tmp_saldi->readat(pos); _tmp_saldi->readat(pos);
_tipo = _tmp_saldi->get(SLD_FLAGSALINI)[0]; _tipo = _tmp_saldi->get_char(SLD_FLAGSALINI);
if (_tipo != 'C' && _tipo != 'F')
_tipo = ' ';
TConto conto (_gcorr,_ccorr,_scorr,_tipo); TConto conto (_gcorr,_ccorr,_scorr,_tipo);
_descr = conto.descrizione(); _descr = conto.descrizione();
_prg_dare = _tmp_saldi->get_real(SLD_PDARE); _prg_dare = _tmp_saldi->get_real(SLD_PDARE);
@ -481,7 +486,9 @@ tipo CG3500_application::leggi_gruppi(int counter)
{ {
_tmp_saldi->readat(pos); _tmp_saldi->readat(pos);
_ultima_data = _tmp_saldi->get_date(SLD_DATAULMOV); _ultima_data = _tmp_saldi->get_date(SLD_DATAULMOV);
_tipo = _tmp_saldi->get(SLD_FLAGSALINI)[0]; _tipo = _tmp_saldi->get_char(SLD_FLAGSALINI);
if (_tipo != 'C' && _tipo != 'F')
_tipo = ' ';
TConto conto (_gcorr,_ccorr,0l,_tipo); TConto conto (_gcorr,_ccorr,0l,_tipo);
_descrconto = conto.descrizione(); _descrconto = conto.descrizione();
_prg_dare_conto = _tmp_saldi->get_real(SLD_PDARE); _prg_dare_conto = _tmp_saldi->get_real(SLD_PDARE);
@ -499,7 +506,9 @@ tipo CG3500_application::leggi_gruppi(int counter)
_tmp_saldi->readat(pos); _tmp_saldi->readat(pos);
_ultima_data = _tmp_saldi->get_date(SLD_DATAULMOV); _ultima_data = _tmp_saldi->get_date(SLD_DATAULMOV);
_tipo = _tmp_saldi->get(SLD_FLAGSALINI)[0]; _tipo = _tmp_saldi->get_char(SLD_FLAGSALINI);
if (_tipo != 'C' && _tipo != 'F')
_tipo = ' ';
TConto conto (_gcorr,_ccorr,0l,_tipo); TConto conto (_gcorr,_ccorr,0l,_tipo);
_descrconto = conto.descrizione(); _descrconto = conto.descrizione();
_prg_dare_conto = _tmp_saldi->get_real(SLD_PDARE); _prg_dare_conto = _tmp_saldi->get_real(SLD_PDARE);
@ -523,7 +532,9 @@ bool CG3500_application::CercaConto(int g, int c)
{ {
_gconto = _tmp_saldi->get_int(SLD_GRUPPO); _gconto = _tmp_saldi->get_int(SLD_GRUPPO);
_cconto = _tmp_saldi->get_int(SLD_CONTO); _cconto = _tmp_saldi->get_int(SLD_CONTO);
_tipo = _tmp_saldi->get(SLD_FLAGSALINI)[0]; _tipo = _tmp_saldi->get_char(SLD_FLAGSALINI);
if (_tipo != 'C' && _tipo != 'F')
_tipo = ' ';
if (_scelta == 2) if (_scelta == 2)
_ultima_data = _tmp_saldi->get_date(SLD_DATAULMOV); _ultima_data = _tmp_saldi->get_date(SLD_DATAULMOV);
TConto conto (_gconto,_cconto,0l,_tipo); TConto conto (_gconto,_cconto,0l,_tipo);
@ -548,7 +559,9 @@ bool CG3500_application::CercaGruppo(int g)
if (_tmp_saldi->read() == NOERR) if (_tmp_saldi->read() == NOERR)
{ {
_ggruppo = _tmp_saldi->get_int(SLD_GRUPPO); _ggruppo = _tmp_saldi->get_int(SLD_GRUPPO);
_tipo = _tmp_saldi->get(SLD_FLAGSALINI)[0]; _tipo = _tmp_saldi->get_char(SLD_FLAGSALINI);
if (_tipo != 'C' && _tipo != 'F')
_tipo = ' ';
TConto conto (_ggruppo,0,0l,_tipo); TConto conto (_ggruppo,0,0l,_tipo);
_descrgruppo = conto.descrizione(); _descrgruppo = conto.descrizione();
_prg_dare_gruppo = _tmp_saldi->get_real(SLD_PDARE); _prg_dare_gruppo = _tmp_saldi->get_real(SLD_PDARE);
@ -611,8 +624,8 @@ void CG3500_application::setta_riga_sottoconto()
{ {
TString udata = _ultima_data.string(); TString udata = _ultima_data.string();
set_row(1,"%06ld", (const char*) _scorr); set_row(1,"%06ld", _scorr);
set_row(1," %.32s", (const char*) _descr); set_row(1,"@i %.32s@r",(const char*) _descr);
set_row(1,"@42g%s",(const char*) udata); set_row(1,"@42g%s",(const char*) udata);
set_row(1,"@57g%r@77g%r@97g%r@117g%r",&_prg_dare,&_prg_avere,&_saldo_dare,&_saldo_avere); set_row(1,"@57g%r@77g%r@97g%r@117g%r",&_prg_dare,&_prg_avere,&_saldo_dare,&_saldo_avere);
} }
@ -629,13 +642,13 @@ void CG3500_application::setta_riga_conto()
if (_scelta == 1) if (_scelta == 1)
{ {
set_row(r++,"%s",(const char*)riga); set_row(r++,"%s",(const char*)riga);
set_row(r,"**** Totali conto %03d.%03d",(const char*)_gconto,(const char*)_cconto); set_row(r,"@b**** Totali conto %03d.%03d",_gconto,_cconto);
set_row(r," %.27s",(const char*)_descrconto); set_row(r,"@i %.27s@r",(const char*)_descrconto);
} }
if (_scelta == 2) if (_scelta == 2)
{ {
set_row(r,"%03d", (const char*)_ccorr); set_row(r,"%03d", _ccorr);
set_row(r," %.32s",(const char*)_descrconto); set_row(r,"@i %.32s@r",(const char*)_descrconto);
set_row(r,"@42g%s",(const char*)udata); set_row(r,"@42g%s",(const char*)udata);
} }
set_row(r++,"@57g%r@77g%r@97g%r@117g%r",&_prg_dare_conto,&_prg_avere_conto,&_saldo_dare_conto,&_saldo_avere_conto); set_row(r++,"@57g%r@77g%r@97g%r@117g%r",&_prg_dare_conto,&_prg_avere_conto,&_saldo_dare_conto,&_saldo_avere_conto);
@ -655,8 +668,8 @@ void CG3500_application::setta_riga_gruppo()
if (_scelta == 2) if (_scelta == 2)
if (_tp == fine) r = 3; if (_tp == fine) r = 3;
else r = 2; else r = 2;
set_row(r,"**** TOTALI GRUPPO %03d-",(const char*)_ggruppo); set_row(r,"@b**** TOTALI GRUPPO %03d-",_ggruppo);
set_row(r," %.30s",(const char*)_descrgruppo); set_row(r,"@i %.30s@r",(const char*)_descrgruppo);
set_row(r++,"@57g%r@77g%r@97g%r@117g%r",&_prg_dare_gruppo,&_prg_avere_gruppo,&_saldo_dare_gruppo,&_saldo_avere_gruppo); set_row(r++,"@57g%r@77g%r@97g%r@117g%r",&_prg_dare_gruppo,&_prg_avere_gruppo,&_saldo_dare_gruppo,&_saldo_avere_gruppo);
set_row(r++,"%s",(const char*)riga); set_row(r++,"%s",(const char*)riga);
riga = ""; riga = "";
@ -670,7 +683,7 @@ void CG3500_application::setta_riga_totale()
_saldo_tot = _prg_dare_tot - _prg_avere_tot; _saldo_tot = _prg_dare_tot - _prg_avere_tot;
if (_scelta == 1) r = 8; if (_scelta == 1) r = 8;
else r = 6; else r = 6;
set_row(r,"**** TOTALE GENERALE @57g%r@77g%r",&_prg_dare_tot,&_prg_avere_tot); set_row(r,"@b**** TOTALE GENERALE @57g%r@77g%r",&_prg_dare_tot,&_prg_avere_tot);
if (_saldo_tot > 0.00) if (_saldo_tot > 0.00)
set_row(r,"@97g%r",&_saldo_tot); set_row(r,"@97g%r",&_saldo_tot);
else else
@ -682,7 +695,7 @@ void CG3500_application::setta_riga_totale()
TDate CG3500_application::UltimaData(int g, int c, long s, int anno) TDate CG3500_application::UltimaData(int g, int c, long s, int anno)
{ {
TLocalisamfile saldi(LF_SALDI, FALSE); //il parametro a false permette di usare un record corrente del file saldi differente a quello del file tmp TLocalisamfile saldi(LF_SALDI, FALSE); //il parametro a false permette di usare un record corrente del file saldi differente a quello del file temporaneo
TDate uldata; TDate uldata;
saldi.zero(); saldi.zero();
@ -703,13 +716,13 @@ TDate CG3500_application::UltimaData(int g, int c, long s, int anno)
void CG3500_application::user_create() void CG3500_application::user_create()
{ {
_clifo = new TLocalisamfile(LF_CLIFO); _clifo = new TLocalisamfile(LF_CLIFO);
_com = new TLocalisamfile(LF_COMUNI); _com = new TLocalisamfile(LF_COMUNI);
_pcn = new TLocalisamfile(LF_PCON); _pcn = new TLocalisamfile(LF_PCON);
_saldi = new TLocalisamfile(LF_SALDI); _saldi = new TLocalisamfile(LF_SALDI);
_nditte = new TLocalisamfile(LF_NDITTE); _nditte = new TLocalisamfile(LF_NDITTE);
_anag = new TLocalisamfile(LF_ANAG); _anag = new TLocalisamfile(LF_ANAG);
_tmp_saldi = new TIsamtempfile (LF_SALDI); _tmp_saldi = new TIsamtempfile (LF_SALDI);
} }
void CG3500_application::user_destroy() void CG3500_application::user_destroy()

View File

@ -1,27 +1,27 @@
#ifndef __CG3500_H #ifndef __CG3500_H
#define __CG3500_H #define __CG3500_H
#define F_CODDITTA 101 #define F_CODDITTA 101
#define F_DATASTAMPA 102 #define F_DATASTAMPA 102
#define F_RAGSOC 103 #define F_RAGSOC 103
#define F_ANNO 104 #define F_ANNO 104
#define F_STAMPA 105 #define F_STAMPA 105
#define F_RICHIESTA 106 #define F_RICHIESTA 106
#endif // __CG3500_H #endif // __CG3500_H

View File

@ -1,77 +1,77 @@
#include "cg3500.h" #include "cg3500.h"
PAGE "" -1 -1 71 16 PAGE "" -1 -1 71 16
NUMBER F_CODDITTA 5 NUMBER F_CODDITTA 5
BEGIN BEGIN
PROMPT 2 1 "Ditta " PROMPT 2 1 "Ditta "
FLAGS "FRD" FLAGS "FRD"
USE LF_NDITTE KEY 1 USE LF_NDITTE KEY 1
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
INPUT CODDITTA F_CODDITTA INPUT CODDITTA F_CODDITTA
DISPLAY "Codice" CODDITTA DISPLAY "Codice" CODDITTA
DISPLAY "Ragione sociale @50" RAGSOC DISPLAY "Ragione sociale @50" RAGSOC
OUTPUT F_CODDITTA CODDITTA OUTPUT F_CODDITTA CODDITTA
OUTPUT F_RAGSOC RAGSOC OUTPUT F_RAGSOC RAGSOC
END END
STRING F_RAGSOC 50 STRING F_RAGSOC 50
BEGIN BEGIN
PROMPT 2 2 "Ragione sociale " PROMPT 2 2 "Ragione sociale "
FLAGS "D" FLAGS "D"
END END
DATE F_DATASTAMPA DATE F_DATASTAMPA
BEGIN BEGIN
PROMPT 43 1 "Data di stampa " PROMPT 43 1 "Data di stampa "
FLAGS "A"
END
NUMBER F_ANNO 4
BEGIN
PROMPT 2 3 "Anno esercizio "
FLAGS "A" FLAGS "A"
USE ESC END
INPUT CODTAB F_ANNO
DISPLAY "Anno" CODTAB NUMBER F_ANNO 4
DISPLAY "Data inizio esercizio" D0 BEGIN
DISPLAY "Data fine esercizio" D1 PROMPT 2 3 "Anno esercizio "
OUTPUT F_ANNO CODTAB FLAGS "RZ"
CHECKTYPE REQUIRED USE ESC
WARNING "L'anno di esercizio deve essere presente nella tabella degli esercizi" INPUT CODTAB F_ANNO
END DISPLAY "Anno" CODTAB
DISPLAY "Data inizio esercizio" D0
RADIOBUTTON F_STAMPA 26 DISPLAY "Data fine esercizio" D1
BEGIN OUTPUT F_ANNO CODTAB
PROMPT 2 5 "Scelta stampa " CHECKTYPE REQUIRED
ITEM "1|Stampa riepilogo conti" WARNING "L'anno di esercizio deve essere presente nella tabella degli esercizi"
ITEM "2|Stampa riepilogo gruppi" END
END
RADIOBUTTON F_STAMPA 26
RADIOBUTTON F_RICHIESTA 40 BEGIN
BEGIN PROMPT 2 5 "Scelta stampa "
PROMPT 2 9 "Richiesta stampa " ITEM "1|Stampa riepilogo conti"
ITEM "1|Stampa progressivi attuali" ITEM "2|Stampa riepilogo gruppi"
ITEM "2|Stampa progressivi movimenti eliminati" END
END
RADIOBUTTON F_RICHIESTA 40
BUTTON DLG_OK 9 2 BEGIN
BEGIN PROMPT 2 9 "Richiesta stampa "
PROMPT -12 -1 "" ITEM "1|Stampa progressivi attuali"
END ITEM "2|Stampa progressivi movimenti eliminati"
END
BUTTON DLG_CANCEL 9 2
BEGIN BUTTON DLG_OK 9 2
PROMPT -22 -1 "" BEGIN
END PROMPT -12 -1 ""
END
ENDPAGE
BUTTON DLG_QUIT 9 2
ENDMASK BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

View File

@ -4,46 +4,49 @@
#ifndef __ISAM_H #ifndef __ISAM_H
#include <isam.h> #include <isam.h>
#endif #endif
#ifndef __REAL_H
#ifndef __ASSOC_H #include <real.h>
#include <assoc.h> #endif
#ifndef __DATE_H
#include <date.h>
#endif #endif
#include <assoc.h>
#include "conto.h" #include "conto.h"
TLocalisamfile * get_descr_cf(TLocalisamfile * pconti, TLocalisamfile * get_descr_cf(TLocalisamfile * pconti,
TLocalisamfile * clifo , int g, int c, long s); TLocalisamfile * clifo , int g, int c, long s);
class TClifo_list : public TArray class TSaldi_list : public TArray
{ {
public: public:
TClifo_list(int g, int c, char tipocf); TSaldi_list(int g, int c, int anno);
TRectype& clifo(int i)const { return(TRectype&)this->operator[](i); } TRectype& saldi(int i)const { return(TRectype&)this->operator[](i); }
}; };
//typedef enum {scalare = 1, verifica} bilancio;
class Saldo class Saldo
{ {
real _saldo, _saldo_iniziale, _prg_dare, _prg_avere; real _saldo, _saldo_iniziale, _prg_dare, _prg_avere;
int _indbil; int _indbil;
TRectype* _rec; TRectype* _rec;
//bilancio _bilancio;
int _annoes; int _annoes;
TDate _inizioEs, _fineEs; TDate _inizioEs, _fineEs;
TString16 _codcaus; TString16 _codcaus;
TDate _datareg; TDate _datareg;
TDate _datacomp; TDate _datacomp;
TString _provv; TString _provv;
bool _significativo;
bool _movimentato;
protected: protected:
void InFinEs(int); void InFinEs(int);
public: public:
bool movimentato() const { return _movimentato==TRUE; }
bool significativo() const { return _significativo==TRUE; }
const int EsePre (const int annocorr);
int annoes () const { return _annoes; } int annoes () const { return _annoes; }
//bilancio bil () const { return _bilancio; }
void set_annoes (int anno) { _annoes = anno; } void set_annoes (int anno) { _annoes = anno; }
//void set_bil (bilancio bil) { _bilancio = bil; }
void leggi_mov(long); void leggi_mov(long);
bool causale_mov(long, const TDate&, const TDate&, TString&); bool causale_mov(long, const TDate&, const TDate&, TString&);
const char* causale_chiusura_es(); const char* causale_chiusura_es();
@ -53,7 +56,7 @@ public:
bool calcola_ultima_immissione(int, int, int, int, long, int); bool calcola_ultima_immissione(int, int, int, int, long, int);
bool ultima_immissione_bilancio(int anno,int g,int c,long s,int indbil); bool ultima_immissione_bilancio(int anno,int g,int c,long s,int indbil);
bool data_limite_bilancio(int,int,int,long,const TDate&,const TDate&,int,bool); bool data_limite_bilancio(int,int,int,long,const TDate&,const TDate&,int,bool);
real calcola_saldo_iniziale(int, int, int, long, int); real calcola_saldo_iniziale(int, int, long, int);
bool calcola_clifo(int, int, int, int, int); bool calcola_clifo(int, int, int, int, int);
TRectype& ricerca_progr_prec(int, int, int, long); TRectype& ricerca_progr_prec(int, int, int, long);
real saldofin_esprec(int,int,int,long); real saldofin_esprec(int,int,int,long);
@ -61,8 +64,6 @@ public:
real saldoini() {return _saldo_iniziale;} real saldoini() {return _saldo_iniziale;}
real prgdare() {return _prg_dare;} real prgdare() {return _prg_dare;}
real prgavere() {return _prg_avere;} real prgavere() {return _prg_avere;}
bool calcola(int,int,int,int,long,const TDate&,const TDate&,int,bool,
const TDate&,const TDate&,const TDate&,bool);
bool prg_attuali(int,TConto&,int,real&,real&); bool prg_attuali(int,TConto&,int,real&,real&);
bool prg_mov_eliminati(int,TConto&,int,real&,real&); bool prg_mov_eliminati(int,TConto&,int,real&,real&);
Saldo(); Saldo();
@ -84,7 +85,8 @@ public:
class TSaldo_agg : public TObject class TSaldo_agg : public TObject
{ {
TTab_conti _tab_conti; TTab_conti _tab_conti;
bool _movap; // se e' mov. d'apertura (aggiorno SALDO e FLAGSALINI in saldi) bool _movap; // se e' mov. d'apertura (aggiorno SALDO e FLAGSALINI in
// saldi)
bool _provv; bool _provv;
int _anno_es; // anno esercizio int _anno_es; // anno esercizio
TDate _data_ulmov; // data ultimo movimento TDate _data_ulmov; // data ultimo movimento
@ -101,19 +103,19 @@ public:
char sezione, bool somma=TRUE); char sezione, bool somma=TRUE);
void set_anno_es(int anno) { _anno_es = anno; } void set_anno_es(int anno) { _anno_es = anno; }
int anno_es() const { return _anno_es; } int anno_es() { return _anno_es; }
void set_movap (bool movap) { _movap = movap; } void set_movap (bool movap) { _movap = movap; }
bool movap() const { return _movap; } bool movap() { return _movap; }
void set_movprovv (bool p) { _provv = p; } void set_movprovv (bool p) { _provv = p; }
bool movprovv() const { return _provv; } bool movprovv() { return _provv; }
void set_data_ulmov (const TDate& data) { _data_ulmov = data; } void set_data_ulmov (TDate& data) { _data_ulmov = data; }
const TDate& data_ulmov() const { return _data_ulmov; } TDate& data_ulmov() { return _data_ulmov; }
void set_num_ulmov (long num) { _num_ulmov = num; } void set_num_ulmov (long num) { _num_ulmov = num; }
long num_ulmov() const { return _num_ulmov; } long num_ulmov() { return _num_ulmov; }
void reset(); // pulisce l'array dei conti void reset(); // pulisce l'array dei conti
TSaldo_agg(); TSaldo_agg();

View File

@ -6,6 +6,7 @@
#include <real.h> #include <real.h>
#include <lffiles.h> #include <lffiles.h>
#include <isam.h> #include <isam.h>
#include <tabutil.h>
#include <utility.h> #include <utility.h>
#include <config.h> #include <config.h>
#include <rmov.h> #include <rmov.h>
@ -20,15 +21,15 @@ const MAXSTR = 128;
static char __tmp [MAXSTR]; static char __tmp [MAXSTR];
static TFixed_string tmp (__tmp, MAXSTR); static TFixed_string tmp (__tmp, MAXSTR);
TClifo_list::TClifo_list(int g, int c, char tipocf) TSaldi_list::TSaldi_list(int g, int c, int anno)
{ {
TLocalisamfile cf(LF_CLIFO); TLocalisamfile cf(LF_SALDI);
destroy(); destroy();
cf.setkey(3); cf.setkey(1);
cf.zero(); cf.zero();
cf.put(CLI_TIPOCF,tipocf); cf.put(SLD_ANNOES,anno);
cf.put(CLI_GRUPPO,g); cf.put(SLD_GRUPPO,g);
cf.put(CLI_CONTO,c); cf.put(SLD_CONTO,c);
TRectype rec(cf.curr()); TRectype rec(cf.curr());
cf.read(_isgteq); cf.read(_isgteq);
for ( ;!cf.eof();cf.next()) for ( ;!cf.eof();cf.next())
@ -53,27 +54,56 @@ Saldo::Saldo()
Saldo::~Saldo() Saldo::~Saldo()
{ {
} }
//
// Cerca l'esercizio precedente di EseCorr
// Se EseCorr e' gia' il primo ritorna 0
// senno' ritorna, astutamente, EseCorr - 1
//
const int Saldo::EsePre(const int EseCorr)
{
TTable ese("ESC");
TString16 first;
TString codtab;
ese.first();
first = ese.get("CODTAB");
codtab << EseCorr;
codtab.format("%04d");
if (codtab == first)
return 0;
return EseCorr - 1;
}
real Saldo::saldofin_esprec(int annoes, int g, int c, long s) real Saldo::saldofin_esprec(int annoes, int g, int c, long s)
{ {
real saldo,pdare,pavere,pdaresca,paveresca; real saldo,pdare,pavere,pdaresca,paveresca;
char flag; char flag;
TRectype app = ricerca_progr_prec(annoes-1, g, c, s); const int annoesprec = EsePre(annoes);
if (annoesprec == 0) return ZERO; // non ci sono esercizi prima del primo
TRectype app = ricerca_progr_prec(annoesprec, g, c, s);
flag = app.get(SLD_FLAGSALINI)[0]; flag = app.get(SLD_FLAGSALINI)[0];
saldo = app.get_real(SLD_SALDO); saldo = app.get_real(SLD_SALDO);
pdare = app.get_real(SLD_PDARE); pdare = app.get_real(SLD_PDARE);
pavere = app.get_real(SLD_PAVERE); pavere = app.get_real(SLD_PAVERE);
pdaresca = app.get_real(SLD_PDARESCA); pdaresca = app.get_real(SLD_PDARE);
paveresca = app.get_real(SLD_PAVERESCA); paveresca = app.get_real(SLD_PAVERE);
_significativo = (saldo != ZERO || pdare != ZERO || pavere != ZERO);
if (flag == 'D') if (flag == 'D')
return saldo+pdaresca-paveresca+pdare-pavere; return pdare-pavere+saldo;
else else
return pdaresca-saldo-paveresca+pdare-pavere; return pdare-pavere-saldo;
} }
real Saldo::calcola_saldo_iniziale(int annoes,int g,int c,long s,int indbil) real Saldo::calcola_saldo_iniziale(int g,int c,long s,int indbil)
{ {
real saldoini, pdaresca, paveresca; real saldoini, pdaresca, paveresca;
char flag; char flag;
@ -85,46 +115,38 @@ real Saldo::calcola_saldo_iniziale(int annoes,int g,int c,long s,int indbil)
saldi.put(SLD_CONTO,c); saldi.put(SLD_CONTO,c);
if (s != 0) if (s != 0)
saldi.put(SLD_SOTTOCONTO,s); saldi.put(SLD_SOTTOCONTO,s);
saldi.put(SLD_ANNOES,annoes); saldi.put(SLD_ANNOES,_annoes);
saldi.read(); saldi.read();
if (saldi.bad()) saldi.zero(); if (saldi.bad()) saldi.zero();
flag = saldi.get(SLD_FLAGSALINI)[0]; flag = saldi.get_char(SLD_FLAGSALINI);
saldoini = saldi.get_real(SLD_SALDO); saldoini = saldi.get_real(SLD_SALDO);
pdaresca = saldi.get_real(SLD_PDARESCA); pdaresca = saldi.get_real(SLD_PDARESCA);
paveresca = saldi.get_real(SLD_PAVERESCA); paveresca = saldi.get_real(SLD_PAVERESCA);
if (saldoini != ZERO)
if (flag == 'A') saldoini = -saldoini;
if (saldoini == ZERO) //e il conto e' patrimoniale o d'ordine if (saldoini == ZERO)
if ( indbil == 1 || indbil == 2 || indbil == 5 ) if ( indbil == 1 || indbil == 2 || indbil == 5 )
saldoini = saldofin_esprec(annoes, g, c, s); {
saldoini = saldofin_esprec(_annoes, g, c, s);
flag = 'D'; // Il segno DEVE essere quello del saldo precedente
}
_saldo_iniziale = saldoini;
#ifdef DBG
TString sldi(saldoini.string());
#endif
if (flag == 'D') if (flag == 'D')
return saldoini+pdaresca-paveresca; return pdaresca-paveresca+saldoini;
else //if (flag == 'A')
return pdaresca-saldoini-paveresca;
}
/*
bool Saldo::calcola(int annoes, int annoesprec,int g, int c, long s,
const TDate& data_inf, const TDate& data_sup,
int indbil, bool controllo_competenza, const TDate& inizio_es,
const TDate& fine_es, const TDate& fine_es_prec,bool stp_prov)
{
if (data_sup.ok())
{
if (!calcola_data_limite(annoes, g, c, s, data_inf, data_sup, indbil,
controllo_competenza, inizio_es, fine_es, fine_es_prec,stp_prov))
return FALSE;
}
else else
if (!calcola_ultima_immissione(annoes,annoesprec, g, c, s, indbil)) return pdaresca-paveresca-saldoini;
return FALSE;
return TRUE;
} }
*/
const char* Saldo::causale_chiusura_es() const char* Saldo::causale_chiusura_es()
{ {
@ -202,17 +224,17 @@ bool Saldo::calcola_data_limite(int annoes, int g, int c, long s, const TDate& d
if (gcs_corr != gcs_prec) if (gcs_corr != gcs_prec)
{ {
gcs_prec = gcs_corr; gcs_prec = gcs_corr;
dep += calcola_saldo_iniziale(annoe,gruppo,conto,sottoconto,indbil); //dep += calcola_saldo_iniziale(annoe,gruppo,conto,sottoconto,indbil);
} }
//controllo sulle date //controllo sulle date
if (annoe != annoes) if (annoe != annoes)
if (annoe != annoes-1) if (annoe != annoes-1)
continue; continue;
if (controllo_competenza) if (controllo_competenza)
if ( (annoe == annoes -1) && (data_sup != fine_es) ) if ( (annoe == annoes -1) && (data_sup != fine_es) )
continue; continue;
else else
if ( (data_rmv <= fine_es) && (data_rmv <= fine_es_prec) || if ( (data_rmv <= fine_es) && (data_rmv <= fine_es_prec) ||
(data_rmv > fine_es) ) (data_rmv > fine_es) )
@ -237,24 +259,6 @@ bool Saldo::calcola_data_limite(int annoes, int g, int c, long s, const TDate& d
return esito; return esito;
} }
/*
void Saldo::InFinEs(int ae)
{
TTable TabEs ("ESC");
TString16 codtab;
TabEs.zero();
codtab.format ("%04d", ae);
TabEs.put ("CODTAB", codtab);
TabEs.read();
if (TabEs.good())
{
_inizioEs = TabEs.get_date ("D0");
_fineEs = TabEs.get_date ("D1");
}
}
*/
bool Saldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDate& data_inf, bool Saldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDate& data_inf,
const TDate& data_sup, int indbil, bool stp_prov) const TDate& data_sup, int indbil, bool stp_prov)
{ {
@ -264,9 +268,10 @@ bool Saldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDate
long sottoconto, num_reg; long sottoconto, num_reg;
TDate data_mov; TDate data_mov;
char sezione; char sezione;
bool esito = FALSE; bool buono = FALSE;
_saldo_iniziale = ZERO;
TLocalisamfile rmov(LF_RMOV, FALSE); TLocalisamfile rmov(LF_RMOV, FALSE);
rmov.setkey(2); rmov.setkey(2);
rmov.zero(); rmov.zero();
rmov.put(RMV_GRUPPO,g); rmov.put(RMV_GRUPPO,g);
@ -275,6 +280,7 @@ bool Saldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDate
TRectype rec(rmov.curr()); TRectype rec(rmov.curr());
rmov.read(_isgteq); rmov.read(_isgteq);
for ( ; !rmov.eof(); rmov.next()) for ( ; !rmov.eof(); rmov.next())
{ {
if (rmov.curr() != rec) break; if (rmov.curr() != rec) break;
@ -301,8 +307,9 @@ bool Saldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDate
// se la causale del movimento e' uguale a quella di chiusura, // se la causale del movimento e' uguale a quella di chiusura,
// il movimento non va considerato // il movimento non va considerato
if (_codcaus == causale_chiusura_es()) continue; if (_codcaus.not_empty())
if (_codcaus == causale_chiusura_es()) continue;
if (!stp_prov && _provv.trim().not_empty()) //se non e' richiesta stampa if (!stp_prov && _provv.trim().not_empty()) //se non e' richiesta stampa
continue; //mov. provvisori li scarto continue; //mov. provvisori li scarto
@ -312,23 +319,30 @@ bool Saldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDate
if (gcs_corr != gcs_prec) if (gcs_corr != gcs_prec)
{ {
gcs_prec = gcs_corr; gcs_prec = gcs_corr;
dep += calcola_saldo_iniziale(_annoes,gruppo,conto,sottoconto,indbil); dep += calcola_saldo_iniziale(gruppo,conto,sottoconto,indbil);
} }
#ifdef DBG
sezione = rmov.get_char(RMV_SEZIONE); TString dep1(dep.string());
importo = rmov.get_real(RMV_IMPORTO); #endif
sezione = rmov.get_char(RMV_SEZIONE);
importo = rmov.get_real(RMV_IMPORTO);
if (importo == ZERO) if (importo == ZERO)
continue; continue;
esito = TRUE; buono = TRUE;
if (sezione == 'D') dep += importo; if (sezione == 'D')
else dep -= importo; dep += importo;
else
dep -= importo;
} }
#ifdef DBG
TString dep2(dep.string());
#endif
_saldo = dep; _saldo = dep;
return esito; return buono;
} }
bool Saldo::calcola_ultima_immissione(int annoes, int annoesprec, int g, int c, bool Saldo::calcola_ultima_immissione(int annoes, int annoesprec, int g, int c,
@ -344,7 +358,7 @@ long s, int indbil)
_saldo_iniziale = ZERO; _saldo_iniziale = ZERO;
_prg_dare = ZERO; _prg_dare = ZERO;
_prg_avere = ZERO; _prg_avere = ZERO;
_saldo = ZERO; _saldo = ZERO;
saldi.zero(); saldi.zero();
@ -368,32 +382,26 @@ long s, int indbil)
if (annoesprec == 0) //all'ultima immissione es.in corso if (annoesprec == 0) //all'ultima immissione es.in corso
{ {
// if (indbil == 3 || indbil == 4)
// return esito;
if (indbil == 1 || indbil == 2 || indbil == 5) if (indbil == 1 || indbil == 2 || indbil == 5)
if (_saldo_iniziale == ZERO) if (_saldo_iniziale == ZERO)
_saldo_iniziale += saldofin_esprec(annoes,gruppo,conto,sottoconto); _saldo_iniziale += saldofin_esprec(annoes,gruppo,conto,sottoconto);
// i tre valori precedenti vengono utilizzati per la stampa bilancio // i tre valori precedenti vengono utilizzati per la stampa bilancio
// di verifica // di verifica
_saldo = _saldo_iniziale + _prg_dare - _prg_avere; _saldo = _saldo_iniziale + _prg_dare - _prg_avere;
} }
else //all'ultima immissione es.precedente else //all'ultima immissione es.precedente
{ {
TRecnotype numrec = saldi.recno(); const int annoesprec = EsePre(annoes);
TRectype app = ricerca_progr_prec(annoe-1, gruppo, conto, sottoconto);
annoe = app.get_int (SLD_ANNOES); if (annoesprec != 0)
_prg_dare = app.get_real(SLD_PDARE); {
_prg_avere = app.get_real(SLD_PAVERE); TRectype app = ricerca_progr_prec(annoe-1, gruppo, conto, sottoconto);
#ifdef DBG annoe = app.get_int (SLD_ANNOES);
TString16 pd, pa; _prg_dare = app.get_real(SLD_PDARE);
pa = _prg_avere.string(); _prg_avere = app.get_real(SLD_PAVERE);
pd = _prg_dare.string(); }
warning_box ("pdare=%s pavere=%s", (const char*)pd, (const char *)pa); _saldo = _prg_dare - _prg_avere;
#endif
saldi.readat(numrec);
_saldo = _prg_dare - _prg_avere;
} }
} }
return esito; return esito;
@ -411,7 +419,7 @@ bool Saldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil)
_saldo_iniziale = ZERO; _saldo_iniziale = ZERO;
_prg_dare = ZERO; _prg_dare = ZERO;
_prg_avere = ZERO; _prg_avere = ZERO;
_saldo = ZERO; _saldo = ZERO;
saldi.zero(); saldi.zero();
@ -430,15 +438,18 @@ bool Saldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil)
_prg_dare = saldi.get_real(SLD_PDARE); _prg_dare = saldi.get_real(SLD_PDARE);
_prg_avere = saldi.get_real(SLD_PAVERE); _prg_avere = saldi.get_real(SLD_PAVERE);
sezione = saldi.get_char(SLD_FLAGSALINI); sezione = saldi.get_char(SLD_FLAGSALINI);
if (_prg_dare == 0 && _prg_avere == 0)
return esito;
if (sezione == 'A') _saldo_iniziale = -_saldo_iniziale; if (sezione == 'A') _saldo_iniziale = -_saldo_iniziale;
// if (indbil == 3 || indbil == 4) // if (indbil == 3 || indbil == 4)
// return esito; // return esito;
if (indbil == 1 || indbil == 2 || indbil == 5) if (indbil == 1 || indbil == 2 || indbil == 5)
if (_saldo_iniziale == ZERO) if (_saldo_iniziale == ZERO)
_saldo_iniziale += saldofin_esprec(annoes,gruppo,conto,sottoconto); _saldo_iniziale += saldofin_esprec(annoes,gruppo,conto,sottoconto);
// i tre valori precedenti vengono utilizzati per la stampa bilancio // i tre valori precedenti vengono utilizzati per la stampa bilancio
// di verifica // di verifica
@ -452,11 +463,12 @@ TRectype& Saldo::ricerca_progr_prec (int annoesprec, int g, int c, long s)
{ {
TLocalisamfile saldi(LF_SALDI, FALSE); TLocalisamfile saldi(LF_SALDI, FALSE);
// TRectype rec(LF_SALDI); // TRectype rec(LF_SALDI);
const int oldkey = saldi.getkey();
saldi.setkey(1); saldi.setkey(1);
saldi.zero(); saldi.zero();
if (annoesprec != 0) saldi.put(SLD_ANNOES,annoesprec); saldi.put(SLD_ANNOES,annoesprec);
if (g != 0) saldi.put(SLD_GRUPPO,g); if (g != 0) saldi.put(SLD_GRUPPO,g);
if (c != 0) saldi.put(SLD_CONTO,c); if (c != 0) saldi.put(SLD_CONTO,c);
if (s != 0) saldi.put(SLD_SOTTOCONTO,s); if (s != 0) saldi.put(SLD_SOTTOCONTO,s);
@ -464,7 +476,8 @@ TRectype& Saldo::ricerca_progr_prec (int annoesprec, int g, int c, long s)
if (saldi.read() != NOERR) saldi.zero(); if (saldi.read() != NOERR) saldi.zero();
*_rec = saldi.curr(); *_rec = saldi.curr();
saldi.setkey(oldkey);
return *_rec; return *_rec;
} }
@ -494,11 +507,11 @@ bool Saldo::prg_attuali(int annoes,TConto& conto,int indbil,real& prgdare,real&
if ( (indbil == 1) || (indbil == 2) || (indbil == 5) ) if ( (indbil == 1) || (indbil == 2) || (indbil == 5) )
if (saldoini == 0) if (saldoini == 0)
{ {
saldoini = saldofin_esprec(annoes,conto.gruppo(),conto.conto(),conto.sottoconto()); saldoini = saldofin_esprec(annoes,conto.gruppo(),conto.conto(),conto.sottoconto());
if (saldoini > 0.00) if (saldoini > 0.00)
flagsalini = 'D'; flagsalini = 'D';
else flagsalini = 'A'; else flagsalini = 'A';
} }
pdare = saldi.get_real(SLD_PDARE); pdare = saldi.get_real(SLD_PDARE);
pavere = saldi.get_real(SLD_PAVERE); pavere = saldi.get_real(SLD_PAVERE);
pdaresca = saldi.get_real(SLD_PDARESCA); pdaresca = saldi.get_real(SLD_PDARESCA);
@ -539,11 +552,11 @@ bool Saldo::prg_mov_eliminati(int annoes,TConto& conto,int indbil,real& prgdare,
if ( (indbil == 1) || (indbil == 2) || (indbil == 5) ) if ( (indbil == 1) || (indbil == 2) || (indbil == 5) )
if (saldoini == ZERO) if (saldoini == ZERO)
{ {
saldoini = saldofin_esprec(annoes,conto.gruppo(),conto.conto(),conto.sottoconto()); saldoini = saldofin_esprec(annoes,conto.gruppo(),conto.conto(),conto.sottoconto());
if (saldoini > ZERO) if (saldoini > ZERO)
flagsalini = 'D'; flagsalini = 'D';
else flagsalini = 'A'; else flagsalini = 'A';
} }
pdaresca = saldi.get_real(SLD_PDARESCA); pdaresca = saldi.get_real(SLD_PDARESCA);
paveresca = saldi.get_real(SLD_PAVERESCA); paveresca = saldi.get_real(SLD_PAVERESCA);
if (flagsalini == 'D') if (flagsalini == 'D')
@ -561,7 +574,7 @@ bool Saldo::prg_mov_eliminati(int annoes,TConto& conto,int indbil,real& prgdare,
} }
TLocalisamfile * get_descr_cf (TLocalisamfile * pconti, TLocalisamfile * get_descr_cf (TLocalisamfile * pconti,
TLocalisamfile * clifo, int g, int c, long s) TLocalisamfile * clifo, int g, int c, long s)
{ {
pconti->zero(); pconti->zero();
pconti->put (PCN_GRUPPO, g); pconti->put (PCN_GRUPPO, g);