Patch level :10.0
Files correlati : Ricompilazione Demo : [ ] Commento :continua la contabilizzazione cespiti git-svn-id: svn://10.65.10.50/trunk@15965 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
c24a56d4f9
commit
6730d44e10
@ -67,7 +67,9 @@ class TRigamov : public TRectype
|
|||||||
public:
|
public:
|
||||||
virtual int compare(const TSortable& s) const;
|
virtual int compare(const TSortable& s) const;
|
||||||
const TRectype& categoria() const;
|
const TRectype& categoria() const;
|
||||||
TRigamov(const int grp, const TString& spc, const int cat) : TRectype(LF_RMOV) { _grp = grp; _spc = spc; _cat = cat;}
|
const TString& descr_categoria() const;
|
||||||
|
TRigamov(const int grp, const TString& spc, const int cat)
|
||||||
|
: TRectype(LF_RMOV) { _grp = grp; _spc = spc; _cat = cat; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -76,6 +78,10 @@ const TRectype& TRigamov::categoria() const
|
|||||||
return ditta_cespiti().categoria(_grp, _spc, _cat, true);
|
return ditta_cespiti().categoria(_grp, _spc, _cat, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const TString& TRigamov::descr_categoria() const
|
||||||
|
{
|
||||||
|
return ditta_cespiti().categoria(_grp, _spc, _cat, false).get("S0");
|
||||||
|
}
|
||||||
|
|
||||||
//confrontatore di saldi_per_codice
|
//confrontatore di saldi_per_codice
|
||||||
int TRigamov::compare(const TSortable& s) const
|
int TRigamov::compare(const TSortable& s) const
|
||||||
@ -100,7 +106,7 @@ struct TSaldo_per_codice :public TSortable
|
|||||||
{
|
{
|
||||||
TString4 _spc;
|
TString4 _spc;
|
||||||
int _grp, _cat;
|
int _grp, _cat;
|
||||||
TString80 _idcespite;
|
TString16 _idcespite;
|
||||||
real _qnor, _qant, _qacc;//, _qperse;
|
real _qnor, _qant, _qacc;//, _qperse;
|
||||||
void add(const TRectype& rec_ammce);
|
void add(const TRectype& rec_ammce);
|
||||||
|
|
||||||
@ -313,12 +319,12 @@ protected:
|
|||||||
virtual bool destroy();
|
virtual bool destroy();
|
||||||
|
|
||||||
void elabora();
|
void elabora();
|
||||||
void genera_mov_per_cat(TArray& righe_mov, const TDate& datareg, const TDate& datacomp,
|
void genera_mov(TArray& righe_mov, const TDate& datareg, const TDate& datacomp,
|
||||||
const TString& codcaus, const bool definitivo);
|
const TString& codcaus, const int movdett, const bool definitivo, TLog_report& log);
|
||||||
void genera_mov_per_ces(TArray& righe_mov, const TDate& datareg, const TDate& datacomp,
|
|
||||||
const TString& codcaus, const bool definitivo);
|
|
||||||
void delete_old_movs(const TDate& ini_es);
|
void delete_old_movs(const TDate& ini_es);
|
||||||
long get_new_numreg() const;
|
long get_new_numreg() const;
|
||||||
|
void fill_head(TRectype& head, const TDate& datacomp, const TDate& datareg,
|
||||||
|
const long numreg, const TString& codcaus, const bool definitivo);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -357,16 +363,9 @@ long TTrasf_mov_ce_cg::get_new_numreg() const
|
|||||||
return mov.curr().get_long(MOV_NUMREG) + 1;
|
return mov.curr().get_long(MOV_NUMREG) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//metodo per la generazione di movimenti con righe per categoria (chiamata se movdett=0)
|
void TTrasf_mov_ce_cg::fill_head(TRectype& head, const TDate& datacomp, const TDate& datareg,
|
||||||
void TTrasf_mov_ce_cg::genera_mov_per_cat(TArray& righe_mov, const TDate& datareg, const TDate& datacomp,
|
const long numreg, const TString& codcaus, const bool definitivo)
|
||||||
const TString& codcaus, const bool definitivo)
|
|
||||||
{
|
{
|
||||||
//Riempie i campi della testata movimento
|
|
||||||
long numreg = get_new_numreg();
|
|
||||||
|
|
||||||
TMovimentoPN_CE pn;
|
|
||||||
TRectype& head = pn.curr();
|
|
||||||
|
|
||||||
TEsercizi_contabili esc;
|
TEsercizi_contabili esc;
|
||||||
const int codes = esc.date2esc(datacomp);
|
const int codes = esc.date2esc(datacomp);
|
||||||
head.put(MOV_ANNOES, codes);
|
head.put(MOV_ANNOES, codes);
|
||||||
@ -376,7 +375,20 @@ void TTrasf_mov_ce_cg::genera_mov_per_cat(TArray& righe_mov, const TDate& datare
|
|||||||
head.put(MOV_CODCAUS, codcaus);
|
head.put(MOV_CODCAUS, codcaus);
|
||||||
if (!definitivo)
|
if (!definitivo)
|
||||||
head.put(MOV_PROVVIS, 'C');
|
head.put(MOV_PROVVIS, 'C');
|
||||||
head.put(MOV_DESCR, TR("Rilevazione quote ammortamento cespiti"));
|
}
|
||||||
|
|
||||||
|
//metodo per la generazione di movimenti con righe per categoria (chiamata se movdett=0)
|
||||||
|
void TTrasf_mov_ce_cg::genera_mov(TArray& righe_mov, const TDate& datareg, const TDate& datacomp, const TString& codcaus,
|
||||||
|
const int movdett, const bool definitivo, TLog_report& log)
|
||||||
|
{
|
||||||
|
//Riempie i campi della testata movimento
|
||||||
|
long numreg = get_new_numreg();
|
||||||
|
|
||||||
|
TMovimentoPN_CE pn;
|
||||||
|
TRectype& head = pn.curr();
|
||||||
|
|
||||||
|
fill_head(head, datacomp, datareg, numreg, codcaus, definitivo);
|
||||||
|
head.put(MOV_DESCR, TR("Rilevazione quote amm. cespiti per categoria"));
|
||||||
|
|
||||||
//Procedura di inserimento delle righe del movimento
|
//Procedura di inserimento delle righe del movimento
|
||||||
TImporto fondo;
|
TImporto fondo;
|
||||||
@ -393,7 +405,7 @@ void TTrasf_mov_ce_cg::genera_mov_per_cat(TArray& righe_mov, const TDate& datare
|
|||||||
//Controllo dell'eventuale cambio di categoria. Lo fa confrontando la riga iesima appena caricata con..
|
//Controllo dell'eventuale cambio di categoria. Lo fa confrontando la riga iesima appena caricata con..
|
||||||
//..la riga i-1esima (la precedente,insomma)
|
//..la riga i-1esima (la precedente,insomma)
|
||||||
//Se la categoria e' cambiata...
|
//Se la categoria e' cambiata...
|
||||||
if (i > 0 && rigamov.compare((const TRigamov&)righe_mov[i-1]) != 0)
|
if (i > 0 && (rigamov.compare((const TRigamov&)righe_mov[i-1]) != 0 || pn.cg_items() > 95))
|
||||||
{
|
{
|
||||||
//crea una nuova riga per metterci il fondo;in questo momento la riga e' aggiunta ma va riempita!!
|
//crea una nuova riga per metterci il fondo;in questo momento la riga e' aggiunta ma va riempita!!
|
||||||
TRectype& riga_fondo = pn.nuova_riga();
|
TRectype& riga_fondo = pn.nuova_riga();
|
||||||
@ -411,17 +423,34 @@ void TTrasf_mov_ce_cg::genera_mov_per_cat(TArray& righe_mov, const TDate& datare
|
|||||||
riga_fondo.put(RMV_GRUPPO, stringone.mid(12,3));
|
riga_fondo.put(RMV_GRUPPO, stringone.mid(12,3));
|
||||||
riga_fondo.put(RMV_CONTO, stringone.mid(15,3));
|
riga_fondo.put(RMV_CONTO, stringone.mid(15,3));
|
||||||
riga_fondo.put(RMV_SOTTOCONTO, stringone.mid(18,6));
|
riga_fondo.put(RMV_SOTTOCONTO, stringone.mid(18,6));
|
||||||
|
const TString& descat = prev_riga_mov.descr_categoria();
|
||||||
|
riga_fondo.put(RMV_DESCR, descat);
|
||||||
|
|
||||||
//se il movimento supera le 95 righe va salvato sul file MOV, poi distrutto per poter costruirne uno nuovo..
|
//se il movimento supera le 95 righe va salvato sul file MOV, poi distrutto per poter costruirne uno nuovo..
|
||||||
//..con le righe di righe_mov che sono rimaste
|
//..con le righe di righe_mov che sono rimaste
|
||||||
if (pn.cg_items() > 95 || i == righe_mov.last())
|
if (pn.cg_items() > 95 || i == righe_mov.last() || movdett > 0)
|
||||||
{
|
{
|
||||||
pn.write(); //scrive il movimento sul file
|
if (movdett > 0) //se va per cespite la descrizione cambia per ogni movimento in base alla categoria
|
||||||
pn.destroy_rows(++numreg); //ne elimina le righe per poter ricominciare
|
{
|
||||||
|
TString desc;
|
||||||
|
desc << TR("Quote amm. ") << descat;
|
||||||
|
desc.cut(50);
|
||||||
|
head.put(MOV_DESCR, desc);
|
||||||
|
}
|
||||||
|
|
||||||
|
int err = pn.write(); //scrive il movimento sul file
|
||||||
|
if (err != NOERR)
|
||||||
|
{
|
||||||
|
TString msg;
|
||||||
|
msg << TR("Impossibile registrare il movimento ") << numreg << "\n";
|
||||||
|
log.log(2, msg);
|
||||||
|
}
|
||||||
|
pn.destroy_rows(numreg); //ne elimina le righe per poter ricominciare
|
||||||
|
head.put(MOV_NUMREG, ++numreg); //nuova testata per nuovo movimento
|
||||||
}
|
}
|
||||||
|
|
||||||
//azzera il valore del fondo in modo da ricominciare a calcolarlo con la nuova categoria
|
//azzera il valore del fondo in modo da ricominciare a calcolarlo con la nuova categoria
|
||||||
fondo.set(' ',0.0);
|
fondo.reset();
|
||||||
} //if i>0&&rigamov.compare...
|
} //if i>0&&rigamov.compare...
|
||||||
|
|
||||||
//Se la categoria non e' cambiata crea normalmente la nuova riga
|
//Se la categoria non e' cambiata crea normalmente la nuova riga
|
||||||
@ -433,11 +462,6 @@ void TTrasf_mov_ce_cg::genera_mov_per_cat(TArray& righe_mov, const TDate& datare
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//metodo per la generazione di movimenti con righe per cespite raggruppate e pareggiate per categoria (chiamata se movdett>0)
|
|
||||||
void TTrasf_mov_ce_cg::genera_mov_per_ces(TArray& righe_mov, const TDate& datareg, const TDate& datacomp,
|
|
||||||
const TString& codcaus, const bool definitivo)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//metodo per gestire la successione degli eventi ad alto livello
|
//metodo per gestire la successione degli eventi ad alto livello
|
||||||
void TTrasf_mov_ce_cg::elabora()
|
void TTrasf_mov_ce_cg::elabora()
|
||||||
@ -478,7 +502,7 @@ void TTrasf_mov_ce_cg::elabora()
|
|||||||
//Codice causale da mettere nei movimenti generati
|
//Codice causale da mettere nei movimenti generati
|
||||||
const TString4 codcaus = config_ditta_ce.get("COAUQU");
|
const TString4 codcaus = config_ditta_ce.get("COAUQU");
|
||||||
|
|
||||||
//Assoc_array Categoria-QammTot-QperseTot
|
//Assoc_array Categoria-QammTot
|
||||||
TAssoc_array quote_per_codice;
|
TAssoc_array quote_per_codice;
|
||||||
|
|
||||||
TProgind pi(nrec, TR("Ricalcolo ammortamenti in corso..."), true, true);
|
TProgind pi(nrec, TR("Ricalcolo ammortamenti in corso..."), true, true);
|
||||||
@ -528,7 +552,7 @@ void TTrasf_mov_ce_cg::elabora()
|
|||||||
saldi_ordinati.add(h->remove_obj());
|
saldi_ordinati.add(h->remove_obj());
|
||||||
//accoppa l'assoc
|
//accoppa l'assoc
|
||||||
quote_per_codice.destroy();
|
quote_per_codice.destroy();
|
||||||
//e ordina l'array (questo assurdo giro serve perche' l'assoc non e' ordinabile)
|
//e ordina l'array per categorie e cespite (questo assurdo giro serve perche' l'assoc non e' ordinabile)
|
||||||
saldi_ordinati.sort();
|
saldi_ordinati.sort();
|
||||||
|
|
||||||
//array con le righe movimento CG
|
//array con le righe movimento CG
|
||||||
@ -545,15 +569,9 @@ void TTrasf_mov_ce_cg::elabora()
|
|||||||
|
|
||||||
//a questo punto ha l'array con le righe movimento CG completo (righe_mov); da queste righe deve costruire..
|
//a questo punto ha l'array con le righe movimento CG completo (righe_mov); da queste righe deve costruire..
|
||||||
//..uno o piu' movimenti di prima nota
|
//..uno o piu' movimenti di prima nota
|
||||||
|
//In base al movdett li creera' con righe per categoria o per cespite ma con fondi per categoria
|
||||||
if (movdett == 0)
|
//E' un metodo semimagico
|
||||||
{
|
genera_mov(righe_mov, datareg, datacomp, codcaus, movdett, definitivo, cont_cesp_log);
|
||||||
genera_mov_per_cat(righe_mov, datareg, datacomp, codcaus, definitivo);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
genera_mov_per_ces(righe_mov, datareg, datacomp, codcaus, definitivo);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//stampa il log degli errori
|
//stampa il log degli errori
|
||||||
|
Loading…
x
Reference in New Issue
Block a user