Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            : Stampa Idonei: aggiunta possibilita' di selezionare: chi ha tutte le id., chi ha esclusivamente le id. indicate o chi ha almeno una delle id. indicate, messo totale parziale e finale


git-svn-id: svn://10.65.10.50/trunk@9225 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
cris 2000-10-10 07:58:55 +00:00
parent eac2ab700d
commit 070a402b89
2 changed files with 121 additions and 30 deletions

View File

@ -41,7 +41,7 @@ class TStampaIdonei : public TPrintapp
TDate _data_stampa; TDate _data_stampa;
ts _tipostampa; ts _tipostampa;
TString16 _codsez, _codsot; TString16 _codsez, _codsot;
int _etlarghezza, _etcolonne; int _etlarghezza, _etcolonne, _stampa, _numidon, _contatore, _totale;
static bool filter_func_idonei(const TRelation* rel); static bool filter_func_idonei(const TRelation* rel);
@ -57,6 +57,8 @@ public:
void crea_intestazione(); void crea_intestazione();
void filtra_sezioni(); void filtra_sezioni();
void header_sezione(const TString16 codsez, const TString16 codsot); void header_sezione(const TString16 codsez, const TString16 codsot);
void footer_sezione();
void fine_stampa();
TMask& app_mask() { return *_msk; } TMask& app_mask() { return *_msk; }
TStampaIdonei() : _data_stampa(TODAY), _cognome_nome("",25) {} TStampaIdonei() : _data_stampa(TODAY), _cognome_nome("",25) {}
}; };
@ -67,6 +69,39 @@ TCursor* TEti_idonei_form::cursor() const { return app().current_cursor(); }
TRelation* TEti_idonei_form::relation() const { return cursor()->relation(); } TRelation* TEti_idonei_form::relation() const { return cursor()->relation(); }
void TStampaIdonei::fine_stampa()
{
// stampa totale soggetti a fine stampa
if (_tipostampa==elenco)
{
reset_footer();
TString sep(80);
sep.fill('-');
set_footer(2, (const char *) sep);
if (_totale > 0 && _totale != _contatore)
{
set_footer(3,"TOTALE SOGGETTI STAMPATI %d", _totale);
printer().formfeed();
}
reset_footer();
}
}
void TStampaIdonei::footer_sezione()
{
// stampa totale soggetti appartenenti alla sezione
if (_tipostampa==elenco)
{
reset_footer();
TString sep(80);
sep.fill('-');
set_footer(2, (const char *) sep);
set_footer(3,"TOTALE SOGGETTI STAMPATI %d", _contatore);
printer().formfeed();
reset_footer();
}
}
void TStampaIdonei::filtra_sezioni() void TStampaIdonei::filtra_sezioni()
{ {
const TString16 sezini = _msk->get(F_SEZINI); const TString16 sezini = _msk->get(F_SEZINI);
@ -158,27 +193,43 @@ bool TStampaIdonei::filter_func_idonei(const TRelation * rel)
{ {
TAssoc_array idoneita; TAssoc_array idoneita;
TString16 idonsog = sog.get(SOG_IDON1); TString16 idonsog = sog.get(SOG_IDON1);
if (idonsog.not_empty() && idonsog.ok()) if (idonsog.not_empty())
idoneita.add((const char*) idonsog); idoneita.add((const char*) idonsog);
idonsog = sog.get(SOG_IDON2); idonsog = sog.get(SOG_IDON2);
if (idonsog.not_empty() && idonsog.ok()) if (idonsog.not_empty())
idoneita.add((const char*) idonsog); idoneita.add((const char*) idonsog);
idonsog = sog.get(SOG_IDON3); idonsog = sog.get(SOG_IDON3);
if (idonsog.not_empty() && idonsog.ok()) if (idonsog.not_empty())
idoneita.add((const char*) idonsog); idoneita.add((const char*) idonsog);
idonsog = sog.get(SOG_IDON4); idonsog = sog.get(SOG_IDON4);
if (idonsog.not_empty() && idonsog.ok()) if (idonsog.not_empty())
idoneita.add((const char*) idonsog); idoneita.add((const char*) idonsog);
if (idoneita.items() != 0) if (idoneita.items() != 0)
{ {
if (app()._idon1.not_empty() && app()._idon1.ok()) if (app()._stampa < 2)
filtrato = idoneita.is_key((const char*) app()._idon1); {
if (app()._idon2.not_empty() && app()._idon2.ok()) if (app()._idon1.not_empty())
filtrato = filtrato && idoneita.is_key((const char*) app()._idon2); filtrato = idoneita.is_key((const char*) app()._idon1);
if (app()._idon3.not_empty() && app()._idon3.ok()) if (app()._idon2.not_empty())
filtrato = filtrato && idoneita.is_key((const char*) app()._idon3); filtrato = filtrato && idoneita.is_key((const char*) app()._idon2);
if (app()._idon4.not_empty() && app()._idon4.ok()) if (app()._idon3.not_empty())
filtrato = filtrato && idoneita.is_key((const char*) app()._idon4); filtrato = filtrato && idoneita.is_key((const char*) app()._idon3);
if (app()._idon4.not_empty())
filtrato = filtrato && idoneita.is_key((const char*) app()._idon4);
if (app()._stampa == 1)
filtrato = (filtrato && (app()._numidon == idoneita.items()));
}
else
{
if (app()._idon1.not_empty())
filtrato = idoneita.is_key((const char*) app()._idon1);
if (app()._idon2.not_empty())
filtrato = filtrato || idoneita.is_key((const char*) app()._idon2);
if (app()._idon3.not_empty())
filtrato = filtrato || idoneita.is_key((const char*) app()._idon3);
if (app()._idon4.not_empty())
filtrato = filtrato || idoneita.is_key((const char*) app()._idon4);
}
} }
else else
if (!(app()._idon1.empty() && app()._idon2.empty() && app()._idon3.empty() && app()._idon4.empty())) if (!(app()._idon1.empty() && app()._idon2.empty() && app()._idon3.empty() && app()._idon4.empty()))
@ -202,7 +253,8 @@ bool TStampaIdonei::preprocess_page(int file, int counter)
if ((_codsez!=codsez)||(_codsot!=codsot)) if ((_codsez!=codsez)||(_codsot!=codsot))
{ {
if (_codsez != "**") if (_codsez != "**")
printer().formfeed(); footer_sezione();
_contatore = 0;
_codsez = codsez; _codsez = codsez;
_codsot = codsot; _codsot = codsot;
header_sezione(codsez, codsot); header_sezione(codsez, codsot);
@ -211,15 +263,20 @@ bool TStampaIdonei::preprocess_page(int file, int counter)
if (_tipostampa==etichette) if (_tipostampa==etichette)
if (printer().rows_left() < _form_eti->get_body().height()) if (printer().rows_left() < _form_eti->get_body().height())
printer().formfeed(); printer().formfeed();
_contatore++;
_totale++;
return TRUE; return TRUE;
} }
print_action TStampaIdonei::postprocess_print(int file, int counter) print_action TStampaIdonei::postprocess_print(int file, int counter)
{ {
printer().formfeed(); if (_contatore > 0)
footer_sezione();
fine_stampa();
return NEXT_PAGE; return NEXT_PAGE;
} }
void TStampaIdonei::header_sezione(const TString16 codsez, const TString16 codsot) void TStampaIdonei::header_sezione(const TString16 codsez, const TString16 codsot)
{ {
const TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ); const TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ);
@ -231,7 +288,7 @@ void TStampaIdonei::header_sezione(const TString16 codsez, const TString16 codso
intestazione << codsot; intestazione << codsot;
intestazione << " "; intestazione << " ";
intestazione << densez; intestazione << densez;
if ((densot.ok())&& (densot.not_empty())) if (densot.not_empty())
{ {
intestazione << "/"; intestazione << "/";
intestazione << densot; intestazione << densot;
@ -255,6 +312,8 @@ bool TStampaIdonei::set_print(int m)
_tipostampa = elenco; _tipostampa = elenco;
_codsez = "**"; _codsez = "**";
_codsot = "**"; _codsot = "**";
_contatore = 0;
_totale = 0;
} }
break; break;
case F_ETICHETTE: case F_ETICHETTE:
@ -269,7 +328,7 @@ bool TStampaIdonei::set_print(int m)
filtra_sezioni(); filtra_sezioni();
// filtro per tipo idoneità // filtro per tipo idoneità
_tipoidon = _msk->get(F_TIPO); _tipoidon = _msk->get(F_TIPO);
if (_tipoidon.not_empty() && _tipoidon.ok()) if (_tipoidon.not_empty())
current_cursor()->setfilter(format("STATO == \"%s\"",(const char*)_tipoidon)); current_cursor()->setfilter(format("STATO == \"%s\"",(const char*)_tipoidon));
else else
current_cursor()->setfilter("(TCS->S6 == \"I\") || (TCS->S6 == \"F\")", TRUE); current_cursor()->setfilter("(TCS->S6 == \"I\") || (TCS->S6 == \"F\")", TRUE);
@ -281,23 +340,33 @@ bool TStampaIdonei::set_print(int m)
const TString16 catqua = _msk->get(F_CAT4); const TString16 catqua = _msk->get(F_CAT4);
const TString16 catqui = _msk->get(F_CAT5); const TString16 catqui = _msk->get(F_CAT5);
const TString16 catses = _msk->get(F_CAT6); const TString16 catses = _msk->get(F_CAT6);
if (catpri.not_empty() && catpri.ok()) if (catpri.not_empty())
_categorie.add((const char*) catpri); _categorie.add((const char*) catpri);
if (catsec.not_empty() && catsec.ok()) if (catsec.not_empty())
_categorie.add((const char*) catsec); _categorie.add((const char*) catsec);
if (catter.not_empty() && catter.ok()) if (catter.not_empty())
_categorie.add((const char*) catter); _categorie.add((const char*) catter);
if (catqua.not_empty() && catqua.ok()) if (catqua.not_empty())
_categorie.add((const char*) catqua); _categorie.add((const char*) catqua);
if (catqui.not_empty() && catqui.ok()) if (catqui.not_empty())
_categorie.add((const char*) catqui); _categorie.add((const char*) catqui);
if (catses.not_empty() && catses.ok()) if (catses.not_empty())
_categorie.add((const char*) catses); _categorie.add((const char*) catses);
// filtro per idoneita // filtro per idoneita
_idon1 = _msk->get(F_IDON1); _idon1 = _msk->get(F_IDON1);
_idon2 = _msk->get(F_IDON2); _idon2 = _msk->get(F_IDON2);
_idon3 = _msk->get(F_IDON3); _idon3 = _msk->get(F_IDON3);
_idon4 = _msk->get(F_IDON4); _idon4 = _msk->get(F_IDON4);
_stampa = _msk->get_int(F_STAMPA);
_numidon = 0;
if (_idon1.not_empty())
_numidon++;
if (_idon2.not_empty())
_numidon++;
if (_idon3.not_empty())
_numidon++;
if (_idon4.not_empty())
_numidon++;
current_cursor()->set_filterfunction(filter_func_idonei); current_cursor()->set_filterfunction(filter_func_idonei);
reset_print(); reset_print();
crea_intestazione(); crea_intestazione();
@ -314,7 +383,7 @@ void TStampaIdonei::crea_intestazione()
{ {
TString sep(80); TString sep(80);
sep = "ELENCO IDONEI"; sep = "ELENCO IDONEI";
if ((_tipoidon.ok()) && (_tipoidon.not_empty())) if (_tipoidon.not_empty())
{ {
sep << ": tipo "; sep << ": tipo ";
sep << _tipoidon; sep << _tipoidon;
@ -322,25 +391,37 @@ void TStampaIdonei::crea_intestazione()
sep << " "; sep << " ";
sep << dtipo; sep << dtipo;
} }
if ((_idon1.ok()) && (_idon1.not_empty())) if (_idon1.not_empty())
{ {
sep << " per "; sep << " per ";
sep << _idon1; sep << _idon1;
} }
if ((_idon2.ok()) && (_idon2.not_empty())) if (_idon2.not_empty())
{ {
sep << " "; sep << " ";
sep << _idon2; sep << _idon2;
} }
if ((_idon3.ok()) && (_idon3.not_empty())) if (_idon3.not_empty())
{ {
sep << " "; sep << " ";
sep << _idon3; sep << _idon3;
} }
if ((_idon4.ok()) && (_idon4.not_empty())) if (_idon4.not_empty())
{ {
sep << " "; sep << " ";
sep << _idon4; sep << _idon4;
}
switch (_stampa)
{
case 0:
sep << " - Tutte queste idon.";
break;
case 1:
sep << " - Esclusivamente queste idon.";
break;
case 2:
sep << " - Almeno una idon.";
break;
} }
sep.center_just(); sep.center_just();
set_header(2, "@0g%s", (const char*) sep); set_header(2, "@0g%s", (const char*) sep);
@ -355,6 +436,7 @@ void TStampaIdonei::crea_intestazione()
set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gData stato@60gIdon.@66g SI@70gUltima don."); set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gData stato@60gIdon.@66g SI@70gUltima don.");
set_header(5,"@0gTessera@38gGruppo Rh@49g Stato@66g AF"); set_header(5,"@0gTessera@38gGruppo Rh@49g Stato@66g AF");
set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g----------@60g-- --@66g---@70g----------"); set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g----------@60g-- --@66g---@70g----------");
printer().footerlen(3);
} }
} }

View File

@ -265,7 +265,7 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
GROUPBOX DLG_NULL 77 5 GROUPBOX DLG_NULL 77 6
BEGIN BEGIN
PROMPT 1 10 "Tipo/Esito e tipi idoneita'" PROMPT 1 10 "Tipo/Esito e tipi idoneita'"
END END
@ -375,5 +375,14 @@ BEGIN
PROMPT 52 13 "" PROMPT 52 13 ""
FLAGS "D" FLAGS "D"
END END
LISTBOX F_STAMPA 33
BEGIN
PROMPT 2 14 "Stampa soggetti che hanno "
ITEM "0|Tutte le idon. indicate"
ITEM "1|Esclusivamente le idon. indicate"
ITEM "2|Almeno una delle idon. indicate"
END
ENDPAGE ENDPAGE
ENDMASK ENDMASK