Patch level :10.0
Files correlati : Ricompilazione Demo : [ ] Commento :aggiunto il campo classemov alle ripartizioni e sua gestione nel calcolo delle medesime git-svn-id: svn://10.65.10.50/trunk@16520 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
f299d2a050
commit
faf3b218e5
@ -233,7 +233,7 @@ TRiparti_msk::TRiparti_msk() : TAutomask("ca0800a")
|
||||
|
||||
// Crea gli eventuali campi per commessa e centro di costo
|
||||
|
||||
int y = 10;
|
||||
int y = 11;
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
const char* prompt = NULL;
|
||||
|
@ -13,6 +13,7 @@
|
||||
#define F_DESCR 114
|
||||
#define F_ANNOES 115
|
||||
#define F_INDBIL 116
|
||||
#define F_CLASSEMOV 117
|
||||
|
||||
#define F_CODCDC_1 121
|
||||
#define F_CODCDC_2 122
|
||||
|
@ -1,12 +1,10 @@
|
||||
#include "ca0800a.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
#include <relapbar.h>
|
||||
|
||||
TOOLBAR "" 0 -2 0 2
|
||||
#include <toolbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Ripartizioni" 0 0 0 2
|
||||
PAGE "Ripartizioni" -1 -1 64 6
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
BEGIN
|
||||
@ -181,6 +179,16 @@ BEGIN
|
||||
FIELD INDBIL
|
||||
END
|
||||
|
||||
LIST F_CLASSEMOV 25
|
||||
BEGIN
|
||||
PROMPT 2 9 "Classe movimento "
|
||||
ITEM "0|Tutti"
|
||||
ITEM "1|Normali e Temporanei"
|
||||
ITEM "2|Preventivi e Variazioni"
|
||||
FIELD CLASSEMOV
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Righe" -1 -1 78 22
|
||||
|
@ -129,7 +129,8 @@ class TRib_movanal_app : public TSkeleton_application
|
||||
protected:
|
||||
virtual void main_loop();
|
||||
|
||||
bool explode_rows(const TRecord_array& input_rows, TRecord_array& output_rows, const int annoes);
|
||||
bool explode_rows(const TRecord_array& input_rows, TRecord_array& output_rows, const int annoes,
|
||||
const char tipomov);
|
||||
bool pareggia_commessa(TAnal_mov& anal_mov);
|
||||
|
||||
public:
|
||||
@ -137,7 +138,8 @@ public:
|
||||
TRib_movanal_app(){}
|
||||
};
|
||||
|
||||
bool TRib_movanal_app::explode_rows(const TRecord_array& input_rows, TRecord_array& output_rows, const int annoes)
|
||||
bool TRib_movanal_app::explode_rows(const TRecord_array& input_rows, TRecord_array& output_rows,
|
||||
const int annoes, const char tipomov)
|
||||
{
|
||||
bool ho_cambiato_qualchecosa = false;
|
||||
for (int r = 1; r <= input_rows.rows(); r++)
|
||||
@ -146,7 +148,7 @@ bool TRib_movanal_app::explode_rows(const TRecord_array& input_rows, TRecord_arr
|
||||
TAnal_bill zio(rec);
|
||||
const int rmovana_indbil = zio.indicatore_bilancio();
|
||||
const TAnal_ripartizioni_batch& rrip = _cache_rip.righe(rec.get(RMOVANA_CODCCOSTO),
|
||||
rec.get(RMOVANA_CODCMS), annoes, rmovana_indbil);
|
||||
rec.get(RMOVANA_CODCMS), annoes, rmovana_indbil, tipomov);
|
||||
//ci sono righe di ripartizione
|
||||
const int righe_ripartizione = rrip.rows();
|
||||
bool ripartisci = righe_ripartizione > 0;
|
||||
@ -262,7 +264,7 @@ bool TRib_movanal_app::cappotta_movimento(TAnal_mov& anal_mov)
|
||||
|
||||
bool do_rewrite = false;
|
||||
//Esploditore
|
||||
if (explode_rows(compact_rows, output_rows, anal_mov.get_int(MOVANA_ANNOES)))
|
||||
if (explode_rows(compact_rows, output_rows, anal_mov.get_int(MOVANA_ANNOES), anal_mov.get_char(MOVANA_TIPOMOV)))
|
||||
{
|
||||
input_rows = output_rows; //rimette i record elaborati negli originali
|
||||
do_rewrite = true;
|
||||
@ -334,7 +336,7 @@ void TRib_movanal_app::main_loop()
|
||||
}
|
||||
}
|
||||
|
||||
cur_movana.scan(cappotta_callback, this, TR("Ribaltamento movimenti..."));
|
||||
cur_movana.scan(cappotta_callback, this, TR("Ripartizione movimenti..."));
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -345,6 +347,6 @@ void TRib_movanal_app::main_loop()
|
||||
int ca2200(int argc, char* argv[])
|
||||
{
|
||||
TRib_movanal_app app;
|
||||
app.run(argc, argv, TR("Ribaltamento movimenti di analitica"));
|
||||
app.run(argc, argv, TR("Ripartizione movimenti di analitica"));
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,7 +1,13 @@
|
||||
#include "ca2200a.h"
|
||||
#include "camask.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
TOOLBAR "" 0 -3 0 3
|
||||
|
||||
STRING DLG_PROFILE 50
|
||||
BEGIN
|
||||
PROMPT 9 0 "Profilo "
|
||||
PSELECT
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
@ -23,17 +29,7 @@ END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "" 0 -2 0 2
|
||||
|
||||
STRING DLG_PROFILE 50
|
||||
BEGIN
|
||||
PROMPT 9 -11 "Profilo "
|
||||
PSELECT
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Ribaltamento movimenti" 0 0 0 2
|
||||
PAGE "Ripartizione movimenti" 0 0 64 12
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
BEGIN
|
||||
|
@ -470,7 +470,8 @@ void TConversione_cm2ca::create_new_movana(long numreg_cg, bool definitiva, TAss
|
||||
//..alla ripartizione delle righe del movimento
|
||||
//Per prima cosa crea l'array delle righe di ripartizione con questo gr/co/stc/annoes
|
||||
const int annoes = mov_head.get_int(MOV_ANNOES);
|
||||
const TAnal_ripartizioni_batch& rrip = _cache_rip.righe(zio, annoes);
|
||||
|
||||
const TAnal_ripartizioni_batch& rrip = _cache_rip.righe(zio, annoes, ' ');
|
||||
|
||||
const int righe_ripartizione = rrip.rows();
|
||||
const bool ripartisci = righe_ripartizione > 0;
|
||||
|
135
ca/calib01.cpp
135
ca/calib01.cpp
@ -1482,48 +1482,49 @@ int TAnal_ripartizioni_batch::read (const char* codice)
|
||||
return err;
|
||||
}
|
||||
|
||||
int TAnal_ripartizioni_batch::read (const char* codcosto, const char* commessa,
|
||||
const int annoes, const int indbil)
|
||||
int TAnal_ripartizioni_batch::read_rip_4(TLocalisamfile& rip, const char* codcosto, const char* commessa,
|
||||
const int annoes, const int indbil, const int classe_mov) const
|
||||
{
|
||||
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);
|
||||
rip.put(RIP_INDBIL, indbil);
|
||||
int err = rip.read();
|
||||
rip.put(RIP_CLASSEMOV, classe_mov);
|
||||
return rip.read();
|
||||
}
|
||||
|
||||
int TAnal_ripartizioni_batch::read (const char* codcosto, const char* commessa,
|
||||
const int annoes, const int indbil, const int classe_mov)
|
||||
{
|
||||
CHECKD(classe_mov > 0, "Classe movimento non valida ", classe_mov);
|
||||
TLocalisamfile rip(LF_RIP);
|
||||
rip.setkey(4);
|
||||
|
||||
int err = read_rip_4(rip, codcosto, commessa, annoes, indbil, classe_mov);
|
||||
if (err != NOERR)
|
||||
err = read_rip_4(rip, codcosto, commessa, annoes, indbil, 0);
|
||||
//la put va rifatta la put perche' potrebbe essersi spostato al record successivo!!!
|
||||
//se fallisce il primo tentativo prova con lo stesso anno e indbil=0
|
||||
if (err != NOERR && indbil != 0)
|
||||
{
|
||||
rip.put(RIP_TIPO, "B");
|
||||
rip.put(RIP_CODCOSTO, codcosto);
|
||||
rip.put(RIP_CODCMS, commessa);
|
||||
rip.put(RIP_ANNOES, annoes);
|
||||
rip.put(RIP_INDBIL, 0);
|
||||
err = rip.read();
|
||||
err = read_rip_4(rip, codcosto, commessa, annoes, 0, classe_mov);
|
||||
if (err != NOERR)
|
||||
err = read_rip_4(rip, codcosto, commessa, annoes, 0, 0);
|
||||
}
|
||||
//se fallisce ancora riprova con anno=0 e lo stesso indbil
|
||||
if (err != NOERR && annoes != 0)
|
||||
{
|
||||
rip.put(RIP_TIPO, "B");
|
||||
rip.put(RIP_CODCOSTO, codcosto);
|
||||
rip.put(RIP_CODCMS, commessa);
|
||||
rip.put(RIP_ANNOES, 0);
|
||||
rip.put(RIP_INDBIL, indbil);
|
||||
err = rip.read();
|
||||
err = read_rip_4(rip, codcosto, commessa, 0, indbil, classe_mov);
|
||||
if (err != NOERR)
|
||||
err = read_rip_4(rip, codcosto, commessa, 0, indbil, 0);
|
||||
|
||||
//estremo tentativo con annoes e indbil = 0
|
||||
if (err != NOERR && indbil != 0)
|
||||
{
|
||||
rip.put(RIP_TIPO, "B");
|
||||
rip.put(RIP_CODCOSTO, codcosto);
|
||||
rip.put(RIP_CODCMS, commessa);
|
||||
rip.put(RIP_ANNOES, 0);
|
||||
rip.put(RIP_INDBIL, 0);
|
||||
err = rip.read();
|
||||
err = read_rip_4(rip, codcosto, commessa, 0, 0, classe_mov);
|
||||
if (err != NOERR)
|
||||
err = read_rip_4(rip, codcosto, commessa, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1532,52 +1533,51 @@ int TAnal_ripartizioni_batch::read (const char* codcosto, const char* commessa,
|
||||
return err;
|
||||
}
|
||||
|
||||
int TAnal_ripartizioni_batch::read (const int gr, const int co, const long sot,
|
||||
const int annoes, const int indbil)
|
||||
int TAnal_ripartizioni_batch::read_rip_3(TLocalisamfile& rip, const int gr, const int co, const long sot,
|
||||
const int annoes, const int indbil, const int classe_mov) const
|
||||
{
|
||||
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);
|
||||
rip.put(RIP_INDBIL, indbil);
|
||||
int err = rip.read();
|
||||
//la put va rifatta la put perche' potrebbe essersi spostato al record successivo!!!
|
||||
rip.put(RIP_CLASSEMOV, classe_mov);
|
||||
return rip.read();
|
||||
}
|
||||
|
||||
int TAnal_ripartizioni_batch::read (const int gr, const int co, const long sot,
|
||||
const int annoes, const int indbil, const int classe_mov)
|
||||
{
|
||||
CHECKD(classe_mov > 0, "Classe movimento non valida ", classe_mov);
|
||||
TLocalisamfile rip(LF_RIP);
|
||||
rip.setkey(3);
|
||||
|
||||
int err = read_rip_3(rip, gr, co, sot, annoes, indbil, classe_mov);
|
||||
if (err != NOERR)
|
||||
err = read_rip_3(rip, gr, co, sot, annoes, indbil, 0);
|
||||
|
||||
//la put va rifatta perche' potrebbe essersi spostato al record successivo!!!
|
||||
//se fallisce il primo tentativo prova con lo stesso anno e indbil=0
|
||||
if (err != NOERR && indbil != 0)
|
||||
{
|
||||
rip.put(RIP_TIPO, "B");
|
||||
rip.put(RIP_GRUPPO, gr);
|
||||
rip.put(RIP_CONTO, co);
|
||||
rip.put(RIP_SOTTOCONTO, sot);
|
||||
rip.put(RIP_ANNOES, annoes);
|
||||
rip.put(RIP_INDBIL, 0);
|
||||
err = rip.read();
|
||||
err = read_rip_3(rip, gr, co, sot, annoes, 0, classe_mov);
|
||||
if (err != NOERR)
|
||||
err = read_rip_3(rip, gr, co, sot, annoes, 0, 0);
|
||||
}
|
||||
//se fallisce ancora riprova con anno=0 e lo stesso indbil
|
||||
if (err != NOERR && annoes != 0)
|
||||
{
|
||||
rip.put(RIP_TIPO, "B");
|
||||
rip.put(RIP_GRUPPO, gr);
|
||||
rip.put(RIP_CONTO, co);
|
||||
rip.put(RIP_SOTTOCONTO, sot);
|
||||
rip.put(RIP_ANNOES, 0);
|
||||
rip.put(RIP_INDBIL, indbil);
|
||||
err = rip.read();
|
||||
|
||||
err = read_rip_3(rip, gr, co, sot, 0, indbil, classe_mov);
|
||||
if (err != NOERR)
|
||||
err = read_rip_3(rip, gr, co, sot, 0, indbil, 0);
|
||||
|
||||
//estremo tentativo con annoes e indbil = 0
|
||||
if (err != NOERR && indbil != 0)
|
||||
{
|
||||
rip.put(RIP_TIPO, "B");
|
||||
rip.put(RIP_GRUPPO, gr);
|
||||
rip.put(RIP_CONTO, co);
|
||||
rip.put(RIP_SOTTOCONTO, sot);
|
||||
rip.put(RIP_ANNOES, 0);
|
||||
rip.put(RIP_INDBIL, 0);
|
||||
err = rip.read();
|
||||
err = read_rip_3(rip, gr, co, sot, 0, 0, classe_mov);
|
||||
if (err != NOERR)
|
||||
err = read_rip_3(rip, gr, co, sot, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1608,8 +1608,9 @@ TObject* TCache_ripartizioni::key2obj(const char* key)
|
||||
const long sottoconto = parametro.get_long(3);
|
||||
const int anno = parametro.get_int(4);
|
||||
const int indbil = parametro.get_int(5);
|
||||
const int classe_mov = parametro.get_int(6);
|
||||
|
||||
rip->read(gruppo, conto, sottoconto, anno, indbil);
|
||||
rip->read(gruppo, conto, sottoconto, anno, indbil, classe_mov);
|
||||
}
|
||||
else //chiave 4
|
||||
{
|
||||
@ -1617,8 +1618,9 @@ TObject* TCache_ripartizioni::key2obj(const char* key)
|
||||
const TString80 commessa = parametro.get(2);
|
||||
const int anno = parametro.get_int(3);
|
||||
const int indbil = parametro.get_int(4);
|
||||
const int classe_mov = parametro.get_int(5);
|
||||
|
||||
rip->read(codcosto, commessa, anno, indbil);
|
||||
rip->read(codcosto, commessa, anno, indbil, classe_mov);
|
||||
}
|
||||
|
||||
if (rip->head().get_int(RIP_TIPORIP) == 1)
|
||||
@ -1669,18 +1671,33 @@ void TCache_ripartizioni::set_esercizio(const int codes)
|
||||
}
|
||||
}
|
||||
|
||||
const TAnal_ripartizioni_batch& TCache_ripartizioni::righe(const char* costo, const char* commessa, const int annoes, const int indbil)
|
||||
const TAnal_ripartizioni_batch& TCache_ripartizioni::righe(const char* costo, const char* commessa,
|
||||
const int annoes, const int indbil, const char tipomov)
|
||||
{
|
||||
//classi di movimento: se preventivi 2, se normali 1
|
||||
int classe_movimento;
|
||||
if (tipomov == 'P' || tipomov == 'V')
|
||||
classe_movimento = 2;
|
||||
else
|
||||
classe_movimento = 1;
|
||||
|
||||
TToken_string parametro;
|
||||
parametro << "4|" << costo << '|' << commessa << '|' << annoes << '|' << indbil; //per chiave 4
|
||||
parametro << "4|" << costo << '|' << commessa << '|' << annoes << '|' << indbil << '|' << classe_movimento; //per chiave 4
|
||||
return *(const TAnal_ripartizioni_batch*)objptr(parametro);
|
||||
}
|
||||
|
||||
const TAnal_ripartizioni_batch& TCache_ripartizioni::righe(const TBill& bill, const int annoes)
|
||||
const TAnal_ripartizioni_batch& TCache_ripartizioni::righe(const TBill& bill, const int annoes, const char tipomov)
|
||||
{
|
||||
//classi di movimento: se preventivi 2, se normali 1
|
||||
int classe_movimento;
|
||||
if (tipomov == 'P' || tipomov == 'V')
|
||||
classe_movimento = 2;
|
||||
else
|
||||
classe_movimento = 1;
|
||||
|
||||
TToken_string parametro;
|
||||
parametro << "3|" << bill.gruppo() << '|' << bill.conto() << '|' << bill.sottoconto() << '|'
|
||||
<< annoes << '|' << bill.indicatore_bilancio(); //per chiave 3
|
||||
<< annoes << '|' << bill.indicatore_bilancio() << '|' << classe_movimento; //per chiave 3
|
||||
return *(const TAnal_ripartizioni_batch*)objptr(parametro);
|
||||
}
|
||||
|
||||
|
13
ca/calib01.h
13
ca/calib01.h
@ -168,12 +168,17 @@ public:
|
||||
class TAnal_ripartizioni_batch : public TRecord_array
|
||||
{
|
||||
TRectype _rip;
|
||||
private:
|
||||
int read_rip_3(TLocalisamfile& rip, const int gr, const int co, const long sot,
|
||||
const int annoes, const int indbil, const int classe_mov) const;
|
||||
int read_rip_4(TLocalisamfile& rip, const char* codcosto, const char* commessa,
|
||||
const int annoes, const int indbil, const int classe_mov) const;
|
||||
public:
|
||||
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, const int indbil);
|
||||
int read (const int gr, const int co, const long sot, const int annoes, const int indbil);
|
||||
int read (const char* codcosto, const char* commessa, const int annoes, const int indbil, const int classe_mov);
|
||||
int read (const int gr, const int co, const long sot, const int annoes, const int indbil, const int classe_mov);
|
||||
TAnal_ripartizioni_batch();
|
||||
};
|
||||
|
||||
@ -192,8 +197,8 @@ protected:
|
||||
public:
|
||||
void set_esercizio(const int codes);
|
||||
const TAnal_ripartizioni_batch& righe(const char* costo, const char* commessa,
|
||||
const int annoes, const int indbil);
|
||||
const TAnal_ripartizioni_batch& righe(const TBill& bill, const int annoes);
|
||||
const int annoes, const int indbil, const char tipomov);
|
||||
const TAnal_ripartizioni_batch& righe(const TBill& bill, const int annoes, const char tipomov);
|
||||
|
||||
TCache_ripartizioni();
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
149
|
||||
0
|
||||
$rip|284|284|118|0|Archivio tabelle di ripartizione analitica|||
|
||||
$rip|||119|0|Archivio tabelle di ripartizione analitica|||
|
||||
|
@ -1,5 +1,5 @@
|
||||
149
|
||||
11
|
||||
12
|
||||
TIPO|1|1|0|Tipo Ripartizione (<I>nterattiva, <B>atch)
|
||||
CODICE|1|8|0|Codice ripartizione
|
||||
GRUPPO|2|3|0|Gruppo
|
||||
@ -11,8 +11,9 @@ 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
|
||||
CLASSEMOV|2|1|0|Classe movimento (0=tutti,1=normali e temp.,2=preventivi e variaz.)
|
||||
4
|
||||
TIPO+CODICE|
|
||||
TIPO+DESCRIZ|X
|
||||
TIPO+GRUPPO+CONTO+SOTTOCONTO+ANNOES+INDBIL|X
|
||||
TIPO+CODCOSTO+CODCMS+ANNOES+INDBIL|X
|
||||
TIPO+GRUPPO+CONTO+SOTTOCONTO+ANNOES+INDBIL+CLASSEMOV|X
|
||||
TIPO+CODCOSTO+CODCMS+ANNOES+INDBIL+CLASSEMOV|X
|
||||
|
Loading…
x
Reference in New Issue
Block a user