Patch level :4.0 750

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :ripartizione con indicatore di bilancio (minchia!)


git-svn-id: svn://10.65.10.50/trunk@15496 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2007-07-16 15:01:42 +00:00
parent 91063d6b20
commit 54868369e5
5 changed files with 84 additions and 36 deletions

View File

@ -143,22 +143,14 @@ bool TRib_movanal_app::explode_rows(const TRecord_array& input_rows, TRecord_arr
for (int r = 1; r <= input_rows.rows(); r++)
{
const TRectype& rec = input_rows.row(r);
const TAnal_ripartizioni_batch& rrip = _cache_rip.righe(rec.get(RMOVANA_CODCCOSTO), rec.get(RMOVANA_CODCMS), annoes);
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);
//ci sono righe di ripartizione
const int righe_ripartizione = rrip.rows();
bool ripartisci = righe_ripartizione > 0;
if (ripartisci)
{
const int ripartizione_indbil = rrip.indbil();
if (ripartizione_indbil > 0) //se l'indicatore di bilancio di destinazione e' definito...
{
TAnal_bill zio(rec);
//non puo' ripartire se gli indicatori di bilancio dei conti origine e destinazione sono diversi
//esempio:non puo' ripartire costi in ricavi!!!
ripartisci = (zio.indicatore_bilancio() == ripartizione_indbil);
}
}
if (ripartisci)
{
// Importo totale da distribuire arrotondato ai decimali della valuta di conto

View File

@ -1444,51 +1444,105 @@ int TAnal_ripartizioni_batch::read (const char* codice)
return err;
}
int TAnal_ripartizioni_batch::read (const char* codcosto, const char* commessa, const int annoes)
int TAnal_ripartizioni_batch::read (const char* codcosto, const char* commessa,
const int annoes, const int indbil)
{
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();
//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();
}
//se fallisce ancora riprova con anno=0 e lo stesso indbil
if (err != NOERR && annoes != 0)
{
//va rifatta la put perche' potrebbe essersi spostato al record successivo
rip.put(RIP_TIPO, "B"); //solo tipi batch!
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();
//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();
}
}
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)
int TAnal_ripartizioni_batch::read (const int gr, const int co, const long sot,
const int annoes, const int indbil)
{
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!!!
//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();
}
//se fallisce ancora riprova con anno=0 e lo stesso indbil
if (err != NOERR && annoes != 0)
{
//va rifatta la put perche' potrebbe essersi spostato al record successivo
rip.put(RIP_TIPO, "B"); //solo tipi batch!
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();
//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();
}
}
if (err == NOERR)
err = read(rip.get(RIP_CODICE));
return err;
@ -1515,16 +1569,18 @@ TObject* TCache_ripartizioni::key2obj(const char* key)
const int conto = parametro.get_int(2);
const long sottoconto = parametro.get_long(3);
const int anno = parametro.get_int(4);
const int indbil = parametro.get_int(5);
rip->read(gruppo, conto, sottoconto, anno);
rip->read(gruppo, conto, sottoconto, anno, indbil);
}
else //chiave 4
{
const TString80 codcosto = parametro.get(1);
const TString80 commessa = parametro.get(2);
const int anno = parametro.get_int(3);
const int indbil = parametro.get_int(4);
rip->read(codcosto, commessa, anno);
rip->read(codcosto, commessa, anno, indbil);
}
if (rip->head().get_int(RIP_TIPORIP) == 1)
@ -1575,24 +1631,24 @@ 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 TAnal_ripartizioni_batch& TCache_ripartizioni::righe(const char* costo, const char* commessa, const int annoes, const int indbil)
{
TToken_string parametro;
parametro << "4|" << costo << '|' << commessa << '|' << annoes; //per chiave 4
parametro << "4|" << costo << '|' << commessa << '|' << annoes << '|' << indbil; //per chiave 4
return *(const TAnal_ripartizioni_batch*)objptr(parametro);
}
const TAnal_ripartizioni_batch& TCache_ripartizioni::righe(const int gruppo, const int conto, const long sottoconto, const int annoes)
const TAnal_ripartizioni_batch& TCache_ripartizioni::righe(const int gruppo, const int conto, const long sottoconto, const int annoes, const int indbil)
{
TToken_string parametro;
parametro << "3|" << gruppo << '|' << conto << '|' << sottoconto << '|' << annoes; //per chiave 3
parametro << "3|" << gruppo << '|' << conto << '|' << sottoconto << '|' << annoes << '|' << indbil; //per chiave 3
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 int indbil)
{
return righe(bill.gruppo(), bill.conto(), bill.sottoconto(), annoes);
return righe(bill.gruppo(), bill.conto(), bill.sottoconto(), annoes, indbil);
}
TCache_ripartizioni::TCache_ripartizioni()

View File

@ -172,8 +172,8 @@ 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);
int read (const int gr, const int co, const long sot, const int annoes);
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);
TAnal_ripartizioni_batch();
};
@ -191,9 +191,9 @@ protected:
public:
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);
const TAnal_ripartizioni_batch& righe(const char* costo, const char* commessa, const int annoes, const int indbil);
const TAnal_ripartizioni_batch& righe(const int gruppo, const int conto, const long sottoconto, const int annoes, const int indbil);
const TAnal_ripartizioni_batch& righe(const TBill& bill, const int annoes, const int indbil);
TCache_ripartizioni();
};

View File

@ -1,3 +1,3 @@
149
0
$rip|242|242|118|0|Archivio tabelle di ripartizione analitica|||
$rip|284|284|118|0|Archivio tabelle di ripartizione analitica|||

View File

@ -14,5 +14,5 @@ INDBIL|2|1|0|Indicatore bilancio conti di destinazione
4
TIPO+CODICE|
TIPO+DESCRIZ|X
TIPO+GRUPPO+CONTO+SOTTOCONTO+ANNOES|X
TIPO+CODCOSTO+CODCMS+ANNOES|X
TIPO+GRUPPO+CONTO+SOTTOCONTO+ANNOES+INDBIL|X
TIPO+CODCOSTO+CODCMS+ANNOES+INDBIL|X