git-svn-id: svn://10.65.10.50/branches/R_10_00@22737 c028cbd2-c16b-5b4b-a496-9718f37d4682

This commit is contained in:
guy 2012-10-26 08:26:30 +00:00
parent a188f840dc
commit 3a98d37f2b

View File

@ -196,7 +196,7 @@ bool TAttribuzioneBenemerenze::set_print(int)
tasto = _msk->run(); tasto = _msk->run();
if (tasto == K_ENTER) if (tasto == K_ENTER)
{ {
const TDate datarif = TDate("16/05/2004"); const TDate datarif(16, 5, 2004);
_oldben = "**"; _oldben = "**";
_contatore = 0; _contatore = 0;
_prevista = (_msk->get(F_SITUAZIONE)[0] == 'P'); _prevista = (_msk->get(F_SITUAZIONE)[0] == 'P');
@ -208,12 +208,12 @@ bool TAttribuzioneBenemerenze::set_print(int)
_definitiva = _msk->get_bool(F_DEFINITIVA); _definitiva = _msk->get_bool(F_DEFINITIVA);
_nuovicriteri = _msk->get_bool(F_NUOVICRITERI); _nuovicriteri = _msk->get_bool(F_NUOVICRITERI);
_catdon.destroy(); _catdon.destroy();
const TString16 catpri = _msk->get(F_CAT1); const TString4 catpri = _msk->get(F_CAT1);
const TString16 catsec = _msk->get(F_CAT2); const TString4 catsec = _msk->get(F_CAT2);
const TString16 catter = _msk->get(F_CAT3); const TString4 catter = _msk->get(F_CAT3);
const TString16 catqua = _msk->get(F_CAT4); const TString4 catqua = _msk->get(F_CAT4);
const TString16 catqui = _msk->get(F_CAT5); const TString4 catqui = _msk->get(F_CAT5);
const TString16 catses = _msk->get(F_CAT6); const TString4 catses = _msk->get(F_CAT6);
if (catpri.not_empty()) if (catpri.not_empty())
_catdon.add((const char*) catpri); _catdon.add((const char*) catpri);
if (catsec.not_empty()) if (catsec.not_empty())
@ -235,34 +235,36 @@ bool TAttribuzioneBenemerenze::set_print(int)
int m_numdon = ben.get_int("I1"); int m_numdon = ben.get_int("I1");
int m_anni = ben.get_int("I2"); int m_anni = ben.get_int("I2");
bool solodim = ben.get_bool("B0"); bool solodim = ben.get_bool("B0");
TToken_string* condizioni = new TToken_string();; TToken_string* condizioni = new TToken_string();
condizioni->add(numdonben); condizioni->add(numdonben);
condizioni->add(m_numdon); condizioni->add(m_numdon);
condizioni->add(m_anni); condizioni->add(m_anni);
condizioni->add(solodim); condizioni->add(solodim);
_tabben.add((const char*)codben, (TObject*) condizioni); _tabben.add(codben, condizioni);
} }
TString80 filtro; TString80 filtro;
if (_attgruppi) if (_attgruppi)
{ {
if (_gruppoazie.not_empty()) if (_gruppoazie.full())
filtro.format("(90->GRUPPOAZIE == \"%s\")",(const char*)_gruppoazie); filtro.format("(90->GRUPPOAZIE == \"%s\")",(const char*)_gruppoazie);
else else
filtro.format("(90->GRUPPOAZIE != \"\")"); filtro.format("(90->GRUPPOAZIE != \"\")");
} }
else else
{
if (!_anchegruppi) if (!_anchegruppi)
filtro.format("(90->GRUPPOAZIE == \"\")"); filtro.format("(90->GRUPPOAZIE == \"\")");
}
if (filtro.not_empty()) if (filtro.not_empty())
filtro << " && "; filtro << " && ";
filtro << "(90->BENEM == \"X\")"; filtro << "(90->BENEM == \"X\")";
// filtro per sezioni // filtro per sezioni
const TString16 sezini = _msk->get(F_SEZINI); const TString& sezini = _msk->get(F_SEZINI);
const TString16 sotini = _msk->get(F_SOTINI); const TString& sotini = _msk->get(F_SOTINI);
TRectype da(LF_SOGGETTI); TRectype da(LF_SOGGETTI);
if (sezini.not_empty()) if (sezini.full())
da.put(SOG_CODSEZ, sezini); da.put(SOG_CODSEZ, sezini);
if (sotini.not_empty()) if (sotini.full())
da.put(SOG_CODSOT, sotini); da.put(SOG_CODSOT, sotini);
_cur = new TCursor(_rel, "", 3, &da, &da); _cur = new TCursor(_rel, "", 3, &da, &da);
_cur->setfilter(filtro, TRUE); _cur->setfilter(filtro, TRUE);
@ -285,20 +287,20 @@ bool TAttribuzioneBenemerenze::set_print(int)
atopera.write(); atopera.write();
TLocalisamfile atropera(LF_ATROPERA); TLocalisamfile atropera(LF_ATROPERA);
TRectype& sog = _cur->curr(); TRectype& sog = _cur->curr();
long last = _cur->items(); const long last = _cur->items();
_benem->setkey(3); _benem->setkey(3);
TProgind prg (last, "Elaborazione in corso... Prego attendere", FALSE, TRUE, 30); TProgind prg(last, TR("Elaborazione in corso... Prego attendere"), FALSE, TRUE);
for ( *_cur=0; _cur->pos() < last; ++(*_cur) ) for ( *_cur=0; _cur->pos() < last; ++(*_cur) )
{ {
prg.addstatus(1); prg.addstatus(1);
// controllare la categoria // controllare la categoria
bool filtrato = TRUE; bool filtrato = TRUE;
long codice = sog.get_long(SOG_CODICE); const long codice = sog.get_long(SOG_CODICE);
if (_catdon.items() != 0) if (_catdon.items() != 0)
{ {
const TString16 cat = sog.get(SOG_CATDON); const TString& cat = sog.get(SOG_CATDON);
filtrato = _catdon.is_key((const char*) cat); filtrato = _catdon.is_key(cat);
} }
if (filtrato) if (filtrato)
{ {
@ -319,7 +321,7 @@ bool TAttribuzioneBenemerenze::set_print(int)
{ {
const TRectype& riga = _sdonazioni->row(r); const TRectype& riga = _sdonazioni->row(r);
const TDate datadon = riga.get_date(DON_DATADON); const TDate datadon = riga.get_date(DON_DATADON);
const TString16 tipodon = riga.get(DON_TIPODON); const TString4 tipodon = riga.get(DON_TIPODON);
if (datadon<=_dataela) if (datadon<=_dataela)
{ {
if (_nuovicriteri && datadon>datarif) // 16/05/2004 if (_nuovicriteri && datadon>datarif) // 16/05/2004
@ -333,15 +335,21 @@ bool TAttribuzioneBenemerenze::set_print(int)
anno = datadon.year(); anno = datadon.year();
} }
donxanno++; donxanno++;
int eta = datadon.year() - datanasc.year();
if (datadon.month() < datanasc.month()) if (sesso == '2' && (tipodon == "SI" || tipodon=="SN"))
eta--; {
else int eta = datadon.year() - datanasc.year();
if (datadon.month() == datanasc.month()) if (datadon.month() < datanasc.month())
if (datadon.day() < datanasc.day()) eta--;
eta--; else
if ((tipodon == "SI" || tipodon=="SN") && (sesso == '2') && (eta < 50)) {
donxanno++; if (datadon.month() == datanasc.month() && datadon.day() < datanasc.day())
eta--;
}
// Le donne 'giovani' hanno il bonus (2x1 donazioni)
if (eta < 50)
donxanno++;
}
} }
else else
numdon++; numdon++;
@ -422,12 +430,12 @@ bool TAttribuzioneBenemerenze::set_print(int)
attribuisci = true; attribuisci = true;
if (_nuovicriteri && !attribuisci && (m_bonus > 0 || m_anni > 0)) // se uso nuovi criteri e non ne ha diritto col vecchio sistema quardo se ne ha diritto con i nuovi criteri if (_nuovicriteri && !attribuisci && (m_bonus > 0 || m_anni > 0)) // se uso nuovi criteri e non ne ha diritto col vecchio sistema quardo se ne ha diritto con i nuovi criteri
{ {
const int anniisc = (_dataela - dataisc)/360; const int anniisc = int((_dataela - dataisc)/360.25);
attribuisci = (numdon >= m_bonus) && (anniisc >= m_anni); attribuisci = (numdon >= m_bonus) && (anniisc >= m_anni);
} }
if (attribuisci && solodim) if (attribuisci && solodim)
{ {
const TString16 cat = sog.get(SOG_CATDON); const TString4 cat = sog.get(SOG_CATDON);
attribuisci = cache().get("CTD", cat).get_bool("B0"); attribuisci = cache().get("CTD", cat).get_bool("B0");
} }
if (attribuisci) if (attribuisci)
@ -436,7 +444,7 @@ bool TAttribuzioneBenemerenze::set_print(int)
_benem->zero(); _benem->zero();
_benem->put(BEN_CODICE, codice); _benem->put(BEN_CODICE, codice);
_benem->put(BEN_TIPOBEN, tipoben); _benem->put(BEN_TIPOBEN, tipoben);
_benem->read(); _benem->read();
if (_benem->bad()) if (_benem->bad())
{ {
atropera.zero(); atropera.zero();
@ -457,7 +465,7 @@ bool TAttribuzioneBenemerenze::set_print(int)
TString80 chiave = "131->S0|UPPER(90->COGNOME)|UPPER(90->NOME)"; TString80 chiave = "131->S0|UPPER(90->COGNOME)|UPPER(90->NOME)";
TString80 filtroope = format("131->PROGOPE==%d", _progope); TString80 filtroope = format("131->PROGOPE==%d", _progope);
int curope = add_cursor(new TSorted_cursor(relope, (const char*) chiave, "", 1)); int curope = add_cursor(new TSorted_cursor(relope, (const char*) chiave, "", 1));
current_cursor()->setfilter((const char*) filtroope, TRUE); current_cursor()->setfilter(filtroope, TRUE);
add_file(LF_ATROPERA); add_file(LF_ATROPERA);
add_file(LF_SOGGETTI,LF_ATROPERA); add_file(LF_SOGGETTI,LF_ATROPERA);
reset_print(); reset_print();
@ -538,6 +546,6 @@ bool TAttribuzioneBenemerenze::user_destroy()
int at1200(int argc, char* argv[]) int at1200(int argc, char* argv[])
{ {
TAttribuzioneBenemerenze a; TAttribuzioneBenemerenze a;
a.run(argc, argv, "Attribuzione complessiva"); a.run(argc, argv, TR("Attribuzione complessiva"));
return 0; return 0;
} }