Corretto calcolo esercizio precedente

git-svn-id: svn://10.65.10.50/trunk@2084 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1995-11-03 13:56:08 +00:00
parent 97e23efd9f
commit 7b91005f9e
3 changed files with 73 additions and 33 deletions

View File

@ -15,19 +15,34 @@
// Calcola l'anno di esercizio di una data, e se prevesc != NULL calcola anche l'anno precedente
// Certified 99%
int date2esc(const TDate& d, int* prevesc)
{
if (prevesc) *prevesc = 0;
{
int anno = 0;
TDate inizio, fine;
TTable esc("ESC");
for (int err = esc.first(); err == NOERR; err = esc.next())
{
const TDate ia(esc.get("D0")); // Data inizio esercizio
const TDate fa(esc.get("D1")); // Data fine esercizio
TString16 sanno(esc.get("CODTAB")); sanno.cut(4);
const int anno = atoi(sanno);
if (d >= ia && d <= fa)
return anno;
if (prevesc) *prevesc = anno;
inizio = esc.get_date("D0"); // Data inizio esercizio
fine = esc.get_date("D1"); // Data fine esercizio
if (d >= inizio && d <= fine)
{
const TString& sanno = esc.get("CODTAB").left(4);
anno = atoi(sanno);
break;
}
}
if (prevesc != NULL)
{
if (anno != 0)
{
--inizio;
*prevesc = date2esc(inizio);
}
else
*prevesc = 0;
}
return 0;
}

View File

@ -577,22 +577,38 @@ const char* TPagamento::desc_tpr() const
return o;
}
const char* TPagamento::desc_tipo(int i) const
const char* TPagamento::desc_tipo(int tipo, char ulc) const
{
int err = ~NOERR;
const char* o;
switch (i)
{
case 1: o = "Rimessa diretta o contanti"; break;
case 2: o = "Tratta"; break;
case 3: o = "Ricevuta bancaria"; break;
case 4: o = "Cessione"; break;
case 5: o = "Paghero'"; break;
case 6: o = "Lettera di credito"; break;
case 7: o = "Tratta accettata"; break;
case 8: o = "Rapporti interban. diretti"; break;
case 9: o = "Bonifici"; break;
default: o = "Altro pagamento"; break;
}
if (ulc > ' ')
{
const char key[] = { tipo+'0', ulc, '\0' };
TTable clr("%CLR");
clr.put("CODTAB", key);
err = clr.read();
if (err == NOERR)
o = clr.get("S0");
}
if (err != NOERR)
{
switch (tipo)
{
case 1: o = "Rimessa diretta o contanti"; break;
case 2: o = "Tratta"; break;
case 3: o = "Ricevuta bancaria"; break;
case 4: o = "Cessione"; break;
case 5: o = "Paghero'"; break;
case 6: o = "Lettera di credito"; break;
case 7: o = "Tratta accettata"; break;
case 8: o = "Rapporti interban. diretti"; break;
case 9: o = "Bonifici"; break;
default: o = "Altro pagamento"; break;
}
}
return o;
}
@ -1342,9 +1358,12 @@ void TPagamento::set_sheet(TSheet_field& sf, int sscad)
ts.add("", 2);
}
ts.add(perc_rata(i).string(), 3); // 3 - Percentuale
ts.add(tipo_rata(i), 4); // 4 - Tipo rata
ts.add(ulc_rata(i), 5); // 5 - Ulteriore classificazione
ts.add(desc_tipo(tipo_rata(i)), 6); // 6 - Descrizione tipo rata
const int tr = tipo_rata(i);
const char uc = ulc_rata(i)[0];
ts.add(tr, 4); // 4 - Tipo rata
ts.add(uc, 5); // 5 - Ulteriore classificazione
ts.add(desc_tipo(tr, uc), 6); // 6 - Descrizione tipo rata
// 7,8,9,10 - Banche
const bool paid = ratapagata(i);
ts.add(paid ? "X" : "", 11); // 11 - Pagaya
@ -1366,9 +1385,12 @@ void TPagamento::set_sheet(TSheet_field& sf, int sscad)
scr += scad_rata(i);
s.add(scr);
s.add(perc_rata(i).string());
s.add(tipo_rata(i));
s.add(desc_tipo(tipo_rata(i)));
s.add(ulc_rata(i));
const int tr = tipo_rata(i);
const char uc = ulc_rata(i)[0];
s.add(tr);
s.add(uc);
s.add(desc_tipo(tr, uc));
}
}
else // new: set with 1 or 2 rates according to tpr
@ -1385,9 +1407,12 @@ void TPagamento::set_sheet(TSheet_field& sf, int sscad)
scr += scad_rata(i);
s.add(scr);
s.add(perc_rata(i).string());
s.add(tipo_rata(i));
s.add(desc_tipo(tipo_rata(i)));
s.add(ulc_rata(i));
const int tr = tipo_rata(i);
const char uc = ulc_rata(i)[0];
s.add(tr);
s.add(uc);
s.add(desc_tipo(tr, uc));
}
}

View File

@ -86,7 +86,7 @@ public:
const TString& name() const { return _name; }
const TString& code() const { return _code; }
const char* desc_tpr() const;
const char* desc_tipo(int) const;
const char* desc_tipo(int tipo, char ulc) const;
// giorni scadenza fissi, aggiunti poi
void set_fixed_scad(int a, int ind) { _fixd[ind] = a; }