#include #include #include #include #include #include #include #include #include "ve7.h" #include "ve7600a.h" #include <..\pr\agenti.h> #include <..\mg\anamag.h> #include #include #include #include #include #define ALIAS_TIP 201 class TRDoc2JBI_mask : public TAutomask { protected: bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TRDoc2JBI_mask(); virtual ~TRDoc2JBI_mask(){}; }; TRDoc2JBI_mask::TRDoc2JBI_mask() :TAutomask ("ve7600a") { } bool TRDoc2JBI_mask::on_field_event(TOperable_field& f, TField_event e, long jolly) { return TRUE; } class TRDoc2JBI : public TSkeleton_application { TRDoc2JBI_mask* _msk; TConfig* _config; protected: virtual bool create(); virtual bool destroy(); virtual void main_loop(); void transfer(void); bool insert_tab(TExternisamfile& filetab, const char* tipo, const char* codice, const char* descri); void update_tab(TExternisamfile& filetab, const TRectype rectab); public: TRDoc2JBI_mask& mask() { return *_msk; }; TRDoc2JBI() {}; virtual ~TRDoc2JBI() {} }; bool TRDoc2JBI::create() { open_files(LF_DOC, LF_RIGHEDOC, LF_ANAMAG, LF_CLIFO, LF_CFVEN, LF_COMUNI, LF_NDITTE, 0); _msk = new TRDoc2JBI_mask(); _config = new TConfig("ve7600.ini"); return TSkeleton_application::create(); } bool TRDoc2JBI::destroy() { delete _config; delete _msk; return TSkeleton_application::destroy(); } void TRDoc2JBI::main_loop() { // preimposto i valori specificati sulla riga di comando oppure faccio partire la maschera KEY key = K_ENTER; if (argc() >= 4) { _msk->set(F_PERCORSO, argv(3)); _msk->set(F_ANNO, argv(2)); } else { _msk->set(F_PERCORSO, _config->get("PERCORSO", "PARAMETRI")); _msk->set(F_ANNO, _config->get("ANNO", "PARAMETRI") ); key = _msk->run(); } if (key == K_ENTER) transfer(); } bool TRDoc2JBI::insert_tab(TExternisamfile& filetab, const char* tipo, const char* codice, const char* descri) { filetab.zero(); filetab.put("TIPO", tipo); filetab.put("CODICE", codice); filetab.put("DESCRI", descri); int err = filetab.write(); if (err == _isdupkey) err = NOERR; return (err == NOERR); } void TRDoc2JBI::transfer() { TRelation rel(LF_RIGHEDOC); rel.add(LF_DOC, "CODNUM==CODNUM|ANNO==ANNO|NDOC==NDOC|PROVV==PROVV"); rel.add("%TIP", "CODTAB==TIPODOC", 1, LF_DOC, ALIAS_TIP); TRDoc2JBI_mask& m = mask(); TString expr; const int anno = m.get_int(F_ANNO); _config->set("ANNO", anno, "PARAMETRI"); //expr.format("34->CODARTMAG != \"\" && 34->ANNO==%d && 33->TIPOCF == \"C\"", anno); expr << "(" << RDOC_CODARTMAG << " != \"\")"; expr << " && (" << RDOC_ANNO << " == \"" << anno << "\")"; //expr << "&& (33->TIPOCF = \"C\")"; TCursor cur(&rel, expr, 2); const TString& path = m.get(F_PERCORSO); _config->set("PERCORSO", path, "PARAMETRI"); TFilename rdocname = path; rdocname << _config->get("RIGHEDOC", "ARCHIVI"); rdocname.ext("dbf"); TFilename rdoctrr = "jbi_rdoc.trr"; rdoctrr.custom_path(); TExternisamfile filerdoc(rdocname, rdoctrr); filerdoc.zap(); TFilename tabname = path; tabname << _config->get("TABELLE", "ARCHIVI"); tabname.ext("dbf"); TFilename tabtrr = "jbi_tab.trr"; tabtrr.custom_path(); TExternisamfile filetab(tabname, tabtrr); filetab.zap(); // aggiungo il record ditta TString80 ragsoc = cache().get(LF_NDITTE, get_firm(), "RAGSOC"); TString16 firm; firm.format("%d", get_firm()); insert_tab(filetab, "DIT", (const char*) firm, ragsoc); const long items = cur.items(); TProgind p(items, "Elaborazione righe documenti in corso ...", TRUE, TRUE, 10); p.setstatus(1); int err = NOERR; for (cur=0; cur.pos()