From badb0c323149d73fc555afdc9a5615efa378100e Mon Sep 17 00:00:00 2001 From: cris Date: Mon, 29 Nov 2004 14:11:47 +0000 Subject: [PATCH] Patch level : 1.7 at Files correlati : at5.exe at5600a.msk Ricompilazione Demo : [ ] Commento : aggiunta stampa disponibili in aferesi git-svn-id: svn://10.65.10.50/trunk@12517 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- at/at5.cpp | 4 +- at/at5.h | 1 + at/at5600.cpp | 431 +++++++++++++++++++++++++++++++++++++++++++++++++ at/at5600a.h | 33 ++++ at/at5600a.uml | 324 +++++++++++++++++++++++++++++++++++++ 5 files changed, 792 insertions(+), 1 deletion(-) create mode 100755 at/at5600.cpp create mode 100755 at/at5600a.h create mode 100755 at/at5600a.uml diff --git a/at/at5.cpp b/at/at5.cpp index cc88478f6..991fc4d4a 100755 --- a/at/at5.cpp +++ b/at/at5.cpp @@ -4,7 +4,7 @@ #include "at5.h" -#define usage "Error - usage : %s -[0|1|2|3|4]" +#define usage "Error - usage : %s -[0|1|2|4|5]" int main(int argc, char** argv) { @@ -23,6 +23,8 @@ int main(int argc, char** argv) //rt = at5400(argc, argv); break; case 4: rt = at5500(argc, argv); break; + case 5: + rt = at5600(argc, argv); break; default: error_box(usage, argv[0]) ; rt = 1; break; } diff --git a/at/at5.h b/at/at5.h index 3106670af..eb6375a3a 100755 --- a/at/at5.h +++ b/at/at5.h @@ -6,6 +6,7 @@ int at5200(int argc, char* argv[]); // situazione sanitaria int at5300(int argc, char* argv[]); // turni per controlli //int at5400(int argc, char* argv[]); // stampa di controllo donazioni int at5500(int argc, char* argv[]); // stampa scadenze per controlli +int at5600(int argc, char* argv[]); // stampa disponibilita aferesi #endif // __AT5_H diff --git a/at/at5600.cpp b/at/at5600.cpp new file mode 100755 index 000000000..1aea6ffb9 --- /dev/null +++ b/at/at5600.cpp @@ -0,0 +1,431 @@ +#include +#include +#include +#include + +#include "soggetti.h" +#include "sezioni.h" + +#include "at5.h" +#include "at5600a.h" +#include "atlib.h" + +#define ALIAS_LCP 100 +#define ALIAS_TCS 200 + +enum ts { undefined = 0, elenco = 1, etichette = 2 }; + +// definizione form per etichette +class TEti_disponibili_form : public TForm +{ +public: + + virtual TCursor* cursor() const; + virtual TRelation* relation() const; + TPrint_section& get_body() { return section('B'); } ; + TEti_disponibili_form(): TForm() {}; + TEti_disponibili_form(const char* form, const char * code = "", int editlevel = 0, const char* desc = "") + : TForm(form,code,editlevel,desc) {}; + virtual ~TEti_disponibili_form() {}; +}; + +class StampaDisponibili : public TPrintapp +{ + TRelation* _rel; + TMask* _msk; + TEti_disponibili_form* _form_eti; + TAssoc_array _categorie; + TString16 _disp1, _disp2; + TParagraph_string _cognome_nome; + TDate _data_stampa; + ts _tipostampa; + TString16 _codsez, _codsot; + int _etlarghezza, _etcolonne, _stampa, _numdisp, _contatore, _totale; + + static bool filter_func_disponibili(const TRelation* rel); + +protected: + virtual bool user_create(); + virtual bool user_destroy(); + virtual bool set_print(int m); + virtual void set_page(int file, int cnt); + virtual bool preprocess_page(int file, int counter); + virtual print_action postprocess_print(int file, int counter); + +public: + void crea_intestazione(); + void filtra_sezioni(); + void header_sezione(const TString16 codsez, const TString16 codsot); + void footer_sezione(); + void fine_stampa(); + TMask& app_mask() { return *_msk; } + StampaDisponibili() : _data_stampa(TODAY), _cognome_nome("",25) {} +}; + +HIDDEN inline StampaDisponibili& app() { return (StampaDisponibili&) main_app(); } + +TCursor* TEti_disponibili_form::cursor() const { return app().current_cursor(); } + +TRelation* TEti_disponibili_form::relation() const { return cursor()->relation(); } + +void StampaDisponibili::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 StampaDisponibili::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 StampaDisponibili::filtra_sezioni() +{ + const TString16 sezini = _msk->get(F_SEZINI); + const TString16 sotini = _msk->get(F_SOTINI); + const TString16 sezfin = _msk->get(F_SEZFIN); + const TString16 sotfin = _msk->get(F_SOTFIN); + TRectype da(LF_SOGGETTI); + TRectype a(LF_SOGGETTI); + if (sezini.not_empty()) + da.put(SOG_CODSEZ, sezini); + if (sotini.not_empty()) + da.put(SOG_CODSOT, sotini); + if (sezfin.not_empty()) + a.put(SOG_CODSEZ, sezfin); + if (sotfin.not_empty()) + a.put(SOG_CODSOT, sotfin); + current_cursor()->setregion(da, a); +} + +void StampaDisponibili::set_page(int file, int cnt) +{ + // costruzione etichette + switch (_tipostampa) + { + case etichette: + { + TPrint_section& corpo = _form_eti->get_body(); + for (int r=1;r<=_etcolonne;r++) + { + if (current_cursor()->pos()items()) + { + force_setpage(TRUE); + corpo.update(); + for (word i = 0; i < corpo.height(); i++) + { + TPrintrow& riga = corpo.row(i); + TString256 riga1 = riga.row(); + riga1.cut(_etlarghezza); + int colonna = ((r-1)*_etlarghezza); + TString16 formato; + formato << '@' << colonna << "g"; + riga1.insert(formato,0); + set_row(i+1,riga1); + } + if (r < _etcolonne) + ++(*current_cursor()); + } + } + } + break; + case elenco: + { + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); + set_row(2,"@0g@8,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS)); + set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON)); + set_row(1,"@12g#a", &_cognome_nome); + set_row(1,"@38g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); + set_row(2,"@38g@S", FLD(LF_SOGGETTI,SOG_GRUPPOAB0)); + set_row(2,"@45g@S", FLD(LF_SOGGETTI,SOG_RHANTID)); + set_row(1,"@49g@ld", FLD(LF_SOGGETTI,SOG_DATASTATO)); // potremmo mettere anche datastato + set_row(1,"@60g@S", FLD(LF_SOGGETTI,SOG_IDON1)); + set_row(1,"@63g@S", FLD(LF_SOGGETTI,SOG_IDON2)); + set_row(2,"@60g@S", FLD(LF_SOGGETTI,SOG_IDON3)); + set_row(2,"@63g@S", FLD(LF_SOGGETTI,SOG_IDON4)); + set_row(2,"@52g@S", FLD(LF_SOGGETTI,SOG_STATO)); + set_row(1,"@66g@pn", FLD(LF_SOGGETTI,SOG_INTSI,"###")); + set_row(2,"@66g@pn", FLD(LF_SOGGETTI,SOG_INTAF,"###")); + set_row(1,"@70g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON)); + set_row(2,"@73g@S", FLD(LF_SOGGETTI,SOG_TIPOULTDON)); + set_row(1,"@82g@S", FLD(LF_SOGGETTI,SOG_DISP_AF_1)); + set_row(2,"@82g@S", FLD(LF_SOGGETTI,SOG_DISP_AF_2)); + set_row(3,""); + } + break; + } +} + +bool StampaDisponibili::filter_func_disponibili(const TRelation * rel) +{ + bool filtrato = TRUE; + TLocalisamfile& sog = rel->lfile(); + // filtro per categorie + TAssoc_array& categorie = app()._categorie; + if (categorie.items() != 0) + { + const TString16 catsog = sog.get(SOG_CATDON); + filtrato = categorie.is_key((const char*) catsog); + } + // filtro per disponibilita + if (filtrato) + { + TAssoc_array disponibilita; + TString16 dispsog = sog.get(SOG_DISP_AF_1); + if (dispsog.not_empty()) + disponibilita.add((const char*) dispsog); + dispsog = sog.get(SOG_DISP_AF_2); + if (dispsog.not_empty()) + disponibilita.add((const char*) dispsog); + if (disponibilita.items() != 0) + { + if (app()._stampa < 2) + { + if (app()._disp1.not_empty()) + filtrato = disponibilita.is_key((const char*) app()._disp1); + if (app()._disp2.not_empty()) + filtrato = filtrato && disponibilita.is_key((const char*) app()._disp2); + if (app()._stampa == 1) + filtrato = (filtrato && (app()._numdisp == disponibilita.items())); + } + else + { + if (app()._disp1.not_empty()) + filtrato = disponibilita.is_key((const char*) app()._disp1); + if (app()._disp2.not_empty()) + filtrato = filtrato || disponibilita.is_key((const char*) app()._disp2); + } + } + else + if (!(app()._disp1.empty() && app()._disp2.empty())) + filtrato = FALSE; + } + return filtrato; +} + +bool StampaDisponibili::preprocess_page(int file, int counter) +{ + if (_tipostampa == elenco) + { + TRectype& recsog = current_cursor()->curr(); + TString80 nome = recsog.get(SOG_COGNOME); + nome << " "; + nome << recsog.get(SOG_NOME); + _cognome_nome = nome; + // salto pagina se cambio sezione + const TString16 codsez = recsog.get(SOG_CODSEZ); + const TString16 codsot = recsog.get(SOG_CODSOT); + if ((_codsez!=codsez)||(_codsot!=codsot)) + { + if (_codsez != "**") + footer_sezione(); + _contatore = 0; + _codsez = codsez; + _codsot = codsot; + header_sezione(codsez, codsot); + } + } + if (_tipostampa==etichette) + if (printer().rows_left() < _form_eti->get_body().height()) + printer().formfeed(); + _contatore++; + _totale++; + return TRUE; +} + +print_action StampaDisponibili::postprocess_print(int file, int counter) +{ + if (_contatore > 0) + footer_sezione(); + fine_stampa(); + return NEXT_PAGE; +} + + +void StampaDisponibili::header_sezione(const TString16 codsez, const TString16 codsot) +{ + const TString80 densez = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSEZ); + const TString80 densot = current_cursor()->curr(LF_SEZIONI).get(SEZ_DENSOT); + TString intestazione(80); + intestazione = "Sezione: "; + intestazione << codsez; + intestazione << "/"; + intestazione << codsot; + intestazione << " "; + intestazione << densez; + if (densot.not_empty()) + { + intestazione << "/"; + intestazione << densot; + } + intestazione.center_just(); + set_header(1,"@0g%s", (const char*) intestazione); + return; +} + +bool StampaDisponibili::set_print(int m) +{ + TPrinter& p = printer(); + p.read_configuration(); + _tipostampa = undefined; + KEY tasto; + tasto = _msk->run(); + switch (tasto) + { + case F_ELENCO: + { + _tipostampa = elenco; + _codsez = "**"; + _codsot = "**"; + _contatore = 0; + _totale = 0; + } + break; + case F_ETICHETTE: + _tipostampa = (configura_stampante(p, "AT_ETICHETTE", "etichette")) ? etichette : undefined; + break; + } + if (_tipostampa != undefined) + { + reset_files(); + add_file(LF_SOGGETTI); + // filtro per sezioni selezionati + filtra_sezioni(); + // filtro per categorie + _categorie.destroy(); + const TString16 catpri = _msk->get(F_CAT1); + const TString16 catsec = _msk->get(F_CAT2); + const TString16 catter = _msk->get(F_CAT3); + const TString16 catqua = _msk->get(F_CAT4); + const TString16 catqui = _msk->get(F_CAT5); + const TString16 catses = _msk->get(F_CAT6); + if (catpri.not_empty()) + _categorie.add((const char*) catpri); + if (catsec.not_empty()) + _categorie.add((const char*) catsec); + if (catter.not_empty()) + _categorie.add((const char*) catter); + if (catqua.not_empty()) + _categorie.add((const char*) catqua); + if (catqui.not_empty()) + _categorie.add((const char*) catqui); + if (catses.not_empty()) + _categorie.add((const char*) catses); + // filtro per disponibilita + _disp1 = _msk->get(F_DISP1); + _disp2 = _msk->get(F_DISP2); + _stampa = _msk->get_int(F_STAMPA); + _numdisp = 0; + if (_disp1.not_empty()) + _numdisp++; + if (_disp2.not_empty()) + _numdisp++; + current_cursor()->set_filterfunction(filter_func_disponibili); + reset_print(); + crea_intestazione(); + return TRUE; + } + else + return FALSE; +} + +void StampaDisponibili::crea_intestazione() +{ + reset_header(); + if (_tipostampa == elenco) + { + TString sep(86); + sep = "ELENCO DISPONIBILI"; + if (_disp1.not_empty()) + { + sep << " per "; + sep << _disp1; + } + if (_disp2.not_empty()) + { + sep << " "; + sep << _disp2; + } + switch (_stampa) + { + case 0: + sep << " - Tutte queste disp."; + break; + case 1: + sep << " - Esclusivamente queste disp."; + break; + case 2: + sep << " - Almeno una disp."; + break; + } + sep.center_just(); + set_header(2, "@0g%s", (const char*) sep); + const TString16 data_stampa = _data_stampa.string(); + set_header(2,"@0g%10s", (const char*) data_stampa); + sep = ""; + sep << "Pag. @#"; + set_header(2, "@70g%s", (const char*) sep); + sep = ""; + sep.fill('-'); + set_header(3, (const char *) sep); + set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gData stato@60gIdon.@66g SI@70gUltima don.@81gDisp."); + set_header(5,"@0gTessera@38gGruppo Rh@49g Stato@66g AF"); + set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g----------@60g-- --@66g---@70g----------@81g-----"); + printer().footerlen(3); + } +} + +bool StampaDisponibili::user_create() +{ + _rel = new TRelation(LF_SOGGETTI); + //_rel->add("TCS", "CODTAB==STATO",1,0,ALIAS_TCS); + _rel->add("LCP", "CODTAB==DOM_CODLOC",1,0,ALIAS_LCP); + _rel->add(LF_COMUNI, "COM==DOM_CODCOM"); + _rel->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT"); + add_cursor(new TCursor(_rel, "", 3)); + _msk = new TMask("at5600a"); + + TConfig config(CONFIG_STUDIO); + TString16 etformato = config.get("EtFormato"); + _etlarghezza = config.get_int("EtLarghezza"); + _etcolonne = config.get_int("EtColonne"); + _form_eti = new TEti_disponibili_form(etformato); + return TRUE; +} + +bool StampaDisponibili::user_destroy() +{ + delete _form_eti; + delete _msk; + delete _rel; + return TRUE; +} + +int at5600(int argc, char* argv[]) +{ + StampaDisponibili a; + a.run(argc, argv, "Soggetti disponibili per aferesi"); + return 0; +} diff --git a/at/at5600a.h b/at/at5600a.h new file mode 100755 index 000000000..6fb68c837 --- /dev/null +++ b/at/at5600a.h @@ -0,0 +1,33 @@ +// stampa soggetti disponibili alla donazione in aferesi +// definizione campi per maschera di selezione + +#define F_SEZINI 101 +#define F_D_SEZINI 102 +#define F_SOTINI 103 +#define F_D_SOTINI 104 +#define F_SEZFIN 105 +#define F_D_SEZFIN 106 +#define F_SOTFIN 107 +#define F_D_SOTFIN 108 + +#define F_CAT1 201 +#define F_D_CAT1 202 +#define F_CAT2 203 +#define F_D_CAT2 204 +#define F_CAT3 205 +#define F_D_CAT3 206 +#define F_CAT4 207 +#define F_D_CAT4 208 +#define F_CAT5 209 +#define F_D_CAT5 210 +#define F_CAT6 211 +#define F_D_CAT6 212 + +#define F_DISP1 301 +#define F_DISP2 302 +#define F_D_DISP1 303 +#define F_D_DISP2 304 +#define F_STAMPA 305 + +#define F_ELENCO 401 +#define F_ETICHETTE 402 diff --git a/at/at5600a.uml b/at/at5600a.uml new file mode 100755 index 000000000..f03ff3b5d --- /dev/null +++ b/at/at5600a.uml @@ -0,0 +1,324 @@ +#include "at5600a.h" + +TOOLBAR "" 0 20 0 2 + +BUTTON F_ELENCO 9 2 +BEGIN + PROMPT -13 -11 "E~lenco" + MESSAGE EXIT,F_ELENCO +END + +BUTTON F_ETICHETTE 9 2 +BEGIN + PROMPT -23 -11 "~Etichette" + MESSAGE EXIT,F_ETICHETTE +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -33 -11 "" +END + +ENDPAGE + +PAGE "Stampa soggetti disponibili per aferesi" -1 -1 78 20 + +GROUPBOX DLG_NULL 77 4 +BEGIN + PROMPT 1 1 "Scelta sezioni/sottogruppi" +END + +STRING F_SEZINI 2 +BEGIN + PROMPT 2 2 "Da " + FLAGS "U" + USE LF_SEZIONI + INPUT CODSEZ F_SEZINI + INPUT CODSOT F_SOTINI + DISPLAY "Cod.sez" CODSEZ + DISPLAY "Cod.sot." CODSOT + DISPLAY "Sezione@25" DENSEZ + DISPLAY "Sottogruppo@25" DENSOT + OUTPUT F_SEZINI CODSEZ + OUTPUT F_D_SEZINI DENSEZ + OUTPUT F_SOTINI CODSOT + OUTPUT F_D_SOTINI DENSOT + CHECKTYPE SEARCH + HELP "Codice sezione da cui partire" +END + +STRING F_D_SEZINI 25 +BEGIN + PROMPT 11 2 "" + FLAGS "U" + USE LF_SEZIONI KEY 2 + INPUT DENSEZ F_D_SEZINI + DISPLAY "Sezione@25" DENSEZ + DISPLAY "Sottogruppo@25" DENSOT + DISPLAY "Cod.sez" CODSEZ + DISPLAY "Cod.sot." CODSOT + COPY OUTPUT F_SEZINI + CHECKTYPE NORMAL + HELP "Sezione da cui partire" +END + +STRING F_SOTINI 2 +BEGIN + PROMPT 2 3 " " + COPY ALL F_SEZINI + CHECKTYPE SEARCH + HELP "Codice sottogruppo da cui partire" +END + +STRING F_D_SOTINI 25 +BEGIN + PROMPT 11 3 "" + FLAGS "U" + COPY USE F_D_SEZINI + INPUT DENSEZ F_D_SEZINI + INPUT DENSOT F_D_SOTINI + COPY DISPLAY F_D_SEZINI + COPY OUTPUT F_D_SEZINI + CHECKTYPE NORMAL + HELP "Sottogruppo da cui partire" +END + +STRING F_SEZFIN 2 +BEGIN + PROMPT 41 2 "A " + FLAGS "U" + USE LF_SEZIONI + INPUT CODSEZ F_SEZFIN + INPUT CODSOT F_SOTFIN + DISPLAY "Cod.sez" CODSEZ + DISPLAY "Cod.sot." CODSOT + DISPLAY "Sezione@25" DENSEZ + DISPLAY "Sottogruppo@25" DENSOT + OUTPUT F_SEZFIN CODSEZ + OUTPUT F_D_SEZFIN DENSEZ + OUTPUT F_SOTFIN CODSOT + OUTPUT F_D_SOTFIN DENSOT + CHECKTYPE SEARCH + HELP "Codice sezione finale" +END + +STRING F_D_SEZFIN 25 +BEGIN + PROMPT 49 2 "" + FLAGS "U" + USE LF_SEZIONI KEY 2 + INPUT DENSEZ F_D_SEZFIN + DISPLAY "Sezione@25" DENSEZ + DISPLAY "Sottogruppo@25" DENSOT + DISPLAY "Cod.sez" CODSEZ + DISPLAY "Cod.sot." CODSOT + COPY OUTPUT F_SEZFIN + CHECKTYPE NORMAL + HELP "Sezione finale" +END + +STRING F_SOTFIN 2 +BEGIN + PROMPT 41 3 " " + COPY ALL F_SEZFIN + CHECKTYPE SEARCH + HELP "Codice sottogruppo finale" +END + +STRING F_D_SOTFIN 25 +BEGIN + PROMPT 49 3 "" + FLAGS "U" + COPY USE F_D_SEZFIN + INPUT DENSEZ F_D_SEZFIN + INPUT DENSOT F_D_SOTFIN + COPY DISPLAY F_D_SEZFIN + COPY OUTPUT F_D_SEZFIN + CHECKTYPE NORMAL + HELP "Sottogruppo finale" +END + +GROUPBOX DLG_NULL 77 5 +BEGIN + PROMPT 1 5 "Categorie" +END + + +STRING F_CAT1 2 +BEGIN + PROMPT 2 6 "" + FLAGS "U" + USE CTD + INPUT CODTAB F_CAT1 + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@30" S0 + OUTPUT F_CAT1 CODTAB + OUTPUT F_D_CAT1 S0 + CHECKTYPE NORMAL + WARNING "Codice non presente" + HELP "Categoria di appartenenza" +END + +STRING F_D_CAT1 30 +BEGIN + PROMPT 8 6 "" + FLAGS "D" +END + +STRING F_CAT2 2 +BEGIN + PROMPT 2 7 "" + FLAGS "U" + USE CTD + INPUT CODTAB F_CAT2 + COPY DISPLAY F_CAT1 + OUTPUT F_CAT2 CODTAB + OUTPUT F_D_CAT2 S0 + CHECKTYPE NORMAL + WARNING "Codice non presente" + HELP "Categoria di appartenenza" +END + +STRING F_D_CAT2 30 +BEGIN + PROMPT 8 7 "" + FLAGS "D" +END + +STRING F_CAT3 2 +BEGIN + PROMPT 2 8 "" + FLAGS "U" + USE CTD + INPUT CODTAB F_CAT3 + COPY DISPLAY F_CAT1 + OUTPUT F_CAT3 CODTAB + OUTPUT F_D_CAT3 S0 + CHECKTYPE NORMAL + WARNING "Codice non presente" + HELP "Categoria di appartenenza" +END + +STRING F_D_CAT3 30 +BEGIN + PROMPT 8 8 "" + FLAGS "D" +END + +STRING F_CAT4 2 +BEGIN + PROMPT 40 6 "" + FLAGS "U" + USE CTD + INPUT CODTAB F_CAT4 + COPY DISPLAY F_CAT1 + OUTPUT F_CAT4 CODTAB + OUTPUT F_D_CAT4 S0 + CHECKTYPE NORMAL + WARNING "Codice non presente" + HELP "Categoria di appartenenza" +END + +STRING F_D_CAT4 30 +BEGIN + PROMPT 46 6 "" + FLAGS "D" +END + +STRING F_CAT5 2 +BEGIN + PROMPT 40 7 "" + FLAGS "U" + USE CTD + INPUT CODTAB F_CAT5 + COPY DISPLAY F_CAT1 + OUTPUT F_CAT5 CODTAB + OUTPUT F_D_CAT5 S0 + CHECKTYPE NORMAL + WARNING "Codice non presente" + HELP "Categoria di appartenenza" +END + +STRING F_D_CAT5 30 +BEGIN + PROMPT 46 7 "" + FLAGS "D" +END + +STRING F_CAT6 2 +BEGIN + PROMPT 40 8 "" + FLAGS "U" + USE CTD + INPUT CODTAB F_CAT6 + COPY DISPLAY F_CAT1 + OUTPUT F_CAT6 CODTAB + OUTPUT F_D_CAT6 S0 + CHECKTYPE NORMAL + WARNING "Codice non presente" + HELP "Categoria di appartenenza" +END + +STRING F_D_CAT6 30 +BEGIN + PROMPT 46 8 "" + FLAGS "D" +END + +GROUPBOX DLG_NULL 77 6 +BEGIN + PROMPT 1 10 "Disponibilita'" +END + +STRING F_DISP1 2 +BEGIN + PROMPT 2 11 "" + FLAGS "U" + USE IDO + INPUT CODTAB F_DISP1 + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@30" S0 + OUTPUT F_DISP1 CODTAB + OUTPUT F_D_DISP1 S0 + CHECKTYPE NORMAL + WARNING "Codice non presente" + HELP "Idoneita' alla donazione" +END + +STRING F_DISP2 2 +BEGIN + PROMPT 2 12 "" + FLAGS "U" + USE IDO + INPUT CODTAB F_DISP2 + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@30" S0 + OUTPUT F_DISP2 CODTAB + OUTPUT F_D_DISP2 S0 + CHECKTYPE NORMAL + WARNING "Codice non presente" + HELP "Idoneita' alla donazione" +END + +STRING F_D_DISP1 50 +BEGIN + PROMPT 7 11 "" + FLAGS "D" +END + +STRING F_D_DISP2 50 +BEGIN + PROMPT 7 12 "" + FLAGS "D" +END + +LISTBOX F_STAMPA 40 +BEGIN + PROMPT 2 13 "Stampa soggetti che hanno " + ITEM "0|Tutte le disponibilita' indicate" + ITEM "1|Esclusivamente le disp. indicate" + ITEM "2|Almeno una delle disp. indicate" +END + +ENDPAGE +ENDMASK