Patch level : 4.0 905

Files correlati     :
Ricompilazione Demo : [ ]
Commento           :

Riportata la versione 3.2 patch 1092


git-svn-id: svn://10.65.10.50/trunk@16298 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2008-03-11 16:59:33 +00:00
parent 1d7bc3d6b0
commit aead747733
6 changed files with 161 additions and 143 deletions

View File

@ -941,22 +941,23 @@ void TAnacespi::init_modify_mode(TMask& m)
{ {
init_mask(m); init_mask(m);
TDitta_cespiti& dc = ditta_cespiti();
TDate iniz, fine;
dc.esercizio_corrente(iniz, fine);
const TDate dtacq(m.get(F_DTCOMP));
const TDate dtfunz(m.get(F_DTFUNZ));
const int staat = _qmask->stato_attivita(); const int staat = _qmask->stato_attivita();
TToken_string enabling; TToken_string enabling;
switch (staat) if (staat == 2 || staat == 3)
{
TDitta_cespiti& dc = ditta_cespiti();
TDate iniz, fine;
dc.esercizio_corrente(iniz, fine);
const TDate dtacq = m.get(F_DTCOMP);
const TDate dtfunz = m.get(F_DTFUNZ);
if (staat == 2)
{ {
case 2:
if (dtacq < iniz) if (dtacq < iniz)
{ {
if (!dtfunz.ok() || dtfunz >= iniz) if (!dtfunz.ok() || dtfunz >= iniz)
enabling.add(F_DTFUNZ); enabling.add(F_DTFUNZ);
if (_emask->tipo_cespite() == tc_materiale) if (_emask->tipo_cespite() == tc_materiale)
{ {
enabling.add(F_USOPROM); enabling.add(F_USOPROM);
@ -966,13 +967,12 @@ void TAnacespi::init_modify_mode(TMask& m)
enabling.add(F_FABBR06); enabling.add(F_FABBR06);
} }
} }
break; }
case 3: else // == 3
{
if (!dtfunz.ok() || dtfunz >= iniz) if (!dtfunz.ok() || dtfunz >= iniz)
enabling.add(F_DTFUNZ); enabling.add(F_DTFUNZ);
break; }
default:
break;
} }
_emask->protect_page(1, enabling); _emask->protect_page(1, enabling);
@ -1002,9 +1002,9 @@ int TAnacespi::read(TMask& m)
int TAnacespi::write(const TMask& m) int TAnacespi::write(const TMask& m)
{ {
TRectype& curr = get_relation()->curr();
const TDitta_cespiti& dc = ditta_cespiti(); const TDitta_cespiti& dc = ditta_cespiti();
const TRectype& cac = dc.categoria(0, NULL, m.get_int(F_CATEGORIA)); const TRectype& cac = dc.categoria(0, NULL, m.get_int(F_CATEGORIA));
TRectype& curr = get_relation()->curr();
switch (_emask->tipo_cespite()) switch (_emask->tipo_cespite())
{ {
case tc_immateriale: case tc_immateriale:

View File

@ -303,7 +303,7 @@ bool TForce_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
if (sumf > _residuof_ini) if (sumf > _residuof_ini)
return error_box(TR("Attenzione: l'ammortamento richiesto supera il residuo fiscale del cespite")); return error_box(TR("Attenzione: l'ammortamento richiesto supera il residuo fiscale del cespite"));
if (e == fe_close && field(F_FRINGEBEN).shown()) if (e == fe_close && field(F_FRINGEBEN).active())
{ {
const real fringe_amm = get_real(F_AMMNOR_F)+get_real(F_AMMACC_F)+get_real(F_AMMANT_F); const real fringe_amm = get_real(F_AMMNOR_F)+get_real(F_AMMACC_F)+get_real(F_AMMANT_F);
const real fringe_ben = get_real(F_FRINGEBEN); const real fringe_ben = get_real(F_FRINGEBEN);

View File

@ -110,7 +110,7 @@ bool TCalcamm::calcola_ammortamenti()
cur.freeze(); cur.freeze();
TString msg; TString msg;
msg << TR("Calcolo ammortamenti di ") << items << TR(" cespiti..."); msg << TR("Calcolo ammortamenti cespiti: ") << items;
TProgind pi(items, msg, TRUE, TRUE); TProgind pi(items, msg, TRUE, TRUE);
for (cur = 0L; cur.pos() < items; ++cur) for (cur = 0L; cur.pos() < items; ++cur)

View File

@ -1,5 +1,4 @@
#include <applicat.h> #include <applicat.h>
#include <form.h>
#include <printer.h> #include <printer.h>
#include <recarray.h> #include <recarray.h>
#include <utility.h> #include <utility.h>
@ -194,7 +193,11 @@ bool TStampa_storico::stampa_primo_saldo(const int tipo)
section1.find_field(FF_DESCRUNO).set(TR("Ripresa saldi")); section1.find_field(FF_DESCRUNO).set(TR("Ripresa saldi"));
section1.find_field(FF_NUMELEUNO).set(recsalce.get(SALCE_NUMELE)); section1.find_field(FF_NUMELEUNO).set(recsalce.get(SALCE_NUMELE));
real sum = recsalce.get_real("CSTO"); real sum = recsalce.get_real("CSTO");
if (tipo == 2)
sum -= recsalce.get_real("VNONAMMC");
else
sum -= recsalce.get_real("VNONAMM"); sum -= recsalce.get_real("VNONAMM");
sum -= recsalce.get_real("VNONAMM06");
sum += recsalce.get_real("RIV75"); sum += recsalce.get_real("RIV75");
sum += recsalce.get_real("RIV83"); sum += recsalce.get_real("RIV83");
sum += recsalce.get_real("RIV90"); sum += recsalce.get_real("RIV90");

View File

@ -266,7 +266,8 @@ void TStampa_prospetto::stampa_totali_tipo(TTipo_cespite tcesp)
{ {
// scrive il tipo di cespiti di cui calcola il totale // scrive il tipo di cespiti di cui calcola il totale
set_field(FR_TC_CAT,""); set_field(FR_TC_CAT,"");
TString80 tipodescr = TR("TOTALI BENI "); TString80 tipodescr;
tipodescr << TR("TOTALI BENI") << ' ';
switch (tcesp) switch (tcesp)
{ {
case tc_pluriennale: tipodescr << TR("PLURIENNALI"); break; case tc_pluriennale: tipodescr << TR("PLURIENNALI"); break;
@ -329,12 +330,15 @@ void TStampa_prospetto::fill_body(const TTotali& tot)
set_field(FR_TC_RESBIL,tempval2); set_field(FR_TC_RESBIL,tempval2);
} }
//-------------------------------------------------------------------------------------------------------------------------// //-------------------------------------------------------------------------------------------------------------------------//
void TStampa_prospetto::aggiorna_totali(TCursor& cur, const int tipo, TTipo_cespite tcesp) void TStampa_prospetto::aggiorna_totali(TCursor& curcespi, const int tipo, TTipo_cespite tcesp)
{ {
// valori della riga 1 (dipendenti da tipo solo le rivgf/rivgc) // valori della riga 1 (dipendenti da tipo solo le rivgf/rivgc)
TRectype& recsalce = cur.curr(LF_SALCE); const TRectype& recsalce = curcespi.curr(LF_SALCE);
real csto = recsalce.get_real(SALCE_CSTO); real csto = recsalce.get_real(SALCE_CSTO);
const TRectype& cespi = curcespi.curr();
const bool leasing = cespi.get_bool(CESPI_LEASING);
_cat._tot_csto += csto; _cat._tot_csto += csto;
if (tipo == 2) if (tipo == 2)
_cat._tot_csto -= recsalce.get_real(SALCE_VNONAMMC); _cat._tot_csto -= recsalce.get_real(SALCE_VNONAMMC);
@ -348,15 +352,23 @@ void TStampa_prospetto::aggiorna_totali(TCursor& cur, const int tipo, TTipo_cesp
rivsalce += recsalce.get_real(SALCE_RIV91); rivsalce += recsalce.get_real(SALCE_RIV91);
_cat._tot_riv += rivsalce; _cat._tot_riv += rivsalce;
if (tipo == 2) if (tipo == 1 || leasing)
_cat._tot_riv += recsalce.get_real(SALCE_RIVGF); else
if (tipo == 2 && !leasing)
_cat._tot_riv += recsalce.get_real(SALCE_RIVGC); _cat._tot_riv += recsalce.get_real(SALCE_RIVGC);
else
_cat._tot_riv += recsalce.get_real(SALCE_RIVGF);
// valori della riga 2 (e, giá che si fa la scansione dei movimenti, anche i valori dei movam della riga 3) // valori della riga 2 (e, giá che si fa la scansione dei movimenti, anche i valori dei movam della riga 3)
// (i valori della riga 2 non dipendono da tipo, mentre quelli della riga 3 si, in quanto hanno movam) // (i valori della riga 2 non dipendono da tipo, mentre quelli della riga 3 si, in quanto hanno movam)
TRectype recmovce(LF_MOVCE); TRectype recmovce(LF_MOVCE);
recmovce.put(MOVCE_IDCESPITE, cur.curr().get(CESPI_IDCESPITE)); const TString16 idcespite = cespi.get(CESPI_IDCESPITE);
recmovce.put(MOVCE_IDCESPITE, idcespite);
real amv_ammnor, amv_ammacc, amv_ammant;
#ifdef DBG
if (atol(idcespite) == 178)
int cazzo = 1;
#endif
TRelation relmovce(LF_MOVCE); TRelation relmovce(LF_MOVCE);
// viene aggiunta la relazione su movam (che contiene il filtro su tpamm dovuto al tipo di situazione scelto nella maschera).. // viene aggiunta la relazione su movam (che contiene il filtro su tpamm dovuto al tipo di situazione scelto nella maschera)..
@ -366,37 +378,40 @@ void TStampa_prospetto::aggiorna_totali(TCursor& cur, const int tipo, TTipo_cesp
//.. e quindi viene aggiunta la relazione su ammmv (che contiene il filtro su tpamm dovuto al tipo di situazione scelto nella //.. e quindi viene aggiunta la relazione su ammmv (che contiene il filtro su tpamm dovuto al tipo di situazione scelto nella
// maschera) utilizzando la stessa espressione di filtro, in quanto la chiave di ammmv é identica a quella di movam (olé!) // maschera) utilizzando la stessa espressione di filtro, in quanto la chiave di ammmv é identica a quella di movam (olé!)
relmovce.add(LF_AMMMV, expr); relmovce.add(LF_AMMMV, expr);
// Scansione movimenti in base alla chiave IDCESPITE+IDMOV
TCursor curmovce (&relmovce, "", 2, &recmovce, &recmovce); TCursor curmovce (&relmovce, "", 2, &recmovce, &recmovce);
const TRecnotype num1 = curmovce.items();
long num1 = curmovce.items(); if (num1 > 0)
{
curmovce.freeze(); curmovce.freeze();
real amv_ammnor; const TRectype& movce = curmovce.curr();
real amv_ammacc; const TRectype& movam = curmovce.curr(LF_MOVAM);
real amv_ammant; const TRectype& ammmv = curmovce.curr(LF_AMMMV);
for (curmovce=0; curmovce.pos() < num1; ++curmovce) for (curmovce=0; curmovce.pos() < num1; ++curmovce)
{ {
const TRectype& mov = curmovce.curr(); const TDate dtmov = movce.get_date(MOVCE_DTMOV);
const TRectype& amm = curmovce.curr(LF_MOVAM);
const TRectype& amv = curmovce.curr(LF_AMMMV);
const TDate dtmov = mov.get_date(MOVCE_DTMOV);
if (dtmov >= _dataini && dtmov <= _datafine) if (dtmov >= _dataini && dtmov <= _datafine)
{ {
const TString8 codmov = mov.get(MOVCE_CODMOV); const TString4 codmov = movce.get(MOVCE_CODMOV);
const char tmc = cache().get("%TMC", codmov, "S6")[0]; //prende il valore del campo S6 nella tabella tipi movimento const char tmc = cache().get("%TMC", codmov, "S6")[0]; //prende il valore del campo S6 nella tabella tipi movimento
const char segno = mov.get_char(MOVCE_SEGNO); const char segno = movce.get_char(MOVCE_SEGNO);
const real signum = segno == '-' ? -1.0 : +1.0; //serve per sommare i movimenti con il loro segno effettivo const real signum = segno == '-' ? -UNO : UNO; //serve per sommare i movimenti con il loro segno effettivo
real rivmovce = mov.get_real(MOVCE_RIV75); real rivmovce = movce.get_real(MOVCE_RIV75);
rivmovce += mov.get_real(MOVCE_RIV83); rivmovce += movce.get_real(MOVCE_RIV83);
rivmovce += mov.get_real(MOVCE_RIV90); rivmovce += movce.get_real(MOVCE_RIV90);
rivmovce += mov.get_real(MOVCE_RIV91); rivmovce += movce.get_real(MOVCE_RIV91);
csto = mov.get_real(MOVCE_CSTO); csto = movce.get_real(MOVCE_CSTO);
// inquietante modo di selezionare la rivg (rivgf o rivgc) in base al tipo senza usare una if else! // inquietante modo di selezionare la rivg (rivgf o rivgc) in base al tipo senza usare una if else!
const real rivg = mov.get_real(tipo == 2 ? MOVCE_RIVGC : MOVCE_RIVGF); real rivg;
if (tipo == 1 || leasing)
rivg = movce.get_real(MOVCE_RIVGF); else
if (tipo == 2 && !leasing)
rivg = movce.get_real(MOVCE_RIVGC);
real vnonamm2; real vnonamm2;
if (tipo == 2) if (tipo == 2)
vnonamm2 = recsalce.get_real(SALCE_VNONAMMC); vnonamm2 = recsalce.get_real(SALCE_VNONAMMC);
@ -408,73 +423,73 @@ void TStampa_prospetto::aggiorna_totali(TCursor& cur, const int tipo, TTipo_cesp
if (vnonamm2 > csto) if (vnonamm2 > csto)
vnonamm2 = csto; vnonamm2 = csto;
real qmovam = amm.get_real(MOVAM_QNOR); real qmovam = movam.get_real(MOVAM_QNOR);
qmovam += amm.get_real(MOVAM_QACC); qmovam += movam.get_real(MOVAM_QACC);
qmovam += amm.get_real(MOVAM_QANT); qmovam += movam.get_real(MOVAM_QANT);
if (tmc == 'R') if (tmc == 'R')
_cat._tot_riveser += (rivmovce + rivg) * signum; _cat._tot_riveser += (rivmovce + rivg) * signum; else
if (tmc == 'P')
_cat._tot_reinplus += movce.get_real(MOVCE_PLUSREIN) * signum; else
if (tmc == 'I' || (tmc <= ' ' && segno == '+')) if (tmc == 'I' || (tmc <= ' ' && segno == '+'))
{ {
_cat._tot_acqincr += (csto - vnonamm2 + rivmovce + rivg) * signum; _cat._tot_acqincr += (csto - vnonamm2 + rivmovce + rivg) * signum;
_cat._tot_incr += qmovam * signum; _cat._tot_incr += qmovam * signum;
} } else
if (tmc == 'E' || (tmc <= ' ' && segno == '-')) if (tmc == 'E' || (tmc <= ' ' && segno == '-'))
{ {
_cat._tot_cesselim2 += (csto - vnonamm2 + rivmovce + rivg) * (-signum); _cat._tot_cesselim2 += (csto - vnonamm2 + rivmovce + rivg) * (-signum);
_cat._tot_cesselim3 += qmovam * (-signum); _cat._tot_cesselim3 += qmovam * (-signum);
} }
if (tmc == 'P')
_cat._tot_reinplus += (mov.get_real(MOVCE_PLUSREIN)) * signum;
// solo nei casi con tipo =2 e/o 3 viene preso l'ammortamento da ammmv (che verrá poi sommato nella riga 4, piú sotto, a quello // solo nei casi con tipo =2 e/o 3 viene preso l'ammortamento da ammmv (che verrá poi sommato nella riga 4, piú sotto, a quello
// preso da ammce); l'ammortamento viene preso qui in quanto é relativo ai movimenti che vengono qui scanditi // preso da ammce); l'ammortamento viene preso qui in quanto é relativo ai movimenti che vengono qui scanditi
if (tipo != 1) //if (tipo != 1)
{ {
amv_ammnor += (amv.get_real(AMMMV_QNOR)) * signum; amv_ammnor += (ammmv.get_real(AMMMV_QNOR)) /* * signum */;
amv_ammacc += (amv.get_real(AMMMV_QACC)) * signum; amv_ammacc += (ammmv.get_real(AMMMV_QACC)) /* * signum */;
amv_ammant += (amv.get_real(AMMMV_QANT)) * signum; amv_ammant += (ammmv.get_real(AMMMV_QANT)) /* * signum */;
} }
} //fine controllo sulle date } //fine controllo sulle date
} //fine scansione sui movimenti } //fine scansione sui movimenti
}
// valori delle righe 3 e 4 di ammce (questi valori dipendono dal tipo di situazione selezionato nella maschera) // valori delle righe 3 e 4 di ammce (questi valori dipendono dal tipo di situazione selezionato nella maschera)
// record con chiave idcespite,codes,tpamm // record con chiave idcespite,codes,tpamm
TRectype recammce(LF_AMMCE); TRectype recammce(LF_AMMCE);
recammce.put(AMMCE_IDCESPITE, cur.curr().get(CESPI_IDCESPITE)); recammce.put(AMMCE_IDCESPITE, idcespite);
recammce.put(AMMCE_CODES, _mask->get(F_ESERCIZIO)); recammce.put(AMMCE_CODES, _mask->get(F_ESERCIZIO));
// filtro sul tpamm (va messo per non prendere tutti gli ammortamenti (dei 3 tipi) assieme) // filtro sul tpamm (va messo per non prendere tutti gli ammortamenti (dei 3 tipi) assieme)
expr.cut(0); expr.cut(0) << AMMCE_TPAMM << "=" << tipo;
expr << AMMCE_TPAMM << "=" << tipo;
TRelation relammce(LF_AMMCE); TRelation relammce(LF_AMMCE);
TCursor curammce (&relammce, expr, 1, &recammce, &recammce); TCursor curammce (&relammce, expr, 1, &recammce, &recammce);
const TRecnotype num2 = curammce.items();
long num2 = curammce.items();
curammce.freeze(); curammce.freeze();
const TRectype& ammce = curammce.curr();
// scandisce gli ammce del cespite (al massimo 2 per ogni codes, ovvero iniziale e finale) // scandisce gli ammce del cespite (al massimo 2 per ogni codes, ovvero iniziale e finale)
for (curammce=0; curammce.pos()<num2; ++curammce) for (curammce=0; curammce.pos()<num2; ++curammce)
{ {
const TRectype& amm = curammce.curr();
// se tpsaldo = 1 (inizio) gli ammortamenti sono.... // se tpsaldo = 1 (inizio) gli ammortamenti sono....
if (amm.get_int(AMMCE_TPSALDO) == 1) if (ammce.get_int(AMMCE_TPSALDO) == 1)
{ {
real qnor = amm.get_real(AMMCE_QNOR); _cat._tot_fondinieser += ammce.get_real(AMMCE_QNOR);
real qacc = amm.get_real(AMMCE_QACC); _cat._tot_fondinieser += ammce.get_real(AMMCE_QACC);
real qant = amm.get_real(AMMCE_QANT); _cat._tot_fondinieser += ammce.get_real(AMMCE_QANT);
_cat._tot_fondinieser += qnor + qant +qacc;
} }
// se invece tpsaldo = 2 (fine) gli ammortamenti sono.... // se invece tpsaldo = 2 (fine) gli ammortamenti sono....
else else
{ {
_cat._tot_ammnor += amm.get_real(AMMCE_QNOR); _cat._tot_ammnor += ammce.get_real(AMMCE_QNOR);
_cat._tot_ammacc += amm.get_real(AMMCE_QACC); _cat._tot_ammacc += ammce.get_real(AMMCE_QACC);
_cat._tot_ammant += amm.get_real(AMMCE_QANT); _cat._tot_ammant += ammce.get_real(AMMCE_QANT);
// se, mentre tpsaldo=2, ho anche tpamm =2 e/o 3, gli ammortamenti devono tenere conto anche di quelli sui movimenti, calcolati // se, mentre tpsaldo=2, ho anche tpamm =2 e/o 3,
// gli ammortamenti devono tenere conto anche di quelli sui movimenti, calcolati
// durante la scansione dei movimenti // durante la scansione dei movimenti
if (tipo != 1) // if (tipo != 1)
{ {
_cat._tot_ammnor += amv_ammnor; _cat._tot_ammnor += amv_ammnor;
_cat._tot_ammacc += amv_ammacc; _cat._tot_ammacc += amv_ammacc;
@ -513,7 +528,7 @@ void TStampa_prospetto::main_loop()
// prepara il cursore di tipo sorted perché ho due tipi di ordinamento possibili: per categoria e per impianto // prepara il cursore di tipo sorted perché ho due tipi di ordinamento possibili: per categoria e per impianto
const int ordinamento = _mask->get_int(F_ORDINA); const int ordinamento = _mask->get_int(F_ORDINA);
TString ordin = ordinamento == 0 ? CESPI_CODCAT : CESPI_CODIMP; TString16 ordin = ordinamento == 0 ? CESPI_CODCAT : CESPI_CODIMP;
ordin << "|" <<CESPI_IDCESPITE; ordin << "|" <<CESPI_IDCESPITE;
TSorted_cursor sortcur (&relcespi, ordin, filtro, 1, &rec, &rec); TSorted_cursor sortcur (&relcespi, ordin, filtro, 1, &rec, &rec);
sortcur.setregion(rec,rec); sortcur.setregion(rec,rec);
@ -522,18 +537,18 @@ void TStampa_prospetto::main_loop()
const TRecnotype num = sortcur.items(); const TRecnotype num = sortcur.items();
sortcur.freeze(); sortcur.freeze();
printer().open(); printer().open();
// scansione sulle 3 possibili situazioni stampabili // scansione sulle 3 possibili situazioni stampabili: 1=fiscale; 2=civilistica; 3=gestionale.
for (int j = 1; j <= 3; j++) for (int sit = 1; sit <= 3; sit++)
{ {
// stampa solo le situazioni selezionate // stampa solo le situazioni selezionate
if (j == 1 && !_mask->get_bool(F_SITFISC)) if (sit == 1 && !_mask->get_bool(F_SITFISC))
continue; continue;
if (j == 2 && !_mask->get_bool(F_SITCIV)) if (sit == 2 && !_mask->get_bool(F_SITCIV))
continue; continue;
if (j == 3 && !_mask->get_bool(F_SITGEST)) if (sit == 3 && !_mask->get_bool(F_SITGEST))
continue; continue;
// setta l'intestazione del form... // setta l'intestazione del form...
set_intestazione(j, ordinamento); set_intestazione(sit, ordinamento);
// ed il fondo pagina // ed il fondo pagina
set_pavimentazione(); set_pavimentazione();
// gestione categorie ed effettivo main loop di stampa // gestione categorie ed effettivo main loop di stampa
@ -544,7 +559,7 @@ void TStampa_prospetto::main_loop()
{ {
const TTipo_cespite tipocespite = (TTipo_cespite)i; // trasforma l'intero i in un tipo cespite const TTipo_cespite tipocespite = (TTipo_cespite)i; // trasforma l'intero i in un tipo cespite
TString16 currcodcat = "@@"; //codice categoria iniziale (non si puó metterlo nullo perché potrebbe esistere) TString8 currcodcat = "@@"; //codice categoria iniziale (non si puó metterlo nullo perché potrebbe esistere)
TString80 currdescat = ""; TString80 currdescat = "";
_mtr.azzera(); // azzeratore tipi cespite (materiali, immateriali, pluriennali) _mtr.azzera(); // azzeratore tipi cespite (materiali, immateriali, pluriennali)
@ -553,7 +568,7 @@ void TStampa_prospetto::main_loop()
const TCespite ces(sortcur.curr()); const TCespite ces(sortcur.curr());
if (ces.tipo() == tipocespite) //considera solo i cespiti del tipo attualmente selezionato if (ces.tipo() == tipocespite) //considera solo i cespiti del tipo attualmente selezionato
{ {
const TString16 codcat = sortcur.curr().get(ordinamento == 0 ? CESPI_CODCAT : CESPI_CODIMP); const TString8 codcat = sortcur.curr().get(ordinamento == 0 ? CESPI_CODCAT : CESPI_CODIMP);
if (codcat != currcodcat) //cambia categoria if (codcat != currcodcat) //cambia categoria
{ {
if (currcodcat != "@@") if (currcodcat != "@@")
@ -567,7 +582,7 @@ void TStampa_prospetto::main_loop()
currdescat = cache().get("CIM", currcodcat, "S0"); currdescat = cache().get("CIM", currcodcat, "S0");
} }
aggiorna_totali (sortcur, j, tipocespite); aggiorna_totali (sortcur, sit, tipocespite);
} }
} // fine scansione cespiti della categoria selezionata } // fine scansione cespiti della categoria selezionata
if (currcodcat != "@@") if (currcodcat != "@@")

View File

@ -67,7 +67,7 @@ BEGIN
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
STRING F_D_GRUPPO 60 55 STRING F_D_GRUPPO 60 58
BEGIN BEGIN
PROMPT 20 4 "" PROMPT 20 4 ""
FLAGS "D" FLAGS "D"
@ -90,7 +90,7 @@ BEGIN
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
STRING F_D_SPECIE 60 55 STRING F_D_SPECIE 60 58
BEGIN BEGIN
PROMPT 20 5 "" PROMPT 20 5 ""
FLAGS "D" FLAGS "D"