Files correlati : Ricompilazione Demo : [ ] Commento : Riportatat la versione 2.1 patch 378 git-svn-id: svn://10.65.10.50/trunk@13349 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			203 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			203 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#include <xvt.h>
 | 
						|
 | 
						|
#ifndef __CHECKS_H
 | 
						|
#include <checks.h>
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef __CONFAPP_H
 | 
						|
#include <confapp.h>
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef __TABUTIL_H
 | 
						|
#include <tabutil.h>
 | 
						|
#endif
 | 
						|
 | 
						|
#include "veconf.h"
 | 
						|
 | 
						|
#define SINTASSI "Usage: VE0 -2 -[1|2|3|4|5|6|7]"
 | 
						|
 | 
						|
class TConf_vendite : public TConfig_application
 | 
						|
{
 | 
						|
  char _current;
 | 
						|
 | 
						|
  static bool check_fields(TMask_field& f, KEY k);
 | 
						|
  static bool check_fields_iva(TMask_field& f, KEY k);
 | 
						|
 | 
						|
	virtual const char * extra_modules() const {return "dt";}
 | 
						|
 | 
						|
public:
 | 
						|
 | 
						|
  virtual bool preprocess_config (TMask& mask, TConfig& config);
 | 
						|
  virtual bool postprocess_config (TMask& mask, TConfig& config);
 | 
						|
  virtual bool user_create( );
 | 
						|
 | 
						|
  TConf_vendite() : TConfig_application( CONFIG_DITTA ){ }
 | 
						|
  virtual ~TConf_vendite( ){ }
 | 
						|
};
 | 
						|
 | 
						|
bool TConf_vendite::check_fields(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_TAB && f.focusdirty())
 | 
						|
  {
 | 
						|
    TString fld(f.get());
 | 
						|
    TMask& m = f.mask();
 | 
						|
    TToken_string t;
 | 
						|
    if (fld == "-") return TRUE;
 | 
						|
    for (short i=F_RICERCACR1;i<=F_RICERCAAN4;i++)
 | 
						|
    {
 | 
						|
      if (f.dlg() == i) continue;
 | 
						|
      t.add(m.get(i));
 | 
						|
    }
 | 
						|
    if (t.find(fld)>=0)
 | 
						|
      return f.error_box("Immettere un gruppo di ricerca non ancora indicato nella sequenza");
 | 
						|
  }
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool TConf_vendite::check_fields_iva(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (k == K_ENTER)
 | 
						|
  {
 | 
						|
    TMask& m = f.mask();
 | 
						|
 | 
						|
    real tot = ZERO;
 | 
						|
 | 
						|
    for (short i = F_EX_PERCIVA1; i <= F_EX_PERCIVA5; i+=2)
 | 
						|
      tot += m.get_real(i);
 | 
						|
 | 
						|
    if (tot != ZERO && tot != 100.0)
 | 
						|
      return f.error_box("La somma delle percentuali di esclusione deve dare 100 oppure 0.");
 | 
						|
  }
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool TConf_vendite::preprocess_config (TMask& mask, TConfig& config)
 | 
						|
{
 | 
						|
  disable_menu_item(M_FILE_NEW);
 | 
						|
  if (_current == '5') // solo per configurazione "e"
 | 
						|
  {
 | 
						|
    TToken_string ric(config.get("RICERCACR"));
 | 
						|
    TString ana_items("AR|GM|SM|RF");
 | 
						|
    int nor_order = 0, ana_order = 0;
 | 
						|
    TString it;
 | 
						|
    mask.set_handler(F_RICERCACR1,check_fields);
 | 
						|
    mask.set_handler(F_RICERCACR2,check_fields);
 | 
						|
    mask.set_handler(F_RICERCACR3,check_fields);
 | 
						|
    mask.set_handler(F_RICERCACR4,check_fields);
 | 
						|
    mask.set_handler(F_RICERCACR5,check_fields);
 | 
						|
    mask.set_handler(F_RICERCAAN1,check_fields);
 | 
						|
    mask.set_handler(F_RICERCAAN2,check_fields);
 | 
						|
    mask.set_handler(F_RICERCAAN3,check_fields);
 | 
						|
    mask.set_handler(F_RICERCAAN4,check_fields);
 | 
						|
    for (it = ric.get();it.not_empty();it = ric.get())
 | 
						|
    {
 | 
						|
      if (ana_items.find(it) >= 0)
 | 
						|
      {
 | 
						|
        mask.set(F_RICERCAAN1+ana_order,it);
 | 
						|
        if (ana_order==0) // Se e' la prima volta...
 | 
						|
        {
 | 
						|
          mask.set(F_RICERCACR1+nor_order,"AN");
 | 
						|
          nor_order++;
 | 
						|
        }
 | 
						|
        ana_order++;
 | 
						|
      }
 | 
						|
      else
 | 
						|
      {
 | 
						|
        mask.set(F_RICERCACR1+nor_order,it);
 | 
						|
        nor_order++;
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
  else
 | 
						|
    if (_current == '6') // solo per configurazione "f"
 | 
						|
    {
 | 
						|
      mask.set_handler(F_EX_PERCIVA1,check_fields_iva); // Basta su uno che controlla tutti all'uscita della maschera
 | 
						|
    }
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool TConf_vendite::postprocess_config (TMask& mask, TConfig& config)
 | 
						|
{
 | 
						|
  enable_menu_item(M_FILE_NEW);
 | 
						|
  if (_current == '5') // solo per configurazione "e"
 | 
						|
  {
 | 
						|
    TToken_string ric;
 | 
						|
    TString r;
 | 
						|
    const KEY k = mask.last_key();
 | 
						|
    bool tosave = k == K_ENTER || k == K_SAVE;
 | 
						|
 | 
						|
    if (!tosave && mask.dirty())
 | 
						|
      tosave = yesno_box("Modifiche non registrate. Salvare?");
 | 
						|
 | 
						|
    if (!tosave)
 | 
						|
      return FALSE;
 | 
						|
 | 
						|
    for (short i=F_RICERCACR1;i<=F_RICERCACR5;i++)
 | 
						|
    {
 | 
						|
      r = mask.get(i);
 | 
						|
      if (r == "-") continue;
 | 
						|
      if (r == "AN")
 | 
						|
        for (short j=F_RICERCAAN1;j<=F_RICERCAAN4;j++)
 | 
						|
        {
 | 
						|
          r = mask.get(j);
 | 
						|
          if (r == "-") continue;
 | 
						|
          ric.add(r);
 | 
						|
        }
 | 
						|
      else
 | 
						|
        ric.add(r);
 | 
						|
    }
 | 
						|
    config.set("RICERCACR",ric);
 | 
						|
  }
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
bool TConf_vendite::user_create( )
 | 
						|
{
 | 
						|
  TString16 arg( argv(2) );
 | 
						|
  if( arg[ 0 ] != '-' )
 | 
						|
    fatal_box( SINTASSI );
 | 
						|
  _current = arg[1];
 | 
						|
  TConfig conf(_current == '6' ? CONFIG_STUDIO : CONFIG_DITTA );
 | 
						|
  if (_current == '6') set_config(CONFIG_STUDIO);
 | 
						|
  switch( _current )
 | 
						|
  {
 | 
						|
  case '1':
 | 
						|
    conf.set( "EdMask", "ve0200a", "ve" );
 | 
						|
    break;
 | 
						|
  case '2':
 | 
						|
    conf.set( "EdMask", "ve0200b", "ve" );
 | 
						|
    break;
 | 
						|
  case '3':
 | 
						|
    conf.set( "EdMask", "ve0200c", "ve" );
 | 
						|
    break;
 | 
						|
  case '4':
 | 
						|
    conf.set( "EdMask", "ve0200d", "ve" );
 | 
						|
    break;
 | 
						|
  case '5':
 | 
						|
    conf.set( "EdMask", "ve0200e", "ve" );
 | 
						|
    break;
 | 
						|
  case '6':
 | 
						|
    conf.set( "EdMask", "ve0200f", "ve" );
 | 
						|
    break;
 | 
						|
  case '7':
 | 
						|
    conf.set( "EdMask", "ve0200g", "ve" );
 | 
						|
    break;
 | 
						|
  default:
 | 
						|
    fatal_box( SINTASSI );
 | 
						|
    return FALSE;
 | 
						|
    break;
 | 
						|
  }
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
int ve0200(int argc, char* argv[])
 | 
						|
{
 | 
						|
  TConf_vendite appc;
 | 
						|
 | 
						|
  if( argc < 3 )
 | 
						|
    fatal_box( SINTASSI );
 | 
						|
  appc.run(argc, argv, "Parametri gestione vendite");
 | 
						|
  return 0;
 | 
						|
}
 |