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:
parent
91063d6b20
commit
54868369e5
@ -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
|
||||
|
@ -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()
|
||||
|
10
ca/calib01.h
10
ca/calib01.h
@ -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();
|
||||
};
|
||||
|
@ -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|||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user