#include #include #include #include #include #include #include #include "ci0.h" #include "cilib.h" #include "ci0400.h" #include "ci0400a.h" /////////////////////////////////////////////////////////// // TImmissioneDocumenti_app /////////////////////////////////////////////////////////// // Inizializzazioni void TImmissioneDocumenti_app::init_tabs() { TToken_string pagenames; const short id = F_AL01; int item = 0; _filters.destroy(); pagenames = ""; TConfig configfile("ci0400.ini"); configfile.set_paragraph("Main"); while (configfile.exist("Descr",item)) { pagenames.add(configfile.get("Descr","Main",item)); _filters.add(configfile.get("Filter","Main",item)); _mask->activate_almanac(id + item, item, TDate(TODAY)); item++; } if (item>0) { _mask->set_caption(pagenames); _mask->disable_page(item); } } void TImmissioneDocumenti_app::init_flags() { int filters; int items; TDate currdate; TDate currstart; TString filter; filters = _filters.items(); for(int i=0;ii) ((TBit_array&)_flags[i]).reset(); else _flags.add(new TBit_array(366),i); for (cursor=0;cursor.pos()run() == K_ENTER) { TDate selday = _mask->last_selected_day(); int currpage = _mask->last_selected_page(); _mask->open_inner_sheet(selday,_filters.row(currpage)); } } // Chiamate dalla maschera void TImmissioneDocumenti_app::change_year(int newyear, bool init_flg) { _year = newyear; _newyearsday.set_day(1); _newyearsday.set_month(1); _newyearsday.set_year(_year); if (init_flg) init_flags(); } bool TImmissioneDocumenti_app::has_documents(int currpage, TDate& day) { return (((TBit_array&)_flags[currpage])[day-_newyearsday]); } /////////////////////////////////////////////////////////// // TImmissioneDocumenti_mask /////////////////////////////////////////////////////////// // Routines Proprietarie void TImmissioneDocumenti_mask::open_inner_sheet(TDate date, TString doctype) { int exitval; TString filter; filter << "(ANSI(DATADOC)==\"" << date.string(ANSI) << "\")"; filter << "&&"; filter << "(CODNUM==\"" << doctype << "\")"; TRelation relation(LF_DOC); relation.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF"); TCursor cursor(&relation, filter); TCursor_sheet sheet(&cursor, "ANNO|CODNUM|TIPODOC|NUMDOCRIF|STATO|DATADOCRIF|NDOC|20->RAGSOC", TR("Selezione documenti"), HR("Anno|Num.|Tipo|Docum.Rif.|Stato|Data@10|Documento|Ragione Sociale@50"), 0x02|0x04); exitval = sheet.run(); switch(exitval) { case K_ENTER: call_ve0(exitval, relation, date, doctype); break; case K_DEL: call_ve0(exitval, relation, date, doctype); break; case K_INS: call_ve0(exitval, relation, date, doctype); break; case K_ESC: break; default: break; } } void TImmissioneDocumenti_mask::call_ve0(int exitval, TRelation& relation, TDate& date, TString& doctype) { TFilename tempfile; tempfile.tempdir(); tempfile.add("cicallsve0.ini"); { TConfig configfile(tempfile); switch(exitval) { case K_ENTER: configfile.set("Action", "Modify", "Transaction"); configfile.set("NDOC", relation.lfile().get(DOC_NDOC), "33"); break; case K_DEL: configfile.set("Action", "Delete", "Transaction"); configfile.set("NDOC", relation.lfile().get(DOC_NDOC), "33"); break; case K_INS: configfile.set("Action", "Insert", "Transaction"); configfile.set("DATADOC", date.string(), "33"); break; default: break; } configfile.set("Mode", "A", "Transaction"); configfile.set("PROVV", "D", "33"); configfile.set("ANNO", last_selected_day().year(), "33"); configfile.set("CODNUM", doctype, "33"); } TString commandline; commandline.format("ve0 -0 /i%s",(const char*)tempfile); TExternal_app ve(commandline); ve.run(); remove_file(tempfile); } // Richiami all'applicazione void TImmissioneDocumenti_mask::change_year(int newyear) { immissione_documenti_app().change_year(newyear); } bool TImmissioneDocumenti_mask::is_date_void(int currpage, TDate& cdate) { return !(immissione_documenti_app().has_documents(currpage, cdate)); } /////////////////////////////////////////////////////////// // Mains /////////////////////////////////////////////////////////// int ci0300(int argc, char* argv[]) { TImmissioneDocumenti_app a ; a.run(argc, argv, TR("Immissione Documenti")); return 0; } int ci0400(int argc, char* argv[]) { TImmissioneDocumenti_app a ; a.run(argc, argv, TR("Immissione Documenti")); return 0; }