campo-sirio/ve/ve0200.cpp
luca 12db4b468f Patch level :10.0
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :aggiunto segnaposto e prima stesura maschera della configurazione dei fidi (non fa assolutamente ancora una ceppa)


git-svn-id: svn://10.65.10.50/trunk@17509 c028cbd2-c16b-5b4b-a496-9718f37d4682
2008-10-29 16:37:56 +00:00

232 lines
4.9 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|8]"
class TConf_vendite : public TConfig_application
{
int _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);
switch (_current)
{
case 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++;
}
}
}
break;
case 6: // solo per configurazione "f"
{
mask.set_handler(F_EX_PERCIVA1,check_fields_iva); // Basta su uno che controlla tutti all'uscita della maschera
}
break;
default:
break;
}
return true;
}
bool TConf_vendite::postprocess_config (TMask& mask, TConfig& config)
{
enable_menu_item(M_FILE_NEW);
switch (_current)
{
case 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);
}
break;
case 8:
{
}
break;
default:
break;
}
return true;
}
bool TConf_vendite::user_create( )
{
TString16 arg( argv(2) );
if( arg[ 0 ] != '-' )
fatal_box( SINTASSI );
_current = arg[1] - '0';
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;
case 8:
conf.set( "EdMask", "ve0200h", "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;
}