#include "dbcv.h" #include "dbcv01a.h" #include "dbcv09.h" #include #include #include class TCrea_dbf : public TSkeleton_application { TMask * _m; protected: virtual bool create(); virtual bool destroy(); void txt2dbf(const char * dbf,const char *txt, const char *ini=NULL); protected: virtual void main_loop() ; }; bool TCrea_dbf::create() { _m = new TMask("dbcv01a.msk"); return TSkeleton_application::create(); } bool TCrea_dbf::destroy() { delete _m; return TSkeleton_application::destroy(); } void TCrea_dbf::txt2dbf(const char * dbf,const char *txt,const char *ini ) { long lineno=0L; TIndwin iw(80, format("Ricostruzione file DBF da file di testo BPCS ..."),FALSE,FALSE); TImport_file dest(_m->get(F_PATH),dbf); TFilename txtname(_m->get(F_PATH)),ininame(_m->get(F_PATH)); txtname.add(txt);txtname.ext("txt"); if (ini) ininame.add(ini); else ininame.add(txt); ininame.ext("ini"); TFile_text source(txtname, ininame); dest.zap(); TRecord_text rec; source.open(); while (source.read(rec)!=EOF) { if ((lineno%TICK) == 0) { iw.set_text(format("Importazione %s : linea %ld",txt, lineno)); do_events(); } TTracciato_record *tr=source.t_rec(rec.type()); if (tr) { TArray& a_tc = tr->tracciati_campo(); int items = a_tc.items(); TString valore; dest.zero(); for (int i = 0; i < items; i++) { const TTracciato_campo& tc = tr->get(i); TFieldref field(tc.field()); if (field.name().not_empty()) { valore = rec.row(i); valore.trim(); dest.put(field.name(),valore); } } dest.write(); } lineno++; } source.close(); } void TCrea_dbf::main_loop() { while (_m->run()!=K_QUIT) { // anagrafiche if (_m->get_bool(F_ARTS)) { txt2dbf(BPCS_IMPORTEX,"iims_aga"); txt2dbf(BPCS_ANAGRAFICA, "iim_aga"); } if (_m->get_bool(F_BOMS)) txt2dbf(BPCS_DISTINTE,"mbm_aga"); if (_m->get_bool(F_DIVS )) txt2dbf(BPCS_DIVISORI,"cic_aga"); // magazzino if (_m->get_bool(F_MOVMAG)) { TFilename txtname(_m->get(F_MOVMAG_FILE)); TFilename dbfname(txtname); if (txtname.blank()) { txtname = "ith_aga"; dbfname = BPCS_MOVMAG; } else { TFilename s(_m->get(F_PATH)),d(_m->get(F_PATH)); s.add(BPCS_MOVMAG); s.ext("dbf"); d.add(dbfname.name()); d.ext("dbf"); if (!d.exist()) { fcopy(s,d); s.ext("cdx"); d.ext("cdx"); fcopy(s,d); } } txt2dbf(dbfname,txtname,"ith_aga"); } // ordini if (_m->get_bool(F_ORDACQ)) txt2dbf(BPCS_ORDACQ,"ord_acq"); if (_m->get_bool(F_ORDPROD)) txt2dbf(BPCS_SHOPORDS,"ord_prod"); if (_m->get_bool(F_ORDCLI)) txt2dbf(BPCS_FIRMORD,"ord_cli" ); } } int dbcv01(int argc, char* argv[]) { TString name; TCrea_dbf dt; dt.run(argc, argv, "Conversione txt da BPCS in files DBF"); return 0; }