1995-12-04 17:41:06 +00:00
|
|
|
#ifndef __VE0100_H
|
|
|
|
#include "ve0100.h"
|
1996-05-03 17:11:39 +00:00
|
|
|
#endif
|
|
|
|
|
1996-08-13 09:42:35 +00:00
|
|
|
#ifndef __VE0100O_H
|
1997-01-17 18:15:58 +00:00
|
|
|
#include "ve0100o.h"
|
1996-08-13 09:42:35 +00:00
|
|
|
#endif
|
|
|
|
|
1996-09-26 15:37:19 +00:00
|
|
|
#ifndef __VEINI_H
|
|
|
|
#include "veini.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef __UTILITY_H
|
|
|
|
#include "utility.h"
|
|
|
|
#endif
|
|
|
|
|
1996-05-03 17:11:39 +00:00
|
|
|
void TMotore_application::init_query_mode( TMask& m )
|
|
|
|
{
|
1996-11-18 16:12:12 +00:00
|
|
|
_msk->set( F_CODNUM, _codnum);
|
1996-06-18 15:55:39 +00:00
|
|
|
_msk->field(F_CODNUM).set_focusdirty(TRUE);
|
|
|
|
_msk->field(F_CODNUM).on_key(K_TAB);
|
1996-07-29 16:55:30 +00:00
|
|
|
_msk->field(F_CODNUM).set_dirty(FALSE);
|
1996-09-26 15:37:19 +00:00
|
|
|
|
1996-11-18 16:12:12 +00:00
|
|
|
_msk->set( F_TIPODOC, _tipodoc, TRUE);
|
1996-05-03 17:11:39 +00:00
|
|
|
}
|
|
|
|
|
1995-12-04 17:41:06 +00:00
|
|
|
void TMotore_application::init_insert_mode( TMask& m )
|
|
|
|
{
|
|
|
|
TString tipocf( "A" );
|
1997-02-03 15:28:53 +00:00
|
|
|
tipocf[ 0 ] = app().tipocf();
|
1996-08-12 08:32:28 +00:00
|
|
|
|
|
|
|
const TString16 codnum(m.get(F_CODNUM));
|
|
|
|
const int anno = m.get_int(F_ANNO);
|
|
|
|
const char provv = m.get(F_PROVV)[0];
|
|
|
|
const long numdoc = m.get_long(F_NDOC);
|
|
|
|
|
|
|
|
_doc->read(provv, anno, codnum, numdoc);
|
1996-09-26 15:37:19 +00:00
|
|
|
_doc->set_tipo(m.get(F_TIPODOC));
|
1996-11-18 16:12:12 +00:00
|
|
|
|
|
|
|
_codnum = codnum;
|
|
|
|
_tipodoc = m.get(F_TIPODOC);
|
|
|
|
|
1996-08-12 08:32:28 +00:00
|
|
|
|
1996-07-25 13:05:29 +00:00
|
|
|
m.field(F_CODNUM).set_focusdirty(TRUE);
|
1996-06-18 15:55:39 +00:00
|
|
|
m.field(F_CODNUM).on_key(K_TAB);
|
1996-07-25 13:05:29 +00:00
|
|
|
m.field(F_TIPODOC).set_focusdirty(TRUE);
|
1996-06-18 15:55:39 +00:00
|
|
|
m.field(F_TIPODOC).on_key(K_TAB);
|
1996-08-12 08:32:28 +00:00
|
|
|
m.set(F_STATO, _doc->head().get("STATO"));
|
1996-07-25 13:05:29 +00:00
|
|
|
const TString16 data_doc(m.get( F_DATADOC));
|
|
|
|
|
1996-10-28 13:02:24 +00:00
|
|
|
const int pos = m.id2pos( F_DATACAMBIO1);
|
|
|
|
|
|
|
|
if (pos >= 0 && m.fld(pos).active())
|
1997-02-03 15:28:53 +00:00
|
|
|
m.fld(pos).set(data_doc);
|
|
|
|
m.disable(DLG_PRINT);
|
1995-12-04 17:41:06 +00:00
|
|
|
clifo( ).occas_mask( ).reset( );
|
1996-08-12 08:32:28 +00:00
|
|
|
const int ndefaults = pro( ).get_int( "NDEFAULTS", "DEFAULT" ); // prof
|
|
|
|
|
1995-12-04 17:41:06 +00:00
|
|
|
for( int i = 1; i <= ndefaults; i++ )
|
|
|
|
{
|
|
|
|
TString16 chiave;
|
|
|
|
chiave.format( "%d", i );
|
|
|
|
TToken_string valore( pro( ).get( chiave, "DEFAULT" ) );
|
|
|
|
int campo( valore.get_int( 0 ) );
|
|
|
|
TString default_val( valore.get( 1 ) );
|
1997-02-03 15:28:53 +00:00
|
|
|
m.set( campo, default_val, TRUE );
|
1995-12-04 17:41:06 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1997-02-03 15:28:53 +00:00
|
|
|
void TMotore_application::init_modify_mode( TMask& m )
|
|
|
|
{
|
|
|
|
m.enable(DLG_PRINT);
|
|
|
|
}
|
|
|
|
|
1996-08-12 08:32:28 +00:00
|
|
|
void TMotore_application::update_profile()
|
|
|
|
{
|
|
|
|
TFilename fn(_doc->tipo().profile_name());
|
|
|
|
|
|
|
|
fn.ext("ini");
|
|
|
|
if (_pro && _pro->name() != fn)
|
|
|
|
{
|
|
|
|
delete _pro;
|
|
|
|
_pro = NULL;
|
|
|
|
}
|
|
|
|
if (_pro == NULL)
|
|
|
|
_pro = new TConfig( fn );
|
|
|
|
}
|
|
|
|
|
1995-12-04 17:41:06 +00:00
|
|
|
int TMotore_application::user_function( int index )
|
|
|
|
{
|
|
|
|
switch( index )
|
|
|
|
{
|
|
|
|
case 1:
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
yesnofatal_box( "Chiamata ad una procedura utente non definita: %d", index );
|
|
|
|
return NOERR;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return NOERR;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Funzione che dato il profilo di riga ottiene la maschera
|
|
|
|
// Serve per ottenere una maschera diversa per ogni riga
|
1996-09-26 15:37:19 +00:00
|
|
|
TMask * TMotore_application::ss_getmask( int numriga, TMask& fullmask)
|
1995-12-04 17:41:06 +00:00
|
|
|
{
|
1996-09-26 15:37:19 +00:00
|
|
|
TRiga_documento & riga = (*(app()._doc))[numriga + 1];
|
|
|
|
|
|
|
|
return ((TTipo_riga_documento &)riga.tipo()).mask();
|
1995-12-04 17:41:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void TMotore_application::user_set_handler( int fieldid, int index, TMask* m )
|
|
|
|
{
|
|
|
|
if ( !m )
|
|
|
|
m = &edit_mask( );
|
|
|
|
switch( index )
|
|
|
|
{
|
|
|
|
case 1:
|
|
|
|
m->set_handler( fieldid, ora_hndl );
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
m->set_handler( fieldid, dummy_hndl );
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
CHECK( FALSE, "Tentativo di installare un handler non definito" );
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TMotore_application::ss_handler( TSheet_field& ss, int r, KEY key )
|
1996-05-03 17:11:39 +00:00
|
|
|
|
1995-12-04 17:41:06 +00:00
|
|
|
{
|
1996-11-19 17:32:03 +00:00
|
|
|
if ( key == K_ENTER ) // modifica
|
1995-12-04 17:41:06 +00:00
|
|
|
{
|
1996-09-26 15:37:19 +00:00
|
|
|
TRiga_documento & riga = (*(app()._doc))[r + 1];
|
1996-05-03 17:11:39 +00:00
|
|
|
|
1996-09-26 15:37:19 +00:00
|
|
|
riga.autosave(ss);
|
1995-12-04 17:41:06 +00:00
|
|
|
}
|
1996-09-26 15:37:19 +00:00
|
|
|
else
|
1997-02-03 15:28:53 +00:00
|
|
|
if ( key == K_DEL ) // Cancellazione
|
|
|
|
{
|
1996-09-26 15:37:19 +00:00
|
|
|
app()._doc->destroy_row(r + 1, TRUE);
|
1997-02-03 15:28:53 +00:00
|
|
|
if (r < app()._doc->rows())
|
|
|
|
{
|
|
|
|
TRiga_documento & riga = (*(app()._doc))[r + 1];
|
|
|
|
if (riga.tipo().tipo() == RIGA_OMAGGI && riga.generata())
|
|
|
|
{
|
|
|
|
ss.destroy(r + 1);
|
|
|
|
app()._doc->destroy_row(r + 1, TRUE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
1996-09-26 15:37:19 +00:00
|
|
|
else
|
1997-01-24 14:57:16 +00:00
|
|
|
if (key == K_INS) // Inserimento
|
1996-09-26 15:37:19 +00:00
|
|
|
{
|
1997-02-03 15:28:53 +00:00
|
|
|
if (r < app()._doc->rows())
|
|
|
|
{
|
|
|
|
TRiga_documento & riga = (*(app()._doc))[r + 1];
|
|
|
|
if (riga.tipo().tipo() == RIGA_OMAGGI && riga.generata())
|
|
|
|
return FALSE;
|
|
|
|
}
|
1996-09-26 15:37:19 +00:00
|
|
|
TMask & emask = app().edit_mask();
|
1997-01-24 14:57:16 +00:00
|
|
|
app()._doc->insert_row(r + 1, emask.get( F_LBTIPORIGA ));
|
1996-09-26 15:37:19 +00:00
|
|
|
}
|
1997-02-03 15:28:53 +00:00
|
|
|
else
|
1997-01-24 14:57:16 +00:00
|
|
|
if (key == K_CTRL + K_INS)
|
|
|
|
{
|
|
|
|
TRiga_documento & riga = (*(app()._doc))[r + 1];
|
|
|
|
TString16 s(app()._clifor->get(LF_CFVEN, "CODMAG"));
|
1997-02-03 15:28:53 +00:00
|
|
|
|
1997-01-24 14:57:16 +00:00
|
|
|
s << app()._clifor->get(LF_CFVEN, "CODDEP");
|
|
|
|
riga.put("CODMAG", s);
|
1997-02-03 15:28:53 +00:00
|
|
|
riga.autoload(ss);
|
1997-01-24 14:57:16 +00:00
|
|
|
ss.select(r);
|
|
|
|
}
|
1995-12-04 17:41:06 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TMotore_application::num_handler( TMask_field& f, KEY key )
|
|
|
|
{
|
1996-07-29 16:55:30 +00:00
|
|
|
// Ottengo la maschera
|
|
|
|
TMask& m = f.mask( );
|
1995-12-04 17:41:06 +00:00
|
|
|
|
1996-07-29 16:55:30 +00:00
|
|
|
if (key == K_TAB && f.focusdirty())
|
1995-12-04 17:41:06 +00:00
|
|
|
{
|
1996-06-18 15:55:39 +00:00
|
|
|
TTable & tabnum = ((TTable &) ((TEdit_field &)f).browse()->cursor()->file());
|
|
|
|
if ( tabnum.good())
|
1995-12-04 17:41:06 +00:00
|
|
|
{
|
|
|
|
// Copio la descrizione della numerazione
|
|
|
|
m.set( F_DESNUM, tabnum.get( "S0" ) );
|
|
|
|
// Copio i tipi di documento validi per la numerazione
|
|
|
|
const TString tipidocs( tabnum.get( "S2" ) );
|
|
|
|
m.set( F_TIPIDOCS, tipidocs );
|
|
|
|
TString16 curtipo( m.get( F_TIPODOC ) );
|
1996-07-29 16:55:30 +00:00
|
|
|
|
1995-12-04 17:41:06 +00:00
|
|
|
// Propone il primo tipo di documento come default
|
1996-07-29 16:55:30 +00:00
|
|
|
m.set( F_TIPODOC, tipidocs.left( 4 ) );
|
|
|
|
m.send_key( K_TAB, F_TIPODOC );
|
1996-06-18 15:55:39 +00:00
|
|
|
// Se per questa numerazione h abilitata le numerazione provvisoria
|
1995-12-04 17:41:06 +00:00
|
|
|
if ( tabnum.get_bool ( "B0" ) )
|
|
|
|
{
|
|
|
|
// Setta di default la numerazione provvisoria
|
|
|
|
m.set( F_PROVV, "P" );
|
|
|
|
// Abilita il campo per la selezione della numerazione
|
|
|
|
m.enable( F_PROVV );
|
|
|
|
}
|
|
|
|
else // Altrimenti ...
|
|
|
|
{
|
|
|
|
// Setta la numerazione a definitiva
|
|
|
|
m.set( F_PROVV, "D" );
|
|
|
|
// Disabilita il campo per la selezione della numerazione
|
|
|
|
m.disable( F_PROVV );
|
1996-07-29 16:55:30 +00:00
|
|
|
}
|
1995-12-04 17:41:06 +00:00
|
|
|
}
|
1996-07-29 16:55:30 +00:00
|
|
|
else
|
|
|
|
{
|
|
|
|
m.set( F_DESNUM, "" );
|
|
|
|
m.set( F_TIPIDOCS, "" );
|
|
|
|
m.set( F_TIPODOC, "" );
|
1995-12-04 17:41:06 +00:00
|
|
|
}
|
1996-07-29 16:55:30 +00:00
|
|
|
}
|
1995-12-04 17:41:06 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1996-03-05 16:48:04 +00:00
|
|
|
bool TMotore_application::elabora_handler( TMask_field& f, KEY key )
|
|
|
|
{
|
|
|
|
// Ottengo la maschera
|
|
|
|
// TMask& m = f.mask( );
|
|
|
|
|
|
|
|
// Registra il record corrente
|
|
|
|
// m.send_key( K_INS, 99 );
|
|
|
|
|
|
|
|
// TString commandline("ve4 ");
|
|
|
|
// commandline << m.get( F_CODNUM );
|
|
|
|
// commandline << " ";
|
|
|
|
// commandline << m.get( F_ANNO );
|
|
|
|
// commandline << " ";
|
|
|
|
// commandline << m.get( F_PROVV );
|
|
|
|
// commandline << " ";
|
|
|
|
// commandline << m.get( F_NDOC );
|
|
|
|
// TExternal_app interattivo( commandline );
|
|
|
|
// interattivo.run( );
|
|
|
|
// ricarica il documento dopo che l'interattivo lo ha modificato
|
|
|
|
// app( ).read( m );
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1997-02-03 15:28:53 +00:00
|
|
|
bool TMotore_application::print_handler( TMask_field& f, KEY key )
|
|
|
|
|
|
|
|
{
|
|
|
|
if (key == K_SPACE)
|
|
|
|
{
|
|
|
|
TMask& m = f.mask();
|
|
|
|
|
|
|
|
if (app().save(TRUE)) // Registra il record corrente
|
|
|
|
{
|
|
|
|
TString commandline("ve1 -0 ");
|
|
|
|
|
|
|
|
commandline << m.get( F_CODNUM ) << " " << m.get( F_ANNO ) << " ";
|
|
|
|
commandline << m.get( F_PROVV )<< " " << m.get( F_NDOC );
|
|
|
|
|
|
|
|
TExternal_app interattivo( commandline );
|
|
|
|
|
|
|
|
interattivo.run( );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1996-03-05 16:48:04 +00:00
|
|
|
|
1995-12-04 17:41:06 +00:00
|
|
|
|
|
|
|
bool TMotore_application::occas_handler( TMask_field& f, KEY key )
|
|
|
|
{
|
1996-07-25 13:05:29 +00:00
|
|
|
TMask & m = f.mask();
|
|
|
|
if ( key == K_SPACE && m.is_running( ) )
|
1995-12-04 17:41:06 +00:00
|
|
|
{
|
|
|
|
TMask& om = app( ).clifo( ). occas_mask( );
|
1996-07-25 13:05:29 +00:00
|
|
|
if (om.run( ) != K_ESC)
|
|
|
|
app().clifo().update_mask(m);
|
1995-12-04 17:41:06 +00:00
|
|
|
f.set_focus( );
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool TMotore_application::tip_handler( TMask_field& f, KEY key )
|
|
|
|
{
|
|
|
|
TMask& m = f.mask( );
|
1996-05-03 17:11:39 +00:00
|
|
|
if ( key == K_TAB && m.is_running( ) && m.get(F_TIPODOC).not_empty())
|
1995-12-04 17:41:06 +00:00
|
|
|
{
|
|
|
|
TString tipi_consentiti( m.get( F_TIPIDOCS ) );
|
|
|
|
TString16 tipo( f.get( ) );
|
|
|
|
tipo.trim( );
|
|
|
|
bool tipo_valido = FALSE;
|
|
|
|
for ( int i = 0; i < 10; i ++ )
|
|
|
|
{
|
|
|
|
TString16 curtipo( tipi_consentiti.mid( i * 4, 4 ) );
|
|
|
|
curtipo.trim( );
|
|
|
|
if ( curtipo == tipo )
|
|
|
|
{
|
|
|
|
tipo_valido = TRUE;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ( ! tipo_valido )
|
|
|
|
{
|
|
|
|
message_box( "Tipo non valido per la numerazione selezionata!" );
|
|
|
|
f.set( "" );
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ( key == K_ENTER && m.is_running( ) )
|
|
|
|
{ TString tipo( f.get( ) );
|
1996-03-05 16:48:04 +00:00
|
|
|
if ( tipo.blank( ) )
|
1995-12-04 17:41:06 +00:00
|
|
|
{
|
|
|
|
message_box( "Occorre un tipo documento per inserire un documento!" );
|
|
|
|
m.first_focus( F_TIPODOC );
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool TMotore_application::clifo_handler( TMask_field& f, KEY key )
|
1996-07-25 13:05:29 +00:00
|
|
|
{
|
|
|
|
if (key == K_ENTER)
|
|
|
|
return TRUE;
|
|
|
|
if (f.to_check(key, TRUE))
|
|
|
|
{
|
|
|
|
const char cf = app().tipocf();
|
|
|
|
TMask& m = f.mask();
|
|
|
|
TLocalisamfile& clifo = ((TEdit_field&)f).browse()->cursor()->file();
|
|
|
|
const long codcf = atol(f.get());
|
1995-12-04 17:41:06 +00:00
|
|
|
|
1996-07-25 13:05:29 +00:00
|
|
|
if ( clifo.get_bool("SOSPESO") )
|
|
|
|
return f.error_box( "Il codice '%ld' e' sospeso e non puo' essere utilizzato", codcf );
|
1997-02-06 17:44:07 +00:00
|
|
|
const TString80 occas_cod(app().clifo().occas_mask().get(O_CODICE));
|
|
|
|
if (app().clifo().load( cf, codcf, occas_cod))
|
1995-12-04 17:41:06 +00:00
|
|
|
{
|
1996-07-25 13:05:29 +00:00
|
|
|
app().clifo().update_mask(m, !m.is_running());
|
|
|
|
if( f.mask().id2pos(F_OCCASEDIT) > 0 && f.to_check(key))
|
|
|
|
{
|
|
|
|
if ( app().clifo().occasionale() && app().clifo().occas_mask().get(O_CODICE).empty() )
|
1995-12-04 17:41:06 +00:00
|
|
|
m.send_key( K_SPACE, F_OCCASEDIT ); // Lancia maschera occasionali
|
|
|
|
}
|
1996-07-25 13:05:29 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
return FALSE;
|
1995-12-04 17:41:06 +00:00
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TMotore_application::changing_mask( int mode )
|
|
|
|
{
|
|
|
|
static int lastmode = NO_MODE;
|
|
|
|
|
|
|
|
const bool change = ( mode != lastmode );
|
|
|
|
lastmode = mode;
|
|
|
|
return change;
|
|
|
|
}
|
|
|
|
|
|
|
|
void TMotore_application::configura_sheet( TSheet_field& sheet, TConfig& config )
|
1996-07-29 16:55:30 +00:00
|
|
|
{
|
1996-05-03 17:11:39 +00:00
|
|
|
TBit_array to_delete(MAX_COLUMNS);
|
|
|
|
to_delete.set();
|
1995-12-04 17:41:06 +00:00
|
|
|
int ncols = config.get_int( "NCOLS", "SHEET" );
|
1996-05-03 17:11:39 +00:00
|
|
|
for ( int i = 1; i <= ncols; i ++ )
|
1995-12-04 17:41:06 +00:00
|
|
|
{
|
|
|
|
TString col;
|
|
|
|
col.format( "%d", i );
|
|
|
|
TToken_string sheet_col( config.get( col, "SHEET" ) );
|
1996-05-03 17:11:39 +00:00
|
|
|
const int field_id = sheet_col.get_int(0);
|
1996-07-29 16:55:30 +00:00
|
|
|
const int coltomove = sheet.cid2index(field_id);
|
1996-05-03 17:11:39 +00:00
|
|
|
to_delete.reset(coltomove);
|
|
|
|
|
|
|
|
const TString descr(sheet_col.get( 1 ));
|
|
|
|
|
|
|
|
if (descr.not_empty() )
|
|
|
|
sheet.set_column_header( field_id, descr);
|
|
|
|
|
|
|
|
const int size( sheet_col.get_int(2));
|
|
|
|
|
|
|
|
if (size != 0)
|
|
|
|
sheet.set_column_width( field_id, size);
|
1996-06-18 15:55:39 +00:00
|
|
|
}
|
|
|
|
to_delete.reset(0);
|
|
|
|
to_delete.reset(1);
|
1996-07-29 16:55:30 +00:00
|
|
|
|
|
|
|
const int sconto_col = sheet.cid2index(FR_SCONTO);
|
|
|
|
if (to_delete[sconto_col] == FALSE)
|
|
|
|
{
|
1996-08-12 08:32:28 +00:00
|
|
|
const bool del = (_config_ditta->get("GESSCORIGA") == "N");
|
1996-07-29 16:55:30 +00:00
|
|
|
|
|
|
|
to_delete.set(sconto_col, del);
|
|
|
|
}
|
1996-06-18 15:55:39 +00:00
|
|
|
|
1996-05-03 17:11:39 +00:00
|
|
|
for ( i = MAX_COLUMNS - 1; i >= 0; i-- )
|
1996-07-29 16:55:30 +00:00
|
|
|
if( to_delete[i] )
|
|
|
|
{
|
|
|
|
sheet.enable_column( i + FIRST_FIELD, FALSE);
|
|
|
|
sheet.delete_column( i + FIRST_FIELD);
|
|
|
|
}
|
1995-12-04 17:41:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
TMask* TMotore_application::get_mask( int mode )
|
1996-08-12 08:32:28 +00:00
|
|
|
{
|
1995-12-04 17:41:06 +00:00
|
|
|
switch ( mode )
|
|
|
|
{
|
|
|
|
case MODE_INS:
|
|
|
|
case MODE_MOD:
|
1996-08-12 08:32:28 +00:00
|
|
|
{
|
|
|
|
const TString16 tipodoc(_msk->get(F_TIPODOC));
|
|
|
|
|
1996-09-26 15:37:19 +00:00
|
|
|
TDocumento_mask * msk1 = (TDocumento_mask *) _doc_masks.objptr(tipodoc);
|
1996-08-12 08:32:28 +00:00
|
|
|
|
1996-09-26 15:37:19 +00:00
|
|
|
_doc->set_tipo(tipodoc);
|
1996-08-12 08:32:28 +00:00
|
|
|
update_profile();
|
|
|
|
|
|
|
|
TString tipocf( app( ).pro( ).get( "TIPOCF", "MAIN" ) ); //prof
|
|
|
|
app( ).tipocf( tipocf[ 0 ] );
|
|
|
|
if (msk1 == NULL)
|
|
|
|
{
|
1996-09-26 15:37:19 +00:00
|
|
|
msk1 = new TDocumento_mask(_doc->tipo().mask_name(), _doc); // prof
|
1996-08-12 08:32:28 +00:00
|
|
|
_doc_masks.add(tipodoc, msk1);
|
|
|
|
_sheet = &( TSheet_field& )msk1->field( F_SHEET );
|
|
|
|
sheet( ).set_notify( ss_handler );
|
|
|
|
sheet().set_append(FALSE);
|
|
|
|
TList_field& listbox = ( TList_field& ) msk1->field( F_LBTIPORIGA );
|
|
|
|
const int numtr = app( ).pro( ).get_int( "NTIPIRIGA", "RIGHE" ); //prof
|
1996-09-26 15:37:19 +00:00
|
|
|
TToken_string keys, descrs;
|
|
|
|
TRiga_documento r(_doc);
|
|
|
|
|
1996-08-12 08:32:28 +00:00
|
|
|
for ( int i = 1; i <= numtr; i ++ )
|
1996-09-26 15:37:19 +00:00
|
|
|
{
|
|
|
|
TString16 var;
|
|
|
|
|
|
|
|
var.format("%d", i);
|
|
|
|
TString tiporiga(app().pro().get(var, "RIGHE")); // pro
|
|
|
|
r.set_tipo(tiporiga);
|
|
|
|
keys.add(r.tipo().codice());
|
|
|
|
descrs.add(r.tipo().descrizione());
|
1996-08-12 08:32:28 +00:00
|
|
|
}
|
|
|
|
listbox.replace_items( keys, descrs );
|
|
|
|
configura_sheet( *_sheet, *_pro );
|
|
|
|
((TVariable_sheet_field&)sheet()).set_getmask( ss_getmask );
|
|
|
|
if (msk1->id2pos( F_OCCASEDIT ) > 0 )
|
|
|
|
msk1->set_handler( F_OCCASEDIT, occas_handler );
|
|
|
|
msk1->set_handler( F_CODCF, clifo_handler );
|
|
|
|
msk1->set_handler( F_CODPAG, condpag_hndl );
|
|
|
|
msk1->set_handler( F_DATAINSC, condpag_hndl );
|
1996-10-21 15:52:20 +00:00
|
|
|
msk1->set_handler( F_CODNOTE, note_hndl );
|
1997-02-03 15:28:53 +00:00
|
|
|
msk1->set_handler( F_DATADOC, data_hndl );
|
|
|
|
msk1->set_handler( 99, elabora_handler );
|
|
|
|
msk1->set_handler( DLG_PRINT, print_handler );
|
1996-08-12 08:32:28 +00:00
|
|
|
int numhandler = pro( ).get_int( "NHANDLER", "HANDLERS" ); // prof
|
|
|
|
for ( i = 1; i <= numhandler; i ++ )
|
|
|
|
{
|
|
|
|
TString chiave;
|
|
|
|
chiave.format( "%d", i );
|
|
|
|
TToken_string riga = pro( ).get( chiave, "HANDLERS" );
|
|
|
|
user_set_handler( riga.get_int( 0 ), riga.get_int( 1 ) );
|
1996-08-13 09:42:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// configurazione campi
|
|
|
|
|
|
|
|
const bool gesval = _config_ditta->get_bool("GESVAL");
|
|
|
|
const bool gescambi = _config_ditta->get_bool("GESVALAC");
|
|
|
|
|
|
|
|
if (gesval)
|
|
|
|
{
|
|
|
|
msk1->show(F_CODVAL, !gescambi);
|
|
|
|
msk1->show(F_DATACAMBIO, !gescambi);
|
|
|
|
msk1->show(F_NOMEVAL, !gescambi);
|
|
|
|
msk1->show(F_CODVAL1, gescambi);
|
|
|
|
msk1->show(F_DATACAMBIO1, gescambi);
|
|
|
|
msk1->show(F_NOMEVAL1, gescambi);
|
|
|
|
msk1->show(F_CAMBIO);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
msk1->disable(F_CODVAL);
|
|
|
|
msk1->disable(F_DATACAMBIO);
|
|
|
|
msk1->disable(F_NOMEVAL);
|
|
|
|
msk1->hide(F_CODVAL1);
|
|
|
|
msk1->hide(F_DATACAMBIO1);
|
|
|
|
msk1->hide(F_NOMEVAL1);
|
|
|
|
msk1->disable(F_CAMBIO);
|
|
|
|
}
|
|
|
|
|
1996-10-02 10:37:33 +00:00
|
|
|
const bool geslin = _config_ditta->get_bool("GESLIN");
|
1996-08-13 09:42:35 +00:00
|
|
|
|
|
|
|
msk1->enable(F_CODLIN, geslin);
|
|
|
|
msk1->enable(F_DESLIN, geslin);
|
|
|
|
|
1996-08-14 16:51:18 +00:00
|
|
|
const bool geslis = _config_ditta->get_bool("GES", "ve", 1);
|
1996-08-13 09:42:35 +00:00
|
|
|
const bool gesliscatven = _config_ditta->get_bool("GESLISCV");
|
|
|
|
|
|
|
|
if (geslis)
|
|
|
|
{
|
|
|
|
msk1->show(F_CODLIST, !gesliscatven);
|
|
|
|
msk1->show(F_CODLIST1, gesliscatven);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
msk1->disable(F_CODLIST);
|
|
|
|
msk1->hide(F_CODLIST1);
|
|
|
|
}
|
|
|
|
|
1996-08-14 16:51:18 +00:00
|
|
|
const bool gescontr = _config_ditta->get_bool("GES", "ve", 2);
|
1996-08-13 09:42:35 +00:00
|
|
|
const bool gescontrcli = _config_ditta->get_bool("GESCONCC");
|
|
|
|
|
|
|
|
if (gescontr)
|
1996-10-21 15:52:20 +00:00
|
|
|
{
|
|
|
|
|
|
|
|
msk1->show(F_CODCONT1, gescontrcli);
|
1996-08-13 09:42:35 +00:00
|
|
|
msk1->show(F_CODCONT, !gescontrcli);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
msk1->disable(F_CODCONT);
|
|
|
|
msk1->hide(F_CODCONT1);
|
1996-08-12 08:32:28 +00:00
|
|
|
}
|
1996-08-13 09:42:35 +00:00
|
|
|
|
1996-08-14 16:51:18 +00:00
|
|
|
const bool gesoff = _config_ditta->get_bool("GES", "ve", 3);
|
1996-08-13 09:42:35 +00:00
|
|
|
|
|
|
|
msk1->enable(F_CODCAMP, gesoff);
|
|
|
|
|
1996-10-04 16:45:43 +00:00
|
|
|
const bool gessco = _config_ditta->get_char("GESSCO") != 'N';
|
1996-08-13 09:42:35 +00:00
|
|
|
|
|
|
|
msk1->enable(F_SCONTOPERC, gessco);
|
|
|
|
|
|
|
|
const bool gesage = _config_ditta->get_bool("GESAGE");
|
|
|
|
|
|
|
|
msk1->enable(F_CODAG, gesage);
|
|
|
|
msk1->enable(F_DESAG, gesage);
|
|
|
|
msk1->enable(F_CODAGVIS, gesage);
|
|
|
|
msk1->enable(F_DESAGVIS, gesage);
|
|
|
|
}
|
1996-08-12 08:32:28 +00:00
|
|
|
else
|
|
|
|
_sheet = &( TSheet_field& )edit_mask( ).field( F_SHEET );
|
|
|
|
return msk1;
|
|
|
|
}
|
1996-05-03 17:11:39 +00:00
|
|
|
break;
|
1995-12-04 17:41:06 +00:00
|
|
|
default:
|
|
|
|
return _msk;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void TMotore_application::set_descr( int i, const char * dfi )
|
|
|
|
{
|
|
|
|
TToken_string& r = ss( ).row( i );
|
|
|
|
r.add( dfi, 0 );
|
|
|
|
}
|
|
|
|
|
|
|
|
const char* TMotore_application::get_next_key( )
|
|
|
|
{
|
|
|
|
TToken_string key;
|
|
|
|
TMask& m = curr_mask( );
|
1996-05-03 17:11:39 +00:00
|
|
|
const TString value = m.get( F_CODNUM );
|
1996-08-12 08:32:28 +00:00
|
|
|
|
|
|
|
if (value.not_empty())
|
1995-12-04 17:41:06 +00:00
|
|
|
{
|
1996-08-14 16:51:18 +00:00
|
|
|
TTable tabnum( "%NUM" );
|
1996-08-12 08:32:28 +00:00
|
|
|
tabnum.zero( );
|
|
|
|
tabnum.put( "CODTAB", value );
|
|
|
|
if ( tabnum.read( ) == NOERR && tabnum.get_bool ( "B1" ))
|
|
|
|
// Se per questa numerazione h abilitata le numerazione automatica
|
1995-12-04 17:41:06 +00:00
|
|
|
{
|
1996-08-12 08:32:28 +00:00
|
|
|
TLocalisamfile doc(LF_DOC);
|
|
|
|
doc.zero();
|
|
|
|
doc.put("CODNUM", value);
|
|
|
|
doc.put("ANNO", m.get(F_ANNO));
|
|
|
|
doc.put("PROVV", m.get(F_PROVV));
|
|
|
|
|
|
|
|
TRectype cmp_rec(doc.curr()); // record campione
|
|
|
|
|
1995-12-04 17:41:06 +00:00
|
|
|
doc.put( "NDOC", 9999999L );
|
1996-08-13 09:42:35 +00:00
|
|
|
if (doc.read(_isgreat) == NOERR)
|
1996-08-12 08:32:28 +00:00
|
|
|
doc.prev();
|
|
|
|
|
|
|
|
const long num = ((doc.curr() == cmp_rec) ? doc.get_long( "NDOC" ) : 0) + 1;
|
|
|
|
|
|
|
|
key.format( "%d|%d", F_NDOC, num);
|
1995-12-04 17:41:06 +00:00
|
|
|
}
|
|
|
|
}
|
1996-08-12 08:32:28 +00:00
|
|
|
return key;
|
1995-12-04 17:41:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
int TMotore_application::read( TMask& m )
|
|
|
|
{
|
1996-09-26 15:37:19 +00:00
|
|
|
const int err = _doc->read(_doc->head());
|
1996-08-12 08:32:28 +00:00
|
|
|
|
1995-12-04 17:41:06 +00:00
|
|
|
if ( err == NOERR )
|
1996-08-12 08:32:28 +00:00
|
|
|
{
|
|
|
|
m.autoload(*_rel);
|
1996-11-18 16:12:12 +00:00
|
|
|
_codnum = m.get(F_CODNUM);
|
|
|
|
_tipodoc = m.get(F_TIPODOC);
|
|
|
|
const char tipocf = _doc->get("TIPOCF")[0];
|
|
|
|
const long codcf = _doc->get_long("CODCF");
|
|
|
|
const TString occas_cod(_doc->get("OCFPI"));
|
1996-08-12 08:32:28 +00:00
|
|
|
|
|
|
|
clifo().load( tipocf, codcf, occas_cod);
|
|
|
|
clifo().update_mask( ( TVariable_mask& ) m, TRUE );
|
|
|
|
|
1995-12-04 17:41:06 +00:00
|
|
|
TSheet_field& f = ( TSheet_field& ) m.field( F_SHEET );
|
1996-08-12 08:32:28 +00:00
|
|
|
|
1995-12-04 17:41:06 +00:00
|
|
|
f.destroy( );
|
1996-08-12 08:32:28 +00:00
|
|
|
const int rows = _doc->rows();
|
|
|
|
for (int i = 1; i <= rows; i++)
|
1997-02-03 15:28:53 +00:00
|
|
|
{
|
|
|
|
f.insert(-1, FALSE);
|
1996-09-26 15:37:19 +00:00
|
|
|
TToken_string & r = f.row(i -1);
|
|
|
|
TRiga_documento & rec = (*_doc)[i];
|
1996-05-03 17:11:39 +00:00
|
|
|
|
1997-02-03 15:28:53 +00:00
|
|
|
rec.autoload(f);
|
|
|
|
f.check_row(i - 1);
|
|
|
|
// f.post_insert(i - 1);
|
1995-12-04 17:41:06 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
return err;
|
|
|
|
}
|
|
|
|
|
1996-06-18 15:55:39 +00:00
|
|
|
int TMotore_application::write( const TMask& m ) // C 90
|
1995-12-04 17:41:06 +00:00
|
|
|
{
|
1996-06-18 15:55:39 +00:00
|
|
|
int err = esegui_procedura(OP_NUOVO);
|
|
|
|
|
|
|
|
if (err == NOERR)
|
|
|
|
{
|
|
|
|
m.field(F_STATO).set( _pro->get( "STATOFINALE", "INSERIMENTO" ) );
|
|
|
|
if ( m.id2pos( F_OCCASEDIT) > 0 )
|
|
|
|
err = app().clifo().write_occas();
|
1995-12-04 17:41:06 +00:00
|
|
|
if ( err == NOERR )
|
1996-06-18 15:55:39 +00:00
|
|
|
{
|
1996-08-12 08:32:28 +00:00
|
|
|
m.autosave(*_rel);
|
1997-02-06 17:44:07 +00:00
|
|
|
_doc->put("OCFPI", app().clifo().occas_mask().get(O_CODICE));
|
1996-08-12 08:32:28 +00:00
|
|
|
err = _doc->write( );
|
|
|
|
}
|
|
|
|
if (err == NOERR)
|
|
|
|
_rel->read(); // per posizionare correttamente la relazione
|
1995-12-04 17:41:06 +00:00
|
|
|
}
|
1996-08-12 08:32:28 +00:00
|
|
|
|
1995-12-04 17:41:06 +00:00
|
|
|
return err;
|
|
|
|
}
|
|
|
|
|
1996-06-18 15:55:39 +00:00
|
|
|
int TMotore_application::rewrite( const TMask& m ) // C 90
|
1995-12-04 17:41:06 +00:00
|
|
|
{
|
1996-06-18 15:55:39 +00:00
|
|
|
if (!valida_operazione(OP_MODIFICA))
|
|
|
|
return NOERR; // Errore gia' segnalato
|
|
|
|
int err = esegui_procedura(OP_MODIFICA);
|
|
|
|
|
|
|
|
if (err == NOERR)
|
|
|
|
{
|
|
|
|
if ( m.id2pos( F_OCCASEDIT) > 0 )
|
|
|
|
err = app( ).clifo( ).write_occas( );
|
1995-12-04 17:41:06 +00:00
|
|
|
if ( err == NOERR )
|
1996-06-18 15:55:39 +00:00
|
|
|
{
|
1996-08-12 08:32:28 +00:00
|
|
|
m.autosave(*_rel);
|
1997-02-06 17:44:07 +00:00
|
|
|
_doc->put("OCFPI", app().clifo().occas_mask().get(O_CODICE));
|
1996-08-12 08:32:28 +00:00
|
|
|
err = _doc->rewrite( );
|
1995-12-04 17:41:06 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
return err;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
1996-06-18 15:55:39 +00:00
|
|
|
bool TMotore_application::remove( void ) // C 80
|
1995-12-04 17:41:06 +00:00
|
|
|
{
|
|
|
|
if ( ! valida_operazione( OP_CANCELLA ) )
|
1997-02-06 17:44:07 +00:00
|
|
|
return TRUE;
|
1996-06-18 15:55:39 +00:00
|
|
|
int err = esegui_procedura(OP_CANCELLA);
|
1996-08-12 08:32:28 +00:00
|
|
|
return _doc->remove() == NOERR;
|
1995-12-04 17:41:06 +00:00
|
|
|
}
|
|
|
|
|
1996-08-12 08:32:28 +00:00
|
|
|
void TMotore_application::open_files(int logicnum, ...)
|
|
|
|
{
|
|
|
|
va_list marker;
|
|
|
|
va_start(marker, logicnum);
|
|
|
|
while (logicnum > 0)
|
|
|
|
{
|
|
|
|
CHECKD(_file.objptr(logicnum) == NULL, "File gia' aperto: ", logicnum);
|
|
|
|
_file.add(new TLocalisamfile(logicnum), logicnum);
|
|
|
|
logicnum = va_arg(marker, int);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void TMotore_application::on_firm_change()
|
|
|
|
{
|
|
|
|
if (_config_ditta != NULL)
|
|
|
|
delete _config_ditta;
|
|
|
|
_config_ditta = new TConfig(CONFIG_DITTA);
|
|
|
|
condv().set_config(_config_ditta);
|
|
|
|
_doc_masks.destroy();
|
|
|
|
TApplication::on_firm_change();
|
|
|
|
}
|
|
|
|
|
1995-12-04 17:41:06 +00:00
|
|
|
bool TMotore_application::user_create( )
|
|
|
|
{
|
1996-08-12 08:32:28 +00:00
|
|
|
_config_ditta = new TConfig(CONFIG_DITTA);
|
|
|
|
|
1996-05-03 17:11:39 +00:00
|
|
|
// Metto in relazione testata e righe
|
1996-06-18 15:55:39 +00:00
|
|
|
_rel = new TRelation( LF_DOC );
|
1996-10-04 16:45:43 +00:00
|
|
|
open_files(LF_RIGHEDOC, LF_CONDV, LF_RCONDV, LF_ANAMAG, LF_SCONTI, LF_UMART, LF_TAB, LF_TABCOM, 0);
|
1996-08-12 08:32:28 +00:00
|
|
|
_doc = new TDocumento;
|
1996-09-26 15:37:19 +00:00
|
|
|
_rel->lfile().set_curr(_doc);
|
|
|
|
_doc->set_relation(_rel);
|
1996-05-03 17:11:39 +00:00
|
|
|
|
1995-12-04 17:41:06 +00:00
|
|
|
_clifor = new TCliForVendite( );
|
1996-09-26 15:37:19 +00:00
|
|
|
_condv = new TCond_vendita(_clifor, _config_ditta);
|
|
|
|
_doc->set_condv(_condv);
|
1996-08-12 08:32:28 +00:00
|
|
|
|
|
|
|
_msk = new TMask( "ve0100a" );
|
1995-12-04 17:41:06 +00:00
|
|
|
query_mask( ).set_handler( F_CODNUM, num_handler );
|
|
|
|
query_mask( ).set_handler( F_TIPODOC, tip_handler );
|
|
|
|
TConfig utente( CONFIG_USER );
|
1996-11-18 16:12:12 +00:00
|
|
|
|
|
|
|
_codnum = utente.get("CODNUM");
|
|
|
|
_tipodoc = utente.get("TIPODOC");
|
|
|
|
// _msk->set(F_CODNUM, utente.get("CODNUM"));
|
|
|
|
// _msk->set(F_TIPODOC, utente.get("TIPODOC"));
|
1995-12-04 17:41:06 +00:00
|
|
|
// La maschera di inserimento/modifica per ora non la so!
|
|
|
|
// Viene letta dal profilo non appena trovato il record
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TMotore_application::user_destroy( )
|
|
|
|
{
|
|
|
|
// Registro l'ultimo tipo documento e l'ultima numerazione
|
|
|
|
TConfig utente( CONFIG_USER );
|
1996-11-18 16:12:12 +00:00
|
|
|
utente.set( "CODNUM", _codnum, "ve" );
|
|
|
|
utente.set( "TIPODOC", _tipodoc, "ve" );
|
1995-12-04 17:41:06 +00:00
|
|
|
|
1996-08-12 08:32:28 +00:00
|
|
|
if (_config_ditta != NULL)
|
|
|
|
delete _config_ditta;
|
1995-12-04 17:41:06 +00:00
|
|
|
// Distruggo la maschera di modifica
|
1996-05-03 17:11:39 +00:00
|
|
|
if ( _msk != NULL )
|
|
|
|
delete _msk;
|
1995-12-04 17:41:06 +00:00
|
|
|
|
|
|
|
// Distruggo la relazione
|
|
|
|
delete _rel;
|
1996-08-12 08:32:28 +00:00
|
|
|
delete _condv;
|
1995-12-04 17:41:06 +00:00
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
int TMotore_application::esegui_procedura( int operazione )
|
|
|
|
{
|
|
|
|
// Accesso unico alla chiamata di procedure tramite operazione
|
|
|
|
int index = ( int )pro( ).get_long( nome_sezione( operazione ), "MAIN" );
|
|
|
|
if ( index )
|
|
|
|
return ( user_function( index ) );
|
|
|
|
return ( NOERR );
|
|
|
|
}
|
|
|
|
|
1996-06-18 15:55:39 +00:00
|
|
|
bool TMotore_application::valida_operazione( int operazione ) // C 90
|
1995-12-04 17:41:06 +00:00
|
|
|
{
|
1996-06-18 15:55:39 +00:00
|
|
|
if (operazione != OP_NUOVO && !stato_valido( stato_corrente( ), operazione))
|
|
|
|
{
|
|
|
|
segnala_stato_non_valido( operazione );
|
1995-12-04 17:41:06 +00:00
|
|
|
return FALSE;
|
1996-06-18 15:55:39 +00:00
|
|
|
}
|
1995-12-04 17:41:06 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
const char * TMotore_application::nome_sezione( int op )
|
|
|
|
{
|
|
|
|
switch( op )
|
|
|
|
{
|
|
|
|
case OP_NUOVO:
|
|
|
|
return "INSERIMENTO";
|
|
|
|
break;
|
|
|
|
case OP_MODIFICA:
|
|
|
|
return "MODIFICA";
|
|
|
|
break;
|
|
|
|
case OP_CANCELLA:
|
|
|
|
return "CANCELLAZIONE";
|
|
|
|
break;
|
|
|
|
case OP_STAMPA:
|
|
|
|
return "STAMPA";
|
|
|
|
break;
|
|
|
|
case OP_RAGGRUPPA:
|
|
|
|
return "RAGGRUPPA";
|
|
|
|
break;
|
|
|
|
case OP_USER:
|
|
|
|
return "SPECIALE";
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
CHECK( FALSE, "tentativo di ottenere il nome di una operazione inesistente!" );
|
|
|
|
// Per evitare la warning
|
|
|
|
return "";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
int TMotore_application::stato_finale( int operazione )
|
|
|
|
{
|
|
|
|
TString s( pro( ).get( "STATOFINALE", nome_sezione( operazione ) ) );
|
|
|
|
if ( strcmp( s, "N" ) == 0 ) return NO_CHANGE_STATUS;
|
|
|
|
return ( atoi( s ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TMotore_application::stato_valido( int stato, int operazione )
|
|
|
|
{
|
|
|
|
#ifdef _DEBUG
|
|
|
|
warning_box( "Controllo stati validi!\nStato corrente %d.\nStati validi %s.", stato_corrente( ), ( const char * )stati_validi( operazione ) );
|
1997-02-06 17:44:07 +00:00
|
|
|
#endif
|
|
|
|
if (stato == 0)
|
|
|
|
return TRUE;
|
1995-12-04 17:41:06 +00:00
|
|
|
char p[2] = "0";
|
|
|
|
TToken_string ret ( stati_validi( operazione ), ',' );
|
|
|
|
p[0] += ( char )stato;
|
|
|
|
return ( ret.get_pos( p ) != -1 );
|
|
|
|
}
|
|
|
|
|
|
|
|
int TMotore_application::stato_corrente( )
|
|
|
|
{
|
1997-02-06 17:44:07 +00:00
|
|
|
return edit_mask().get_int(F_STATO);
|
1995-12-04 17:41:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void TMotore_application::segnala_stato_non_valido( int operazione )
|
|
|
|
{
|
|
|
|
TString messaggio;
|
|
|
|
|
|
|
|
switch( operazione )
|
|
|
|
{
|
|
|
|
case OP_NUOVO:
|
|
|
|
// Sempre valido
|
|
|
|
break;
|
|
|
|
case OP_MODIFICA:
|
|
|
|
messaggio = "Il documento non si trova in uno stato valido per poter essere modificato!";
|
|
|
|
break;
|
|
|
|
case OP_CANCELLA:
|
|
|
|
messaggio = "Il documento non si trova in uno stato valido per poter essere cancellato!";
|
|
|
|
break;
|
|
|
|
case OP_STAMPA:
|
|
|
|
messaggio = "Il documento non si trova in uno stato valido per poter essere stampato!";
|
|
|
|
break;
|
|
|
|
case OP_RAGGRUPPA:
|
|
|
|
messaggio = "Il documento non si trova in uno stato valido per poter essere raggruppato!";
|
|
|
|
break;
|
|
|
|
case OP_USER:
|
|
|
|
messaggio = "Il documento non si trova in uno stato valido per effettuare la operazione richiesta!";
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
CHECK( FALSE, "Tentativo di segnalare stato non valido di una operazione non esistente!" );
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
messaggio << "\nStato corrente :%d.\nStati validi :%s.";
|
|
|
|
warning_box( messaggio, stato_corrente( ), ( const char * )stati_validi( operazione ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
int ve0100( int argc, char** argv )
|
|
|
|
{
|
|
|
|
TMotore_application a;
|
|
|
|
|
|
|
|
a.run( argc, argv, "Gestione documenti" );
|
|
|
|
return 0;
|
|
|
|
}
|