#include #ifndef __CHECKS_H #include #endif #ifndef __CONFAPP_H #include #endif #ifndef __TABUTIL_H #include #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); 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; }