Patch level :4.0 740
Files correlati : Ricompilazione Demo : [ ] Commento :piano adolfico in corso d'opera git-svn-id: svn://10.65.10.50/trunk@15437 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
6fc87139eb
commit
3dda2dac63
@ -11,6 +11,8 @@
|
||||
#define F_CONTO 112
|
||||
#define F_SOTTOCONTO 113
|
||||
#define F_DESCR 114
|
||||
#define F_ANNOES 115
|
||||
#define F_INDBIL 116
|
||||
|
||||
#define F_CODCDC_1 121
|
||||
#define F_CODCDC_2 122
|
||||
|
@ -154,6 +154,30 @@ BEGIN
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_ANNOES 4
|
||||
BEGIN
|
||||
PROMPT 2 8 "Esercizio "
|
||||
USE ESC
|
||||
INPUT CODTAB F_ANNOES
|
||||
DISPLAY "Codice Esercizio" CODTAB
|
||||
DISPLAY "Data inizio esercizio" D0
|
||||
DISPLAY "Data fine esercizio " D1
|
||||
OUTPUT F_ANNOES CODTAB
|
||||
FIELD ANNOES
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
LIST F_INDBIL 18
|
||||
BEGIN
|
||||
PROMPT 2 9 "Indicatore di bilancio "
|
||||
ITEM "0|0. Non definito"
|
||||
ITEM "1|1. Attivita'"
|
||||
ITEM "2|2. Passivita'"
|
||||
ITEM "3|3. Costi"
|
||||
ITEM "4|4. Ricavi"
|
||||
FIELD INDBIL
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Righe" -1 -1 78 22
|
||||
|
@ -130,7 +130,7 @@ protected:
|
||||
virtual void main_loop();
|
||||
|
||||
void implode_rows(const TRecord_array& input_rows, TRecord_array& compact_rows) const;
|
||||
bool explode_rows(const TRecord_array& input_rows, TRecord_array& output_rows);
|
||||
bool explode_rows(const TRecord_array& input_rows, TRecord_array& output_rows, const int annoes);
|
||||
bool ori_present(const TRectype& rec) const;
|
||||
|
||||
void copia_campo(const TRectype& src, const char* campo_src, TRectype& dst, const char* campo_dst) const;
|
||||
@ -229,13 +229,13 @@ void TRib_movanal_app::implode_rows(const TRecord_array& input_rows, TRecord_arr
|
||||
}
|
||||
|
||||
|
||||
bool TRib_movanal_app::explode_rows(const TRecord_array& input_rows, TRecord_array& output_rows)
|
||||
bool TRib_movanal_app::explode_rows(const TRecord_array& input_rows, TRecord_array& output_rows, const int annoes)
|
||||
{
|
||||
bool ho_cambiato_qualchecosa = false;
|
||||
for (int r = 1; r <= input_rows.rows(); r++)
|
||||
{
|
||||
const TRectype& rec = input_rows.row(r);
|
||||
const TRecord_array& rrip = _cache_rip.righe(rec.get(RMOVANA_CODCCOSTO), rec.get(RMOVANA_CODCMS));
|
||||
const TAnal_ripartizioni_batch& rrip = _cache_rip.righe(rec.get(RMOVANA_CODCCOSTO), rec.get(RMOVANA_CODCMS), annoes);
|
||||
|
||||
if (rrip.rows() > 0) //ci sono righe di ripartizione
|
||||
{
|
||||
@ -348,7 +348,7 @@ bool TRib_movanal_app::cappotta_movimento(TAnal_mov& anal_mov)
|
||||
|
||||
bool do_rewrite = false;
|
||||
//Esploditore
|
||||
if (explode_rows(compact_rows, output_rows))
|
||||
if (explode_rows(compact_rows, output_rows, anal_mov.get_int(MOVANA_ANNOES)))
|
||||
{
|
||||
input_rows = output_rows; //rimette i record elaborati negli originali
|
||||
do_rewrite = true;
|
||||
@ -391,7 +391,7 @@ void TRib_movanal_app::main_loop()
|
||||
darec.put(MOVANA_DATAREG, dal);
|
||||
const TDate & al = mask.get_date(F_DATAFIN);
|
||||
arec.put(MOVANA_DATAREG, al);
|
||||
_cache_rip.set_esercizio(al);
|
||||
_cache_rip.set_esercizio(mask.get_int(F_ANNO));
|
||||
|
||||
TCursor cur_movana(&rel_movana, "BLOCCATO!=\"X\"", 2, &darec, &arec);
|
||||
const long items = cur_movana.items();
|
||||
|
@ -59,7 +59,6 @@ BEGIN
|
||||
DISPLAY "Data fine esercizio " D1
|
||||
OUTPUT F_ANNO CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
CHECKTYPE NORMAL
|
||||
FLAGS "RZ"
|
||||
ADD NONE
|
||||
END
|
||||
|
15
ca/cacnv.cpp
15
ca/cacnv.cpp
@ -84,6 +84,21 @@ bool TConversione_anal_msk::on_field_event(TOperable_field& o, TField_event e, l
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
// RIPARTITORE
|
||||
//---------------------------------------------------------
|
||||
|
||||
class TAnal_rip : public TMultiple_rectype
|
||||
{
|
||||
public:
|
||||
TAnal_rip();
|
||||
};
|
||||
|
||||
TAnal_rip::TAnal_rip() : TMultiple_rectype(LF_RIP)
|
||||
{
|
||||
add_file(LF_RRIP, RRIP_NRIGA);
|
||||
}
|
||||
//----------------------------------------------------------
|
||||
// APPLICAZIONE
|
||||
//----------------------------------------------------------
|
||||
|
155
ca/calib01.cpp
155
ca/calib01.cpp
@ -1421,12 +1421,73 @@ TAnal_mov::TAnal_mov(const TRectype& rec) : TMultiple_rectype(LF_MOVANA)
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TAnal_rip
|
||||
///////////////////////////////////////////////////////////
|
||||
// TAnal_ripartizioni_batch
|
||||
//////////////////////////////////////////////////////////
|
||||
int TAnal_ripartizioni_batch::indbil() const
|
||||
{
|
||||
return head().get_int(RIP_INDBIL);
|
||||
}
|
||||
|
||||
TAnal_rip::TAnal_rip() : TMultiple_rectype(LF_RIP)
|
||||
int TAnal_ripartizioni_batch::read (const char* codice)
|
||||
{
|
||||
add_file(LF_RRIP, RRIP_NRIGA);
|
||||
TLocalisamfile rip(LF_RIP);
|
||||
_rip.put(RIP_TIPO, "B"); //solo tipi batch!
|
||||
_rip.put(RIP_CODICE, codice);
|
||||
int err = _rip.read(rip); //leggi il record dal file
|
||||
if (err == NOERR)
|
||||
{
|
||||
TRectype rrip(LF_RRIP);
|
||||
rrip.put(RRIP_TIPO, 'B');
|
||||
rrip.put(RRIP_CODICE, codice);
|
||||
TRecord_array::read(rrip);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
int TAnal_ripartizioni_batch::read (const char* codcosto, const char* commessa, const int annoes)
|
||||
{
|
||||
TLocalisamfile rip(LF_RIP);
|
||||
rip.setkey(4);
|
||||
rip.put(RIP_TIPO, "B"); //solo tipi batch!
|
||||
rip.put(RIP_CODCOSTO, codcosto);
|
||||
rip.put(RIP_CODCMS, commessa);
|
||||
rip.put(RIP_ANNOES, annoes);
|
||||
|
||||
int err = rip.read();
|
||||
if (err != NOERR && annoes != 0)
|
||||
{
|
||||
rip.put(RIP_ANNOES, 0);
|
||||
err = rip.read();
|
||||
}
|
||||
if (err == NOERR)
|
||||
err = read(rip.get(RIP_CODICE));
|
||||
return err;
|
||||
}
|
||||
|
||||
int TAnal_ripartizioni_batch::read (const int gr, const int co, const long sot, const int annoes)
|
||||
{
|
||||
TLocalisamfile rip(LF_RIP);
|
||||
rip.setkey(3);
|
||||
rip.put(RIP_TIPO, "B"); //solo tipi batch!
|
||||
rip.put(RIP_GRUPPO, gr);
|
||||
rip.put(RIP_CONTO, co);
|
||||
rip.put(RIP_SOTTOCONTO, sot);
|
||||
rip.put(RIP_ANNOES, annoes);
|
||||
|
||||
int err = rip.read();
|
||||
if (err != NOERR && annoes != 0)
|
||||
{
|
||||
rip.put(RIP_ANNOES, 0);
|
||||
err = rip.read();
|
||||
}
|
||||
if (err == NOERR)
|
||||
err = read(rip.get(RIP_CODICE));
|
||||
return err;
|
||||
}
|
||||
|
||||
TAnal_ripartizioni_batch::TAnal_ripartizioni_batch() : TRecord_array (LF_RRIP, RRIP_NRIGA), _rip(LF_RIP)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -1435,41 +1496,36 @@ TAnal_rip::TAnal_rip() : TMultiple_rectype(LF_RIP)
|
||||
TObject* TCache_ripartizioni::key2obj(const char* key)
|
||||
{
|
||||
TToken_string parametro(key);
|
||||
TLocalisamfile rip(LF_RIP);
|
||||
const int nkey = parametro.get_int(0);
|
||||
rip.setkey(nkey);
|
||||
rip.put(RIP_TIPO, "B");
|
||||
|
||||
switch (nkey)
|
||||
TAnal_ripartizioni_batch* rip = new TAnal_ripartizioni_batch;
|
||||
|
||||
if (nkey == 3)
|
||||
{
|
||||
case 3: //chiave 3 (tipo+gr/co/stc)
|
||||
rip.put(RIP_GRUPPO, parametro.get(1));
|
||||
rip.put(RIP_CONTO, parametro.get());
|
||||
rip.put(RIP_SOTTOCONTO, parametro.get());
|
||||
break;
|
||||
case 4: //chiave 4 (tipo+codcosto+codcms)
|
||||
rip.put(RIP_CODCOSTO, parametro.get(1));
|
||||
rip.put(RIP_CODCMS, parametro.get());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
const int gruppo = parametro.get_int(1);
|
||||
const int conto = parametro.get_int(2);
|
||||
const long sottoconto = parametro.get_long(3);
|
||||
const int anno = parametro.get_int(4);
|
||||
|
||||
rip->read(gruppo, conto, sottoconto, anno);
|
||||
}
|
||||
else //chiave 4
|
||||
{
|
||||
const TString codcosto = parametro.get(1);
|
||||
const TString commessa = parametro.get(2);
|
||||
const int anno = parametro.get_int(3);
|
||||
|
||||
rip->read(codcosto, commessa, anno);
|
||||
}
|
||||
|
||||
TString80 chiave;
|
||||
const bool found = (rip.read() == NOERR);
|
||||
if (found)
|
||||
chiave << "B|" << rip.get(RIP_CODICE);
|
||||
|
||||
TRecord_array* rows = new TRecord_array(chiave, LF_RRIP);
|
||||
|
||||
if (found && rip.get_int(RIP_TIPORIP) == 1)
|
||||
if (rip->head().get_int(RIP_TIPORIP) == 1)
|
||||
{
|
||||
bool some_value = false;
|
||||
const int items = rows->rows();
|
||||
const int items = rip->rows();
|
||||
|
||||
for (int i = 1; i <= items; i++)
|
||||
{
|
||||
TRectype & rec = (*rows)[i];
|
||||
TRectype & rec = (*rip)[i];
|
||||
TAnal_bill bill;
|
||||
|
||||
bill.set_conto(rec.get(RRIP_CODCONTO));
|
||||
@ -1488,40 +1544,49 @@ TObject* TCache_ripartizioni::key2obj(const char* key)
|
||||
{
|
||||
for (int i = 1; i <= items; i++)
|
||||
{
|
||||
TRectype& rec = (*rows)[i];
|
||||
TRectype& rec = (*rip)[i];
|
||||
rec.put(RRIP_RIPARTO, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (TObject*)rows;
|
||||
return (TObject*)rip;
|
||||
}
|
||||
|
||||
void TCache_ripartizioni::set_esercizio(const TDate & d)
|
||||
void TCache_ripartizioni::set_esercizio(const int codes)
|
||||
{
|
||||
TEsercizi_contabili e;
|
||||
const TEsercizio& esc = e.esercizio(d);
|
||||
_dal = esc.inizio();
|
||||
_al = esc.fine();
|
||||
destroy();
|
||||
if (codes != _codes)
|
||||
{
|
||||
TEsercizi_contabili e;
|
||||
const TEsercizio& esc = e.esercizio(codes);
|
||||
_codes = codes;
|
||||
_dal = esc.inizio();
|
||||
_al = esc.fine();
|
||||
destroy();
|
||||
}
|
||||
}
|
||||
|
||||
const TRecord_array& TCache_ripartizioni::righe(const char* costo, const char* commessa)
|
||||
const TAnal_ripartizioni_batch& TCache_ripartizioni::righe(const char* costo, const char* commessa, const int annoes)
|
||||
{
|
||||
TToken_string parametro;
|
||||
parametro << "4|" << costo << '|' << commessa; //per chiave 4
|
||||
return *(const TRecord_array*)objptr(parametro);
|
||||
parametro << "4|" << costo << '|' << commessa << '|' << annoes; //per chiave 4
|
||||
return *(const TAnal_ripartizioni_batch*)objptr(parametro);
|
||||
}
|
||||
|
||||
|
||||
const TRecord_array& TCache_ripartizioni::righe(const int gruppo, const int conto, const long sottoconto)
|
||||
const TAnal_ripartizioni_batch& TCache_ripartizioni::righe(const int gruppo, const int conto, const long sottoconto, const int annoes)
|
||||
{
|
||||
TToken_string parametro;
|
||||
parametro << "3|" << gruppo << '|' << conto << '|' << sottoconto; //per chiave 3
|
||||
return *(const TRecord_array*)objptr(parametro);
|
||||
parametro << "3|" << gruppo << '|' << conto << '|' << sottoconto << '|' << annoes; //per chiave 3
|
||||
return *(const TAnal_ripartizioni_batch*)objptr(parametro);
|
||||
}
|
||||
|
||||
const TRecord_array& TCache_ripartizioni::righe(const TBill& bill)
|
||||
const TAnal_ripartizioni_batch& TCache_ripartizioni::righe(const TBill& bill, const int annoes)
|
||||
{
|
||||
return righe(bill.gruppo(), bill.conto(), bill.sottoconto());
|
||||
return righe(bill.gruppo(), bill.conto(), bill.sottoconto(), annoes);
|
||||
}
|
||||
|
||||
TCache_ripartizioni::TCache_ripartizioni()
|
||||
{
|
||||
_codes = 0;
|
||||
}
|
23
ca/calib01.h
23
ca/calib01.h
@ -162,13 +162,19 @@ public:
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TAnal_rip
|
||||
// TAnal_ripartizioni_batch (ahi!)
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TAnal_rip : public TMultiple_rectype
|
||||
class TAnal_ripartizioni_batch : public TRecord_array
|
||||
{
|
||||
TRectype _rip;
|
||||
public:
|
||||
TAnal_rip();
|
||||
const TRectype& head() const { return _rip; }
|
||||
int indbil() const;
|
||||
int read (const char* codice);
|
||||
int read (const char* codcosto, const char* commessa, const int annoes);
|
||||
int read (const int gr, const int co, const long sot, const int annoes);
|
||||
TAnal_ripartizioni_batch();
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -177,16 +183,19 @@ public:
|
||||
|
||||
class TCache_ripartizioni : public TCache
|
||||
{
|
||||
int _codes;
|
||||
TDate _dal, _al;
|
||||
|
||||
protected:
|
||||
virtual TObject* key2obj(const char* key);
|
||||
|
||||
public:
|
||||
void set_esercizio(const TDate & d);
|
||||
const TRecord_array& righe(const char* costo, const char* commessa);
|
||||
const TRecord_array& righe(const int gruppo, const int conto, const long sottoconto);
|
||||
const TRecord_array& righe(const TBill& bill);
|
||||
void set_esercizio(const int codes);
|
||||
const TAnal_ripartizioni_batch& righe(const char* costo, const char* commessa, const int annoes);
|
||||
const TAnal_ripartizioni_batch& righe(const int gruppo, const int conto, const long sottoconto, const int annoes);
|
||||
const TAnal_ripartizioni_batch& righe(const TBill& bill, const int annoes);
|
||||
|
||||
TCache_ripartizioni();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -1,3 +1,3 @@
|
||||
149
|
||||
0
|
||||
$rip|2|2|113|0|Archivio tabelle di ripartizione analitica|||
|
||||
$rip|242|242|118|0|Archivio tabelle di ripartizione analitica|||
|
||||
|
@ -1,5 +1,5 @@
|
||||
149
|
||||
9
|
||||
11
|
||||
TIPO|1|1|0|Tipo Ripartizione (<I>nterattiva, <B>atch)
|
||||
CODICE|1|8|0|Codice ripartizione
|
||||
GRUPPO|2|3|0|Gruppo
|
||||
@ -9,8 +9,10 @@ CODCOSTO|1|20|0|Codice centro di costo
|
||||
CODCMS|1|20|0|Codice commessa
|
||||
DESCRIZ|1|50|0|Descrizione
|
||||
TIPORIP|1|1|0|Modalita' ripartizione (percentuale, quote, parti)
|
||||
ANNOES|9|4|0|Codice esercizio
|
||||
INDBIL|2|1|0|Indicatore bilancio conti di destinazione
|
||||
4
|
||||
TIPO+CODICE|
|
||||
TIPO+DESCRIZ|X
|
||||
TIPO+GRUPPO+CONTO+SOTTOCONTO|X
|
||||
TIPO+CODCOSTO+CODCMS|X
|
||||
TIPO+GRUPPO+CONTO+SOTTOCONTO+ANNOES|X
|
||||
TIPO+CODCOSTO+CODCMS+ANNOES|X
|
||||
|
Loading…
x
Reference in New Issue
Block a user