2662 lines
		
	
	
		
			79 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			2662 lines
		
	
	
		
			79 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #include "cglib04.h"            
 | |
| #include "cg6804.h"  
 | |
| #include "cg6804a.h"
 | |
| 
 | |
| HIDDEN TVar_sc& app() { return (TVar_sc &) main_app(); }
 | |
| 
 | |
| TVar_sc::TVar_sc() : _control_rec(""), _trasf(""), _std(""), _numpart(""), _tmcf("")
 | |
| {
 | |
| }
 | |
| 
 | |
| char TVar_sc::TipoConto(int g, int c)
 | |
| {
 | |
|   TLocalisamfile pcon (LF_PCON);
 | |
|   char tipo = ' ';
 | |
|   
 | |
|   pcon.setkey(1);
 | |
|   pcon.zero();
 | |
|   pcon.put(PCN_GRUPPO,     g);
 | |
|   pcon.put(PCN_CONTO,      c);
 | |
|   pcon.put(PCN_SOTTOCONTO, 0l);
 | |
|   if (pcon.read() == NOERR)
 | |
|     tipo = pcon.get_char(PCN_TMCF);
 | |
| 
 | |
|   return tipo;
 | |
| }
 | |
| 
 | |
| bool TVar_sc::create()
 | |
| {
 | |
|   TApplication::create();
 | |
| 
 | |
|   _part       = new TLocalisamfile (LF_PARTITE);
 | |
|   _scad       = new TLocalisamfile (LF_SCADENZE); 
 | |
|   _pagsca     = new TLocalisamfile (LF_PAGSCA);  
 | |
| 
 | |
|   _rec_part   = new TRectype (LF_PARTITE);
 | |
|   _rec_scad   = new TRectype (LF_SCADENZE);
 | |
|   _rec_pagsca = new TRectype (LF_PAGSCA);
 | |
|   
 | |
|   _msk        = new TMask ("cg6804a");
 | |
|   _mask       = new TMask ("cg6804b");
 | |
|   
 | |
|   TSheet_field& rp = (TSheet_field&)(_mask->field(F_RIGAPART));  
 | |
|   rp.set_notify(a_notify);                          
 | |
|   rp.sheet_mask().set_handler(101, tipocf_handler);  
 | |
|   rp.sheet_mask().set_handler(104, codcf_handler);  
 | |
|   rp.sheet_mask().set_handler(108, rifpart_handler);  
 | |
|   rp.sheet_mask().set_handler(115, datareg_handler);  
 | |
|   rp.sheet_mask().set_handler(111, codcaus_handler);  
 | |
|   rp.sheet_mask().set_handler(109, datadoc_handler);  
 | |
|   rp.sheet_mask().set_handler(110, numdoc_handler);  
 | |
|   rp.sheet_mask().set_handler(117, contocl_handler);   
 | |
|   rp.sheet_mask().set_handler(119, tipomov_handler);   
 | |
|   rp.sheet_mask().set_handler(121, sezione_handler);   
 | |
|   rp.sheet_mask().set_handler(123, tipopag_handler);   
 | |
|   rp.sheet_mask().set_handler(122, datapag_handler);                   
 | |
|   rp.sheet_mask().set_handler(124, codval_handler);   
 | |
|   rp.sheet_mask().set_handler(125, datacam_handler);   
 | |
|   rp.sheet_mask().set_handler(126, cambio_handler);               
 | |
|   rp.sheet_mask().set_handler(100, gestione_handler);   
 | |
|   rp.sheet_mask().set_handler(DLG_OK,     registra_dati_comuni);                
 | |
|   rp.sheet_mask().set_handler(DLG_DELREC, elimina_partita);
 | |
|   
 | |
|   rp.swap_columns(105,106);
 | |
|   rp.swap_columns(105,107);
 | |
|   rp.swap_columns(105,108);
 | |
|   rp.swap_columns(105,109);
 | |
|   rp.swap_columns(105,110);
 | |
| 
 | |
|   _registrato = FALSE;
 | |
|   _aperti     = FALSE;
 | |
|   
 | |
|   dispatch_e_menu (BAR_ITEM(1));
 | |
| 
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVar_sc::destroy()
 | |
| {              
 | |
|   delete _mask;     
 | |
|   delete _msk;
 | |
|   delete _rec_part;
 | |
|   delete _rec_scad;
 | |
|   delete _rec_pagsca;
 | |
|   delete _part;
 | |
|   delete _scad;
 | |
|   delete _pagsca;                          
 | |
| //  delete _tab_reg;   
 | |
|   if (_aperti)
 | |
|   {
 | |
|     delete _tpart;
 | |
|     delete _tscad;
 | |
|     delete _tpagsca;
 | |
|   }
 | |
|   
 | |
|   return TApplication::destroy();
 | |
| }                                
 | |
| 
 | |
| void TVar_sc::apri_temp_file()
 | |
| {
 | |
|   TString80 tmppart = "%";
 | |
|   tmppart  << get_firm_dir();
 | |
|   tmppart << "\\" << TEMP_PART;
 | |
|   TString80 tmpscad = "%";
 | |
|   tmpscad << get_firm_dir();         
 | |
|   tmpscad << "\\" << TEMP_SCAD;  
 | |
|   TString80 tmppagsca = "%";
 | |
|   tmppagsca << get_firm_dir();     
 | |
|   tmppagsca << "\\" << TEMP_PAGSCA;                     
 | |
|     
 | |
|   _tpart     = new TIsamtempfile(LF_PARTITE, tmppart, 0);
 | |
|   _tscad     = new TIsamtempfile(LF_SCADENZE, tmpscad, 0);
 | |
|   _tpagsca   = new TIsamtempfile(LF_PAGSCA, tmppagsca, 0); 
 | |
|   _aperti = TRUE;
 | |
| }
 | |
| 
 | |
| void TVar_sc::leggi_record_controllo()
 | |
| {
 | |
|   _tras_file.read_control_rec();
 | |
|   _control_rec = _tras_file.record();
 | |
| }
 | |
| 
 | |
| bool TVar_sc::main_loop()
 | |
| {      
 | |
|   _dittaric = get_firm();
 | |
|   
 | |
|   if (!esegui_controlli()) return FALSE;
 | |
| 
 | |
|   apri_temp_file();
 | |
| 
 | |
|   if (!video_SC())
 | |
|   {
 | |
|     if (_registrato)
 | |
|     {
 | |
|       setta_parametri_record(" ","C");
 | |
|       leggi_record_controllo();
 | |
|       TString str;
 | |
|       str.spaces(60);
 | |
|       _control_rec.overwrite(str,241);
 | |
|       _tras_file.write_control_rec(_control_rec,1024);
 | |
|     }
 | |
|     return FALSE;                                       
 | |
|   }  
 | |
|   
 | |
|   return FALSE;
 | |
| }
 | |
| 
 | |
| bool TVar_sc::a_notify(TSheet_field& s, int r, KEY k)
 | |
| {
 | |
|   if (k == K_INS)
 | |
|     return FALSE;
 | |
|     
 | |
|   return TRUE;
 | |
| }   
 | |
| 
 | |
| bool TVar_sc::gestione_handler(TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_SPACE)
 | |
|   {         
 | |
|     TMask& m = f.mask();
 | |
|     
 | |
|     if (!m.check_fields()) return FALSE;
 | |
|     
 | |
|     char    tipocf  = f.mask().get     (101)[0];
 | |
|     int     gruppo  = f.mask().get_int (102);
 | |
|     int     conto   = f.mask().get_int (103);                      
 | |
|     long    sottoc  = f.mask().get_long(104);
 | |
|     int     anno    = f.mask().get_int (106);
 | |
|     TString npart   = f.mask().get     (107);
 | |
|     int     nriga   = f.mask().get_int (108);
 | |
|     
 | |
|     int     tipomov = f.mask().get_int (119);
 | |
|     
 | |
|     if (tipomov == 1)
 | |
|     {
 | |
|       TMask* msk = new TMask("cg6804d");    
 | |
|       KEY   k;
 | |
| 
 | |
|       TSheet_field& rp = (TSheet_field&) msk->field(F_RIGASCAD);  
 | |
|       rp.set_notify(a_notify);                          
 | |
|       rp.sheet_mask().set_handler(109, nrata_handler);  
 | |
|       rp.sheet_mask().set_handler(111, codpag_handler);  
 | |
|       rp.sheet_mask().set_handler(112, tpscad_handler);  
 | |
|       rp.sheet_mask().set_handler(113, ultclass_handler);  
 | |
|       rp.sheet_mask().set_handler(110, datascad_handler);  
 | |
|       rp.sheet_mask().set_handler(120, banca_handler);  
 | |
|       rp.sheet_mask().set_handler(122, banca_handler);  
 | |
|       rp.sheet_mask().set_handler(123, codag_handler);   
 | |
|       rp.sheet_mask().set_handler(124, datasoll_handler);   
 | |
|       rp.sheet_mask().set_handler(116, importo_handler);   
 | |
|       rp.sheet_mask().set_handler(117, impval_handler);   
 | |
|       rp.sheet_mask().set_handler(DLG_DELREC, elimina_scadenza);   
 | |
| 
 | |
|       rp.swap_columns(105,106);
 | |
|       rp.swap_columns(105,107);
 | |
|       rp.swap_columns(105,108);
 | |
|       rp.swap_columns(105,109);
 | |
|       rp.swap_columns(105,110);
 | |
|       
 | |
|       app().setta_mask_scad(tipocf,gruppo,conto,sottoc,anno,npart,nriga,*msk);      
 | |
|      
 | |
|       k = msk->run();                                                              
 | |
| 
 | |
|       switch (k)
 | |
|       {
 | |
|         case K_ESC :
 | |
|           break;
 | |
|         
 | |
|         case K_QUIT :
 | |
|           break;       
 | |
|           
 | |
|         case K_SAVE :
 | |
|         {
 | |
|           app().registra_scadenze(*msk);
 | |
|           app()._registrato = TRUE;
 | |
|         }
 | |
|           break;
 | |
|         
 | |
|         default:
 | |
|           break;
 | |
|       }
 | |
|       delete msk;
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|       TMask* msk = new TMask("cg6804e");    
 | |
|       KEY   k;
 | |
| 
 | |
|       TSheet_field& rp = (TSheet_field&) msk->field(F_RIGAPAGSCA);  
 | |
|       rp.set_notify(a_notify);                          
 | |
|       rp.sheet_mask().set_handler(110, rifpartita_handler);  
 | |
|       rp.sheet_mask().set_handler(111, accsal_handler);  
 | |
|       rp.sheet_mask().set_handler(113, importo_handler);  
 | |
|       rp.sheet_mask().set_handler(120, impvalp_handler);  
 | |
|       rp.sheet_mask().set_handler(131, passat_handler);  
 | |
|       rp.sheet_mask().set_handler(127, banca_handler);  
 | |
|       rp.sheet_mask().set_handler(129, banca_handler);  
 | |
|       rp.sheet_mask().set_handler(130, codag_handler);   
 | |
|       rp.sheet_mask().set_handler(124, contropartita_handler);   
 | |
|       rp.sheet_mask().set_handler(115, ritenute_handler);
 | |
|       rp.sheet_mask().set_handler(116, sezione_abb_handler);
 | |
|       rp.sheet_mask().set_handler(117, abbuoni_handler);
 | |
|       rp.sheet_mask().set_handler(118, sezione_dc_handler);  
 | |
|       rp.sheet_mask().set_handler(119, diffcambio_handler);
 | |
|       rp.sheet_mask().set_handler(DLG_DELREC, elimina_pagamenti);   
 | |
| 
 | |
|       rp.swap_columns(105,106);
 | |
|       rp.swap_columns(105,107);
 | |
|       rp.swap_columns(105,108);
 | |
|       rp.swap_columns(105,109);
 | |
|       rp.swap_columns(105,110);
 | |
|       rp.swap_columns(105,111);      
 | |
|       
 | |
|       app().setta_mask_pagsca(tipocf,gruppo,conto,sottoc,anno,npart,nriga,*msk);      
 | |
|       
 | |
|       k = msk->run();                 
 | |
|       
 | |
|       switch (k)
 | |
|       {
 | |
|         case K_ESC :
 | |
|           break;
 | |
|         
 | |
|         case K_QUIT :
 | |
|           break;       
 | |
|           
 | |
|         case K_SAVE :
 | |
|         {
 | |
|           app().registra_pagamenti(*msk);
 | |
|           app()._registrato = TRUE;
 | |
|         }
 | |
|           break;
 | |
|         
 | |
|         default:
 | |
|           break;
 | |
|       }
 | |
|       delete msk;
 | |
|     }
 | |
|   }
 | |
|   return TRUE;
 | |
| }       
 | |
| 
 | |
| char TVar_sc::sezione(char tipo,int gruppo,int conto,long sottoc,int anno,const TString& npart,int nriga,TString& codval,TMask& m)
 | |
| {
 | |
|   char sez = '\0';
 | |
| 
 | |
|   TSheet_field& part = (TSheet_field&)m.field(F_RIGAPART);
 | |
|     
 | |
|   for (int i = 0 ; i < part.items(); i++)
 | |
|   { 
 | |
|     TToken_string& row = part.row(i);
 | |
| 
 | |
|     char    tp = row.get     (0)[0];
 | |
|     int     g  = row.get_int (1);
 | |
|     int     c  = row.get_int (2);
 | |
|     long    s  = row.get_long(3);
 | |
|     int     an = row.get_int (5);
 | |
|     TString np = row.get     (6);
 | |
|     int     nr = row.get_int (7);
 | |
|     
 | |
|     if (tipo == tp && gruppo == g && conto == c && sottoc == s &&
 | |
|         anno == an && npart == np && nriga == nr)
 | |
|     {          
 | |
|       sez    = part.sheet_mask().get(121)[0];
 | |
|       codval = part.sheet_mask().get(124);
 | |
|       codval.trim();
 | |
|       break;
 | |
|     }  
 | |
|   }
 | |
|   return sez;
 | |
| }
 | |
| 
 | |
| void TVar_sc::descr_condpag(const TString& codpag,int tipopag,const TString& ultclass,TString& d_condpag)
 | |
| {
 | |
|   if (ultclass.not_empty())
 | |
|   {
 | |
|     TTable clr ("%CLR");
 | |
|     TString dep (format("%d%s", tipopag,(const char*) ultclass));
 | |
|      
 | |
|     clr.zero();
 | |
|     clr.put("CODTAB", dep);
 | |
|     if (clr.read() == NOERR)
 | |
|       d_condpag = clr.get("S0");
 | |
|     else
 | |
|       d_condpag = "";
 | |
|   }
 | |
|   else
 | |
|   {
 | |
|     TTable rpg ("%RPG");
 | |
|     int tipo;
 | |
|       
 | |
|     TString dep;
 | |
|     for (int i = 0; !rpg.eof(); rpg.next(), i++)
 | |
|     {
 | |
|       dep.format("%-s%3d", (const char*) codpag, i);
 | |
|     
 | |
|       rpg.zero();
 | |
|       rpg.put("CODTAB", dep);
 | |
|       if (rpg.read() == NOERR)   
 | |
|       {
 | |
|         tipo = rpg.get_int("I1");
 | |
|         if (tipo == tipopag)
 | |
|         {
 | |
|           switch(tipo)
 | |
|           {
 | |
|             case 1: d_condpag = "Rimessa diretta";
 | |
|                     break;
 | |
|             case 2: d_condpag = "Tratta";
 | |
|                     break;
 | |
|             case 3: d_condpag = "Ricevuta bancaria";
 | |
|                     break;
 | |
|             case 4: d_condpag = "Cessione";
 | |
|                     break;
 | |
|             case 5: d_condpag = "Paghero'";
 | |
|                     break;
 | |
|             case 6: d_condpag = "Lettera di credito";
 | |
|                     break;
 | |
|             case 7: d_condpag = "Tratta accettata";
 | |
|                     break;
 | |
|             case 8: d_condpag = "Rapporti interbancari diretti";
 | |
|                     break;
 | |
|             case 9: d_condpag = "Bonifico";
 | |
|                     break;
 | |
|             case 10: d_condpag = "Altro";
 | |
|                      break;
 | |
|             default: break;
 | |
|           };
 | |
|           break;
 | |
|         }
 | |
|       }  
 | |
|       else
 | |
|       {
 | |
|         d_condpag = ""; 
 | |
|         break;
 | |
|       }
 | |
|     } 
 | |
|   }  
 | |
| }
 | |
| 
 | |
| void TVar_sc::setta_mask_scad(char tipo,int gruppo,int conto,long sottoc,
 | |
|                               int anno,const TString& numpart,int nriga,TMask& m)
 | |
| {
 | |
|   _tscad->setkey(1);
 | |
|   _tscad->zero();
 | |
|   _tscad->put(SCAD_TIPOCF,     tipo); 
 | |
|   if (gruppo != 0)
 | |
|     _tscad->put(SCAD_GRUPPO,     gruppo);
 | |
|   if (conto != 0)
 | |
|     _tscad->put(SCAD_CONTO,      conto);
 | |
|   if (sottoc != 0)
 | |
|     _tscad->put(SCAD_SOTTOCONTO, sottoc);
 | |
|   if (anno != 0)
 | |
|     _tscad->put(SCAD_ANNO,       anno);
 | |
|   _tscad->put(SCAD_NUMPART,    numpart);
 | |
|   if (nriga != 0)
 | |
|     _tscad->put(SCAD_NRIGA,      nriga); 
 | |
|     
 | |
|   TRectype scadenza (_tscad->curr());  
 | |
| 
 | |
|   TSheet_field& scad = (TSheet_field&)m.field(F_RIGASCAD);
 | |
|   const long last_c = _tscad->items();
 | |
|   
 | |
|   _tscad->read(_isgteq);
 | |
|     
 | |
|   for (int i = 0 ; !_tscad->eof(); _tscad->next(), i++)
 | |
|   {           
 | |
|     TString part_rec  = scadenza.get(SCAD_NUMPART);
 | |
|     TString part_file = _tscad->get(SCAD_NUMPART);
 | |
|     
 | |
|     if (_tscad->curr() != scadenza || part_rec != part_file) break;
 | |
|     
 | |
|     TToken_string& row = scad.row(i);
 | |
|     
 | |
|     TString   tipoc     (_tscad->get     (SCAD_TIPOCF));
 | |
|     int       nrata    = _tscad->get_int (SCAD_NRATA);
 | |
|     TString16 datascad  (_tscad->get_date(SCAD_DATASCAD));
 | |
|     TString16 codpag    (_tscad->get     (SCAD_CODPAG));
 | |
|     int       tipopag  = _tscad->get_int (SCAD_TIPOPAG);
 | |
|     TString   ultclass  (_tscad->get     (SCAD_ULTCLASS));
 | |
|     real      importo   (_tscad->get_real(SCAD_IMPORTO));
 | |
|     real      impval    (_tscad->get_real(SCAD_IMPORTOVAL));
 | |
|     TString   descr     (_tscad->get     (SCAD_DESCR)); 
 | |
|     long      nsabi    = _tscad->get_long(SCAD_CODABIPR);
 | |
|     long      nscab    = _tscad->get_long(SCAD_CODCABPR);
 | |
|     long      vsabi    = _tscad->get_long(SCAD_CODABI);
 | |
|     long      vscab    = _tscad->get_long(SCAD_CODCAB);
 | |
|     TString   codag     (_tscad->get     (SCAD_CODAG));
 | |
|     TString16 datasoll  (_tscad->get_date(SCAD_DATASOLL));
 | |
|     int       nsoll    = _tscad->get_int (SCAD_NSOLL);
 | |
|     
 | |
|     TString d_conto,d_condpag,codval;
 | |
|     codval = "";
 | |
| 
 | |
|     char sez = sezione(tipo,gruppo,conto,sottoc,anno,numpart,nriga,codval,*_mask); 
 | |
|     descr_conto(tipoc,gruppo,conto,sottoc,d_conto);
 | |
|     descr_condpag(codpag,tipopag,ultclass,d_condpag);
 | |
|     
 | |
|     TString16 str;
 | |
|     
 | |
|     row.add(tipo);
 | |
|     str.format("%3d", gruppo);
 | |
|     row.add(str);
 | |
|     str.format("%3d", conto);
 | |
|     row.add(str);
 | |
|     str.format("%6ld", sottoc);
 | |
|     row.add(str);
 | |
|     row.add(d_conto);
 | |
|     str.format("%4d", anno);
 | |
|     row.add(str);
 | |
|     row.add(numpart);
 | |
|     str.format("%4d", nriga);
 | |
|     row.add(str);  
 | |
|     str.format("%4d", nrata); 
 | |
|     row.add(str);     
 | |
|     row.add(datascad);
 | |
|     row.add(codpag);
 | |
|     str.format("%d", tipopag);
 | |
|     row.add(str);
 | |
|     row.add(ultclass);
 | |
|     row.add(d_condpag);
 | |
|     row.add(sez); 
 | |
|     row.add(importo.string());
 | |
|     row.add(impval.string());
 | |
|     row.add(descr); 
 | |
|     str.format("%5ld", nsabi);
 | |
|     row.add(str); 
 | |
|     str.format("%5ld", nscab);
 | |
|     row.add(str);   
 | |
|     str.format("%5ld", vsabi);
 | |
|     row.add(str);   
 | |
|     str.format("%5ld", vscab);
 | |
|     row.add(str);
 | |
|     row.add(codag);
 | |
|     row.add(datasoll); 
 | |
|     str.format("%2d", nsoll);
 | |
|     row.add(str);
 | |
|   } 
 | |
| }
 | |
| 
 | |
| void TVar_sc::setta_mask_pagsca(char tipo,int gruppo,int conto,long sottoc,
 | |
|                               int anno,const TString& numpart,int nriga,TMask& m)
 | |
| {
 | |
|   _tpagsca->setkey(1);
 | |
|   _tpagsca->zero();
 | |
|   _tpagsca->put(PAGSCA_TIPOC,      tipo); 
 | |
|   if (gruppo != 0)
 | |
|     _tpagsca->put(PAGSCA_GRUPPO,     gruppo);
 | |
|   if (conto != 0)
 | |
|     _tpagsca->put(PAGSCA_CONTO,      conto);
 | |
|   if (sottoc != 0)
 | |
|     _tpagsca->put(PAGSCA_SOTTOCONTO, sottoc);
 | |
|   if (anno != 0)
 | |
|     _tpagsca->put(PAGSCA_ANNO,       anno);
 | |
|   _tpagsca->put(PAGSCA_NUMPART,    numpart);
 | |
| 
 | |
|   TRectype pagamenti (_tpagsca->curr());  
 | |
| 
 | |
|   TSheet_field& pag = (TSheet_field&)m.field(F_RIGAPAGSCA);
 | |
|   const long last_c = _tpagsca->items();
 | |
|   
 | |
|   _tpagsca->read(_isgteq);
 | |
|     
 | |
|   for (int i = 0 ; !_tpagsca->eof(); _tpagsca->next(), i++)
 | |
|   {                
 | |
|     TString rec  = pagamenti.get(PAGSCA_NUMPART);
 | |
|     TString file = _tpagsca->get(PAGSCA_NUMPART);
 | |
|     
 | |
|     if (_tpagsca->curr() != pagamenti || file != rec) break;
 | |
|     
 | |
|     int nrigp      = _tpagsca->get_int(PAGSCA_NRIGP); 
 | |
|     int nriga_fatt = _tpagsca->get_int(PAGSCA_NRIGA);
 | |
|     
 | |
|     if (nriga != nrigp) continue;
 | |
|     
 | |
|     TToken_string& row = pag.row(i);
 | |
|     
 | |
|     TString   tipoc     (_tpagsca->get     (PAGSCA_TIPOC));
 | |
|     int       nrata    = _tpagsca->get_int (PAGSCA_NRATA);
 | |
|     TString16 accsal    (_tpagsca->get     (PAGSCA_ACCSAL));
 | |
|     real      importo   (_tpagsca->get_real(PAGSCA_IMPORTO));
 | |
|     real      ritenute  (_tpagsca->get_real(PAGSCA_RITENUTE));
 | |
|     real      abbuoni   (_tpagsca->get_real(PAGSCA_ABBUONI));
 | |
|     real      diffcam   (_tpagsca->get_real(PAGSCA_DIFFCAM));
 | |
|     real      impval    (_tpagsca->get_real(PAGSCA_IMPORTOVAL));
 | |
|     TString   tipocc    (_tpagsca->get     (PAGSCA_TIPOCC));
 | |
|     int       gruppoc  = _tpagsca->get_int (PAGSCA_GRUPPOC);
 | |
|     int       contoc   = _tpagsca->get_int (PAGSCA_CONTOC);
 | |
|     long      sottocc  = _tpagsca->get_long(PAGSCA_SOTTOCONTC);
 | |
|     long      nsabi    = _tpagsca->get_long(PAGSCA_CODABIPR);
 | |
|     long      nscab    = _tpagsca->get_long(PAGSCA_CODCABPR);
 | |
|     long      vsabi    = _tpagsca->get_long(PAGSCA_CODABI);
 | |
|     long      vscab    = _tpagsca->get_long(PAGSCA_CODCAB);
 | |
|     TString   codag     (_tpagsca->get     (PAGSCA_CODAG));
 | |
|     char      passat   = _tpagsca->get_char(PAGSCA_PASSATT);
 | |
|     
 | |
|     TString d_conto,d_contoc,codval;
 | |
|     char sezab = '\0';
 | |
|     char sezdc = '\0';
 | |
|     
 | |
|     char sez = sezione(tipo,gruppo,conto,sottoc,anno,numpart,nriga,codval,*_mask);
 | |
|     descr_conto(tipoc,gruppo,conto,sottoc,d_conto); 
 | |
|     descr_conto(tipocc,gruppoc,contoc,sottocc,d_contoc);  // Contropartita
 | |
|     
 | |
|     if (abbuoni != ZERO)
 | |
|     {             
 | |
|       sezab;
 | |
|       if (passat == 'A')
 | |
|         sezab = 'D';
 | |
|       else
 | |
|         if (passat == 'P')
 | |
|           sezab = 'A';
 | |
|     
 | |
|       if (sezab != sez)
 | |
|         abbuoni = abbuoni * -1;
 | |
|     }                                    
 | |
|     if (diffcam != ZERO)
 | |
|     {             
 | |
|       sezdc = sez;
 | |
|       if (diffcam < ZERO)
 | |
|       {
 | |
|         diffcam = diffcam * -1;
 | |
|         if (sez == 'D')
 | |
|           sezdc = 'A';
 | |
|         else
 | |
|           if (sez == 'A')
 | |
|             sezdc = 'D';
 | |
|       }
 | |
|     }
 | |
|     
 | |
|     TString16 str;
 | |
|     
 | |
|     row.add(tipo);
 | |
|     str.format("%3d", gruppo);
 | |
|     row.add(str);
 | |
|     str.format("%3d", conto);
 | |
|     row.add(str);
 | |
|     str.format("%6ld", sottoc);
 | |
|     row.add(str);
 | |
|     row.add(d_conto);
 | |
|     str.format("%4d", anno);
 | |
|     row.add(str);
 | |
|     row.add(numpart);
 | |
|     str.format("%4d", nriga_fatt);
 | |
|     row.add(str);  
 | |
|     str.format("%4d", nrata); 
 | |
|     row.add(str); 
 | |
|     str.format("%4d", nrigp);    
 | |
|     row.add(str);
 | |
|     row.add(accsal);
 | |
|     str.format("%c", sez);
 | |
|     row.add(str);
 | |
|     row.add(importo.string());
 | |
|     if (ritenute != ZERO)
 | |
|       row.add(str);
 | |
|     else
 | |
|       row.add("");
 | |
|     row.add(ritenute.string());  
 | |
|     str.format("%c", sezab);    
 | |
|     row.add(str);
 | |
|     row.add(abbuoni.string()); 
 | |
|     str.format("%c", sezdc);    
 | |
|     row.add(str);
 | |
|     row.add(diffcam.string()); 
 | |
|     row.add(impval.string()); 
 | |
|     row.add(tipocc);
 | |
|     str.format("%3d", gruppoc);
 | |
|     row.add(str);            
 | |
|     str.format("%3d", contoc);
 | |
|     row.add(str);
 | |
|     str.format("%6ld", sottocc);
 | |
|     row.add(str);   
 | |
|     row.add(d_contoc);
 | |
|     str.format("%5ld", nsabi);
 | |
|     row.add(str); 
 | |
|     str.format("%5ld", nscab);
 | |
|     row.add(str);   
 | |
|     str.format("%5ld", vsabi);
 | |
|     row.add(str);   
 | |
|     str.format("%5ld", vscab);
 | |
|     row.add(str);
 | |
|     row.add(codag);
 | |
|     str.format("%c", passat);
 | |
|     row.add(str);
 | |
|   } 
 | |
| }
 | |
|                               
 | |
| bool TVar_sc::video_SC()
 | |
| {   
 | |
|   KEY   tasto;
 | |
|   
 | |
|   do
 | |
|   {      
 | |
|     _msk->reset(F_ANNO);
 | |
|     _msk->reset(F_NUMPART);
 | |
|     _msk->reset(F_NRIGA);
 | |
|     
 | |
|     tasto = _msk->run();     
 | |
|     
 | |
|     if (tasto != K_ENTER) return FALSE;
 | |
| 
 | |
|     _tipocf  = _msk->get     (F_TIPOCF)[0];
 | |
|     _gruppo  = _msk->get_int (F_GRUPPO);
 | |
|     _conto   = _msk->get_int (F_CONTO);
 | |
|     _sottoc  = _msk->get_long(F_SOTTOCONTO);
 | |
|     _anno    = _msk->get_int (F_ANNO);
 | |
|     _numpart = _msk->get     (F_NUMPART);
 | |
|     _nriga   = _msk->get_int (F_NRIGA);
 | |
|   
 | |
|     setta_campi_maschera(*_mask);
 | |
|                  
 | |
|     _mask->force_update();
 | |
|                  
 | |
|     tasto = _mask->run();
 | |
|       
 | |
|     switch (tasto)
 | |
|     {
 | |
|       case K_ESC :
 | |
|         break;
 | |
|         
 | |
|       case K_QUIT :
 | |
|         break;       
 | |
|         
 | |
|       case K_SAVE :
 | |
|       {
 | |
|         registra_partita(*_mask);
 | |
|         _registrato = TRUE;
 | |
|       }
 | |
|         break;
 | |
|         
 | |
|       default:
 | |
|         break;
 | |
|     }
 | |
|   }
 | |
|   while (tasto != K_QUIT);                              //K_ENTER
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVar_sc::descr_conto(const TString& tipo,int g,int c,long s,TString& d_conto)
 | |
| {
 | |
|   if (tipo == "C" || tipo == "F")
 | |
|   {
 | |
|     TLocalisamfile clifo (LF_CLIFO);
 | |
|     
 | |
|     clifo.setkey(1);
 | |
|     clifo.zero();
 | |
|     clifo.put(CLI_TIPOCF, tipo);
 | |
|     clifo.put(CLI_CODCF,  s);
 | |
|     if (clifo.read() == NOERR)
 | |
|     {
 | |
|       d_conto = clifo.get(CLI_RAGSOC);
 | |
|       return TRUE;
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|       d_conto = "";
 | |
|       return FALSE;
 | |
|     }
 | |
|   } 
 | |
|   else
 | |
|   {
 | |
|     TLocalisamfile pcon (LF_PCON);
 | |
|     
 | |
|     pcon.setkey(1);
 | |
|     pcon.zero();
 | |
|     pcon.put(PCN_GRUPPO,     g);
 | |
|     pcon.put(PCN_CONTO,      c); 
 | |
|     pcon.put(PCN_SOTTOCONTO, s);
 | |
|     if (pcon.read() == NOERR)   
 | |
|     {
 | |
|       d_conto = pcon.get(PCN_DESCR);
 | |
|       return TRUE;
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|       d_conto = "";
 | |
|       return FALSE;
 | |
|     }
 | |
|   }
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVar_sc::descr_caus(const TString& codcaus,TString& d_caus)
 | |
| {
 | |
|   TLocalisamfile cau (LF_CAUSALI);
 | |
|   
 | |
|   cau.setkey(1);
 | |
|   cau.zero();
 | |
|   cau.put("CODCAUS", (const char*) codcaus);
 | |
|   if (cau.read() == NOERR) 
 | |
|   {
 | |
|     d_caus   = cau.get     (CAU_DESCR);  
 | |
|     _dd_caus = cau.get_bool(CAU_DATADOC);
 | |
|     _nd_caus = cau.get_bool(CAU_NUMDOC);
 | |
|     _tm_caus = cau.get_int (CAU_TIPOMOV); 
 | |
|     _movval  = cau.get_bool(CAU_MOVVAL);
 | |
|     return TRUE;
 | |
|   }
 | |
|   else 
 | |
|   {
 | |
|    d_caus = "";            
 | |
|    _dd_caus = FALSE;
 | |
|    _nd_caus = FALSE;                     
 | |
|    _tm_caus = 0;       
 | |
|    _movval  = FALSE;
 | |
|    return FALSE;
 | |
|  }
 | |
|    
 | |
|  return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVar_sc::descr_contocl(int g,int c,TString& d_conto)
 | |
| {
 | |
|   TLocalisamfile pcon (LF_PCON);
 | |
|     
 | |
|   pcon.setkey(1);
 | |
|   pcon.zero();
 | |
|   pcon.put(PCN_GRUPPO,     g);
 | |
|   pcon.put(PCN_CONTO,      c); 
 | |
|   pcon.read();
 | |
|   if ( (g == pcon.get_int(PCN_GRUPPO)) && (c == pcon.get_int(PCN_CONTO)) )
 | |
|   {
 | |
|     d_conto = pcon.get(PCN_DESCR);  
 | |
|     return TRUE;
 | |
|   }
 | |
|   else
 | |
|   {
 | |
|     d_conto = "";                
 | |
|     return FALSE;
 | |
|   }  
 | |
|   return TRUE;  
 | |
| }
 | |
| 
 | |
| void TVar_sc::setta_campi_maschera(TMask& m)
 | |
| { 
 | |
| 
 | |
|   if (_gruppo == 0 && _conto == 0 && _sottoc == 0 && _anno == 0
 | |
|       && _numpart.empty() && _nriga == 0)
 | |
|   {
 | |
|     _tpart->setkey(1);
 | |
|     _tpart->zero();
 | |
|     _tpart->first();
 | |
|   }                 
 | |
|   else
 | |
|   {                                   
 | |
|     _tpart->setkey(1);
 | |
|     _tpart->zero();
 | |
|     _tpart->put(PART_TIPOCF,     _tipocf); 
 | |
|     if (_gruppo != 0)
 | |
|       _tpart->put(PART_GRUPPO,     _gruppo);
 | |
|     if (_conto != 0)
 | |
|       _tpart->put(PART_CONTO,      _conto);
 | |
|     if (_sottoc != 0)
 | |
|       _tpart->put(PART_SOTTOCONTO, _sottoc);
 | |
|     if (_anno != 0)
 | |
|       _tpart->put(PART_ANNO,       _anno);
 | |
|     _tpart->put(PART_NUMPART,    _numpart);
 | |
|     if (_nriga != 0)
 | |
|       _tpart->put(PART_NRIGA,      _nriga); 
 | |
|     
 | |
|     TRectype partita (_tpart->curr());  
 | |
|     _tpart->read(_isgteq);
 | |
|     if (_tpart->curr() != partita)
 | |
|     {
 | |
|       _tpart->zero();
 | |
|       _tpart->first();
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   TSheet_field& partita = (TSheet_field&)m.field(F_RIGAPART);
 | |
|   const long last_c = _tpart->items(); 
 | |
|   partita.destroy();
 | |
|     
 | |
|   for (int i = 0 ; !_tpart->eof(); _tpart->next(), i++)
 | |
|   { 
 | |
|     TToken_string& row = partita.row(i);
 | |
|     
 | |
|     TString16 tipoc     (_tpart->get     (PART_TIPOCF));
 | |
|     int       gruppo   = _tpart->get_int (PART_GRUPPO);        
 | |
|     int       conto    = _tpart->get_int (PART_CONTO);   
 | |
|     long      sottoc   = _tpart->get_long(PART_SOTTOCONTO);
 | |
|     int       anno     = _tpart->get_int (PART_ANNO); 
 | |
|     TString16 numpart   (_tpart->get     (PART_NUMPART));
 | |
|     int       nriga    = _tpart->get_int (PART_NRIGA);
 | |
|     TString16 datareg   (_tpart->get_date(PART_DATAREG));
 | |
|     TString16 codcaus   (_tpart->get     (PART_CODCAUS));
 | |
|     int       gruppocl = _tpart->get_int (PART_GRUPPOCL);
 | |
|     int       contocl  = _tpart->get_int (PART_CONTOCL);
 | |
|     int       tipomov  = _tpart->get_int (PART_TIPOMOV); 
 | |
|     TString   descr     (_tpart->get     (PART_DESCR));
 | |
|     TString16 sezione   (_tpart->get     (PART_SEZ));
 | |
|     TString16 datapag   (_tpart->get_date(PART_DATAPAG));
 | |
|     TString16 codval    (_tpart->get     (PART_CODVAL));
 | |
|     TString16 datacam   (_tpart->get_date(PART_DATACAM));
 | |
|     TString16 numdoc    (_tpart->get     (PART_NUMDOC));
 | |
|     TString16 datadoc   (_tpart->get_date(PART_DATADOC));
 | |
|     int       tipopag  = _tpart->get_int (PART_TIPOPAG);
 | |
|     real      cambio    (_tpart->get_real(PART_CAMBIO));
 | |
|     long      numreg   = _tpart->get_long(PART_NREG);
 | |
|     int       numrig   = _tpart->get_int (PART_NUMRIG);
 | |
|     
 | |
|     
 | |
|     TString d_conto,d_caus,d_contocl;
 | |
|     
 | |
|     descr_conto(tipoc,gruppo,conto,sottoc,d_conto);
 | |
|     descr_caus(codcaus,d_caus);
 | |
|     descr_contocl(gruppocl,contocl,d_contocl);
 | |
|     
 | |
|     TString16 str;
 | |
|     
 | |
|     row.add(tipoc);
 | |
|     str.format("%3d", gruppo);
 | |
|     row.add(str);
 | |
|     str.format("%3d", conto);
 | |
|     row.add(str);
 | |
|     str.format("%6ld", sottoc);
 | |
|     row.add(str);
 | |
|     row.add(d_conto);
 | |
|     str.format("%4d", anno);
 | |
|     row.add(str);
 | |
|     row.add(numpart);
 | |
|     str.format("%4d", nriga);
 | |
|     row.add(str);        
 | |
|     row.add(datadoc);
 | |
|     row.add(numdoc);
 | |
|     row.add(codcaus);
 | |
|     row.add(d_caus); 
 | |
|     str.format("%7ld", numreg);
 | |
|     row.add(str);
 | |
|     str.format("%3d", numrig);
 | |
|     row.add(str);
 | |
|     row.add(datareg); 
 | |
|     str.format("%3d", gruppocl);
 | |
|     row.add(str); 
 | |
|     str.format("%3d", contocl);
 | |
|     row.add(str);   
 | |
|     row.add(d_contocl);
 | |
|     str.format("%d", tipomov);
 | |
|     row.add(str);
 | |
|     row.add(descr);
 | |
|     row.add(sezione);
 | |
|     row.add(datapag); 
 | |
|     str.format("%d", tipopag);
 | |
|     row.add(str);
 | |
|     row.add(codval);
 | |
|     row.add(datacam);
 | |
|     row.add(cambio.string());
 | |
|     row.add(tipoc);
 | |
|     str.format("%3d", gruppo);
 | |
|     row.add(str);
 | |
|     str.format("%3d", conto);
 | |
|     row.add(str);
 | |
|     str.format("%6ld", sottoc);
 | |
|     row.add(str);
 | |
|     row.add(d_conto);
 | |
|     row.add(tipoc);
 | |
|     str.format("%3d", gruppo);
 | |
|     row.add(str);
 | |
|     str.format("%3d", conto);
 | |
|     row.add(str);
 | |
|     str.format("%6ld", sottoc);
 | |
|     row.add(str);
 | |
|     row.add(d_conto);
 | |
|   }                        
 | |
| }
 | |
| 
 | |
| bool TVar_sc::tipo_contocl(int g,int c,TString& tipo)
 | |
| {
 | |
|   TLocalisamfile pcon (LF_PCON);
 | |
|     
 | |
|   pcon.setkey(1);
 | |
|   pcon.zero();
 | |
|   pcon.put(PCN_GRUPPO,     g);
 | |
|   pcon.put(PCN_CONTO,      c); 
 | |
|   pcon.read();
 | |
|   if ( (g == pcon.get_int(PCN_GRUPPO)) && (c == pcon.get_int(PCN_CONTO)) )
 | |
|   {
 | |
|     tipo = pcon.get(PCN_TMCF);  
 | |
|     return TRUE;
 | |
|   }
 | |
|   else
 | |
|   {
 | |
|     tipo = "";                
 | |
|     return FALSE;
 | |
|   }  
 | |
|   return TRUE;  
 | |
| }
 | |
| 
 | |
| bool TVar_sc::codvaluta(const TString& codval)
 | |
| {             
 | |
|   TTable val ("%VAL");
 | |
|   TString dep;
 | |
|   
 | |
|   dep.format("%-3s", (const char*) codval);
 | |
|   
 | |
|   val.zero();
 | |
|   val.put("CODTAB", dep);
 | |
|   if (val.read() == NOERR)
 | |
|     return TRUE;
 | |
|   else
 | |
|     return FALSE;
 | |
|     
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| int TVar_sc::tipo_movimento(char tipo,int gruppo,int conto,long sottoc,int anno,const TString& npart,int nriga,TMask& m)
 | |
| {
 | |
|   int tipomov = 0;
 | |
| 
 | |
|   TSheet_field& part = (TSheet_field&)m.field(F_RIGAPART);
 | |
|     
 | |
|   for (int i = 0 ; i < part.items(); i++)
 | |
|   { 
 | |
|     TToken_string& row = part.row(i);
 | |
| 
 | |
|     char    tp = row.get     (0)[0];
 | |
|     int     g  = row.get_int (1);
 | |
|     int     c  = row.get_int (2);
 | |
|     long    s  = row.get_long(3);
 | |
|     int     an = row.get_int (5);
 | |
|     TString np = row.get     (6);
 | |
|     int     nr = row.get_int (7);
 | |
|     
 | |
|     if (tipo == tp && gruppo == g && conto == c && sottoc == s &&
 | |
|         anno == an && npart == np && nriga == nr)
 | |
|     {          
 | |
|       tipomov = part.sheet_mask().get_int(119);
 | |
|       break;
 | |
|     }  
 | |
|   }
 | |
|   return tipomov;
 | |
| }
 | |
| 
 | |
| // *****************************************
 | |
| // ***** HANDLER sulla riga di partita *****
 | |
| // *****************************************
 | |
| bool TVar_sc::tipocf_handler(TMask_field& f, KEY k)
 | |
| {
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {
 | |
|     TString16 tipocf(f.get());
 | |
|     if (tipocf != "" && tipocf != "C" && tipocf != "F")
 | |
|       return f.warning_box("Tipo anagrafica errato");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                                                
 | |
| 
 | |
| bool TVar_sc::codcf_handler(TMask_field& f, KEY k)
 | |
| {
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {  
 | |
|     TString tipocf = f.mask().get    (101);
 | |
|     int     gruppo = f.mask().get_int(102);
 | |
|     int     conto  = f.mask().get_int(103);
 | |
|     long    sottoc = atol(f.get());
 | |
|     TString desc;
 | |
|     
 | |
|     if (!app().descr_conto(tipocf,gruppo,conto,sottoc,desc))
 | |
|       return f.warning_box("Codice anagrafica errato");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                               
 | |
| 
 | |
| bool TVar_sc::rifpart_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {
 | |
|     int     anno    = f.mask().get_int(106);
 | |
|     TString numpart = f.mask().get    (107);
 | |
|     int     nriga   = atoi(f.get());
 | |
|     
 | |
|     if (anno == 0 || numpart.empty() || nriga == 0)
 | |
|       return f.warning_box("Riferimento partita errato");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::datareg_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {
 | |
|     if ( !(TDate::isdate(f.get())) )
 | |
|       return warning_box("Data errata o formato non valido");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::codcaus_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   { 
 | |
|     TString appoggio;                                                               
 | |
|     TString codcaus = f.get(); 
 | |
|     int     tipomov = f.mask().get_int(119);
 | |
|     
 | |
|     if (codcaus.not_empty())
 | |
|       if (!app().descr_caus(codcaus,appoggio))
 | |
|         return f.warning_box("Valore non valido per codice causale");
 | |
|         
 | |
|     long nreg = f.mask().get_long(113);
 | |
|     if (nreg != 0 && codcaus.empty())
 | |
|       return f.warning_box("Se e' indicato il numero di operazione la causale deve essere significativa");  
 | |
|     
 | |
|     if (tipomov == 0)
 | |
|       f.mask().set(119,app()._tm_caus);
 | |
|     else
 | |
|     {  
 | |
|       if (codcaus.not_empty())  
 | |
|         if (tipomov != app()._tm_caus)
 | |
|           return f.warning_box("Tipo movimento partita non congruo con tipo movimento indicato sulla causale");  
 | |
|     }
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::datadoc_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {                  
 | |
|     TString appoggio;
 | |
|     TString codcaus = f.mask().get(111);                                                             
 | |
|     TString datadoc = f.get();
 | |
|     datadoc.trim();
 | |
|     app().descr_caus(codcaus,appoggio);
 | |
|     if (datadoc.empty() && app()._dd_caus)
 | |
|       return f.warning_box("Data documento obbligatoria");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::numdoc_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {                  
 | |
|     TString appoggio;
 | |
|     TString codcaus = f.mask().get(111);                                                             
 | |
|     TString numdoc = f.get();
 | |
|     app().descr_caus(codcaus,appoggio);
 | |
|     if (numdoc.empty() && app()._nd_caus)
 | |
|       return f.warning_box("Numero documento obbligatorio");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::contocl_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {                  
 | |
|     TString tmcf;
 | |
|     int gruppo = f.mask().get_int(116);                                                             
 | |
|     int conto  = atoi(f.get());      
 | |
|     
 | |
|     if (gruppo == 0 && conto == 0) return TRUE;
 | |
|     
 | |
|     if (!app().tipo_contocl(gruppo,conto,tmcf))
 | |
|       return f.warning_box("Codice conto non esistente su piano dei conti");
 | |
|   
 | |
|     TString tipo = f.mask().get(101);
 | |
|     if (tipo != tmcf) 
 | |
|       return f.warning_box("Tipo conto C/F non congruo con tipo anagrafica"); 
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::tipomov_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {                  
 | |
|     int tipomov = atoi(f.get());                                                             
 | |
|     if (tipomov != 1 && tipomov != 2 && tipomov != 3 && tipomov != 5 && tipomov != 6)
 | |
|       return f.warning_box("Tipo movimento errato");
 | |
|    
 | |
|     TString appoggio = "";   
 | |
|     TString codcaus  = f.mask().get(111);
 | |
|     if (codcaus.not_empty())
 | |
|     {
 | |
|       app().descr_caus(codcaus,appoggio);
 | |
|       if (tipomov != app()._tm_caus)
 | |
|         return f.warning_box("Tipo movimento partita non congruo con tipo movimento indicato sulla causale");  
 | |
|     }    
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::sezione_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {                  
 | |
|     TString sezione = f.get();                                                             
 | |
|     if (sezione != "D" && sezione != "A")
 | |
|       return f.warning_box("Sezione dare/avere errata");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::tipopag_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {                  
 | |
|     int tipomov = f.mask().get_int(119);
 | |
|     int tipopag = atoi(f.get());
 | |
|     
 | |
|     if (tipomov == 1 && tipopag != 0)
 | |
|       return f.warning_box("In caso di fattura non e' possibile indicare il tipo pagamento");
 | |
|                                                                    
 | |
|     if (tipomov != 1 && tipomov != 2)
 | |
|       if (tipopag < 1 || tipopag > 9)
 | |
|         return f.warning_box("Tipo pagamento errato");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::datapag_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {                  
 | |
|     int     tipomov = f.mask().get_int(119);
 | |
|     TString datapag (f.get());    
 | |
|     datapag.trim();
 | |
| 
 | |
|     if (tipomov == 1 && datapag.not_empty())
 | |
|       return f.warning_box("In caso di fattura non e' possibile indicare la data del pagamento");
 | |
|                                                                  
 | |
|     if (tipomov != 1)
 | |
|       if (datapag.empty() || !(TDate::isdate(datapag)))
 | |
|         return f.warning_box("Se il movimento non e' una fattura la data di pagamento deve essere indicata");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::codval_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {                  
 | |
|     TString codval (f.get());
 | |
|                                                                    
 | |
|     if (codval.not_empty())                                                               
 | |
|     {
 | |
|       if (!app().codvaluta(codval))
 | |
|         return f.warning_box("Codice valuta non presente in tabella");
 | |
|       
 | |
|       TConfig conf (CONFIG_DITTA);
 | |
|       TString valuta = conf.get("GesVal");
 | |
|       if (codval.not_empty && valuta.empty())
 | |
|         return f.warning_box("Non e' possibile indicare il codice valuta se non indicata la gestione valuta sui parametri ditta");
 | |
|       if (codval.empty() && valuta.not_empty())
 | |
|         return f.warning_box("Il codice valuta deve essere indicato in quanto indicata la gestione in valuta sui parametri ditta");
 | |
|       TString codcaus (f.mask().get(111));
 | |
|       if (codcaus.not_empty())
 | |
|       { 
 | |
|         TString appoggio;
 | |
|         if (app().descr_caus(codcaus,appoggio))      
 | |
|         {
 | |
|           if (app()._movval && codval.empty())
 | |
|             return f.warning_box("Il codice valuta deve essere indicato in quanto indicata la gestione in valuta sulla causale");
 | |
|           if (!app()._movval && codval.not_empty())
 | |
|             return f.warning_box("Non e' possibile indicare il codice in valuta se non indicato il flag gestione valuta sulla causale");
 | |
|         }    
 | |
|       }    
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|       TDate datacam (f.mask().get_date(125));
 | |
|       real  cambio  (f.mask().get_real(126));
 | |
|       
 | |
|       if (datacam.ok())
 | |
|         return f.warning_box("Non e' possibile indicare la data cambio se non e' indicato il codice valuta");
 | |
|       if (cambio != ZERO)
 | |
|         return f.warning_box("Non e' possibile indicare il cambio se non e' indicato il codice valuta");  
 | |
|     }    
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::datacam_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {                
 | |
|     TString codval  (f.mask().get(124));
 | |
|     TString datacam (f.get());
 | |
|     datacam.trim();
 | |
|                                                                    
 | |
|     if (codval.not_empty())                                                               
 | |
|       if (datacam.empty() || !(TDate::isdate(datacam)))
 | |
|         return f.warning_box("Se il codice valuta e' indicato la data cambio deve essere significativa");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::cambio_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {                
 | |
|     TString codval (f.mask().get(124));
 | |
|     real    cambio (f.get());
 | |
|                                                                    
 | |
|     if (codval.not_empty())                                                               
 | |
|       if (cambio == ZERO)
 | |
|         return f.warning_box("Se il codice valuta e' indicato il cambio deve essere significativo");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| // ******************************************
 | |
| // ***** HANDLER sulla riga di scadenza *****
 | |
| // ******************************************
 | |
| bool TVar_sc::nrata_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {                
 | |
|     int nrata = atoi(f.get());
 | |
|                                                                    
 | |
|     if (nrata == 0)
 | |
|       return f.warning_box("Il numero di rata deve essere significativo");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::codpag_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) )
 | |
|   { 
 | |
|     TString descr;              
 | |
|     
 | |
|     TString codpag = f.get();
 | |
|     
 | |
|     if (codpag.not_empty())
 | |
|     {        
 | |
|       if (f.mask().is_running())
 | |
|       {
 | |
|         TTable cpg ("%CPG");
 | |
|         TString dep (format("%-4s", (const char*) codpag));
 | |
|      
 | |
|         cpg.zero();
 | |
|         cpg.put("CODTAB", dep);
 | |
|         if (cpg.read() != NOERR)   
 | |
|           return f.warning_box("Codice di pagamento errato o non presente in tabella");
 | |
|       }
 | |
|       TTable rpg ("%RPG");
 | |
|       int tipo;
 | |
|       
 | |
|       int tipopag = f.mask().get_int(112);
 | |
|       
 | |
|       TString dep;
 | |
|       for (int i = 0; !rpg.eof(); rpg.next(), i++)
 | |
|       {
 | |
|         dep.format("%-s%3d", (const char*) codpag, i);
 | |
|     
 | |
|         rpg.zero();
 | |
|         rpg.put("CODTAB", dep);
 | |
|         if (rpg.read() == NOERR)   
 | |
|         {
 | |
|           tipo = rpg.get_int("I1");
 | |
|           if (tipo == tipopag)
 | |
|           {
 | |
|             switch(tipo)
 | |
|             {
 | |
|               case 1: descr = "Rimessa diretta";
 | |
|                       break;
 | |
|               case 2: descr = "Tratta";
 | |
|                       break;
 | |
|               case 3: descr = "Ricevuta bancaria";
 | |
|                       break;
 | |
|               case 4: descr = "Cessione";
 | |
|                       break;
 | |
|               case 5: descr = "Paghero'";
 | |
|                       break;
 | |
|               case 6: descr = "Lettera di credito";
 | |
|                       break;
 | |
|               case 7: descr = "Tratta accettata";
 | |
|                       break;
 | |
|               case 8: descr = "Rapporti interbancari diretti";
 | |
|                       break;
 | |
|               case 9: descr = "Bonifico";
 | |
|                       break;
 | |
|               case 10: descr = "Altro";
 | |
|                        break;
 | |
|               default: break;
 | |
|             };
 | |
|             break;
 | |
|           }
 | |
|         }  
 | |
|         else
 | |
|         {
 | |
|           descr = ""; 
 | |
|           break;
 | |
|         }
 | |
|       }
 | |
|       if (f.mask().is_running())
 | |
|       {    
 | |
|         if (tipopag != 0)
 | |
|         {
 | |
|           if (tipopag != tipo)
 | |
|             return f.warning_box("Il tipo pagamento della scadenza non e' congruo con il tipo pagamento del codice di pagamento");
 | |
|         }
 | |
|         else
 | |
|           f.mask().set(112,tipo);
 | |
|       }
 | |
|     }      
 | |
|     TString ultclass = f.mask().get(113);
 | |
|     if (ultclass.empty())
 | |
|       f.mask().set(114, descr);  
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::tpscad_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {                  
 | |
|     TString codpag = f.mask().get(111);
 | |
|     
 | |
|     if (codpag.empty()) return TRUE;
 | |
|     
 | |
|     int tipopag = atoi(f.get());
 | |
|                                                                  
 | |
|     if (tipopag < 1 || tipopag > 9)
 | |
|       return f.warning_box("Tipo pagamento errato");
 | |
| 
 | |
|     TTable cpg ("%CPG");
 | |
|     TString dep (format("%-4s", (const char*) codpag));
 | |
|     
 | |
|     int tipo = 0;
 | |
|      
 | |
|     cpg.zero();
 | |
|     cpg.put("CODTAB", dep);
 | |
|     if (cpg.read() == NOERR)   
 | |
|       tipo  = atoi(cpg.get("S4"));
 | |
|     
 | |
|     if (tipopag != tipo)
 | |
|       return f.warning_box("Il tipo pagamento della scadenza non e' congruo con il tipo pagamento del codice di pagamento");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::ultclass_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   { 
 | |
|     TString descr;             
 | |
|     TString ultclass = f.get(); 
 | |
|     int     tipopag  = f.mask().get_int(112);
 | |
|     
 | |
|     if (ultclass.empty())
 | |
|     {                   
 | |
|       TTable rpg ("%RPG");
 | |
|       int tipo;
 | |
|                                        
 | |
|       TString codpag  = f.mask().get(111);                                       
 | |
|       int     tipopag = f.mask().get_int(112);
 | |
|       
 | |
|       TString dep;
 | |
|       for (int i = 0; !rpg.eof(); rpg.next(), i++)
 | |
|       {
 | |
|         dep.format("%-s%3d", (const char*) codpag, i);
 | |
|     
 | |
|         rpg.zero();
 | |
|         rpg.put("CODTAB", dep);
 | |
|         if (rpg.read() == NOERR)   
 | |
|         {
 | |
|           tipo = rpg.get_int("I1");
 | |
|           if (tipo == tipopag)
 | |
|           {
 | |
|             switch(tipo)
 | |
|             {
 | |
|               case 1: descr = "Rimessa diretta";
 | |
|                       break;
 | |
|               case 2: descr = "Tratta";
 | |
|                       break;
 | |
|               case 3: descr = "Ricevuta bancaria";
 | |
|                       break;
 | |
|               case 4: descr = "Cessione";
 | |
|                       break;
 | |
|               case 5: descr = "Paghero'";
 | |
|                       break;
 | |
|               case 6: descr = "Lettera di credito";
 | |
|                       break;
 | |
|               case 7: descr = "Tratta accettata";
 | |
|                       break;
 | |
|               case 8: descr = "Rapporti interbancari diretti";
 | |
|                       break;
 | |
|               case 9: descr = "Bonifico";
 | |
|                       break;
 | |
|               case 10: descr = "Altro";
 | |
|                        break;
 | |
|               default: break;
 | |
|             };
 | |
|             break;
 | |
|           }
 | |
|         }  
 | |
|         else
 | |
|         {
 | |
|           descr = ""; 
 | |
|           break;
 | |
|         }
 | |
|       }                          
 | |
|       f.mask().set(114, descr);  
 | |
|       return TRUE;
 | |
|     } 
 | |
|     
 | |
|     TTable clr ("%CLR");
 | |
|     TString dep (format("%d%s", tipopag,(const char*) ultclass));
 | |
|      
 | |
|     clr.zero();
 | |
|     clr.put("CODTAB", dep);
 | |
|     if (clr.read() == NOERR)
 | |
|       descr = clr.get("S0");
 | |
|     else
 | |
|       return f.warning_box("Ulteriore classificazione errata o non presente in tabella");
 | |
|     
 | |
|     f.mask().set(114, descr);  
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::datascad_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {                  
 | |
|     TString datascad (f.get());  
 | |
|     datascad.trim();
 | |
|                                                                  
 | |
|     if (datascad.empty() || !(TDate::isdate(datascad)))
 | |
|       return f.warning_box("Data scadenza errata");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::banca_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {    
 | |
|     TString mess;
 | |
|     long abi;             
 | |
|     long cab = atol(f.get());
 | |
|     int id = f.dlg();
 | |
|     if (id == 120)                  
 | |
|     {
 | |
|       abi = f.mask().get_long(119);  
 | |
|       mess = "Codice nostra banca errato o non presente in tabella";
 | |
|     }
 | |
|     else
 | |
|       if (id == 122)
 | |
|       {
 | |
|         abi = f.mask().get_long(121);
 | |
|         mess = "Codice vostra banca errato o non presente in tabella";
 | |
|       }  
 | |
|       else
 | |
|         if (id == 127)
 | |
|         {
 | |
|           abi = f.mask().get_long(126);  
 | |
|           mess = "Codice nostra banca errato o non presente in tabella";
 | |
|         }    
 | |
|         else
 | |
|           if (id == 129)
 | |
|           {
 | |
|             abi = f.mask().get_long(128);
 | |
|             mess = "Codice vostra banca errato o non presente in tabella";
 | |
|           }
 | |
|         
 | |
|     if (abi == 0 && cab == 0) return TRUE;
 | |
|     
 | |
|     TTable ban ("%BAN");
 | |
|     TString dep;
 | |
|     if (abi != 0 && cab != 0)
 | |
|       dep.format("%05ld%05ld", abi,cab);  
 | |
|     if (abi != 0 && cab == 0)  
 | |
|       dep.format("%05ld", abi);
 | |
|              
 | |
|     ban.zero();
 | |
|     ban.put("CODTAB", dep);
 | |
|     if (ban.read() != NOERR)
 | |
|       return f.warning_box("%s", (const char*) mess);
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::codag_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   { 
 | |
|     TString dep;   
 | |
|     TString codag = f.get();
 | |
|         
 | |
|     if (codag.empty()) return TRUE;
 | |
|     
 | |
|     TTable age ("AGE");        
 | |
|     if (real::is_natural(codag))
 | |
|       dep.format("%05s", (const char*) codag);
 | |
|     else
 | |
|       dep.format("%-5s", (const char*) codag);
 | |
|      
 | |
|     age.zero();
 | |
|     age.put("CODTAB", dep);
 | |
|     if (age.read() != NOERR)
 | |
|       return f.warning_box("Codice agente errato o non presente in tabella");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::datasoll_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {                  
 | |
|     TString datasoll (f.get()); 
 | |
|     datasoll.trim();
 | |
|     
 | |
|     if (datasoll.empty) return TRUE;
 | |
|                                                                  
 | |
|     if (!(TDate::isdate(datasoll)))
 | |
|       return f.warning_box("Data sollecito errata");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::importo_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {                  
 | |
|     real importo (f.get());
 | |
|     
 | |
|     if (importo == ZERO) 
 | |
|       return f.warning_box("L'importo del pagamento deve essere significativo");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::impval_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   { 
 | |
|     TString codval;                 
 | |
|     real importo (f.get());
 | |
|     
 | |
|     char tipo     = f.mask().get     (101)[0];
 | |
|     int  g        = f.mask().get_int (102);
 | |
|     int  c        = f.mask().get_int (103);
 | |
|     long s        = f.mask().get_long(104);
 | |
|     int  anno     = f.mask().get_int (106);
 | |
|     TString npart = f.mask().get     (107);
 | |
|     int     nriga = f.mask().get_int (108);
 | |
|     
 | |
|     app().sezione(tipo,g,c,s,anno,npart,nriga,codval,*(app()._mask));
 | |
|     
 | |
|     if (codval.empty() && importo != ZERO)
 | |
|       return f.warning_box("L'importo in valuta della scadenza non puo' essere indicato se non indicato il codice valuta");
 | |
|       
 | |
|     if (codval.not_empty() && importo == ZERO) 
 | |
|       return f.warning_box("L'importo in valuta della scadenza deve essere significativo");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| // *******************************************
 | |
| // ***** HANDLER sulla riga di pagamento *****
 | |
| // *******************************************
 | |
| bool TVar_sc::record_partite(char tipo,int g,int c,long s,int anno,TString& npart,int nriga)
 | |
| {
 | |
|   TRecnotype nrec = _tpart->recno();
 | |
|   TIsamtempfile& part = *_tpart;
 | |
|   
 | |
|   part.zero();
 | |
|   part.put(PART_TIPOCF,     tipo);
 | |
|   part.put(PART_GRUPPO,     g);
 | |
|   part.put(PART_CONTO,      c);
 | |
|   part.put(PART_SOTTOCONTO, s);
 | |
|   part.put(PART_ANNO,       anno);
 | |
|   part.put(PART_NUMPART,    npart);
 | |
|   part.put(PART_NRIGA,      nriga);
 | |
|   if (part.read() == NOERR)  
 | |
|   {
 | |
|     _tpart->readat(nrec);
 | |
|     return TRUE;         
 | |
|   }
 | |
|   _tpart->readat(nrec);
 | |
|     
 | |
|   return FALSE;
 | |
| }
 | |
| 
 | |
| bool TVar_sc::record_scadenze(char tipo,int g,int c,long s,int anno,TString& npart,int nriga,int nrata)
 | |
| {
 | |
|   TRecnotype nrec = _tscad->recno();
 | |
|   TIsamtempfile& scad = *_tscad;
 | |
|   
 | |
|   scad.zero();
 | |
|   scad.put(SCAD_TIPOCF,     tipo);
 | |
|   scad.put(SCAD_GRUPPO,     g);
 | |
|   scad.put(SCAD_CONTO,      c);
 | |
|   scad.put(SCAD_SOTTOCONTO, s);
 | |
|   scad.put(SCAD_ANNO,       anno);
 | |
|   scad.put(SCAD_NUMPART,    npart);
 | |
|   scad.put(SCAD_NRIGA,      nriga); 
 | |
|   scad.put(SCAD_NRATA,      nrata);
 | |
|   if (scad.read() == NOERR)  
 | |
|   {
 | |
|     _tscad->readat(nrec);
 | |
|     return TRUE;         
 | |
|   }
 | |
|   _tscad->readat(nrec);
 | |
|     
 | |
|   return FALSE;
 | |
| }
 | |
| 
 | |
| bool TVar_sc::rifpartita_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {
 | |
|     int nriga = f.mask().get_int(108);
 | |
|     int nrata = f.mask().get_int(109);
 | |
|     
 | |
|     if (nriga == 9999 || nrata == 9999) return TRUE;
 | |
|     
 | |
|     char    t     = f.mask().get     (101)[0];
 | |
|     int     g     = f.mask().get_int (102);
 | |
|     int     c     = f.mask().get_int (103);
 | |
|     long    s     = f.mask().get_long(104);
 | |
|     int     anno  = f.mask().get_int (106);
 | |
|     TString npart = f.mask().get     (107);       
 | |
| 
 | |
|     if (!app().record_partite(t,g,c,s,anno,npart,nriga))           
 | |
|       return f.warning_box("Non esiste la riga partita corrispondente");
 | |
|     if (!app().record_scadenze(t,g,c,s,anno,npart,nriga,nrata))
 | |
|       return f.warning_box("Non esiste la rata di scadenza corrispondente");  
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::accsal_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   { 
 | |
|     TString accsal = f.get();
 | |
|     
 | |
|     char    t     = f.mask().get     (101)[0];
 | |
|     int     g     = f.mask().get_int (102);
 | |
|     int     c     = f.mask().get_int (103);
 | |
|     long    s     = f.mask().get_long(104);
 | |
|     int     anno  = f.mask().get_int (106);
 | |
|     TString npart = f.mask().get     (107);       
 | |
|     int     nriga = f.mask().get_int (110);    
 | |
|                                                                 
 | |
|     int tipo = app().tipo_movimento(t,g,c,s,anno,npart,nriga,*(app()._mask));
 | |
|     if ( (tipo == 2 || tipo == 5) && accsal == "S")
 | |
|       return f.warning_box("Il flag in acconto / a saldo non puo' essere indicato in caso di Nota credito e Insoluto");
 | |
|                                                                      
 | |
|     if (accsal != "S" && accsal != "A")
 | |
|       return f.warning_box("Flag in acconto / a saldo errato");  
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::passat_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {            
 | |
|     real    abbuoni (f.mask().get_real(117));    
 | |
|     TString passat  = f.get();
 | |
|     
 | |
|     if (abbuoni != ZERO)                                                             
 | |
|       if (passat != "P" && passat != "A")
 | |
|         return f.warning_box("Flag attivo / passivo errato");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::impvalp_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   { 
 | |
|     TString codval;                 
 | |
|     real importo (f.get());
 | |
|     
 | |
|     char tipo     = f.mask().get     (101)[0];
 | |
|     int  g        = f.mask().get_int (102);
 | |
|     int  c        = f.mask().get_int (103);
 | |
|     long s        = f.mask().get_long(104);
 | |
|     int  anno     = f.mask().get_int (106);
 | |
|     TString npart = f.mask().get     (107);
 | |
|     int     nriga = f.mask().get_int (110);
 | |
|     
 | |
|     app().sezione(tipo,g,c,s,anno,npart,nriga,codval,*(app()._mask));
 | |
| 
 | |
|     if (codval.empty() && importo != ZERO)
 | |
|       return f.warning_box("L'importo in valuta del pagamento non puo' essere indicato se non indicato il codice valuta");
 | |
|       
 | |
|     if (codval.not_empty() && importo == ZERO) 
 | |
|       return f.warning_box("L'importo in valuta del pagamento deve essere significativo");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::sezione_abb_handler(TMask_field& f, KEY k)
 | |
| {
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {
 | |
|     TString sez     (f.get());
 | |
|     real    abbuoni (f.mask().get(117));
 | |
|     
 | |
|     if (sez != "D" && sez != "A" && sez != "")
 | |
|       return f.warning_box("Valore non valido per sezione");
 | |
|       
 | |
|     if (abbuoni != ZERO && sez.empty())
 | |
|       return f.warning_box("Se gli abbuoni sono significativi la sezione deve essere indicata");
 | |
|       
 | |
|     if (sez == "D")
 | |
|       f.mask().set(131,"A");
 | |
|     else  
 | |
|       if (sez == "A")
 | |
|         f.mask().set(131,"P");   
 | |
|       else
 | |
|         f.mask().set(131,"");
 | |
|  
 | |
|   }
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVar_sc::ritenute_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   { 
 | |
|     TString codval;                 
 | |
|     
 | |
|     char tipo     = f.mask().get     (101)[0];
 | |
|     int  g        = f.mask().get_int (102);
 | |
|     int  c        = f.mask().get_int (103);
 | |
|     long s        = f.mask().get_long(104);
 | |
|     int  anno     = f.mask().get_int (106);
 | |
|     TString npart = f.mask().get     (107);
 | |
|     int     nriga = f.mask().get_int (110);
 | |
| 
 | |
|     real ritenute (f.get());
 | |
|     int tipomov = app().tipo_movimento(tipo,g,c,s,anno,npart,nriga,*(app()._mask));
 | |
|     if ( (tipomov == 2 || tipomov == 5) && ritenute != ZERO)
 | |
|       return f.warning_box("La ritenuta non puo' essere indicata in caso di Nota credito e Insoluto");
 | |
|     
 | |
|     char sez = app().sezione(tipo,g,c,s,anno,npart,nriga,codval,*(app()._mask));
 | |
|     
 | |
|     TString str (format("%c", sez));
 | |
|     if (ritenute != ZERO)
 | |
|       f.mask().set(114,str);
 | |
|     else
 | |
|       f.mask().set(114,"");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::abbuoni_handler(TMask_field& f, KEY k)
 | |
| {             
 | |
|   if (k == K_TAB)
 | |
|   { 
 | |
|     TString codval;                 
 | |
|     
 | |
|     char tipo     = f.mask().get     (101)[0];
 | |
|     int  g        = f.mask().get_int (102);
 | |
|     int  c        = f.mask().get_int (103);
 | |
|     long s        = f.mask().get_long(104);
 | |
|     int  anno     = f.mask().get_int (106);
 | |
|     TString npart = f.mask().get     (107);
 | |
|     int     nriga = f.mask().get_int (110);
 | |
|     
 | |
|     app().sezione(tipo,g,c,s,anno,npart,nriga,codval,*(app()._mask));
 | |
|     
 | |
|     if (codval.not_empty()) 
 | |
|       ((TReal_field&)f).set_decimals(3);
 | |
|     else
 | |
|       ((TReal_field&)f).set_decimals(0); 
 | |
|   }
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {
 | |
|     TString accsal  (f.mask().get(111));   
 | |
|     real    abbuoni (f.get());
 | |
|     if (accsal == "A" && abbuoni != ZERO)
 | |
|       return f.warning_box("Gli abbuoni possono essere indicati solo se a SALDO");
 | |
|   }
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::sezione_dc_handler(TMask_field& f, KEY k)
 | |
| {
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {
 | |
|     TString sez     (f.get());
 | |
|     real    diffcam (f.mask().get(119));
 | |
|       
 | |
|     if (sez != "D" && sez != "A" && sez != "")
 | |
|       return f.warning_box("Valore non valido per sezione");
 | |
|         
 | |
|     if (diffcam != ZERO && sez.empty())
 | |
|       return f.warning_box("Se la differenza cambio e' significativa la sezione deve essere indicata");
 | |
|   }
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVar_sc::diffcambio_handler(TMask_field& f, KEY k)
 | |
| {
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   { 
 | |
|     TString codval;                 
 | |
|     
 | |
|     char tipo     = f.mask().get     (101)[0];
 | |
|     int  g        = f.mask().get_int (102);
 | |
|     int  c        = f.mask().get_int (103);
 | |
|     long s        = f.mask().get_long(104);
 | |
|     int  anno     = f.mask().get_int (106);
 | |
|     TString npart = f.mask().get     (107);
 | |
|     int     nriga = f.mask().get_int (110);
 | |
|     
 | |
|     app().sezione(tipo,g,c,s,anno,npart,nriga,codval,*(app()._mask));
 | |
|     
 | |
|     TString accsal  (f.mask().get(111));   
 | |
|     real    diffcam (f.get());
 | |
|     if (accsal == "A" && diffcam != ZERO)
 | |
|       return f.warning_box("La differenza cambio puo' essere indicata solo se a SALDO");  
 | |
|     if (codval.empty() && diffcam != ZERO)
 | |
|       return f.warning_box("La differenza cambio puo' essere indicata solo in caso di valuta");  
 | |
|   }
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVar_sc::contropartita_handler(TMask_field& f, KEY k)
 | |
| { 
 | |
|   if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
 | |
|   {
 | |
|     char tipo     = f.mask().get     (101)[0];
 | |
|     int  g        = f.mask().get_int (102);
 | |
|     int  c        = f.mask().get_int (103);
 | |
|     long s        = f.mask().get_long(104);
 | |
|     int  anno     = f.mask().get_int (106);
 | |
|     TString npart = f.mask().get     (107);
 | |
|     int     nriga = f.mask().get_int (110);
 | |
| 
 | |
| //    int tipomov = app().tipo_movimento(tipo,g,c,s,anno,npart,nriga,*(app()._mask));
 | |
| //    if ( (tipomov == 2 || tipomov == 5) && (g != 0 || c != 0 || s != 0) )
 | |
| //      return f.warning_box("La contropartita non puo' essere indicata in caso di Nota credito e Insoluto");
 | |
| 
 | |
|     TString tipocf = f.mask().get(121);
 | |
|     
 | |
|     if (tipocf == "C" || tipocf == "F")
 | |
|     {  
 | |
|       long codcf = f.mask().get_long(124); 
 | |
|       
 | |
|       if (codcf == 0) return TRUE;
 | |
|       
 | |
|       TLocalisamfile clifo (LF_CLIFO);
 | |
|     
 | |
|       clifo.setkey(1);
 | |
|       clifo.zero();
 | |
|       clifo.put(CLI_TIPOCF, tipocf);
 | |
|       clifo.put(CLI_CODCF,  codcf);
 | |
|       if (clifo.read() != NOERR)
 | |
|         return f.warning_box("Codice di contropartita errato o non presente in anagrafica clienti/fornitori");
 | |
|     }
 | |
|     else
 | |
|     {   
 | |
|       int  gruppo = f.mask().get_int (122);
 | |
|       int  conto  = f.mask().get_int (123);
 | |
|       long sottoc = f.mask().get_long(124);  
 | |
|     
 | |
|       if (gruppo == 0 && conto == 0 && sottoc == 0) return TRUE;
 | |
|     
 | |
|       TLocalisamfile pcon (LF_PCON);
 | |
|      
 | |
|       pcon.setkey(1);
 | |
|       pcon.zero();
 | |
|       pcon.put(PCN_GRUPPO,     gruppo);
 | |
|       pcon.put(PCN_CONTO,      conto);
 | |
|       pcon.put(PCN_SOTTOCONTO, sottoc);
 | |
|       if (pcon.read() != NOERR)
 | |
|         return f.warning_box("Codice contropartita errato o non presente in piano conti");
 | |
|     }    
 | |
|   }
 | |
| 
 | |
|   return TRUE;
 | |
| }                 
 | |
| 
 | |
| bool TVar_sc::registra_dati_comuni(TMask_field& f, KEY k)
 | |
| {                    
 | |
|   if (k == K_ENTER && f.mask().is_running())
 | |
|   {
 | |
|     long nreg = f.mask().get_long(113);
 | |
|     int  nrig = f.mask().get_int (114);
 | |
|   
 | |
|     if (nreg != 0 && nrig != 0)
 | |
|     { 
 | |
|       TDate   datareg (f.mask().get_date(115));
 | |
|       TString numdoc  (f.mask().get     (110));
 | |
|       TDate   datadoc (f.mask().get_date(109));
 | |
|       TString codcaus (f.mask().get     (111));
 | |
|     
 | |
|       TSheet_field& part = (TSheet_field&)app()._mask->field(F_RIGAPART);      
 | |
|     
 | |
|       for (int i = 0; i < part.items(); i++)
 | |
|       {
 | |
|         TToken_string& row = part.row(i);
 | |
|       
 | |
|         long numreg = row.get_long(12);
 | |
|         int  numrig = row.get_int (13);
 | |
|       
 | |
|         if (nreg != numreg || nrig != numrig) continue;
 | |
|       
 | |
|         TString d_caus;
 | |
|       
 | |
|         app().descr_caus(codcaus,d_caus);
 | |
|       
 | |
|         row.add(datadoc,8);
 | |
|         row.add(numdoc,9);      
 | |
|         row.add(codcaus,10); 
 | |
|         row.add(d_caus,11); 
 | |
|         row.add(datareg,14);      
 | |
|       }        
 | |
|       part.force_update();
 | |
|     }
 | |
|   }           
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVar_sc::cancella_partita(TMask_field& f)
 | |
| {
 | |
|   TIsamtempfile& part = *_tpart;
 | |
|     
 | |
|   char    tipo    = f.mask().get     (101)[0];
 | |
|   int     gruppo  = f.mask().get_int (102);
 | |
|   int     conto   = f.mask().get_int (103);
 | |
|   long    sottoc  = f.mask().get_long(104);
 | |
|   int     anno    = f.mask().get_int (106);
 | |
|   TString numpart = f.mask().get     (107);
 | |
|   int     nriga   = f.mask().get_int (108);
 | |
|     
 | |
|   int     tipomov = f.mask().get_int (119);
 | |
| 
 | |
|   if (!controlla_abbuoni_diffcam(tipo,gruppo,conto,sottoc,anno,numpart,nriga,0))
 | |
|     return f.message_box("Impossibile eliminare questa partita in quanto esistono uno o piu' pagamenti riferiti ad essa contenenti abbuoni o differenze cambio");
 | |
|     
 | |
|   part.setkey(1);
 | |
|   part.zero();
 | |
|   part.put(PART_TIPOCF,     tipo);
 | |
|   part.put(PART_GRUPPO,     gruppo);
 | |
|   part.put(PART_CONTO,      conto);
 | |
|   part.put(PART_SOTTOCONTO, sottoc);
 | |
|   part.put(PART_ANNO,       anno);
 | |
|   part.put(PART_NUMPART,    numpart);
 | |
|   part.put(PART_NRIGA,      nriga);  
 | |
|   if (part.read() == NOERR)
 | |
|   {
 | |
|     part.remove();
 | |
|     if (tipomov == 1)
 | |
|     {
 | |
|       TIsamtempfile& scad = *_tscad;
 | |
|         
 | |
|       scad.setkey(1);
 | |
|       scad.zero();
 | |
|       scad.put(SCAD_TIPOCF,     tipo);
 | |
|       scad.put(SCAD_GRUPPO,     gruppo);
 | |
|       scad.put(SCAD_CONTO,      conto);
 | |
|       scad.put(SCAD_SOTTOCONTO, sottoc);
 | |
|       scad.put(SCAD_ANNO,       anno);
 | |
|       scad.put(SCAD_NUMPART,    numpart);
 | |
|       scad.put(SCAD_NRIGA,      nriga);
 | |
|         
 | |
|       TRectype scadenza (scad.curr());
 | |
|         
 | |
|       for (scad.read(_isgteq); !scad.eof(); scad.next())
 | |
|       {  
 | |
|         TString rec  = scadenza.get(SCAD_NUMPART);
 | |
|         TString file = scad.get(SCAD_NUMPART);
 | |
|         
 | |
|         if (scad.curr() != scadenza || file != rec) break;
 | |
|           
 | |
|         int nrata = scad.get_int (SCAD_NRATA);
 | |
|           
 | |
|         scad.remove();
 | |
|           
 | |
|         sgancia_pagamenti(tipo,gruppo,conto,sottoc,anno,numpart,nriga,nrata);
 | |
|       }
 | |
|     }
 | |
|     else
 | |
|       if (tipomov != 1)
 | |
|       {
 | |
|         TIsamtempfile& pagsca = *_tpagsca;
 | |
|  
 | |
|         pagsca.setkey(1);
 | |
|         pagsca.zero();
 | |
|         pagsca.put(PAGSCA_TIPOC,      tipo);
 | |
|         pagsca.put(PAGSCA_GRUPPO,     gruppo);
 | |
|         pagsca.put(PAGSCA_CONTO,      conto);
 | |
|         pagsca.put(PAGSCA_SOTTOCONTO, sottoc);
 | |
|         pagsca.put(PAGSCA_ANNO,       anno);
 | |
|         pagsca.put(PAGSCA_NUMPART,    numpart);
 | |
|   
 | |
|         TRectype pagamenti (pagsca.curr());
 | |
|   
 | |
|         for (pagsca.read(_isgteq); !pagsca.eof(); pagsca.next())
 | |
|         {              
 | |
|           TString rec  = pagamenti.get(PAGSCA_NUMPART);
 | |
|           TString file = pagsca.get(PAGSCA_NUMPART);
 | |
|           
 | |
|           if (pagsca.curr() != pagamenti || file != rec) break;  
 | |
|             
 | |
|           int nrigp = pagsca.get_int (PAGSCA_NRIGP);
 | |
|             
 | |
|           if (nriga != nrigp) continue;
 | |
|             
 | |
|           pagsca.remove();
 | |
|         }                              
 | |
|       }
 | |
|   }
 | |
|   else
 | |
|     return f.warning_box("Non esiste la riga di partita richiesta sull'archivio delle partite");
 | |
|     
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVar_sc::controlla_abbuoni_diffcam(char tipo,int g,int c,long s,int anno,TString& npart,int nriga,int nrata)
 | |
| {
 | |
|   TIsamtempfile& pagsca = *_tpagsca;
 | |
|   
 | |
|   pagsca.setkey(1);
 | |
|   pagsca.zero();
 | |
|   pagsca.put(PAGSCA_TIPOC,      tipo);
 | |
|   pagsca.put(PAGSCA_GRUPPO,     g);
 | |
|   pagsca.put(PAGSCA_CONTO,      c);
 | |
|   pagsca.put(PAGSCA_SOTTOCONTO, s);
 | |
|   pagsca.put(PAGSCA_ANNO,       anno);
 | |
|   pagsca.put(PAGSCA_NUMPART,    npart);
 | |
|   pagsca.put(PAGSCA_NRIGA,      nriga);
 | |
|   if (nrata != 0)
 | |
|     pagsca.put(PAGSCA_NRATA,    nrata);
 | |
|       
 | |
|   TRectype pagamenti (pagsca.curr());
 | |
|   
 | |
|   for (pagsca.read(_isgteq); !pagsca.eof(); pagsca.next())
 | |
|   {  
 | |
|     TString rec  = pagamenti.get(PAGSCA_NUMPART);
 | |
|     TString file = pagsca.get(PAGSCA_NUMPART);
 | |
|     
 | |
|     if (pagsca.curr() != pagamenti || file != rec) break;
 | |
|     
 | |
|     real abbuoni = pagsca.get_real(PAGSCA_ABBUONI);
 | |
|     real diffcam = pagsca.get_real(PAGSCA_DIFFCAM);
 | |
|     if (abbuoni != ZERO || diffcam != ZERO)
 | |
|       return FALSE;
 | |
|   }                
 | |
|   return TRUE;              
 | |
| }
 | |
| 
 | |
| bool TVar_sc::elimina_partita(TMask_field& f, KEY k)
 | |
| {                    
 | |
|   if (k == K_SPACE && f.mask().is_running())
 | |
|     if (!app().cancella_partita(f))
 | |
|       return FALSE;
 | |
| 
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| void TVar_sc::sgancia_pagamenti(char tipo,int g,int c,long s,int anno,TString& npart,int nriga,int nrata)
 | |
| {
 | |
|   TIsamtempfile& pagsca = *_tpagsca;
 | |
|   
 | |
|   pagsca.setkey(1);
 | |
|   pagsca.zero();
 | |
|   pagsca.put(PAGSCA_TIPOC,      tipo);
 | |
|   pagsca.put(PAGSCA_GRUPPO,     g);
 | |
|   pagsca.put(PAGSCA_CONTO,      c);
 | |
|   pagsca.put(PAGSCA_SOTTOCONTO, s);
 | |
|   pagsca.put(PAGSCA_ANNO,       anno);
 | |
|   pagsca.put(PAGSCA_NUMPART,    npart);
 | |
|   pagsca.put(PAGSCA_NRIGA,      nriga);
 | |
|   pagsca.put(PAGSCA_NRATA,      nrata);
 | |
|   
 | |
|   TRectype pagamenti (pagsca.curr());
 | |
|   
 | |
|   for (pagsca.read(_isgteq); !pagsca.eof(); pagsca.next())
 | |
|   {  
 | |
|     TString rec  = pagamenti.get(PAGSCA_NUMPART);
 | |
|     TString file = pagsca.get(PAGSCA_NUMPART);
 | |
|     
 | |
|     if (pagsca.curr() != pagamenti || file != rec) break;
 | |
|     
 | |
|     TRectype pag (pagsca.curr());
 | |
|     
 | |
|     pag.put(PAGSCA_NRIGA, 9999);
 | |
|     pag.put(PAGSCA_NRATA, 9999);
 | |
|     
 | |
|     TRecnotype nrec = pagsca.recno();
 | |
|     pagsca.remove();
 | |
|     pagsca.curr() = pag;  
 | |
|     if (pagsca.read() == NOERR)
 | |
|     { 
 | |
|       real importo  = pagsca.get_real(PAGSCA_IMPORTO) + pag.get_real(PAGSCA_IMPORTO);
 | |
|       real impval   = pagsca.get_real(PAGSCA_IMPORTOVAL) + pag.get_real(PAGSCA_IMPORTOVAL);
 | |
|       real ritenute = pagsca.get_real(PAGSCA_RITENUTE) + pag.get_real(PAGSCA_RITENUTE);
 | |
|       pagsca.put(PAGSCA_IMPORTO,    importo);
 | |
|       pagsca.put(PAGSCA_IMPORTOVAL, impval);
 | |
|       pagsca.put(PAGSCA_RITENUTE,   ritenute);
 | |
|       pagsca.put(PAGSCA_ACCSAL, "A"); 
 | |
|       pagsca.rewrite();
 | |
|     }
 | |
|     else      
 | |
|     {
 | |
|       pagsca.curr() = pag;
 | |
|       pagsca.write();     
 | |
|     }             
 | |
|     pagsca.readat(nrec);
 | |
|   }                              
 | |
| }
 | |
| 
 | |
| bool TVar_sc::elimina_scadenza(TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_SPACE && f.mask().is_running())
 | |
|     if (!app().cancella_scadenza(f))
 | |
|       return FALSE;
 | |
| 
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVar_sc::cancella_scadenza(TMask_field& f)
 | |
| {
 | |
|   TIsamtempfile& scad = *_tscad;
 | |
|     
 | |
|   char    tipo    = f.mask().get     (101)[0];
 | |
|   int     gruppo  = f.mask().get_int (102);
 | |
|   int     conto   = f.mask().get_int (103);
 | |
|   long    sottoc  = f.mask().get_long(104);
 | |
|   int     anno    = f.mask().get_int (106);
 | |
|   TString numpart = f.mask().get     (107);
 | |
|   int     nriga   = f.mask().get_int (108);
 | |
|   int     nrata   = f.mask().get_int (109);
 | |
| 
 | |
|   if (!controlla_abbuoni_diffcam(tipo,gruppo,conto,sottoc,anno,numpart,nriga,nrata))
 | |
|     return f.message_box("Impossibile eliminare questa scadenza in quanto esistono uno o piu' pagamenti riferiti ad essa contenenti abbuoni o differenze cambio");
 | |
|     
 | |
|   scad.setkey(1);
 | |
|   scad.zero();
 | |
|   scad.put(SCAD_TIPOCF,     tipo);
 | |
|   scad.put(SCAD_GRUPPO,     gruppo);
 | |
|   scad.put(SCAD_CONTO,      conto);
 | |
|   scad.put(SCAD_SOTTOCONTO, sottoc);
 | |
|   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.remove();
 | |
|           
 | |
|     sgancia_pagamenti(tipo,gruppo,conto,sottoc,anno,numpart,nriga,nrata);
 | |
|   }
 | |
|   else
 | |
|     return f.warning_box("Non esiste la scadenza richiesta sull'archivio delle scadenze");
 | |
|     
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVar_sc::elimina_pagamenti(TMask_field& f, KEY k)
 | |
| {
 | |
|   if (k == K_SPACE && f.mask().is_running())
 | |
|     if (!app().cancella_pagamenti(f))
 | |
|       return FALSE;
 | |
| 
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVar_sc::cancella_pagamenti(TMask_field& f)
 | |
| {
 | |
|   TIsamtempfile& pagsca = *_tpagsca;
 | |
|     
 | |
|   char    tipo    = f.mask().get     (101)[0];
 | |
|   int     gruppo  = f.mask().get_int (102);
 | |
|   int     conto   = f.mask().get_int (103);
 | |
|   long    sottoc  = f.mask().get_long(104);
 | |
|   int     anno    = f.mask().get_int (106);
 | |
|   TString numpart = f.mask().get     (107);
 | |
|   int     nriga   = f.mask().get_int (108);  
 | |
|   int     nrata   = f.mask().get_int (109);
 | |
|   int     nrigp   = f.mask().get_int (110);
 | |
|  
 | |
|   pagsca.setkey(1);
 | |
|   pagsca.zero();
 | |
|   pagsca.put(PAGSCA_TIPOC,      tipo);
 | |
|   pagsca.put(PAGSCA_GRUPPO,     gruppo);
 | |
|   pagsca.put(PAGSCA_CONTO,      conto);
 | |
|   pagsca.put(PAGSCA_SOTTOCONTO, sottoc);
 | |
|   pagsca.put(PAGSCA_ANNO,       anno);
 | |
|   pagsca.put(PAGSCA_NUMPART,    numpart);
 | |
|   pagsca.put(PAGSCA_NRIGA,      nriga);
 | |
|   pagsca.put(PAGSCA_NRATA,      nrata);
 | |
|   pagsca.put(PAGSCA_NRIGP,      nrigp);
 | |
|   
 | |
|   if (pagsca.read() == NOERR)
 | |
|   {
 | |
|     pagsca.remove();
 | |
|   }                              
 | |
|   else
 | |
|     return f.warning_box("Non esiste il pagamento richiesto sull'archivio dei pagamenti");
 | |
|     
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| void TVar_sc::registra_partita(TMask& m)
 | |
| { 
 | |
|   TSheet_field& part = (TSheet_field&)m.field(F_RIGAPART);
 | |
|     
 | |
|   for (int i = 0 ; i < part.items(); i++)
 | |
|   { 
 | |
|     TToken_string& row = part.row(i);
 | |
| 
 | |
|     char    tipo      = row.get     (0)[0];
 | |
|     int     gruppo    = row.get_int (1);
 | |
|     int     conto     = row.get_int (2);
 | |
|     long    sottoc    = row.get_long(3);
 | |
|     int     anno      = row.get_int (5);
 | |
|     TString numpart   = row.get     (6);
 | |
|     int     nriga     = row.get_int (7);
 | |
|   
 | |
|     TDate   datadoc    (row.get     (8));
 | |
|     TString numdoc    = row.get     (9);
 | |
|     TString codcaus   = row.get     (10);
 | |
|     long    nreg      = row.get_long(12);
 | |
|     int     nrig      = row.get_int (13);
 | |
|     TDate   datareg    (row.get     (14)); 
 | |
|     int     gruppocl  = row.get_int (15);
 | |
|     int     contocl   = row.get_int (16);
 | |
|     int     tipomov   = row.get_int (18);
 | |
|     TString descr     = row.get     (19);
 | |
|     char    sez       = row.get     (20)[0];
 | |
|     TDate   datapag    (row.get     (21));
 | |
|     int     tipopag   = row.get_int (22);
 | |
|     TString codval     (row.get     (23));
 | |
|     TDate   datacam    (row.get     (24));
 | |
|     real    cambio     (row.get     (25));
 | |
| 
 | |
|     _tpart->setkey(1);
 | |
|     _tpart->zero();
 | |
|     _tpart->put(PART_TIPOCF,     tipo);
 | |
|     _tpart->put(PART_GRUPPO,     gruppo);
 | |
|     _tpart->put(PART_CONTO,      conto);
 | |
|     _tpart->put(PART_SOTTOCONTO, sottoc);
 | |
|     _tpart->put(PART_ANNO,       anno);
 | |
|     _tpart->put(PART_NUMPART,    numpart);
 | |
|     _tpart->put(PART_NRIGA,      nriga);
 | |
|           
 | |
|     if (_tpart->read() == NOERR)
 | |
|     {                              
 | |
|       _tpart->put(PART_TIPOCF,     tipo);
 | |
|       _tpart->put(PART_GRUPPO,     gruppo);
 | |
|       _tpart->put(PART_CONTO,      conto);
 | |
|       _tpart->put(PART_SOTTOCONTO, sottoc);
 | |
|       _tpart->put(PART_ANNO,       anno);
 | |
|       _tpart->put(PART_NUMPART,    numpart);
 | |
|       _tpart->put(PART_NRIGA,      nriga);
 | |
|       _tpart->put(PART_DATADOC,    datadoc);
 | |
|       _tpart->put(PART_NUMDOC,     numdoc);
 | |
|       _tpart->put(PART_CODCAUS,    codcaus);
 | |
|       _tpart->put(PART_NREG,       nreg);
 | |
|       _tpart->put(PART_NUMRIG,     nrig);
 | |
|       _tpart->put(PART_DATAREG,    datareg);  
 | |
|       _tpart->put(PART_GRUPPOCL,   gruppocl);
 | |
|       _tpart->put(PART_CONTOCL,    contocl);
 | |
|       _tpart->put(PART_TIPOMOV,    tipomov);
 | |
|       _tpart->put(PART_DESCR,      descr);
 | |
|       _tpart->put(PART_SEZ,        sez);
 | |
|       _tpart->put(PART_DATAPAG,    datapag); 
 | |
|       _tpart->put(PART_TIPOPAG,   tipopag);
 | |
|       _tpart->put(PART_CODVAL,    codval);
 | |
|       _tpart->put(PART_DATACAM,   datacam);
 | |
|       _tpart->put(PART_CAMBIO,    cambio);
 | |
|     
 | |
|       _tpart->rewrite();  
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|       _tpart->put(PART_TIPOCF,     tipo);
 | |
|       _tpart->put(PART_GRUPPO,     gruppo);
 | |
|       _tpart->put(PART_CONTO,      conto);
 | |
|       _tpart->put(PART_SOTTOCONTO, sottoc);
 | |
|       _tpart->put(PART_ANNO,       anno);
 | |
|       _tpart->put(PART_NUMPART,    numpart);
 | |
|       _tpart->put(PART_NRIGA,      nriga);
 | |
|       _tpart->put(PART_DATADOC,    datadoc);
 | |
|       _tpart->put(PART_NUMDOC,     numdoc);
 | |
|       _tpart->put(PART_CODCAUS,    codcaus);
 | |
|       _tpart->put(PART_NREG,       nreg);
 | |
|       _tpart->put(PART_NUMRIG,     nrig);
 | |
|       _tpart->put(PART_DATAREG,    datareg);  
 | |
|       _tpart->put(PART_GRUPPOCL,   gruppocl);
 | |
|       _tpart->put(PART_CONTOCL,    contocl);
 | |
|       _tpart->put(PART_TIPOMOV,    tipomov);
 | |
|       _tpart->put(PART_DESCR,      descr);
 | |
|       _tpart->put(PART_SEZ,        sez);
 | |
|       _tpart->put(PART_DATAPAG,    datapag); 
 | |
|       _tpart->put(PART_TIPOPAG,   tipopag);
 | |
|       _tpart->put(PART_CODVAL,    codval);
 | |
|       _tpart->put(PART_DATACAM,   datacam);
 | |
|       _tpart->put(PART_CAMBIO,    cambio);
 | |
|     
 | |
|       _tpart->write();
 | |
|     }
 | |
|   } 
 | |
| }
 | |
| 
 | |
| void TVar_sc::registra_scadenze(TMask& m)
 | |
| { 
 | |
|   TSheet_field& scad = (TSheet_field&)m.field(F_RIGASCAD);
 | |
|     
 | |
|   for (int i = 0 ; i < scad.items(); i++)
 | |
|   { 
 | |
|     TToken_string& row = scad.row(i);
 | |
| 
 | |
|     char    tipo      = row.get     (0)[0];
 | |
|     int     gruppo    = row.get_int (1);
 | |
|     int     conto     = row.get_int (2);
 | |
|     long    sottoc    = row.get_long(3);
 | |
|     int     anno      = row.get_int (5);
 | |
|     TString numpart   = row.get     (6);
 | |
|     int     nriga     = row.get_int (7);
 | |
|     int     nrata     = row.get_int (8);
 | |
|   
 | |
|     TDate   datascad   (row.get     (9));
 | |
|     TString codpag    = row.get     (10);
 | |
|     int     tipopag   = row.get_int (11);
 | |
|     TString ultclass  = row.get     (12);
 | |
|     real    importo    (row.get     (15));
 | |
|     real    impval     (row.get     (16));
 | |
|     TString descr     = row.get     (17);
 | |
|     long    nsabi     = row.get_long(19);
 | |
|     long    nscab     = row.get_long(19);
 | |
|     long    vsabi     = row.get_long(20);
 | |
|     long    vscab     = row.get_long(21);
 | |
|     TString codag     = row.get     (22);
 | |
|     TDate   datasoll   (row.get     (23)); 
 | |
|     int     nsoll     = row.get_int (24);
 | |
| 
 | |
|     _tscad->setkey(1);
 | |
|     _tscad->zero();
 | |
|     _tscad->put(SCAD_TIPOCF,     tipo);
 | |
|     _tscad->put(SCAD_GRUPPO,     gruppo);
 | |
|     _tscad->put(SCAD_CONTO,      conto);
 | |
|     _tscad->put(SCAD_SOTTOCONTO, sottoc);
 | |
|     _tscad->put(SCAD_ANNO,       anno);
 | |
|     _tscad->put(SCAD_NUMPART,    numpart);
 | |
|     _tscad->put(SCAD_NRIGA,      nriga);
 | |
|     _tscad->put(SCAD_NRATA,      nrata);
 | |
|           
 | |
|     if (_tscad->read() == NOERR)
 | |
|     {                              
 | |
|       _tscad->put(SCAD_TIPOCF,     tipo);
 | |
|       _tscad->put(SCAD_GRUPPO,     gruppo);
 | |
|       _tscad->put(SCAD_CONTO,      conto);
 | |
|       _tscad->put(SCAD_SOTTOCONTO, sottoc);
 | |
|       _tscad->put(SCAD_ANNO,       anno);
 | |
|       _tscad->put(SCAD_NUMPART,    numpart);
 | |
|       _tscad->put(SCAD_NRIGA,      nriga);
 | |
|       _tscad->put(SCAD_NRATA,      nrata);
 | |
|       _tscad->put(SCAD_DATASCAD,   datascad);
 | |
|       _tscad->put(SCAD_CODPAG,     codpag);
 | |
|       _tscad->put(SCAD_TIPOPAG,    tipopag);
 | |
|       _tscad->put(SCAD_ULTCLASS,   ultclass);
 | |
|       _tscad->put(SCAD_IMPORTO,    importo);
 | |
|       _tscad->put(SCAD_IMPORTOVAL, impval);  
 | |
|       _tscad->put(SCAD_DESCR,      descr);
 | |
|       _tscad->put(SCAD_CODABIPR,   nsabi);
 | |
|       _tscad->put(SCAD_CODCABPR,   nscab);
 | |
|       _tscad->put(SCAD_CODABI,     vsabi);
 | |
|       _tscad->put(SCAD_CODCAB,     vscab);
 | |
|       _tscad->put(SCAD_CODAG,      codag); 
 | |
|       _tscad->put(SCAD_DATASOLL,   datasoll);
 | |
|       _tscad->put(SCAD_NSOLL,      nsoll);
 | |
|     
 | |
|       _tscad->rewrite();
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|       _tscad->put(SCAD_TIPOCF,     tipo);
 | |
|       _tscad->put(SCAD_GRUPPO,     gruppo);
 | |
|       _tscad->put(SCAD_CONTO,      conto);
 | |
|       _tscad->put(SCAD_SOTTOCONTO, sottoc);
 | |
|       _tscad->put(SCAD_ANNO,       anno);
 | |
|       _tscad->put(SCAD_NUMPART,    numpart);
 | |
|       _tscad->put(SCAD_NRIGA,      nriga);
 | |
|       _tscad->put(SCAD_NRATA,      nrata);
 | |
|       _tscad->put(SCAD_DATASCAD,   datascad);
 | |
|       _tscad->put(SCAD_CODPAG,     codpag);
 | |
|       _tscad->put(SCAD_TIPOPAG,    tipopag);
 | |
|       _tscad->put(SCAD_ULTCLASS,   ultclass);
 | |
|       _tscad->put(SCAD_IMPORTO,    importo);
 | |
|       _tscad->put(SCAD_IMPORTOVAL, impval);  
 | |
|       _tscad->put(SCAD_DESCR,      descr);
 | |
|       _tscad->put(SCAD_CODABIPR,   nsabi);
 | |
|       _tscad->put(SCAD_CODCABPR,   nscab);
 | |
|       _tscad->put(SCAD_CODABI,     vsabi);
 | |
|       _tscad->put(SCAD_CODCAB,     vscab);
 | |
|       _tscad->put(SCAD_CODAG,      codag); 
 | |
|       _tscad->put(SCAD_DATASOLL,   datasoll);
 | |
|       _tscad->put(SCAD_NSOLL,      nsoll);
 | |
|     
 | |
|       _tscad->write();
 | |
|     }
 | |
|   } 
 | |
| }
 | |
| 
 | |
| void TVar_sc::registra_pagamenti(TMask& m)
 | |
| { 
 | |
|   TString passat;
 | |
|   
 | |
|   TSheet_field& pag = (TSheet_field&)m.field(F_RIGAPAGSCA);
 | |
|     
 | |
|   for (int i = 0 ; i < pag.items(); i++)
 | |
|   { 
 | |
|     TToken_string& row = pag.row(i);
 | |
| 
 | |
|     char    tipo      = row.get     (0)[0];
 | |
|     int     gruppo    = row.get_int (1);
 | |
|     int     conto     = row.get_int (2);
 | |
|     long    sottoc    = row.get_long(3);
 | |
|     int     anno      = row.get_int (5);
 | |
|     TString numpart   = row.get     (6);
 | |
|     int     nriga     = row.get_int (7);
 | |
|     int     nrata     = row.get_int (8); 
 | |
|     int     nrigp     = row.get_int (9);
 | |
|   
 | |
|     TString accsal    = row.get     (10);
 | |
|     real    importo    (row.get     (12));
 | |
|     real    ritenute   (row.get     (14));
 | |
|     real    abbuoni    (row.get     (16));
 | |
|     real    diffcam    (row.get     (18));
 | |
|     real    impval     (row.get     (19));
 | |
|     char    tipoc     = row.get     (20)[0];
 | |
|     int     gruppoc   = row.get_int(21);
 | |
|     int     contoc    = row.get_int(22);
 | |
|     long    sottocc   = row.get_long(23);
 | |
|     long    nsabi     = row.get_long(25);
 | |
|     long    nscab     = row.get_long(26);
 | |
|     long    vsabi     = row.get_long(27);
 | |
|     long    vscab     = row.get_long(28);
 | |
|     TString codag     = row.get     (29);
 | |
|     
 | |
|     TString codval = "";
 | |
|     char sez = sezione(tipo,gruppo,conto,sottoc,anno,numpart,nriga,codval,*_mask);
 | |
|     
 | |
|     char sezab = row.get(15)[0];
 | |
|     
 | |
|     if (sezab != sez)
 | |
|       abbuoni = abbuoni * -1;
 | |
| 
 | |
|     if (sezab == 'A')
 | |
|       passat = "P";
 | |
|     else
 | |
|       if (sezab == 'D')
 | |
|         passat = "A";
 | |
|     
 | |
|     char sezdc = row.get(17)[0];
 | |
|                                         
 | |
|     if (sezdc != sez)
 | |
|       diffcam = diffcam * -1;
 | |
| 
 | |
|     _tpagsca->setkey(1);
 | |
|     _tpagsca->zero();
 | |
|     _tpagsca->put(PAGSCA_TIPOC,      tipo);
 | |
|     _tpagsca->put(PAGSCA_GRUPPO,     gruppo);
 | |
|     _tpagsca->put(PAGSCA_CONTO,      conto);
 | |
|     _tpagsca->put(PAGSCA_SOTTOCONTO, sottoc);
 | |
|     _tpagsca->put(PAGSCA_ANNO,       anno);
 | |
|     _tpagsca->put(PAGSCA_NUMPART,    numpart);
 | |
|     _tpagsca->put(PAGSCA_NRIGA,      nriga);
 | |
|     _tpagsca->put(PAGSCA_NRATA,      nrata);   
 | |
|     _tpagsca->put(PAGSCA_NRIGP,      nrigp);
 | |
|           
 | |
|     if (_tpagsca->read() == NOERR)
 | |
|     {                              
 | |
|       _tpagsca->put(PAGSCA_TIPOC,      tipo);
 | |
|       _tpagsca->put(PAGSCA_GRUPPO,     gruppo);
 | |
|       _tpagsca->put(PAGSCA_CONTO,      conto);
 | |
|       _tpagsca->put(PAGSCA_SOTTOCONTO, sottoc);
 | |
|       _tpagsca->put(PAGSCA_ANNO,       anno);
 | |
|       _tpagsca->put(PAGSCA_NUMPART,    numpart);
 | |
|       _tpagsca->put(PAGSCA_NRIGA,      nriga);
 | |
|       _tpagsca->put(PAGSCA_NRATA,      nrata); 
 | |
|       _tpagsca->put(PAGSCA_NRIGP,      nrigp);
 | |
|       _tpagsca->put(PAGSCA_ACCSAL,     accsal);
 | |
|       _tpagsca->put(PAGSCA_IMPORTO,    importo);
 | |
|       _tpagsca->put(PAGSCA_RITENUTE,   ritenute);
 | |
|       _tpagsca->put(PAGSCA_ABBUONI,    abbuoni);
 | |
|       _tpagsca->put(PAGSCA_DIFFCAM,    diffcam);
 | |
|       _tpagsca->put(PAGSCA_IMPORTOVAL, impval);  
 | |
|       _tpagsca->put(PAGSCA_TIPOCC,     tipoc);  
 | |
|       _tpagsca->put(PAGSCA_GRUPPOC,    gruppoc);
 | |
|       _tpagsca->put(PAGSCA_CONTOC,     contoc);
 | |
|       _tpagsca->put(PAGSCA_SOTTOCONTC, sottocc);
 | |
|       _tpagsca->put(PAGSCA_CODABIPR,   nsabi);
 | |
|       _tpagsca->put(PAGSCA_CODCABPR,   nscab);
 | |
|       _tpagsca->put(PAGSCA_CODABI,     vsabi);
 | |
|       _tpagsca->put(PAGSCA_CODCAB,     vscab);
 | |
|       _tpagsca->put(PAGSCA_CODAG,      codag); 
 | |
|       _tpagsca->put(PAGSCA_PASSATT,    passat);
 | |
|     
 | |
|       _tpagsca->rewrite();
 | |
|     }  
 | |
|     else
 | |
|     {
 | |
|       _tpagsca->put(PAGSCA_TIPOC,      tipo);
 | |
|       _tpagsca->put(PAGSCA_GRUPPO,     gruppo);
 | |
|       _tpagsca->put(PAGSCA_CONTO,      conto);
 | |
|       _tpagsca->put(PAGSCA_SOTTOCONTO, sottoc);
 | |
|       _tpagsca->put(PAGSCA_ANNO,       anno);
 | |
|       _tpagsca->put(PAGSCA_NUMPART,    numpart);
 | |
|       _tpagsca->put(PAGSCA_NRIGA,      nriga);
 | |
|       _tpagsca->put(PAGSCA_NRATA,      nrata); 
 | |
|       _tpagsca->put(PAGSCA_NRIGP,      nrigp);
 | |
|       _tpagsca->put(PAGSCA_ACCSAL,     accsal);
 | |
|       _tpagsca->put(PAGSCA_IMPORTO,    importo);
 | |
|       _tpagsca->put(PAGSCA_RITENUTE,   ritenute);
 | |
|       _tpagsca->put(PAGSCA_ABBUONI,    abbuoni);
 | |
|       _tpagsca->put(PAGSCA_DIFFCAM,    diffcam);
 | |
|       _tpagsca->put(PAGSCA_IMPORTOVAL, impval);  
 | |
|       _tpagsca->put(PAGSCA_TIPOCC,     tipoc);  
 | |
|       _tpagsca->put(PAGSCA_GRUPPOC,    gruppoc);
 | |
|       _tpagsca->put(PAGSCA_CONTOC,     contoc);
 | |
|       _tpagsca->put(PAGSCA_SOTTOCONTC, sottocc);
 | |
|       _tpagsca->put(PAGSCA_CODABIPR,   nsabi);
 | |
|       _tpagsca->put(PAGSCA_CODCABPR,   nscab);
 | |
|       _tpagsca->put(PAGSCA_CODABI,     vsabi);
 | |
|       _tpagsca->put(PAGSCA_CODCAB,     vscab);
 | |
|       _tpagsca->put(PAGSCA_CODAG,      codag); 
 | |
|       _tpagsca->put(PAGSCA_PASSATT,    passat);
 | |
|     
 | |
|       _tpagsca->write();
 | |
|     }
 | |
|   }
 | |
| }   
 | |
| 
 | |
| bool TVar_sc::leggi_trasfer()
 | |
| { 
 | |
|   _trasf = _tras_file.path(_dittaric);
 | |
|   _trasf << HEADER;
 | |
|   
 | |
|   _tras_file.open(_trasf);
 | |
|   
 | |
|   if (_tras_file.exist())
 | |
|   {  
 | |
|     if (_tras_file.read_control_rec())
 | |
|       _control_rec = _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 TVar_sc::esegui_controlli()
 | |
| {                    
 | |
|   TConfig conf(CONFIG_DITTA);           
 | |
|   
 | |
|   _std = conf.get("FlStTra");
 | |
| 
 | |
|   if (!prefix().exist(_dittaric))
 | |
|     return error_box("Rilevati gravi errori negli archivi: procedura interrotta");
 | |
|   
 | |
|   if (!leggi_trasfer())
 | |
|     return FALSE;
 | |
| 
 | |
|   if (!controlli())
 | |
|     return FALSE;     
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| void TVar_sc::setta_parametri_record(const TString& sigla,const TString& flag)
 | |
| { 
 | |
|   TConfig conf (CONFIG_DITTA);
 | |
|   
 | |
|   conf.set("FlStTra", flag);
 | |
|   
 | |
|   leggi_record_controllo();
 | |
|   _control_rec.overwrite(sigla,240);
 | |
|   
 | |
|   const int size = 1024;
 | |
|   
 | |
|   _tras_file.write_control_rec(_control_rec, size);
 | |
| }
 | |
| 
 | |
| bool TVar_sc::controlli()
 | |
| { 
 | |
|   TString16 chiave,sigla;
 | |
|   
 | |
|   chiave = _control_rec.sub(241,256);
 | |
|   chiave.trim();        
 | |
|   sigla  = _control_rec.sub(240,241);
 | |
|   sigla.trim();
 | |
| 
 | |
|   if (_std == "M" && sigla == "Z" && chiave != "")
 | |
|     return error_box("Variazione NON POSSIBILE: trasferimento movimenti gia' iniziato");           
 | |
|   
 | |
|   if (_std == "M" && sigla == "U")
 | |
|     return error_box("Variazione NON POSSIBILE: trasferimento movimenti gia' iniziato");           
 | |
| 
 | |
|   if (_std == "M" && sigla == "B")
 | |
|     return error_box("Variazione NON POSSIBILE: trasferimento movimenti saldaconto gia' iniziato");           
 | |
| 
 | |
|   if (_std == "*") 
 | |
|   {
 | |
|     warning_box("Trasferimento interamente completato: proseguire per cancellare il file");    
 | |
|     _tras_file.remove_all();
 | |
|     setta_parametri_record(" "," ");
 | |
|     return FALSE;
 | |
|   }
 | |
| 
 | |
|   if (_std == "T")
 | |
|     return error_box("Variazione NON POSSIBILE: eseguire prima la ricezione delle tabelle");           
 | |
|   
 | |
|   return TRUE;
 | |
| }
 | |
| 
 | |
| bool TVar_sc::menu(MENU_TAG m)
 | |
| {
 | |
|   if (m == BAR_ITEM(1))
 | |
|     return main_loop(); 
 | |
|   return FALSE;
 | |
| }
 | |
| 
 | |
| 
 |