MI2249 (vedi modifica di guy sui TConfig), MI2250, MI2248 (sempre modifica di guy), MI2251, MI2252. git-svn-id: svn://10.65.10.50/trunk@3918 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			1879 lines
		
	
	
		
			52 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			1879 lines
		
	
	
		
			52 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| // Ricezione dati da sistema
 | |
| 
 | |
| #include <mask.h>
 | |
| #include <printapp.h>
 | |
| #include <relation.h>
 | |
| #include <tabutil.h>
 | |
| #include <utility.h>
 | |
| #include <config.h>
 | |
| #include <urldefid.h> 
 | |
| #include <mailbox.h>
 | |
| #include <execp.h>                       
 | |
| #include <prefix.h>
 | |
| #include <scanner.h>
 | |
| #include <lffiles.h>  
 | |
| #include <progind.h>
 | |
| #include <nditte.h>  
 | |
| #include <mov.h>
 | |
| #include <rmov.h>
 | |
| #include <rmoviva.h>
 | |
| #include <pconti.h> 
 | |
| #include <comuni.h>
 | |
| #include <clifo.h>              
 | |
| #include <rcausali.h> 
 | |
| #include <causali.h>
 | |
| #include <occas.h>
 | |
| #include <partite.h>
 | |
| #include <scadenze.h>
 | |
| #include <pagsca.h>
 | |
| 
 | |
| #include "cglib04.h"
 | |
| #include "cglib.h"
 | |
| #include "cg2103.h"
 | |
| #include "saldacon.h" 
 | |
| 
 | |
| #include "cg6600.h"
 | |
| 
 | |
| class TRic_tab : public TApplication
 | |
| {
 | |
|   
 | |
|   TTable*           _tab_tra;                    
 | |
|   TLocalisamfile*   _caus,*_rcaus,*_clifo,*_pcon,*_mov,*_rmov,*_rmoviva;
 | |
|   TLocalisamfile*   _saldi,*_occas,*_part,*_scad,*_pagsca;
 | |
|   TIsamtempfile*    _tcaus,*_trcaus,*_tclifo,*_tpcon,*_tmov,*_trmov,*_triva;
 | |
|   TIsamtempfile*    _toccas,*_tpart,*_tscad,*_tpagsca;                 
 | |
|   TTable*           _reg;
 | |
|   TTransfer_file    _tras_file;
 | |
|   TArray            _aggiorna;
 | |
|   char              _scelta, _ric_auto;     
 | |
|   TSaldo_agg        _sld;  
 | |
|   TProgind*         _prog;
 | |
|   
 | |
|   int     _numinv,_nultras,_annoes,_g,_c,_nrig,_nrata;
 | |
|   TString _trasf,_ragsoc_dittar,_sigle_file,_std,_key,_nomeid,_dittainv;
 | |
|   long    _dittaric,_numrec,_nreg,_s,_ndoc,_npiva,_nupiva;      
 | |
|   TDate   _dataultras,_datareg,_dreg,_ddoc;                  
 | |
|   TString _uselab,_record,_nrec_file,_creg,_ccau,_tdoc,_cod_com;         
 | |
|   bool    _prima_volta,_nprot_att,_nprot_pas;             
 | |
|   long    _protiva,_uprotiva,_nprotiva,_nuprotiva,_numreg,_numreg_p,_numreg_piva,_nuovareg;
 | |
|   char    _sez;
 | |
|   real    _importo,_totdoc;
 | |
|   TString _tmpcaus,_tmprcaus,_tmpclifo,_tmpcon,_tmpmov,_tmprmov,_tmpriva;
 | |
|   TString _tmpoccas,_tmppart,_tmpscad,_tmppagsca;
 | |
|   
 | |
| public:        
 | |
|   TString _titolo;
 | |
|   
 | |
|   virtual bool create();
 | |
|   virtual bool destroy();
 | |
|   virtual bool menu(MENU_TAG m);         
 | |
|   virtual void on_config_change();    
 | |
|   bool    main_loop();
 | |
|   bool    video();
 | |
|   bool    leggi_trasfer();
 | |
|   bool    controlli();
 | |
|   void    ditta_ricevente();
 | |
|   bool    controllo_pre_ricezione();  
 | |
|   void    leggi_record_controllo();
 | |
|   void    apri_file_temp();
 | |
|   void    chiudi_file_temp();
 | |
| 
 | |
|   void    setta_parametri_record(const TString& sigla,const TString& flag);
 | |
|   
 | |
|   void    trasferimento();
 | |
|   
 | |
|   void    ricevi_causali(TString& key, char sigla);    
 | |
|   void    cancella_righe_causali(TString& codcaus);  
 | |
|   void    scrivi_righe_causali(TString& codcaus, char sigla);
 | |
|   void    ricevi_clifo(TString& key, char sigla);
 | |
|   void    ricevi_pcon(TString& key, char sigla);  
 | |
|   void    conto(TRectype& pcon,char flag,bool esiste);
 | |
|   void    sottoconto(TRectype& pcon,char flag,bool esiste);
 | |
|   void    scrivi_pcon(TRectype& pcon,bool esiste);
 | |
|   
 | |
|   void    ricevi_movPN(TString& key, char sigla);
 | |
|   void    scrivi_righePN(long numreg);
 | |
|   void    ricevi_movIVA(TString& key, char sigla);
 | |
|   void    scrivi_righeIVA(long numreg);
 | |
|   void    ricevi_movSC(TString& key,char sigla);
 | |
|   long    esiste_numreg(long nreg);                     
 | |
|   void    num_protocollo();
 | |
|   long    controlli_primanota();
 | |
|   long    ulnumprot_reg(int anno,TString& codreg);             
 | |
|   long    ultima_registrazione();
 | |
|   void    aggiorna_reg(int anno,TString& codreg,long ulnum);
 | |
|   char    ricerca_causale(TString& field);       
 | |
|   bool    esiste_partita(TString& key);  
 | |
|   void    rigaErata(char,int,int,long,int,TString&,int,int);
 | |
|   void    aggiorna_temp_scad(char,int,int,long,int,TString&,int,int,int,int);  
 | |
|   bool    occasionali(TString& ocfpi);
 | |
|   long    nuovaregSC(long nreg);
 | |
|   
 | |
|   TRic_tab(char ric_tab_mov, char ric_auto = '\0');
 | |
| };                                      
 | |
| 
 | |
| HIDDEN TRic_tab& app() { return (TRic_tab &) main_app(); }
 | |
| 
 | |
| TRic_tab::TRic_tab(char ric_tab_mov, char ric_auto) :
 | |
| _scelta(toupper(ric_tab_mov)), _ric_auto(toupper(ric_auto))
 | |
| {
 | |
|   if (_scelta == 'T')
 | |
|     _titolo = "Ricezione tabelle";
 | |
| 
 | |
|   if (_scelta == 'M')      
 | |
|     _titolo = "Ricezione movimenti";
 | |
| }
 | |
| 
 | |
| void TRic_tab::on_config_change()
 | |
| {
 | |
|   TPartita::carica_allineamento();    // Necessario per utilizzare l'oggetto TPartita con un corretto allineamento 
 | |
| }
 | |
| 
 | |
| bool TRic_tab::create()
 | |
| {
 | |
|   TApplication::create();
 | |
|   
 | |
|   _tab_tra  = new TTable ("%TRA");
 | |
|   
 | |
|   _reg      = new TTable ("REG");
 | |
| 
 | |
|   if (_scelta == 'T')
 | |
|   {
 | |
|     _caus     = new TLocalisamfile (LF_CAUSALI);
 | |
|     _rcaus    = new TLocalisamfile (LF_RCAUSALI);
 | |
|     _clifo    = new TLocalisamfile (LF_CLIFO);
 | |
|     _pcon     = new TLocalisamfile (LF_PCON);
 | |
|   }
 | |
|   else
 | |
|   {
 | |
|     _mov      = new TLocalisamfile (LF_MOV);
 | |
|     _rmov     = new TLocalisamfile (LF_RMOV);
 | |
|     _rmoviva  = new TLocalisamfile (LF_RMOVIVA);       
 | |
|     _saldi    = new TLocalisamfile (LF_SALDI);       
 | |
|     _occas    = new TLocalisamfile (LF_OCCAS);
 | |
|     _part     = new TLocalisamfile (LF_PARTITE);
 | |
|     _scad     = new TLocalisamfile (LF_SCADENZE);
 | |
|     _pagsca   = new TLocalisamfile (LF_PAGSCA);
 | |
|   }
 | |
|   
 | |
|   _numrec      = 1;
 | |
|   _prima_volta = TRUE;   
 | |
|   _aggiorna.destroy();
 | |
|   _numreg_p    = 0;                
 | |
|   _numreg_piva = 0;                
 | |
|   _nreg        = 0;
 | |
|   _sld.reset();
 | |
|   
 | |
|   dispatch_e_menu (BAR_ITEM(1));
 | |
| 
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TRic_tab::destroy()
 | |
| {
 | |
|   delete _tab_tra;                            
 | |
|   delete _reg;
 | |
|   
 | |
|   if (_scelta == 'T')
 | |
|   {
 | |
|     delete _caus;
 | |
|     delete _rcaus;
 | |
|     delete _clifo;
 | |
|     delete _pcon;
 | |
|   }               
 | |
|   else
 | |
|   {
 | |
|     delete _mov;
 | |
|     delete _rmov;
 | |
|     delete _rmoviva;
 | |
|     delete _saldi;                           
 | |
|     delete _occas;  
 | |
|     delete _part;
 | |
|     delete _scad;
 | |
|     delete _pagsca;
 | |
|   }
 | |
|   
 | |
|   return TApplication::destroy();
 | |
| }                                
 | |
| 
 | |
| void TRic_tab::leggi_record_controllo()
 | |
| {
 | |
|   _tras_file.read_control_rec();
 | |
|   _record = _tras_file.record();
 | |
| }
 | |
| 
 | |
| bool TRic_tab::main_loop()
 | |
| {      
 | |
|   int posiz;
 | |
|   
 | |
|   _dittaric = get_firm();
 | |
| 
 | |
|   if (_ric_auto == 'A')
 | |
|   {            
 | |
|     leggi_trasfer();
 | |
|     
 | |
|     if (_scelta == 'T')
 | |
|     {  
 | |
|       apri_file_temp();
 | |
|        
 | |
|       trasferimento();
 | |
|       posiz  = _tras_file.num('Z'); //Ritorna la posizione della sigla all'interno dell'indice
 | |
|       
 | |
|       if (posiz >= 0)                 
 | |
|       {   
 | |
|         setta_parametri_record(" ","C");
 | |
|         //message_box("Aggiornamento tabelle terminato: proseguire con controllo movimenti");
 | |
|         leggi_record_controllo();
 | |
|         TString str;
 | |
|         str.spaces(60);
 | |
|         _record.overwrite(str,241);
 | |
|         _tras_file.write_control_rec(_record,1024);
 | |
|       }
 | |
|       else
 | |
|       {
 | |
|         chiudi_file_temp();
 | |
|         //message_box("Trasferimento interamente completato: proseguire per cancellare il file");
 | |
|         setta_parametri_record(" ","*");
 | |
|         //_tras_file.remove_all();
 | |
|         //setta_parametri_record(" "," ");
 | |
|       }
 | |
|     }
 | |
|     else
 | |
|       if (_scelta == 'M')
 | |
|       {
 | |
|         apri_file_temp();
 | |
|         
 | |
|         trasferimento();   
 | |
|         chiudi_file_temp();
 | |
|         //message_box("Trasferimento interamente completato: proseguire per cancellare il file");
 | |
|         setta_parametri_record(" ","*");
 | |
|         //_tras_file.remove_all();
 | |
|         //setta_parametri_record(" "," ");  
 | |
|       }  
 | |
|   }
 | |
|   else
 | |
|   {
 | |
|   if (_scelta == 'T')
 | |
|   {  
 | |
|     if (video())
 | |
|     { 
 | |
|       if (_std == "")
 | |
|         if (!controllo_pre_ricezione())
 | |
|           return FALSE;
 | |
| 
 | |
|       apri_file_temp();
 | |
|       
 | |
|       trasferimento();
 | |
|       posiz  = _tras_file.num('Z'); //Ritorna la posizione della sigla all'interno dell'indice
 | |
|       
 | |
|       if (posiz >= 0)                 
 | |
|       {   
 | |
|         setta_parametri_record(" ","C");
 | |
|         message_box("Aggiornamento tabelle terminato: proseguire con controllo movimenti");
 | |
|         leggi_record_controllo();
 | |
|         TString str;
 | |
|         str.spaces(60);
 | |
|         _record.overwrite(str,241);
 | |
|         _tras_file.write_control_rec(_record,1024);
 | |
|       }
 | |
|       else
 | |
|       {
 | |
|         chiudi_file_temp();
 | |
|         message_box("Trasferimento interamente completato: proseguire per cancellare il file");
 | |
|         setta_parametri_record(" ","*");
 | |
|         _tras_file.remove_all();
 | |
|         setta_parametri_record(" "," ");
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   else
 | |
|     if (_scelta == 'M')
 | |
|     {
 | |
|       if (video())
 | |
|       { 
 | |
|         apri_file_temp();
 | |
|         
 | |
|         trasferimento();   
 | |
|         chiudi_file_temp();
 | |
|         message_box("Trasferimento interamente completato: proseguire per cancellare il file");
 | |
|         setta_parametri_record(" ","*");
 | |
|         _tras_file.remove_all();
 | |
|         setta_parametri_record(" "," ");  
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   
 | |
|   return FALSE;
 | |
| }
 | |
| 
 | |
| void TRic_tab::trasferimento()
 | |
| {
 | |
|   char    uselab;
 | |
|   TString key = "";
 | |
|   int     posiz,i;
 | |
|   int     last_tab; 
 | |
|   char    sigla;               
 | |
|   TString message;
 | |
|   
 | |
|   uselab = (_tras_file.ult_file())[0];
 | |
|   posiz  = _tras_file.num(uselab); //Ritorna la posizione della sigla all'interno dell'indice
 | |
|   key    = _tras_file.key(); 
 | |
|   key.trim(); 
 | |
|   
 | |
|   leggi_record_controllo();
 | |
|   
 | |
|   if (_scelta == 'T')
 | |
|     last_tab = _tras_file.last_tab();  
 | |
|   else
 | |
|     if (_scelta == 'M')
 | |
|       last_tab = _tras_file.last_mov();        
 | |
|   
 | |
|   for (i = posiz; i < last_tab;i++)
 | |
|   { 
 | |
|     long numero = atol(_record.mid( ((i * 6) + 95),6));
 | |
|     if (numero == 0) continue;              
 | |
|     long nrec = ((_tras_file.nrec(i))+1);    
 | |
|     sigla = _tras_file.name(i)[0];
 | |
|     long cicli; 
 | |
|     
 | |
|     switch (sigla)
 | |
|     {
 | |
|       case 'W': 
 | |
|         message = "Ricezione tabella causali in corso... Prego attendere.";
 | |
|         cicli   = _tcaus->items();
 | |
|         break;
 | |
|       case 'A': 
 | |
|         message = "Ricezione anagrafica Clienti / Fornitori in corso... Prego attendere.";
 | |
|         cicli   = _tclifo->items();
 | |
|         break;
 | |
|       case 'P': 
 | |
|         message = "Ricezione anagrafica Piano dei Conti in corso... Prego attendere.";
 | |
|         cicli   = _tpcon->items();
 | |
|         break;
 | |
|       case 'Z': 
 | |
|         message = "Ricezione Movimenti di primanota in corso... Prego attendere."; 
 | |
|         cicli   = _tmov->items();
 | |
|         break;
 | |
|       case 'U': 
 | |
|         message = "Ricezione Movimenti iva in corso... Prego attendere."; 
 | |
|         cicli   = _tmov->items();
 | |
|         break;       
 | |
|       case 'B': 
 | |
|         message = "Ricezione Movimenti saldaconto in corso... Prego attendere."; 
 | |
|         cicli   = _tpart->items();
 | |
|         break;                       
 | |
|       default: break;
 | |
|     }
 | |
|     _prog = new TProgind(cicli,message,FALSE);
 | |
|     
 | |
|     if (_scelta == 'T')
 | |
|     { 
 | |
|       if (sigla == 'W')
 | |
|         ricevi_causali(key,sigla);
 | |
|       if (sigla == 'A')
 | |
|         ricevi_clifo(key,sigla);
 | |
|       if (sigla == 'P')
 | |
|         ricevi_pcon(key,sigla);
 | |
|     } 
 | |
|     else
 | |
|       if (_scelta == 'M')
 | |
|       { 
 | |
|         if (sigla == 'Z')
 | |
|         {
 | |
|           ricevi_movPN(key,sigla);
 | |
|           _sld.registra();
 | |
|         }
 | |
|         else
 | |
|           if (sigla == 'U')
 | |
|             ricevi_movIVA(key,sigla); 
 | |
|           else
 | |
|             if (sigla == 'B')
 | |
|               ricevi_movSC(key,sigla);
 | |
|       }
 | |
|     delete _prog;  
 | |
|     key = ""; //Altrimenti in caso di ripartenza mi ripristina sempre la situazione
 | |
|   }
 | |
| }
 | |
| 
 | |
| void TRic_tab::ricevi_causali(TString& key, char uselab)
 | |
| {
 | |
|   TString str;
 | |
|                                        
 | |
|   char flag = _tras_file.flg_agg(uselab);                                     
 | |
|   
 | |
|   _tcaus->setkey(1);
 | |
|                     
 | |
|   if (key.empty())
 | |
|     _tcaus->first();
 | |
|   else
 | |
|   {             
 | |
|     TString causale (key.mid(0,3));
 | |
|     _tcaus->zero();
 | |
|     _tcaus->put(CAU_CODCAUS, causale);
 | |
|     _tcaus->read();
 | |
|   }
 | |
|   
 | |
|   for(; !_tcaus->eof(); _tcaus->next())
 | |
|   { 
 | |
|     _prog->addstatus(1);
 | |
|                                
 | |
|     TString codcaus = _tcaus->get(CAU_CODCAUS);
 | |
|     
 | |
|     _caus->curr() = _tcaus->curr(); 
 | |
|     
 | |
|     if (_caus->read() == NOERR)  // Esiste la testata
 | |
|     {
 | |
|       if (flag == 'N') 
 | |
|       {
 | |
|         leggi_record_controllo();
 | |
|         TString chiave;
 | |
|         chiave.format("%3s",(const char*) codcaus);      
 | |
|         TString sigla (format("%c", uselab));
 | |
|         str = _record.overwrite(sigla,240);
 | |
|         str = _record.overwrite(chiave,241);
 | |
|         _tras_file.write_control_rec(str,1024);
 | |
|         continue;
 | |
|       }
 | |
|       else
 | |
|         if (flag == 'D')
 | |
|         {
 | |
|           TString descr = _tcaus->get(CAU_DESCR);
 | |
|           
 | |
|           _caus->put(CAU_DESCR, descr);
 | |
|           _caus->rewrite();
 | |
|         }                  
 | |
|         else
 | |
|           if (flag == 'T')
 | |
|           {
 | |
|             scrivi_righe_causali(codcaus,uselab);
 | |
|             
 | |
|             _caus->zero();
 | |
|             _caus->curr() = _tcaus->curr();
 | |
|             _caus->rewrite();
 | |
|           }
 | |
|     }  
 | |
|     else
 | |
|     {
 | |
|       scrivi_righe_causali(codcaus,uselab);
 | |
|             
 | |
|       _caus->zero();
 | |
|       _caus->curr() = _tcaus->curr();
 | |
|       _caus->write();
 | |
|     }
 | |
|           
 | |
|     leggi_record_controllo();
 | |
|     TString chiave;
 | |
|     chiave.format("%3s",(const char*) codcaus);      
 | |
|     TString sigla (format("%c", uselab));
 | |
|     str = _record.overwrite(sigla,240);
 | |
|     str = _record.overwrite(chiave,241);
 | |
|     _tras_file.write_control_rec(str,1024);          
 | |
|   }
 | |
| }
 | |
| 
 | |
| void TRic_tab::cancella_righe_causali(TString& codcaus)
 | |
| {
 | |
|   _rcaus->setkey(1);
 | |
|   _rcaus->zero();
 | |
|   _rcaus->put(RCA_CODCAUS, codcaus);
 | |
|   TRectype rcau (LF_RCAUSALI);
 | |
|   rcau = _rcaus->curr();
 | |
|   for (_rcaus->read(); !_rcaus->eof(); _rcaus->next())
 | |
|   {
 | |
|     if (_rcaus->curr() > rcau) break;
 | |
|     
 | |
|     _rcaus->remove();
 | |
|   }
 | |
| }
 | |
| 
 | |
| void TRic_tab::scrivi_righe_causali(TString& codcaus, char uselab)
 | |
| {
 | |
|   TString str;
 | |
|   
 | |
|   cancella_righe_causali(codcaus);
 | |
|                                    
 | |
|   _trcaus->setkey(1);
 | |
|   _trcaus->zero();
 | |
|   _trcaus->put(RCA_CODCAUS, codcaus);
 | |
|   TRectype rcau (LF_RCAUSALI);                               
 | |
|   rcau = _trcaus->curr();
 | |
|   for (_trcaus->read(); !_trcaus->eof(); _trcaus->next())
 | |
|   {
 | |
|     if (_trcaus->curr() > rcau) break;
 | |
|       
 | |
|     _rcaus->curr() = _trcaus->curr();
 | |
|     _rcaus->write();
 | |
|       
 | |
|     leggi_record_controllo();
 | |
|     TString chiave;
 | |
|     chiave.format("%3s",(const char*) codcaus);
 | |
|     TString sigla (format("%c", uselab));
 | |
|     str = _record.overwrite(sigla,240);
 | |
|     str = _record.overwrite(chiave,241);
 | |
|     _tras_file.write_control_rec(str,1024);      
 | |
|   }
 | |
| }
 | |
| 
 | |
| void TRic_tab::ricevi_clifo(TString& key, char uselab)
 | |
| {
 | |
|   TString str;
 | |
|                                        
 | |
|   char flag = _tras_file.flg_agg(uselab);                                     
 | |
|   
 | |
|   _tclifo->setkey(1);
 | |
|                     
 | |
|   if (key.empty())
 | |
|     _tclifo->first();
 | |
|   else
 | |
|   {         
 | |
|     char tipo   = (key.mid(0,1))[0];     
 | |
|     long codice = atol(key.mid(1,6));
 | |
|     _tclifo->zero();
 | |
|     _tclifo->put(CLI_TIPOCF, tipo);
 | |
|     _tclifo->put(CLI_CODCF,  codice);
 | |
|     _tclifo->read();
 | |
|   }
 | |
|   
 | |
|   for(; !_tclifo->eof(); _tclifo->next())
 | |
|   { 
 | |
|     _prog->addstatus(1);
 | |
|     
 | |
|     char tipocf = _tclifo->get_char(CLI_TIPOCF);                            
 | |
|     long codcf  = _tclifo->get_long(CLI_CODCF);
 | |
|     
 | |
|     _clifo->curr() = _tclifo->curr(); 
 | |
|     
 | |
|     if (_clifo->read() == NOERR)  // Esiste gia' il cliente
 | |
|     {
 | |
|       if (flag == 'N') 
 | |
|       {
 | |
|         leggi_record_controllo();
 | |
|         TString chiave;
 | |
|         chiave.format("%c%06ld", tipocf,codcf);      
 | |
|         TString sigla (format("%c", uselab));
 | |
|         str = _record.overwrite(sigla,240);
 | |
|         str = _record.overwrite(chiave,241);
 | |
|         _tras_file.write_control_rec(str,1024);
 | |
|         continue;
 | |
|       }
 | |
|       else
 | |
|         if (flag == 'D')
 | |
|         {
 | |
|           TString ragsoc = _tclifo->get(CLI_RAGSOC);
 | |
|           TString ind    = _tclifo->get(CLI_INDCF);
 | |
|           TString civ    = _tclifo->get(CLI_CIVCF);
 | |
|           TString com    = _tclifo->get(CLI_COMCF);
 | |
|           TString cap    = _tclifo->get(CLI_CAPCF);
 | |
|           TString cofi   = _tclifo->get(CLI_COFI);
 | |
|           TString paiv   = _tclifo->get(CLI_PAIV);
 | |
|           TString ptel   = _tclifo->get(CLI_PTEL);
 | |
|           TString tel    = _tclifo->get(CLI_TEL);
 | |
|           
 | |
|           _clifo->put(CLI_RAGSOC, ragsoc);
 | |
|           _clifo->put(CLI_INDCF,  ind);
 | |
|           _clifo->put(CLI_CIVCF,  civ);
 | |
|           _clifo->put(CLI_COMCF,  com);
 | |
|           _clifo->put(CLI_CAPCF,  cap);
 | |
|           _clifo->put(CLI_COFI,   cofi);
 | |
|           _clifo->put(CLI_PAIV,   paiv);
 | |
|           _clifo->put(CLI_PTEL,   ptel);
 | |
|           _clifo->put(CLI_TEL,   tel);
 | |
|           
 | |
|           _clifo->rewrite();
 | |
|         }                  
 | |
|         else
 | |
|           if (flag == 'T')
 | |
|           {
 | |
|             _clifo->zero();
 | |
|             _clifo->curr() = _tclifo->curr();
 | |
|             _clifo->rewrite();
 | |
|           }
 | |
|     }  
 | |
|     else
 | |
|     {
 | |
|       _clifo->zero();
 | |
|       _clifo->curr() = _tclifo->curr();
 | |
|       _clifo->write();
 | |
|     }
 | |
|           
 | |
|     leggi_record_controllo();
 | |
|     TString chiave;
 | |
|     chiave.format("%c%06ld", tipocf, codcf);      
 | |
|     TString sigla (format("%c", uselab));
 | |
|     str = _record.overwrite(sigla,240);
 | |
|     str = _record.overwrite(chiave,241);
 | |
|     _tras_file.write_control_rec(str,1024);          
 | |
|   }
 | |
| }
 | |
| 
 | |
| void TRic_tab::ricevi_pcon(TString& key, char uselab)
 | |
| {
 | |
|   TString str;            
 | |
|   bool esiste;
 | |
|   TRectype pcon (LF_PCON);
 | |
|                                        
 | |
|   char flag = _tras_file.flg_agg(uselab);                
 | |
|   char f_IV = _tras_file.flg_agg_IV(uselab);
 | |
|   
 | |
|   _tpcon->setkey(1);
 | |
|                     
 | |
|   if (key.empty())
 | |
|     _tpcon->first();
 | |
|   else
 | |
|   {             
 | |
|     int  gruppo = atoi(key.mid(0,3));
 | |
|     int  conto  = atoi(key.mid(3,3));
 | |
|     long sottoc = atol(key.mid(6,6));
 | |
|     
 | |
|     _tpcon->zero();
 | |
|     _tpcon->put(PCN_GRUPPO, gruppo);
 | |
|     if (conto != 0)
 | |
|       _tpcon->put(PCN_CONTO, conto);
 | |
|     if (sottoc != 0)
 | |
|       _tpcon->put(PCN_SOTTOCONTO, sottoc);
 | |
|     _tpcon->read();
 | |
|   }
 | |
|   
 | |
|   for(; !_tpcon->eof(); _tpcon->next())
 | |
|   { 
 | |
|     _prog->addstatus(1);
 | |
|                                
 | |
|     int  g = _tpcon->get_int (PCN_GRUPPO);
 | |
|     int  c = _tpcon->get_int (PCN_CONTO);
 | |
|     long s = _tpcon->get_long(PCN_SOTTOCONTO);
 | |
|     
 | |
|     _pcon->curr() = _tpcon->curr(); 
 | |
|     
 | |
|     if (_pcon->read() == NOERR)      // Esiste gia' sul Piano dei Conti
 | |
|     {         
 | |
|       esiste = TRUE;
 | |
|       
 | |
|       if (flag == 'N') 
 | |
|       { 
 | |
|         leggi_record_controllo();
 | |
|         TString chiave;
 | |
|         chiave.format("%03d%03d%06ld", g, c, s);      
 | |
|         TString sigla (format("%c", uselab));
 | |
|         str = _record.overwrite(sigla,240);
 | |
|         str = _record.overwrite(chiave,241);
 | |
|         _tras_file.write_control_rec(str,1024);
 | |
|         continue;
 | |
|       }
 | |
|       else
 | |
|         if (flag == 'D')
 | |
|         {
 | |
|           TString descr = _tpcon->get(PCN_DESCR);
 | |
|   
 | |
|           _pcon->put(PCN_DESCR, descr);
 | |
|           _pcon->rewrite();
 | |
|         }
 | |
|         else                  
 | |
|           if (flag == 'T')
 | |
|             scrivi_pcon(pcon,esiste);
 | |
|     }  
 | |
|     else                             // Non esiste sull'archivio effettivo
 | |
|     { 
 | |
|       esiste = FALSE;      
 | |
|       scrivi_pcon(pcon,esiste);
 | |
|     }          
 | |
|     
 | |
|     TRecnotype rec;
 | |
|     if (esiste)
 | |
|       rec = _pcon->recno();
 | |
|     
 | |
|     if (f_IV == 'T')
 | |
|     {
 | |
|       if (g != 0 && c == 0)
 | |
|         conto(pcon,flag,esiste);
 | |
|       if (g != 0 && c != 0 && s != 0)
 | |
|         sottoconto(pcon,flag,esiste);
 | |
|     }
 | |
|     
 | |
|     if (esiste)
 | |
|       _pcon->readat(rec);
 | |
|     
 | |
|     if ( (flag == 'T' && esiste) || !esiste)  
 | |
|       _pcon->curr() = pcon;  
 | |
|     
 | |
|     if (esiste)
 | |
|       _pcon->rewrite();
 | |
|     else
 | |
|       _pcon->write();
 | |
|     
 | |
|     leggi_record_controllo();
 | |
|     TString chiave;
 | |
|     chiave.format("%03d%03d%06ld", g, c, s);      
 | |
|     TString sigla (format("%c", uselab));
 | |
|     str = _record.overwrite(sigla,240);
 | |
|     str = _record.overwrite(chiave,241);
 | |
|     _tras_file.write_control_rec(str,1024);          
 | |
|   }
 | |
| }
 | |
| 
 | |
| void TRic_tab::scrivi_pcon(TRectype& pcon,bool esiste)
 | |
| {
 | |
|   int     g         = _tpcon->get_int (PCN_GRUPPO);
 | |
|   int     c         = _tpcon->get_int (PCN_CONTO);
 | |
|   long    s         = _tpcon->get_long(PCN_SOTTOCONTO);
 | |
|   TString descr     = _tpcon->get     (PCN_DESCR);
 | |
|   int     indbil    = _tpcon->get_int (PCN_INDBIL);
 | |
|   char    tmcf      = _tpcon->get_char(PCN_TMCF);
 | |
|   bool    stsottbil = _tpcon->get_bool(PCN_STSOTTBIL);
 | |
|   bool    compens   = _tpcon->get_bool(PCN_COMPENS);
 | |
|   int     tipospric = _tpcon->get_int (PCN_TIPOSPRIC);
 | |
|   TString codcbl    = _tpcon->get     (PCN_CODCBL);
 | |
|   bool    stsottab  = _tpcon->get_bool(PCN_STSOTTAB);
 | |
|   char    sezsaldi  = _tpcon->get_char(PCN_SEZSALDI);
 | |
|   bool    sospeso   = _tpcon->get_bool(PCN_SOSPESO);
 | |
|   int     ricser    = _tpcon->get_int (PCN_RICSER); 
 | |
|   
 | |
|   pcon.zero();
 | |
|   pcon.put(PCN_GRUPPO, g);
 | |
|   if (c != 0)
 | |
|     pcon.put(PCN_CONTO, c);
 | |
|   if (s != 0)
 | |
|     pcon.put(PCN_SOTTOCONTO, s);
 | |
|   pcon.put(PCN_DESCR,     descr);
 | |
|   pcon.put(PCN_INDBIL,    indbil);
 | |
|   pcon.put(PCN_TMCF,      tmcf);
 | |
|   pcon.put(PCN_STSOTTBIL, stsottbil);
 | |
|   pcon.put(PCN_COMPENS,   compens);
 | |
|   pcon.put(PCN_TIPOSPRIC, tipospric);
 | |
|   pcon.put(PCN_CODCBL,    codcbl);
 | |
|   pcon.put(PCN_STSOTTAB,  stsottab);
 | |
|   pcon.put(PCN_SEZSALDI,  sezsaldi);
 | |
|   pcon.put(PCN_SOSPESO,   sospeso);
 | |
|   pcon.put(PCN_RICSER,    ricser);
 | |
| }
 | |
| 
 | |
| void TRic_tab::conto(TRectype& pcon,char flag,bool esiste)
 | |
| {
 | |
|   int g = _tpcon->get_int(PCN_GRUPPO);
 | |
|   int c = _tpcon->get_int(PCN_CONTO);
 | |
|    
 | |
|   TString sez  = _tpcon->get    (PCN_SEZIVD);
 | |
|   TString let  = _tpcon->get    (PCN_LETTIVD);
 | |
|   TString numr = _tpcon->get    (PCN_NUMRIVD);
 | |
|   int     num  = _tpcon->get_int(PCN_NUMIVD);
 | |
|   
 | |
|   if (sez.not_empty())
 | |
|   {  
 | |
|     if (!esiste || (esiste && flag == 'T') )
 | |
|     {
 | |
|       pcon.put (PCN_SEZIVD,  sez);
 | |
|       pcon.put (PCN_LETTIVD, let);
 | |
|       pcon.put (PCN_NUMRIVD, numr);
 | |
|       pcon.put (PCN_NUMIVD,  num);
 | |
|       pcon.zero(PCN_SEZIVDOPP);
 | |
|       pcon.zero(PCN_LETTIVDOPP);
 | |
|       pcon.zero(PCN_NUMRIVDOPP);
 | |
|       pcon.zero(PCN_NUMIVDOPP);
 | |
|       
 | |
|       _tras_file.annulla_classi(g,c,TRUE);
 | |
|     }
 | |
|   }
 | |
|   else
 | |
|   {
 | |
|     if (esiste && flag == 'T')
 | |
|     {
 | |
|       pcon.put (PCN_SEZIVD,  sez);
 | |
|       pcon.put (PCN_LETTIVD, let);
 | |
|       pcon.put (PCN_NUMRIVD, numr);
 | |
|       pcon.put (PCN_NUMIVD,  num);
 | |
|       pcon.zero(PCN_SEZIVDOPP);
 | |
|       pcon.zero(PCN_LETTIVDOPP);
 | |
|       pcon.zero(PCN_NUMRIVDOPP);
 | |
|       pcon.zero(PCN_NUMIVDOPP);
 | |
|       
 | |
|       _tras_file.annulla_classi(g,c,TRUE);  
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| void TRic_tab::sottoconto(TRectype& pcon,char flag,bool esiste)
 | |
| {
 | |
|   int g = _tpcon->get_int(PCN_GRUPPO);
 | |
|   int c = _tpcon->get_int(PCN_CONTO);
 | |
| 
 | |
|   TString sez    = _tpcon->get    (PCN_SEZIVD);
 | |
|   TString let    = _tpcon->get    (PCN_LETTIVD);
 | |
|   TString numr   = _tpcon->get    (PCN_NUMRIVD);
 | |
|   int     num    = _tpcon->get_int(PCN_NUMIVD);
 | |
|   TString sezop  = _tpcon->get    (PCN_SEZIVDOPP);
 | |
|   TString letop  = _tpcon->get    (PCN_LETTIVDOPP);
 | |
|   TString numrop = _tpcon->get    (PCN_NUMRIVDOPP);
 | |
|   int     numop  = _tpcon->get_int(PCN_NUMIVDOPP);
 | |
|   
 | |
|   if (sez.not_empty())
 | |
|   {  
 | |
|     if (!esiste || (esiste && flag == 'T') )
 | |
|     {
 | |
|       pcon.put(PCN_SEZIVD,     sez);
 | |
|       pcon.put(PCN_LETTIVD,    let);
 | |
|       pcon.put(PCN_NUMRIVD,    numr);
 | |
|       pcon.put(PCN_NUMIVD,     num);
 | |
|       pcon.put(PCN_SEZIVDOPP,  sezop);
 | |
|       pcon.put(PCN_LETTIVDOPP, letop);
 | |
|       pcon.put(PCN_NUMRIVDOPP, numrop);
 | |
|       pcon.put(PCN_NUMIVDOPP,  numop);
 | |
| 
 | |
|       _tras_file.annulla_classi(g,c,FALSE);
 | |
|     }
 | |
|   }
 | |
|   else
 | |
|   {
 | |
|     if (sezop.not_empty())
 | |
|     {
 | |
|       if (!esiste || (esiste && flag == 'T') )
 | |
|       {
 | |
|         pcon.put(PCN_SEZIVDOPP,  sezop);
 | |
|         pcon.put(PCN_LETTIVDOPP, letop);
 | |
|         pcon.put(PCN_NUMRIVDOPP, numrop);
 | |
|         pcon.put(PCN_NUMIVDOPP,  numop);      
 | |
|       }
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|       pcon.zero(PCN_SEZIVDOPP);
 | |
|       pcon.zero(PCN_LETTIVDOPP);
 | |
|       pcon.zero(PCN_NUMRIVDOPP);
 | |
|       pcon.zero(PCN_NUMIVDOPP);
 | |
|     }  
 | |
|   }
 | |
| }
 | |
| 
 | |
| long TRic_tab::esiste_numreg(long numulreg)
 | |
| { 
 | |
|   TLocalisamfile mov (LF_MOV);
 | |
|   
 | |
|   do
 | |
|   {
 | |
|     numulreg++;
 | |
|     
 | |
|     mov.setkey(1);
 | |
|     mov.zero();
 | |
|     mov.put(MOV_NUMREG, numulreg);
 | |
|   }
 | |
|   while (mov.read() == NOERR);
 | |
|   
 | |
|   return numulreg;
 | |
| }
 | |
| 
 | |
| long TRic_tab::ultima_registrazione()
 | |
| { 
 | |
|   if (_nreg == 0)
 | |
|   {
 | |
|     TLocalisamfile mov (LF_MOV);
 | |
|     
 | |
|     mov.last();
 | |
|     return (mov.get_long(MOV_NUMREG));
 | |
|   }                                
 | |
|   else
 | |
|     return _nreg;
 | |
| }
 | |
| 
 | |
| void TRic_tab::num_protocollo()
 | |
| {
 | |
|   _protiva  = _tmov->get_long(MOV_PROTIVA);
 | |
|   _uprotiva = _tmov->get_long(MOV_UPROTIVA);
 | |
|   
 | |
|   if (_protiva == 0)
 | |
|     _uprotiva = 0;
 | |
|   
 | |
|   _nprotiva  = _protiva;
 | |
|   _nuprotiva = _uprotiva;
 | |
| }                        
 | |
| 
 | |
| long TRic_tab::ulnumprot_reg(int anno,TString& cr)
 | |
| {
 | |
|   TRegistro rg (cr, anno);   
 | |
|   
 | |
|   return rg.protocol();
 | |
| }
 | |
| 
 | |
| void TRic_tab::aggiorna_reg(int anno,TString& codreg,long ulnum)
 | |
| {
 | |
|   TTable reg ("REG");
 | |
|   TString16 dep;
 | |
|   
 | |
|   if (real::is_natural(codreg)) 
 | |
|     dep.format("%04d%03s", anno,(const char*) codreg);
 | |
|   else
 | |
|     dep.format("%04d%-3s", anno,(const char*) codreg);
 | |
|   
 | |
|   reg.zero();
 | |
|   reg.put("CODTAB", (const char*) dep);
 | |
|   if (reg.read() == NOERR)
 | |
|   {
 | |
|     if (_nprotiva > ulnum )
 | |
|       reg.put("I5", _nprotiva);
 | |
|     
 | |
|     if (_nuprotiva > ulnum )
 | |
|       reg.put("I5", _nuprotiva);
 | |
|     
 | |
|     reg.rewrite();
 | |
|   }  
 | |
| }
 | |
| 
 | |
| long TRic_tab::controlli_primanota()
 | |
| { 
 | |
|   TTable tpd ("%TPD");
 | |
|   bool      corrisp = FALSE;
 | |
|   TDate     datareg;  
 | |
|   int       anno;
 | |
|   long      ulnum = 0;
 | |
|   TString16 tmp;
 | |
|   TString   tipodoc,codreg;
 | |
|   
 | |
|   char tipocf = _tmov->get_char(MOV_TIPO);  
 | |
|   int  tiporeg;                           
 | |
|   if (tipocf == 'C')
 | |
|     tiporeg = 1;
 | |
|   else          
 | |
|     if (tipocf == 'F')
 | |
|       tiporeg = 2;
 | |
| 
 | |
|   codreg  = _tmov->get(MOV_REG);  
 | |
|   tipodoc = _tmov->get(MOV_TIPODOC);                   
 | |
| 
 | |
|   datareg = _tmov->get_date(MOV_DATAREG);
 | |
|   anno    = datareg.year();
 | |
|   
 | |
|   tpd.zero();
 | |
|   tpd.put("CODTAB", (const char*) tipodoc);
 | |
|   if (tpd.read() == NOERR)
 | |
|     corrisp = tpd.get_bool("B0");
 | |
|   
 | |
|   if (codreg.not_empty() && !corrisp)
 | |
|   {
 | |
|     if ( ( (tiporeg == 1 && (_nprot_att || _protiva == 0) ) )
 | |
|         || ( (tiporeg == 2 && (_nprot_pas || _protiva == 0) ) ) )
 | |
|     {              
 | |
|       ulnum = ulnumprot_reg(anno,codreg);
 | |
|       _nprotiva = ulnum + 1;
 | |
|       if (_uprotiva != 0)
 | |
|         _nuprotiva = (_nprotiva - ulnum) + _uprotiva;
 | |
|     }                                     
 | |
|   }            
 | |
|   
 | |
|   return ulnum;
 | |
| }
 | |
| 
 | |
| char TRic_tab::ricerca_causale(TString& causale)
 | |
| {  
 | |
|   TLocalisamfile cau (LF_CAUSALI);
 | |
|   char    movap = ' ';
 | |
|   
 | |
|   if (real::is_natural(causale))
 | |
|     causale.format("%03s", (const char*) causale);
 | |
|   else
 | |
|     causale.format("%-3s", (const char*) causale);
 | |
|   
 | |
|   cau.setkey(1);
 | |
|   cau.zero();
 | |
|   cau.put("CODCAUS", causale);
 | |
|   if (cau.read() == NOERR)
 | |
|     movap = cau.get_char("MOVAP");
 | |
|   
 | |
|   return movap;
 | |
| }
 | |
| 
 | |
| void TRic_tab::scrivi_righePN(long numreg)
 | |
| {
 | |
|   TString str;                         
 | |
|                                    
 | |
|   _trmov->setkey(1);
 | |
|   _trmov->zero();
 | |
|   _trmov->put(RMV_NUMREG, numreg);
 | |
|   TRectype rmov (LF_RMOV);                               
 | |
|   rmov = _trmov->curr();
 | |
|   for (_trmov->read(); !_trmov->eof(); _trmov->next())
 | |
|   {
 | |
|     if (_trmov->curr() > rmov) break;
 | |
|                                    
 | |
|     int  g   = _trmov->get_int (RMV_GRUPPO);
 | |
|     int  c   = _trmov->get_int (RMV_CONTO);
 | |
|     long s   = _trmov->get_long(RMV_SOTTOCONTO);                                
 | |
|     char sez = _trmov->get_char(RMV_SEZIONE);
 | |
|     real imp ( _trmov->get_real(RMV_IMPORTO) );
 | |
|     
 | |
|     _trmov->put(RMV_NUMREG, _nreg);  
 | |
|     _rmov->curr() = _trmov->curr();
 | |
|     _rmov->write();        
 | |
|     
 | |
|     _sld.aggiorna(g,c,s,imp,sez);    
 | |
|   }
 | |
| }
 | |
| 
 | |
| void TRic_tab::ricevi_movPN(TString& key, char uselab)
 | |
| {
 | |
|   TString str;
 | |
|   long    numulreg;
 | |
|   TRectype recmov (LF_MOV);
 | |
|                                        
 | |
|   char flag  = _tras_file.flg_agg(uselab);                                     
 | |
|   
 | |
|   _nprot_att = _tras_file.numprot_att();
 | |
|   _nprot_pas = _tras_file.numprot_pas();
 | |
|   
 | |
|   _tmov->setkey(1);
 | |
|                     
 | |
|   if (key.empty())
 | |
|     _tmov->first();
 | |
|   else
 | |
|   {             
 | |
|     long numreg = atol(key.mid(0,7));
 | |
|     _tmov->zero();
 | |
|     _tmov->put(MOV_NUMREG, numreg);
 | |
|     _tmov->read();
 | |
|   }
 | |
|   
 | |
|   for(; !_tmov->eof(); _tmov->next())
 | |
|   { 
 | |
|     _prog->addstatus(1);
 | |
|                                
 | |
|     long nreg      = _tmov->get_long(MOV_NUMREG);
 | |
|     long nuova_reg = _tmov->get_long("TNUMREG" );
 | |
|     
 | |
|     if (nuova_reg == 0)
 | |
|     {
 | |
|       numulreg = ultima_registrazione(); // reperisco il numero ultima registrazione
 | |
|       _nreg = esiste_numreg(numulreg);
 | |
|     }                                 
 | |
|     else
 | |
|       _nreg = nuova_reg;
 | |
| 
 | |
|     TRecnotype rec = _tmov->recno();     // Salvo il nuovo numero di 
 | |
|     _tmov->put("TNUMREG", _nreg);      // registrazione sul file di lavoro
 | |
|     _tmov->rewrite();               
 | |
|     _tmov->readat(rec);
 | |
|                           
 | |
|     int annoes = _tmov->get_int(MOV_ANNOES);
 | |
|                           
 | |
|     recmov = _tmov->curr();
 | |
|     
 | |
|     _mov->setkey(1);
 | |
|     _mov->zero();
 | |
|     _mov->put(MOV_NUMREG, _nreg);
 | |
|     
 | |
|     if (_mov->read() != NOERR)  // Se non esiste la testata
 | |
|     {                  
 | |
|       num_protocollo();          // Riattribuzione numero di protocollo
 | |
|       long ulnum = controlli_primanota();
 | |
|                            
 | |
|       recmov.put(MOV_NUMREG,   _nreg);                     
 | |
|       recmov.put(MOV_PROTIVA,  _nprotiva);
 | |
|       recmov.put(MOV_UPROTIVA, _nuprotiva);
 | |
|       
 | |
|       _mov->zero();
 | |
|       _mov->curr() = recmov;
 | |
|       _mov->write();
 | |
|              
 | |
|       TString codreg  (_tmov->get     (MOV_REG));
 | |
|       TString codcaus (_tmov->get     (MOV_CODCAUS));      
 | |
|       TDate   datareg (_tmov->get_date(MOV_DATAREG));
 | |
|       int     anno    = datareg.year();
 | |
| 
 | |
|       aggiorna_reg(anno,codreg,ulnum); // Aggiorna il registro
 | |
| 
 | |
|       _sld.set_anno_es(annoes);
 | |
|       _sld.set_movprovv(FALSE);
 | |
|       _sld.set_num_ulmov(_nreg);
 | |
|       _sld.set_data_ulmov(datareg);
 | |
|   
 | |
|       char movap = ricerca_causale(codcaus);
 | |
|       if (movap == 'A')
 | |
|         _sld.set_tipo_saldo(apertura); 
 | |
|       else if (movap == 'C')
 | |
|         _sld.set_tipo_saldo(chiusura); 
 | |
| //      if (movap == 'A')        // Sostituire con la parte commentata sopra
 | |
| //        _sld.set_movap(TRUE); 
 | |
|       scrivi_righePN(nreg);
 | |
| 
 | |
|       _sld.registra();
 | |
|       _sld.reset();
 | |
|     }  
 | |
|           
 | |
|     leggi_record_controllo();
 | |
|     TString chiave;
 | |
|     chiave.format("%07ld", nreg);      
 | |
|     TString sigla (format("%c", uselab));
 | |
|     str = _record.overwrite(sigla,240);
 | |
|     str = _record.overwrite(chiave,241);
 | |
|     _tras_file.write_control_rec(str,1024);          
 | |
|   }
 | |
| }
 | |
| 
 | |
| bool TRic_tab::occasionali(TString& ocfpi)
 | |
| {  
 | |
|   TString chiave;
 | |
|   long    prog = 0;
 | |
|   bool    esiste = FALSE; 
 | |
|   bool    ric    = TRUE;
 | |
|  
 | |
|   TString ocfpitemp = ocfpi;
 | |
|   
 | |
|   if (ocfpi.mid(0,3) == "RIC") 
 | |
|   { 
 | |
| //  TString nocfpi = _tmov->get("TOCFP"); 
 | |
| //  nocfpi.trim();
 | |
|   
 | |
| //  if (nocfpi.empty())
 | |
| //  {
 | |
|     _occas->setkey(1);
 | |
|     _occas->zero();   
 | |
|     for (_occas->first(); !_occas->eof(); _occas->next())
 | |
|     {
 | |
|       TString cfpi = _occas->get(OCC_CFPI);
 | |
|       if (cfpi.mid(0,3) == "RIC")
 | |
|         prog   = atol(cfpi.mid(3,13));
 | |
|     }
 | |
|     prog++;       
 | |
|     
 | |
|     chiave = format("%3s%13ld", (const char*) "RIC", prog);
 | |
|       
 | |
|     esiste = FALSE; 
 | |
|     ocfpi = chiave;  
 | |
|   }
 | |
|   else
 | |
|   {
 | |
|     _occas->setkey(1);
 | |
|     _occas->zero();
 | |
|     _occas->put("CFPI", ocfpi);
 | |
|     if (_occas->read() == NOERR)
 | |
|     {
 | |
|       TRecnotype rec = _occas->recno();
 | |
|       _occas->setkey(1);
 | |
|       _occas->zero();   
 | |
|       for (_occas->first(); !_occas->eof(); _occas->next())
 | |
|       {
 | |
|         TString cfpi = _occas->get(OCC_CFPI);
 | |
|         if (cfpi.mid(0,3) == "RIC")
 | |
|           prog   = atol(cfpi.mid(3,13));
 | |
|       }
 | |
|       prog++;                          
 | |
|       chiave = format("%3s%13ld", (const char*) "RIC", prog);  
 | |
|       ocfpi = chiave;    
 | |
|       _occas->readat(rec);
 | |
|     }
 | |
|   }  
 | |
| //  }
 | |
| //  else
 | |
| //  {
 | |
| //    _occas->setkey(1);
 | |
| //    _occas->zero();
 | |
| //    _occas->put("CFPI", nocfpi);
 | |
| //    _occas->read();
 | |
|       
 | |
| //    esiste = TRUE;
 | |
| //    ocfpi = nocfpi;
 | |
| //  }
 | |
|   
 | |
|   _toccas->setkey(1);
 | |
|   _toccas->zero();
 | |
|   _toccas->put(OCC_CFPI, ocfpitemp);
 | |
|   _toccas->read();
 | |
| 
 | |
|   _occas->curr() = _toccas->curr();
 | |
|   
 | |
|   if (esiste)
 | |
|     _occas->rewrite();
 | |
|   else 
 | |
|   {    
 | |
|     _occas->put(OCC_CFPI, ocfpi);
 | |
|     _occas->write();              
 | |
|   }
 | |
|   
 | |
|   return TRUE;  
 | |
| }
 | |
| 
 | |
| void TRic_tab::scrivi_righeIVA(long numreg)
 | |
| {
 | |
|   TString str;                         
 | |
|                                    
 | |
|   _triva->setkey(1);
 | |
|   _triva->zero();
 | |
|   _triva->put(RMI_NUMREG, numreg);
 | |
|   TRectype riva (LF_RMOVIVA);                               
 | |
|   riva = _triva->curr();
 | |
|   for (_triva->read(); !_triva->eof(); _triva->next())
 | |
|   {
 | |
|     if (_triva->curr() > riva) break;
 | |
|                                    
 | |
|     _triva->put(RMI_NUMREG, _nuovareg);  
 | |
|     _rmoviva->curr() = _triva->curr();
 | |
|     _rmoviva->write();        
 | |
|   }
 | |
| }
 | |
| 
 | |
| void TRic_tab::ricevi_movIVA(TString& key, char uselab)
 | |
| {
 | |
|   TString str;
 | |
|   TRectype recmov (LF_MOV);
 | |
|                                        
 | |
|   char flag  = _tras_file.flg_agg(uselab);                                     
 | |
|   
 | |
|   _tmov->setkey(1);
 | |
|                     
 | |
|   if (key.empty())
 | |
|     _tmov->first();
 | |
|   else
 | |
|   {             
 | |
|     long numreg = atol(key.mid(0,7));
 | |
|     _tmov->zero();
 | |
|     _tmov->put(MOV_NUMREG, numreg);
 | |
|     _tmov->read();
 | |
|   }
 | |
|   
 | |
|   for(; !_tmov->eof(); _tmov->next())
 | |
|   { 
 | |
|     _prog->addstatus(1);
 | |
|                                
 | |
|     long nreg      = _tmov->get_long(MOV_NUMREG);
 | |
|     
 | |
|     TString codreg = _tmov->get(MOV_REG);
 | |
|     TString codcau = _tmov->get(MOV_CODCAUS);
 | |
|     
 | |
|     if (codreg.empty() || codcau.empty()) continue;
 | |
|                                                    
 | |
|     _nuovareg = _tmov->get_long("TNUMREG");
 | |
|     TString ocfpi = _tmov->get(MOV_OCFPI);
 | |
|     
 | |
|     if (ocfpi.not_empty())
 | |
|       occasionali(ocfpi);
 | |
| 
 | |
| //    TRecnotype rec = _tmov->recno();     // Salvo il nuovo numero di 
 | |
| //    _tmov->put("TOCFP", ocfpi);      // registrazione sul file di lavoro
 | |
| //    _tmov->rewrite();               
 | |
| //    _tmov->readat(rec);
 | |
|                                                      
 | |
|     TDate   data74ter ( _tmov->get_date(MOV_DATA74TER) );
 | |
|     TString codval    ( _tmov->get     (MOV_CODVALI) );
 | |
|     long    codcf     = _tmov->get_long(MOV_CODCF);
 | |
|     real    totdoc    ( _tmov->get_real(MOV_TOTDOC) );
 | |
|     real    cambioi   ( _tmov->get_real(MOV_CAMBIOI) );
 | |
|     real    corrlire  ( _tmov->get_real(MOV_CORRLIRE) );
 | |
|     real    corrval   ( _tmov->get_real(MOV_CORRVALUTA) );
 | |
|     int     annoiva   = _tmov->get_int (MOV_ANNOIVA);
 | |
|       
 | |
|     _mov->setkey(1);
 | |
|     _mov->zero();
 | |
|     _mov->put(MOV_NUMREG, _nuovareg);
 | |
|     
 | |
|     if (_mov->read() == NOERR)   // Se non esiste la testata
 | |
|     {                            
 | |
|       _mov->put(MOV_DATA74TER,  data74ter);
 | |
|       _mov->put(MOV_CODVALI,    codval);
 | |
|       _mov->put(MOV_CODCF,      codcf);
 | |
|       _mov->put(MOV_TOTDOC,     totdoc);
 | |
|       _mov->put(MOV_CAMBIOI,    cambioi);
 | |
|       _mov->put(MOV_CORRLIRE,   corrlire);
 | |
|       _mov->put(MOV_CORRVALUTA, corrval);
 | |
|       _mov->put(MOV_ANNOIVA,    annoiva);
 | |
|       _mov->put(MOV_OCFPI,      ocfpi);      
 | |
|       _mov->rewrite();             
 | |
| 
 | |
|       scrivi_righeIVA(nreg);
 | |
|     }  
 | |
|           
 | |
|     leggi_record_controllo();
 | |
|     TString chiave;
 | |
|     chiave.format("%07ld", nreg);      
 | |
|     TString sigla (format("%c", uselab));
 | |
|     str = _record.overwrite(sigla,240);
 | |
|     str = _record.overwrite(chiave,241);
 | |
|     _tras_file.write_control_rec(str,1024);          
 | |
|   }
 | |
| }
 | |
| 
 | |
| long TRic_tab::nuovaregSC(long nreg)
 | |
| { 
 | |
|   long nuovareg = 0;
 | |
|   
 | |
|   _tmov->zero();
 | |
|   _tmov->put(MOV_NUMREG, nreg);
 | |
|   if (_tmov->read() == NOERR)
 | |
|     nuovareg = _tmov->get_long("TNUMREG");
 | |
|     
 | |
|   return nuovareg;
 | |
| }
 | |
| 
 | |
| bool TRic_tab::esiste_partita(TString& key)
 | |
| {
 | |
|   TLocalisamfile part (LF_PARTITE);
 | |
|   
 | |
|   char    tipoc  = key.mid(0,1)[0];
 | |
|   int     gruppo = atoi(key.mid(1,3));
 | |
|   int     conto  = atoi(key.mid(4,3));
 | |
|   long    sottoc = atol(key.mid(7,6));
 | |
|   int     anno   = atoi(key.mid(13,4));
 | |
|   TString npart  = key.mid(17,7);
 | |
|   int     nriga  = atoi(key.mid(24,4));
 | |
|   
 | |
|   part.zero();
 | |
|   part.put(PART_TIPOCF,     tipoc);
 | |
|   part.put(PART_GRUPPO,     gruppo);
 | |
|   part.put(PART_CONTO,      conto);
 | |
|   part.put(PART_SOTTOCONTO, sottoc);
 | |
|   part.put(PART_ANNO,       anno);
 | |
|   part.put(PART_NUMPART,    npart);
 | |
|   part.put(PART_NRIGA,      nriga);
 | |
|   if (part.read() == NOERR)
 | |
|     return TRUE;
 | |
|     
 | |
|   return FALSE;      
 | |
| }
 | |
| 
 | |
| void TRic_tab::aggiorna_temp_scad(char tipocf,int gruppo,int conto,long codcf,int anno,TString& numpart,
 | |
|                                   int nriga,int nrata,int nuova_riga,int nuova_rata)
 | |
| {
 | |
|   TRecnotype rec = _tscad->recno();
 | |
|   TIsamtempfile& scad = *_tscad;  
 | |
|   
 | |
|   scad.setkey(1);
 | |
|   scad.zero();
 | |
|   scad.put(SCAD_TIPOCF,     tipocf);
 | |
|   scad.put(SCAD_GRUPPO,     gruppo);
 | |
|   scad.put(SCAD_CONTO,      conto);
 | |
|   scad.put(SCAD_SOTTOCONTO, codcf);
 | |
|   scad.put(SCAD_ANNO,       anno);
 | |
|   scad.put(SCAD_NUMPART,    numpart);
 | |
|   scad.put(SCAD_NRIGA,      nriga);  
 | |
|   scad.put(SCAD_NRATA,      nrata);   
 | |
|   if (scad.read() == NOERR)
 | |
|   {
 | |
|     scad.put(SCAD_TNRIGA, nuova_riga);
 | |
|     scad.put(SCAD_TNRATA, nuova_rata);
 | |
|     scad.rewrite();
 | |
|   }
 | |
|   _tscad->readat(rec);
 | |
| }
 | |
|   
 | |
| void TRic_tab::rigaErata(char tipocf,int gruppo,int conto,long codcf,int anno,
 | |
|                          TString& numpart,int nriga, int nrata)
 | |
| {                                  
 | |
|   TRecnotype rec = _tscad->recno();
 | |
|   TIsamtempfile& scad = *_tscad;  
 | |
|   
 | |
|   scad.setkey(1);
 | |
|   scad.zero();
 | |
|   scad.put(SCAD_TIPOCF,     tipocf);
 | |
|   scad.put(SCAD_GRUPPO,     gruppo);
 | |
|   scad.put(SCAD_CONTO,      conto);
 | |
|   scad.put(SCAD_SOTTOCONTO, codcf);
 | |
|   scad.put(SCAD_ANNO,       anno);
 | |
|   scad.put(SCAD_NUMPART,    numpart);
 | |
|   scad.put(SCAD_NRIGA,      nriga);  
 | |
|   scad.put(SCAD_NRATA,      nrata);   
 | |
|   if (scad.read() == NOERR)
 | |
|   {
 | |
|     _nrig  = scad.get_int(SCAD_TNRIGA);
 | |
|     _nrata = scad.get_int(SCAD_TNRATA);
 | |
|   }
 | |
|   _tscad->readat(rec);
 | |
| }
 | |
| 
 | |
| void TRic_tab::ricevi_movSC(TString& key, char uselab)
 | |
| {                          
 | |
|   TString str;
 | |
|   TPartita* newgame = NULL; 
 | |
|   bool    chiave = FALSE;
 | |
|   
 | |
|   _tpart->setkey(1);
 | |
|                     
 | |
|   if (key.empty())
 | |
|     _tpart->first();
 | |
|   else
 | |
|   {             
 | |
|     char    tipoc  = key.mid(0,1)[0];
 | |
|     int     gruppo = atoi(key.mid(1,3));
 | |
|     int     conto  = atoi(key.mid(4,3));
 | |
|     long    sottoc = atol(key.mid(7,6));
 | |
|     int     anno   = atoi(key.mid(13,4));
 | |
|     TString npart  = key.mid(17,7);
 | |
|     int     nriga  = atoi(key.mid(24,4));
 | |
|     _tpart->zero();
 | |
|     _tpart->put(PART_TIPOCF,     tipoc);
 | |
|     _tpart->put(PART_GRUPPO,     gruppo);
 | |
|     _tpart->put(PART_CONTO,      conto);
 | |
|     _tpart->put(PART_SOTTOCONTO, sottoc);
 | |
|     _tpart->put(PART_ANNO,       anno);
 | |
|     _tpart->put(PART_NUMPART,    npart);
 | |
|     _tpart->put(PART_NRIGA,      nriga);
 | |
|     _tpart->read();      
 | |
|     chiave = TRUE;
 | |
|   }
 | |
|   
 | |
|   for(; !_tpart->eof(); _tpart->next())
 | |
|   { 
 | |
|     _prog->addstatus(1);
 | |
|     
 | |
|     if (chiave)
 | |
|       if (esiste_partita(key))
 | |
|         continue;
 | |
|       
 | |
|     long nreg = _tpart->get_long(PART_NREG);                           
 | |
|     _nuovareg = nuovaregSC(nreg); 
 | |
|     int     anno    = _tpart->get_int (PART_ANNO);
 | |
|     TString numpart = _tpart->get     (PART_NUMPART);
 | |
|     char    tipocf  = _tpart->get_char(PART_TIPOCF);
 | |
|     int     gruppo  = _tpart->get_int (PART_GRUPPO);
 | |
|     int     conto   = _tpart->get_int (PART_CONTO);
 | |
|     long    codcf   = _tpart->get_long(PART_SOTTOCONTO);
 | |
|     int     nriga   = _tpart->get_int (PART_NRIGA);
 | |
|     int     tipomov = _tpart->get_int (PART_TIPOMOV);
 | |
|     
 | |
|     TBill clifo;                      
 | |
|     clifo.set(gruppo, conto, codcf, tipocf);
 | |
| 
 | |
|     newgame = new TPartita(clifo, anno, numpart);                                           
 | |
|     newgame->allinea();
 | |
|     
 | |
|     TRiga_partite& partita = newgame->new_row();
 | |
|     int nuova_riga = partita.get_int(PART_NRIGA);    
 | |
|     // put data on partita
 | |
|     partita.put(PART_TIPOMOV,    _tpart->get_int (PART_TIPOMOV));  
 | |
|     partita.put(PART_TIPOPAG,    _tpart->get_int (PART_TIPOPAG));
 | |
|     partita.put(PART_NREG,       _nuovareg);
 | |
|     partita.put(PART_NUMRIG,     _tpart->get_int (PART_NUMRIG));
 | |
|     partita.put(PART_DATAREG,    _tpart->get_date(PART_DATAREG)); 
 | |
|     partita.put(PART_DATADOC,    _tpart->get_date(PART_DATADOC));
 | |
|     partita.put(PART_DATAPAG,    _tpart->get_date(PART_DATAPAG));
 | |
|     partita.put(PART_NUMDOC,     _tpart->get     (PART_NUMDOC));
 | |
|     partita.put(PART_REG,        _tpart->get     (PART_REG));    
 | |
|     partita.put(PART_PROTIVA,    _tpart->get_long(PART_PROTIVA));    
 | |
|     partita.put(PART_CODCAUS,    _tpart->get     (PART_CODCAUS));
 | |
|     partita.put(PART_SEZ,        _tpart->get     (PART_SEZ));
 | |
|     partita.put(PART_IMPORTO,    _tpart->get_real(PART_IMPORTO));
 | |
|     partita.put(PART_IMPOSTA,    _tpart->get_real(PART_IMPOSTA));    
 | |
|     partita.put(PART_CODVAL,     _tpart->get     (PART_CODVAL));
 | |
|     partita.put(PART_CAMBIO,     _tpart->get_real(PART_CAMBIO));
 | |
|     partita.put(PART_IMPORTOVAL, _tpart->get_real(PART_IMPORTOVAL));
 | |
|     partita.put(PART_DATACAM,    _tpart->get_date(PART_DATACAM));          
 | |
|     partita.put(PART_IMPTOTDOC,  _tpart->get_real(PART_IMPTOTDOC));
 | |
|     partita.put(PART_IMPTOTVAL,  _tpart->get_real(PART_IMPTOTVAL));
 | |
|     partita.put(PART_RITENUTE,   _tpart->get_real(PART_RITENUTE));
 | |
|     partita.put(PART_SEZABB,     _tpart->get     (PART_SEZABB));
 | |
|     partita.put(PART_ABBUONI,    _tpart->get_real(PART_ABBUONI));
 | |
|     partita.put(PART_SEZDIFCAM,  _tpart->get     (PART_SEZDIFCAM));
 | |
|     partita.put(PART_DIFFCAM,    _tpart->get_real(PART_DIFFCAM));    
 | |
|     partita.put(PART_GRUPPOCL,   _tpart->get_int (PART_GRUPPOCL));
 | |
|     partita.put(PART_CONTOCL,    _tpart->get_int (PART_CONTOCL));
 | |
|     
 | |
|     if (tipomov == 1)
 | |
|     {
 | |
|       _tscad->zero();
 | |
|       _tscad->put(SCAD_TIPOCF,     tipocf);
 | |
|       if (gruppo != 0)
 | |
|         _tscad->put(SCAD_GRUPPO,     gruppo);
 | |
|       if (conto != 0)
 | |
|         _tscad->put(SCAD_CONTO,      conto);
 | |
|       if (codcf != 0)
 | |
|         _tscad->put(SCAD_SOTTOCONTO, codcf);
 | |
|       _tscad->put(SCAD_ANNO,       anno);
 | |
|       _tscad->put(SCAD_NUMPART,    numpart);
 | |
|       _tscad->put(SCAD_NRIGA,      nriga);  
 | |
|     
 | |
|       TRectype scad (_tscad->curr());
 | |
|     
 | |
|       for (_tscad->read(_isgteq); !_tscad->eof(); _tscad->next())
 | |
|       {                                              
 | |
|         TString rec  = scad.get(SCAD_NUMPART);
 | |
|         TString file = _tscad->get(SCAD_NUMPART);
 | |
|           
 | |
|         if (_tscad->curr() != scad || file != rec) break;
 | |
|       
 | |
|         TRiga_scadenze& scadenza = partita.new_row();
 | |
| 
 | |
|         scadenza.put(SCAD_CODPAG,     _tscad->get     (SCAD_CODPAG));     
 | |
|         scadenza.put(SCAD_TIPOPAG,    _tscad->get_int (SCAD_TIPOPAG));  
 | |
|         scadenza.put(SCAD_ULTCLASS,   _tscad->get     (SCAD_ULTCLASS));  
 | |
|         scadenza.put(SCAD_IMPORTO,    _tscad->get_real(SCAD_IMPORTO));  
 | |
|         scadenza.put(SCAD_IMPORTOVAL, _tscad->get_real(SCAD_IMPORTOVAL));  
 | |
|         scadenza.put(SCAD_DATASCAD,   _tscad->get_date(SCAD_DATASCAD));                              
 | |
|         int nrata      = _tscad->get_int(SCAD_NRATA);
 | |
|         int nuova_rata = scadenza.get_int(SCAD_NRATA);
 | |
|         aggiorna_temp_scad(tipocf,gruppo,conto,codcf,anno,numpart,nriga,nrata,nuova_riga,nuova_rata);
 | |
|       }
 | |
|     }
 | |
|     
 | |
|     if (tipomov != 1)
 | |
|     {
 | |
|       _tpagsca->zero();
 | |
|       _tpagsca->put(PAGSCA_TIPOC,      tipocf);  
 | |
|       if (gruppo != 0)
 | |
|         _tpagsca->put(PAGSCA_GRUPPO,     gruppo);
 | |
|       if (conto != 0)
 | |
|         _tpagsca->put(PAGSCA_CONTO,      conto);
 | |
|       if (codcf != 0)
 | |
|         _tpagsca->put(PAGSCA_SOTTOCONTO, codcf);
 | |
|       _tpagsca->put(PAGSCA_ANNO,       anno);
 | |
|       _tpagsca->put(PAGSCA_NUMPART,    numpart);
 | |
| //      _tpagsca->put(PAGSCA_NRIGA,      nriga);  
 | |
|     
 | |
|       TRectype pagsca (_tpagsca->curr());
 | |
|     
 | |
|       for (_tpagsca->read(_isgteq); !_tpagsca->eof(); _tpagsca->next())
 | |
|       {                                               
 | |
|         int nrigp = _tpagsca->get_int(PAGSCA_NRIGP);         
 | |
|                       
 | |
|         TString rec  = pagsca.get(PAGSCA_NUMPART);
 | |
|         TString file = _tpagsca->get(PAGSCA_NUMPART);
 | |
|                       
 | |
|         if (_tpagsca->curr() != pagsca || file != rec) break;
 | |
|         
 | |
|         if (nriga != nrigp) continue;
 | |
|         
 | |
|         int nrig  = _tpagsca->get_int(PAGSCA_NRIGA);                                             
 | |
|         int nrata = _tpagsca->get_int(PAGSCA_NRATA);  
 | |
|         _nrig  = nrig;
 | |
|         _nrata = nrata;
 | |
|         rigaErata(tipocf,gruppo,conto,codcf,anno,numpart,nrig,nrata); 
 | |
|                                                     
 | |
|         TRectype& pag = newgame->pagamento(_nrig,_nrata,nuova_riga);  
 | |
|         
 | |
|         if (_nrig == 9999 && _nrata == 9999)
 | |
|           pag.put(PAGSCA_ACCSAL,     "A");
 | |
|         else
 | |
|         {
 | |
|           pag.put(PAGSCA_ACCSAL,     _tpagsca->get     (PAGSCA_ACCSAL));
 | |
|           pag.put(PAGSCA_PASSATT,    _tpagsca->get     (PAGSCA_PASSATT));
 | |
|           pag.put(PAGSCA_ABBUONI,    _tpagsca->get_real(PAGSCA_ABBUONI));
 | |
|           pag.put(PAGSCA_DIFFCAM,    _tpagsca->get_real(PAGSCA_DIFFCAM));
 | |
|         }
 | |
|         pag.put(PAGSCA_IMPORTO,    _tpagsca->get_real(PAGSCA_IMPORTO));
 | |
|         pag.put(PAGSCA_IMPORTOVAL, _tpagsca->get_real(PAGSCA_IMPORTOVAL));
 | |
|         pag.put(PAGSCA_RITENUTE,   _tpagsca->get_real(PAGSCA_RITENUTE));
 | |
|       }
 | |
|     }  
 | |
|       
 | |
|     if (newgame != NULL)           // Se non ho cancellato il numero partita ...
 | |
|     {                    
 | |
|       newgame->write();            // Salva nuova partita
 | |
|       delete newgame;
 | |
|     }  
 | |
|           
 | |
|     leggi_record_controllo();
 | |
|     TString chiave;
 | |
|     chiave.format("%c%03d%03d%06ld%04d%7s%04d", tipocf,gruppo,conto,codcf,anno,(const char*)numpart,nriga);      
 | |
|     TString sigla (format("%c", uselab));
 | |
|     str = _record.overwrite(sigla,240);
 | |
|     str = _record.overwrite(chiave,241);
 | |
|     _tras_file.write_control_rec(str,1024);          
 | |
|   }  
 | |
| }
 | |
| 
 | |
| bool TRic_tab::leggi_trasfer()
 | |
| { 
 | |
|   _nultras = 0;
 | |
|   
 | |
|   _trasf = _tras_file.path(_dittaric);
 | |
|   _trasf << HEADER;
 | |
|   
 | |
|   _tras_file.open(_trasf);
 | |
|   
 | |
|   if (_tras_file.exist())
 | |
|   {  
 | |
|     if (_tras_file.read_control_rec())
 | |
|     {
 | |
|       _nultras    = _tras_file.nultras();
 | |
|       _dataultras = _tras_file.dataultras();
 | |
|       _sigle_file = _tras_file.sigle_file();
 | |
|       _nrec_file  = _tras_file.nrec_file();             
 | |
|       _uselab     = _tras_file.ult_file();
 | |
|       _key        = _tras_file.key();
 | |
|       _record     = _tras_file.record();
 | |
|     }         
 | |
|     else
 | |
|       return error_box("Rilevati gravi errori negli archivi:procedura interrotta");
 | |
|   } 
 | |
|   else
 | |
|     return error_box("Al momento non presenti trasferimenti attivi sulla ditta selezionata");
 | |
|   
 | |
|   return TRUE; 
 | |
| }
 | |
| 
 | |
| bool TRic_tab::video()
 | |
| {                    
 | |
|   TConfig conf(CONFIG_DITTA);           
 | |
|   
 | |
|   _std = conf.get("FlStTra");
 | |
|   
 | |
|   if (!leggi_trasfer())
 | |
|     return FALSE;
 | |
|   
 | |
|   TMask* msk = new TMask("cg6600a");
 | |
|   KEY  tasto;
 | |
|   
 | |
|   ditta_ricevente();       
 | |
|   
 | |
|   msk->set(F_CODDITTA,   _dittaric);
 | |
|   msk->set(F_RAGSOC,     _ragsoc_dittar);
 | |
|   msk->set(F_NULTRAS,    _nultras);
 | |
|   TString data1 = _dataultras.string();
 | |
|   msk->set(F_DATAULTRAS, data1);         
 | |
|   msk->set(F_STD,        _std);
 | |
|   msk->set(F_USELAB,     _uselab);
 | |
|   msk->set(F_STATO,      _key);
 | |
| 
 | |
|   tasto = msk->run();
 | |
| 
 | |
|   delete msk;
 | |
|   if (tasto != K_ENTER)
 | |
|     return FALSE;
 | |
|   
 | |
|   if (!prefix().exist(_dittaric))
 | |
|     return error_box("Rilevati gravi errori negli archivi: procedura interrotta");
 | |
| 
 | |
|   if (!controlli())
 | |
|     return FALSE;     
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| void TRic_tab::setta_parametri_record(const TString& sigla,const TString& flag)
 | |
| { 
 | |
|   TConfig conf (CONFIG_DITTA);
 | |
|   
 | |
|   conf.set("FlStTra", flag);
 | |
|   
 | |
|   leggi_record_controllo();
 | |
|   _record.overwrite(sigla,240);
 | |
|   
 | |
|   const int size = 1024;
 | |
|   
 | |
|   _tras_file.write_control_rec(_record, size);
 | |
| }
 | |
| 
 | |
| bool TRic_tab::controllo_pre_ricezione()
 | |
| { 
 | |
|   TString flag;
 | |
|   
 | |
|   TString sigla = _sigle_file.mid(0,1);
 | |
|   
 | |
|   if (sigla == " ")
 | |
|   {
 | |
|     flag   = "*";
 | |
|     setta_parametri_record(sigla,flag);
 | |
|     fremove(_trasf);
 | |
|     return FALSE;
 | |
|   }              
 | |
|   
 | |
|   if (sigla == "Z")
 | |
|   {
 | |
|     flag   = "C";
 | |
|     setta_parametri_record(sigla,flag);
 | |
|     return error_box("Aggiornamento tabelle terminato: proseguire con controllo movimenti");
 | |
|   }             
 | |
|   
 | |
|   if (sigla != "Z")
 | |
|   {
 | |
|     flag   = "T";
 | |
|     setta_parametri_record(sigla,flag);
 | |
|     return TRUE;
 | |
|   }
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| void TRic_tab::ditta_ricevente()
 | |
| {
 | |
|   TLocalisamfile nditte (LF_NDITTE);
 | |
|   
 | |
|   nditte.setkey(1);
 | |
|   nditte.zero();
 | |
|   nditte.put(NDT_CODDITTA, _dittaric);
 | |
|   if (nditte.read() == NOERR)
 | |
|     _ragsoc_dittar = nditte.get(NDT_RAGSOC);
 | |
| }
 | |
| 
 | |
| bool TRic_tab::controlli()
 | |
| { 
 | |
|   if (_scelta == 'T')
 | |
|   {
 | |
|     if (_std == "C")
 | |
|       return error_box("Aggiornamento tabelle gia' effettuato: richiamare Controllo movimenti");
 | |
|     
 | |
|     if (_std == "M")
 | |
|       return error_box("Aggiornamento tabelle gia' effettuato: richiamare Trasferimento movimenti");           
 | |
| 
 | |
|     if (_std == "*") 
 | |
|     {
 | |
|       warning_box("Trasferimento interamente completato: proseguire per cancellare il file");    
 | |
|       _tras_file.remove_all();
 | |
|       setta_parametri_record(" "," ");
 | |
|       return FALSE;
 | |
|     }
 | |
|     
 | |
|     if (_std != "" && _std != "T")
 | |
|       return error_box("Rilevati gravi errori negli archivi: procedura interrotta");
 | |
|     
 | |
|     if ( (_std == "" || _std == "T") && (_uselab == "Z" || _uselab == "U") )  
 | |
|       return error_box("Rilevati gravi errori negli archivi: procedura interrotta");
 | |
|   }
 | |
|   else
 | |
|     if (_scelta == 'M')
 | |
|     {
 | |
|       if (_std == "" || _std == "T")
 | |
|         return error_box("Aggiornamento tabelle NON EFFETTUATO: richiamare il programma relativo");
 | |
|       
 | |
|       if (_std == "C")
 | |
|         return error_box("Controllo movimenti non effettuato o rilevati errori gravi");
 | |
|       
 | |
|       if (_std == "M" && (_uselab != "Z" && _uselab != "U" && _uselab != "B") ) 
 | |
|         return error_box("Rilevati GRAVI ERRORI negli archivi: procedura interrotta");
 | |
|       
 | |
|       if (_std != "*" && _std != "M")
 | |
|         error_box("Rilevati GRAVI ERRORI negli archivi: procedura interrotta");
 | |
|           
 | |
|       if (_std == "*") 
 | |
|       {
 | |
|         warning_box("Trasferimento interamente completato: proseguire per cancellare il file");    
 | |
|         _tras_file.remove_all();
 | |
|         setta_parametri_record(" "," ");
 | |
|         return FALSE;
 | |
|       }
 | |
|     }
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| void TRic_tab::apri_file_temp()
 | |
| { 
 | |
|   if (_scelta == 'T')
 | |
|   {
 | |
|     TString80 tmpcaus = "%";
 | |
|     tmpcaus << get_firm_dir();
 | |
|     tmpcaus << "\\" << TEMP_CAUS;
 | |
|     _tmpcaus = tmpcaus.mid(1);
 | |
|     _tmpcaus << ".dbf";
 | |
|     if(fexist(_tmpcaus))
 | |
|       _tcaus    = new TIsamtempfile(LF_CAUSALI, tmpcaus, 0);  
 | |
|     TString80 tmprcaus = "%";
 | |
|     tmprcaus << get_firm_dir();
 | |
|     tmprcaus << "\\" << TEMP_RCAUS;
 | |
|     _tmprcaus = tmprcaus.mid(1);
 | |
|     _tmprcaus << ".dbf";
 | |
|     if (fexist(_tmprcaus))
 | |
|       _trcaus   = new TIsamtempfile(LF_RCAUSALI, tmprcaus, 0);
 | |
|     TString80 tmpclifo = "%";
 | |
|     tmpclifo << get_firm_dir();
 | |
|     tmpclifo << "\\" << TEMP_CLIFO;
 | |
|     _tmpclifo = tmpclifo.mid(1);
 | |
|     _tmpclifo << ".dbf";
 | |
|     if (fexist(_tmpclifo))
 | |
|       _tclifo    = new TIsamtempfile(LF_CLIFO, tmpclifo, 0);
 | |
|     TString80 tmppcon = "%";
 | |
|     tmppcon << get_firm_dir();
 | |
|     tmppcon << "\\" << TEMP_PCON;
 | |
|     _tmpcon = tmppcon.mid(1);
 | |
|     _tmpcon << ".dbf";
 | |
|     if (fexist(_tmpcon))
 | |
|       _tpcon    = new TIsamtempfile(LF_PCON, tmppcon, 0);
 | |
|   }
 | |
|   else
 | |
|   {
 | |
|     TString80 tmpmov = "%";
 | |
|     tmpmov << get_firm_dir();
 | |
|     tmpmov << "\\" << TEMP_MOV;
 | |
|     _tmpmov = tmpmov.mid(1);
 | |
|     _tmpmov << ".dbf";
 | |
|     if (fexist(_tmpmov))
 | |
|       _tmov     = new TIsamtempfile(LF_MOV, tmpmov, 0);
 | |
|     TString80 tmprmov = "%";
 | |
|     tmprmov << get_firm_dir();
 | |
|     tmprmov << "\\" << TEMP_RMOV;
 | |
|     _tmprmov = tmprmov.mid(1);
 | |
|     _tmprmov << ".dbf";
 | |
|     if (fexist(_tmprmov))
 | |
|       _trmov    = new TIsamtempfile(LF_RMOV, tmprmov, 0);
 | |
|     TString80 tmpriva = "%";
 | |
|     tmpriva << get_firm_dir();
 | |
|     tmpriva << "\\" << TEMP_RMOVIVA;
 | |
|     _tmpriva = tmpriva.mid(1);
 | |
|     _tmpriva << ".dbf";
 | |
|     if (fexist(_tmpriva))
 | |
|       _triva    = new TIsamtempfile(LF_RMOVIVA, tmpriva, 0);
 | |
|     TString80 tmpoccas = "%";
 | |
|     tmpoccas << get_firm_dir();
 | |
|     tmpoccas << "\\" << TEMP_OCC;
 | |
|     _tmpoccas = tmpoccas.mid(1);
 | |
|     _tmpoccas << ".dbf";
 | |
|     if (fexist(_tmpoccas))
 | |
|       _toccas   = new TIsamtempfile(LF_OCCAS, tmpoccas, 0);
 | |
|     TString80 tmppart = "%";
 | |
|     tmppart << get_firm_dir();
 | |
|     tmppart << "\\" << TEMP_PART;
 | |
|     _tmppart = tmppart.mid(1);
 | |
|     _tmppart << ".dbf";
 | |
|     if (fexist(_tmppart))
 | |
|       _tpart     = new TIsamtempfile(LF_PARTITE, tmppart, 0);
 | |
|     TString80 tmpscad = "%";
 | |
|     tmpscad << get_firm_dir();
 | |
|     tmpscad << "\\" << TEMP_SCAD;
 | |
|     _tmpscad = tmpscad.mid(1);
 | |
|     _tmpscad << ".dbf";
 | |
|     if (fexist(_tmpscad))
 | |
|       _tscad    = new TIsamtempfile(LF_SCADENZE, tmpscad, 0);
 | |
|     TString80 tmppagsca = "%";
 | |
|     tmppagsca << get_firm_dir();
 | |
|     tmppagsca << "\\" << TEMP_PAGSCA;
 | |
|     _tmppagsca = tmppagsca.mid(1);
 | |
|     _tmppagsca << ".dbf";
 | |
|     if (fexist(_tmppagsca))
 | |
|       _tpagsca    = new TIsamtempfile(LF_PAGSCA, tmppagsca, 0);      
 | |
|   }
 | |
| }
 | |
| 
 | |
| void TRic_tab::chiudi_file_temp()
 | |
| {
 | |
|   if (_scelta == 'T')
 | |
|   {   
 | |
|     if (fexist(_tmpcaus))
 | |
|       delete _tcaus;
 | |
|     if (fexist(_tmprcaus))
 | |
|       delete _trcaus;
 | |
|     if (fexist(_tmpclifo))
 | |
|       delete _tclifo;
 | |
|     if (fexist(_tmpcon))
 | |
|       delete _tpcon;
 | |
|   }               
 | |
|   else
 | |
|   {   
 | |
|     if (fexist(_tmpmov))
 | |
|       delete _tmov;
 | |
|     if (fexist(_tmprmov))
 | |
|       delete _trmov;
 | |
|     if (fexist(_tmpriva))
 | |
|       delete _triva;
 | |
|     if (fexist(_tmpoccas))
 | |
|       delete _toccas;
 | |
|     if (fexist(_tmppart))
 | |
|       delete _tpart;
 | |
|     if (fexist(_tmpscad))
 | |
|       delete _tscad;
 | |
|     if (fexist(_tmppagsca))
 | |
|       delete _tpagsca;      
 | |
|   }
 | |
| }
 | |
| 
 | |
| bool TRic_tab::menu(MENU_TAG m)
 | |
| {
 | |
|   if (m == BAR_ITEM(1))
 | |
|     return main_loop(); 
 | |
|   return FALSE;
 | |
| }
 | |
| 
 | |
| int cg6600 (int argc, char* argv[])
 | |
| { 
 | |
|   char p3 = '\0';
 | |
|   
 | |
|   if (argc > 4)
 | |
|     p3 = *argv[3];
 | |
|                                    
 | |
|   TRic_tab* main_app=new TRic_tab(*argv[2],p3);
 | |
|   main_app->run(argc, argv,main_app->_titolo);
 | |
|   delete main_app;
 | |
|   return TRUE;
 | |
| }
 |