diff --git a/at/at4900.cpp b/at/at4900.cpp new file mode 100755 index 000000000..ebf6fbbe4 --- /dev/null +++ b/at/at4900.cpp @@ -0,0 +1,477 @@ +#include +#include +#include +#include + +#include "soggetti.h" +#include "sezioni.h" +#include + +#include "at4.h" +#include "at4900a.h" +#include "atlib.h" + +#define ALIAS_LCPDOM 100 +#define ALIAS_TCS 200 + +enum ts { undefined=0, sintetico=1, completo=2, etichette=3, lettere=4 }; + +// definizione form per etichette +class TEti_profess_form : public TForm +{ +public: + + virtual TCursor* cursor() const; + virtual TRelation* relation() const; + TPrint_section& get_body() { return section('B'); } ; + TEti_profess_form(): TForm() {}; + TEti_profess_form(const char* form, const char * code = "", int editlevel = 0, const char* desc = "") + : TForm(form,code,editlevel,desc) {}; + virtual ~TEti_profess_form() {}; +}; + +class TStampaProfess : public TPrintapp +{ + TRelation* _rel; + TMask* _msk; + TEti_profess_form* _form_eti; + TEti_profess_form* _form_let; + TAssoc_array _categorie; + TParagraph_string _cognome_nome, _dencom; + TDate _data_stampa; + ts _tipostampa; + TString16 _codsez, _codsot; + int _etlarghezza, _etcolonne, _contatore, _totale; + TString16 _condocc, _posprof, _ramoatt, _profess, _luogolav; + + static bool filter_func_profess(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; } + TStampaProfess() : _data_stampa(TODAY), _cognome_nome("",25), _dencom("",30) {} +}; + +HIDDEN inline TStampaProfess& app() { return (TStampaProfess&) main_app(); } + +TCursor* TEti_profess_form::cursor() const { return app().current_cursor(); } + +TRelation* TEti_profess_form::relation() const { return cursor()->relation(); } + +void TStampaProfess::fine_stampa() +{ + // stampa totale soggetti a fine stampa + if (_tipostampa==sintetico || _tipostampa==completo) + { + 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 TStampaProfess::footer_sezione() +{ + // stampa totale soggetti appartenenti alla sezione + if (_tipostampa==sintetico || _tipostampa==completo) + { + 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 TStampaProfess::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 TStampaProfess::set_page(int file, int cnt) +{ + // costruzione etichette + switch (_tipostampa) + { + case etichette: + { + TPrint_section& corpo = _form_eti->get_body(); + corpo.update(); + for (word i = 0; i < corpo.height(); i++) + { + TPrintrow& riga = corpo.row(i); + set_row(i+1,riga); + } + force_setpage(TRUE); // serve perchè alla prossima etichetta rifaccia la setpage + // altrimenti stampa sempre la stessa etichetta + } + break; + case lettere: + { + TPrint_section& corpo = _form_let->get_body(); + corpo.update(); + for (word i = 0; i < corpo.height(); i++) + { + TPrintrow& riga = corpo.row(i); + set_row(i+1,riga); + } + force_setpage(TRUE); // serve perchè alla prossima etichetta rifaccia la setpage + // altrimenti stampa sempre la stessa etichetta + } + break; + case sintetico: + { + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); + 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(1,"@49g@6,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS)); + set_row(1,"@56g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON)); + set_row(1,"@67g@S", FLD(LF_SOGGETTI,SOG_TIPOULTDON)); + set_row(2,""); + } + break; + case completo: + { + set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); + set_row(2,"@0g@8,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS)); + set_row(3,"@0g@8,rs", FLD(LF_SOGGETTI,SOG_CATDON)); + + set_row(1,"@9g@S",FLD(LF_SOGGETTI,SOG_COGNOME)); + set_row(2,"@9g@S",FLD(LF_SOGGETTI,SOG_NOME)); + set_row(3,"@9g@ld", FLD(LF_SOGGETTI,SOG_DATANASC)); + + set_row(1,"@35g@S", FLD(LF_SOGGETTI,SOG_DOM_INDIR)); + set_row(2,"@35g#a", &_dencom); + + set_row(1,"@66g@S", FLD(LF_SOGGETTI,SOG_TELABI)); + set_row(2,"@66g@S", FLD(LF_SOGGETTI,SOG_TELLAV)); + set_row(3,"@66g@S", FLD(LF_SOGGETTI,SOG_TELALT)); + + set_row(1,"@82gGr @S", FLD(LF_SOGGETTI,SOG_GRUPPOAB0)); + set_row(2,"@82gRh @S", FLD(LF_SOGGETTI,SOG_RHANTID)); + set_row(3,"@82gFe @S", FLD(LF_SOGGETTI,SOG_FENOTIPORH)); + set_row(4,"@82gKe @S", FLD(LF_SOGGETTI,SOG_KELL)); + set_row(5,"@82gDu @S", FLD(LF_SOGGETTI,SOG_DU)); + + set_row(1,"@94g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON)); + set_row(2,"@94g@S", FLD(LF_SOGGETTI,SOG_TIPOULTDON)); + set_row(4,"@94g@pn", FLD(LF_SOGGETTI,SOG_TOTDON)); + + set_row(6,""); + } + break; + } +} + +bool TStampaProfess::filter_func_profess(const TRelation* rel) +{ + bool filtrato = TRUE; + TRectype recsog = rel->lfile().curr(); + // filtro per categorie + TAssoc_array& categorie = app()._categorie; + if (categorie.items() != 0) + { + const TString16 cat = recsog.get(SOG_CATDON); + filtrato = categorie.is_key((const char*) cat); + } + return filtrato; +} + +bool TStampaProfess::preprocess_page(int file, int counter) +{ + if ((_tipostampa==sintetico) || (_tipostampa==completo)) + { + TRectype& recsog = current_cursor()->curr(); + TString80 nome = recsog.get(SOG_COGNOME); + nome << ' '; + nome << recsog.get(SOG_NOME); + _cognome_nome = nome; + TString256 localita = ""; + localita << recsog.get(SOG_DOM_CAP); + localita << ' '; + if (recsog.get(SOG_DOM_CODLOC).not_empty()) + localita << current_cursor()->curr(-ALIAS_LCPDOM).get("S0"); + else + localita << current_cursor()->curr(LF_COMUNI).get(COM_DENCOM); + localita << ' ' << current_cursor()->curr(LF_COMUNI).get(COM_PROVCOM); + localita.trim(); + _dencom = localita; + // 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 TStampaProfess::postprocess_print(int file, int counter) +{ + if (_contatore > 0) + footer_sezione(); + fine_stampa(); + return NEXT_PAGE; +} + +void TStampaProfess::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(132); + intestazione = "Sezione: "; + intestazione << codsez; + if (codsot.not_empty()) + { + 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 TStampaProfess::set_print(int m) +{ + TPrinter& p = printer(); + p.read_configuration(); + _tipostampa = undefined; + KEY tasto; + tasto = _msk->run(); + switch (tasto) + { + case F_SINTETICO: + { + _tipostampa = sintetico; + _codsez = _codsot = "**"; + _contatore = 0; + _totale = 0; + } + break; + case F_COMPLETO: + { + _tipostampa = completo; + _codsez = _codsot = "**"; + _contatore = 0; + _totale = 0; + } + break; + case F_ETICHETTE: + _tipostampa = (configura_stampante(p, "AT_ETICHETTE", "etichette")) ? etichette : undefined; + break; + case F_LETTERE: + _tipostampa = lettere; + break; + } + if (_tipostampa != undefined) + { + reset_files(); + add_file(LF_SOGGETTI); + // filtro per sezioni selezionate + filtra_sezioni(); + _condocc = _msk->get(F_CONDOCC); + _posprof = _msk->get(F_POSPROF); + _ramoatt = _msk->get(F_RAMOATT); + _profess = _msk->get(F_PROFESS); + _luogolav = _msk->get(F_LUOGOLAV); + TString256 filtro = ""; + TString80 filtrotmp =""; + // filtro per condocc + if (_condocc.not_empty()) + filtro.format("(CONDOCC == \"%s\")",(const char*)_condocc); + // filtro per posprof + if (_posprof.not_empty()) + { + filtrotmp.format("(POSPROF == \"%s\")",(const char*)_posprof); + if (filtro.not_empty()) + filtro << " && "; + filtro << filtrotmp; + } + // filtro per ramoatt + if (_ramoatt.not_empty()) + { + filtrotmp.format("(RAMOATT == \"%s\")",(const char*)_ramoatt); + if (filtro.not_empty()) + filtro << " && "; + filtro << filtrotmp; + } + // filtro per profess + if (_profess.not_empty()) + { + filtrotmp.format("(PROFESS == \"%s\")",(const char*)_profess); + if (filtro.not_empty()) + filtro << " && "; + filtro << filtrotmp; + } + // filtro per luogolav + if (_luogolav.not_empty()) + { + filtrotmp.format("(POSPROF == \"%s\")",(const char*)_luogolav); + if (filtro.not_empty()) + filtro << " && "; + filtro << filtrotmp; + } + // 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); + current_cursor()->setfilter(filtro, TRUE); + current_cursor()->set_filterfunction(filter_func_profess); + reset_print(); + crea_intestazione(); + return TRUE; + } + else + return FALSE; +} + +void TStampaProfess::crea_intestazione() +{ + reset_header(); + if (_tipostampa==sintetico || _tipostampa==completo) + { + TString sep(132); + sep = "STAMPA "; + if (_condocc.not_empty()) + sep << "PER COND.OCC. " << _condocc; + if (_posprof.not_empty()) + sep << "PER POS.PROF. " << _posprof; + if (_ramoatt.not_empty()) + sep << "PER RAMO ATT. " << _ramoatt; + if (_profess.not_empty()) + sep << "PER PROFESSIONE " << _profess; + if (_luogolav.not_empty()) + sep << "PER LUOGO LAV. " << _luogolav; + 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, "@120g%s", (const char*) sep); + sep = ""; + sep.fill('-'); + set_header(3, (const char *) sep); + if (_tipostampa==sintetico) + { + sep.fill('-',100); + set_header(4, (const char *) sep); + set_header(5,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gTess.@56gData/Tipo u.d."); + set_header(6,"@0g--------@9g--@12g-------------------------@38g----------@49g------@56g---------- --@70g--------"); + } + else + { + sep.fill('-'); + set_header(4, (const char *) sep); + set_header(5,"@0gCodice@9gCognome@35gIndirizzo@66gTel.abitazione@82gTipiz@94gUlt.donaz."); + set_header(6,"@0gTessera@9gNome@66gTel.lavoro@82gzazione@94gTipo"); + set_header(7,"@0gCateg.@9gData nascita@66gTel.altro"); + set_header(8,"@94gTot.don."); + set_header(10,"@0g--------@9g-------------------------@35g------------------------------@66g--------------@82g------------@94g----------@105g--------"); + } + printer().footerlen(3); + } +} + +bool TStampaProfess::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_LCPDOM); + _rel->add(LF_COMUNI, "COM==DOM_CODCOM"); + _rel->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT"); + add_cursor(new TCursor(_rel,"", 3)); + _msk = new TMask("at4900a"); + TConfig config(CONFIG_STUDIO); + TString16 etformato = config.get("EtFormato"); + _etlarghezza = config.get_int("EtLarghezza"); + _etcolonne = config.get_int("EtColonne"); + _form_eti = new TEti_profess_form(etformato); + _form_let = new TEti_profess_form("ATLETTER"); + return TRUE; +} + +bool TStampaProfess::user_destroy() +{ + delete _form_let; + delete _form_eti; + delete _msk; + delete _rel; + return TRUE; +} + +int at4900(int argc, char* argv[]) +{ + TStampaProfess a; + a.run(argc, argv, "Soggetti selezionabili per dati statistici"); + return 0; +} diff --git a/at/at4900a.h b/at/at4900a.h new file mode 100755 index 000000000..c7693fb9e --- /dev/null +++ b/at/at4900a.h @@ -0,0 +1,38 @@ +// stampa soggetti per dati statistici (vari) +// 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_CONDOCC 301 +#define F_POSPROF 302 +#define F_RAMOATT 303 +#define F_TITSTUD 304 +#define F_PROFESS 305 +#define F_DESC_PROFESS 306 +#define F_LUOGOLAV 307 +#define F_DESC_LUOGOLAV 308 + +#define F_SINTETICO 401 +#define F_COMPLETO 402 +#define F_ETICHETTE 403 +#define F_LETTERE 404 diff --git a/at/at4900a.uml b/at/at4900a.uml new file mode 100755 index 000000000..a0c4ce32b --- /dev/null +++ b/at/at4900a.uml @@ -0,0 +1,370 @@ +#include "at4900a.h" +TOOLBAR "" 0 20 0 2 +BUTTON F_SINTETICO 9 2 +BEGIN + PROMPT -15 -11 "~Sintetico" + MESSAGE EXIT,F_SINTETICO +END + +BUTTON F_COMPLETO 9 2 +BEGIN + PROMPT -25 -11 "~Completo" + MESSAGE EXIT,F_COMPLETO +END + +BUTTON F_ETICHETTE 9 2 +BEGIN + PROMPT -35 -11 "~Etichette" + MESSAGE EXIT,F_ETICHETTE +END + +BUTTON F_LETTERE 9 2 +BEGIN + PROMPT -45 -11 "~Lettere" + MESSAGE EXIT,F_LETTERE +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -55 -11 "" +END +ENDPAGE + +PAGE "Stampa soggetti per dati statistici (vari)" -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 "Opzioni per la stampa" +END + +LISTBOX F_CONDOCC 25 +BEGIN + PROMPT 2 11 "Cond. occ. " + FLAGS "U" +#include "condocc.h" +END + +LISTBOX F_POSPROF 20 +BEGIN + PROMPT 43 11 "Pos. prof. " + FLAGS "U" +#include "posprof.h" +END + +LISTBOX F_RAMOATT 25 +BEGIN + PROMPT 2 12 "Ramo att. " + FLAGS "U" +#include "ramoatt.h" +END + +LISTBOX F_TITSTUD 20 +BEGIN + PROMPT 43 12 "Tit. stud. " + FLAGS "U" +#include "titstud.h" +END + +STRING F_PROFESS 4 +BEGIN + PROMPT 2 13 "Professione " + FLAGS "U" + USE PRF + INPUT CODTAB F_PROFESS + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@40" S0 + OUTPUT F_PROFESS CODTAB + OUTPUT F_DESC_PROFESS S0 + CHECKTYPE NORMAL + WARNING "Codice professione non presente" + HELP "Professione" +END + +STRING F_DESC_PROFESS 40 +BEGIN + PROMPT 21 13 "" + FLAGS "U" + USE PRF KEY 2 + INPUT S0 F_DESC_PROFESS + DISPLAY "Descrizione@40" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT F_PROFESS + CHECKTYPE NORMAL + WARNING "Professione non presente" + HELP "Professione" +END + +STRING F_LUOGOLAV 4 +BEGIN + PROMPT 2 14 "Luogo lav. " + FLAGS "U" + USE LDL + INPUT CODTAB F_LUOGOLAV + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@40" S0 + OUTPUT F_LUOGOLAV CODTAB + OUTPUT F_DESC_LUOGOLAV S0 + CHECKTYPE NORMAL + WARNING "Codice luogo di lavoro non presente" + HELP "Luogo di lavoro" +END + +STRING F_DESC_LUOGOLAV 40 +BEGIN + PROMPT 21 14 "" + FLAGS "U" + USE LDL KEY 2 + INPUT S0 F_DESC_LUOGOLAV + DISPLAY "Descrizione@40" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT F_LUOGOLAV + OUTPUT F_LUOGOLAV CODTAB + CHECKTYPE NORMAL + WARNING "Luogo di lavoro non presente" + HELP "Luogo di lavoro" +END + +ENDPAGE +ENDMASK