Patch level : 4.0 no patch
Files correlati : Ricompilazione Demo : [ ] Commento : prima versione trasferimento galileo git-svn-id: svn://10.65.10.50/trunk@14577 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									4428975ba2
								
							
						
					
					
						commit
						68fa3f8ec0
					
				| @ -8,6 +8,8 @@ int main( int argc, char** argv ) | ||||
| 
 | ||||
|   switch (r) | ||||
|   { | ||||
|   case 6: | ||||
|     ve7700(argc, argv); break;  // importazione da Galileo Cantieri
 | ||||
|   case 5: | ||||
|     ve7600(argc, argv); break;  // trasferimento JBI
 | ||||
|   case 4: | ||||
|  | ||||
							
								
								
									
										1
									
								
								ve/ve7.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								ve/ve7.h
									
									
									
									
									
								
							| @ -7,5 +7,6 @@ int ve7300 (int, char**); | ||||
| int ve7400 (int, char**); | ||||
| int ve7500 (int, char**); | ||||
| int ve7600 (int, char**); | ||||
| int ve7700 (int, char**); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										571
									
								
								ve/ve7700.cpp
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										571
									
								
								ve/ve7700.cpp
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,571 @@ | ||||
| #include "ve7700.h" | ||||
| #include "ve7700a.h" | ||||
| 
 | ||||
| #include <applicat.h> | ||||
| #include <automask.h> | ||||
| #include <progind.h> | ||||
| #include <reprint.h> | ||||
| #include <tabutil.h> | ||||
| 
 | ||||
| 
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| // TGalileo_log
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
| class TGalileo_log : public TRecordset | ||||
| { | ||||
|   struct TGalileo_row : public TObject | ||||
|   { | ||||
|     TVariant _sev, _msg; | ||||
|   }; | ||||
| 
 | ||||
|   TRecnotype _cur; | ||||
|   TArray _log; | ||||
|   TRecordset_column_info _info[2]; | ||||
| 
 | ||||
| public: | ||||
|   virtual TRecnotype items() const; | ||||
|   virtual bool move_to(TRecnotype pos); | ||||
|   virtual TRecnotype current_row() const; | ||||
|   virtual void requery(); | ||||
| 	virtual const TString& query_text() const { return EMPTY_STRING; } | ||||
|   virtual unsigned int columns() const; | ||||
|   virtual const TRecordset_column_info& column_info(unsigned int column) const; | ||||
|   virtual const TVariant& get(unsigned int column) const; | ||||
| 
 | ||||
|   void reset(const char* header); | ||||
|   void log(long sev, const char* msg); | ||||
| 
 | ||||
|   TGalileo_log(); | ||||
|   virtual ~TGalileo_log(); | ||||
| }; | ||||
| 
 | ||||
| TRecnotype TGalileo_log::items() const | ||||
| { return _log.items(); } | ||||
| 
 | ||||
| bool TGalileo_log::move_to(TRecnotype pos) | ||||
| { | ||||
|   _cur = pos; | ||||
|   return pos >= 0 && pos < items(); | ||||
| } | ||||
| 
 | ||||
| TRecnotype TGalileo_log::current_row() const | ||||
| { return _cur; } | ||||
| 
 | ||||
| void TGalileo_log::requery() | ||||
| { _cur = -1; } | ||||
| 
 | ||||
| unsigned int TGalileo_log::columns() const | ||||
| { return 2; } | ||||
| 
 | ||||
| const TRecordset_column_info& TGalileo_log::column_info(unsigned int i) const | ||||
| { return _info[i % columns()]; } | ||||
| 
 | ||||
| const TVariant& TGalileo_log::get(unsigned int column) const | ||||
| { | ||||
|   if (_cur >= 0 && _cur < items()) | ||||
|   { | ||||
|     const TGalileo_row& row = (const TGalileo_row&)_log[_cur]; | ||||
|     switch(column) | ||||
|     { | ||||
|     case  0: return row._sev; | ||||
|     case  1: return row._msg; | ||||
|     default: return NULL_VARIANT; | ||||
|     } | ||||
|   } | ||||
|   return NULL_VARIANT; | ||||
| } | ||||
| 
 | ||||
| void TGalileo_log::reset(const char* header) | ||||
| {  | ||||
|   set_var("#HEADER", header, true); | ||||
|   _log.destroy();  | ||||
| } | ||||
| 
 | ||||
| void TGalileo_log::log(long sev, const char* msg) | ||||
| { | ||||
|   TGalileo_row* row = new TGalileo_row; | ||||
|   row->_sev = sev; | ||||
|   row->_msg = msg; | ||||
|   _log.add(row); | ||||
| } | ||||
| 
 | ||||
| TGalileo_log::TGalileo_log() : _log(NULL) | ||||
| { | ||||
|   _info[0]._name = "SEVERITY"; | ||||
|   _info[0]._width = 1; | ||||
|   _info[0]._type = _intfld; | ||||
| 
 | ||||
|   _info[1]._name = "MESSAGE"; | ||||
|   _info[1]._width = 80; | ||||
|   _info[1]._type = _alfafld; | ||||
| } | ||||
| 
 | ||||
| TGalileo_log::~TGalileo_log() | ||||
| { | ||||
| } | ||||
| 
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| // TGalileo_iteretor
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
| bool TGalileo_iterator::cancelled() const | ||||
| { | ||||
|   return _pi != NULL && _pi->iscancelled(); | ||||
| } | ||||
| 
 | ||||
| bool TGalileo_iterator::ok() const | ||||
| { | ||||
|   if (cancelled()) | ||||
|     return _pt->log_cancelled(); | ||||
|   return _rec >= 0 && _rec < _pt->recordset().items(); | ||||
| } | ||||
| 
 | ||||
| TGalileo_iterator& TGalileo_iterator::operator=(TRecnotype n)  | ||||
| {  | ||||
|   if (_pi != NULL) | ||||
|     _pi->setstatus(n+1); | ||||
|   _pt->recordset().move_to(_rec = n);  | ||||
|   return *this; | ||||
| } | ||||
| 
 | ||||
| TGalileo_iterator& TGalileo_iterator::operator++()  | ||||
| {  | ||||
|   return *this = ++_rec;  | ||||
| } | ||||
| 
 | ||||
| TGalileo_iterator::TGalileo_iterator(TGalileo_transfer* pt) : _pt(pt), _pi(NULL) | ||||
| { | ||||
|   const TRecnotype tot = _pt->recordset().items(); | ||||
|   TString title; | ||||
|   title << _pt->title() << ": " << tot << ' ' << TR("righe"); | ||||
|   if (tot > 1) | ||||
|     _pi = new TProgind(tot, title, true, true); | ||||
|   else | ||||
|     ::begin_wait(); | ||||
| 
 | ||||
|   if (tot > 0) | ||||
|     _pt->log(title); | ||||
| 
 | ||||
|   _rec = -1; | ||||
| } | ||||
| 
 | ||||
| TGalileo_iterator::~TGalileo_iterator() | ||||
| { | ||||
|   if (_pi != NULL) | ||||
|     delete _pi; | ||||
|   else | ||||
|     ::end_wait(); | ||||
| } | ||||
| 
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| // Cache tabelle
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
| class TCache_tab : public TCache_tp | ||||
| { | ||||
| protected: | ||||
|   virtual TObject* key2obj(const char* key); | ||||
| 
 | ||||
| public: | ||||
|   virtual const TString& decode(const TToken_string& cod_codtab); | ||||
|   TCache_tab(TGalileo_transfer* pt) : TCache_tp(pt) {} | ||||
| }; | ||||
| 
 | ||||
| const TString& TCache_tab::decode(const TToken_string& cod_codtab)  | ||||
| { | ||||
|   TString4 cod; cod_codtab.get(0, cod); | ||||
|   if (cod.full()) | ||||
|   { | ||||
|     const TRectype& rec = *(const TRectype*)objptr(cod_codtab);  | ||||
|     if (!rec.empty()) | ||||
|     { | ||||
|       const char* field = "CODTAB"; | ||||
|       if (cod == "%TPM" || cod == "%TPP" || cod == "%TPI") // Tipo trasporto e porto 
 | ||||
|         field = "S6"; | ||||
|       return rec.get(field); | ||||
|     } | ||||
|   } | ||||
|   return EMPTY_STRING; | ||||
| } | ||||
| 
 | ||||
| TObject* TCache_tab::key2obj(const char* key) | ||||
| { | ||||
|   TToken_string tok(key); | ||||
|   TString4 tab = tok.get();  tab.upper(); | ||||
|   TString80 cod = tok.get(); cod.upper(); | ||||
| 
 | ||||
|   if (tab == "%IVA") | ||||
|   { | ||||
|     // Campo non digerisce i codici IVA numerici di un solo carattere
 | ||||
|     if (isdigit(cod[0])) | ||||
|       cod.right_just(2, '0'); // per cui aggiungo uno 0 iniziale
 | ||||
|   } | ||||
| 
 | ||||
|   TTable table(tab); | ||||
|   table.put("CODTAB", cod); | ||||
|   if (table.read() != NOERR) | ||||
|   { | ||||
|     table.zero(); | ||||
|     table.put("CODTAB", cod); | ||||
|     table.put("S0", cod); | ||||
|     test_write(table); | ||||
|   } | ||||
|   return table.curr().dup(); | ||||
| } | ||||
| 
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| // TGalileo_transfer
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
| void TGalileo_transfer::init(const char* title, const char* qry_hdr, TGalileo_log* log) | ||||
| { | ||||
|   _log = log; | ||||
|   _log->reset(title); | ||||
|   _query_header = qry_hdr; | ||||
|   _write_enabled = true; | ||||
| } | ||||
| 
 | ||||
| const TString& TGalileo_transfer::title() const | ||||
| { | ||||
|   return _log->get_var("#HEADER").as_string(); | ||||
| } | ||||
| 
 | ||||
| void TGalileo_transfer::log(const char* msg, int sev) const | ||||
| { | ||||
|   _log->log(sev, msg); | ||||
| } | ||||
| 
 | ||||
| TRecordset& TGalileo_transfer::create_recordset(const char* query) | ||||
| { | ||||
|   if (_recset != NULL) | ||||
|   { | ||||
|     delete _recset; | ||||
|     _recset = NULL; | ||||
|   } | ||||
|   if (_outset != NULL) | ||||
|   { | ||||
|     _outset->exec("COMMIT TRANS"); | ||||
|     delete _outset; | ||||
|     _outset = NULL; | ||||
|   } | ||||
| 
 | ||||
|   TString qry = query; | ||||
|   if (!qry.starts_with("US") && !qry.starts_with("ODBC")) | ||||
|     qry.insert(query_header()); | ||||
|   _recset = ::create_recordset(qry); | ||||
|   return *_recset; | ||||
| } | ||||
|    | ||||
| const TRecordset& TGalileo_transfer::recordset() const | ||||
| { | ||||
|   CHECK(_recset != NULL, "NULL recordset"); | ||||
|   return *_recset; | ||||
| } | ||||
| 
 | ||||
| TRecordset& TGalileo_transfer::recordset() | ||||
| { | ||||
|   CHECK(_recset != NULL, "NULL recordset"); | ||||
|   return *_recset; | ||||
| } | ||||
| 
 | ||||
| long TGalileo_transfer::odbc_exec(const char* cmd) | ||||
| { | ||||
|   long err = 0; | ||||
|   if (_write_enabled) | ||||
|   { | ||||
|     if (_outset == NULL) | ||||
|     { | ||||
|       _outset = new TODBC_recordset(query_header()); | ||||
|       _outset->exec("BEGIN TRANS"); | ||||
|     } | ||||
|     err = _outset->exec(cmd); | ||||
|   } | ||||
|   return err; | ||||
| } | ||||
| 
 | ||||
| bool TGalileo_transfer::log_error(const char* msg) | ||||
| { | ||||
|   log(msg, 2); | ||||
|   if (_write_enabled) | ||||
|   { | ||||
|     _write_enabled = false; | ||||
|     log(""); | ||||
|     log(TR("LA SCRITTURA SUGLI ARCHIVI VIENE DISABILITATA DA QUESTO MOMENTO IN POI"), 2); | ||||
|     log(""); | ||||
|   } | ||||
|   return false; | ||||
| } | ||||
| 
 | ||||
| bool TGalileo_transfer::log_cancelled() | ||||
| { | ||||
|   return log_error(TR("Procedura interrotta dall'utente")); | ||||
| } | ||||
| 
 | ||||
| bool TGalileo_transfer::test_write(TLocalisamfile& file, bool re) | ||||
| { | ||||
|   int err = NOERR; | ||||
|   if (_write_enabled) | ||||
|   { | ||||
|     if (re) | ||||
|       err = file.rewrite(); | ||||
|     else | ||||
|     { | ||||
|       TString80 code, desc; | ||||
|       if (file.num() == LF_TAB || file.num() == LF_TABCOM) | ||||
|       { | ||||
|         code = file.get("CODTAB"); | ||||
|         desc = file.get("S0"); | ||||
|       } | ||||
|       else | ||||
|       { | ||||
|         code = file.curr().build_key(1); | ||||
|         desc = file.curr().build_key(2); | ||||
|       } | ||||
|       TString msg;  | ||||
|       msg << TR("Inserimento ") << code << " (" << desc << ')' | ||||
|           << TR(" nel file ") << file.num() << ' ' << file.description(); | ||||
|       log(msg, 1); | ||||
| 
 | ||||
|       err = file.write(); | ||||
|       if (err == _isreinsert) | ||||
|       { | ||||
|         msg.format(FR("Errore %d durante la scrittura sul file"), err); | ||||
|         log(msg, 1); | ||||
|         err = NOERR; | ||||
|       } | ||||
|     } | ||||
|     if (err != NOERR) | ||||
|     { | ||||
|       TString msg;  | ||||
|       msg.format(FR("Errore %d durante la scrittura sul file %d (%s)"),  | ||||
|                  err, file.num(), file.description()); | ||||
|       log_error(msg); | ||||
|     } | ||||
|   } | ||||
|   return err == NOERR; | ||||
| } | ||||
| 
 | ||||
| const TString& TGalileo_transfer::get_str(const char* field) const | ||||
| { | ||||
|   return recordset().get(field).as_string(); | ||||
| } | ||||
| 
 | ||||
| const TString& TGalileo_transfer::get_real_str(const char* campo) const | ||||
| { | ||||
|   const real val = recordset().get(campo).as_real(); | ||||
|   if (val.is_zero()) | ||||
|     return EMPTY_STRING; | ||||
|   return get_tmp_string() = val.string(); | ||||
| } | ||||
| 
 | ||||
| long TGalileo_transfer::get_long(const char* field) const | ||||
| { | ||||
|   return recordset().get(field).as_int(); | ||||
| } | ||||
| 
 | ||||
| const TString& TGalileo_transfer::decode_value(const char* tab, const TString& cod) | ||||
| { | ||||
|   if (cod.full()) | ||||
|   { | ||||
|     if (_tab == NULL) | ||||
|       _tab = new TCache_tab(this); | ||||
|     TToken_string tok; tok.add(tab); tok.add(cod); | ||||
|     return _tab->decode(tok); | ||||
|   } | ||||
|   return EMPTY_STRING; | ||||
| } | ||||
| 
 | ||||
| const TString& TGalileo_transfer::decode_field(const char* tab, const char* field) | ||||
| { | ||||
|   const TString& cod = get_str(field); | ||||
|   return decode_value(tab, cod); | ||||
| } | ||||
| 
 | ||||
| const TString& TGalileo_transfer::build_insert_query(const char* table, const char* f, const char* v) const | ||||
| { | ||||
|   TString& qry = get_tmp_string(); | ||||
| 
 | ||||
|   qry << "INSERT INTO " << table; | ||||
| 
 | ||||
|   TAuto_token_string fields(f); | ||||
|   TToken_string values(v); | ||||
|   if (fields.items() > 0) | ||||
|   { | ||||
|     qry << " ("; | ||||
|     FOR_EACH_TOKEN(fields, tok) | ||||
|       qry << tok << ','; | ||||
|     qry.rtrim(1); | ||||
|     qry << ')'; | ||||
|   } | ||||
|   qry << " VALUES ("; | ||||
| 
 | ||||
|   TString tmp; | ||||
|   FOR_EACH_TOKEN(values, tok) | ||||
|   { | ||||
|     tmp = tok; | ||||
|     if (tmp.full() && !tmp.starts_with("0") && real::is_natural(tmp)) | ||||
|       qry << tok; | ||||
|     else | ||||
|     { | ||||
|       if (tmp[0] != '\'') | ||||
|       { | ||||
|         for (int i = tmp.len()-1; i >= 0; i--) | ||||
|         { | ||||
|           if (tmp[i] == '\'') | ||||
|             tmp.insert("'", i); | ||||
|         } | ||||
|         qry << '\'' << tmp << '\''; | ||||
|       } | ||||
|       else | ||||
|         qry << tmp; | ||||
|     } | ||||
|     qry << ','; | ||||
|   } | ||||
|   qry.rtrim(1); | ||||
|   qry << ')'; | ||||
| 
 | ||||
|   return qry; | ||||
| } | ||||
| 
 | ||||
| TGalileo_transfer::TGalileo_transfer()  | ||||
|               : _log(NULL), _config("ve7701a.ini"), _recset(NULL), _outset(NULL), _tab(NULL) | ||||
| {} | ||||
| 
 | ||||
| TGalileo_transfer::~TGalileo_transfer() | ||||
| { | ||||
|   if (_tab != NULL) | ||||
|     delete _tab; | ||||
|   if (_outset != NULL) | ||||
|   { | ||||
|     _outset->exec("COMMIT TRANS"); | ||||
|     delete _outset; | ||||
|   } | ||||
|   if (_recset != NULL) | ||||
|     delete _recset; | ||||
| } | ||||
| 
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| // TTrasferimentoGalileo_mask
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
| class TTrasferimentoGalileo_mask : public TAutomask | ||||
| { | ||||
| protected: | ||||
|   virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); | ||||
|   void serialize(bool bSave); | ||||
| 
 | ||||
| public: | ||||
|   void trasferisci(); | ||||
| 
 | ||||
|   TTrasferimentoGalileo_mask(); | ||||
|   virtual ~TTrasferimentoGalileo_mask(); | ||||
| }; | ||||
| 
 | ||||
| // Funzione di tarsferimento dati da/verso file .ini con lo stesso nome della maschera
 | ||||
| // Andrebbe messo in libreria
 | ||||
| void TTrasferimentoGalileo_mask::serialize(bool bSave) | ||||
| { | ||||
|   TFilename n = source_file(); n.ext("ini");  // Construisce il nome del .ini in base al .msk
 | ||||
|   TConfig cfg(n, "Main");                     // Crea il file di configurazione
 | ||||
|   TString4 id;  | ||||
|   for (int i = fields()-1; i >= 0; i--)       // Scandisce tutti i campi della maschera ...   
 | ||||
|   { | ||||
|     TMask_field& f = fld(i); | ||||
|     if (f.active() && f.is_loadable())        // ... selezionando solo quelli editabili
 | ||||
|     { | ||||
|       id.format("%d", f.dlg()); | ||||
|       if (bSave)                              // A seconda del flag di scrittura ... 
 | ||||
|         cfg.set(id, f.get());                 // ... o scrive sul .ini 
 | ||||
|       else  | ||||
|         f.set(cfg.get(id));                   // ... o legge dal .ini
 | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| void TTrasferimentoGalileo_mask::trasferisci() | ||||
| { | ||||
|   TString query_header; | ||||
|   query_header << "ODBC(" << get(F_DSN) << ',' << get(F_USR) << ',' << get(F_PWD) << ")\n"; | ||||
| 
 | ||||
|   TReport_book book; | ||||
|   TReport rep; rep.load("ve7700a"); | ||||
|   TGalileo_log* log = new TGalileo_log; | ||||
|   rep.set_recordset(log); | ||||
| 	bool rep_to_print = false; | ||||
| 
 | ||||
|   bool go_on = true; | ||||
| 
 | ||||
|   if (go_on && get_bool(F_CLIFO)) | ||||
|   { | ||||
| 		if (go_on) | ||||
| 		{ | ||||
| 			TGalileo_clifo pc; | ||||
| 			pc.init(TR("Clienti/Fornitori"), query_header, log); | ||||
| 			go_on = pc.trasferisci(); | ||||
| 			book.add(rep); | ||||
| 			if (go_on) | ||||
| 				pc.dump(); | ||||
| 		} | ||||
| 		if (go_on && get_bool(F_ARTICOLI)) | ||||
| 		{ | ||||
| 			TGalileo_articoli pc; | ||||
| 			pc.init(TR("Articoli"), query_header, log); | ||||
| 			go_on = pc.trasferisci(); | ||||
| 			book.add(rep); | ||||
| 			if (go_on) | ||||
| 				pc.dump(); | ||||
| 		} | ||||
| 		rep_to_print = true; | ||||
|   } | ||||
|    | ||||
|   if (rep_to_print && book.pages() > 0) | ||||
| 		book.preview(); | ||||
| } | ||||
| 
 | ||||
| bool TTrasferimentoGalileo_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) | ||||
| { | ||||
|   switch (o.dlg()) | ||||
|   { | ||||
|   case DLG_OK: | ||||
|     if (e == fe_button) | ||||
|       serialize(true); | ||||
|     break; | ||||
|   default: | ||||
|     break; | ||||
|   } | ||||
| 
 | ||||
|   return true; | ||||
| } | ||||
| 
 | ||||
| TTrasferimentoGalileo_mask::TTrasferimentoGalileo_mask() : TAutomask("ve7700a") | ||||
| { | ||||
|   serialize(false); | ||||
| } | ||||
| 
 | ||||
| TTrasferimentoGalileo_mask::~TTrasferimentoGalileo_mask() | ||||
| { } | ||||
| 
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| // TTrasferimentoGalileo
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
| class TTrasferimentoGalileo : public TSkeleton_application | ||||
| { | ||||
| protected: | ||||
|   virtual void main_loop(); | ||||
| }; | ||||
| 
 | ||||
| void TTrasferimentoGalileo::main_loop() | ||||
| { | ||||
|   TTrasferimentoGalileo_mask mask; | ||||
|   while (mask.run() == K_ENTER) | ||||
|     mask.trasferisci(); | ||||
| } | ||||
| 
 | ||||
| int ve7700(int argc, char** argv) | ||||
| { | ||||
|   TTrasferimentoGalileo tg; | ||||
|   tg.run(argc, argv, TR("Trasferimento Galileo")); | ||||
|   return 0; | ||||
| } | ||||
							
								
								
									
										156
									
								
								ve/ve7700.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										156
									
								
								ve/ve7700.h
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,156 @@ | ||||
| #ifndef __VE7700_H | ||||
| #define __VE7700_H | ||||
| 
 | ||||
| #ifndef __CONFIG_H | ||||
| #include <config.h> | ||||
| #endif | ||||
| 
 | ||||
| #ifndef __DICTION_H | ||||
| #include <diction.h> | ||||
| #endif | ||||
| 
 | ||||
| #ifndef __ISAM_H | ||||
| #include <isam.h> | ||||
| #endif | ||||
| 
 | ||||
| #ifndef __ODBCRECSET_H | ||||
| #include <odbcrset.h> | ||||
| #endif | ||||
| 
 | ||||
| #ifndef __PROGIND_H | ||||
| class TProgind; | ||||
| #endif | ||||
| 
 | ||||
| class TGalileo_log; | ||||
| class TCache_tp; | ||||
| 
 | ||||
| class TGalileo_transfer : public TObject | ||||
| { | ||||
|   TString _query_header; | ||||
|   TGalileo_log* _log; | ||||
|   TConfig _config; | ||||
|    | ||||
|   TRecordset* _recset; | ||||
|   bool _write_enabled; | ||||
|   TODBC_recordset* _outset; | ||||
|   TCache_tp* _tab; | ||||
| 
 | ||||
| protected: | ||||
|   const TString& build_insert_query(const char* table, const char* f, const char* v) const; | ||||
| 
 | ||||
|   TRecordset& create_recordset(const char* query); | ||||
|   long odbc_exec(const char* command); | ||||
| 
 | ||||
|   const TString& decode_value(const char* tab, const TString& field_value); | ||||
|   const TString& decode_field(const char* tab, const char* recset_field); | ||||
| 
 | ||||
|   TGalileo_transfer(); | ||||
|   virtual bool trasferisci() pure; | ||||
| 
 | ||||
| public: | ||||
|   void init(const char* rh, const char* qh, TGalileo_log* log); | ||||
|   const TString& title() const; | ||||
|   TConfig& config() { return _config; } | ||||
|   const TString& query_header() const { return _query_header; } | ||||
| 
 | ||||
|   void log(const char* msg, int sev = 0) const; | ||||
|   bool log_error(const char* msg); | ||||
|   bool log_cancelled(); | ||||
|   const TRecordset& recordset() const; | ||||
|   TRecordset& recordset(); | ||||
| 
 | ||||
|   const TString& get_str(const char* campo) const;       // Get string from current recordset
 | ||||
|   const TString& get_real_str(const char* campo) const;  // Get eventually empty string from numeric field
 | ||||
|   long get_long(const char* campo) const;  | ||||
| 
 | ||||
|   bool write_enabled() const { return _write_enabled; } | ||||
|    | ||||
|   bool test_write(TLocalisamfile& file, bool re = false); | ||||
|   bool test_rewrite(TLocalisamfile& file) { return test_write(file, true); } | ||||
| 
 | ||||
|   virtual ~TGalileo_transfer(); | ||||
| }; | ||||
| 
 | ||||
| // Classe candidata alla libreria
 | ||||
| class TGalileo_iterator | ||||
| { | ||||
|   TGalileo_transfer* _pt; | ||||
|   TProgind* _pi; | ||||
|   TRecnotype _rec; | ||||
| 
 | ||||
| public: | ||||
|   bool ok() const; | ||||
|   bool cancelled() const; | ||||
|   TGalileo_iterator& operator=(TRecnotype n); | ||||
|   TGalileo_iterator& operator++(); | ||||
|   operator int() const { return ok(); } | ||||
| 
 | ||||
|   TGalileo_iterator(TGalileo_transfer* pt); | ||||
|   ~TGalileo_iterator(); | ||||
| }; | ||||
| 
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| // Cache generica per il trasferimento DDT di Pack
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
| class TCache_tp : public TCache | ||||
| { | ||||
|   TGalileo_transfer* _pt; | ||||
| 
 | ||||
| protected: | ||||
|   void log(const char* msg, int sev) const { _pt->log(msg, sev); } | ||||
|   bool test_write(TLocalisamfile& file) const { return _pt->test_write(file); } | ||||
|   const TRecordset& recordset() const { return _pt->recordset(); } | ||||
|   TConfig& config() const { return _pt->config(); } | ||||
|   const TString& query_header() const { return _pt->query_header(); } | ||||
| 
 | ||||
| public: | ||||
|   const TString& get_str(const char* campo) const { return _pt->get_str(campo); } | ||||
|   const TString& get_real_str(const char* campo) const { return _pt->get_real_str(campo); } | ||||
|   long get_long(const char* campo) const { return _pt->get_long(campo); } | ||||
|   virtual const TString& decode(const TToken_string& tokens) pure; | ||||
| 
 | ||||
|   TCache_tp(TGalileo_transfer* pt) : _pt(pt) {} | ||||
| }; | ||||
| 
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| // Trasferimenti veri e propri
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
| class TGalileo_clifo : public TGalileo_transfer | ||||
| { | ||||
| 
 | ||||
| protected: | ||||
|   int cancella_clifo(TLocalisamfile& clifo) const; | ||||
|   long get_next_key(const char tipocf) const; | ||||
| 	long get_codcf(const char tipocf, const char* ricalt) const; | ||||
|   bool aggiorna_record(TLocalisamfile& file, const TString_array& lista_campi); | ||||
| 
 | ||||
| public: | ||||
|   virtual bool trasferisci(); | ||||
|   virtual bool dump(); | ||||
|   TGalileo_clifo(); | ||||
|   ~TGalileo_clifo(); | ||||
| }; | ||||
| 
 | ||||
| class TGalileo_articoli : public TGalileo_transfer | ||||
| { | ||||
| 
 | ||||
| protected: | ||||
|   int cancella_articolo(TLocalisamfile& clifo) const; | ||||
| 	//long get_codcf(const char tipocf, const char* ricalt) const;
 | ||||
|   bool aggiorna_record(TLocalisamfile& file, const TString_array& lista_campi); | ||||
| 
 | ||||
| public: | ||||
|   virtual bool trasferisci(); | ||||
|   virtual bool dump(); | ||||
|   TGalileo_articoli(); | ||||
|   ~TGalileo_articoli(); | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| class TCache_art; | ||||
| class TCache_umart; | ||||
| class TDocumento; | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										14
									
								
								ve/ve7700a.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										14
									
								
								ve/ve7700a.h
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,14 @@ | ||||
| #ifndef __VE7700A_H | ||||
| #define __VE7700A_H | ||||
| 
 | ||||
| #define F_FIRM      101 | ||||
| #define F_RAGSOC    102 | ||||
| 
 | ||||
| #define F_CLIFO     111 | ||||
| #define F_ARTICOLI  112 | ||||
| 
 | ||||
| #define F_DSN       201 | ||||
| #define F_USR       202 | ||||
| #define F_PWD       203 | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										84
									
								
								ve/ve7700a.uml
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										84
									
								
								ve/ve7700a.uml
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,84 @@ | ||||
| #include "ve7700a.h" | ||||
| 
 | ||||
| TOOLBAR "" 0 -3 0 3 | ||||
| 
 | ||||
| BUTTON DLG_OK 10 2 | ||||
| BEGIN | ||||
|   PROMPT -12 -11 "~Elabora" | ||||
|   PICTURE BMP_ELABORA | ||||
| END | ||||
| 
 | ||||
| BUTTON DLG_QUIT 10 2 | ||||
| BEGIN | ||||
|   PROMPT -22 -11 "Fine" | ||||
| END | ||||
| 
 | ||||
| ENDPAGE | ||||
| 
 | ||||
| PAGE "Trasferimento da Galileo Cantieri" -1 -1 78 18 | ||||
| 
 | ||||
| GROUPBOX DLG_NULL 78 3 | ||||
| BEGIN | ||||
|   PROMPT 1 1 "@bDitta" | ||||
| END | ||||
| 
 | ||||
| NUMBER F_FIRM 5 | ||||
| BEGIN | ||||
|   PROMPT 2 2 "" | ||||
|   USE LF_NDITTE | ||||
|   INPUT CODDITTA F_FIRM | ||||
|   OUTPUT F_RAGSOC RAGSOC | ||||
|   CHECKTYPE REQUIRED | ||||
|   FLAGS "DF" | ||||
| END | ||||
| 
 | ||||
| STRING F_RAGSOC 60 | ||||
| BEGIN | ||||
|   PROMPT 17 2 "" | ||||
|   FLAGS "D" | ||||
| END | ||||
| 
 | ||||
| GROUPBOX DLG_NULL 58 4 | ||||
| BEGIN | ||||
|   PROMPT 1 4 "@bTabelle" | ||||
| END | ||||
| 
 | ||||
| BOOLEAN F_CLIFO | ||||
| BEGIN | ||||
|   PROMPT 2 5 "Clienti/Fornitori" | ||||
| END | ||||
| 
 | ||||
| BOOLEAN F_ARTICOLI | ||||
| BEGIN | ||||
|   PROMPT 2 6 "Articoli" | ||||
| END | ||||
| 
 | ||||
| ENDPAGE | ||||
| 
 | ||||
| PAGE "Configurazione" -1 -1 78 18 | ||||
| 
 | ||||
| GROUPBOX DLG_NULL 48 5 | ||||
| BEGIN | ||||
|   PROMPT 1 1 "@bDatabase" | ||||
| END | ||||
| 
 | ||||
| STRING F_DSN 30 | ||||
| BEGIN | ||||
|   PROMPT 2 2 "DSN      " | ||||
|   CHECKTYPE REQUIRED | ||||
| END | ||||
| 
 | ||||
| STRING F_USR 16 | ||||
| BEGIN | ||||
|   PROMPT 2 3 "User     " | ||||
| END | ||||
| 
 | ||||
| STRING F_PWD 16 | ||||
| BEGIN | ||||
|   PROMPT 2 4 "Password " | ||||
|   FLAGS "*" | ||||
| END | ||||
| 
 | ||||
| ENDPAGE | ||||
| 
 | ||||
| ENDMASK | ||||
							
								
								
									
										325
									
								
								ve/ve7701.cpp
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										325
									
								
								ve/ve7701.cpp
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,325 @@ | ||||
| #include "ve7700.h" | ||||
| 
 | ||||
| #include <recarray.h> | ||||
| #include <tabutil.h> | ||||
| #include <utility.h> | ||||
| 
 | ||||
| #include <..\mg\anamag.h> | ||||
| #include <clifo.h> | ||||
| #include <comuni.h> | ||||
| #include <doc.h> | ||||
| #include <mov.h> | ||||
| 
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| // TGalileo_clifo
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
| int TGalileo_clifo::cancella_clifo(TLocalisamfile& clifo) const | ||||
| {      | ||||
| 	return NOERR; | ||||
| } | ||||
| 
 | ||||
| long TGalileo_clifo::get_next_key(const char tipocf) const | ||||
| { | ||||
|   TLocalisamfile clifo(LF_CLIFO); | ||||
|   long codcf = 1L; | ||||
|   if (!clifo.empty()) | ||||
|   { | ||||
|     if (tipocf == 'C') | ||||
|     { | ||||
|       clifo.put(CLI_TIPOCF, 'F'); | ||||
|       clifo.read(_isgteq); | ||||
|       if (clifo.good()) | ||||
|         clifo.prev(); | ||||
|       clifo.setstatus(NOERR); | ||||
|     } | ||||
|     else  | ||||
|       clifo.last(); | ||||
|     if (clifo.good()) | ||||
|     { | ||||
|       const char tipo = clifo.get(CLI_TIPOCF)[0];  | ||||
|       if (tipocf == tipo) | ||||
|         codcf += clifo.get_long(CLI_CODCF); | ||||
|     } | ||||
|   }                  | ||||
|   return codcf; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| long TGalileo_clifo::get_codcf(const char tipocf, const char* ricalt) const | ||||
| { | ||||
|   TLocalisamfile clifo(LF_CLIFO); | ||||
|   long codcf = -1; | ||||
| 	clifo.setkey(6); | ||||
| 	clifo.put(CLI_TIPOCF, tipocf); | ||||
| 	clifo.put(CLI_RICALT, ricalt); | ||||
| 	if (clifo.read() == NOERR)  | ||||
| 		codcf = clifo.get_long(CLI_CODCF); | ||||
|   return codcf; | ||||
| } | ||||
| 
 | ||||
| bool TGalileo_clifo::dump() | ||||
| { | ||||
| 	TConfig& ini = config(); | ||||
| 	TString_array lista_clifo; | ||||
| 	ini.list_variables(lista_clifo, true, "CLIFO", true); | ||||
| 	TToken_string lista_dump; | ||||
| 	TString16 campo_dest, campo_orig; | ||||
| 	FOR_EACH_ARRAY_ROW(lista_clifo,i,row) | ||||
| 	{ | ||||
| 		row->get(0, campo_dest);  | ||||
| 		row->get(1, campo_orig); | ||||
| 		if (!campo_orig.blank()) | ||||
| 			lista_dump.add(campo_dest); | ||||
| 	} | ||||
| 	lista_dump.add(CLI_TIPOCF); | ||||
| 	lista_dump.add(CLI_CODCF); | ||||
| 	lista_dump.add(CLI_COMCF); | ||||
| 	TSystemisamfile clifo(LF_CLIFO); | ||||
| 	return (clifo.dump("clifo.txt", lista_dump) == NOERR); | ||||
| } | ||||
| 
 | ||||
| bool TGalileo_clifo::trasferisci() | ||||
| { | ||||
|   TString query =  | ||||
| 
 | ||||
| 		"SELECT CGANA01J.CLFOCP, CGANA01J.CONTCA, CGANA01J.DSCOCP, CGANA01J.DSULCP, CGANA01J.INDICA, CGANA01J.LOCACA, CGANA01J.PROVCA, CGANA01J.CAPOCA, CGANA01J.NAZICA, CGANA01J.CISOCA, CGANA01J.PIVACA, CGANA01J.CDFICA, CGANA01J.NTELCA, CGANA01J.NFAXCA" | ||||
| 		"FROM CGANA01J"; | ||||
| 
 | ||||
| /*
 | ||||
|     "SELECT Customers_Suppliers.*, Unit_Measure.UMDesc " | ||||
| 		"FROM Customers_Suppliers " | ||||
| 		"LEFT JOIN Unit_Measure " | ||||
| 		"ON (CurrencyCode = Unit_Measure.UMCode AND Unit_Measure.UMType='9') " | ||||
|     "WHERE (StatusFlag=1 OR StatusFlag=2 OR StatusFlag=3) AND "; | ||||
| 	if (_only_agenti) | ||||
| 		query << "(FlagCustSupp='A')"; | ||||
| 	else | ||||
|     query << "(FlagCustSupp='C' OR FlagCustSupp='S')"; | ||||
| */ | ||||
|   TRecordset& recset = create_recordset(query); | ||||
| 
 | ||||
| 	TString str; | ||||
| 
 | ||||
| 	TConfig& ini = config(); | ||||
| 	TString_array lista_clifo; | ||||
| 	ini.list_variables(lista_clifo, true, "CLIFO", true); | ||||
| 	TLocalisamfile clifo(LF_CLIFO); | ||||
| 	TRectype& rec_clifo = clifo.curr(); | ||||
| 
 | ||||
| 	TRecord_cache cache_comuni(LF_COMUNI, 2); | ||||
| 
 | ||||
|   TGalileo_iterator pi(this); | ||||
|   while (++pi) | ||||
|   { | ||||
| 		const TString& contca = get_str("Contca"); | ||||
| 		const char tipocf = get_str("Clfocp")[0]; | ||||
|      | ||||
| 
 | ||||
| 		long codcf = get_codcf(tipocf, contca); // mi restiuisce  il codice del clinete  se esiste oppure -1 se da aggiungere
 | ||||
| 
 | ||||
|     bool needs_creation = codcf <= 0; | ||||
| 	  bool good = true; | ||||
|     if (!needs_creation) | ||||
| 		{ | ||||
| 			// il cliente/fornitore va aggiornato
 | ||||
|       rec_clifo.zero(); | ||||
| 			rec_clifo.put(CLI_TIPOCF, tipocf); | ||||
| 			rec_clifo.put(CLI_CODCF, codcf); | ||||
| 			good = clifo.read() == NOERR; | ||||
| 			if (!good) | ||||
|         needs_creation = true; | ||||
| 		} | ||||
|      | ||||
| 		if (needs_creation) | ||||
| 		{ | ||||
| 			// il cliente/fornitore va inserito in campo 
 | ||||
|       if (codcf <= 0) | ||||
| 			  codcf = get_next_key(tipocf); | ||||
| 			rec_clifo.zero(); | ||||
| 			rec_clifo.put(CLI_TIPOCF, tipocf); | ||||
| 			rec_clifo.put(CLI_CODCF, codcf); | ||||
| 			good &= test_write(clifo); | ||||
| 		} | ||||
| 		 | ||||
| 		if (good) | ||||
| 		{ | ||||
| 			// aggiormento comune
 | ||||
| 			TString80 dencom = get_str("Locaca"); | ||||
| 			dencom.trim(); dencom.upper(); | ||||
| 			const TRectype& reccom = cache_comuni.get(dencom); | ||||
| 			if (dencom == reccom.get(COM_DENCOM)) | ||||
| 				rec_clifo.put(CLI_COMCF, reccom.get(COM_COM)); | ||||
| 			else | ||||
| 			{ | ||||
| 				rec_clifo.zero(CLI_COMCF); | ||||
| 				rec_clifo.put(CLI_LOCCF, dencom); | ||||
| 
 | ||||
| 				log(""); | ||||
| 				str.format(FR("Cliente/Fornitore %c %ld: comune non trovato %s"), tipocf, codcf, (const char*)dencom); | ||||
| 				log(str); | ||||
| 			} | ||||
| 			aggiorna_record(clifo, lista_clifo); | ||||
| 		} | ||||
| 	}	 | ||||
|   return write_enabled(); | ||||
| } | ||||
| 
 | ||||
| bool TGalileo_clifo::aggiorna_record(TLocalisamfile& file, const TString_array& lista_campi) | ||||
| { | ||||
| 	TRectype& rec = file.curr();	 | ||||
| 	TString campo_dest, campo_orig, valore, str; | ||||
| 	FOR_EACH_ARRAY_ROW(lista_campi,i,row) | ||||
| 	{ | ||||
| 		row->get(0, campo_dest);  | ||||
| 		row->get(1, campo_orig); | ||||
| 		if (!campo_orig.blank()) | ||||
| 		{ | ||||
| 			if (campo_orig[0] == '_') | ||||
| 			{ | ||||
| 				TToken_string elabora(campo_orig.mid(1),','); | ||||
| 				const TString& str = elabora.get(); | ||||
| 				if (str == "TAB") // formato _TAB, <tabella da leggere>,<valore CODTAB>, <campo da leggere>
 | ||||
| 				{ | ||||
| 					const TString4 tab = elabora.get(); // tabella da leggere
 | ||||
| 					const TString80 campo = elabora.get(); | ||||
| 					const TString16 codtab = get_str(campo); | ||||
| 					const TString80 campotab = elabora.get(); | ||||
| 					valore = cache().get(tab, codtab, campotab); | ||||
| 				} | ||||
| 				else if (str == "FISSO")  | ||||
| 					valore = elabora.get(); // valore fisso indicato in configurazione
 | ||||
|       } | ||||
|       else | ||||
| 			  valore = get_str(campo_orig); | ||||
| 			rec.put(campo_dest, valore); | ||||
| 		} | ||||
| 	} | ||||
| 	return test_rewrite(file); | ||||
| } | ||||
| 
 | ||||
| TGalileo_clifo::TGalileo_clifo() | ||||
| { | ||||
| } | ||||
| 
 | ||||
| TGalileo_clifo::~TGalileo_clifo() | ||||
| { | ||||
| } | ||||
| 
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| // TGalileo_articoli
 | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
| int TGalileo_articoli::cancella_articolo(TLocalisamfile& anamag) const | ||||
| {      | ||||
| 	return NOERR; | ||||
| } | ||||
| 
 | ||||
| bool TGalileo_articoli::dump() | ||||
| { | ||||
| 	TConfig& ini = config(); | ||||
| 	TString_array lista_anamag; | ||||
| 	ini.list_variables(lista_anamag, true, "ANAMAG", true); | ||||
| 	TToken_string lista_dump; | ||||
| 	TString16 campo_dest, campo_orig; | ||||
| 	FOR_EACH_ARRAY_ROW(lista_anamag,i,row) | ||||
| 	{ | ||||
| 		row->get(0, campo_dest);  | ||||
| 		row->get(1, campo_orig); | ||||
| 		if (!campo_orig.blank()) | ||||
| 			lista_dump.add(campo_dest); | ||||
| 	} | ||||
| 	lista_dump.add(ANAMAG_CODART); | ||||
| 	TSystemisamfile anamag(LF_ANAMAG); | ||||
| 	return (anamag.dump("anamag.txt", lista_dump) == NOERR); | ||||
| } | ||||
| 
 | ||||
| bool TGalileo_articoli::trasferisci() | ||||
| { | ||||
|   TString query =  | ||||
| 
 | ||||
| 		"SELECT BRISO00F.RICOD, BRISO00F.RDES1, BRISO00F.RDES2, BRISO00F.RDES3, BRISO00F.RSUMS, BRISO00F.RITIP, Mid([TBDAT],9,1) AS Espr1" | ||||
| 		"FROM BRISO00F, BTABE00F" | ||||
| 		"WHERE (((Mid([TBDAT],9,1))=[RITIP]) AND ((BTABE00F.TBTIP)='COD') AND ((BTABE00F.TBELE)='RIS'))"; | ||||
| 
 | ||||
| /*
 | ||||
|     "SELECT Customers_Suppliers.*, Unit_Measure.UMDesc " | ||||
| 		"FROM Customers_Suppliers " | ||||
| 		"LEFT JOIN Unit_Measure " | ||||
| 		"ON (CurrencyCode = Unit_Measure.UMCode AND Unit_Measure.UMType='9') " | ||||
|     "WHERE (StatusFlag=1 OR StatusFlag=2 OR StatusFlag=3) AND "; | ||||
| 	if (_only_agenti) | ||||
| 		query << "(FlagCustSupp='A')"; | ||||
| 	else | ||||
|     query << "(FlagCustSupp='C' OR FlagCustSupp='S')"; | ||||
| */ | ||||
|   TRecordset& recset = create_recordset(query); | ||||
| 
 | ||||
| 	TString str; | ||||
| 
 | ||||
| 	TConfig& ini = config(); | ||||
| 	TString_array lista_anamag; | ||||
| 	ini.list_variables(lista_anamag, true, "ANAMAG", true); | ||||
| 	TLocalisamfile anamag(LF_ANAMAG); | ||||
| 	TRectype& rec_anamag = anamag.curr(); | ||||
| 
 | ||||
|   TGalileo_iterator pi(this); | ||||
|   while (++pi) | ||||
|   {	 | ||||
| 		const TString& codart = get_str("Ricod"); | ||||
|     rec_anamag.zero(); | ||||
| 		rec_anamag.put(ANAMAG_CODART, codart); | ||||
| 		bool good = anamag.read() == NOERR; | ||||
| 		if (!good) | ||||
| 		{ | ||||
| 			rec_anamag.zero(); | ||||
| 			rec_anamag.put(ANAMAG_CODART, codart); | ||||
| 			good &= test_write(anamag); | ||||
| 		} | ||||
| 		if (good) | ||||
| 			aggiorna_record(anamag, lista_anamag); | ||||
| 	}	 | ||||
|   return write_enabled(); | ||||
| } | ||||
| 
 | ||||
| bool TGalileo_articoli::aggiorna_record(TLocalisamfile& file, const TString_array& lista_campi) | ||||
| { | ||||
| 	TRectype& rec = file.curr();	 | ||||
| 	TString campo_dest, campo_orig, valore, str; | ||||
| 	FOR_EACH_ARRAY_ROW(lista_campi,i,row) | ||||
| 	{ | ||||
| 		row->get(0, campo_dest);  | ||||
| 		row->get(1, campo_orig); | ||||
| 		if (!campo_orig.blank()) | ||||
| 		{ | ||||
| 			if (campo_orig[0] == '_') | ||||
| 			{ | ||||
| 				TToken_string elabora(campo_orig.mid(1),','); | ||||
| 				const TString& str = elabora.get(); | ||||
| 				if (str == "TAB") // formato _TAB, <tabella da leggere>,<valore CODTAB>, <campo da leggere>
 | ||||
| 				{ | ||||
| 					const TString4 tab = elabora.get(); // tabella da leggere
 | ||||
| 					const TString80 campo = elabora.get(); | ||||
| 					const TString16 codtab = get_str(campo); | ||||
| 					const TString80 campotab = elabora.get(); | ||||
| 					valore = cache().get(tab, codtab, campotab); | ||||
| 				} | ||||
| 				else if (str == "FISSO")  | ||||
| 					valore = elabora.get(); // valore fisso indicato in configurazione
 | ||||
|       } | ||||
|       else | ||||
| 			  valore = get_str(campo_orig); | ||||
| 			rec.put(campo_dest, valore); | ||||
| 		} | ||||
| 	} | ||||
| 	return test_rewrite(file); | ||||
| } | ||||
| 
 | ||||
| TGalileo_articoli::TGalileo_articoli() | ||||
| { | ||||
| } | ||||
| 
 | ||||
| TGalileo_articoli::~TGalileo_articoli() | ||||
| { | ||||
| } | ||||
| 
 | ||||
							
								
								
									
										52
									
								
								ve/ve7701a.ini
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										52
									
								
								ve/ve7701a.ini
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,52 @@ | ||||
| [CLIFO] | ||||
| RAGSOC     = Dscocp | ||||
| INDCF      = Indica | ||||
| CIVCF      =  | ||||
| LOCALITACF =  | ||||
| STATOCF    =  | ||||
| COMCF      =  | ||||
| CAPCF      = Capoca | ||||
| COFI       = Cdfica | ||||
| STATOPAIV  = | ||||
| PAIV       = Pivaca | ||||
| TIPOPERS   =  | ||||
| ALLEG      = | ||||
| CODALLEG   = | ||||
| GRUPPO     = | ||||
| CONTO      = | ||||
| GRUPPORIC  = | ||||
| CONTORIC   = | ||||
| SOTTOCRIC  = | ||||
| TIPOAPER   = | ||||
| CODANAGPER = | ||||
| PTEL       = | ||||
| TEL        = Ntelca | ||||
| PTEL2      = | ||||
| TEL2       = | ||||
| PTEL3      = | ||||
| TEL3       = | ||||
| PFAX       = | ||||
| FAX        = Nfaxca | ||||
| PTELEX     = | ||||
| TELEX      = | ||||
| MAIL       =  | ||||
| DATANASC   = | ||||
| STATONASC  = | ||||
| COMNASC    = | ||||
| CODSTAT    = | ||||
| CODABI     =  | ||||
| CODCAB     =  | ||||
| NUMCC      =  | ||||
| IBAN       =  | ||||
| OCCAS      = | ||||
| STATO      = | ||||
| CODVAL     = | ||||
| CODLIN     = | ||||
| FIDO       = | ||||
| CODPAG     =  | ||||
| RICALT     = Contca | ||||
| OGGETTI    = | ||||
| SOSPESO    = | ||||
| DIRTY      = | ||||
| REFERENTE  =  | ||||
| VALINTRA   = | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user