per note di credito (extracontabili e non) da trasferire alla posizione 113-114. git-svn-id: svn://10.65.10.50/trunk@4279 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			782 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			782 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
 | 
						|
#include <applicat.h>
 | 
						|
#include <tabapp.h>  
 | 
						|
#include <strings.h>
 | 
						|
#include <stdtypes.h>
 | 
						|
#include <tabutil.h>
 | 
						|
#include <utility.h> 
 | 
						|
#include <prefix.h>    
 | 
						|
#include <nditte.h>
 | 
						|
 | 
						|
#include "..\ba\batbind.h"
 | 
						|
#include "cglib04.h"
 | 
						|
 | 
						|
class Tabinv_application : public Tab_application
 | 
						|
{
 | 
						|
private:
 | 
						|
  TMask*         _msk;     
 | 
						|
  TString        _tabname;
 | 
						|
  TTransfer_file _tras_file;
 | 
						|
  
 | 
						|
  TString _trasf,_control_rec;                   
 | 
						|
  long    _ditta_tab, _ditta_tras, _ditta_orig;  
 | 
						|
  bool    _disable,_ditte_uguali,_salta_hnd,_messaggio;
 | 
						|
  
 | 
						|
public:
 | 
						|
  virtual bool user_create();
 | 
						|
  virtual bool user_destroy();
 | 
						|
  virtual void init_query_mode(TMask&);
 | 
						|
  virtual void init_modify_mode(TMask&);
 | 
						|
  virtual void init_insert_mode(TMask&);
 | 
						|
  virtual int  write(const TMask& m);
 | 
						|
  virtual int  rewrite(const TMask& m);
 | 
						|
 | 
						|
  void leggi_trasfer();
 | 
						|
  char cerca_stato(long codditta);
 | 
						|
  
 | 
						|
  static bool controlli_hnd (TMask_field& f, KEY k);
 | 
						|
  
 | 
						|
  static bool nascosto_handler(TMask& m, KEY k);    
 | 
						|
  static bool stato_invio     (TMask_field& f, KEY k);
 | 
						|
  
 | 
						|
  static bool ditta_handler (TMask_field& f, KEY k); 
 | 
						|
  static bool almeno_un_flag(TMask_field& f, KEY k);
 | 
						|
  static bool clifo_comune  (TMask_field& f, KEY k);
 | 
						|
  static bool pcon_comune   (TMask_field& f, KEY k);    
 | 
						|
  static bool prima_nota    (TMask_field& f, KEY k);    
 | 
						|
  static bool iva           (TMask_field& f, KEY k);    
 | 
						|
  static bool saldaconto    (TMask_field& f, KEY k);        
 | 
						|
  static bool data_invio    (TMask_field& f, KEY k);
 | 
						|
  static bool sigla_file    (TMask_field& f, KEY k);    
 | 
						|
  static bool chiave_file   (TMask_field& f, KEY k);
 | 
						|
 | 
						|
  static bool nome_id       (TMask_field& f, KEY k);      
 | 
						|
  
 | 
						|
  void   setta_chiave       (TMask& m);
 | 
						|
 | 
						|
  Tabinv_application() {}
 | 
						|
  virtual ~Tabinv_application() {}
 | 
						|
};
 | 
						|
 | 
						|
HIDDEN inline Tabinv_application& app() {return (Tabinv_application&) main_app();}
 | 
						|
 | 
						|
char Tabinv_application::cerca_stato(long ditta)
 | 
						|
{
 | 
						|
  TTable ind ("%IND");
 | 
						|
  TString dep;
 | 
						|
  char    stato = '\0';
 | 
						|
  
 | 
						|
  dep = format("%05ld", ditta);
 | 
						|
  
 | 
						|
  ind.zero();
 | 
						|
  ind.put("CODTAB", dep);
 | 
						|
  if (ind.read() == NOERR)
 | 
						|
    stato = ind.get_char("S6");
 | 
						|
  
 | 
						|
  return stato;  
 | 
						|
}
 | 
						|
 | 
						|
bool Tabinv_application::nascosto_handler(TMask& m, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_SHIFT+K_F12)
 | 
						|
  { 
 | 
						|
    if (app()._tabname == "%IND")
 | 
						|
    {             
 | 
						|
      app()._disable = FALSE;
 | 
						|
      
 | 
						|
      m.enable(F_NUMULINV);
 | 
						|
      m.enable(F_DATAULIN);
 | 
						|
      m.enable(F_STATO);
 | 
						|
 | 
						|
      if ( (app()._ditta_tab == app()._ditta_tras) && m.mode() != MODE_INS)   
 | 
						|
      {
 | 
						|
        m.enable(F_USELAB);
 | 
						|
        m.enable(F_CHIAVE);
 | 
						|
      }
 | 
						|
    }
 | 
						|
    else
 | 
						|
      if (app()._tabname == "%INS")
 | 
						|
      {
 | 
						|
        m.enable(F_DITTAINV);
 | 
						|
        app()._salta_hnd = TRUE;
 | 
						|
      }
 | 
						|
  }
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool Tabinv_application::stato_invio(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if ( (k == K_ENTER || k == K_TAB) && f.mask().mode() != MODE_QUERY )
 | 
						|
  {                                
 | 
						|
    if ( k == K_ENTER)
 | 
						|
    {                  
 | 
						|
      TString stato = f.get();
 | 
						|
      int num = f.mask().get_int(F_NUMULINV);
 | 
						|
      TString sigla = f.mask().get(F_USELAB);
 | 
						|
      
 | 
						|
      if (num == 0 && stato != "")
 | 
						|
        return error_box("Numero ultimo invio NON INDICATO: impossibile indicare lo stato ultimo invio");  
 | 
						|
    
 | 
						|
      if ( (stato == "F" && sigla == "") || (stato == "D" && sigla != "") )
 | 
						|
        return error_box("La sigla ultimo file elaborato deve essere indicata se lo stato ultimo invio e' uguale a F");    
 | 
						|
    }
 | 
						|
    
 | 
						|
    if (k == K_TAB && app()._messaggio)
 | 
						|
    { 
 | 
						|
      long codditta = f.mask().get_long(F_DITTAINV);
 | 
						|
      
 | 
						|
      char stato = app().cerca_stato(codditta);
 | 
						|
      
 | 
						|
      if (stato != '\0' && app()._disable)
 | 
						|
      {
 | 
						|
        app()._messaggio = FALSE; 
 | 
						|
        return message_box("Rilevato STATO DI RIPARTENZA: prima concludere il trasferimento");    
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool Tabinv_application::ditta_handler(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_TAB && f.mask().mode() == MODE_QUERY)
 | 
						|
  { 
 | 
						|
    long codditta = f.mask().get_long(F_DITTAINV);
 | 
						|
    
 | 
						|
    if (codditta != 0)
 | 
						|
    {
 | 
						|
      if (!prefix().exist(codditta))
 | 
						|
      {
 | 
						|
        f.error_box("La ditta selezionata non e' abilitata per la contabilita' ");
 | 
						|
        return FALSE;
 | 
						|
      }
 | 
						|
    }  
 | 
						|
  }   
 | 
						|
  if (k == K_TAB && f.focusdirty())
 | 
						|
  {
 | 
						|
    TLocalisamfile ditte (LF_NDITTE);
 | 
						|
  
 | 
						|
    long ditta = f.mask().get_long(F_DITTAINV);
 | 
						|
  
 | 
						|
    ditte.setkey(1);
 | 
						|
    ditte.zero();
 | 
						|
    ditte.put(NDT_CODDITTA, ditta);
 | 
						|
    if (ditte.read() == NOERR)
 | 
						|
    {
 | 
						|
      TString ragsoc = ditte.get(NDT_RAGSOC);
 | 
						|
      f.mask().set(F_RAGSOC, ragsoc);
 | 
						|
      prefix().set_codditta(ditta);
 | 
						|
    }  
 | 
						|
    else
 | 
						|
      f.mask().set(F_RAGSOC, "");
 | 
						|
 | 
						|
    app()._ditta_tab = f.mask().get_long(F_DITTAINV);
 | 
						|
    
 | 
						|
    if (app()._ditta_tab == app()._ditta_tras) 
 | 
						|
    { 
 | 
						|
      TTable ind ("%IND");
 | 
						|
      TString dep;
 | 
						|
  
 | 
						|
      dep = format("%05ld", app()._ditta_tab);
 | 
						|
    
 | 
						|
      ind.zero();
 | 
						|
      ind.put("CODTAB", dep);
 | 
						|
      if (ind.read() == NOERR)
 | 
						|
      {                
 | 
						|
        TString uselab = app()._tras_file.ult_file();
 | 
						|
        TString chiave = app()._tras_file.key();
 | 
						|
                                                       
 | 
						|
        f.mask().set(F_USELAB, uselab);
 | 
						|
        f.mask().set(F_CHIAVE, chiave);
 | 
						|
      }
 | 
						|
      else
 | 
						|
      {
 | 
						|
        f.mask().set(F_USELAB, "");
 | 
						|
        f.mask().set(F_CHIAVE, "");
 | 
						|
      }
 | 
						|
      app()._ditte_uguali = TRUE;
 | 
						|
    }                      
 | 
						|
    else 
 | 
						|
    {
 | 
						|
      app()._ditte_uguali = FALSE;
 | 
						|
      f.mask().set(F_USELAB, "");
 | 
						|
      f.mask().set(F_CHIAVE, "");
 | 
						|
    }  
 | 
						|
  }   
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool Tabinv_application::almeno_un_flag(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_ENTER && f.mask().mode() != MODE_QUERY) 
 | 
						|
  {          
 | 
						|
    bool cau   = f.mask().get_bool(F_CAUSALI);
 | 
						|
    bool clifo = f.mask().get_bool(F_CLIFO);
 | 
						|
    bool pcon  = f.mask().get_bool(F_PCON);
 | 
						|
    bool pn    = f.mask().get_bool(F_MOV);
 | 
						|
    bool iva   = f.mask().get_bool(F_IVA);
 | 
						|
    bool fat   = f.mask().get_bool(F_FATT);
 | 
						|
    
 | 
						|
    if (!cau && !clifo && !pcon && !pn && !iva && !fat)
 | 
						|
      return error_box("E' necessario indicare almeno una sigla file da trasferire");            
 | 
						|
    
 | 
						|
    long ditta = f.mask().get_long(F_DITTAINV);
 | 
						|
    
 | 
						|
    app().set_firm(ditta);            
 | 
						|
    
 | 
						|
    TConfig conf (CONFIG_DITTA);
 | 
						|
 | 
						|
    TString pcon_cau = conf.get("PcTcCm","cg");
 | 
						|
    
 | 
						|
    bool causali = f.mask().get_bool(F_CAUSALI);    
 | 
						|
    
 | 
						|
    if (causali && pcon_cau != "")
 | 
						|
      return error_box("Tabella causali in comune: impossibile trasferirla");
 | 
						|
  }
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool Tabinv_application::clifo_comune(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_ENTER && f.mask().mode() != MODE_QUERY)
 | 
						|
  {
 | 
						|
    long ditta = f.mask().get_long(F_DITTAINV);
 | 
						|
    
 | 
						|
    app().set_firm(ditta);            
 | 
						|
    
 | 
						|
    TConfig conf (CONFIG_DITTA);
 | 
						|
 | 
						|
    TString ana_com  = conf.get("AnCfCm","cg");
 | 
						|
    
 | 
						|
    bool clifo = f.mask().get_bool(F_CLIFO);
 | 
						|
    
 | 
						|
    if (clifo && ana_com != "")
 | 
						|
      return error_box("Anagrafica clienti / fornitori in comune: impossibile trasferirla");
 | 
						|
  }
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool Tabinv_application::pcon_comune(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_ENTER && f.mask().mode() != MODE_QUERY)
 | 
						|
  {
 | 
						|
    long ditta = f.mask().get_long(F_DITTAINV);
 | 
						|
    
 | 
						|
    app().set_firm(ditta);            
 | 
						|
    
 | 
						|
    TConfig conf (CONFIG_DITTA);
 | 
						|
    
 | 
						|
    TString pcon_cau = conf.get("PcTcCm","cg");
 | 
						|
    
 | 
						|
    bool pcon = f.mask().get_bool(F_PCON);
 | 
						|
    
 | 
						|
    if (pcon && pcon_cau != "")
 | 
						|
      return error_box("Anagrafica Piano dei conti in comune: impossibile trasferirla");
 | 
						|
  }
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool Tabinv_application::prima_nota(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_SPACE && f.mask().mode() != MODE_QUERY)
 | 
						|
  {
 | 
						|
    bool pn = f.mask().get_bool(F_MOV);
 | 
						|
 | 
						|
    if (!pn && f.mask().get_bool(F_IVA) )    
 | 
						|
    {
 | 
						|
      f.mask().set(F_MOV, "X");
 | 
						|
      return f.error_box("Se si vuole inviare l' iva e' obbligatorio inviare anche la primanota");            
 | 
						|
    }
 | 
						|
    if (!pn && f.mask().get_bool(F_FATT) )  
 | 
						|
    {
 | 
						|
      f.mask().set(F_MOV, "X");
 | 
						|
      return f.error_box("Se si vuole inviare il saldaconto e' obbligatorio inviare anche la primanota");            
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool Tabinv_application::iva(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_SPACE && f.mask().mode() != MODE_QUERY)
 | 
						|
  {
 | 
						|
    bool iva = f.mask().get_bool(F_IVA);
 | 
						|
    bool sc  = f.mask().get_bool(F_FATT);
 | 
						|
 | 
						|
    if (iva)
 | 
						|
      f.mask().set(F_MOV, "X");
 | 
						|
  }
 | 
						|
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool Tabinv_application::saldaconto(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_SPACE && f.mask().mode() != MODE_QUERY)
 | 
						|
  {
 | 
						|
    bool iva = f.mask().get_bool(F_IVA);
 | 
						|
    bool sc  = f.mask().get_bool(F_FATT);
 | 
						|
 | 
						|
    if (sc)
 | 
						|
      f.mask().set(F_MOV, "X");
 | 
						|
  }
 | 
						|
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool Tabinv_application::data_invio    (TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_ENTER && f.mask().mode() != MODE_QUERY)
 | 
						|
  {
 | 
						|
    int   num = f.mask().get_int(F_NUMULINV);
 | 
						|
    TDate data (f.get());
 | 
						|
    
 | 
						|
    if (num != 0 && !data.ok())
 | 
						|
      return error_box("Se indicato il numero deve essere indicata anche la data di invio");
 | 
						|
    
 | 
						|
    if (num == 0 && data.ok())
 | 
						|
      return error_box("Se non indicato il numero non puo' essere indicata la data di invio");
 | 
						|
  }
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool Tabinv_application::sigla_file(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_ENTER && f.mask().mode() != MODE_QUERY)
 | 
						|
  {
 | 
						|
    int     num   = f.mask().get_int(F_NUMULINV);
 | 
						|
    TString sigla = f.get();
 | 
						|
    
 | 
						|
    if (num == 0 && sigla != "")
 | 
						|
      return error_box("Numero ultimo invio NON INDICATO: impossibile indicare la sigla ultimo file elaborato");
 | 
						|
 | 
						|
//    TString stato = f.mask().get(F_STATO);
 | 
						|
    
 | 
						|
//    if ( (stato == "F" && sigla == "") || (stato == "D" && sigla != "") )
 | 
						|
//      return error_box("La sigla ultimo file elaborato deve essere indicata se lo stato ultimo invio e' uguale a F");  
 | 
						|
    
 | 
						|
  }
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool Tabinv_application::chiave_file(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_ENTER && f.mask().mode() != MODE_QUERY)
 | 
						|
  {
 | 
						|
    TString sigla  = f.mask().get(F_USELAB);
 | 
						|
    TString chiave = f.get();
 | 
						|
    
 | 
						|
    if (sigla == "" && chiave != "")
 | 
						|
      return error_box("Sigla ultimo file elaborato NON INDICATA: impossibile indicare la chiave ultimo record elaborato");
 | 
						|
    
 | 
						|
    TString stato = f.mask().get(F_STATO);
 | 
						|
    
 | 
						|
    if (stato != "F" && chiave == "" && sigla != "")
 | 
						|
      return error_box("La chiave ultimo record elaborato deve essere indicata obbligatoriamente");  
 | 
						|
  }
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
void Tabinv_application::setta_chiave(TMask& m)
 | 
						|
{
 | 
						|
  m.set(F_CODICE, "INS");
 | 
						|
  m.field(F_CODICE).check();
 | 
						|
}
 | 
						|
 | 
						|
bool Tabinv_application::nome_id(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_TAB)
 | 
						|
  {
 | 
						|
    TLocalisamfile ditte (LF_NDITTE);
 | 
						|
  
 | 
						|
    long ditta = f.mask().get_long(F_DITTAINV);
 | 
						|
    if (ditta != 0)
 | 
						|
    {
 | 
						|
      if (!prefix().exist(ditta))
 | 
						|
      {
 | 
						|
        f.error_box("La ditta selezionata non e' abilitata per la contabilita' ");
 | 
						|
        return FALSE;
 | 
						|
      }
 | 
						|
    }    
 | 
						|
  
 | 
						|
    ditte.setkey(1);
 | 
						|
    ditte.zero();
 | 
						|
    ditte.put(NDT_CODDITTA, ditta);
 | 
						|
    if (ditte.read() == NOERR)
 | 
						|
    {
 | 
						|
      TString ragsoc = ditte.get(NDT_RAGSOC);
 | 
						|
      f.mask().set(F_RAGSOC, ragsoc);
 | 
						|
    }
 | 
						|
    else
 | 
						|
      f.mask().set(F_RAGSOC, "");
 | 
						|
    
 | 
						|
    TTable ind ("%IND");
 | 
						|
    TString dep;
 | 
						|
  
 | 
						|
    if (ditta != 0)
 | 
						|
    {
 | 
						|
      dep = format("%05ld", ditta);
 | 
						|
    
 | 
						|
      ind.zero();
 | 
						|
      ind.put("CODTAB", dep);
 | 
						|
      if (ind.read() == NOERR)
 | 
						|
      {
 | 
						|
        TString stato = ind.get     ("S6");
 | 
						|
        int     num   = ind.get_int ("I0");
 | 
						|
        TDate   data  = ind.get_date("D0");
 | 
						|
      
 | 
						|
        f.mask().set(F_STATO,    stato);
 | 
						|
        f.mask().set(F_NUMULINV, num);
 | 
						|
        f.mask().set(F_DATAULIN, data.string());
 | 
						|
      }                     
 | 
						|
      else
 | 
						|
      {
 | 
						|
        f.mask().set(F_STATO,    "");
 | 
						|
        f.mask().set(F_NUMULINV, "");
 | 
						|
        f.mask().set(F_DATAULIN, "");    
 | 
						|
        f.error_box("Codice ditta NON PRESENTE in tabella trasferimenti");
 | 
						|
      }
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      f.mask().set(F_STATO,    "");
 | 
						|
      f.mask().set(F_NUMULINV, "");
 | 
						|
      f.mask().set(F_DATAULIN, "");    
 | 
						|
    }
 | 
						|
    
 | 
						|
    app()._ditta_tab = f.mask().get_long(F_DITTAINV);
 | 
						|
  
 | 
						|
    if (app()._ditta_tab == app()._ditta_tras)
 | 
						|
    {
 | 
						|
      TString uselab = app()._tras_file.ult_file();
 | 
						|
      TString chiave = app()._tras_file.key();
 | 
						|
    
 | 
						|
      f.mask().set(F_USELAB, uselab);
 | 
						|
      f.mask().set(F_CHIAVE, chiave);
 | 
						|
      app()._ditte_uguali = TRUE;
 | 
						|
    }                      
 | 
						|
    else 
 | 
						|
    {
 | 
						|
      app()._ditte_uguali = FALSE;
 | 
						|
      f.mask().set(F_USELAB, "");
 | 
						|
      f.mask().set(F_CHIAVE, "");
 | 
						|
    } 
 | 
						|
  }
 | 
						|
  if (k == K_TAB && !app()._salta_hnd && f.mask().mode() != MODE_QUERY)
 | 
						|
  { 
 | 
						|
    long codditta = f.mask().get_long(F_DITTAINV);
 | 
						|
    
 | 
						|
    if (codditta != 0)  
 | 
						|
      return message_box("Rilevato STATO DI RIPARTENZA: prima concludere il trasferimento");
 | 
						|
  }
 | 
						|
        
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
//void Tabinv_application::esegui_controlli(TMask& m)
 | 
						|
bool Tabinv_application::controlli_hnd(TMask_field& f, KEY k)
 | 
						|
{                                                            
 | 
						|
  if (k == K_TAB && !f.mask().field(F_NUMULINV).enabled()) 
 | 
						|
  {
 | 
						|
    int   num  = f.mask().get_int(F_NUMULINV);
 | 
						|
    TDate data (f.mask().get(F_DATAULIN));
 | 
						|
    
 | 
						|
    if (num != 0 && !data.ok())
 | 
						|
      return error_box("Se indicato il numero deve essere indicata anche la data di invio");
 | 
						|
    
 | 
						|
    if (num == 0 && data.ok())
 | 
						|
      return error_box("Se non indicato il numero non puo' essere indicata la data di invio");
 | 
						|
 | 
						|
    TString sigla = f.mask().get(F_USELAB);
 | 
						|
    
 | 
						|
    if (num == 0 && sigla != "")
 | 
						|
      return error_box("Numero ultimo invio NON INDICATO: impossibile indicare la sigla ultimo file elaborato");
 | 
						|
    
 | 
						|
    TString stato = f.mask().get(F_STATO);
 | 
						|
    
 | 
						|
    if (stato != "F" && sigla != "")
 | 
						|
      return error_box("La sigla ultimo file elaborato puo' essere indicata solo se lo stato ultimo invio e' F");  
 | 
						|
 | 
						|
    TString chiave = f.mask().get(F_CHIAVE);
 | 
						|
    
 | 
						|
    if (sigla == "" && chiave != "")
 | 
						|
      return error_box("Sigla ultimo file elaborato NON INDICATA: impossibile indicare la chiave ultimo record elaborato");
 | 
						|
    
 | 
						|
    if (stato != "F" && chiave == "" && sigla != "")
 | 
						|
      return error_box("La chiave ultimo record elaborato deve essere indicata obbligatoriamente");  
 | 
						|
  }
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
void Tabinv_application::leggi_trasfer()
 | 
						|
{                           
 | 
						|
  _trasf = ""; 
 | 
						|
  _trasf = firm2dir(0);
 | 
						|
  _trasf << HEADER;
 | 
						|
  
 | 
						|
  _tras_file.open(_trasf);
 | 
						|
  
 | 
						|
  if (_tras_file.exist())
 | 
						|
  {  
 | 
						|
    if (_tras_file.read_control_rec())  
 | 
						|
    {
 | 
						|
      _control_rec = _tras_file.record();
 | 
						|
      _ditta_tras  = _tras_file.ditta();
 | 
						|
    }
 | 
						|
    else
 | 
						|
      _ditta_tras = 0;
 | 
						|
  } 
 | 
						|
  else
 | 
						|
    _ditta_tras = 0;
 | 
						|
}
 | 
						|
 | 
						|
void Tabinv_application::init_query_mode(TMask& m)
 | 
						|
{
 | 
						|
  leggi_trasfer();
 | 
						|
  _disable = TRUE;
 | 
						|
  _messaggio = TRUE;    
 | 
						|
 | 
						|
  if (_tabname == "%INS")
 | 
						|
  {              
 | 
						|
    setta_chiave(m);        
 | 
						|
    m.send_key(K_AUTO_ENTER,0);  
 | 
						|
    
 | 
						|
    m.disable(F_DITTAINV);
 | 
						|
  }  
 | 
						|
  
 | 
						|
  m.disable(F_NUMULINV);
 | 
						|
  m.disable(F_DATAULIN);
 | 
						|
  m.disable(F_STATO);
 | 
						|
  m.disable(F_USELAB);
 | 
						|
  m.disable(F_CHIAVE);
 | 
						|
}
 | 
						|
 | 
						|
void Tabinv_application::init_modify_mode(TMask& m)
 | 
						|
{  
 | 
						|
  if (_tabname == "%IND")  
 | 
						|
  {
 | 
						|
    leggi_trasfer();
 | 
						|
 | 
						|
    long ditta = m.get_long(F_DITTAINV);
 | 
						|
    
 | 
						|
    if (ditta == _ditta_tras) 
 | 
						|
    { 
 | 
						|
      TString uselab = _tras_file.ult_file();
 | 
						|
      TString chiave = _tras_file.key();
 | 
						|
                                                       
 | 
						|
      m.set(F_USELAB, uselab);
 | 
						|
      m.set(F_CHIAVE, chiave);
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      m.set(F_USELAB, "");
 | 
						|
      m.set(F_CHIAVE, "");
 | 
						|
    }   
 | 
						|
 | 
						|
    char stato = app().cerca_stato(ditta);    
 | 
						|
    
 | 
						|
    if (stato == '\0')
 | 
						|
    {
 | 
						|
      m.enable(F_CAUSALI);
 | 
						|
      m.enable(F_CLIFO);
 | 
						|
      m.enable(F_PCON);
 | 
						|
      m.enable(F_MOV);
 | 
						|
      m.enable(F_IVA);
 | 
						|
      m.enable(F_FATT);
 | 
						|
      m.enable(F_BOLLATO);    
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      m.disable(F_CAUSALI);
 | 
						|
      m.disable(F_CLIFO);
 | 
						|
      m.disable(F_PCON);
 | 
						|
      m.disable(F_MOV);
 | 
						|
      m.disable(F_IVA);
 | 
						|
      m.disable(F_FATT);
 | 
						|
      m.disable(F_BOLLATO);
 | 
						|
    }
 | 
						|
  }
 | 
						|
  if (_tabname == "%INS")
 | 
						|
  {                 
 | 
						|
    setta_chiave(m);        
 | 
						|
  
 | 
						|
    m.disable(F_DITTAINV);
 | 
						|
    
 | 
						|
    long ditta = m.get_long(F_DITTAINV);
 | 
						|
    if (ditta == 0)
 | 
						|
      m.enable(F_NOMEID);
 | 
						|
    else
 | 
						|
      m.disable(F_NOMEID);
 | 
						|
  }
 | 
						|
  
 | 
						|
  m.disable(F_NUMULINV);
 | 
						|
  m.disable(F_DATAULIN);
 | 
						|
  m.disable(F_STATO);
 | 
						|
  m.disable(F_USELAB);
 | 
						|
  m.disable(F_CHIAVE);  
 | 
						|
}
 | 
						|
 | 
						|
void Tabinv_application::init_insert_mode(TMask& m)
 | 
						|
{  
 | 
						|
  if (_tabname == "%IND")
 | 
						|
    leggi_trasfer();
 | 
						|
  
 | 
						|
  if (_tabname == "%INS")
 | 
						|
    m.disable(F_DITTAINV);
 | 
						|
  
 | 
						|
  m.disable(F_NUMULINV);
 | 
						|
  m.disable(F_DATAULIN);
 | 
						|
  m.disable(F_STATO);
 | 
						|
  m.disable(F_USELAB);
 | 
						|
  m.disable(F_CHIAVE);  
 | 
						|
}
 | 
						|
 | 
						|
int Tabinv_application::write(const TMask& m)
 | 
						|
{                                            
 | 
						|
  if (_tabname == "%IND")
 | 
						|
  {  
 | 
						|
    if (m.mode() != MODE_INS)
 | 
						|
    {
 | 
						|
      TString str;
 | 
						|
    
 | 
						|
      TString std = m.get(F_STATO);
 | 
						|
      
 | 
						|
      TConfig conf (CONFIG_DITTA);
 | 
						|
      conf.set("FlStInv", std);
 | 
						|
    
 | 
						|
      int     num    = m.get_int(F_NUMULINV);
 | 
						|
      TString data   = m.get    (F_DATAULIN);
 | 
						|
      TString sigla  = m.get    (F_USELAB);        
 | 
						|
      TString chiave = m.get    (F_CHIAVE);
 | 
						|
    
 | 
						|
      if (sigla == "")
 | 
						|
        sigla = " ";
 | 
						|
    
 | 
						|
      if (_tras_file.read_control_rec())  
 | 
						|
      {                               
 | 
						|
        if (_ditte_uguali)
 | 
						|
        {
 | 
						|
          _control_rec = _tras_file.record();
 | 
						|
          str = format("%03d", num);
 | 
						|
          _control_rec.overwrite(str,75);
 | 
						|
          str = riconverti(data,TRUE);
 | 
						|
          _control_rec.overwrite(str,78);
 | 
						|
          _control_rec.overwrite(sigla,240);
 | 
						|
          str = format("%-60s", (const char*) chiave);
 | 
						|
          _control_rec.overwrite(str,241);
 | 
						|
        
 | 
						|
          _tras_file.write_control_rec(_control_rec,1024);
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }      
 | 
						|
  
 | 
						|
  return Tab_application::write(m);
 | 
						|
}
 | 
						|
 | 
						|
int Tabinv_application::rewrite(const TMask& m)
 | 
						|
{    
 | 
						|
  if (_tabname == "%IND")
 | 
						|
  {  
 | 
						|
    if (m.mode() != MODE_INS)
 | 
						|
    {
 | 
						|
      TString str;
 | 
						|
    
 | 
						|
      TString std = m.get(F_STATO);
 | 
						|
    
 | 
						|
      TConfig conf (CONFIG_DITTA);
 | 
						|
      conf.set("FlStInv", std);
 | 
						|
    
 | 
						|
      int     num    = m.get_int(F_NUMULINV);
 | 
						|
      TString data   = m.get    (F_DATAULIN);
 | 
						|
      TString sigla  = m.get    (F_USELAB);        
 | 
						|
      TString chiave = m.get    (F_CHIAVE);
 | 
						|
    
 | 
						|
      if (sigla == "")
 | 
						|
        sigla = " ";
 | 
						|
    
 | 
						|
      if (_tras_file.read_control_rec())  
 | 
						|
      {  
 | 
						|
        if (_ditte_uguali)
 | 
						|
        {
 | 
						|
          _control_rec = _tras_file.record();
 | 
						|
          str = format("%03d", num);
 | 
						|
          _control_rec.overwrite(str,75);
 | 
						|
          str = riconverti(data,TRUE);
 | 
						|
          _control_rec.overwrite(str,78);
 | 
						|
          _control_rec.overwrite(sigla,240);
 | 
						|
          str = format("%-60s", (const char*) chiave);
 | 
						|
          _control_rec.overwrite(str,241);
 | 
						|
        
 | 
						|
          _tras_file.write_control_rec(_control_rec,1024);
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }    
 | 
						|
  
 | 
						|
  return Tab_application::rewrite(m);  
 | 
						|
}
 | 
						|
 | 
						|
bool Tabinv_application::user_create()
 | 
						|
{ 
 | 
						|
  Tab_application::user_create();
 | 
						|
 | 
						|
  _msk     = get_mask();
 | 
						|
  _tabname = get_tabname(); 
 | 
						|
  _ditta_orig = -1;
 | 
						|
  if (_tabname == "%IND") 
 | 
						|
  {                    
 | 
						|
    _ditta_orig = prefix().get_codditta();
 | 
						|
    _msk->set_handler(nascosto_handler);
 | 
						|
    _msk->set_handler(F_STATO,    stato_invio);                 
 | 
						|
    _msk->set_handler(F_DITTAINV, ditta_handler);
 | 
						|
    _msk->set_handler(F_CAUSALI,  almeno_un_flag);
 | 
						|
    _msk->set_handler(F_CLIFO,    clifo_comune);
 | 
						|
    _msk->set_handler(F_PCON,     pcon_comune);
 | 
						|
    _msk->set_handler(F_MOV,      prima_nota);
 | 
						|
    _msk->set_handler(F_IVA,      iva);
 | 
						|
    _msk->set_handler(F_FATT,     saldaconto);
 | 
						|
    _msk->set_handler(F_DATAULIN, data_invio);
 | 
						|
    _msk->set_handler(F_USELAB,   sigla_file);
 | 
						|
    _msk->set_handler(F_CHIAVE,   chiave_file);
 | 
						|
    _msk->set_handler(F_GHOST_FIELD, controlli_hnd);
 | 
						|
    //_msk->disable(F_FATT);     
 | 
						|
  }                               
 | 
						|
  
 | 
						|
  if (_tabname == "%INS")
 | 
						|
  {             
 | 
						|
    _msk->set_handler(nascosto_handler);  
 | 
						|
    _msk->set_handler(F_DITTAINV, nome_id);  
 | 
						|
    _salta_hnd = FALSE;
 | 
						|
  }
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool Tabinv_application::user_destroy()
 | 
						|
{ 
 | 
						|
  Tab_application::user_destroy();
 | 
						|
  if (_ditta_orig > -1) prefix().set_codditta(_ditta_orig);
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
cg6500(int argc, char* argv[])
 | 
						|
{
 | 
						|
  Tabinv_application* a = new Tabinv_application;
 | 
						|
  
 | 
						|
  a->run(argc,argv, "Tabelle");
 | 
						|
  delete a;
 | 
						|
  return 0;
 | 
						|
}
 | 
						|
 | 
						|
 |