#include "dbcv.h" #include "dbcv01a.h" #include "dbcv09.h" #include #include #include "dbcv01.h" bool TCrea_dbf::create() { return TSkeleton_application::create(); } bool TCrea_dbf::destroy() { 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(_path,dbf); TFilename txtname(_path),ininame(_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(); int err; while ((err = source.read(rec))==NOERR) { 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() { TMask m("dbcv01a.msk"); while (m.run()!=K_QUIT) { set_path(m.get(F_PATH)); // 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" ); } } class TCreaauto_dbf: public TCrea_dbf { protected: void main_loop() ; }; void TCreaauto_dbf::main_loop() { TCreaauto_dbf creadbf; TMask m("dbcv01b.msk"); if (m.run() != K_QUIT) { TFilename source(m.get(F_MOVMAG_FILE)); TFilename txtsource(source); creadbf.set_path(m.get(F_PATH)); creadbf.txt2dbf(source,txtsource,"ith_aga"); } } int dbcv01(int argc, char* argv[]) { if (argc > 2 && argv[2][0]=='a') { TCreaauto_dbf dt; dt.run(argc, argv, "Conversione txt da magazzino BPCS a files DBF"); } else { TCrea_dbf dt; dt.run(argc, argv, "Conversione txt da BPCS in files DBF"); } return 0; }