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_CONTO 112
|
||||||
#define F_SOTTOCONTO 113
|
#define F_SOTTOCONTO 113
|
||||||
#define F_DESCR 114
|
#define F_DESCR 114
|
||||||
|
#define F_ANNOES 115
|
||||||
|
#define F_INDBIL 116
|
||||||
|
|
||||||
#define F_CODCDC_1 121
|
#define F_CODCDC_1 121
|
||||||
#define F_CODCDC_2 122
|
#define F_CODCDC_2 122
|
||||||
|
@ -154,6 +154,30 @@ BEGIN
|
|||||||
GROUP 1
|
GROUP 1
|
||||||
END
|
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
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Righe" -1 -1 78 22
|
PAGE "Righe" -1 -1 78 22
|
||||||
|
@ -130,7 +130,7 @@ protected:
|
|||||||
virtual void main_loop();
|
virtual void main_loop();
|
||||||
|
|
||||||
void implode_rows(const TRecord_array& input_rows, TRecord_array& compact_rows) const;
|
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;
|
bool ori_present(const TRectype& rec) const;
|
||||||
|
|
||||||
void copia_campo(const TRectype& src, const char* campo_src, TRectype& dst, const char* campo_dst) 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;
|
bool ho_cambiato_qualchecosa = false;
|
||||||
for (int r = 1; r <= input_rows.rows(); r++)
|
for (int r = 1; r <= input_rows.rows(); r++)
|
||||||
{
|
{
|
||||||
const TRectype& rec = input_rows.row(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
|
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;
|
bool do_rewrite = false;
|
||||||
//Esploditore
|
//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
|
input_rows = output_rows; //rimette i record elaborati negli originali
|
||||||
do_rewrite = true;
|
do_rewrite = true;
|
||||||
@ -391,7 +391,7 @@ void TRib_movanal_app::main_loop()
|
|||||||
darec.put(MOVANA_DATAREG, dal);
|
darec.put(MOVANA_DATAREG, dal);
|
||||||
const TDate & al = mask.get_date(F_DATAFIN);
|
const TDate & al = mask.get_date(F_DATAFIN);
|
||||||
arec.put(MOVANA_DATAREG, al);
|
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);
|
TCursor cur_movana(&rel_movana, "BLOCCATO!=\"X\"", 2, &darec, &arec);
|
||||||
const long items = cur_movana.items();
|
const long items = cur_movana.items();
|
||||||
|
@ -59,7 +59,6 @@ BEGIN
|
|||||||
DISPLAY "Data fine esercizio " D1
|
DISPLAY "Data fine esercizio " D1
|
||||||
OUTPUT F_ANNO CODTAB
|
OUTPUT F_ANNO CODTAB
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
CHECKTYPE NORMAL
|
|
||||||
FLAGS "RZ"
|
FLAGS "RZ"
|
||||||
ADD NONE
|
ADD NONE
|
||||||
END
|
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;
|
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
|
// 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)
|
TObject* TCache_ripartizioni::key2obj(const char* key)
|
||||||
{
|
{
|
||||||
TToken_string parametro(key);
|
TToken_string parametro(key);
|
||||||
TLocalisamfile rip(LF_RIP);
|
|
||||||
const int nkey = parametro.get_int(0);
|
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)
|
const int gruppo = parametro.get_int(1);
|
||||||
rip.put(RIP_GRUPPO, parametro.get(1));
|
const int conto = parametro.get_int(2);
|
||||||
rip.put(RIP_CONTO, parametro.get());
|
const long sottoconto = parametro.get_long(3);
|
||||||
rip.put(RIP_SOTTOCONTO, parametro.get());
|
const int anno = parametro.get_int(4);
|
||||||
break;
|
|
||||||
case 4: //chiave 4 (tipo+codcosto+codcms)
|
rip->read(gruppo, conto, sottoconto, anno);
|
||||||
rip.put(RIP_CODCOSTO, parametro.get(1));
|
}
|
||||||
rip.put(RIP_CODCMS, parametro.get());
|
else //chiave 4
|
||||||
break;
|
{
|
||||||
default:
|
const TString codcosto = parametro.get(1);
|
||||||
break;
|
const TString commessa = parametro.get(2);
|
||||||
|
const int anno = parametro.get_int(3);
|
||||||
|
|
||||||
|
rip->read(codcosto, commessa, anno);
|
||||||
}
|
}
|
||||||
|
|
||||||
TString80 chiave;
|
if (rip->head().get_int(RIP_TIPORIP) == 1)
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
bool some_value = false;
|
bool some_value = false;
|
||||||
const int items = rows->rows();
|
const int items = rip->rows();
|
||||||
|
|
||||||
for (int i = 1; i <= items; i++)
|
for (int i = 1; i <= items; i++)
|
||||||
{
|
{
|
||||||
TRectype & rec = (*rows)[i];
|
TRectype & rec = (*rip)[i];
|
||||||
TAnal_bill bill;
|
TAnal_bill bill;
|
||||||
|
|
||||||
bill.set_conto(rec.get(RRIP_CODCONTO));
|
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++)
|
for (int i = 1; i <= items; i++)
|
||||||
{
|
{
|
||||||
TRectype& rec = (*rows)[i];
|
TRectype& rec = (*rip)[i];
|
||||||
rec.put(RRIP_RIPARTO, 1);
|
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;
|
if (codes != _codes)
|
||||||
const TEsercizio& esc = e.esercizio(d);
|
{
|
||||||
_dal = esc.inizio();
|
TEsercizi_contabili e;
|
||||||
_al = esc.fine();
|
const TEsercizio& esc = e.esercizio(codes);
|
||||||
destroy();
|
_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;
|
TToken_string parametro;
|
||||||
parametro << "4|" << costo << '|' << commessa; //per chiave 4
|
parametro << "4|" << costo << '|' << commessa << '|' << annoes; //per chiave 4
|
||||||
return *(const TRecord_array*)objptr(parametro);
|
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;
|
TToken_string parametro;
|
||||||
parametro << "3|" << gruppo << '|' << conto << '|' << sottoconto; //per chiave 3
|
parametro << "3|" << gruppo << '|' << conto << '|' << sottoconto << '|' << annoes; //per chiave 3
|
||||||
return *(const TRecord_array*)objptr(parametro);
|
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:
|
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
|
class TCache_ripartizioni : public TCache
|
||||||
{
|
{
|
||||||
|
int _codes;
|
||||||
TDate _dal, _al;
|
TDate _dal, _al;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual TObject* key2obj(const char* key);
|
virtual TObject* key2obj(const char* key);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void set_esercizio(const TDate & d);
|
void set_esercizio(const int codes);
|
||||||
const TRecord_array& righe(const char* costo, const char* commessa);
|
const TAnal_ripartizioni_batch& righe(const char* costo, const char* commessa, const int annoes);
|
||||||
const TRecord_array& righe(const int gruppo, const int conto, const long sottoconto);
|
const TAnal_ripartizioni_batch& righe(const int gruppo, const int conto, const long sottoconto, const int annoes);
|
||||||
const TRecord_array& righe(const TBill& bill);
|
const TAnal_ripartizioni_batch& righe(const TBill& bill, const int annoes);
|
||||||
|
|
||||||
|
TCache_ripartizioni();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
149
|
149
|
||||||
0
|
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
|
149
|
||||||
9
|
11
|
||||||
TIPO|1|1|0|Tipo Ripartizione (<I>nterattiva, <B>atch)
|
TIPO|1|1|0|Tipo Ripartizione (<I>nterattiva, <B>atch)
|
||||||
CODICE|1|8|0|Codice ripartizione
|
CODICE|1|8|0|Codice ripartizione
|
||||||
GRUPPO|2|3|0|Gruppo
|
GRUPPO|2|3|0|Gruppo
|
||||||
@ -9,8 +9,10 @@ CODCOSTO|1|20|0|Codice centro di costo
|
|||||||
CODCMS|1|20|0|Codice commessa
|
CODCMS|1|20|0|Codice commessa
|
||||||
DESCRIZ|1|50|0|Descrizione
|
DESCRIZ|1|50|0|Descrizione
|
||||||
TIPORIP|1|1|0|Modalita' ripartizione (percentuale, quote, parti)
|
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
|
4
|
||||||
TIPO+CODICE|
|
TIPO+CODICE|
|
||||||
TIPO+DESCRIZ|X
|
TIPO+DESCRIZ|X
|
||||||
TIPO+GRUPPO+CONTO+SOTTOCONTO|X
|
TIPO+GRUPPO+CONTO+SOTTOCONTO+ANNOES|X
|
||||||
TIPO+CODCOSTO+CODCMS|X
|
TIPO+CODCOSTO+CODCMS+ANNOES|X
|
||||||
|
Loading…
x
Reference in New Issue
Block a user