Files correlati : Ricompilazione Demo : [ ] Commento :personalizzazione gommari prassiroma messa in ps (ps1100) git-svn-id: svn://10.65.10.50/trunk@18343 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			169 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #include <applicat.h>
 | |
| #include <filetext.h>
 | |
| #include <mask.h>
 | |
| #include <progind.h>
 | |
| #include <utility.h>
 | |
| 
 | |
| #include "../mg/umart.h"
 | |
| #include "../mg/anamag.h"
 | |
| 
 | |
| #include "ps1100.h"
 | |
| #include "ps1100100a.h"
 | |
| 
 | |
| 
 | |
| /////////////////////////////////////////////////////
 | |
| // Classe TLis2fil: filetext       //
 | |
| /////////////////////////////////////////////////////
 | |
| 
 | |
| class TLis2fil_txt: public TFile_text
 | |
| {
 | |
| public:
 | |
|   void save_price(const TRecord_text& rec, const TString& um);
 | |
|   TLis2fil_txt(const TString& file_name, const TString& config_name);
 | |
|   virtual ~TLis2fil_txt() { }
 | |
| };
 | |
| 
 | |
| TLis2fil_txt::TLis2fil_txt(const TString& file_name, const TString& config_name)
 | |
|           : TFile_text(file_name, config_name)
 | |
| {
 | |
| }
 | |
| 
 | |
| //validate per sistemare il prezzo nel file UMART
 | |
| void TLis2fil_txt::save_price(const TRecord_text& rec, const TString& um)
 | |
| {
 | |
|   const TString80 codart = rec.get(0);
 | |
|   const TPrice prezzo = real(rec.get(2));
 | |
| 
 | |
|   TLocalisamfile umart(LF_UMART);
 | |
|   TRectype& curr = umart.curr();
 | |
|   curr.put(UMART_CODART, codart);
 | |
|   curr.put(UMART_NRIGA, 1);
 | |
|   curr.put(UMART_UM, um);
 | |
|   curr.put(UMART_PREZZO, prezzo);
 | |
| 
 | |
|   if (umart.rewrite() != NOERR)
 | |
|     umart.write();
 | |
| }
 | |
| 
 | |
| /////////////////////////////////////////////////////
 | |
| // Classe TLis2fil: applicazione principale        //
 | |
| /////////////////////////////////////////////////////
 | |
| 
 | |
| class TLis2fil: public TSkeleton_application
 | |
| {
 | |
|   TMask*          _msk;
 | |
|   TString4 _um;
 | |
|   
 | |
| protected:
 | |
|   virtual const char * extra_modules() const {return "ve";}
 | |
| 
 | |
|   virtual bool create(void);
 | |
|   virtual void main_loop();
 | |
|   virtual bool destroy(void);
 | |
|   void transfer(void);
 | |
|   static bool annulla_handler(TMask_field& f, KEY k);
 | |
|   const char * get_ini_name(const TString& filename) const;
 | |
|   void import(const TString& filename);
 | |
| 
 | |
| public:
 | |
|   const TMask& msk() const { return *_msk; }
 | |
|   TLis2fil() {}
 | |
|   virtual ~TLis2fil() {}
 | |
| };
 | |
| 
 | |
| const char * TLis2fil::get_ini_name (const TString& filename) const
 | |
| {
 | |
|   TScanner scan_line(filename);
 | |
|   const TString& line = scan_line.line();
 | |
|   return line[0] == '"' ? "ps1100100p.ini" : "ps1100100m.ini";
 | |
| }
 | |
| 
 | |
| void TLis2fil::import(const TString& filename)
 | |
| {
 | |
|   //stabilisce quale tipo di listino e' il file corrente (M o P),carica il .ini relativo
 | |
|   //lo parsa in modo read
 | |
|   const char * ini = get_ini_name (filename);
 | |
|   TLis2fil_txt trasfile(filename, ini);
 | |
|   trasfile.open(filename,'r');
 | |
|   const long dimension = fsize(filename);
 | |
|   TString msg;
 | |
|   msg << "Acquisizione del file " << filename << " in corso...";
 | |
|   TProgind pi(dimension, msg, false, true);
 | |
|   
 | |
|   TRelation rel(LF_ANAMAG);
 | |
|   
 | |
|   TRecord_text curr;
 | |
|   while (trasfile.read(curr) == NOERR) 
 | |
|   { 
 | |
|     pi.setstatus(trasfile.read_file()->tellg());
 | |
|     trasfile.autosave(rel, curr);
 | |
|     trasfile.save_price(curr, _um);
 | |
|   }
 | |
| 
 | |
|   trasfile.close();
 | |
| }
 | |
| 
 | |
| // creazione dell'applicazione
 | |
| bool TLis2fil::create()
 | |
| {                        
 | |
|   open_files(LF_ANAMAG, LF_UMART, 0);
 | |
|   
 | |
|   _msk = new TMask("ps1100100a");
 | |
|   TString default_dir = "A:\\";
 | |
|   _msk->set(F_DIRNAME, default_dir);
 | |
|   TString4 default_um = "PZ";
 | |
|   _msk->set(F_UM, default_um);
 | |
| 
 | |
|   return TSkeleton_application::create();
 | |
| }
 | |
| 
 | |
| // distruzione dell'applicazione
 | |
| bool TLis2fil::destroy()
 | |
| {
 | |
|   delete _msk;
 | |
|   return TSkeleton_application::destroy();
 | |
| }
 | |
| 
 | |
| // carica la maschera 
 | |
| void TLis2fil::main_loop()
 | |
| {
 | |
|   // Preimposta gli eventuali valori specificati sulla riga di comando            
 | |
|   KEY key = K_ENTER;
 | |
|   while (key != K_QUIT)
 | |
|   {
 | |
|     key = _msk->run();
 | |
|     if (key == K_ENTER)
 | |
|     {
 | |
|       TString_array dir_files;
 | |
|       TFilename path = _msk->get(F_DIRNAME);  //da maschera si seleziona la directory di importazione..
 | |
|       _um = _msk->get(F_UM);
 | |
|       path.add("*.txt");
 | |
|       list_files(path, dir_files);  //..poi si mettono tutti i nomi dei files .txt presenti nella dir in un TString_array..
 | |
|       FOR_EACH_ARRAY_ROW(dir_files, i, row)
 | |
|         import(*row);               //..e per ogni file (riga del TString-array) si procede all'upload dei record
 | |
|     }      
 | |
|   } 
 | |
| }
 | |
| 
 | |
| 
 | |
| // handler per gestire la conferma dell'annullamento dei dati inseriti
 | |
| // nella maschera
 | |
| bool TLis2fil::annulla_handler(TMask_field& f, KEY k)
 | |
| {
 | |
|   TMask &m = f.mask();
 | |
|   if (k == K_SPACE)
 | |
|   {
 | |
|     if (yesno_box("Vuoi veramente annullare i dati inseriti"))
 | |
|        m.reset();
 | |
|   }
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| 
 | |
| int ps1100100(int argc, char* argv[])
 | |
| {
 | |
|   TLis2fil a ;
 | |
|   a.run(argc, argv, TR("Importazione listino"));
 | |
|   return 0;
 | |
| }
 |