Lavoro di matteo

git-svn-id: svn://10.65.10.50/trunk@1770 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
matteo 1995-08-31 17:32:05 +00:00
parent f8b0972f7d
commit 3359cbd129
9 changed files with 1528 additions and 1002 deletions

View File

@ -1,28 +1,32 @@
#define F_CODTAB 101 #define F_CODTAB 101
#define F_DESNUM 102 #define F_DESNUM 102
#define F_ULTNUM 103 #define F_ULTNUM 103
#define F_ULTNUMPROV 104 #define F_ULTNUMPROV 104
#define F_PREFISSO 105 #define F_PREFISSO 105
#define F_SUFFISSO 106 #define F_SUFFISSO 106
#define F_ULTDATA 107 #define F_ULTDATA 107
#define F_ANNO 108 #define F_ANNO 108
#define F_TIPODOC1 110 #define F_TIPODOC1 110
#define F_DESDOC1 111 #define F_DESDOC1 111
#define F_TIPODOC2 112 #define F_TIPODOC2 112
#define F_DESDOC2 113 #define F_DESDOC2 113
#define F_TIPODOC3 114 #define F_TIPODOC3 114
#define F_DESDOC3 115 #define F_DESDOC3 115
#define F_TIPODOC4 116 #define F_TIPODOC4 116
#define F_DESDOC4 117 #define F_DESDOC4 117
#define F_TIPODOC5 118 #define F_TIPODOC5 118
#define F_DESDOC5 119 #define F_DESDOC5 119
#define F_TIPODOC6 120 #define F_TIPODOC6 120
#define F_DESDOC6 121 #define F_DESDOC6 121
#define F_TIPODOC7 122 #define F_TIPODOC7 122
#define F_DESDOC7 123 #define F_DESDOC7 123
#define F_TIPODOC8 124 #define F_TIPODOC8 124
#define F_DESDOC8 125 #define F_DESDOC8 125
#define F_TIPODOC9 126 #define F_TIPODOC9 126
#define F_DESDOC9 127 #define F_DESDOC9 127
#define F_TIPODOC10 128 #define F_TIPODOC10 128
#define F_DESDOC10 129 #define F_DESDOC10 129
#define F_NUMPROVV 130
#define F_NUMAUTO 131
#define F_ULTDATAPROV 132


View File

@ -2,11 +2,11 @@
TOOLBAR "" 0 20 60 2 TOOLBAR "" 0 20 60 2
#include "toolbar.h" #include "toolbar.h"
ENDPAGE ENDPAGE
PAGE "Tabella numerazioni Pagina 1/2" -1 -1 60 14 PAGE "Numerazione documenti" -1 -1 60 14
GROUPBOX DLG_NULL 75 7 GROUPBOX DLG_NULL 75 7
BEGIN BEGIN
@ -14,12 +14,18 @@ PAGE "Tabella numerazioni Pagina 1/2" -1 -1 60 14
FLAG "R" FLAG "R"
END END
// GROUPBOX DLG_NULL 84 13
// BEGIN
// PROMPT 1 5 ""
// FLAG "R"
// END
STRING F_CODTAB 4 STRING F_CODTAB 4
BEGIN BEGIN
PROMPT 2 2 "Cod. numerazione " PROMPT 2 2 "Cod. numerazione "
FIELD CODTAB FIELD CODTAB
HELP "Codice numerazione" HELP "Codice numerazione"
USE NUM USE NUM
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
INPUT CODTAB F_CODTAB INPUT CODTAB F_CODTAB
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
@ -32,10 +38,10 @@ PAGE "Tabella numerazioni Pagina 1/2" -1 -1 60 14
STRING F_DESNUM 50 STRING F_DESNUM 50
BEGIN BEGIN
PROMPT 2 4 "Descrizione " PROMPT 2 4 "Descrizione "
FIELD S0 FIELD S0
HELP "Descrizione numerazione" HELP "Descrizione numerazione"
USE NUM USE NUM KEY 2
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
INPUT S0 F_DESNUM INPUT S0 F_DESNUM
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
@ -45,251 +51,243 @@ PAGE "Tabella numerazioni Pagina 1/2" -1 -1 60 14
KEY 2 KEY 2
END END
NUMBER F_ULTNUM 7 0
BEGIN
PROMPT 2 7 "Numero ultimo documento emesso "
FIELD I0
FLAG "R"
END
NUMBER F_ULTNUMPROV 7 0
BEGIN
PROMPT 2 8 "Numero ultimo documento creato "
FIELD I1
FLAG "R"
END
DATE F_ULTDATA
BEGIN
PROMPT 2 10 "Data emissione ultimo documento "
FIELD D0
END
STRING F_PREFISSO 7 STRING F_PREFISSO 7
BEGIN BEGIN
PROMPT 2 12 "Prefisso numerazione " PROMPT 2 8 "Prefisso per la numerazione "
FIELD S6 FIELD S6
END END
STRING F_SUFFISSO 7 STRING F_SUFFISSO 7
BEGIN BEGIN
PROMPT 2 13 "Suffisso numerazione " PROMPT 2 10 "Suffisso per la numerazione "
FIELD S7 FIELD S7
END END
STRING F_ANNO 4 BOOLEAN F_NUMPROVV
BEGIN BEGIN
PROMPT 2 15 "Anno d'esercizio " PROMPT 2 12 "Utilizzo della numerazione provvisoria"
FIELD S8 FIELD B0
END
BOOLEAN F_NUMAUTO
BEGIN
PROMPT 2 14 "Utilizzo della numerazione automatica"
FIELD B1
END END
ENDPAGE ENDPAGE
PAGE "Tabella numerazioni Pagina 2/2" -1 -1 60 14 PAGE "Numerazioni documenti pag.2" -1 -1 60 14
TEXT DLG_NULL GROUPBOX DLG_NULL 64 15
BEGIN BEGIN
PROMPT 2 2 "Tipi di documento validi per la numerazione" PROMPT 1 1 ""
END // FLAG "R"
END
TEXT DLG_NULL
BEGIN
PROMPT 2 2 "Tipi di documento validi per la numerazione"
END
STRING F_TIPODOC1 4 STRING F_TIPODOC1 4
BEGIN BEGIN
PROMPT 2 4 "" PROMPT 2 4 ""
USE TIP USE %TIP
INPUT CODTAB F_TIPODOC1 INPUT CODTAB F_TIPODOC1
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC1 TIP->CODTAB OUTPUT F_TIPODOC1 CODTAB
OUTPUT F_DESDOC1 TIP->S0 OUTPUT F_DESDOC1 S0
HELP "Tipo di documento 1" HELP "Tipo di documento 1"
FIELD S2[1,4] FIELD S2[1,4]
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_DESDOC1 50 STRING F_DESDOC1 40
BEGIN BEGIN
PROMPT 10 4 "" PROMPT 12 4 ""
FLAG "D" FLAG "D"
END END
STRING F_TIPODOC2 4 STRING F_TIPODOC2 4
BEGIN BEGIN
PROMPT 2 5 "" PROMPT 2 5 ""
USE TIP USE %TIP
INPUT CODTAB F_TIPODOC2 INPUT CODTAB F_TIPODOC2
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC2 TIP->CODTAB OUTPUT F_TIPODOC2 CODTAB
OUTPUT F_DESDOC2 TIP->S0 OUTPUT F_DESDOC2 S0
HELP "Tipo di documento 2" HELP "Tipo di documento 2"
FIELD S2[5,8] FIELD S2[5,8]
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_DESDOC2 50 STRING F_DESDOC2 40
BEGIN BEGIN
PROMPT 10 5 "" PROMPT 12 5 ""
FLAG "D" FLAG "D"
END END
STRING F_TIPODOC3 4 STRING F_TIPODOC3 4
BEGIN BEGIN
PROMPT 2 6 "" PROMPT 2 6 ""
USE TIP USE %TIP
INPUT CODTAB F_TIPODOC3 INPUT CODTAB F_TIPODOC3
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC3 TIP->CODTAB OUTPUT F_TIPODOC3 CODTAB
OUTPUT F_DESDOC3 TIP->S0 OUTPUT F_DESDOC3 S0
HELP "Tipo di documento 3" HELP "Tipo di documento 3"
FIELD S2[9,12] FIELD S2[9,12]
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_DESDOC3 50 STRING F_DESDOC3 40
BEGIN BEGIN
PROMPT 10 6 "" PROMPT 12 6 ""
FLAG "D" FLAG "D"
END END
STRING F_TIPODOC4 4 STRING F_TIPODOC4 4
BEGIN BEGIN
PROMPT 2 7 "" PROMPT 2 7 ""
USE TIP USE %TIP
INPUT CODTAB F_TIPODOC4 INPUT CODTAB F_TIPODOC4
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC4 TIP->CODTAB OUTPUT F_TIPODOC4 CODTAB
OUTPUT F_DESDOC4 TIP->S0 OUTPUT F_DESDOC4 S0
HELP "Tipo di documento 4" HELP "Tipo di documento 4"
FIELD S2[13,16] FIELD S2[13,16]
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_DESDOC4 50 STRING F_DESDOC4 40
BEGIN BEGIN
PROMPT 10 7 "" PROMPT 12 7 ""
FLAG "D" FLAG "D"
END END
STRING F_TIPODOC5 4 STRING F_TIPODOC5 4
BEGIN BEGIN
PROMPT 2 8 "" PROMPT 2 8 ""
USE TIP USE %TIP
INPUT CODTAB F_TIPODOC5 INPUT CODTAB F_TIPODOC5
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC5 TIP->CODTAB OUTPUT F_TIPODOC5 CODTAB
OUTPUT F_DESDOC5 TIP->S0 OUTPUT F_DESDOC5 S0
HELP "Tipo di documento 5" HELP "Tipo di documento 5"
FIELD S2[17,20] FIELD S2[17,20]
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_DESDOC5 50 STRING F_DESDOC5 40
BEGIN BEGIN
PROMPT 10 8 "" PROMPT 12 8 ""
FLAG "D" FLAG "D"
END END
STRING F_TIPODOC6 4 STRING F_TIPODOC6 4
BEGIN BEGIN
PROMPT 2 9 "" PROMPT 2 9 ""
USE TIP USE %TIP
INPUT CODTAB F_TIPODOC6 INPUT CODTAB F_TIPODOC6
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC6 TIP->CODTAB OUTPUT F_TIPODOC6 CODTAB
OUTPUT F_DESDOC6 TIP->S0 OUTPUT F_DESDOC6 S0
HELP "Tipo di documento 6" HELP "Tipo di documento 6"
FIELD S2[21,24] FIELD S2[21,24]
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_DESDOC6 50 STRING F_DESDOC6 40
BEGIN BEGIN
PROMPT 10 9 "" PROMPT 12 9 ""
FLAG "D" FLAG "D"
END END
STRING F_TIPODOC7 4 STRING F_TIPODOC7 4
BEGIN BEGIN
PROMPT 2 10 "" PROMPT 2 10 ""
USE TIP USE %TIP
INPUT CODTAB F_TIPODOC7 INPUT CODTAB F_TIPODOC7
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC7 TIP->CODTAB OUTPUT F_TIPODOC7 CODTAB
OUTPUT F_DESDOC7 TIP->S0 OUTPUT F_DESDOC7 S0
HELP "Tipo di documento 7" HELP "Tipo di documento 7"
FIELD S2[25,28] FIELD S2[25,28]
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_DESDOC7 50 STRING F_DESDOC7 40
BEGIN BEGIN
PROMPT 10 10 "" PROMPT 12 10 ""
FLAG "D" FLAG "D"
END END
STRING F_TIPODOC8 4 STRING F_TIPODOC8 4
BEGIN BEGIN
PROMPT 2 11 "" PROMPT 2 11 ""
USE TIP USE %TIP
INPUT CODTAB F_TIPODOC8 INPUT CODTAB F_TIPODOC8
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC8 TIP->CODTAB OUTPUT F_TIPODOC8 CODTAB
OUTPUT F_DESDOC8 TIP->S0 OUTPUT F_DESDOC8 S0
HELP "Tipo di documento 8" HELP "Tipo di documento 8"
FIELD S2[29,32] FIELD S2[29,32]
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_DESDOC8 50 STRING F_DESDOC8 40
BEGIN BEGIN
PROMPT 10 11 "" PROMPT 12 11 ""
FLAG "D" FLAG "D"
END END
STRING F_TIPODOC9 4 STRING F_TIPODOC9 4
BEGIN BEGIN
PROMPT 2 12 "" PROMPT 2 12 ""
USE TIP USE %TIP
INPUT CODTAB F_TIPODOC9 INPUT CODTAB F_TIPODOC9
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC9 TIP->CODTAB OUTPUT F_TIPODOC9 CODTAB
OUTPUT F_DESDOC9 TIP->S0 OUTPUT F_DESDOC9 S0
HELP "Tipo di documento 9" HELP "Tipo di documento 9"
FIELD S2[32,36] FIELD S2[32,36]
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_DESDOC9 50 STRING F_DESDOC9 40
BEGIN BEGIN
PROMPT 10 12 "" PROMPT 12 12 ""
FLAG "D" FLAG "D"
END END
STRING F_TIPODOC10 4 STRING F_TIPODOC10 4
BEGIN BEGIN
PROMPT 2 13 "" PROMPT 2 13 ""
USE TIP USE %TIP
INPUT CODTAB F_TIPODOC10 INPUT CODTAB F_TIPODOC10
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC10 TIP->CODTAB OUTPUT F_TIPODOC10 CODTAB
OUTPUT F_DESDOC10 TIP->S0 OUTPUT F_DESDOC10 S0
HELP "Tipo di documento 10" HELP "Tipo di documento 10"
FIELD S2[37,40] FIELD S2[37,40]
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_DESDOC10 50 STRING F_DESDOC10 40
BEGIN BEGIN
PROMPT 10 13 "" PROMPT 12 13 ""
FLAG "D" FLAG "D"
END END
ENDMASK ENDMASK

View File

@ -1,65 +1,65 @@
#include "ve4.h" #include "ve4.h"
TOOLBAR "" 0 20 60 2 TOOLBAR "" 0 20 60 2
#include "toolbar.h" #include "toolbar.h"
ENDPAGE ENDPAGE
PAGE "Tabella tipi di documento" -1 -1 60 14 PAGE "Tabella tipi di documento" -1 -1 60 14
GROUPBOX DLG_NULL 75 7 GROUPBOX DLG_NULL 75 7
BEGIN BEGIN
PROMPT 1 0 "" PROMPT 1 0 ""
FLAG "R" FLAG "R"
END END
STRING F_CODTAB 4 STRING F_CODTAB 4
BEGIN BEGIN
PROMPT 2 2 "Cod. tipo docum. " PROMPT 2 2 "Cod. tipo docum. "
FIELD CODTAB FIELD CODTAB
HELP "Codice tipo documento" HELP "Codice tipo documento"
USE %TIP USE %TIP
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
INPUT CODTAB F_CODTAB INPUT CODTAB F_CODTAB
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_CODTAB CODTAB OUTPUT F_CODTAB CODTAB
OUTPUT F_DESNUM S0 OUTPUT F_DESNUM S0
KEY 1 KEY 1
FLAG "UZ" FLAG "UZ"
END END
STRING F_DESNUM 50 STRING F_DESNUM 50
BEGIN BEGIN
PROMPT 2 4 "Descrizione " PROMPT 2 4 "Descrizione "
FIELD S0 FIELD S0
HELP "Descrizione tipo documento" HELP "Descrizione tipo documento"
USE %TIP KEY 2 USE %TIP KEY 2
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
INPUT S0 F_DESNUM INPUT S0 F_DESNUM
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@40" S0 DISPLAY "Descrizione@40" S0
OUTPUT F_CODTAB CODTAB OUTPUT F_CODTAB CODTAB
OUTPUT F_DESNUM S0 OUTPUT F_DESNUM S0
KEY 2 KEY 2
END END
STRING F_PROFILO 8 STRING F_PROFILO 8
BEGIN BEGIN
PROMPT 2 8 "Profilo documento " PROMPT 2 8 "Profilo documento "
FIELD S4 FIELD S4
FLAG "U" FLAG "U"
END END
STRING F_PSTAMPA 8 STRING F_PSTAMPA 8
BEGIN BEGIN
PROMPT 2 10 "Profilo stampa documento " PROMPT 2 10 "Profilo stampa documento "
FIELD S5 FIELD S5
FLAG "U" FLAG "U"
END END
ENDPAGE ENDPAGE
ENDMASK ENDMASK

View File

@ -1,54 +1,54 @@
TOOLBAR "" 0 20 60 2 TOOLBAR "" 0 20 60 2
#include "toolbar.h" #include "toolbar.h"
ENDPAGE ENDPAGE
#define F_CODICE 101 #define F_CODICE 101
#define F_DESCR 102 #define F_DESCR 102
#define F_PROFILO 103 #define F_PROFILO 103
PAGE "Tipo di riga" -1 -1 60 14 PAGE "Tipo di riga" -1 -1 60 14
GROUPBOX DLG_NULL 75 7 GROUPBOX DLG_NULL 75 7
BEGIN BEGIN
PROMPT 1 0 "" PROMPT 1 0 ""
FLAGS "R" FLAGS "R"
END END
STRING F_CODICE 4 STRING F_CODICE 4
BEGIN BEGIN
PROMPT 2 2 "Codice " PROMPT 2 2 "Codice "
FIELD CODTAB FIELD CODTAB
FLAGS "U" FLAGS "U"
USE %TRI USE %TRI
INPUT CODTAB F_CODICE INPUT CODTAB F_CODICE
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_CODICE CODTAB OUTPUT F_CODICE CODTAB
OUTPUT F_DESCR S0 OUTPUT F_DESCR S0
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
KEY 1 KEY 1
END END
STRING F_DESCR 50 STRING F_DESCR 50
BEGIN BEGIN
PROMPT 2 4 "Descrizione " PROMPT 2 4 "Descrizione "
FIELD S0 FIELD S0
USE %TRI KEY 2 USE %TRI KEY 2
INPUT S0 F_DESCR INPUT S0 F_DESCR
COPY DISPLAY F_CODICE COPY DISPLAY F_CODICE
COPY OUTPUT F_CODICE COPY OUTPUT F_CODICE
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
KEY 2 KEY 2
END END
STRING f_PROFILO 8 STRING f_PROFILO 8
BEGIN BEGIN
PROMPT 2 8 "Profilo " PROMPT 2 8 "Profilo "
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FIELD S4 FIELD S4
END END
END END
ENDMASK ENDMASK

View File

@ -29,7 +29,7 @@
#endif #endif
#ifndef __VEUML_H #ifndef __VEUML_H
#include "f:\u\alex\p.due\ve\VEUML.H" #include "VEUML.H"
#endif #endif
#ifndef __SHEET_H #ifndef __SHEET_H
@ -56,17 +56,10 @@
#include "VE0100D.H" #include "VE0100D.H"
#endif #endif
// Handlers per i campi delle bolle
extern bool ora_hndl(TMask_field& field, KEY key);
extern bool codcli_hndl(TMask_field& field, KEY key);
extern bool dummy_hndl(TMask_field& field, KEY key);
// Numero di colonne presenti sullo sheet totale // Numero di colonne presenti sullo sheet totale
#define MAX_COLUMNS 22 #define MAX_COLUMNS 22
#define F_LBTIPORIGA 175 #define F_LBTIPORIGA 175
#define F_TIPIDOCS 172
// Definizione della classe dell'applicazione motore // Definizione della classe dell'applicazione motore
class TMotore_application : public TRelation_application class TMotore_application : public TRelation_application
@ -95,9 +88,13 @@ class TMotore_application : public TRelation_application
// Puntatore allo sheet delle righe documento // Puntatore allo sheet delle righe documento
TSheet_field* _sheet; TSheet_field* _sheet;
// Posizione delle colonne nello sheet
int _pos_cols[ MAX_COLUMNS ];
// Numero di colonne realmente presenti sullo sheet
int _realcols;
// Ridefinizione dei metodi virtuali // Ridefinizione dei metodi virtuali
virtual bool user_create( ); virtual bool user_create( );
virtual bool user_destroy( ); virtual bool user_destroy( );
virtual TMask* get_mask(int mode); virtual TMask* get_mask(int mode);
@ -108,7 +105,6 @@ class TMotore_application : public TRelation_application
virtual bool remove( void ); virtual bool remove( void );
virtual int write(const TMask& m); virtual int write(const TMask& m);
virtual int rewrite(const TMask& m); virtual int rewrite(const TMask& m);
virtual void init_query_mode(TMask&);
// Punti di ingresso per le funzioni utente // Punti di ingresso per le funzioni utente
@ -157,7 +153,7 @@ protected:
static TMask * ss_getmask( int numriga, TMask& fullmask, bool destroy ); static TMask * ss_getmask( int numriga, TMask& fullmask, bool destroy );
// Handler che gestisce la richiesta del tipo riga in inserimento // Handler che gestisce la richiesta del tipo riga in inserimento
static bool ss_handler( int r, KEY key ); static bool ss_handler( TSheet_field& ss, int r, KEY key );
// Handler per la maschera di ricerca // Handler per la maschera di ricerca
static bool ndoc_handler(TMask_field& f, KEY key); static bool ndoc_handler(TMask_field& f, KEY key);
@ -187,6 +183,9 @@ public:
TMotore_application( ) { _pro = NULL; } TMotore_application( ) { _pro = NULL; }
virtual ~TMotore_application( ) { if ( _pro ) delete _pro; } virtual ~TMotore_application( ) { if ( _pro ) delete _pro; }
virtual const char* get_next_key( ); virtual const char* get_next_key( );
int numero_colonne( ){ return _realcols; }
int posizione_colonna( int index ){ return _pos_cols[ index ]; }
}; };
HIDDEN TMotore_application& app( ) { return (TMotore_application&) main_app( ); } HIDDEN TMotore_application& app( ) { return (TMotore_application&) main_app( ); }
@ -195,7 +194,8 @@ HIDDEN TMotore_application& app( ) { return (TMotore_application&) main_app( );
int TMotore_application::user_function( int index ) int TMotore_application::user_function( int index )
{ {
switch( index ) switch( index )
{ case 1: {
case 1:
break; break;
default: default:
yesnofatal_box( "Chiamata ad una procedura utente non definita: %d", index ); yesnofatal_box( "Chiamata ad una procedura utente non definita: %d", index );
@ -210,34 +210,50 @@ int TMotore_application::user_function( int index )
// Da migliorare, mettendo una cache // Da migliorare, mettendo una cache
TMask *TMotore_application::ss_getmask( int numriga, TMask& fullmask, bool destroy ) TMask *TMotore_application::ss_getmask( int numriga, TMask& fullmask, bool destroy )
{ static TMask* m; {
static TMask* m;
if ( destroy )
{ delete m; if ( destroy )
return( NULL ); } {
else delete m;
{ TFilename nome_proriga( fullmask.get( 103 ) ); return( NULL );
nome_proriga.ext( "ini" ); }
TConfig proriga( nome_proriga ); else
m = new TMask( proriga.get( "MSK", "MAIN" ) ); {
return( m ); } TFilename nome_proriga( fullmask.get( 103 ) );
} nome_proriga.ext( "ini" );
TConfig proriga( nome_proriga );
m = new TMask( proriga.get( "MSK", "MAIN" ) );
int numhandler = proriga.get_int( "NHANDLER", "HANDLERS" );
for( int i = 1; i <= numhandler; i ++ )
{
TString chiave;
chiave.format( "%d", i );
TToken_string riga = proriga.get( chiave, "HANDLERS" );
app().user_set_handler( riga.get_int( 0 ), riga.get_int( 1 ) );
};
return( m );
}
}
real TMotore_application::user_row_calculate( TRectype& r, int index ) real TMotore_application::user_row_calculate( TRectype& r, int index )
{ switch( index ) {
{ case 100 : switch( index )
return ( f100( r ) ); {
break; case 100 :
default: return ( f100( r ) );
CHECK( FALSE, "Tentativo di chiamare una funzione di calcolo riga inesistente!" ); break;
return 0.0; default:
} CHECK( FALSE, "Tentativo di chiamare una funzione di calcolo riga inesistente!" );
}; return 0.0;
}
};
void TMotore_application::user_set_handler( int fieldid, int index ) void TMotore_application::user_set_handler( int fieldid, int index )
{ {
switch( index ) switch( index )
{ case 1: {
case 1:
edit_mask( ).set_handler( fieldid, ora_hndl ); edit_mask( ).set_handler( fieldid, ora_hndl );
break; break;
case 2: case 2:
@ -247,56 +263,125 @@ void TMotore_application::user_set_handler( int fieldid, int index )
edit_mask( ).set_handler( fieldid, dummy_hndl ); edit_mask( ).set_handler( fieldid, dummy_hndl );
break; break;
default: default:
CHECK( FALSE, "tentativo di installare un handler non definito" ); CHECK( FALSE, "Tentativo di installare un handler non definito" );
break; break;
} }
}; };
bool TMotore_application::ss_handler( int r, KEY key ) bool TMotore_application::ss_handler( TSheet_field& ss, int r, KEY key )
{ {
if ( key == K_INS ) if ( key == K_INS )
{ {
TMask m( "ve1000b" ); TMask& m = *app( )._msk1;
TList_field& listbox = ( TList_field& ) m.field( F_LBTIPORIGA ); TTable tabtr( "%TRI" );
const int numtr = app( ).pro( ).get_int( "NTIPIRIGA", "RIGHE" ); tabtr.zero( );
TTable tabtr( "TRI" );
TToken_string keys( "" ), descrs( "" );
for ( int i = 1; i <= numtr; i ++ )
{ TString chiave;
TToken_string item;
chiave.format( "%d", i );
tabtr.zero( );
tabtr.put( "CODTAB", app( ).pro( ).get( chiave, "RIGHE" ) );
tabtr.read( );
keys.add( tabtr.get( "CODTAB" ) );
descrs.add( tabtr.get( "S0" ) );
}
listbox.replace_items( keys, descrs );
if( m.run( ) == K_ESC ) return FALSE;
tabtr.put( "CODTAB", m.get( F_LBTIPORIGA ) ); tabtr.put( "CODTAB", m.get( F_LBTIPORIGA ) );
tabtr.read( ); tabtr.read( );
TToken_string& riga = app( ).sheet( ).row( r ); TToken_string& riga = ss.row( r );
riga.add( 1, 0 ); riga.add( 1, 0 );
riga.add( m.get( F_LBTIPORIGA ), 1 ); riga.add( m.get( F_LBTIPORIGA ), 1 );
riga.add( tabtr.get( "S4" ), 2 ); TFilename nome_proriga( tabtr.get( "S4" ) );
app( ).sheet( ).force_update( ); riga.add( nome_proriga, 2 );
return TRUE; nome_proriga.ext( "ini" );
} TConfig pro( nome_proriga );
int ncols = pro.get_int( "NCOLS", "COLUMNS" );
// Disabilita tutte le colonne
for( int i = 1; i < app( ).numero_colonne( ); i ++ )
ss.disable_cell ( ss.items( ) - 1, i );
for( i = 1; i < ncols; i ++ )
{
TString16 chiave;
chiave.format( "%d", i );
int coltoenable = pro.get_int( chiave, "COLUMNS" );
ss.enable_cell ( ss.items( ) - 1, app().posizione_colonna( coltoenable ) );
};
ss.force_update( );
app( ).curr_mask( ).send_key( K_ROWEDIT, F_SHEET );
// ss.on_key( K_SPACE );
// ss.edit( ss.items( ) );
/*
nome_proriga.ext( "ini" );
TConfig proriga( nome_proriga );
TMask *sm = new TMask( proriga.get( "MSK", "MAIN" ) );
// int numhandler = proriga.get_int( "NHANDLER", "HANDLERS" );
// for( int i = 1; i <= numhandler; i ++ )
// {
// TString chiave;
// chiave.format( "%d", i );
// TToken_string riga = proriga.get( chiave, "HANDLERS" );
// app().user_set_handler( riga.get_int( 0 ), riga.get_int( 1 ) );
// };
sm->disable( DLG_DELREC );
if ( sm->run( ) == K_ENTER )
{
// Riga inserita, vai col disabilitare le colonne
delete sm;
ss.force_update( ); */
return TRUE;
};
return TRUE; return TRUE;
}; };
bool TMotore_application::num_handler( TMask_field& f, KEY key ) bool TMotore_application::num_handler( TMask_field& f, KEY key )
{ {
// Ottengo la maschera
TMask& m = f.mask( ); TMask& m = f.mask( );
if (key == K_TAB && m.is_running( ) ) if (key == K_TAB && m.is_running( ) )
{ {
// Se la numerazione non è specificata,
const TString16 value( m.get( F_CODNUM ) );
if ( value.blank( ) )
{
// Pulisce la descrizione
m.set(F_DESNUM, "" );
// Pulisce i tipi di documento consentiti
m.set(F_TIPIDOCS, "" );
// Pulisce il tipo di documento
m.set(F_TIPODOC, "" );
return TRUE;
}
// Apro la tabella numerazioni
TTable tabnum( "NUM" ); TTable tabnum( "NUM" );
tabnum.zero( );
tabnum.read( ); tabnum.put( "CODTAB", value );
m.set(F_DESNUM, tabnum.get("S0") ); if( tabnum.read( ) == NOERR )
m.set(F_TIPIDOCS, tabnum.get("S2") ); {
} // Copio la descriozione della numerazione
m.set(F_DESNUM, tabnum.get("S0") );
// Copio i tipi di documento validi per la numerazione
m.set(F_TIPIDOCS, tabnum.get("S2") );
// Se per questa numerazione è abilitata le numerazione provvisoria
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 );
};
return TRUE;
}
message_box( "Numerazione non valida!" );
return FALSE;
}
if (key == K_ENTER && m.is_running( ) )
{ // Se la numerazione non è specificata,
const TString16 value( m.get( F_CODNUM ) );
if ( value.blank( ) )
{
message_box( "Occorre una numerazione per inserire un documento!" );
m.first_focus( F_NDOC );
return FALSE;
}
}
return TRUE; return TRUE;
} }
@ -305,27 +390,36 @@ bool TMotore_application::tip_handler(TMask_field& f, KEY key)
TMask& m = f.mask( ); TMask& m = f.mask( );
if (key == K_TAB && m.is_running( ) ) if (key == K_TAB && m.is_running( ) )
{ {
const TString16 value( m.get( F_TIPODOC ) );
if ( value.blank( ) )
{
// Pulisce il profilo
m.set(F_PROFILO, "" );
return TRUE;
}
TString tipi_consentiti( m.get( F_TIPIDOCS ) ); TString tipi_consentiti( m.get( F_TIPIDOCS ) );
TString tipo( f.get( ) ); TString tipo( f.get( ) );
if( tipi_consentiti.find( tipo ) % 4 ) if( tipi_consentiti.find( tipo ) % 4 )
{ message_box( "Tipo non valido per la numerazione selezionata!" ); { message_box( "Tipo non valido per la numerazione selezionata!" );
f.set( "" ); f.set( "" );
return FALSE; } return FALSE; }
TTable tabtip( "TIP" ); TTable tabtip( "%TIP" );
tabtip.read( ); tabtip.read( );
m.set(F_DESTIPODOC, tabtip.get("S0") );
m.set(F_PROFILO, tabtip.get("S4") ); m.set(F_PROFILO, tabtip.get("S4") );
}; };
if (key == K_ENTER && m.is_running( ) ) if (key == K_ENTER && m.is_running( ) )
{ TString tipo( f.get( ) ); { TString tipo( f.get( ) );
if ( ! tipo.blank( ) ) if ( ! tipo.blank( ) )
{ TTable tabtip( "TIP" ); { TTable tabtip( "%TIP" );
tabtip.read( ); tabtip.read( );
m.set(F_PROFILO, tabtip.get("S4") ); m.set(F_PROFILO, tabtip.get("S4") );
} }
else else
{ message_box( "Occorre un tipo documento per inserire un documento!" ); { message_box( "Occorre un tipo documento per inserire un documento!" );
m.first_focus( F_TIPODOC ); m.first_focus( F_TIPODOC );
return FALSE; } return FALSE;
}
} }
return TRUE; return TRUE;
} }
@ -341,28 +435,14 @@ bool TMotore_application::ndoc_handler(TMask_field& f, KEY key)
doc.put("ANNO", m.get( F_ANNO ) ); doc.put("ANNO", m.get( F_ANNO ) );
doc.put("NDOC", f.get( ) ); doc.put("NDOC", f.get( ) );
if ( doc.read( ) == NOERR ) if ( doc.read( ) == NOERR )
{ m.set(F_TIPODOC, doc.get( "TIPODOC" ) ); { m.set(F_TIPODOC, doc.get( "TIPODOC" ) );
TTable tabtip( "TIP" ); TTable tabtip( "%TIP" );
tabtip.put( "CODTAB", doc.get( "TIPODOC" ) ); tabtip.put( "CODTAB", doc.get( "TIPODOC" ) );
tabtip.read( ); tabtip.read( );
m.set(F_PROFILO, tabtip.get("S4") ); m.set(F_PROFILO, tabtip.get("S4") );
m.stop_run( K_AUTO_ENTER ); m.stop_run( K_AUTO_ENTER );
} }
} }
/* m.set( F_TIPODOC, doc.get( "TIPODOC" );
TTable tabtip( "TIP" );
tabtip.read( );
m.set(F_PROFILO, tabtip.get("S4") );
}
else
{ TString tipodoc = m.get( F_TIPODOC );
if ( ! f.blank( ) )
{ message_box( "Per inserire un nuovo documento occorre\nspecificare il tipo documento!" );
m.first_focus( F_TIPODOC );
return FALSE;
}
}
} */
return TRUE; return TRUE;
} }
@ -383,34 +463,39 @@ bool TMotore_application::changing_mask(int mode)
} }
void TMotore_application::configura_sheet( TSheet_field& sheet, TConfig& config ) void TMotore_application::configura_sheet( TSheet_field& sheet, TConfig& config )
{ int i; {
const int ncols = config.get_int( "NCOLS", "SHEET" ); _realcols = config.get_int( "NCOLS", "SHEET" );
for( i = 1; i <= ncols; i ++ ) for( int i = 1; i <= _realcols; i ++ )
{ TString col; {
col.format( "%d", i ); TString col;
TToken_string sheet_col( config.get( col, "SHEET" ) ); col.format( "%d", i );
TString descr( sheet_col.get( 1 ) ); TToken_string sheet_col( config.get( col, "SHEET" ) );
if ( ! descr.blank( ) ) const TString descr( sheet_col.get( 1 ) );
sheet.set_column_header( i, descr ); if ( ! descr.blank( ) )
TString size( sheet_col.get( 2 ) ); sheet.set_column_header( i, descr );
if ( ! size.blank( ) ) TString size( sheet_col.get( 2 ) );
sheet.set_column_width( i, sheet_col.get_int( 2 ) ); if ( ! size.blank( ) )
sheet.move_column( sheet_col.get_int( 0 ) - 1, i ); sheet.set_column_width( i, sheet_col.get_int( 2 ) );
} int coltomove = sheet_col.get_int( 0 ) - 1;
for ( int j = MAX_COLUMNS; j >= i - 1; j -- ) sheet.move_column( coltomove, i );
sheet.delete_column( j ); _pos_cols[ coltomove ] = i;
}; };
for ( int j = MAX_COLUMNS; j >= i - 1; j -- )
sheet.delete_column( j );
};
void TMotore_application::get_edit_mask( void ) void TMotore_application::get_edit_mask( void )
{ {
TFilename fn; TFilename fn;
fn = query_mask( ).get( F_PROFILO ); fn = query_mask( ).get( F_PROFILO );
query_mask( ).enable(DLG_NEWREC); // query_mask( ).enable(DLG_NEWREC);
fn.ext( "ini" ); fn.ext( "ini" );
fn.upper( ); fn.upper( );
if ( _pro ) if ( _pro )
{ if( (*_proname) == fn ) return; {
if( (*_proname) == fn )
return;
delete _pro; delete _pro;
}; };
_pro = new TConfig( fn ); _pro = new TConfig( fn );
@ -418,15 +503,39 @@ void TMotore_application::get_edit_mask( void )
_proname->upper( ); _proname->upper( );
if ( _msk1 ) delete _msk1; if ( _msk1 ) delete _msk1;
_msk1 = new TMask( pro( ).get( "MSKFILE", "MAIN" ) ); _msk1 = new TMask( pro( ).get( "MSKFILE", "MAIN" ) );
edit_mask( ).set( F_PROFILO, query_mask( ).get( F_PROFILO ) ); // edit_mask( ).set( F_PROFILO, query_mask( ).get( F_PROFILO ) );
edit_mask( ).set( F_DESNUM, query_mask( ).get( F_DESNUM ) ); edit_mask( ).set( F_DESNUM, query_mask( ).get( F_DESNUM ) );
_sheet = &(TSheet_field &)edit_mask( ).field(F_SHEET); _sheet = &(TSheet_field &)edit_mask( ).field(F_SHEET);
sheet( ).set_notify( ss_handler ); sheet( ).set_notify( ss_handler );
configura_sheet( *_sheet, *_pro ); configura_sheet( *_sheet, *_pro );
TList_field& listbox = ( TList_field& ) _msk1->field( F_LBTIPORIGA );
const int numtr = app( ).pro( ).get_int( "NTIPIRIGA", "RIGHE" );
TTable tabtr( "%TRI" );
TToken_string keys( "" ), descrs( "" );
for ( int i = 1; i <= numtr; i ++ )
{
TString chiave;
TToken_string item;
chiave.format( "%d", i );
tabtr.zero( );
TString tiporiga( app( ).pro( ).get( chiave, "RIGHE" ) );
tabtr.put( "CODTAB", tiporiga );
if ( tabtr.read( ) == NOERR )
{
keys.add( tabtr.get( "CODTAB" ) );
descrs.add( tabtr.get( "S0" ) );
}
else
{
yesnofatal_box( "Inserito un tipo di riga non valido (%s)", (const char *)tiporiga );
}
}
listbox.replace_items( keys, descrs );
sheet( ).set_getmask( ss_getmask ); sheet( ).set_getmask( ss_getmask );
int numhandler = pro( ).get_int( "NHANDLER", "HANDLERS" ); int numhandler = pro( ).get_int( "NHANDLER", "HANDLERS" );
for( int i = 1; i <= numhandler; i ++ ) for( i = 1; i <= numhandler; i ++ )
{ TString chiave; {
TString chiave;
chiave.format( "%d", i ); chiave.format( "%d", i );
TToken_string riga = pro( ).get( chiave, "HANDLERS" ); TToken_string riga = pro( ).get( chiave, "HANDLERS" );
user_set_handler( riga.get_int( 0 ), riga.get_int( 1 ) ); user_set_handler( riga.get_int( 0 ), riga.get_int( 1 ) );
@ -460,28 +569,50 @@ void TMotore_application::carica_righe_libere(int from)
{ {
if (from < 0) from = ss( ).items( ); if (from < 0) from = ss( ).items( );
for (int i = from; i < 20; i++) for (int i = from; i < 20; i++)
set_descr(i, ""); set_descr( i, "" );
ss( ).force_update( ); ss( ).force_update( );
} }
void TMotore_application::init_query_mode(TMask& _mask)
{
_mask.disable( DLG_NEWREC );
}
const char* TMotore_application::get_next_key( ) const char* TMotore_application::get_next_key( )
{ {
TToken_string _t; TToken_string key;
TMask& m = curr_mask( );
_t.add( F_CODNUM ); TString value = m.get( F_CODNUM );
_t.add( query_mask( ).get( F_CODNUM ) ); if ( value.blank( ) )
_t.add( F_ANNO ); return NULL;
_t.add( query_mask( ).get( F_ANNO ) ); TTable tabnum( "NUM" );
_t.add( F_PROVV ); tabnum.zero( );
_t.add( query_mask( ).get( F_PROVV ) ); tabnum.put( "CODTAB", value );
_t.add( F_NDOC ); if( tabnum.read( ) == NOERR )
_t.add( prossimo_numero( query_mask( ).get( F_PROVV ) == "P" ) ); {
return( _t ); // Se per questa numerazione è abilitata le numerazione automatica
if( tabnum.get_bool ( "B1" ) )
{
TLocalisamfile doc( LF_DOC );
doc.zero( );
doc.put( "CODNUM", value );
doc.put( "ANNO", m.get( F_ANNO ) );
doc.put( "NDOC", 9999999L );
// Se per questa numerazione è abilitata le numerazione provvisoria
if( tabnum.get_bool ( "B0" ) )
{
doc.put( "PROVV", "P" );
}
else // Altrimenti ...
{
doc.put( "PROVV", "D" );
};
if( doc.read( _isgteq ) == NOERR )
{
doc.prev( );
}
long num = ( value == doc.get( "CODNUM" ) ) ? doc.get_long( "NDOC" ) : 0;
key.format( "%d|%d", F_NDOC, num + 1 );
return key;
}
};
return NULL;
} }
int TMotore_application::read(TMask& m) int TMotore_application::read(TMask& m)
@ -489,7 +620,8 @@ int TMotore_application::read(TMask& m)
azzera_piedi( ); azzera_piedi( );
int err = TRelation_application::read( m ); int err = TRelation_application::read( m );
if ( err == NOERR ) if ( err == NOERR )
{ TLocalisamfile& rdoc = rel( ).lfile(LF_RIGHEDOC); {
TLocalisamfile& rdoc = rel( ).lfile(LF_RIGHEDOC);
TRectype r = rdoc.curr( ); TRectype r = rdoc.curr( );
r.zero( ); r.zero( );
r.put( "CODNUM", m.get( F_CODNUM ) ); r.put( "CODNUM", m.get( F_CODNUM ) );
@ -502,19 +634,21 @@ int TMotore_application::read(TMask& m)
f.destroy( ); f.destroy( );
int last = _righe_rec->last_row( ); int last = _righe_rec->last_row( );
for( int i = 1; i <= last; i ++ ) for( int i = 1; i <= last; i ++ )
{ TRectype &rec = _righe_rec->row( i, TRUE ); {
load_riga( f, i - 1, rec ); TRectype &rec = _righe_rec->row( i, TRUE );
calcola_riga( rec ); load_riga( f, i - 1, rec );
} calcola_riga( rec );
}
TToken_string s( pro( ).get( "PROGPIEDE", "MAIN" ) ); TToken_string s( pro( ).get( "PROGPIEDE", "MAIN" ) );
i = s.get_int( ); i = s.get_int( );
int j = 0; int j = 0;
while( i != 0 ) while( i != 0 )
{ real strpiede( _piedi[ i ] ); {
m.set( BASE_PIEDE + ( ++j ), strpiede.stringa( 15 ) ); real strpiede( _piedi[ i ] );
i = s.get_int( ); m.set( BASE_PIEDE + ( ++j ), strpiede.stringa( 15 ) );
} i = s.get_int( );
}
} }
return err; return err;
} }
@ -527,79 +661,52 @@ bool TMotore_application::check_key( TLocalisamfile& rdoc, TString16 codnum, boo
( rdoc.get_bool( "PROVV" ) == provv ) ); ( rdoc.get_bool( "PROVV" ) == provv ) );
} }
/*
void TMotore_application::read_rdoc(TMask& m)
{
TLocalisamfile& rdoc = rel( ).lfile(LF_RIGHEDOC);
TString16 _cod_num = rel( ).lfile( ).get( "CODNUM" );
bool _provv(query_mask( ).get_bool(F_PROVV));
TString16 _anno(query_mask( ).get(F_ANNO));
TString16 _ndoc(query_mask( ).get(F_NDOC));
rdoc.zero( );
rdoc.put("CODNUM", _cod_num);
rdoc.put("PROVV", _provv);
rdoc.put("ANNO", _anno);
rdoc.put("NDOC", _ndoc);
// loop per il caricamento delle righe
for ( int err = rdoc.read(_isgteq); err == NOERR && check_key(rdoc,_cod_num,_provv, _anno, _ndoc ); err = rdoc.next( ) )
{ const numrig = rdoc.get_int( "NRIGA" );
CHECK(numrig > 0, "Documento con numero di riga nullo!!");
const int TipoRiga = rdoc.get_int( "TIPORIGA" );
const TString16 Codart = rdoc.get( "CODART" );
const TString Descr = rdoc.get( "DESCR" );
const TString16 UmQta = rdoc.get( "UMQTA" );
const real Qta = rdoc.get_real( "QTA" );
// add_riga(numrig-1, TipoRiga, (TString &)Codart, (TString &)Descr, (TString &)UmQta, Qta);
// calcola_riga( rdoc );
}
}
*/
int TMotore_application::write(const TMask& m) int TMotore_application::write(const TMask& m)
{ int err; {
if ( esegui_procedura( OP_NUOVO ) != NOERR ) int err;
return FALSE; if ( esegui_procedura( OP_NUOVO ) != NOERR )
err = NOERR; // avanza_numero( m.get_bool( F_PROVV ) ); return FALSE;
if ( err == NOERR ) err = NOERR; // avanza_numero( m.get_bool( F_PROVV ) );
{ err = TRelation_application::write( m ); if ( err == NOERR )
if ( err == NOERR ) {
{ TSheet_field& f = ss( ); err = TRelation_application::write( m );
_righe_rec->destroy_rows( ); if ( err == NOERR )
if ( m.insert_mode( ) ) {
_righe_rec->renum_key( "NRIGA", 1 ); TSheet_field& f = ss( );
for ( int i = 0; i < f.items( ); i ++ ) _righe_rec->destroy_rows( );
{ if ( m.insert_mode( ) )
TToken_string& t = f.row( i ); _righe_rec->renum_key( "NRIGA", 1 );
TRectype& rec = _righe_rec->row(i + 1, TRUE); for ( int i = 0; i < f.items( ); i ++ )
store_riga( f, i, rec ); {
} TToken_string& t = f.row( i );
err = _righe_rec->write( ); TRectype& rec = _righe_rec->row(i + 1, TRUE);
} store_riga( f, i, rec );
}
err = _righe_rec->write( );
} }
return err; }
}; return err;
};
int TMotore_application::rewrite(const TMask& m) int TMotore_application::rewrite(const TMask& m)
{ {
if ( ! valida_operazione( OP_MODIFICA ) ) if ( ! valida_operazione( OP_MODIFICA ) )
return FALSE; return FALSE;
int err = TRelation_application::rewrite( m ); int err = TRelation_application::rewrite( m );
if ( err == NOERR ) if ( err == NOERR )
{ TSheet_field& f = ss( ); {
_righe_rec->destroy_rows( ); TSheet_field& f = ss( );
if ( m.insert_mode( ) ) _righe_rec->destroy_rows( );
_righe_rec->renum_key( "NRIGA", 1 ); if ( m.insert_mode( ) )
for ( int i = 0; i < f.items( ); i ++ ) _righe_rec->renum_key( "NRIGA", 1 );
{ for ( int i = 0; i < f.items( ); i ++ )
TToken_string& t = f.row( i ); {
TRectype& rec = _righe_rec->row(i + 1, TRUE); TToken_string& t = f.row( i );
store_riga( f, i, rec ); TRectype& rec = _righe_rec->row(i + 1, TRUE);
} store_riga( f, i, rec );
err = _righe_rec->rewrite( ); }
} err = _righe_rec->rewrite( );
}
return err; return err;
}; };
@ -625,37 +732,16 @@ int TMotore_application::avanza_numero( bool provv )
int err = tabnum.read( ); int err = tabnum.read( );
if ( err == NOERR ) if ( err == NOERR )
{ if ( provv ) {
tabnum.put( "I0", tabnum.get_long( "I0" ) + 1 ); if ( provv )
else tabnum.put( "I0", tabnum.get_long( "I0" ) + 1 );
tabnum.put( "I1", tabnum.get_long( "I1" ) + 1 ); else
err = tabnum.rewrite( ); tabnum.put( "I1", tabnum.get_long( "I1" ) + 1 );
} err = tabnum.rewrite( );
}
return err; return err;
}; };
// int TMotore_application::nuovo_documento( )
// {
//
// };
/*int TMotore_application::modifica_documento( )
{
KEY k;
edit_mask( ).autoload( _rel );
k = edit_mask( ).run( );
if ( k == K_SAVE )
{
if ( esegui_procedura( pro( ).indice_procedura( OP_MODIFICA ) ) != NOERR )
return FALSE;
edit_mask( ).autosave( _rel );
rel( ).rewrite( );
};
modify_mode( );
return NOERR;
};*/
bool TMotore_application::remove( void ) bool TMotore_application::remove( void )
{ {
if ( ! valida_operazione( OP_CANCELLA ) ) if ( ! valida_operazione( OP_CANCELLA ) )
@ -666,21 +752,8 @@ bool TMotore_application::remove( void )
void TMotore_application::load_riga( TSheet_field& f, int numrig, TRectype& r ) void TMotore_application::load_riga( TSheet_field& f, int numrig, TRectype& r )
{ {
TToken_string& riga = f.row(numrig); TToken_string& riga = f.row(numrig);
// riga= "";
// riga.add( r.get( "NRIGA" ) );
riga = r.get( "STATORIGA" ); riga = r.get( "STATORIGA" );
riga.add( r.get( "TIPORIGA" ) ); riga.add( r.get( "TIPORIGA" ) );
/*
switch(r.get_int( "TIPORIGA" ) )
{ case 1: riga.add("Merce"); break;
case 2: riga.add("Articolo Merce"); break;
case 3: riga.add("Spese"); break;
case 4: riga.add("Commento"); break;
case 5: riga.add("Omaggio"); break;
default: riga.add("Tipo Errato"); break;
}*/
riga.add( r.get( "PROFRIGA" ) ); riga.add( r.get( "PROFRIGA" ) );
riga.add( r.get( "CODMAG" ) ); riga.add( r.get( "CODMAG" ) );
riga.add( r.get( "CODART" ) ); riga.add( r.get( "CODART" ) );
@ -702,7 +775,6 @@ void TMotore_application::store_riga( TSheet_field& f, int numrig, TRectype& r )
r.put( "ANNO", edit_mask( ).get( F_ANNO ) ); r.put( "ANNO", edit_mask( ).get( F_ANNO ) );
r.put( "PROVV", edit_mask( ).get( F_PROVV ) ); r.put( "PROVV", edit_mask( ).get( F_PROVV ) );
r.put( "NDOC", edit_mask( ).get_long( F_NDOC ) ); r.put( "NDOC", edit_mask( ).get_long( F_NDOC ) );
// r.put( "NRIGA", riga.get( 0 ) );
r.put( "STATORIGA", riga.get( 0 ) ); r.put( "STATORIGA", riga.get( 0 ) );
r.put( "TIPORIGA", riga.get( 1 ) ); r.put( "TIPORIGA", riga.get( 1 ) );
r.put( "PROFRIGA", riga.get( 2 ) ); r.put( "PROFRIGA", riga.get( 2 ) );
@ -727,32 +799,36 @@ void TMotore_application::calcola_riga( TRectype& r )
TToken_string s(proriga.get("PROGPIEDE", "MAIN")); TToken_string s(proriga.get("PROGPIEDE", "MAIN"));
int func = s.get_int( ); int func = s.get_int( );
while( func ) while( func )
{ _piedi[ s.get_int( ) ] += user_row_calculate( r, func ); {
func = s.get_int( ); _piedi[ s.get_int( ) ] += user_row_calculate( r, func );
} func = s.get_int( );
}
} }
bool TMotore_application::user_create( ) bool TMotore_application::user_create( )
{ azzera_piedi( ); {
// Carico la maschera di ricerca dei documenti azzera_piedi( );
_msk = new TMask("VE1000A"); _msk = new TMask("VE1000A");
query_mask( ).set_handler( F_NDOC, ndoc_handler ); query_mask( ).set_handler( F_NDOC, ndoc_handler );
query_mask( ).set_handler( F_CODNUM, num_handler ); query_mask( ).set_handler( F_CODNUM, num_handler );
query_mask( ).set_handler( F_TIPODOC, tip_handler ); query_mask( ).set_handler( F_TIPODOC, tip_handler );
// La maschera di inserimento/modifica per ora non la so! // La maschera di inserimento/modifica per ora non la so!
// Viene letta dal profilo non appena trovato il record // Viene letta dal profilo non appena trovato il record
_msk1 = NULL; _msk1 = NULL;
// Metto in relazione testata e righe // Metto in relazione testata e righe
_rel = new TRelation(LF_DOC); _rel = new TRelation(LF_DOC);
rel( ).add( LF_RIGHEDOC,"CODNUM=CODNUM;ANNO=ANNO;PROVV=PROVV;NDOC=NDOC" ); rel( ).add( LF_RIGHEDOC,"CODNUM=CODNUM;ANNO=ANNO;PROVV=PROVV;NDOC=NDOC" );
// Inizializzo il Record_array // Inizializzo il Record_array
_righe_rec = new TRecord_array( LF_RIGHEDOC, "NRIGA", 1 ); _righe_rec = new TRecord_array( LF_RIGHEDOC, "NRIGA", 1 );
return TRUE; // Inizializzo l'array con la posizione delle colonne
} for( int i = 0; i <= MAX_COLUMNS; i ++ )
_pos_cols[ i ] = -1;
return TRUE;
}
bool TMotore_application::user_destroy( ) bool TMotore_application::user_destroy( )
{ {
@ -784,43 +860,47 @@ int TMotore_application::esegui_procedura( int operazione )
bool TMotore_application::valida_operazione( int operazione ) bool TMotore_application::valida_operazione( int operazione )
{ {
if ( operazione != OP_NUOVO ) if ( operazione != OP_NUOVO )
{ if ( !stato_valido( stato_corrente( ), operazione ) ) {
{ segnala_stato_non_valido( operazione ); if ( !stato_valido( stato_corrente( ), operazione ) )
return FALSE; {
}; segnala_stato_non_valido( operazione );
}; return FALSE;
}
};
if ( esegui_procedura( operazione ) == NOERR ) if ( esegui_procedura( operazione ) == NOERR )
return FALSE; return FALSE;
return TRUE; return TRUE;
} }
const char * TMotore_application::nome_sezione( int op ) const char * TMotore_application::nome_sezione( int op )
{ switch( op ) {
{ case OP_NUOVO: switch( op )
return "INSERIMENTO"; {
break; case OP_NUOVO:
case OP_MODIFICA: return "INSERIMENTO";
return "MODIFICA"; break;
break; case OP_MODIFICA:
case OP_CANCELLA: return "MODIFICA";
return "CANCELLAZIONE"; break;
break; case OP_CANCELLA:
case OP_STAMPA: return "CANCELLAZIONE";
return "STAMPA"; break;
break; case OP_STAMPA:
case OP_RAGGRUPPA: return "STAMPA";
return "RAGGRUPPA"; break;
break; case OP_RAGGRUPPA:
case OP_USER: return "RAGGRUPPA";
return "SPECIALE"; break;
break; case OP_USER:
default: return "SPECIALE";
CHECK( FALSE, "tentativo di ottenere il nome di una operazione inesistente!" ); break;
// Per evitare la warning default:
return ""; CHECK( FALSE, "tentativo di ottenere il nome di una operazione inesistente!" );
break; // Per evitare la warning
}; return "";
} break;
}
}
int TMotore_application::stato_finale( int operazione ) int TMotore_application::stato_finale( int operazione )
{ {

View File

@ -1,16 +1,4 @@
// Handler di marco sui campi delle maschere // Handler di marco sui campi delle maschere
#ifndef __VE0100C_H
#include "ve0100c.h"
#endif
#ifndef __VEUML_H
#include "f:\u\alex\p.due\ve\VeUML.h"
#endif
#ifndef __VEUML1_H
#include "f:\u\alex\p.due\ve\VeUML1.h"
#endif
#ifndef __CHECKS_H #ifndef __CHECKS_H
#include <checks.h> #include <checks.h>
#endif #endif
@ -31,9 +19,17 @@
#include <strings.h> #include <strings.h>
#endif #endif
extern bool ora_hndl(TMask_field& field, KEY key); #ifndef __VEUML_H
extern bool codcli_hndl(TMask_field& field, KEY key); #include "VeUML.h"
extern bool dummy_hndl(TMask_field& field, KEY key); #endif
#ifndef __VEUML1_H
#include "VeUML1.h"
#endif
#ifndef __VE0100C_H
#include "ve0100c.h"
#endif
bool ora_hndl(TMask_field& field, KEY key) bool ora_hndl(TMask_field& field, KEY key)
{ {
@ -94,6 +90,6 @@ bool codcli_hndl(TMask_field& field, KEY key)
bool dummy_hndl(TMask_field& field, KEY key) bool dummy_hndl(TMask_field& field, KEY key)
{ {
warning_box("Al campo %d + arrivato un KEY %d",field.dlg(),key); warning_box("Al campo %d è arrivato un KEY %d",field.dlg(),key);
return TRUE; return TRUE;
} }

View File

@ -1 +1,7 @@
#define __VE0100C_H #define __VE0100C_H
// Handlers per i campi delle bolle
extern bool ora_hndl(TMask_field& field, KEY key);
extern bool codcli_hndl(TMask_field& field, KEY key);
extern bool dummy_hndl(TMask_field& field, KEY key);

File diff suppressed because it is too large Load Diff

View File

@ -74,6 +74,10 @@
#define F_PROFILO 171 // GESTITO DAL MOTORE #define F_PROFILO 171 // GESTITO DAL MOTORE
#define F_TIPODOC 172 // GESTITO DAL MOTORE #define F_TIPODOC 172 // GESTITO DAL MOTORE
#define F_DESNUM 173 // GESTITO DAL MOTORE #define F_DESNUM 173 // GESTITO DAL MOTORE
#define F_TIPIDOCS 174 #define F_TIPIDOCS 174 // GESTITO DAL MOTORE
#define F_LBTIPORIGA 175 // GESTITO DAL MOTORE
#define F_DESTIPODOC 176 // GESTITO DAL MOTORE
#define F_DESCF 177 // GESTITO DAL MOTORE
#define DLG_ELABORA 178 // GESTITO DAL MOTORE: bottone Elabora
#define F_ATTIVAANNO 179 // GESTITO DAL MOTORE
#endif // veuml.h #endif // veuml.h