#include #include #include #include #include #include #include #include #include #include #include #include #include #include "cg1200a.h" #include "cg1200b.h" #define COMRF_ALIAS 50 #define COMNASC_ALIAS 51 enum pt { undefined = 0, elenco = 1, rubriche = 2, etichette = 3, vendite = 4 }; enum pw { clienti = 1, fornitori = 2, both = 3 }; bool mask2_reset_fields(TMask_field& mf, KEY k); class CG1200_App : public TPrintapp { friend bool mask2_reset_fields(TMask_field& mf, KEY k); pt _pr_type; pw _pr_what; TRelation* _rel; int _cur_1, _cur_2; int _sort; int _interline; bool _mov_only; TLocalisamfile* _mov; TLocalisamfile* _comuni; // etichette int _startrow, _rows_et, _cols_et, _startcol; // variable field slots TString _piva, _cpercip, _fax, _telex, _name, _telefono, _indir, _localita; public: virtual bool preprocess_page(int file, int counter); virtual bool preprocess_print(int file, int counter); virtual print_action postprocess_print(int file, int counter); virtual void user_create(); virtual bool destroy(); virtual bool set_print(int); int ccur() { return _sort == 1 ? _cur_1 : _cur_2; } const char* look_tab(const char* tabname, TString& cod, const char* fld = "S0"); const char* get_field(int ln, const char* fn) { return current_cursor()->curr(ln).get(fn); } virtual void set_page (int file, int counter); void set_elenco(); void set_rubriche(); void set_etichette(); void set_vendite(int f, int c) ; void process_link(int id, const char* txt); CG1200_App() : TPrintapp(),_piva(18), _cpercip(10), _fax(50), _telex(50), _name(60), _telefono(90), _indir(70), _localita(90) { _rel = NULL; _pr_type = undefined; _startrow = 2; _startcol = 3; _rows_et = 9; _cols_et = 40; } }; /* -------------------------------------------------------------------- */ /* ---------------------------- Code ---------------------------------- */ /* -------------------------------------------------------------------- */ void CG1200_App::process_link(int id, const char* txt) { TString ss = "1|"; ss << txt; TMessage fs(cmd2name("cg0","-1"), MSG_LN, ss); TMailbox m; m.send(fs); TExternal_app cg0("cg0 -1"); if (cg0.run()) beep(); } const char* CG1200_App::look_tab(const char* tabname, TString& cod, const char* fld) { TTable tab(tabname); tab.curr().zero(); tab.curr().put("CODTAB",cod); tab.read(); if (tab.bad()) tab.curr().zero(); return tab.curr().get(fld); } bool CG1200_App::preprocess_page(int file, int counter) { TString s; switch (file) { case LF_CLIFO: { if (_mov_only) { const TString16 tipocf(get_field(LF_CLIFO,CLI_TIPOCF)); const TString16 codice(get_field(LF_CLIFO,CLI_CODCF)); _mov->curr().zero(); _mov->curr().put(MOV_TIPO, tipocf); _mov->curr().put(MOV_CODCF, codice); _mov->read(); if (_mov->get(MOV_TIPO) != tipocf || _mov->get(MOV_CODCF) != codice) return FALSE; } // set variable fields _piva = get_field(LF_CLIFO, CLI_COFI); if (_piva.empty()) _piva = get_field(LF_CLIFO, CLI_PAIV); _telefono = get_field(LF_CLIFO, CLI_PTEL); if (!_telefono.empty()) _telefono << "/"; _telefono << get_field(LF_CLIFO, CLI_TEL) << " "; s = get_field(LF_CLIFO, CLI_PTEL2); if (!s.empty()) s << "/"; _telefono << s << get_field(LF_CLIFO, CLI_TEL2) << " "; s = get_field(LF_CLIFO, CLI_PTEL3); if (!s.empty()) s << "/"; _telefono << s << get_field(LF_CLIFO, CLI_TEL3); _fax = get_field(LF_CLIFO, CLI_PFAX); if (!_fax.empty()) _fax << "/"; _fax << get_field(LF_CLIFO, CLI_FAX); _telex = get_field(LF_CLIFO, CLI_PTELEX); if (!_telex.empty()) _telex << "/"; _telex << get_field(LF_CLIFO, CLI_TELEX); _indir = get_field(LF_CLIFO, CLI_INDCF); if (!_indir.empty()) _indir << " "; _indir << get_field(LF_CLIFO, CLI_CIVCF); _localita = get_field(LF_CLIFO, CLI_LOCCF); if (!_localita.empty()) _localita.trim(); _name = get_field(LF_CLIFO, CLI_RAGSOC); s = get_field(LF_CLIFO, CLI_CODANAGPER); _cpercip = ""; const TString16 tipoaper(get_field(LF_CLIFO, CLI_TIPOAPER)); if (s.not_empty()) _cpercip << tipoaper << " " << s; if (tipoaper == "F") { TString surname = _name.mid(30,50); surname.trim(); _name = _name.mid(0,30); _name.trim(); _name << " " << surname; } } break; case LF_INDSP: current_cursor()->items(); if (atoi(get_field(LF_INDSP,IND_CODIND)) == 0) return FALSE; _telefono = get_field(LF_INDSP, IND_PTEL); if (!_telefono.empty()) _telefono << "/"; _telefono << get_field(LF_INDSP, IND_TEL); _fax = get_field(LF_INDSP, IND_PFAX); if (!_fax.empty()) _fax << "/"; _fax << get_field(LF_INDSP, IND_FAX); _localita = get_field(LF_INDSP,IND_LOCALITA); if (!_localita.empty()) _localita << " - "; _comuni->curr().zero(); _comuni->curr().put(COM_STATO,get_field(LF_INDSP,IND_STATO)); _comuni->curr().put(COM_COM,get_field(LF_INDSP,IND_COM)); _comuni->read(); _localita << _comuni->curr().get(COM_DENCOM); _localita << " "; _localita << _comuni->curr().get(COM_PROVCOM); break; default: break; } return TRUE; } print_action CG1200_App::postprocess_print(int file, int counter) { static bool more = FALSE; if (_pr_what == both) { if (more) { more = FALSE; select_cursor(ccur()); return NEXT_PAGE; } else { more = TRUE; select_cursor(ccur()); return REPEAT_PAGE; } } return NEXT_PAGE; } bool gest_vend() { TConfig c(CONFIG_DITTA,"cg"); return (c.get("GesVen") == "X"); } bool rdbtype_handler(TMask_field& f, KEY k) { if (k == K_TAB) //every time that change focus or value, check flag to enable button { if (gest_vend()) f.mask().enable(BUT_CG12_VENDITE); else f.mask().disable(BUT_CG12_VENDITE); } return TRUE; } bool mask_ctrl_handler(TMask_field& mf, KEY k) { if (k == K_SPACE) { mf.mask().stop_run(mf.dlg()); } return TRUE; } // set printrows void CG1200_App::set_page(int file, int counter) { switch(_pr_type) { case elenco: if (file == LF_CLIFO) set_elenco(); break; case rubriche: if (file == LF_CLIFO) set_rubriche(); break; case etichette: if (file == LF_CLIFO) set_etichette(); break; case vendite: set_vendite(file, counter); default: break; } } void CG1200_App::set_elenco() { reset_header(); // intestazione const long firm = get_firm(); TLocalisamfile ditte(LF_NDITTE); ditte.zero(); ditte.put(NDT_CODDITTA, firm); ditte.read(); if (ditte.bad()) ditte.zero(); TString s(ditte.get(NDT_RAGSOC)); set_header(1, "Ditta %ld %s @102gData @<@125gPag @#", firm, (const char*) s); set_header(2, "Elenco %s",(_pr_what == both ? "Clienti+Fornitori" : (_pr_what == clienti ? "Clienti" : "Fornitori"))); set_header(3, (const char *)(TString(132).fill('-'))); set_header(4, " Codice Ragione sociale"); set_header(5, "@9gIndirizzo@59gC.A.P.@66gLocalita'"); set_header(6, "@9gTelefoni@91gFAX @115gTelex"); set_header(7, "@9gLuogo di nascita@46gData" "@56gPartita IVA Codice fiscale@93gConto di costo/ricavo@115gC.allegato@126gPerc.770"); set_header(8, (const char *)(TString(132).fill('-'))); // body set_row(1,"$[r]@1s$[n] $[r]@pn$[n] #t", FLD(LF_CLIFO, CLI_TIPOCF), FLD(LF_CLIFO, CLI_CODCF,"@@@@@@"), &_name); set_row(2,"@9g#t@59g@s@66g#t@s @s", &_indir, FLD(LF_CLIFO, CLI_CAPCF), &_localita, FLD(-COMRF_ALIAS,COM_DENCOM), FLD(-COMRF_ALIAS,COM_PROVCOM)); set_row(3,"@9g#t@90g#t@115g#t", &_telefono, &_fax, &_telex); set_row(4,"@9g@s @s@46g@ld@56g#t@92g@3n @3n @6n@115g@n@126g#t", FLD(-COMNASC_ALIAS, COM_DENCOM), FLD(-COMNASC_ALIAS, COM_PROVCOM), FLD(LF_CLIFO, CLI_DATANASC), &_piva, FLD(LF_CLIFO,CLI_GRUPPORIC), FLD(LF_CLIFO,CLI_CONTORIC), FLD(LF_CLIFO, CLI_SOTTOCRIC), FLD(LF_CLIFO, CLI_CODALLEG), &_cpercip); for(int i = 0; i < _interline; i++) set_row(i+5,""); } void CG1200_App::set_rubriche() { reset_header(); // intestazione const long firm = get_firm(); TLocalisamfile ditte(LF_NDITTE); ditte.zero(); ditte.put(NDT_CODDITTA, firm); ditte.read(); if (ditte.bad()) ditte.zero(); TString s(ditte.get(NDT_RAGSOC)); set_header(1, "Ditta %ld %s @102gData @<@125gPag @#", firm, (const char*) s); set_header(2, "Rubrica %s",(_pr_what == both ? "Clienti+Fornitori" : (_pr_what == clienti ? "Clienti" : "Fornitori"))); set_header(3, (const char *)(TString(132).fill('-'))); set_header(4, " Codice Ragione sociale"); set_header(5, "@9gIndirizzo@59gC.A.P.@66gLocalita'"); set_header(6, "@9gTelefoni@91gFAX @115gTelex"); set_header(7, (const char *)(TString(132).fill('-'))); // body set_row(1,"$[r]@1s$[n] $[r]@pn$[n] #t", FLD(LF_CLIFO,CLI_TIPOCF), FLD(LF_CLIFO,CLI_CODCF,"@@@@@@"), &_name); set_row(2,"@9g#t@59g@s@66g#t@s @s", &_indir, FLD(LF_CLIFO, CLI_CAPCF), &_localita, FLD(-COMRF_ALIAS,COM_DENCOM), FLD(-COMRF_ALIAS,COM_PROVCOM)); set_row(3,"@9g#t@90g#t@115g#t", &_telefono, &_fax, &_telex); for(int i = 0; i < _interline; i++) set_row(i+4,""); } bool mask2_reset_fields(TMask_field& mf, KEY k) { if (k == K_SPACE) { CG1200_App* a = (CG1200_App*)MainApp(); mf.mask().field(FLD_CGB_STARTROW).set(format("%d",a->_startrow)); mf.mask().field(FLD_CGB_STARTCOL).set(format("%d",a->_startcol)); mf.mask().field(FLD_CGB_ROWSET).set(format("%d",a->_rows_et)); mf.mask().field(FLD_CGB_COLSET).set(format("%d",a->_cols_et)); } return TRUE; } void CG1200_App::set_etichette() { int r=_startrow; TString loccf=get_field(LF_CLIFO,CLI_LOCCF); reset_header(); for (int i = 1; i < _startrow; i++) set_row(i,""); set_row(r++, format("@%dg#-%dt",_startcol, _cols_et - _startcol), &_name); set_row(r++, format("@%dg#-%dt",_startcol, _cols_et - _startcol), &_indir); if (!loccf.empty()) set_row(r++,format("@%dg#-%dt",_startcol, _cols_et - _startcol), &_localita); set_row(r++, format("@%dg@5s @%ds @2s",_startcol, _cols_et - _startcol - 9), FLD(LF_CLIFO, CLI_CAPCF), FLD(-COMRF_ALIAS, COM_DENCOM), FLD(-COMRF_ALIAS, COM_PROVCOM)); for (i = r; i <= _rows_et; i++) set_row(i,""); } void CG1200_App::set_vendite(int f, int c) { TString* rigs = new TString(132); rigs->fill('-'); reset_header(); // intestazione const long firm = get_firm(); TLocalisamfile ditte(LF_NDITTE); ditte.zero(); ditte.put(NDT_CODDITTA, firm); ditte.read(); if (ditte.bad()) ditte.zero(); TString s(ditte.get(NDT_RAGSOC)); switch (f) { case LF_CFVEN: ///////////////////////////////// // Prints CFVEN information // ///////////////////////////////// set_header(1, "Ditta %ld %s @102gData @<@125gPag @#", firm, (const char*) s); set_header(2, "Dati Clienti/Fornitori per Vendite"); set_header(3, (const char *)(TString(132).fill('-'))); set_header(4," Codice Ragione sociale"); set_header(5,"@9gNote Cli/For @25gLegale per contenz. @46gCat.Finanziaria @63gCat.Vendita @76gAss.Fiscale @93gZona @101gAgente @112gProvvigione"); set_header(6,"@9gCod.Listino @25gCod. Magazzino @46gSpese da Addeb. @63gBolli Tr. @76gBolli R.B. @93gSpese incasso @112gBolli sup. 50.000"); set_header(7,"@9gCli/For ass. @25gCod. Meccanografico @46gGest. Contratto @63gRid. Iva @76gUltimo sollecito @93gUltimo estr. conto @112gTitolo onorifico"); set_header(8,"@9gSconto cliente @25gSconto di riga @46gSconto incond. @63gFatt. Sosp. @76gVs. Lettera Esenzione @112gNs. Lettera Esenz."); set_header(9,"@9gCod. ABI p.e. @25gCod. CAB p.e. @46gInd. Effetti @63gEmiss. Eff. @76gImporto Minimo @93gEffetti non acc. @112gScadenza effetti"); set_header(10,"@9gInd.Documento @25gInd. Spedizione @46gNote Documento @63gCod.Mezzo @76gPorto @93gVettori"); set_header(11,"@9gRaggr. ordini @25gImporto Minimo @46gImporto Massimo @63gPriorita ev. @76gTipo Evasione"); set_header(12, (const char *)(TString(132).fill('-'))); set_row(1,"$[r]@1s$[n] $[r]@pn$[n] #t", FLD(LF_CLIFO, CLI_TIPOCF), FLD(LF_CLIFO, CLI_CODCF,"@@@@@@"), &_name); set_row(2,"@9g@2s @25g@2s @46g@2s @63g@2s @76g@2s @93g@2s @101g@3s @112g@n", FLD(LF_CFVEN, CFV_CODNOTE),FLD(LF_CFVEN,CFV_CODLEG), FLD(LF_CFVEN,CFV_CATFIN),FLD(LF_CFVEN,CFV_CATVEN), FLD(LF_CFVEN,CFV_ASSFIS),FLD(LF_CFVEN,CFV_CODZONA), FLD(LF_CFVEN,CFV_CODAG),FLD(LF_CFVEN,CFV_PROVV)); set_row(3,"@9g@5s @25g@3s @46g@3s @3s @3s @3s @63g@f @76g@f @93g@f @112g@f", FLD(LF_CFVEN,CFV_CODLIST),FLD(LF_CFVEN,CFV_CODMAG), FLD(LF_CFVEN,CFV_CODSP1),FLD(LF_CFVEN,CFV_CODSP2), FLD(LF_CFVEN,CFV_CODSP3),FLD(LF_CFVEN,CFV_CODSP4), FLD(LF_CFVEN,CFV_ADDBOLLITR),FLD(LF_CFVEN,CFV_ADDBOLLIRB), FLD(LF_CFVEN,CFV_ADDSPINC),FLD(LF_CFVEN,CFV_ADDBNS1500)); set_row(4,"@9g@pn @25g@s @46g@f @63g@f @76g@d @93g@d @112g@2s", FLD(LF_CFVEN,CFV_CODCFASS,"@@@@@@"), FLD(LF_CFVEN,CFV_CODPRCF),FLD(LF_CFVEN,CFV_GESTCONTR), FLD(LF_CFVEN,CFV_IVARID),FLD(LF_CFVEN,CFV_DATAESC), FLD(LF_CFVEN,CFV_DATASOLL),FLD(LF_CFVEN,CFV_TITOLO)); set_row(5,"@9g@n @25g@15s @46g@2s @63g@f @76g@s del @d @112g@s del @d", FLD(LF_CFVEN,CFV_SCONTOCL),FLD(LF_CFVEN,CFV_SCONTOR), FLD(LF_CFVEN,CFV_CODSCINC),FLD(LF_CFVEN,CFV_FATTSOSP), FLD(LF_CFVEN,CFV_VSNRPROT),FLD(LF_CFVEN,CFV_VSDATAREG), FLD(LF_CFVEN,CFV_NSNPROT),FLD(LF_CFVEN,CFV_NSDATAREG)); set_row(6,"@9g@5pn @25g@5pn @46g@3,rn @63g@f @76g@pn @93g@s @112g@s", FLD(LF_CFVEN,CFV_CODABIPR,"@@@@@"), FLD(LF_CFVEN,CFV_CODCABPR,"@@@@@"), FLD(LF_CFVEN,CFV_CODINDEFF),FLD(LF_CFVEN,CFV_EMEFFRICH), FLD(LF_CFVEN,CFV_IMPMINEFF,"."), FLD(LF_CFVEN,CFV_NONACCEFF), FLD(LF_CFVEN,CFV_NONSCADEFF)); set_row(7,"@9g@3,rn @25g@3,rn @46g@2s @53g@2s @63g@2s @76g@2s @93g@3pn @96g@3pn @103g@3pn", FLD(LF_CFVEN,CFV_CODINDDOC),FLD(LF_CFVEN,CFV_CODINDSP), FLD(LF_CFVEN,CFV_CODNOTESP1),FLD(LF_CFVEN,CFV_CODNOTESP2), FLD(LF_CFVEN,CFV_CODSPMEZZO),FLD(LF_CFVEN,CFV_CODPORTO), FLD(LF_CFVEN,CFV_CODVETT1,"@@@"), FLD(LF_CFVEN,CFV_CODVETT2,"@@@"), FLD(LF_CFVEN,CFV_CODVETT3,"@@@")); set_row(8,"@9g@s @25g@pn @46g@pn @63g@n @76g@2s", FLD(LF_CFVEN,CFV_RAGGOR),FLD(LF_CFVEN,CFV_MINORD,"."), FLD(LF_CFVEN,CFV_MAXORD,"."),FLD(LF_CFVEN,CFV_PREVORD), FLD(LF_CFVEN,CFV_TIPOEVORD)); if (current_cursor()->is_first_match(LF_INDSP)) { // Test whether there are any Addresses. If so, prints // the header. set_row(9,""); set_row(10,"@9gIndirizzi di Spedizione"); set_row(11,"@9g%t",rigs); set_row(12,"@9gCodice @17gRagione Sociale"); set_row(13,"@17gIndirizzo @65gC.A.P. @72gLocalita"); set_row(14,"@17gTelefono @60gFax @102gRiduzione IVA"); set_row(15,"@9g%t",rigs); } else for (int i=0;i<_interline;i++) set_row(i+9,""); break; ///////////////////////////////////////// // End of printing CFVEN information // ///////////////////////////////////////// case LF_INDSP: ////////////////////////////////////////////////// // Prints INDSP information for each customer // ////////////////////////////////////////////////// set_row(1,"@9g@pn @17g@s",FLD(LF_INDSP,IND_CODIND,"@@@"), FLD(LF_INDSP,IND_RAGSOC)); set_row(2,"@17g@s @s @65g@s @72g#t",FLD(LF_INDSP,IND_INDIR), FLD(LF_INDSP,IND_CIV),FLD(LF_INDSP,IND_CAP), &_localita); set_row(3,"@17g#t @60g#t @102g@f",&_telefono,&_fax, FLD(LF_INDSP,IND_IVARID)); current_cursor()->save_status(); if (!current_cursor()->next_match(LF_INDSP)) for (int i=0;i<_interline;i++) set_row(i+4,""); else set_row(4,""); current_cursor()->restore_status(); ///////////////////////////////////////// // End of printing INDSP information // ///////////////////////////////////////// break; default: break; } delete rigs; } bool CG1200_App::set_print(int) { disable_links(); set_multiple_link(FALSE); TMask mask("cg1200a.msk"); mask.set_handler(RDB_CG12_TYPE, rdbtype_handler); mask.set_handler(BUT_CG12_ELENCO, mask_ctrl_handler); mask.set_handler(BUT_CG12_RUBRICHE, mask_ctrl_handler); mask.set_handler(BUT_CG12_ETICHETTE, mask_ctrl_handler); mask.run(); force_setpage(FALSE); // set print type switch (mask.last_key()) { case K_ESC: case K_QUIT: return FALSE; break; case BUT_CG12_ELENCO: _pr_type = elenco; break; case BUT_CG12_ETICHETTE: { TMask mask2("cg1200b.msk"); /* TBI read/save from - to config file */ _pr_type = etichette; mask2.set_handler(BUT_CGB_RESET, mask2_reset_fields); mask2.field(FLD_CGB_ROWSET).set(format("%d",_rows_et)); mask2.field(FLD_CGB_COLSET).set(format("%d",_cols_et)); mask2.field(FLD_CGB_STARTROW).set(format("%d",_startrow)); mask2.field(FLD_CGB_STARTCOL).set(format("%d",_startcol)); // set defaults mask2.run(); _startrow = atoi(mask2.get(FLD_CGB_STARTROW)); _startcol = atoi(mask2.get(FLD_CGB_STARTCOL)); _rows_et = atoi(mask2.get(FLD_CGB_ROWSET)); _cols_et = atoi(mask2.get(FLD_CGB_COLSET)); force_setpage(); break; } case BUT_CG12_RUBRICHE: _pr_type = rubriche; break; case BUT_CG12_VENDITE: _pr_type = vendite; force_setpage(); break; } if (_pr_type != etichette) { set_multiple_link(TRUE); enable_link("Collegamento clienti e fornitori : ", 'r'); } _sort = mask.get_int(RDB_CG12_SORT); _pr_what = (pw) mask.get_int(RDB_CG12_TYPE); _interline = mask.get_int(LST_CG12_INTERLINE); _mov_only = mask.get_bool(CHK_CG12_MOVIM); select_cursor(ccur()); TRectype tr1(current_cursor()->curr()); tr1.zero(); TRectype tr2(tr1); if (_pr_what != both) { // filter tr1.put(CLI_TIPOCF, _pr_what == clienti ? "C" : "F"); tr2.put(CLI_TIPOCF, _pr_what == clienti ? "C" : "F"); short fromid, toid; TString16 nome_campo; if (_sort == 1) { fromid = (_pr_what == clienti) ? FLD_CLI_CODFR : FLD_FOR_CODFR; toid = (_pr_what == clienti) ? FLD_CLI_CODTO : FLD_FOR_CODTO; nome_campo = CLI_CODCF; } else { fromid = (_pr_what == clienti) ? FLD_CLI_RAGSOCFR : FLD_FOR_RAGSOCFR; toid = (_pr_what == clienti) ? FLD_CLI_RAGSOCTO : FLD_FOR_RAGSOCTO; nome_campo = CLI_RAGSOC; } const TString16 cod_from(mask.get(fromid)); const TString16 cod_to(mask.get(toid)); if (cod_from.not_empty()) tr1.put(nome_campo, cod_from); if (cod_to.not_empty()) tr2.put(nome_campo, cod_to); } current_cursor()->setregion(tr1, tr2); return TRUE; } bool CG1200_App::preprocess_print(int file, int counter) { reset_print(); if (_pr_type == undefined) return set_print(counter); return TRUE; } void CG1200_App::user_create() { // set relation and cursors _rel = new TRelation(LF_CLIFO); _rel->add(LF_COMUNI, "STATO==STATOCF|COM==COMCF", 1, 0, COMRF_ALIAS); _rel->add(LF_COMUNI, "STATO==STATONASC|COM==COMNASC", 1, 0, COMNASC_ALIAS); if (gest_vend()) { _rel->add(LF_CFVEN,"TIPOCF=TIPOCF|CODCF=CODCF"); _rel->add(LF_INDSP,"TIPOCF=TIPOCF|CODCF=CODCF"); } _mov = new TLocalisamfile(LF_MOV); _mov->setkey(3); _comuni = new TLocalisamfile(LF_COMUNI); _cur_1 = add_cursor(new TCursor(_rel,"",1)); _cur_2 = add_cursor(new TCursor(_rel,"",2)); add_file(LF_CLIFO); if (gest_vend()) { add_file(LF_CFVEN,LF_CLIFO); add_file(LF_INDSP,LF_CLIFO); } enable_print_menu(); } bool CG1200_App::destroy() { if (_rel) delete _rel; delete _mov; delete _comuni; return TRUE; } int cg1200(int argc, char* argv[]) { CG1200_App app; app.run(argc, argv, "Stampa Clienti/Fornitori"); return 0; }