correzione prima serie di errori
git-svn-id: svn://10.65.10.50/trunk@2684 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
2994f22df3
commit
e68afa141a
22
ve/batbeld.h
22
ve/batbeld.h
@ -1,11 +1,11 @@
|
|||||||
// campi della tabella di gestione delle elaborazioni differite
|
// campi della tabella di gestione delle elaborazioni differite
|
||||||
#define F_CODICE 101
|
#define F_CODICE 101
|
||||||
#define F_DESCR 102
|
#define F_DESCR 102
|
||||||
#define F_TIPODOC 103
|
#define F_TIPODOC 103
|
||||||
#define F_STATO_I_DOC_I 104
|
#define F_STATO_I_DOC_I 104
|
||||||
#define F_STATO_F_DOC_I 106
|
#define F_STATO_F_DOC_I 106
|
||||||
#define F_TIPODOCDES 105
|
#define F_TIPODOCDES 105
|
||||||
#define F_STATO_F_DOC_F 107
|
#define F_STATO_F_DOC_F 107
|
||||||
#define F_PROGRAMMA 108
|
#define F_PROGRAMMA 108
|
||||||
#define F_CODNUM 109
|
#define F_CODNUM 109
|
||||||
#define F_AVVIA 110 // button per lanciare l'elaborazione selezionata
|
#define F_AVVIA 110 // button per lanciare l'elaborazione selezionata
|
||||||
|
244
ve/batbeld.uml
244
ve/batbeld.uml
@ -1,122 +1,122 @@
|
|||||||
#include "batbeld.h"
|
#include "batbeld.h"
|
||||||
|
|
||||||
TOOLBAR "" 0 20 0 2
|
TOOLBAR "" 0 20 0 2
|
||||||
#include <toolbar.h>
|
#include <toolbar.h>
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Tabella elaborazioni differite" 0 0 0 0
|
PAGE "Tabella elaborazioni differite" 0 0 0 0
|
||||||
|
|
||||||
STRING F_CODICE 8 // campo della maschera: stringa, id = F_CODICE, 8 caratteri
|
STRING F_CODICE 8 // campo della maschera: stringa, id = F_CODICE, 8 caratteri
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 2 "Codice " // scrivi nella maschera alle coord. (x,y) = (1,2) il prompt "Codice"
|
PROMPT 1 2 "Codice " // scrivi nella maschera alle coord. (x,y) = (1,2) il prompt "Codice"
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
FIELD CODTAB // campo del database tabelle (tab) in cui salvare il valore immesso dall'utente
|
FIELD CODTAB // campo del database tabelle (tab) in cui salvare il valore immesso dall'utente
|
||||||
CHECKTYPE REQUIRED // indica che il campo deve essere compilato per poter salvare
|
CHECKTYPE REQUIRED // indica che il campo deve essere compilato per poter salvare
|
||||||
WARNING "E' necessario specificare un valore"
|
WARNING "E' necessario specificare un valore"
|
||||||
USE ELD // indica quale tabella utilizzare per le ricerche
|
USE ELD // indica quale tabella utilizzare per le ricerche
|
||||||
INPUT CODTAB F_CODICE // cerca nel dbase la prima occorrenza di F_CODICE cercando nel campo CODTAB
|
INPUT CODTAB F_CODICE // cerca nel dbase la prima occorrenza di F_CODICE cercando nel campo CODTAB
|
||||||
DISPLAY "Codice@10" CODTAB // visualizza i codici trovati (CODTAB)
|
DISPLAY "Codice@10" CODTAB // visualizza i codici trovati (CODTAB)
|
||||||
DISPLAY "Descrizione@50" S0 // visualizza la descrizione (campo S0 in uno spazio di 50 caratteri)
|
DISPLAY "Descrizione@50" S0 // visualizza la descrizione (campo S0 in uno spazio di 50 caratteri)
|
||||||
OUTPUT F_CODICE CODTAB // metti F_CODICE nel campo codtab
|
OUTPUT F_CODICE CODTAB // metti F_CODICE nel campo codtab
|
||||||
OUTPUT F_DESCR S0 // metti F_DESCR nel campo S0
|
OUTPUT F_DESCR S0 // metti F_DESCR nel campo S0
|
||||||
KEY 1
|
KEY 1
|
||||||
HELP "Codice dell'elaborazione differita da eseguire"
|
HELP "Codice dell'elaborazione differita da eseguire"
|
||||||
MESSAGE ENABLE, F_PROGRAMMA
|
MESSAGE ENABLE, F_PROGRAMMA
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_DESCR 50
|
STRING F_DESCR 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 3 "Descrizione "
|
PROMPT 1 3 "Descrizione "
|
||||||
FIELD S0
|
FIELD S0
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
WARNING "E' necessario specificare un valore"
|
WARNING "E' necessario specificare un valore"
|
||||||
USE ELD KEY 2
|
USE ELD KEY 2
|
||||||
INPUT S0 F_DESCR
|
INPUT S0 F_DESCR
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
COPY OUTPUT F_CODICE // usa il segmento di codice per OUTPUT F_CODICE
|
COPY OUTPUT F_CODICE // usa il segmento di codice per OUTPUT F_CODICE
|
||||||
KEY 2
|
KEY 2
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_TIPODOC 4
|
STRING F_TIPODOC 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Tipo documento originale "
|
PROMPT 1 4 "Tipo documento originale "
|
||||||
FIELD S6 // usa il campo S6 del database tab
|
FIELD S6 // usa il campo S6 del database tab
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
WARNING "E' necessario specificare un valore"
|
WARNING "E' necessario specificare un valore"
|
||||||
USE %TIP
|
USE %TIP
|
||||||
INPUT CODTAB F_TIPODOC
|
INPUT CODTAB F_TIPODOC
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
DISPLAY "Tipo documento@50" S0
|
DISPLAY "Tipo documento@50" S0
|
||||||
OUTPUT F_TIPODOC CODTAB
|
OUTPUT F_TIPODOC CODTAB
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
// STRING F_STATO_I_DOC_I 1
|
// STRING F_STATO_I_DOC_I 1
|
||||||
// BEGIN
|
// BEGIN
|
||||||
// PROMPT 1 5 "Stato del documento originale "
|
// PROMPT 1 5 "Stato del documento originale "
|
||||||
// FIELD S7
|
// FIELD S7
|
||||||
// CHECKTYPE REQUIRED
|
// CHECKTYPE REQUIRED
|
||||||
// WARNING "E' necessario specificare un valore"
|
// WARNING "E' necessario specificare un valore"
|
||||||
// END
|
// END
|
||||||
|
|
||||||
// STRING F_STATO_F_DOC_I 1
|
// STRING F_STATO_F_DOC_I 1
|
||||||
// BEGIN
|
// BEGIN
|
||||||
// PROMPT 1 6 "Stato finale del documento originale "
|
// PROMPT 1 6 "Stato finale del documento originale "
|
||||||
// FIELD S4
|
// FIELD S4
|
||||||
// CHECKTYPE REQUIRED
|
// CHECKTYPE REQUIRED
|
||||||
// WARNING "E' necessario specificare un valore"
|
// WARNING "E' necessario specificare un valore"
|
||||||
// END
|
// END
|
||||||
|
|
||||||
STRING F_TIPODOCDES 4
|
STRING F_TIPODOCDES 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 7 "Tipo documento di destinazione "
|
PROMPT 1 7 "Tipo documento di destinazione "
|
||||||
FIELD S8
|
FIELD S8
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
WARNING "E' necessario specificare un valore"
|
WARNING "E' necessario specificare un valore"
|
||||||
USE %TIP
|
USE %TIP
|
||||||
INPUT CODTAB F_TIPODOCDES
|
INPUT CODTAB F_TIPODOCDES
|
||||||
COPY DISPLAY F_TIPODOC
|
COPY DISPLAY F_TIPODOC
|
||||||
OUTPUT F_TIPODOCDES CODTAB
|
OUTPUT F_TIPODOCDES CODTAB
|
||||||
END
|
END
|
||||||
|
|
||||||
// STRING F_STATO_F_DOC_F 1
|
// STRING F_STATO_F_DOC_F 1
|
||||||
// BEGIN
|
// BEGIN
|
||||||
// PROMPT 1 8 "Stato finale del documento finale "
|
// PROMPT 1 8 "Stato finale del documento finale "
|
||||||
// FIELD S9
|
// FIELD S9
|
||||||
// CHECKTYPE REQUIRED
|
// CHECKTYPE REQUIRED
|
||||||
// WARNING "E' necessario specificare un valore"
|
// WARNING "E' necessario specificare un valore"
|
||||||
// END
|
// END
|
||||||
|
|
||||||
STRING F_CODNUM 4
|
STRING F_CODNUM 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 9 "Codice numerazione per il documento di destinazione: "
|
PROMPT 1 9 "Codice numerazione per il documento di destinazione: "
|
||||||
FIELD S5
|
FIELD S5
|
||||||
USE NUM
|
USE NUM
|
||||||
INPUT CODTAB F_CODNUM
|
INPUT CODTAB F_CODNUM
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_CODNUM CODTAB
|
OUTPUT F_CODNUM CODTAB
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
WARNING "E' necessario specificare un valore"
|
WARNING "E' necessario specificare un valore"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_PROGRAMMA 50
|
STRING F_PROGRAMMA 50
|
||||||
BEGIN
|
BEGIN
|
||||||
// PROMPT 1 10 "Programma (nome + parametri): "
|
// PROMPT 1 10 "Programma (nome + parametri): "
|
||||||
PROMPT 1 10 "Metodo di elaborazione "
|
PROMPT 1 10 "Metodo di elaborazione "
|
||||||
FLAGS "G"
|
FLAGS "G"
|
||||||
FIELD S1
|
FIELD S1
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON F_AVVIA 21 2
|
BUTTON F_AVVIA 21 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 11 "Lancia elaborazione"
|
PROMPT 1 11 "Lancia elaborazione"
|
||||||
MESSAGE RUN,#F_PROGRAMMA
|
MESSAGE RUN,#F_PROGRAMMA
|
||||||
FL "D"
|
FL "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
|
|
||||||
#include "batbtip.h"
|
#include "batbtip.h"
|
||||||
//#include "ve4.h"
|
|
||||||
|
|
||||||
TOOLBAR "" 0 20 60 2
|
TOOLBAR "" 0 20 60 2
|
||||||
|
|
||||||
@ -10,11 +8,11 @@ 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
|
||||||
|
@ -15,47 +15,51 @@ END
|
|||||||
STRING F_UM 2
|
STRING F_UM 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Unita' di misura "
|
PROMPT 2 2 "Unita' di misura "
|
||||||
FIELD %UM->CODTAB
|
FIELD CODTAB
|
||||||
KEY 1
|
KEY 1
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
USE %UM
|
USE %UMS
|
||||||
FLAG "U"
|
|
||||||
INPUT CODTAB F_UM
|
INPUT CODTAB F_UM
|
||||||
DISPLAY "Codice " CODTAB
|
DISPLAY "Codice " CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_UM CODTAB
|
OUTPUT F_UM CODTAB
|
||||||
OUTPUT F_DESCR S0
|
OUTPUT F_DESCR S0
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_DESCR 50
|
STRING F_DESCR 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 4 "Descrizione "
|
PROMPT 2 4 "Descrizione "
|
||||||
FIELD %UM->S0
|
FIELD S0
|
||||||
KEY 2
|
KEY 2
|
||||||
USE %UM KEY 2
|
USE %UMS KEY 2
|
||||||
INPUT S0 F_DESCR
|
INPUT S0 F_DESCR
|
||||||
DISPLAY "Codice " CODTAB
|
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_UM CODTAB
|
DISPLAY "Codice " CODTAB
|
||||||
OUTPUT F_DESCR S0
|
COPY OUTPUT F_UM
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_UMR 2
|
STRING F_UMR 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 8 "Unita' di riferimento "
|
PROMPT 2 8 "Unita' di riferimento "
|
||||||
FIELD %UM->S7
|
FIELD S7
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
|
USE %UMS
|
||||||
|
INPUT CODTAB F_UMR
|
||||||
|
COPY DISPLAY F_UM
|
||||||
|
OUTPUT F_UMR CODTAB
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
ADD NONE
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_FC 15 5
|
NUMBER F_FC 15 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 10 "Fattore conv. al rif. "
|
PROMPT 2 10 "F.Conversione al riferim. "
|
||||||
FIELD %UM->R0
|
FIELD R10
|
||||||
|
VALIDATE REQIF_FUNC 1 F_UMR
|
||||||
|
WARNING "Fattore di conversione obbligatorio se specificata l'unita' di misura di riferimento"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
@ -87,7 +87,7 @@ void TCliFor::load( const char tipocf, const long codcf, const TString& ocfpi )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TCliForVendite::update_mask( TMask_vendite& m, bool onload )
|
void TCliForVendite::update_mask( TVariable_mask& m, bool onload )
|
||||||
{
|
{
|
||||||
TString16 stato;
|
TString16 stato;
|
||||||
|
|
||||||
@ -198,7 +198,7 @@ bool TCliFor::occas_code_handler(TMask_field& f, KEY key)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TCliForVendite::imposta_dati_comune( TMask_vendite& m )
|
void TCliForVendite::imposta_dati_comune( TVariable_mask& m )
|
||||||
{
|
{
|
||||||
TLocalisamfile comuni(LF_COMUNI);
|
TLocalisamfile comuni(LF_COMUNI);
|
||||||
comuni.setkey( 1 );
|
comuni.setkey( 1 );
|
||||||
@ -217,7 +217,7 @@ void TCliForVendite::imposta_dati_comune( TMask_vendite& m )
|
|||||||
m.set( F_PROVCOM, comuni.get( "PROVCOM" ) );
|
m.set( F_PROVCOM, comuni.get( "PROVCOM" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void TCliForVendite::imposta_indirizzo_spedizione( TMask_vendite& m )
|
void TCliForVendite::imposta_indirizzo_spedizione( TVariable_mask& m )
|
||||||
{
|
{
|
||||||
TString16 stato;
|
TString16 stato;
|
||||||
if( occasionale( ) )
|
if( occasionale( ) )
|
||||||
@ -276,7 +276,7 @@ void TCliForVendite::imposta_indirizzo_spedizione( TMask_vendite& m )
|
|||||||
m.set( F_PROVCOMSP, comuni.get( "PROVCOM" ) );
|
m.set( F_PROVCOMSP, comuni.get( "PROVCOM" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void TCliForVendite::imposta_sconto_testa( TMask_vendite& m )
|
void TCliForVendite::imposta_sconto_testa( TVariable_mask& m )
|
||||||
{
|
{
|
||||||
TConfig ditta( CONFIG_DITTA );
|
TConfig ditta( CONFIG_DITTA );
|
||||||
TString16 codsconto;
|
TString16 codsconto;
|
||||||
@ -349,7 +349,7 @@ void TCliForVendite::imposta_sconto_testa( TMask_vendite& m )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TCliForVendite::imposta_valuta( TMask_vendite& m )
|
void TCliForVendite::imposta_valuta( TVariable_mask& m )
|
||||||
{
|
{
|
||||||
|
|
||||||
TConfig ditta( CONFIG_DITTA );
|
TConfig ditta( CONFIG_DITTA );
|
||||||
|
16
ve/tclifor.h
16
ve/tclifor.h
@ -14,8 +14,8 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifndef __TMASKVEN_H
|
#ifndef __VARMASK_H
|
||||||
#include "tmaskven.h"
|
#include <varmask.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class TData_picker : public TRelation
|
class TData_picker : public TRelation
|
||||||
@ -32,7 +32,7 @@ public:
|
|||||||
int get_int( const int file, const TString& fieldname );
|
int get_int( const int file, const TString& fieldname );
|
||||||
long get_long( const int file, const TString& fieldname );
|
long get_long( const int file, const TString& fieldname );
|
||||||
bool get_bool( const int file, const TString& fieldname );
|
bool get_bool( const int file, const TString& fieldname );
|
||||||
void set( TMask_vendite& m, const int mskfield, const int file, const TString& filefield ){ m.set( mskfield, get( file, filefield ) ); };
|
void set( TVariable_mask& m, const int mskfield, const int file, const TString& filefield ){ m.set( mskfield, get( file, filefield ) ); };
|
||||||
};
|
};
|
||||||
|
|
||||||
class TCliFor : public TData_picker
|
class TCliFor : public TData_picker
|
||||||
@ -65,11 +65,11 @@ class TCliForVendite : public TCliFor
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
void update_mask( TMask_vendite& m, bool onload = FALSE );
|
void update_mask( TVariable_mask& m, bool onload = FALSE );
|
||||||
void imposta_dati_comune( TMask_vendite& m );
|
void imposta_dati_comune( TVariable_mask& m );
|
||||||
void imposta_valuta( TMask_vendite& m );
|
void imposta_valuta( TVariable_mask& m );
|
||||||
void imposta_indirizzo_spedizione( TMask_vendite& m );
|
void imposta_indirizzo_spedizione( TVariable_mask& m );
|
||||||
void imposta_sconto_testa( TMask_vendite& m );
|
void imposta_sconto_testa( TVariable_mask& m );
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
int main( int argc, char** argv )
|
int main( int argc, char** argv )
|
||||||
{
|
{
|
||||||
int rt = -1;
|
int rt = -1;
|
||||||
const int r = (argc > 1) ? atoi( &argv[1][1] ) : -1;
|
const int r = (argc > 1) ? atoi( &argv[1][1] ) : 1;
|
||||||
|
|
||||||
switch (r)
|
switch (r)
|
||||||
{
|
{
|
||||||
|
@ -242,7 +242,7 @@ bool TMotore_application::val_handler( TMask_field& f, KEY key )
|
|||||||
|
|
||||||
// m.set( F_CAMBIO, "" );
|
// m.set( F_CAMBIO, "" );
|
||||||
// m.set( F_DATACAMBIO, "" );
|
// m.set( F_DATACAMBIO, "" );
|
||||||
app( ).clifo( ).imposta_valuta( ( TMask_vendite& ) m );
|
app( ).clifo( ).imposta_valuta( ( TVariable_mask& ) m );
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -361,7 +361,7 @@ bool TMotore_application::ndoc_handler( TMask_field& f, KEY key )
|
|||||||
|
|
||||||
bool TMotore_application::clifo_handler( TMask_field& f, KEY key )
|
bool TMotore_application::clifo_handler( TMask_field& f, KEY key )
|
||||||
{
|
{
|
||||||
if ( key == K_TAB && f.active( ) )
|
if ( key == K_TAB && f.active( ) )
|
||||||
{
|
{
|
||||||
TMask& m = f.mask( );
|
TMask& m = f.mask( );
|
||||||
|
|
||||||
@ -400,7 +400,7 @@ bool TMotore_application::clifo_handler( TMask_field& f, KEY key )
|
|||||||
if ( f.focusdirty( ) )
|
if ( f.focusdirty( ) )
|
||||||
{
|
{
|
||||||
app( ).clifo( ).load( cf, atol( f.get( ) ), "" );
|
app( ).clifo( ).load( cf, atol( f.get( ) ), "" );
|
||||||
app( ).clifo( ).update_mask( ( TMask_vendite& ) m );
|
app( ).clifo( ).update_mask( ( TVariable_mask& ) m );
|
||||||
if( f.mask( ).id2pos( F_OCCASEDIT ) > 0 )
|
if( f.mask( ).id2pos( F_OCCASEDIT ) > 0 )
|
||||||
{
|
{
|
||||||
if ( app( ).clifo( ).occasionale( ) && app( ).clifo( ).occas_mask( ).get( O_CODICE ).empty( ) )
|
if ( app( ).clifo( ).occasionale( ) && app( ).clifo( ).occas_mask( ).get( O_CODICE ).empty( ) )
|
||||||
@ -495,7 +495,7 @@ void TMotore_application::get_edit_mask( const char * profilo )
|
|||||||
_proname = new TFilename( fn );
|
_proname = new TFilename( fn );
|
||||||
_proname->upper( );
|
_proname->upper( );
|
||||||
if ( _msk1 ) delete _msk1;
|
if ( _msk1 ) delete _msk1;
|
||||||
_msk1 = new TMask_vendite( pro( ).get( "MSKFILE", "MAIN" ) );
|
_msk1 = new TVariable_mask( 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 );
|
||||||
@ -526,7 +526,7 @@ void TMotore_application::get_edit_mask( const char * profilo )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
listbox.replace_items( keys, descrs );
|
listbox.replace_items( keys, descrs );
|
||||||
sheet( ).set_getmask( ss_getmask );
|
((TVariable_sheet_field&)sheet()).set_getmask( ss_getmask );
|
||||||
int numhandler = pro( ).get_int( "NHANDLER", "HANDLERS" );
|
int numhandler = pro( ).get_int( "NHANDLER", "HANDLERS" );
|
||||||
for ( i = 1; i <= numhandler; i ++ )
|
for ( i = 1; i <= numhandler; i ++ )
|
||||||
{
|
{
|
||||||
@ -638,7 +638,7 @@ int TMotore_application::read( TMask& m )
|
|||||||
edit_mask( ).set( F_DESTIPODOC, query_mask( ).get( F_DESTIPODOC ) );
|
edit_mask( ).set( F_DESTIPODOC, query_mask( ).get( F_DESTIPODOC ) );
|
||||||
const char tipocf = m.get( F_TIPOCF )[ 0 ];
|
const char tipocf = m.get( F_TIPOCF )[ 0 ];
|
||||||
clifo( ).load( tipocf, m.get_int( F_CODCF ), rel( ).curr( ).get( "OCFPI" ) );
|
clifo( ).load( tipocf, m.get_int( F_CODCF ), rel( ).curr( ).get( "OCFPI" ) );
|
||||||
clifo( ).update_mask( ( TMask_vendite& ) m, TRUE );
|
clifo( ).update_mask( ( TVariable_mask& ) m, TRUE );
|
||||||
TLocalisamfile& rdoc = rel( ).lfile( LF_RIGHEDOC );
|
TLocalisamfile& rdoc = rel( ).lfile( LF_RIGHEDOC );
|
||||||
TRectype r = rdoc.curr( );
|
TRectype r = rdoc.curr( );
|
||||||
TRectype& trec = get_relation( )->curr( );
|
TRectype& trec = get_relation( )->curr( );
|
||||||
|
16
ve/ve0100.h
16
ve/ve0100.h
@ -112,12 +112,12 @@
|
|||||||
#include "ve1000o.h"
|
#include "ve1000o.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __TMASKVEN_H
|
#ifndef __VARMASK_H
|
||||||
#include "tmaskven.h"
|
#include <varmask.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __EXECP_H
|
#ifndef __EXECP_H
|
||||||
#include "execp.h"
|
#include <execp.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __SCONTI_H
|
#ifndef __SCONTI_H
|
||||||
@ -143,13 +143,13 @@ class TMotore_application : public TRelation_application
|
|||||||
TMask* _msk;
|
TMask* _msk;
|
||||||
|
|
||||||
// Puntatore alla maschera di modifica/inserimento ( dipende dal profilo )
|
// Puntatore alla maschera di modifica/inserimento ( dipende dal profilo )
|
||||||
TMask_vendite* _msk1;
|
TVariable_mask* _msk1;
|
||||||
|
|
||||||
// puntatore alla relazione
|
// puntatore alla relazione
|
||||||
TRelation* _rel;
|
TRelation* _rel;
|
||||||
|
|
||||||
// Puntatore allo sheet delle righe documento
|
// Puntatore allo sheet delle righe documento
|
||||||
TSheet_field* _sheet;
|
TSheet_field * _sheet;
|
||||||
|
|
||||||
// Oggetto cliente per il motore
|
// Oggetto cliente per il motore
|
||||||
TCliForVendite* _clifor;
|
TCliForVendite* _clifor;
|
||||||
@ -253,11 +253,11 @@ public:
|
|||||||
|
|
||||||
// Operazione
|
// Operazione
|
||||||
|
|
||||||
const char tipocf( ){ return _tipocf; }
|
const char tipocf( ) { return _tipocf; }
|
||||||
void tipocf( const char tcf ){ _tipocf = tcf; }
|
void tipocf( const char tcf ) { _tipocf = tcf; }
|
||||||
bool valida_operazione( int operazione );
|
bool valida_operazione( int operazione );
|
||||||
|
|
||||||
TSheet_field& ss( ) const { return *_sheet; }
|
TSheet_field & ss( ) const { return *_sheet; }
|
||||||
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( );
|
||||||
|
@ -3,23 +3,33 @@
|
|||||||
#include <relation.h>
|
#include <relation.h>
|
||||||
#include <tabutil.h>
|
#include <tabutil.h>
|
||||||
|
|
||||||
int numerazione_definitiva(TLocalisamfile& doc) {
|
int numerazione_definitiva(TLocalisamfile& doc)
|
||||||
|
{
|
||||||
int err= NOERR; // istanzia la variabile per il codice d'errore
|
int err= NOERR; // istanzia la variabile per il codice d'errore
|
||||||
TRectype &rec_doc= doc.curr(); // prende il record corrente dal file delle testate
|
TRectype &rec_doc= doc.curr(); // prende il record corrente dal file delle testate
|
||||||
TTable tabnum("NUM"); // istanzia la tabella delle numerazioni
|
TTable tabnum("NUM"); // istanzia la tabella delle numerazioni
|
||||||
|
|
||||||
tabnum.put("CODTAB", rec_doc.get("CODNUM")); // posiziona la tabella
|
tabnum.put("CODTAB", rec_doc.get("CODNUM")); // posiziona la tabella
|
||||||
if ((err= tabnum.read(_isequal, _lock))==NOERR) { // legge la tabella bloccandone il record
|
if ((err= tabnum.read(_isequal, _lock))==NOERR)
|
||||||
|
{ // legge la tabella bloccandone il record
|
||||||
long newndoc= tabnum.get_long("I1"); // legge il nuovo numero di documento dalla tabella
|
long newndoc= tabnum.get_long("I1"); // legge il nuovo numero di documento dalla tabella
|
||||||
|
|
||||||
tabnum.put("I1", newndoc+1); // aggiorna il nuovo numero di documento nella tabella
|
tabnum.put("I1", newndoc+1); // aggiorna il nuovo numero di documento nella tabella
|
||||||
doc.read(rec_doc, _isequal, _lock); // blocca il record corrente del file documenti
|
doc.read(rec_doc, _isequal, _lock); // blocca il record corrente del file documenti
|
||||||
|
|
||||||
TRectype newrec_doc(rec_doc); // istanzia un nuovo record su quello corrente
|
TRectype newrec_doc(rec_doc); // istanzia un nuovo record su quello corrente
|
||||||
|
|
||||||
newrec_doc.put("NDOC", newndoc); // scrive il nuovo numero di documento nel nuovo record
|
newrec_doc.put("NDOC", newndoc); // scrive il nuovo numero di documento nel nuovo record
|
||||||
newrec_doc.put("PROVV", "D"); // aggiorna il flag di tipo di numerazione
|
newrec_doc.put("PROVV", "D"); // aggiorna il flag di tipo di numerazione
|
||||||
TRecord_array arr_rdoc(LF_RIGHEDOC, "NRIGA"); // istanzia il record array per le righe
|
TRecord_array arr_rdoc(LF_RIGHEDOC, "NRIGA"); // istanzia il record array per le righe
|
||||||
if ((err= arr_rdoc.read(rec_doc))==NOERR) { // legge le righe del documento basandosi sul record con la vecchia chiave
|
if ((err= arr_rdoc.read(rec_doc))==NOERR)
|
||||||
|
{ // legge le righe del documento basandosi sul record con la vecchia chiave
|
||||||
TRecord_array newarr_rdoc(arr_rdoc); // crea una copia del record array per tenere le nuove righe
|
TRecord_array newarr_rdoc(arr_rdoc); // crea una copia del record array per tenere le nuove righe
|
||||||
for (int i=1; i<=newarr_rdoc.last_row(); i++) { // ciclo sui record delle righe
|
|
||||||
|
for (int i=1; i<=newarr_rdoc.last_row(); i++)
|
||||||
|
{ // ciclo sui record delle righe
|
||||||
TRectype &newrec_rdoc= newarr_rdoc.row(i, FALSE); // prende il record della riga corrente
|
TRectype &newrec_rdoc= newarr_rdoc.row(i, FALSE); // prende il record della riga corrente
|
||||||
|
|
||||||
newrec_rdoc.put("NDOC", newndoc); // scrive il nuovo numero di documento
|
newrec_rdoc.put("NDOC", newndoc); // scrive il nuovo numero di documento
|
||||||
newrec_rdoc.put("PROVV", "D"); // aggiorna il flag di tipo di numerazione
|
newrec_rdoc.put("PROVV", "D"); // aggiorna il flag di tipo di numerazione
|
||||||
}
|
}
|
||||||
|
254
ve/ve1100.cpp
254
ve/ve1100.cpp
@ -33,17 +33,17 @@
|
|||||||
|
|
||||||
class TDocVen_Form: public TForm {
|
class TDocVen_Form: public TForm {
|
||||||
TRelation &_firmrel; // relazione di gestione dei dati della ditta corrente
|
TRelation &_firmrel; // relazione di gestione dei dati della ditta corrente
|
||||||
TString _module; // codice del modulo di carta associato a questo al form
|
TString _module; // codice del modulo di carta associato a questo al form
|
||||||
TPiede_documento *_total_prog; // oggetto per i totalizzatori progressivi
|
TPiede_documento *_total_prog; // oggetto per i totalizzatori progressivi
|
||||||
TRiga *_riga; // oggetto per la gestione della singola riga del documento
|
TRiga *_riga; // oggetto per la gestione della singola riga del documento
|
||||||
TCliFor *_cliente; // oggetto per le informazioni sul cliente
|
TCliFor *_cliente; // oggetto per le informazioni sul cliente
|
||||||
bool _cli_loaded; // flag che indica se l'oggetto cliente è già stato caricato
|
bool _cli_loaded; // flag che indica se l'oggetto cliente è già stato caricato
|
||||||
protected:
|
protected:
|
||||||
virtual void extended_parse_general(TScanner &); // gestione dei parametri estesi nella sezione general
|
virtual void extended_parse_general(TScanner &); // gestione dei parametri estesi nella sezione general
|
||||||
virtual bool validate(TForm_item &, TToken_string &); // gestione dei messaggi estesi nei campi
|
virtual bool validate(TForm_item &, TToken_string &); // gestione dei messaggi estesi nei campi
|
||||||
virtual word set_body(word p, bool u); // derivata per la gestione del totalizzatore
|
virtual word set_body(word p, bool u); // derivata per la gestione del totalizzatore
|
||||||
public:
|
public:
|
||||||
const TString &get_module_code() { return _module; } // ritorna il codice del modulo di carta
|
const TString &get_module_code() { return _module; } // ritorna il codice del modulo di carta
|
||||||
TDocVen_Form(const char *, TRelation &);
|
TDocVen_Form(const char *, TRelation &);
|
||||||
virtual ~TDocVen_Form();
|
virtual ~TDocVen_Form();
|
||||||
};
|
};
|
||||||
@ -59,19 +59,19 @@ TDocVen_Form::TDocVen_Form(const char* name, TRelation &rel): TForm(), _firmrel(
|
|||||||
}
|
}
|
||||||
|
|
||||||
TDocVen_Form::~TDocVen_Form() {
|
TDocVen_Form::~TDocVen_Form() {
|
||||||
delete _total_prog;
|
delete _total_prog;
|
||||||
delete _riga;
|
delete _riga;
|
||||||
delete _cliente;
|
delete _cliente;
|
||||||
}
|
}
|
||||||
|
|
||||||
word TDocVen_Form::set_body(word p, bool u) {
|
word TDocVen_Form::set_body(word p, bool u) {
|
||||||
if (u) { // se si sta effettivamente generando il body viene fatto anche il calcolo del totalizzatore
|
if (u) { // se si sta effettivamente generando il body viene fatto anche il calcolo del totalizzatore
|
||||||
TLocalisamfile &rdoc= (cursor())->file(LF_RIGHEDOC);
|
TLocalisamfile &rdoc= (cursor())->file(LF_RIGHEDOC);
|
||||||
TRectype &recriga= rdoc.curr();
|
TRectype &recriga= rdoc.curr();
|
||||||
_riga->load(rdoc.curr());
|
_riga->load(rdoc.curr());
|
||||||
_riga->somma(*_total_prog);
|
_riga->somma(*_total_prog);
|
||||||
}
|
}
|
||||||
return TForm::set_body(p, u);
|
return TForm::set_body(p, u);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TDocVen_Form::extended_parse_general(TScanner &scanner) {
|
void TDocVen_Form::extended_parse_general(TScanner &scanner) {
|
||||||
@ -200,8 +200,8 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
|
|||||||
if (align== "TOP") cf.y()= fi.y();
|
if (align== "TOP") cf.y()= fi.y();
|
||||||
if (align== "MIDDLE") cf.y()= fi.y()+ fi.effective_height()/2;
|
if (align== "MIDDLE") cf.y()= fi.y()+ fi.effective_height()/2;
|
||||||
if (align== "BOTTOM") cf.y()= fi.y()+ fi.effective_height()-1;
|
if (align== "BOTTOM") cf.y()= fi.y()+ fi.effective_height()-1;
|
||||||
if (align== "LEFT") cf.x()= fi.x();
|
if (align== "LEFT") cf.set_x(fi.x());
|
||||||
if (align== "RIGHT") cf.x()= fi.x()+ fi.width();
|
if (align== "RIGHT") cf.set_x(fi.x()+ fi.width());
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
return (TRUE);
|
return (TRUE);
|
||||||
@ -289,38 +289,38 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
|
|||||||
} // fine _CIFRELETTERE
|
} // fine _CIFRELETTERE
|
||||||
|
|
||||||
if (code.left(6) == "_TOTAL") {
|
if (code.left(6) == "_TOTAL") {
|
||||||
// totalizzatori di testata/coda, riga e progressione
|
// totalizzatori di testata/coda, riga e progressione
|
||||||
// sintassi: _TOTAL_{CODA|RIGA|PROGRES},<totalizzatore>[,<campo form>]
|
// sintassi: _TOTAL_{CODA|RIGA|PROGRES},<totalizzatore>[,<campo form>]
|
||||||
// dove: <totalizzatore> è il codice del totalizzatore richiesto
|
// dove: <totalizzatore> è il codice del totalizzatore richiesto
|
||||||
// <campo form> è il campo della form che riceve il valore del totalizzatore, se non è specificato è scritto nel campo corrente
|
// <campo form> è il campo della form che riceve il valore del totalizzatore, se non è specificato è scritto nel campo corrente
|
||||||
static real zero("0.0"); // 0 sotto forma di real per i casi in cui il totalizzatore non viene trovato
|
static real zero("0.0"); // 0 sotto forma di real per i casi in cui il totalizzatore non viene trovato
|
||||||
TString tot= s.get(); // prende il codice del totalizzatore richiesto
|
TString tot= s.get(); // prende il codice del totalizzatore richiesto
|
||||||
TForm_item *fi; // puntatore al campo della form in cui scrivere il valore del totalizzatore
|
TForm_item *fi; // puntatore al campo della form in cui scrivere il valore del totalizzatore
|
||||||
if (s.items()==2) {
|
if (s.items()==2) {
|
||||||
TString c= s.get(); // prende il codice del campo della form
|
TString c= s.get(); // prende il codice del campo della form
|
||||||
if (c[0]== '#') c.ltrim(1);
|
if (c[0]== '#') c.ltrim(1);
|
||||||
fi= &(cf.find_field(c)); // prende il puntatore al campo specificato
|
fi= &(cf.find_field(c)); // prende il puntatore al campo specificato
|
||||||
} else fi= &cf; // prende il puntatore al campo corrente
|
} else fi= &cf; // prende il puntatore al campo corrente
|
||||||
if (code.mid(6) == "_CODA") {
|
if (code.mid(6) == "_CODA") {
|
||||||
TLocalisamfile &doc= (cursor())->file(LF_DOC);
|
TLocalisamfile &doc= (cursor())->file(LF_DOC);
|
||||||
TToken_string totcoda(doc.get("G1")); // prende il campo memo con i totalizzatori sotto forma di token string
|
TToken_string totcoda(doc.get("G1")); // prende il campo memo con i totalizzatori sotto forma di token string
|
||||||
int pos= totcoda.get_pos(tot); // cerca il totalizzatore richiesto, il suo valore è nel token successivo
|
int pos= totcoda.get_pos(tot); // cerca il totalizzatore richiesto, il suo valore è nel token successivo
|
||||||
if (pos>=0) fi->set(totcoda.get(pos+1)); // setta il campo della form
|
if (pos>=0) fi->set(totcoda.get(pos+1)); // setta il campo della form
|
||||||
else fi->set(zero.string());
|
else fi->set(zero.string());
|
||||||
}
|
}
|
||||||
if (code.mid(6) == "_RIGA") {
|
if (code.mid(6) == "_RIGA") {
|
||||||
TLocalisamfile &rdoc= (cursor())->file(LF_RIGHEDOC);
|
TLocalisamfile &rdoc= (cursor())->file(LF_RIGHEDOC);
|
||||||
TToken_string totriga(rdoc.get("G1")); // prende il campo memo con i totalizzatori sotto forma di token string
|
TToken_string totriga(rdoc.get("G1")); // prende il campo memo con i totalizzatori sotto forma di token string
|
||||||
int pos= totriga.get_pos(tot); // cerca il totalizzatore richiesto, il suo valore è nel token successivo
|
int pos= totriga.get_pos(tot); // cerca il totalizzatore richiesto, il suo valore è nel token successivo
|
||||||
if (pos>=0) fi->set(totriga.get(pos+1)); // setta il campo della form
|
if (pos>=0) fi->set(totriga.get(pos+1)); // setta il campo della form
|
||||||
else fi->set(zero.string());
|
else fi->set(zero.string());
|
||||||
}
|
}
|
||||||
if (code.mid(6) == "_PROGRES") {
|
if (code.mid(6) == "_PROGRES") {
|
||||||
TString16 tot16(tot);
|
TString16 tot16(tot);
|
||||||
fi->set(_total_prog->get(tot16).string());
|
fi->set(_total_prog->get(tot16).string());
|
||||||
}
|
}
|
||||||
return (TRUE);
|
return (TRUE);
|
||||||
} // fine _TOTAL_xxx
|
} // fine _TOTAL_xxx
|
||||||
|
|
||||||
if (code== "_CLIENTE") {
|
if (code== "_CLIENTE") {
|
||||||
// lettura dei dati del cliente
|
// lettura dei dati del cliente
|
||||||
@ -348,14 +348,14 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
|
|||||||
// + CFVEN (17) Clienti/fornitori per vendite
|
// + CFVEN (17) Clienti/fornitori per vendite
|
||||||
// + %COMUNI (113@) Comune di residenza
|
// + %COMUNI (113@) Comune di residenza
|
||||||
// + %COMUNI (213@) Comune di nascita
|
// + %COMUNI (213@) Comune di nascita
|
||||||
TLocalisamfile &doc= (cursor())->file(LF_DOC);
|
TLocalisamfile &doc= (cursor())->file(LF_DOC);
|
||||||
TString16 tipocf= doc.get("TIPOCF"), codcf= doc.get("CODCF"), ocfpi= doc.get("OCFPI");
|
TString16 tipocf= doc.get("TIPOCF"), codcf= doc.get("CODCF"), ocfpi= doc.get("OCFPI");
|
||||||
if (!_cli_loaded ) { // il cliente è sulla testata del documento di vendita, quindi può essere caricato una volta sola per tutte
|
if (!_cli_loaded ) { // il cliente è sulla testata del documento di vendita, quindi può essere caricato una volta sola per tutte
|
||||||
_cliente->load(tipocf[0], atol(codcf), ocfpi);
|
_cliente->load(tipocf[0], atol(codcf), ocfpi);
|
||||||
_cliente->add(LF_COMUNI, "COM=STATOCF+COMCF", 1, LF_CLIFO, 100+LF_COMUNI);
|
_cliente->add(LF_COMUNI, "COM=STATOCF+COMCF", 1, LF_CLIFO, 100+LF_COMUNI);
|
||||||
_cliente->add(LF_COMUNI, "COM=STATONASC+COMNASC", 1, LF_CLIFO, 200+LF_COMUNI);
|
_cliente->add(LF_COMUNI, "COM=STATONASC+COMNASC", 1, LF_CLIFO, 200+LF_COMUNI);
|
||||||
_cli_loaded= TRUE;
|
_cli_loaded= TRUE;
|
||||||
}
|
}
|
||||||
TString in(s.get()); // prende la macro o il fieldref
|
TString in(s.get()); // prende la macro o il fieldref
|
||||||
if (in[0]=='!') {
|
if (in[0]=='!') {
|
||||||
in.ltrim(1);
|
in.ltrim(1);
|
||||||
@ -366,7 +366,7 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
|
|||||||
if (in=="CAP") cf.set(_cliente->get(LF_CLIFO, "CAPCF"));
|
if (in=="CAP") cf.set(_cliente->get(LF_CLIFO, "CAPCF"));
|
||||||
if (in=="COM") cf.set(_cliente->get(-(100+LF_COMUNI), "DENCOM"));
|
if (in=="COM") cf.set(_cliente->get(-(100+LF_COMUNI), "DENCOM"));
|
||||||
if (in=="PROV") cf.set(_cliente->get(-(100+LF_COMUNI), "PROVCOM"));
|
if (in=="PROV") cf.set(_cliente->get(-(100+LF_COMUNI), "PROVCOM"));
|
||||||
if (in=="IVA") cf.set(_cliente->get(LF_CLIFO, "PAIV"));
|
if (in=="IVA") cf.set(_cliente->get(LF_CLIFO, "PAIV"));
|
||||||
if (in=="CF") cf.set(_cliente->get(LF_CLIFO, "COFI"));
|
if (in=="CF") cf.set(_cliente->get(LF_CLIFO, "COFI"));
|
||||||
if (in=="PERS") cf.set(_cliente->get(LF_CLIFO, "TIPOPERS"));
|
if (in=="PERS") cf.set(_cliente->get(LF_CLIFO, "TIPOPERS"));
|
||||||
if (in=="DATANAS") cf.set(_cliente->get(LF_CLIFO, "DATANASC"));
|
if (in=="DATANAS") cf.set(_cliente->get(LF_CLIFO, "DATANASC"));
|
||||||
@ -399,55 +399,55 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
|
|||||||
} // fine _CLIENTE
|
} // fine _CLIENTE
|
||||||
|
|
||||||
if (code== "_RIEPILOGOIVA") {
|
if (code== "_RIEPILOGOIVA") {
|
||||||
// tabella riepilogo aliquote iva e relative imposte
|
// tabella riepilogo aliquote iva e relative imposte
|
||||||
// sintassi: _RIEPILOGOIVA,<macro>
|
// sintassi: _RIEPILOGOIVA,<macro>
|
||||||
// dove: <macro> è uno dei seguenti:
|
// dove: <macro> è uno dei seguenti:
|
||||||
// !IMPONIB colonna degli imponibili
|
// !IMPONIB colonna degli imponibili
|
||||||
// !ALIQ colonna delle aliquote
|
// !ALIQ colonna delle aliquote
|
||||||
// !IMPOSTE colonna delle imposte
|
// !IMPOSTE colonna delle imposte
|
||||||
// !DESCR colonna delle descrizioni
|
// !DESCR colonna delle descrizioni
|
||||||
TString in= s.get(); // prende l'indicatore della colonna da creare
|
TString in= s.get(); // prende l'indicatore della colonna da creare
|
||||||
TLocalisamfile &doc= (cursor())->file(LF_DOC);
|
TLocalisamfile &doc= (cursor())->file(LF_DOC);
|
||||||
TToken_string totaliz(doc.get("G1")); // prende il campo memo con i totalizzatori sotto forma di token string
|
TToken_string totaliz(doc.get("G1")); // prende il campo memo con i totalizzatori sotto forma di token string
|
||||||
if (in[0]=='!') {
|
if (in[0]=='!') {
|
||||||
in.ltrim(1);
|
in.ltrim(1);
|
||||||
int w= cf.width(), num= totaliz.items();
|
int w= cf.width(), num= totaliz.items();
|
||||||
TString out, curr, tot;
|
TString out, curr, tot;
|
||||||
for (int i=0; i<num; i+=2) { // ciclo sui totalizzatori presenti
|
for (int i=0; i<num; i+=2) { // ciclo sui totalizzatori presenti
|
||||||
if (i==0) tot= totaliz.get(0); // prende il codice del totalizzatore corrente
|
if (i==0) tot= totaliz.get(0); // prende il codice del totalizzatore corrente
|
||||||
else tot= totaliz.get();
|
else tot= totaliz.get();
|
||||||
curr= totaliz.get(); // prende il valore del totalizzatore corrente
|
curr= totaliz.get(); // prende il valore del totalizzatore corrente
|
||||||
if (in=="IMPONIB") {
|
if (in=="IMPONIB") {
|
||||||
if (tot.match("IVAI_????")) curr.right_just(w);
|
if (tot.match("IVAI_????")) curr.right_just(w);
|
||||||
}
|
}
|
||||||
if (in=="IMPOSTE") {
|
if (in=="IMPOSTE") {
|
||||||
if (tot.match("IVAV_????")) curr.right_just(w);
|
if (tot.match("IVAV_????")) curr.right_just(w);
|
||||||
}
|
}
|
||||||
if ((in=="ALIQ") || (in=="DESCR")) {
|
if ((in=="ALIQ") || (in=="DESCR")) {
|
||||||
if (tot.match("IVAI_????")) {
|
if (tot.match("IVAI_????")) {
|
||||||
TString code= tot.mid(5); // prende il codice dell'aliquota per la tabella iva
|
TString code= tot.mid(5); // prende il codice dell'aliquota per la tabella iva
|
||||||
TTable iva("%IVA"); // inizializza la tabella, imposta il codice e tenta una lettura
|
TTable iva("%IVA"); // inizializza la tabella, imposta il codice e tenta una lettura
|
||||||
iva.put("CODTAB", code);
|
iva.put("CODTAB", code);
|
||||||
if (iva.read()==NOERR) {
|
if (iva.read()==NOERR) {
|
||||||
if (in=="ALIQ") {
|
if (in=="ALIQ") {
|
||||||
curr= iva.get("R0"); // legge l'aliquota
|
curr= iva.get("R0"); // legge l'aliquota
|
||||||
curr.right_just(w);
|
curr.right_just(w);
|
||||||
}
|
}
|
||||||
if (in=="DESCR") {
|
if (in=="DESCR") {
|
||||||
if (iva.get("S1").not_empty()) { // il tipo di aliquota è diverso da "regime iva normale" ?
|
if (iva.get("S1").not_empty()) { // il tipo di aliquota è diverso da "regime iva normale" ?
|
||||||
curr= iva.get("S0"); // legge la descrizione
|
curr= iva.get("S0"); // legge la descrizione
|
||||||
curr.left_just(w);
|
curr.left_just(w);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else curr.spaces(w);
|
} else curr.spaces(w);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (out.not_empty()) out << "|"; // aggiunge il separatore di riga per le paragraph string preformattate
|
if (out.not_empty()) out << "|"; // aggiunge il separatore di riga per le paragraph string preformattate
|
||||||
out << curr; // aggiunge la riga corrente alla colonna
|
out << curr; // aggiunge la riga corrente alla colonna
|
||||||
}
|
}
|
||||||
cf.set(out); // scrive la colonna nel campo corrente
|
cf.set(out); // scrive la colonna nel campo corrente
|
||||||
}
|
}
|
||||||
return (TRUE);
|
return (TRUE);
|
||||||
} // fine _RIEPILOGOIVA
|
} // fine _RIEPILOGOIVA
|
||||||
|
|
||||||
return TForm::validate(cf, s); // se il codice del messaggio non è identificato viene passato alla funzione standard
|
return TForm::validate(cf, s); // se il codice del messaggio non è identificato viene passato alla funzione standard
|
||||||
@ -500,7 +500,7 @@ bool TStampa_Doc_Vendita::create() {
|
|||||||
_provv= argv(4); // il terzo è il flag di numerazione provvisoria
|
_provv= argv(4); // il terzo è il flag di numerazione provvisoria
|
||||||
_dalnum= atol(argv(5)); // il quarto è il numero di documento di partenza
|
_dalnum= atol(argv(5)); // il quarto è il numero di documento di partenza
|
||||||
_alnum= atol(argv(6)); // il quinto è il numero di documento di fine
|
_alnum= atol(argv(6)); // il quinto è il numero di documento di fine
|
||||||
_definitiva= (strcmp(argv(7), "D")==0); // il sesto è se la stampa è definitiva (rinumerazione dei documenti)
|
_definitiva= (strcmp(argv(7), "D")==0); // il sesto è se la stampa è definitiva (rinumerazione dei documenti)
|
||||||
_interattivo= FALSE;
|
_interattivo= FALSE;
|
||||||
print();
|
print();
|
||||||
} else { // oppure lancio della maschera
|
} else { // oppure lancio della maschera
|
||||||
@ -608,24 +608,24 @@ void TStampa_Doc_Vendita::print() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
behaviour TStampa_Doc_Vendita::on_module_change(const TString &modulo, TString &modulo_prec) {
|
behaviour TStampa_Doc_Vendita::on_module_change(const TString &modulo, TString &modulo_prec) {
|
||||||
if (!_interattivo) return skip; // se siamo in interattivo il documento viene saltato...
|
if (!_interattivo) return skip; // se siamo in interattivo il documento viene saltato...
|
||||||
else { // ...altrimenti viene chiesto all'utente il da farsi
|
else { // ...altrimenti viene chiesto all'utente il da farsi
|
||||||
int risp= yesnocancel_box("Il modulo di carta è cambiato: inserisci il modulo '%s' e premi 'Sì' per continuare, 'No' per saltare il documento o 'Cancel' per interrompere la stampa", modulo);
|
int risp= yesnocancel_box("Il modulo di carta è cambiato: inserisci il modulo '%s' e premi 'Sì' per continuare, 'No' per saltare il documento o 'Cancel' per interrompere la stampa", modulo);
|
||||||
behaviour ret;
|
behaviour ret;
|
||||||
switch (risp) {
|
switch (risp) {
|
||||||
case K_YES:
|
case K_YES:
|
||||||
modulo_prec= modulo; // aggiorna l'inseguitore dei moduli
|
modulo_prec= modulo; // aggiorna l'inseguitore dei moduli
|
||||||
ret= go; // la stampa può continuare
|
ret= go; // la stampa può continuare
|
||||||
break;
|
break;
|
||||||
case K_NO:
|
case K_NO:
|
||||||
ret= skip; // il documento viene saltato
|
ret= skip; // il documento viene saltato
|
||||||
break;
|
break;
|
||||||
case K_ESC:
|
case K_ESC:
|
||||||
ret= cancel; // la stampa viene interrotta
|
ret= cancel; // la stampa viene interrotta
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TStampa_Doc_Vendita::query_final_print() {
|
bool TStampa_Doc_Vendita::query_final_print() {
|
||||||
|
78
ve/ve2200x.h
78
ve/ve2200x.h
@ -1,39 +1,39 @@
|
|||||||
|
|
||||||
// campi comuni a tutti gli archivi
|
// campi comuni a tutti gli archivi
|
||||||
#define F_TIPO 111
|
#define F_TIPO 111
|
||||||
#define F_COD 112
|
#define F_COD 112
|
||||||
#define F_DESCR 113
|
#define F_DESCR 113
|
||||||
#define F_CODVAL 114
|
#define F_CODVAL 114
|
||||||
#define F_CAMBIO 115
|
#define F_CAMBIO 115
|
||||||
#define F_DATACAM 116
|
#define F_DATACAM 116
|
||||||
#define F_VALIN 117
|
#define F_VALIN 117
|
||||||
#define F_VALFIN 118
|
#define F_VALFIN 118
|
||||||
#define F_IMPLORDI 119
|
#define F_IMPLORDI 119
|
||||||
#define F_GESTUM 120
|
#define F_GESTUM 120
|
||||||
#define F_GESTSCAGL 121
|
#define F_GESTSCAGL 121
|
||||||
#define F_GESTSCO 122
|
#define F_GESTSCO 122
|
||||||
#define F_SCONST 123
|
#define F_SCONST 123
|
||||||
#define F_SEQRIC_1 124
|
#define F_SEQRIC_1 124
|
||||||
#define F_SEQRIC_2 125
|
#define F_SEQRIC_2 125
|
||||||
#define F_SEQRIC_3 126
|
#define F_SEQRIC_3 126
|
||||||
#define F_SEQRIC_4 127
|
#define F_SEQRIC_4 127
|
||||||
|
|
||||||
// campi riservati ai listini
|
// campi riservati ai listini
|
||||||
#define F_L_CATVEN 131
|
#define F_L_CATVEN 131
|
||||||
#define F_L_COD 132
|
#define F_L_COD 132
|
||||||
#define F_L_CODSUCC 133
|
#define F_L_CODSUCC 133
|
||||||
#define F_L_DESVEN 134
|
#define F_L_DESVEN 134
|
||||||
#define F_L_DESSUCC 135
|
#define F_L_DESSUCC 135
|
||||||
|
|
||||||
// campi riservati ai contratti
|
// campi riservati ai contratti
|
||||||
#define F_C_TIPOCF 141
|
#define F_C_TIPOCF 141
|
||||||
#define F_C_CODCF 142
|
#define F_C_CODCF 142
|
||||||
#define F_C_COD 143
|
#define F_C_COD 143
|
||||||
#define F_C_OBBLIG 144
|
#define F_C_OBBLIG 144
|
||||||
#define F_C_DESCF 145
|
#define F_C_DESCF 145
|
||||||
|
|
||||||
// campi riservati alle offerte
|
// campi riservati alle offerte
|
||||||
#define F_O_COD 151
|
#define F_O_COD 151
|
||||||
|
|
||||||
// pulsante di lancio dell'edit delle righe
|
// pulsante di lancio dell'edit delle righe
|
||||||
#define BTN_RIGHE 161
|
#define BTN_RIGHE 161
|
||||||
|
621
ve/ve2200x.uml
621
ve/ve2200x.uml
@ -1,311 +1,310 @@
|
|||||||
#include <lffiles.h>
|
#include <lffiles.h>
|
||||||
#include "ve2200x.h"
|
#include "ve2200x.h"
|
||||||
|
|
||||||
TOOLBAR "" 0 20 60 2
|
TOOLBAR "" 0 20 60 2
|
||||||
#include <toolbar.h>
|
#include <toolbar.h>
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Archivio condizioni di vendita " 0 0 70 20
|
PAGE "Archivio condizioni di vendita " 0 0 70 20
|
||||||
|
|
||||||
STRING F_TIPO 1
|
STRING F_TIPO 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 100 100 ""
|
PROMPT 100 100 ""
|
||||||
FIELD LF_CONDV->TIPO
|
FIELD LF_CONDV->TIPO
|
||||||
FLAG "DUP"
|
FLAG "DUP"
|
||||||
KEY 1
|
KEY 1
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
// campo riservato ai listini
|
// campo riservato ai listini
|
||||||
STRING F_L_CATVEN 2
|
STRING F_L_CATVEN 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Cat. vendita "
|
PROMPT 2 2 "Cat. vendita "
|
||||||
FIELD LF_CONDV->CATVEN
|
FIELD LF_CONDV->CATVEN
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
KEY 1
|
KEY 1
|
||||||
USE %CVE
|
USE %CVE
|
||||||
INPUT CODTAB F_L_CATVEN
|
INPUT CODTAB F_L_CATVEN
|
||||||
DISPLAY "Cat." CODTAB
|
DISPLAY "Cat." CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_L_CATVEN CODTAB
|
OUTPUT F_L_CATVEN CODTAB
|
||||||
OUTPUT F_L_DESVEN S0
|
OUTPUT F_L_DESVEN S0
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
// campo riservato ai listini
|
// campo riservato ai listini
|
||||||
STRING F_L_DESVEN 50
|
STRING F_L_DESVEN 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 22 2 ""
|
PROMPT 22 2 ""
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
// campo riservato ai contratti
|
// campo riservato ai contratti
|
||||||
LIST F_C_TIPOCF 7
|
LIST F_C_TIPOCF 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Tipo "
|
PROMPT 2 2 "Tipo "
|
||||||
FIELD LF_CONDV->TIPOCF
|
FIELD LF_CONDV->TIPOCF
|
||||||
KEY 1
|
KEY 1
|
||||||
ITEM "C|Cliente"
|
ITEM "C|Cliente"
|
||||||
ITEM "F|Fornit."
|
ITEM "F|Fornit."
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
// campo riservato ai contratti
|
// campo riservato ai contratti
|
||||||
STRING F_C_CODCF 6
|
STRING F_C_CODCF 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 3 "Codice "
|
PROMPT 2 3 "Codice "
|
||||||
FIELD LF_CONDV->CODCF
|
FIELD LF_CONDV->CODCF
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
KEY 1
|
KEY 1
|
||||||
USE LF_CLIFO
|
USE LF_CLIFO
|
||||||
INPUT TIPOCF F_C_TIPOCF
|
INPUT TIPOCF F_C_TIPOCF
|
||||||
INPUT CODCF F_C_CODCF
|
INPUT CODCF F_C_CODCF
|
||||||
DISPLAY "C/F" TIPOCF
|
DISPLAY "C/F" TIPOCF
|
||||||
DISPLAY "Codice" CODCF
|
DISPLAY "Codice" CODCF
|
||||||
DISPLAY "Ragione sociale@50" RAGSOC
|
DISPLAY "Ragione sociale@50" RAGSOC
|
||||||
OUTPUT F_C_TIPOCF TIPOCF
|
OUTPUT F_C_TIPOCF TIPOCF
|
||||||
OUTPUT F_C_CODCF CODCF
|
OUTPUT F_C_CODCF CODCF
|
||||||
OUTPUT F_C_DESCF RAGSOC
|
OUTPUT F_C_DESCF RAGSOC
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
// campo riservato ai contratti
|
// campo riservato ai contratti
|
||||||
STRING F_C_DESCF 50
|
STRING F_C_DESCF 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 22 3 ""
|
PROMPT 22 3 ""
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
// campo riservato ai listini
|
// campo riservato ai listini
|
||||||
STRING F_L_COD 3
|
STRING F_L_COD 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 4 "Cod. listino "
|
PROMPT 2 4 "Cod. listino "
|
||||||
FIELD LF_CONDV->COD
|
FIELD LF_CONDV->COD
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
KEY 1
|
KEY 1
|
||||||
USE LF_CONDV
|
USE LF_CONDV
|
||||||
INPUT TIPO F_TIPO SELECT
|
INPUT TIPO F_TIPO SELECT
|
||||||
INPUT CATVEN F_L_CATVEN SELECT
|
INPUT CATVEN F_L_CATVEN SELECT
|
||||||
INPUT COD F_L_COD
|
INPUT COD F_L_COD
|
||||||
DISPLAY "C.V." CATVEN
|
DISPLAY "C.V." CATVEN
|
||||||
DISPLAY "Codice" COD
|
DISPLAY "Codice" COD
|
||||||
DISPLAY "Descrizione@50" DESCR
|
DISPLAY "Descrizione@50" DESCR
|
||||||
OUTPUT F_TIPO TIPO
|
OUTPUT F_TIPO TIPO
|
||||||
OUTPUT F_L_CATVEN CATVEN
|
OUTPUT F_L_CATVEN CATVEN
|
||||||
OUTPUT F_L_COD COD
|
OUTPUT F_L_COD COD
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
// campo riservato ai contratti
|
// campo riservato ai contratti
|
||||||
NUMBER F_C_COD 3
|
NUMBER F_C_COD 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 4 "Contratto N. "
|
PROMPT 2 4 "Contratto N. "
|
||||||
FIELD LF_CONDV->COD
|
FIELD LF_CONDV->COD
|
||||||
KEY 1
|
KEY 1
|
||||||
USE LF_CONDV
|
USE LF_CONDV
|
||||||
INPUT TIPO F_TIPO SELECT
|
INPUT TIPO F_TIPO SELECT
|
||||||
INPUT TIPOCF F_C_TIPOCF
|
INPUT TIPOCF F_C_TIPOCF
|
||||||
INPUT CODCF F_C_CODCF
|
INPUT CODCF F_C_CODCF
|
||||||
INPUT COD F_C_COD
|
INPUT COD F_C_COD
|
||||||
DISPLAY "C/F" TIPOCF
|
DISPLAY "C/F" TIPOCF
|
||||||
DISPLAY "Codice" CODCF
|
DISPLAY "Codice" CODCF
|
||||||
DISPLAY "Numero" COD
|
DISPLAY "Numero" COD
|
||||||
DISPLAY "Descrizione@50" DESCR
|
DISPLAY "Descrizione@50" DESCR
|
||||||
OUTPUT F_TIPO TIPO
|
OUTPUT F_TIPO TIPO
|
||||||
OUTPUT F_C_TIPOCF TIPOCF
|
OUTPUT F_C_TIPOCF TIPOCF
|
||||||
OUTPUT F_C_CODCF CODCF
|
OUTPUT F_C_CODCF CODCF
|
||||||
OUTPUT F_C_COD COD
|
OUTPUT F_C_COD COD
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
// campo riservato alle offerte
|
// campo riservato alle offerte
|
||||||
STRING F_O_COD 3
|
STRING F_O_COD 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 3 "Cod. offerta "
|
PROMPT 2 3 "Cod. offerta "
|
||||||
FIELD LF_CONDV->COD
|
FIELD LF_CONDV->COD
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
KEY 1
|
KEY 1
|
||||||
USE LF_CONDV
|
USE LF_CONDV
|
||||||
INPUT TIPO F_TIPO SELECT
|
INPUT TIPO F_TIPO SELECT
|
||||||
INPUT COD F_O_COD
|
INPUT COD F_O_COD
|
||||||
DISPLAY "Codice" COD
|
DISPLAY "Codice" COD
|
||||||
DISPLAY "Descrizione@50" DESCR
|
DISPLAY "Descrizione@50" DESCR
|
||||||
OUTPUT F_TIPO TIPO
|
OUTPUT F_TIPO TIPO
|
||||||
OUTPUT F_O_COD COD
|
OUTPUT F_O_COD COD
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 75 8
|
GROUPBOX DLG_NULL 75 8
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 0 0 ""
|
PROMPT 0 0 ""
|
||||||
FLAG "R"
|
FLAG "R"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_DESCR 50
|
STRING F_DESCR 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 5 "Descrizione "
|
PROMPT 2 5 "Descrizione "
|
||||||
FIELD LF_CONDV->DESCR
|
FIELD LF_CONDV->DESCR
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_CODVAL 5
|
STRING F_CODVAL 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 8 "Valuta "
|
PROMPT 2 8 "Valuta "
|
||||||
FIELD LF_CONDV->CODVAL
|
FIELD LF_CONDV->CODVAL
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
USE %VAL
|
USE %VAL
|
||||||
INPUT CODTAB F_CODVAL
|
INPUT CODTAB F_CODVAL
|
||||||
DISPLAY "Valuta" CODTAB
|
DISPLAY "Valuta" CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_CODVAL CODTAB
|
OUTPUT F_CODVAL CODTAB
|
||||||
MESSAGE ENABLE,F_CAMBIO|ENABLE,F_DATACAM|DISABLE,F_IMPLORDI
|
MESSAGE ENABLE,F_CAMBIO|ENABLE,F_DATACAM|DISABLE,F_IMPLORDI
|
||||||
MESSAGE EMPTY "1",F_CAMBIO|DISABLE,F_CAMBIO|CLEAR,F_DATACAM|DISABLE,F_DATACAM|ENABLE,F_IMPLORDI
|
MESSAGE EMPTY "1",F_CAMBIO|DISABLE,F_CAMBIO|CLEAR,F_DATACAM|DISABLE,F_DATACAM|ENABLE,F_IMPLORDI
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CAMBIO 15 5
|
NUMBER F_CAMBIO 15 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 21 8 "Cambio "
|
PROMPT 21 8 "Cambio "
|
||||||
FIELD LF_CONDV->CAMBIO
|
FIELD LF_CONDV->CAMBIO
|
||||||
END
|
END
|
||||||
|
|
||||||
DATA F_DATACAM
|
DATA F_DATACAM
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 49 8 "Data "
|
PROMPT 49 8 "Data "
|
||||||
FIELD LF_CONDV->DATACAM
|
FIELD LF_CONDV->DATACAM
|
||||||
END
|
END
|
||||||
|
|
||||||
DATA F_VALIN
|
DATA F_VALIN
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 10 "Inizio validita` "
|
PROMPT 2 10 "Inizio validita` "
|
||||||
FIELD LF_CONDV->VALIN
|
FIELD LF_CONDV->VALIN
|
||||||
END
|
END
|
||||||
|
|
||||||
DATA F_VALFIN
|
DATA F_VALFIN
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 39 10 "Fine validita` "
|
PROMPT 39 10 "Fine validita` "
|
||||||
FIELD LF_CONDV->VALFIN
|
FIELD LF_CONDV->VALFIN
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_IMPLORDI
|
BOOLEAN F_IMPLORDI
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 12 "Importi lordi"
|
PROMPT 2 12 "Importi lordi"
|
||||||
FIELD LF_CONDV->IMPLORDI
|
FIELD LF_CONDV->IMPLORDI
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_GESTUM
|
BOOLEAN F_GESTUM
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 34 12 "Gestione unita` di misura"
|
PROMPT 34 12 "Gestione unita` di misura"
|
||||||
FIELD LF_CONDV->GESTUM
|
FIELD LF_CONDV->GESTUM
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_GESTSCAGL
|
BOOLEAN F_GESTSCAGL
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 13 "Gestione scaglioni"
|
PROMPT 2 13 "Gestione scaglioni"
|
||||||
FIELD LF_CONDV->GESTSCAGL
|
FIELD LF_CONDV->GESTSCAGL
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_GESTSCO
|
BOOLEAN F_GESTSCO
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 34 13 "Gestione sconti/omaggi"
|
PROMPT 34 13 "Gestione sconti/omaggi"
|
||||||
FIELD LF_CONDV->GESTSCO
|
FIELD LF_CONDV->GESTSCO
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_SCONST
|
BOOLEAN F_SCONST
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 14 "Gestione sconti standard"
|
PROMPT 2 14 "Gestione sconti standard"
|
||||||
FIELD LF_CONDV->SCONST
|
FIELD LF_CONDV->SCONST
|
||||||
END
|
END
|
||||||
|
|
||||||
// campo riservato ai contratti
|
// campo riservato ai contratti
|
||||||
BOOLEAN F_C_OBBLIG
|
BOOLEAN F_C_OBBLIG
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 34 14 "Contratto obbligatorio"
|
PROMPT 34 14 "Contratto obbligatorio"
|
||||||
FIELD LF_CONDV->OBBLIG
|
FIELD LF_CONDV->OBBLIG
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_SEQRIC_1 10
|
LIST F_SEQRIC_1 10
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 15 "Sequenza ricerca "
|
PROMPT 2 15 "Sequenza ricerca "
|
||||||
FIELD LF_CONDV->SEQRIC[1,1]
|
FIELD LF_CONDV->SEQRIC[1,1]
|
||||||
ITEM "A|Articoli"
|
ITEM "A|Articoli"
|
||||||
ITEM "G|Gruppo M."
|
ITEM "G|Gruppo M."
|
||||||
ITEM "S|Sottogr.M."
|
ITEM "S|Sottogr.M."
|
||||||
ITEM "R|Ragg.fisc."
|
ITEM "R|Ragg.fisc."
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_SEQRIC_2 10
|
LIST F_SEQRIC_2 10
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 34 15 ""
|
PROMPT 34 15 ""
|
||||||
FIELD LF_CONDV->SEQRIC[2,2]
|
FIELD LF_CONDV->SEQRIC[2,2]
|
||||||
ITEM "-|Nessuno"
|
ITEM "-|Nessuno"
|
||||||
ITEM "A|Articoli"
|
ITEM "A|Articoli"
|
||||||
ITEM "G|Gruppo M."
|
ITEM "G|Gruppo M."
|
||||||
ITEM "S|Sottogr.M."
|
ITEM "S|Sottogr.M."
|
||||||
ITEM "R|Ragg.fisc."
|
ITEM "R|Ragg.fisc."
|
||||||
STR_EXPR (#THIS_FIELD=="-")||(#THIS_FIELD!=#F_SEQRIC_1)
|
STR_EXPR (#THIS_FIELD=="-")||(#THIS_FIELD!=#F_SEQRIC_1)
|
||||||
WARNING "La sequenza di ricerca deve indicare quattro tipi diversi di righe"
|
WARNING "La sequenza di ricerca deve indicare quattro tipi diversi di righe"
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_SEQRIC_3 10
|
LIST F_SEQRIC_3 10
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 49 15 ""
|
PROMPT 49 15 ""
|
||||||
FIELD LF_CONDV->SEQRIC[3,3]
|
FIELD LF_CONDV->SEQRIC[3,3]
|
||||||
ITEM "-|Nessuno"
|
ITEM "-|Nessuno"
|
||||||
ITEM "A|Articoli"
|
ITEM "A|Articoli"
|
||||||
ITEM "G|Gruppo M."
|
ITEM "G|Gruppo M."
|
||||||
ITEM "S|Sottogr.M."
|
ITEM "S|Sottogr.M."
|
||||||
ITEM "R|Ragg.fisc."
|
ITEM "R|Ragg.fisc."
|
||||||
STR_EXPR (#THIS_FIELD=="-")||((#THIS_FIELD!=#F_SEQRIC_1)&&(#THIS_FIELD!=#F_SEQRIC_2))
|
STR_EXPR (#THIS_FIELD=="-")||((#THIS_FIELD!=#F_SEQRIC_1)&&(#THIS_FIELD!=#F_SEQRIC_2))
|
||||||
WARNING "La sequenza di ricerca deve indicare quattro tipi diversi di righe"
|
WARNING "La sequenza di ricerca deve indicare quattro tipi diversi di righe"
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_SEQRIC_4 10
|
LIST F_SEQRIC_4 10
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 64 15 ""
|
PROMPT 64 15 ""
|
||||||
FIELD LF_CONDV->SEQRIC[4,4]
|
FIELD LF_CONDV->SEQRIC[4,4]
|
||||||
ITEM "-|Nessuno"
|
ITEM "-|Nessuno"
|
||||||
ITEM "A|Articoli"
|
ITEM "A|Articoli"
|
||||||
ITEM "G|Gruppo M."
|
ITEM "G|Gruppo M."
|
||||||
ITEM "S|Sottogr.M."
|
ITEM "S|Sottogr.M."
|
||||||
ITEM "R|Ragg.fisc."
|
ITEM "R|Ragg.fisc."
|
||||||
STR_EXPR (#THIS_FIELD=="-")||((#THIS_FIELD!=#F_SEQRIC_1)&&(#THIS_FIELD!=#F_SEQRIC_2)&&(#THIS_FIELD!=#F_SEQRIC_3))
|
STR_EXPR (#THIS_FIELD=="-")||((#THIS_FIELD!=#F_SEQRIC_1)&&(#THIS_FIELD!=#F_SEQRIC_2)&&(#THIS_FIELD!=#F_SEQRIC_3))
|
||||||
WARNING "La sequenza di ricerca deve indicare quattro tipi diversi di righe"
|
WARNING "La sequenza di ricerca deve indicare quattro tipi diversi di righe"
|
||||||
END
|
END
|
||||||
|
|
||||||
// campo riservato ai listini
|
// campo riservato ai listini
|
||||||
STRING F_L_CODSUCC 3
|
STRING F_L_CODSUCC 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 16 "Listino succ. "
|
PROMPT 2 16 "Listino succ. "
|
||||||
FIELD LF_CONDV->CODLISSUCC
|
FIELD LF_CONDV->CODLISSUCC
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
USE LF_CONDV
|
USE LF_CONDV
|
||||||
INPUT TIPO F_TIPO SELECT
|
INPUT TIPO F_TIPO SELECT
|
||||||
INPUT CATVEN F_L_CATVEN SELECT
|
INPUT CATVEN F_L_CATVEN SELECT
|
||||||
//INPUT TIPOCF F_C_TIPOCF SELECT
|
//INPUT TIPOCF F_C_TIPOCF SELECT
|
||||||
//INPUT CODCF F_C_CODCF SELECT
|
//INPUT CODCF F_C_CODCF SELECT
|
||||||
INPUT COD F_L_CODSUCC
|
INPUT COD F_L_CODSUCC
|
||||||
DISPLAY "C.V." CATVEN
|
DISPLAY "C.V." CATVEN
|
||||||
DISPLAY "Codice" COD
|
DISPLAY "Codice" COD
|
||||||
DISPLAY "Descrizione@50" DESCR
|
DISPLAY "Descrizione@50" DESCR
|
||||||
OUTPUT F_L_CODSUCC COD
|
OUTPUT F_L_CODSUCC COD
|
||||||
OUTPUT F_L_DESSUCC DESCR
|
OUTPUT F_L_DESSUCC DESCR
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
|
|
||||||
// campo riservato ai listini
|
// campo riservato ai listini
|
||||||
STRING F_L_DESSUCC 50
|
STRING F_L_DESSUCC 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 24 16 ""
|
PROMPT 24 16 ""
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
// bottone di lancio dell'applicazione delle righe
|
// bottone di lancio dell'applicazione delle righe
|
||||||
BUTTON BTN_RIGHE 63 1
|
BUTTON BTN_RIGHE 63 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 0 -1 "Righe di questa testata"
|
PROMPT 0 -1 "Righe di questa testata"
|
||||||
MESSAGE K_F5
|
MESSAGE K_F5
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
90
ve/ve2300x.h
90
ve/ve2300x.h
@ -1,45 +1,45 @@
|
|||||||
// campi comuni a tutti gli archivi
|
// campi comuni a tutti gli archivi
|
||||||
#define F_R_TIPO 111
|
#define F_R_TIPO 111
|
||||||
#define F_R_TIPORIGA 112
|
#define F_R_TIPORIGA 112
|
||||||
#define F_R_CODRIGA_A 113
|
#define F_R_CODRIGA_A 113
|
||||||
#define F_R_DESRIGA_A 114
|
#define F_R_DESRIGA_A 114
|
||||||
#define F_R_CODRIGA_G 115
|
#define F_R_CODRIGA_G 115
|
||||||
#define F_R_DESRIGA_G 116
|
#define F_R_DESRIGA_G 116
|
||||||
#define F_R_CODRIGA_R 117
|
#define F_R_CODRIGA_R 117
|
||||||
#define F_R_DESRIGA_R 118
|
#define F_R_DESRIGA_R 118
|
||||||
#define F_R_CODRIGA_S 119
|
#define F_R_CODRIGA_S 119
|
||||||
#define F_R_DESRIGA_S 120
|
#define F_R_DESRIGA_S 120
|
||||||
#define F_R_UM 121
|
#define F_R_UM 121
|
||||||
#define F_R_NSCAGL 122
|
#define F_R_NSCAGL 122
|
||||||
#define F_R_QLIM 123
|
#define F_R_QLIM 123
|
||||||
#define F_R_PREZZO 124
|
#define F_R_PREZZO 124
|
||||||
#define F_R_SCONTO 125
|
#define F_R_SCONTO 125
|
||||||
#define F_R_ADDIVA 126
|
#define F_R_ADDIVA 126
|
||||||
#define F_R_CODIVA 127
|
#define F_R_CODIVA 127
|
||||||
#define F_R_PERCPROVV 128
|
#define F_R_PERCPROVV 128
|
||||||
#define F_R_QOM 129
|
#define F_R_QOM 129
|
||||||
#define F_R_QBASE 130
|
#define F_R_QBASE 130
|
||||||
#define F_R_CODARTOM 131
|
#define F_R_CODARTOM 131
|
||||||
#define F_R_PROMAGGIO 132
|
#define F_R_PROMAGGIO 132
|
||||||
#define F_R_UMOM 133
|
#define F_R_UMOM 133
|
||||||
|
|
||||||
// campi riservati ai listini
|
// campi riservati ai listini
|
||||||
#define F_R_L_CATVEN 141
|
#define F_R_L_CATVEN 141
|
||||||
#define F_R_L_COD 142
|
#define F_R_L_COD 142
|
||||||
#define F_R_L_RICERCA 143
|
#define F_R_L_RICERCA 143
|
||||||
#define F_R_L_DESVEN 144
|
#define F_R_L_DESVEN 144
|
||||||
#define F_R_L_DES 145
|
#define F_R_L_DES 145
|
||||||
|
|
||||||
// campi riservati ai contratti
|
// campi riservati ai contratti
|
||||||
#define F_R_C_TIPOCF 151
|
#define F_R_C_TIPOCF 151
|
||||||
#define F_R_C_CODCF 152
|
#define F_R_C_CODCF 152
|
||||||
#define F_R_C_COD 153
|
#define F_R_C_COD 153
|
||||||
#define F_R_C_RICERCA 154
|
#define F_R_C_RICERCA 154
|
||||||
#define F_R_C_DESCF 155
|
#define F_R_C_DESCF 155
|
||||||
#define F_R_C_DES 156
|
#define F_R_C_DES 156
|
||||||
|
|
||||||
// campi riservati alle offerte
|
// campi riservati alle offerte
|
||||||
#define F_R_O_COD 161
|
#define F_R_O_COD 161
|
||||||
#define F_R_O_RICERCA 162
|
#define F_R_O_RICERCA 162
|
||||||
#define F_R_O_ARTES 163
|
#define F_R_O_ARTES 163
|
||||||
#define F_R_O_DES 164
|
#define F_R_O_DES 164
|
||||||
|
924
ve/ve2300x.uml
924
ve/ve2300x.uml
@ -1,462 +1,462 @@
|
|||||||
#include <lffiles.h>
|
#include <lffiles.h>
|
||||||
#include "ve2300x.h"
|
#include "ve2300x.h"
|
||||||
|
|
||||||
TOOLBAR "" 0 20 60 2
|
TOOLBAR "" 0 20 60 2
|
||||||
#include <toolbar.h>
|
#include <toolbar.h>
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Archivio righe condiz. di vendita " 0 0 70 20
|
PAGE "Archivio righe condiz. di vendita " 0 0 70 20
|
||||||
|
|
||||||
STRING F_R_TIPO 1
|
STRING F_R_TIPO 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 100 100 ""
|
PROMPT 100 100 ""
|
||||||
FIELD LF_RCONDV->TIPO
|
FIELD LF_RCONDV->TIPO
|
||||||
FLAG "DUP"
|
FLAG "DUP"
|
||||||
KEY 1
|
KEY 1
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_L_CATVEN 2 // campo riservato ai listini
|
STRING F_R_L_CATVEN 2 // campo riservato ai listini
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Cat. vendita "
|
PROMPT 2 2 "Cat. vendita "
|
||||||
FIELD LF_RCONDV->CATVEN
|
FIELD LF_RCONDV->CATVEN
|
||||||
FLAG "UP"
|
FLAG "UP"
|
||||||
KEY 1
|
KEY 1
|
||||||
USE %CVE
|
USE %CVE
|
||||||
INPUT CODTAB F_R_L_CATVEN
|
INPUT CODTAB F_R_L_CATVEN
|
||||||
DISPLAY "Cat." CODTAB
|
DISPLAY "Cat." CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_R_L_CATVEN CODTAB
|
OUTPUT F_R_L_CATVEN CODTAB
|
||||||
OUTPUT F_R_L_DESVEN S0
|
OUTPUT F_R_L_DESVEN S0
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_L_DESVEN 50 // campo riservato ai listini
|
STRING F_R_L_DESVEN 50 // campo riservato ai listini
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 25 2 ""
|
PROMPT 25 2 ""
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_R_C_TIPOCF 7 // campo riservato ai contratti
|
LIST F_R_C_TIPOCF 7 // campo riservato ai contratti
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 1 "Tipo C/F "
|
PROMPT 2 1 "Tipo C/F "
|
||||||
FIELD LF_RCONDV->TIPOCF
|
FIELD LF_RCONDV->TIPOCF
|
||||||
FLAG "P"
|
FLAG "P"
|
||||||
KEY 1
|
KEY 1
|
||||||
ITEM "C|Cliente"
|
ITEM "C|Cliente"
|
||||||
ITEM "F|Fornit."
|
ITEM "F|Fornit."
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_C_CODCF 6 // campo riservato ai contratti
|
STRING F_R_C_CODCF 6 // campo riservato ai contratti
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Cod. C/F "
|
PROMPT 2 2 "Cod. C/F "
|
||||||
FIELD LF_RCONDV->CODCF
|
FIELD LF_RCONDV->CODCF
|
||||||
FLAG "UP"
|
FLAG "UP"
|
||||||
KEY 1
|
KEY 1
|
||||||
USE LF_CLIFO
|
USE LF_CLIFO
|
||||||
INPUT TIPOCF F_R_C_TIPOCF
|
INPUT TIPOCF F_R_C_TIPOCF
|
||||||
INPUT CODCF F_R_C_CODCF
|
INPUT CODCF F_R_C_CODCF
|
||||||
DISPLAY "C/F" TIPOCF
|
DISPLAY "C/F" TIPOCF
|
||||||
DISPLAY "Codice" CODCF
|
DISPLAY "Codice" CODCF
|
||||||
DISPLAY "Ragione sociale@50" RAGSOC
|
DISPLAY "Ragione sociale@50" RAGSOC
|
||||||
OUTPUT F_R_C_TIPOCF TIPOCF
|
OUTPUT F_R_C_TIPOCF TIPOCF
|
||||||
OUTPUT F_R_C_CODCF CODCF
|
OUTPUT F_R_C_CODCF CODCF
|
||||||
OUTPUT F_R_C_DESCF RAGSOC
|
OUTPUT F_R_C_DESCF RAGSOC
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_C_DESCF 50 // campo riservato ai contratti
|
STRING F_R_C_DESCF 50 // campo riservato ai contratti
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 25 2 ""
|
PROMPT 25 2 ""
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_L_COD 3 // campo riservato ai listini
|
STRING F_R_L_COD 3 // campo riservato ai listini
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 3 "Listino "
|
PROMPT 2 3 "Listino "
|
||||||
FIELD LF_RCONDV->COD
|
FIELD LF_RCONDV->COD
|
||||||
FLAG "UPG"
|
FLAG "UPG"
|
||||||
KEY 1
|
KEY 1
|
||||||
USE LF_CONDV
|
USE LF_CONDV
|
||||||
INPUT TIPO F_R_TIPO SELECT
|
INPUT TIPO F_R_TIPO SELECT
|
||||||
INPUT CATVEN F_R_L_CATVEN
|
INPUT CATVEN F_R_L_CATVEN
|
||||||
INPUT COD F_R_L_COD
|
INPUT COD F_R_L_COD
|
||||||
DISPLAY "C.V." CATVEN
|
DISPLAY "C.V." CATVEN
|
||||||
DISPLAY "Codice" COD
|
DISPLAY "Codice" COD
|
||||||
DISPLAY "Descrizione@50" DESCR
|
DISPLAY "Descrizione@50" DESCR
|
||||||
OUTPUT F_R_TIPO TIPO
|
OUTPUT F_R_TIPO TIPO
|
||||||
OUTPUT F_R_L_CATVEN CATVEN
|
OUTPUT F_R_L_CATVEN CATVEN
|
||||||
OUTPUT F_R_L_COD COD
|
OUTPUT F_R_L_COD COD
|
||||||
OUTPUT F_R_L_DES DESCR
|
OUTPUT F_R_L_DES DESCR
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_L_DES 50 // campo riservato ai contratti
|
STRING F_R_L_DES 50 // campo riservato ai contratti
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 25 3 ""
|
PROMPT 25 3 ""
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_R_C_COD 3 // campo riservato ai contratti
|
NUMBER F_R_C_COD 3 // campo riservato ai contratti
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 3 "Contratto N. "
|
PROMPT 2 3 "Contratto N. "
|
||||||
FIELD LF_RCONDV->COD
|
FIELD LF_RCONDV->COD
|
||||||
FLAG "PG"
|
FLAG "PG"
|
||||||
KEY 1
|
KEY 1
|
||||||
USE LF_CONDV
|
USE LF_CONDV
|
||||||
INPUT TIPO F_R_TIPO SELECT
|
INPUT TIPO F_R_TIPO SELECT
|
||||||
INPUT TIPOCF F_R_C_TIPOCF
|
INPUT TIPOCF F_R_C_TIPOCF
|
||||||
INPUT CODCF F_R_C_CODCF
|
INPUT CODCF F_R_C_CODCF
|
||||||
INPUT COD F_R_C_COD
|
INPUT COD F_R_C_COD
|
||||||
DISPLAY "C/F" TIPOCF
|
DISPLAY "C/F" TIPOCF
|
||||||
DISPLAY "Codice" CODCF
|
DISPLAY "Codice" CODCF
|
||||||
DISPLAY "Numero" COD
|
DISPLAY "Numero" COD
|
||||||
DISPLAY "Descrizione@50" DESCR
|
DISPLAY "Descrizione@50" DESCR
|
||||||
OUTPUT F_R_TIPO TIPO
|
OUTPUT F_R_TIPO TIPO
|
||||||
OUTPUT F_R_C_TIPOCF TIPOCF
|
OUTPUT F_R_C_TIPOCF TIPOCF
|
||||||
OUTPUT F_R_C_CODCF CODCF
|
OUTPUT F_R_C_CODCF CODCF
|
||||||
OUTPUT F_R_C_COD COD
|
OUTPUT F_R_C_COD COD
|
||||||
OUTPUT F_R_C_DES DESCR
|
OUTPUT F_R_C_DES DESCR
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_C_DES 50 // campo riservato ai listini
|
STRING F_R_C_DES 50 // campo riservato ai listini
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 25 3 ""
|
PROMPT 25 3 ""
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_O_COD 3 // campo riservato alle offerte
|
STRING F_R_O_COD 3 // campo riservato alle offerte
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Codice offerta "
|
PROMPT 2 2 "Codice offerta "
|
||||||
FIELD LF_RCONDV->COD
|
FIELD LF_RCONDV->COD
|
||||||
FLAG "UPG"
|
FLAG "UPG"
|
||||||
KEY 1
|
KEY 1
|
||||||
USE LF_CONDV
|
USE LF_CONDV
|
||||||
INPUT TIPO F_R_TIPO SELECT
|
INPUT TIPO F_R_TIPO SELECT
|
||||||
INPUT COD F_R_O_COD
|
INPUT COD F_R_O_COD
|
||||||
DISPLAY "Codice" COD
|
DISPLAY "Codice" COD
|
||||||
DISPLAY "Descrizione@50" DESCR
|
DISPLAY "Descrizione@50" DESCR
|
||||||
OUTPUT F_R_TIPO TIPO
|
OUTPUT F_R_TIPO TIPO
|
||||||
OUTPUT F_R_O_COD COD
|
OUTPUT F_R_O_COD COD
|
||||||
OUTPUT F_R_O_DES DESCR
|
OUTPUT F_R_O_DES DESCR
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_O_DES 50 // campo riservato alle offerte
|
STRING F_R_O_DES 50 // campo riservato alle offerte
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 3 "Descr. offerta "
|
PROMPT 2 3 "Descr. offerta "
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_R_TIPORIGA 14
|
LIST F_R_TIPORIGA 14
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 4 "Tipo riga "
|
PROMPT 2 4 "Tipo riga "
|
||||||
FIELD LF_RCONDV->TIPORIGA
|
FIELD LF_RCONDV->TIPORIGA
|
||||||
FLAG "P"
|
FLAG "P"
|
||||||
KEY 1
|
KEY 1
|
||||||
ITEM "A|Articolo"
|
ITEM "A|Articolo"
|
||||||
ITEM "G|Gruppo merc."
|
ITEM "G|Gruppo merc."
|
||||||
ITEM "S|Sottogr. merc."
|
ITEM "S|Sottogr. merc."
|
||||||
ITEM "R|Ragg. fiscale"
|
ITEM "R|Ragg. fiscale"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_CODRIGA_A 20
|
STRING F_R_CODRIGA_A 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 37 4 "Codice articolo "
|
PROMPT 37 4 "Codice articolo "
|
||||||
FIELD LF_RCONDV->CODRIGA
|
FIELD LF_RCONDV->CODRIGA
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
KEY 1
|
KEY 1
|
||||||
USE LF_ANAGR
|
USE LF_ANAGR
|
||||||
INPUT CODART F_R_CODRIGA_A
|
INPUT CODART F_R_CODRIGA_A
|
||||||
DISPLAY "Articolo@20" CODART
|
DISPLAY "Articolo@20" CODART
|
||||||
DISPLAY "Descrizione@50" DESCR
|
DISPLAY "Descrizione@50" DESCR
|
||||||
OUTPUT F_R_CODRIGA_A CODART
|
OUTPUT F_R_CODRIGA_A CODART
|
||||||
OUTPUT F_R_DESRIGA_A DESCR
|
OUTPUT F_R_DESRIGA_A DESCR
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_DESRIGA_A 50
|
STRING F_R_DESRIGA_A 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 5 "Descrizione articolo "
|
PROMPT 2 5 "Descrizione articolo "
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_CODRIGA_G 3
|
STRING F_R_CODRIGA_G 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 5 "Gruppo merc. "
|
PROMPT 2 5 "Gruppo merc. "
|
||||||
FIELD LF_RCONDV->CODRIGA[1,3]
|
FIELD LF_RCONDV->CODRIGA[1,3]
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
KEY 1
|
KEY 1
|
||||||
USE GMC SELECT CODTAB[4,5] == ""
|
USE GMC SELECT CODTAB[4,5] == ""
|
||||||
INPUT CODTAB[1,3] F_R_CODRIGA_G
|
INPUT CODTAB[1,3] F_R_CODRIGA_G
|
||||||
DISPLAY "Gr. merc." CODTAB[1,3]
|
DISPLAY "Gr. merc." CODTAB[1,3]
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_R_CODRIGA_G CODTAB[1,3]
|
OUTPUT F_R_CODRIGA_G CODTAB[1,3]
|
||||||
OUTPUT F_R_DESRIGA_G S0
|
OUTPUT F_R_DESRIGA_G S0
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
MESSAGE COPY,F_R_CODRIGA_A
|
MESSAGE COPY,F_R_CODRIGA_A
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_DESRIGA_G 50
|
STRING F_R_DESRIGA_G 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 25 5 ""
|
PROMPT 25 5 ""
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_CODRIGA_S 5
|
STRING F_R_CODRIGA_S 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 5 "Sottogr.mer. "
|
PROMPT 2 5 "Sottogr.mer. "
|
||||||
FIELD LF_RCONDV->CODRIGA[1,5]
|
FIELD LF_RCONDV->CODRIGA[1,5]
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
KEY 1
|
KEY 1
|
||||||
USE GMC SELECT CODTAB[4,5] != ""
|
USE GMC SELECT CODTAB[4,5] != ""
|
||||||
INPUT CODTAB F_R_CODRIGA_S
|
INPUT CODTAB F_R_CODRIGA_S
|
||||||
DISPLAY "Gruppo merc." CODTAB[1,3]
|
DISPLAY "Gruppo merc." CODTAB[1,3]
|
||||||
DISPLAY "Sottogr. merc." CODTAB[4,5]
|
DISPLAY "Sottogr. merc." CODTAB[4,5]
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_R_CODRIGA_S CODTAB
|
OUTPUT F_R_CODRIGA_S CODTAB
|
||||||
OUTPUT F_R_DESRIGA_S S0
|
OUTPUT F_R_DESRIGA_S S0
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
MESSAGE COPY,F_R_CODRIGA_A
|
MESSAGE COPY,F_R_CODRIGA_A
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_DESRIGA_S 50
|
STRING F_R_DESRIGA_S 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 25 5 ""
|
PROMPT 25 5 ""
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_CODRIGA_R 5
|
STRING F_R_CODRIGA_R 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 5 "Ragg.fiscale "
|
PROMPT 2 5 "Ragg.fiscale "
|
||||||
FIELD LF_RCONDV->CODRIGA[1,5]
|
FIELD LF_RCONDV->CODRIGA[1,5]
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
KEY 1
|
KEY 1
|
||||||
USE RFA
|
USE RFA
|
||||||
INPUT CODTAB F_R_CODRIGA_R
|
INPUT CODTAB F_R_CODRIGA_R
|
||||||
DISPLAY "Ragg. fisc." CODTAB
|
DISPLAY "Ragg. fisc." CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_R_CODRIGA_R CODTAB
|
OUTPUT F_R_CODRIGA_R CODTAB
|
||||||
OUTPUT F_R_DESRIGA_R S0
|
OUTPUT F_R_DESRIGA_R S0
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
MESSAGE COPY,F_R_CODRIGA_A
|
MESSAGE COPY,F_R_CODRIGA_A
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_DESRIGA_R 50
|
STRING F_R_DESRIGA_R 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 25 5 ""
|
PROMPT 25 5 ""
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_NSCAGL 1
|
STRING F_R_NSCAGL 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 7 "N.ro scaglione "
|
PROMPT 2 7 "N.ro scaglione "
|
||||||
FIELD LF_RCONDV->NSCAGL
|
FIELD LF_RCONDV->NSCAGL
|
||||||
KEY 1
|
KEY 1
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_UM 2
|
STRING F_R_UM 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 28 7 "U.M. "
|
PROMPT 28 7 "U.M. "
|
||||||
FIELD LF_RCONDV->UM
|
FIELD LF_RCONDV->UM
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
KEY 1
|
KEY 1
|
||||||
USE LF_UMART KEY 2
|
USE LF_UMART KEY 2
|
||||||
JOIN %UMS INTO CODTAB=UM
|
JOIN %UMS INTO CODTAB=UM
|
||||||
INPUT CODART F_R_CODRIGA_A SELECT
|
INPUT CODART F_R_CODRIGA_A SELECT
|
||||||
INPUT UM F_R_UM
|
INPUT UM F_R_UM
|
||||||
DISPLAY "U.M." UM
|
DISPLAY "U.M." UM
|
||||||
DISPLAY "Desccrizione@50" %UMS->S0
|
DISPLAY "Desccrizione@50" %UMS->S0
|
||||||
OUTPUT F_R_UM UM
|
OUTPUT F_R_UM UM
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_L_RICERCA 1 // campo di aggancio per la ricerca sui listini, nascosto
|
STRING F_R_L_RICERCA 1 // campo di aggancio per la ricerca sui listini, nascosto
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 100 100 ""
|
PROMPT 100 100 ""
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
USE LF_RCONDV SELECT (TIPO==#F_R_TIPO)&&(CATVEN==#F_R_L_CATVEN)&&(COD==#F_R_L_COD)
|
USE LF_RCONDV SELECT (TIPO==#F_R_TIPO)&&(CATVEN==#F_R_L_CATVEN)&&(COD==#F_R_L_COD)
|
||||||
//INPUT TIPO F_R_TIPO SELECT
|
//INPUT TIPO F_R_TIPO SELECT
|
||||||
//INPUT CATVEN F_R_L_CATVEN
|
//INPUT CATVEN F_R_L_CATVEN
|
||||||
//INPUT COD F_R_L_COD
|
//INPUT COD F_R_L_COD
|
||||||
INPUT TIPORIGA F_R_TIPORIGA
|
INPUT TIPORIGA F_R_TIPORIGA
|
||||||
INPUT CODRIGA F_R_CODRIGA_A
|
INPUT CODRIGA F_R_CODRIGA_A
|
||||||
INPUT UM F_R_UM
|
INPUT UM F_R_UM
|
||||||
INPUT NSCAGL F_R_NSCAGL
|
INPUT NSCAGL F_R_NSCAGL
|
||||||
DISPLAY "Tipo" TIPORIGA
|
DISPLAY "Tipo" TIPORIGA
|
||||||
DISPLAY "Codice@20" CODRIGA
|
DISPLAY "Codice@20" CODRIGA
|
||||||
DISPLAY "U.M." UM
|
DISPLAY "U.M." UM
|
||||||
DISPLAY "N.S." NSCAGL
|
DISPLAY "N.S." NSCAGL
|
||||||
OUTPUT F_R_TIPORIGA TIPORIGA
|
OUTPUT F_R_TIPORIGA TIPORIGA
|
||||||
OUTPUT F_R_CODRIGA_R CODRIGA[1,5]
|
OUTPUT F_R_CODRIGA_R CODRIGA[1,5]
|
||||||
OUTPUT F_R_CODRIGA_S CODRIGA[1,5]
|
OUTPUT F_R_CODRIGA_S CODRIGA[1,5]
|
||||||
OUTPUT F_R_CODRIGA_G CODRIGA[1,3]
|
OUTPUT F_R_CODRIGA_G CODRIGA[1,3]
|
||||||
OUTPUT F_R_CODRIGA_A CODRIGA
|
OUTPUT F_R_CODRIGA_A CODRIGA
|
||||||
OUTPUT F_R_UM UM
|
OUTPUT F_R_UM UM
|
||||||
OUTPUT F_R_NSCAGL NSCAGL
|
OUTPUT F_R_NSCAGL NSCAGL
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_C_RICERCA 1 // campo di aggancio per la ricerca sui contratti, nascosto
|
STRING F_R_C_RICERCA 1 // campo di aggancio per la ricerca sui contratti, nascosto
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 100 100 ""
|
PROMPT 100 100 ""
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
USE LF_RCONDV SELECT (TIPO==#F_R_TIPO)&&(TIPOCF==#F_R_C_TIPOCF)&&(CODCF==#F_R_C_CODCF)&&(COD==#F_R_L_COD)
|
USE LF_RCONDV SELECT (TIPO==#F_R_TIPO)&&(TIPOCF==#F_R_C_TIPOCF)&&(CODCF==#F_R_C_CODCF)&&(COD==#F_R_L_COD)
|
||||||
//INPUT TIPO F_R_TIPO SELECT
|
//INPUT TIPO F_R_TIPO SELECT
|
||||||
//INPUT TIPOCF F_R_C_TIPOCF
|
//INPUT TIPOCF F_R_C_TIPOCF
|
||||||
//INPUT CODCF F_R_C_CODCF
|
//INPUT CODCF F_R_C_CODCF
|
||||||
//INPUT COD F_R_C_COD
|
//INPUT COD F_R_C_COD
|
||||||
INPUT TIPORIGA F_R_TIPORIGA
|
INPUT TIPORIGA F_R_TIPORIGA
|
||||||
INPUT CODRIGA F_R_CODRIGA_A
|
INPUT CODRIGA F_R_CODRIGA_A
|
||||||
INPUT NSCAGL F_R_NSCAGL
|
INPUT NSCAGL F_R_NSCAGL
|
||||||
DISPLAY "Tipo" TIPORIGA
|
DISPLAY "Tipo" TIPORIGA
|
||||||
DISPLAY "Codice@20" CODRIGA
|
DISPLAY "Codice@20" CODRIGA
|
||||||
DISPLAY "N.S." NSCAGL
|
DISPLAY "N.S." NSCAGL
|
||||||
OUTPUT F_R_TIPORIGA TIPORIGA
|
OUTPUT F_R_TIPORIGA TIPORIGA
|
||||||
OUTPUT F_R_CODRIGA_R CODRIGA[1,5]
|
OUTPUT F_R_CODRIGA_R CODRIGA[1,5]
|
||||||
OUTPUT F_R_CODRIGA_S CODRIGA[1,5]
|
OUTPUT F_R_CODRIGA_S CODRIGA[1,5]
|
||||||
OUTPUT F_R_CODRIGA_G CODRIGA[1,3]
|
OUTPUT F_R_CODRIGA_G CODRIGA[1,3]
|
||||||
OUTPUT F_R_CODRIGA_A CODRIGA
|
OUTPUT F_R_CODRIGA_A CODRIGA
|
||||||
OUTPUT F_R_NSCAGL NSCAGL
|
OUTPUT F_R_NSCAGL NSCAGL
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_O_RICERCA 1 // campo di aggancio per la ricerca sulle offerte, nascosto
|
STRING F_R_O_RICERCA 1 // campo di aggancio per la ricerca sulle offerte, nascosto
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 100 100 ""
|
PROMPT 100 100 ""
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
USE LF_RCONDV SELECT (TIPO==#F_R_TIPO)&&(COD==#F_R_L_COD)
|
USE LF_RCONDV SELECT (TIPO==#F_R_TIPO)&&(COD==#F_R_L_COD)
|
||||||
//INPUT TIPO F_R_TIPO SELECT
|
//INPUT TIPO F_R_TIPO SELECT
|
||||||
//INPUT COD F_R_O_COD
|
//INPUT COD F_R_O_COD
|
||||||
INPUT TIPORIGA F_R_TIPORIGA
|
INPUT TIPORIGA F_R_TIPORIGA
|
||||||
INPUT CODRIGA F_R_CODRIGA_A
|
INPUT CODRIGA F_R_CODRIGA_A
|
||||||
INPUT UM F_R_UM
|
INPUT UM F_R_UM
|
||||||
INPUT NSCAGL F_R_NSCAGL
|
INPUT NSCAGL F_R_NSCAGL
|
||||||
DISPLAY "Tipo" TIPORIGA
|
DISPLAY "Tipo" TIPORIGA
|
||||||
DISPLAY "Codice@20" CODRIGA
|
DISPLAY "Codice@20" CODRIGA
|
||||||
DISPLAY "U.M." UM
|
DISPLAY "U.M." UM
|
||||||
DISPLAY "N.S." NSCAGL
|
DISPLAY "N.S." NSCAGL
|
||||||
OUTPUT F_R_TIPORIGA TIPORIGA
|
OUTPUT F_R_TIPORIGA TIPORIGA
|
||||||
OUTPUT F_R_CODRIGA_R CODRIGA[1,5]
|
OUTPUT F_R_CODRIGA_R CODRIGA[1,5]
|
||||||
OUTPUT F_R_CODRIGA_S CODRIGA[1,5]
|
OUTPUT F_R_CODRIGA_S CODRIGA[1,5]
|
||||||
OUTPUT F_R_CODRIGA_G CODRIGA[1,3]
|
OUTPUT F_R_CODRIGA_G CODRIGA[1,3]
|
||||||
OUTPUT F_R_CODRIGA_A CODRIGA
|
OUTPUT F_R_CODRIGA_A CODRIGA
|
||||||
OUTPUT F_R_UM UM
|
OUTPUT F_R_UM UM
|
||||||
OUTPUT F_R_NSCAGL NSCAGL
|
OUTPUT F_R_NSCAGL NSCAGL
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 9 // fine della chiave
|
GROUPBOX DLG_NULL 78 9 // fine della chiave
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 0 0 ""
|
PROMPT 0 0 ""
|
||||||
FLAG "R"
|
FLAG "R"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_R_QLIM 15 5
|
NUMBER F_R_QLIM 15 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 9 "Q.ta' limite scagl. "
|
PROMPT 2 9 "Q.ta' limite scagl. "
|
||||||
FIELD LF_RCONDV->QLIM
|
FIELD LF_RCONDV->QLIM
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_R_PREZZO 18 2
|
NUMBER F_R_PREZZO 18 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 10 "Prezzo "
|
PROMPT 2 10 "Prezzo "
|
||||||
FIELD LF_RCONDV->PREZZO
|
FIELD LF_RCONDV->PREZZO
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_SCONTO 25
|
STRING F_R_SCONTO 25
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 35 10 "Sconto "
|
PROMPT 35 10 "Sconto "
|
||||||
FIELD LF_RCONDV->SCONTO
|
FIELD LF_RCONDV->SCONTO
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_R_ADDIVA
|
BOOLEAN F_R_ADDIVA
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 11 "Addebito IVA"
|
PROMPT 2 11 "Addebito IVA"
|
||||||
FIELD LF_RCONDV->ADDIVA
|
FIELD LF_RCONDV->ADDIVA
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_CODIVA 4
|
STRING F_R_CODIVA 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 31 11 "Codice IVA "
|
PROMPT 31 11 "Codice IVA "
|
||||||
FIELD LF_RCONDV->CODIVA
|
FIELD LF_RCONDV->CODIVA
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
USE %IVA
|
USE %IVA
|
||||||
INPUT CODTAB F_R_CODIVA
|
INPUT CODTAB F_R_CODIVA
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_R_CODIVA CODTAB
|
OUTPUT F_R_CODIVA CODTAB
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_R_PERCPROVV 5 2
|
NUMBER F_R_PERCPROVV 5 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 12 "Provvigione % "
|
PROMPT 2 12 "Provvigione % "
|
||||||
FIELD LF_RCONDV->PERCPROVV
|
FIELD LF_RCONDV->PERCPROVV
|
||||||
NUM_EXPR (#F_R_PERCPROVV>=0)&&(#F_R_PERCPROVV<=100)
|
NUM_EXPR (#F_R_PERCPROVV>=0)&&(#F_R_PERCPROVV<=100)
|
||||||
WARNING "La percentuale di provvigione deve essere compresa tra 0 e 100"
|
WARNING "La percentuale di provvigione deve essere compresa tra 0 e 100"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_R_QOM 15 5
|
NUMBER F_R_QOM 15 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 13 "Q.ta' sconto/omaggio "
|
PROMPT 2 13 "Q.ta' sconto/omaggio "
|
||||||
FIELD LF_RCONDV->QOM
|
FIELD LF_RCONDV->QOM
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_UMOM 2
|
STRING F_R_UMOM 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 47 13 "U.M. q.ta' omaggio "
|
PROMPT 47 13 "U.M. q.ta' omaggio "
|
||||||
FIELD LF_RCONDV->UMOM
|
FIELD LF_RCONDV->UMOM
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
USE LF_UMART KEY 2
|
USE LF_UMART KEY 2
|
||||||
JOIN %UMS INTO CODTAB=UM
|
JOIN %UMS INTO CODTAB=UM
|
||||||
INPUT CODART F_R_CODARTOM SELECT
|
INPUT CODART F_R_CODARTOM SELECT
|
||||||
INPUT UM F_R_UMOM
|
INPUT UM F_R_UMOM
|
||||||
DISPLAY "U.M." UM
|
DISPLAY "U.M." UM
|
||||||
DISPLAY "Desccrizione@50" %UMS->S0
|
DISPLAY "Desccrizione@50" %UMS->S0
|
||||||
OUTPUT F_R_UMOM UM
|
OUTPUT F_R_UMOM UM
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_R_QBASE 15 5
|
NUMBER F_R_QBASE 15 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 14 "Q.ta' base sconto "
|
PROMPT 2 14 "Q.ta' base sconto "
|
||||||
FIELD LF_RCONDV->QBASE
|
FIELD LF_RCONDV->QBASE
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_R_CODARTOM 20
|
STRING F_R_CODARTOM 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 15 "Codice art. omaggio "
|
PROMPT 2 15 "Codice art. omaggio "
|
||||||
FIELD LF_RCONDV->CODARTOM
|
FIELD LF_RCONDV->CODARTOM
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
USE LF_ANAGR
|
USE LF_ANAGR
|
||||||
INPUT CODART F_R_CODARTOM
|
INPUT CODART F_R_CODARTOM
|
||||||
DISPLAY "Articolo@20" CODART
|
DISPLAY "Articolo@20" CODART
|
||||||
DISPLAY "Descrizione@50" DESCR
|
DISPLAY "Descrizione@50" DESCR
|
||||||
OUTPUT F_R_CODARTOM CODART
|
OUTPUT F_R_CODARTOM CODART
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_R_PROMAGGIO 18 2
|
NUMBER F_R_PROMAGGIO 18 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 16 "Prezzo omaggio "
|
PROMPT 2 16 "Prezzo omaggio "
|
||||||
FIELD LF_RCONDV->PROMAGGIO
|
FIELD LF_RCONDV->PROMAGGIO
|
||||||
END
|
END
|
||||||
|
|
||||||
//STRINF F_R_CO_CODLOTTO 6
|
//STRINF F_R_CO_CODLOTTO 6
|
||||||
//BEGIN
|
//BEGIN
|
||||||
//PROMPT 2 17 "Codice lotto "
|
//PROMPT 2 17 "Codice lotto "
|
||||||
//FIELD LF_RCONDV->CODLOTTO
|
//FIELD LF_RCONDV->CODLOTTO
|
||||||
//FLAG "U"
|
//FLAG "U"
|
||||||
//END
|
//END
|
||||||
|
|
||||||
BOOLEAN F_R_O_ARTES
|
BOOLEAN F_R_O_ARTES
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 47 17 "Art. in esaurimento"
|
PROMPT 47 17 "Art. in esaurimento"
|
||||||
FIELD LF_RCONDV->ARTES
|
FIELD LF_RCONDV->ARTES
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
|
519
ve/ve2400.cpp
519
ve/ve2400.cpp
@ -4,6 +4,7 @@
|
|||||||
#include <msksheet.h>
|
#include <msksheet.h>
|
||||||
#include <assoc.h>
|
#include <assoc.h>
|
||||||
#include <checks.h>
|
#include <checks.h>
|
||||||
|
#include <defmask.h>
|
||||||
|
|
||||||
#include "ve2400.h"
|
#include "ve2400.h"
|
||||||
|
|
||||||
@ -27,10 +28,12 @@ class TAnagrafica_magazzino: public TRelation_application {
|
|||||||
virtual void init_insert_mode(TMask &);
|
virtual void init_insert_mode(TMask &);
|
||||||
|
|
||||||
virtual int read(TMask& m);
|
virtual int read(TMask& m);
|
||||||
|
virtual bool remove();
|
||||||
virtual int write(const TMask& m);
|
virtual int write(const TMask& m);
|
||||||
virtual int rewrite(const TMask& m);
|
virtual int rewrite(const TMask& m);
|
||||||
|
|
||||||
static bool handle_sheet0(TMask_field &, KEY); // handler dello sheet delle unità di misura
|
static bool handle_sheet0(TMask_field &, KEY); // handler dello sheet delle unità di misura
|
||||||
|
static bool notify_sheet0(TSheet_field & s, int r, KEY k); // handler dello sheet delle unità di misura
|
||||||
static bool handle_sheet1(TMask_field &, KEY); // handler dello sheet delle descrizioni in lingua
|
static bool handle_sheet1(TMask_field &, KEY); // handler dello sheet delle descrizioni in lingua
|
||||||
static bool handle_sheet2(TMask_field &, KEY); // handler dello sheer dei codici alternativi
|
static bool handle_sheet2(TMask_field &, KEY); // handler dello sheer dei codici alternativi
|
||||||
static bool handle_sheet0_um(TMask_field &, KEY); // handler del campo UM dello sheet delle unità di misura
|
static bool handle_sheet0_um(TMask_field &, KEY); // handler del campo UM dello sheet delle unità di misura
|
||||||
@ -42,9 +45,11 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool TAnagrafica_magazzino::user_create() {
|
bool TAnagrafica_magazzino::user_create()
|
||||||
_msk= new TMask("VE2400");
|
{
|
||||||
|
_msk= new TMask("ve2400");
|
||||||
_msk->set_handler(F_SHEET0, handle_sheet0);
|
_msk->set_handler(F_SHEET0, handle_sheet0);
|
||||||
|
((TSheet_field &)_msk->field(F_SHEET0)).set_notify(notify_sheet0);
|
||||||
_msk->set_handler(F_SHEET1, handle_sheet1);
|
_msk->set_handler(F_SHEET1, handle_sheet1);
|
||||||
_msk->set_handler(F_SHEET2, handle_sheet2);
|
_msk->set_handler(F_SHEET2, handle_sheet2);
|
||||||
|
|
||||||
@ -63,7 +68,8 @@ bool TAnagrafica_magazzino::user_create() {
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TAnagrafica_magazzino::user_destroy() {
|
bool TAnagrafica_magazzino::user_destroy()
|
||||||
|
{
|
||||||
delete _linee_rec2;
|
delete _linee_rec2;
|
||||||
delete _linee_rec1;
|
delete _linee_rec1;
|
||||||
delete _linee_rec0;
|
delete _linee_rec0;
|
||||||
@ -75,56 +81,68 @@ bool TAnagrafica_magazzino::user_destroy() {
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TAnagrafica_magazzino::read(TMask& m) {
|
int TAnagrafica_magazzino::read(TMask& m)
|
||||||
int err= TRelation_application::read(m);
|
{
|
||||||
if (err == NOERR) {
|
const int err= TRelation_application::read(m);
|
||||||
|
if (err == NOERR)
|
||||||
|
{
|
||||||
|
TSheet_field &f0= (TSheet_field &)m.field(F_SHEET0); // prende il sheet delle unità di misura
|
||||||
TRectype rum(_umart->curr()); // prende il record corrente dal file delle unità di misura
|
TRectype rum(_umart->curr()); // prende il record corrente dal file delle unità di misura
|
||||||
|
|
||||||
|
f0.destroy(); // cancella lo sheet
|
||||||
rum.zero();
|
rum.zero();
|
||||||
rum.put("CODART", m.get(F_CODART)); // imposta il record corrente sul codice articolo (dalla maschera)
|
rum.put("CODART", m.get(F_CODART)); // imposta il record corrente sul codice articolo (dalla maschera)
|
||||||
_linee_rec0->read(rum); // legge il record array
|
_linee_rec0->read(rum); // legge il record array
|
||||||
TSheet_field &f0= (TSheet_field &)m.field(F_SHEET0); // prende il sheet delle unità di misura
|
|
||||||
f0.destroy(); // cancella lo sheet
|
const int lastum = _linee_rec0->last_row();
|
||||||
int last= _linee_rec0->last_row();
|
for (int i= 1; i <= lastum; i++)
|
||||||
if (last>0) {
|
{
|
||||||
for (int i= 1; i <= last; i++) {
|
TRectype &rec= _linee_rec0->row(i, TRUE); // prende il record della riga corrente dal record array
|
||||||
TRectype &rec= _linee_rec0->row(i, TRUE); // prende il record della riga corrente dal record array
|
TToken_string &row= f0.row(i-1);
|
||||||
TToken_string &row= f0.row(i-1);
|
row = "";
|
||||||
row= rec.get("UM"); // imposta la riga dello sheet con i campi del record della riga corrente
|
row.add(rec.get("UM")); // imposta la riga dello sheet con i campi del record della riga corrente
|
||||||
if (i != 1) row.add(rec.get("FC"));
|
row.add(rec.get("FC"));
|
||||||
else row.add("1"); // forza a 1 il secondo campo della prima riga (il fattore di conversione della prima U.M. deve essere 1)
|
}
|
||||||
}
|
if (f0.items() == 0)
|
||||||
} else {
|
((TToken_string &)f0.row(0)) = "|1"; // aggiunge una riga allo sheet
|
||||||
TToken_string &row= f0.row(-1); // aggiunge una riga allo sheet
|
else
|
||||||
row.add("");
|
((TToken_string &)f0.row(0)).add("1",1); // forza la prima unita' di misura a 1
|
||||||
row.add("1"); // setta il secondo campo della riga aggiunta a 1
|
|
||||||
}
|
|
||||||
f0.disable_cell(0, 1); // mette in sola lettura il secondo campo della prima riga (il fattore di conversione della prima U.M. è fisso a 1)
|
f0.disable_cell(0, 1); // mette in sola lettura il secondo campo della prima riga (il fattore di conversione della prima U.M. è fisso a 1)
|
||||||
f0.force_update(0); // aggiorna lo stato della riga 0
|
f0.force_update(0); // aggiorna lo stato della riga 0
|
||||||
|
|
||||||
TRectype r(_deslin->curr()); // prende il record corrente dal file delle descrizioni in lingua
|
TRectype r(_deslin->curr()); // prende il record corrente dal file delle descrizioni in lingua
|
||||||
|
TSheet_field &f1= (TSheet_field &)m.field(F_SHEET1); // prende il sheet delle descrizioni in lingua
|
||||||
|
|
||||||
r.zero();
|
r.zero();
|
||||||
r.put("CODART", m.get(F_CODART)); // imposta il record corrente sul codice articolo (dalla maschera)
|
r.put("CODART", m.get(F_CODART)); // imposta il record corrente sul codice articolo (dalla maschera)
|
||||||
|
|
||||||
_linee_rec1->read(r); // legge il record array
|
_linee_rec1->read(r); // legge il record array
|
||||||
TSheet_field &f1= (TSheet_field &)m.field(F_SHEET1); // prende il sheet delle descrizioni in lingua
|
|
||||||
f1.destroy(); // cancella lo sheet
|
f1.destroy(); // cancella lo sheet
|
||||||
last= _linee_rec1->last_row();
|
const int lastdes= _linee_rec1->last_row();
|
||||||
for (int i= 1; i <= last; i++) {
|
for (i = 1; i <= lastdes; i++)
|
||||||
|
{
|
||||||
TRectype &rec= _linee_rec1->row(i, TRUE); // prende il record della riga corrente dal record array
|
TRectype &rec= _linee_rec1->row(i, TRUE); // prende il record della riga corrente dal record array
|
||||||
TToken_string &row= f1.row(i-1);
|
TToken_string &row= f1.row(i-1);
|
||||||
row= rec.get("CODLIN"); // imposta la riga dello sheet con i campi del record della riga corrente
|
|
||||||
|
row = "";
|
||||||
|
row.add(rec.get("CODLIN")); // imposta la riga dello sheet con i campi del record della riga corrente
|
||||||
row.add(rec.get("DESCR"));
|
row.add(rec.get("DESCR"));
|
||||||
}
|
}
|
||||||
|
|
||||||
TRectype rcor(_codcorr->curr()); // prende il record corrente dal file dei codici corrispondenti
|
TRectype rcor(_codcorr->curr()); // prende il record corrente dal file dei codici corrispondenti
|
||||||
|
TSheet_field &f2= (TSheet_field &)m.field(F_SHEET2); // prende lo sheet dei codici corrispondenti
|
||||||
|
|
||||||
rcor.zero();
|
rcor.zero();
|
||||||
rcor.put("CODART", m.get(F_CODART)); // imposta il record corrente sul codice articolo (dalla maschera)
|
rcor.put("CODART", m.get(F_CODART)); // imposta il record corrente sul codice articolo (dalla maschera)
|
||||||
_linee_rec2->read(rcor); // legge il record array
|
_linee_rec2->read(rcor); // legge il record array
|
||||||
TSheet_field &f2= (TSheet_field &)m.field(F_SHEET2); // prende lo sheet dei codici corrispondenti
|
|
||||||
f2.destroy(); // cancella lo sheet
|
f2.destroy(); // cancella lo sheet
|
||||||
last= _linee_rec2->last_row();
|
const int lastcod = _linee_rec2->last_row();
|
||||||
for (i= 1; i <= last; i++) {
|
for (i= 1; i <= lastcod; i++)
|
||||||
|
{
|
||||||
TRectype &rec= _linee_rec2->row(i, TRUE); // prende il record della riga corrente dal record array
|
TRectype &rec= _linee_rec2->row(i, TRUE); // prende il record della riga corrente dal record array
|
||||||
TToken_string &row= f2.row(i-1);
|
TToken_string &row= f2.row(i-1);
|
||||||
|
|
||||||
|
row = "";
|
||||||
row= rec.get("CODARTALT"); // imposta la riga dello sheet con i campi del record della riga corrente
|
row= rec.get("CODARTALT"); // imposta la riga dello sheet con i campi del record della riga corrente
|
||||||
row.add(rec.get("TIPO"));
|
row.add(rec.get("TIPO"));
|
||||||
}
|
}
|
||||||
@ -132,208 +150,280 @@ int TAnagrafica_magazzino::read(TMask& m) {
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TAnagrafica_magazzino::write(const TMask& m) {
|
bool TAnagrafica_magazzino::remove()
|
||||||
|
|
||||||
|
{
|
||||||
|
return _linee_rec0->remove() == NOERR &&
|
||||||
|
_linee_rec1->remove() == NOERR &&
|
||||||
|
_linee_rec2->remove() == NOERR &&
|
||||||
|
TRelation_application::remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
int TAnagrafica_magazzino::write(const TMask& m)
|
||||||
|
{
|
||||||
int err= TRelation_application::write(m);
|
int err= TRelation_application::write(m);
|
||||||
if (err == NOERR) {
|
|
||||||
TSheet_field &f0= (TSheet_field &)m.field(F_SHEET0);
|
|
||||||
_linee_rec0->destroy_rows();
|
|
||||||
|
|
||||||
if (m.insert_mode()) _linee_rec0->renum_key("CODART", m.get(F_CODART));
|
|
||||||
|
|
||||||
for (int i= 0; i < f0.items(); i++) {
|
|
||||||
TToken_string &row= f0.row(i);
|
|
||||||
const TString16 um(row.get(0));
|
|
||||||
const real fc(row.get());
|
|
||||||
|
|
||||||
if (um.not_empty() && (!fc.is_zero())) {
|
|
||||||
TRectype &rec= _linee_rec0->row(i+1, TRUE);
|
|
||||||
rec.put("UM", um);
|
|
||||||
rec.put("FC", fc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
err= _linee_rec0->write();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (err == NOERR) {
|
|
||||||
TSheet_field &f1= (TSheet_field &)m.field(F_SHEET1);
|
|
||||||
_linee_rec1->destroy_rows();
|
|
||||||
|
|
||||||
if (m.insert_mode()) _linee_rec1->renum_key("CODART", m.get(F_CODART));
|
|
||||||
|
|
||||||
for (int i= 0; i < f1.items(); i++) {
|
|
||||||
TToken_string &row= f1.row(i);
|
|
||||||
const TString16 codlin(row.get(0));
|
|
||||||
const TString80 descr(row.get());
|
|
||||||
|
|
||||||
if (codlin.not_empty() && descr.not_empty()) {
|
|
||||||
TRectype &rec= _linee_rec1->row(i+1, TRUE);
|
|
||||||
rec.put("CODLIN", codlin);
|
|
||||||
rec.put("DESCR", descr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
err= _linee_rec1->write();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (err == NOERR) {
|
if (err != NOERR)
|
||||||
TSheet_field &f2= (TSheet_field &)m.field(F_SHEET2);
|
return err;
|
||||||
_linee_rec2->destroy_rows();
|
|
||||||
|
TSheet_field &f0= (TSheet_field &)m.field(F_SHEET0);
|
||||||
|
|
||||||
|
_linee_rec0->destroy_rows();
|
||||||
|
if (m.insert_mode()) _linee_rec0->renum_key("CODART", m.get(F_CODART));
|
||||||
|
|
||||||
|
for (int i= 0; i < f0.items(); i++)
|
||||||
|
{
|
||||||
|
TToken_string &row= f0.row(i);
|
||||||
|
TString16 um(row.get(0));
|
||||||
|
|
||||||
if (m.insert_mode()) _linee_rec2->renum_key("CODART", m.get(F_CODART));
|
um.rtrim();
|
||||||
|
if (um.not_empty())
|
||||||
|
{
|
||||||
|
TRectype &rec= _linee_rec0->row(i+1, TRUE);
|
||||||
|
|
||||||
|
rec.put("UM", um);
|
||||||
|
rec.put("FC", row.get());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
err = _linee_rec0->write();
|
||||||
|
|
||||||
|
if (err != NOERR)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
TSheet_field &f1= (TSheet_field &)m.field(F_SHEET1);
|
||||||
|
|
||||||
|
_linee_rec1->destroy_rows();
|
||||||
|
if (m.insert_mode()) _linee_rec1->renum_key("CODART", m.get(F_CODART));
|
||||||
|
|
||||||
|
for (i = 0; i < f1.items(); i++)
|
||||||
|
{
|
||||||
|
TToken_string &row= f1.row(i);
|
||||||
|
TString16 codlin(row.get(0));
|
||||||
|
|
||||||
for (int i= 0; i < f2.items(); i++) {
|
codlin.rtrim();
|
||||||
TToken_string &row= f2.row(i);
|
|
||||||
const TString80 codartalt(row.get(0));
|
|
||||||
const TString16 tipo(row.get());
|
|
||||||
|
|
||||||
if (codartalt.not_empty()) {
|
if (codlin.not_empty())
|
||||||
TRectype &reccor= _linee_rec2->row(i+1, TRUE);
|
{
|
||||||
reccor.put("CODARTALT", codartalt);
|
TRectype &rec= _linee_rec1->row(i+1, TRUE);
|
||||||
reccor.put("TIPO", tipo);
|
|
||||||
}
|
rec.put("CODLIN", codlin);
|
||||||
}
|
rec.put("DESCR", row.get());
|
||||||
err= _linee_rec2->write();
|
}
|
||||||
}
|
}
|
||||||
|
err= _linee_rec1->write();
|
||||||
|
|
||||||
|
if (err != NOERR)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
TSheet_field &f2= (TSheet_field &)m.field(F_SHEET2);
|
||||||
|
|
||||||
|
_linee_rec2->destroy_rows();
|
||||||
|
if (m.insert_mode()) _linee_rec2->renum_key("CODART", m.get(F_CODART));
|
||||||
|
|
||||||
|
for (i= 0; i < f2.items(); i++)
|
||||||
|
{
|
||||||
|
TToken_string &row= f2.row(i);
|
||||||
|
TString80 codartalt(row.get(0));
|
||||||
|
|
||||||
|
codartalt.rtrim();
|
||||||
|
if (codartalt.not_empty())
|
||||||
|
{
|
||||||
|
TRectype &reccor= _linee_rec2->row(i+1, TRUE);
|
||||||
|
|
||||||
|
reccor.put("CODARTALT", codartalt);
|
||||||
|
reccor.put("TIPO", row.get());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
err= _linee_rec2->write();
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TAnagrafica_magazzino::rewrite(const TMask& m) {
|
int TAnagrafica_magazzino::rewrite(const TMask& m)
|
||||||
int err= TRelation_application::rewrite(m);
|
{
|
||||||
if (err == NOERR) {
|
TSheet_field &f0= (TSheet_field &)m.field(F_SHEET0);
|
||||||
TSheet_field &f0= (TSheet_field &)m.field(F_SHEET0);
|
|
||||||
_linee_rec0->destroy_rows();
|
|
||||||
|
|
||||||
if (m.insert_mode()) _linee_rec0->renum_key("CODART", m.get(F_CODART));
|
|
||||||
|
|
||||||
for (int i= 0; i < f0.items(); i++) {
|
|
||||||
TToken_string & row = f0.row(i);
|
|
||||||
const TString16 um(row.get(0));
|
|
||||||
const real fc(row.get());
|
|
||||||
|
|
||||||
if (um.not_empty() && (!fc.is_zero())) {
|
|
||||||
TRectype &rec= _linee_rec0->row(i+1, TRUE);
|
|
||||||
rec.put("UM", um);
|
|
||||||
rec.put("FC", fc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
err= _linee_rec0->rewrite();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (err == NOERR) {
|
_linee_rec0->destroy_rows();
|
||||||
TSheet_field &f1= (TSheet_field &)m.field(F_SHEET1);
|
if (m.insert_mode()) _linee_rec0->renum_key("CODART", m.get(F_CODART));
|
||||||
_linee_rec1->destroy_rows();
|
|
||||||
|
|
||||||
if (m.insert_mode()) _linee_rec1->renum_key("CODART", m.get(F_CODART));
|
|
||||||
|
|
||||||
for (int i= 0; i < f1.items(); i++) {
|
for (int i= 0; i < f0.items(); i++)
|
||||||
TToken_string & row = f1.row(i);
|
{
|
||||||
const TString16 codlin(row.get(0));
|
TToken_string & row = f0.row(i);
|
||||||
const TString80 descr(row.get());
|
TString16 um(row.get(0));
|
||||||
|
|
||||||
if (codlin.not_empty() && descr.not_empty()) {
|
um.rtrim();
|
||||||
TRectype &rec= _linee_rec1->row(i+1, TRUE);
|
if (um.not_empty())
|
||||||
rec.put("CODLIN", codlin);
|
{
|
||||||
rec.put("DESCR", descr);
|
TRectype &rec= _linee_rec0->row(i+1, TRUE);
|
||||||
}
|
|
||||||
}
|
rec.put("UM", um);
|
||||||
err= _linee_rec1->rewrite();
|
rec.put("FC", row.get());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int err = _linee_rec0->rewrite();
|
||||||
|
|
||||||
if (err == NOERR) {
|
if (err != NOERR)
|
||||||
TSheet_field &f2= (TSheet_field &)m.field(F_SHEET2);
|
return err;
|
||||||
_linee_rec2->destroy_rows();
|
|
||||||
|
TSheet_field &f1= (TSheet_field &)m.field(F_SHEET1);
|
||||||
|
_linee_rec1->destroy_rows();
|
||||||
|
|
||||||
if (m.insert_mode()) _linee_rec2->renum_key("CODART", m.get(F_CODART));
|
if (m.insert_mode()) _linee_rec1->renum_key("CODART", m.get(F_CODART));
|
||||||
|
|
||||||
for (int i= 0; i < f2.items(); i++) {
|
for (i= 0; i < f1.items(); i++)
|
||||||
TToken_string &row= f2.row(i);
|
{
|
||||||
const TString80 codartalt(row.get(0));
|
TToken_string & row = f1.row(i);
|
||||||
const TString80 tipo(row.get());
|
TString16 codlin(row.get(0));
|
||||||
|
|
||||||
|
codlin.rtrim();
|
||||||
|
if (codlin.not_empty())
|
||||||
|
{
|
||||||
|
TRectype &rec= _linee_rec1->row(i+1, TRUE);
|
||||||
|
|
||||||
if (codartalt.not_empty()) {
|
rec.put("CODLIN", codlin);
|
||||||
TRectype &reccor= _linee_rec2->row(i+1, TRUE);
|
rec.put("DESCR", row.get());
|
||||||
reccor.put("CODARTALT", codartalt);
|
}
|
||||||
reccor.put("TIPO", tipo);
|
}
|
||||||
}
|
err = _linee_rec1->rewrite();
|
||||||
}
|
|
||||||
err= _linee_rec2->write();
|
if (err != NOERR)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
TSheet_field &f2= (TSheet_field &)m.field(F_SHEET2);
|
||||||
|
|
||||||
|
_linee_rec2->destroy_rows();
|
||||||
|
if (m.insert_mode()) _linee_rec2->renum_key("CODART", m.get(F_CODART));
|
||||||
|
|
||||||
|
for (i = 0; i < f2.items(); i++)
|
||||||
|
{
|
||||||
|
TToken_string &row= f2.row(i);
|
||||||
|
TString80 codartalt(row.get(0));
|
||||||
|
|
||||||
|
codartalt.rtrim();
|
||||||
|
if (codartalt.not_empty())
|
||||||
|
{
|
||||||
|
TRectype &reccor = _linee_rec2->row(i+1, TRUE);
|
||||||
|
|
||||||
|
reccor.put("CODARTALT", codartalt);
|
||||||
|
reccor.put("TIPO", row.get());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
err = _linee_rec2->rewrite();
|
||||||
|
|
||||||
|
if (err == NOERR)
|
||||||
|
err= TRelation_application::rewrite(m);
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TAnagrafica_magazzino::init_insert_mode(TMask &m) {
|
void TAnagrafica_magazzino::init_insert_mode(TMask &m)
|
||||||
|
{
|
||||||
TSheet_field &f= (TSheet_field &)m.field(F_SHEET0);
|
TSheet_field &f= (TSheet_field &)m.field(F_SHEET0);
|
||||||
if (f.items()==0) {
|
if (f.items()==0)
|
||||||
TToken_string &row= f.row(-1); // aggiunge una riga allo sheet
|
{
|
||||||
row.add("");
|
((TToken_string &)f.row(0)) = "|1"; // aggiunge una riga allo sheet
|
||||||
row.add("1"); // setta il secondo campo della riga aggiunta a 1
|
|
||||||
f.disable_cell(0, 1); // mette in sola lettura il secondo campo della prima riga (il fattore di conversione della prima U.M. è fisso a 1)
|
f.disable_cell(0, 1); // mette in sola lettura il secondo campo della prima riga (il fattore di conversione della prima U.M. è fisso a 1)
|
||||||
f.force_update(0); // aggiorna lo stato della riga 0
|
f.force_update(0); // aggiorna lo stato della riga 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TAnagrafica_magazzino::handle_sheet0(TMask_field &fld, KEY k) {
|
bool TAnagrafica_magazzino::handle_sheet0(TMask_field &fld, KEY k)
|
||||||
if (k==K_ENTER) {
|
{
|
||||||
|
if (k == K_ENTER)
|
||||||
|
{
|
||||||
TSheet_field &f= (TSheet_field &)fld; // typecast del campo al suo sheet corrispondente
|
TSheet_field &f= (TSheet_field &)fld; // typecast del campo al suo sheet corrispondente
|
||||||
if (f.items()>0) {
|
const int items = f.items();
|
||||||
|
if (items > 0)
|
||||||
|
{
|
||||||
TAssoc_array v; // istanzia l'hash table per il controllo di univocità
|
TAssoc_array v; // istanzia l'hash table per il controllo di univocità
|
||||||
for (int i= 0; i<f.items(); i++) {
|
for (int i= 0; i<items; i++)
|
||||||
if (v.add(f.cell(i,0))) { // aggiunge all'hash table l'elemento 0 (primo) della riga corrente e controlla che non esista già
|
{
|
||||||
error_box("Le unità di misura devono essere diverse tra loro");
|
const TString16 um(f.cell(i,0));
|
||||||
break;
|
|
||||||
}
|
if (um.empty())
|
||||||
real x(f.cell(i,1));
|
return error_box("Le unita' di misura non possono essere vuote");
|
||||||
if (x.is_zero()) { // controlla che il fattore di conversione (secondo elemento) non sia 0
|
if (v.add(um))
|
||||||
error_box("I fattori di conversione delle unità di misura non possono valere 0");
|
return error_box("Le unità di misura devono essere diverse tra loro"); // aggiunge all'hash table l'elemento 0 (primo) della riga corrente e controlla che non esista già
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return (i==f.items());
|
}
|
||||||
} else return TRUE;
|
}
|
||||||
} else return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TAnagrafica_magazzino::handle_sheet1(TMask_field &fld, KEY k) {
|
bool TAnagrafica_magazzino::notify_sheet0(TSheet_field &s, int r, KEY k)
|
||||||
if (k==K_ENTER) {
|
{
|
||||||
TSheet_field &f= (TSheet_field &)fld; // typecast del campo al suo sheet corrispondente
|
if (k == K_TAB)
|
||||||
if (f.items()>1) {
|
s.sheet_mask().enable(DLG_DELREC, r > 0);
|
||||||
TAssoc_array v; // istanzia l'hash table per il controllo di univocità
|
|
||||||
for (int i= 0; i<f.items(); i++) {
|
return TRUE;
|
||||||
if (v.add(f.cell(i,0))) { // aggiunge all'hash table l'elemento 0 (primo) della riga corrente e controlla che non esista già
|
|
||||||
error_box("I codici di lingua devono essere diversi tra loro");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return (i==f.items());
|
|
||||||
} else return TRUE;
|
|
||||||
} else return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TAnagrafica_magazzino::handle_sheet2(TMask_field &fld, KEY k) {
|
bool TAnagrafica_magazzino::handle_sheet1(TMask_field &fld, KEY k)
|
||||||
if (k==K_ENTER) {
|
{
|
||||||
|
if (k == K_ENTER)
|
||||||
|
{
|
||||||
TSheet_field &f= (TSheet_field &)fld; // typecast del campo al suo sheet corrispondente
|
TSheet_field &f= (TSheet_field &)fld; // typecast del campo al suo sheet corrispondente
|
||||||
if (f.items()>0) {
|
const int items = f.items();
|
||||||
|
|
||||||
|
if (items > 0)
|
||||||
|
{
|
||||||
|
TAssoc_array v; // istanzia l'hash table per il controllo di univocità
|
||||||
|
|
||||||
|
for (int i= 0; i < items; i++)
|
||||||
|
{
|
||||||
|
const TString16 codlin(f.cell(i,0));
|
||||||
|
|
||||||
|
if (codlin.empty())
|
||||||
|
return error_box("I codici lingua non possono essere vuoti");
|
||||||
|
if (v.add(codlin))
|
||||||
|
return error_box("I codici lingua devono essere diversi tra loro"); // aggiunge all'hash table l'elemento 0 (primo) della riga corrente e controlla che non esista già
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TAnagrafica_magazzino::handle_sheet2(TMask_field &fld, KEY k)
|
||||||
|
{
|
||||||
|
if (k==K_ENTER)
|
||||||
|
{
|
||||||
|
TSheet_field &f= (TSheet_field &)fld; // typecast del campo al suo sheet corrispondente
|
||||||
|
const int items = f.items();
|
||||||
|
|
||||||
|
if (items > 0)
|
||||||
|
{
|
||||||
TMask &m= fld.mask(); // prende la maschere d'origine del campo
|
TMask &m= fld.mask(); // prende la maschere d'origine del campo
|
||||||
TAssoc_array v; // istanzia l'hash table per il controllo di univocità
|
TAssoc_array v; // istanzia l'hash table per il controllo di univocità
|
||||||
|
|
||||||
v.add(m.get(F_CODART)); // aggiunge all'hash table il codice articolo originale
|
v.add(m.get(F_CODART)); // aggiunge all'hash table il codice articolo originale
|
||||||
for (int i= 0; i<f.items(); i++) {
|
for (int i= 0; i< items; i++)
|
||||||
if (v.add(f.cell(i,0))) { // aggiunge all'hash table l'elemento 0 (primo) della riga corrente e controlla che non esista già
|
{
|
||||||
error_box("I codici alternativi devono essere diversi tra loro e dal codice dell'articolo");
|
const TString80 codart(f.cell(i,0));
|
||||||
break;
|
|
||||||
}
|
if (codart.empty())
|
||||||
|
return error_box("I codici alternativi non possono essere vuoti");
|
||||||
|
if (v.add(codart))
|
||||||
|
return error_box("I codici alternativi devono essere diversi tra loro e dal codice dell'articolo"); // aggiunge all'hash table l'elemento 0 (primo) della riga corrente e controlla che non esista già
|
||||||
}
|
}
|
||||||
return (i==f.items());
|
}
|
||||||
} else return TRUE;
|
}
|
||||||
} else return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TAnagrafica_magazzino::handle_sheet0_um(TMask_field &fld, KEY k) {
|
bool TAnagrafica_magazzino::handle_sheet0_um(TMask_field &fld, KEY k)
|
||||||
if (k==K_TAB) {
|
{
|
||||||
TMask &m= fld.mask(); // prende la maschera d'origine del campo (maschera dello sheet)
|
if (fld.focusdirty() && k == K_TAB)
|
||||||
TString16 me(fld.get()); // prende il contenuto del campo corrente (unità di misura corrente)
|
{
|
||||||
if (me.not_empty()) { // se il codice dell'unità di misura è vuoto non viene fatto alcun calcolo
|
TMask &m = fld.mask(); // prende la maschera d'origine del campo (maschera dello sheet)
|
||||||
|
const TString16 curr_um(fld.get()); // prende il contenuto del campo corrente (unità di misura corrente)
|
||||||
|
|
||||||
|
if (curr_um.not_empty()) // se il codice dell'unità di misura è vuoto non viene fatto alcun calcolo
|
||||||
|
{
|
||||||
TSheet_field *f= m.get_sheet(); // prende lo sheet d'origine della maschera del campo
|
TSheet_field *f= m.get_sheet(); // prende lo sheet d'origine della maschera del campo
|
||||||
|
|
||||||
CHECK(f != NULL, "Il puntatore allo sheet è nullo");
|
CHECK(f != NULL, "Il puntatore allo sheet è nullo");
|
||||||
if (f->selected() != 0) {
|
if (f->selected() > 0)
|
||||||
|
{
|
||||||
|
|
||||||
// ALGORITMO DI PRECALCOLO DEL RAPPORTO DELLE UNITA' DI MISURA NELLO SHEET
|
// ALGORITMO DI PRECALCOLO DEL RAPPORTO DELLE UNITA' DI MISURA NELLO SHEET
|
||||||
//
|
//
|
||||||
@ -347,32 +437,43 @@ bool TAnagrafica_magazzino::handle_sheet0_um(TMask_field &fld, KEY k) {
|
|||||||
// se (your==my) allora X=(my_fc/your_fc) ...chiaro, no!? :-)
|
// se (your==my) allora X=(my_fc/your_fc) ...chiaro, no!? :-)
|
||||||
|
|
||||||
TTable t("%UMS");
|
TTable t("%UMS");
|
||||||
real x(0.0); // fattore di conversione dell'unità di misura corrente
|
real x; // fattore di conversione dell'unità di misura corrente
|
||||||
const TString16 you(f->row(0).get(0)); // prende l'unità di misura di rapporto (dalla prima linea dello sheet)
|
const TString16 first_um(f->row(0).get(0)); // prende l'unità di misura di rapporto (dalla prima linea dello sheet)
|
||||||
|
|
||||||
t.zero();
|
t.zero();
|
||||||
t.put("CODTAB", me);
|
t.put("CODTAB", curr_um);
|
||||||
if (t.read() == NOERR) {
|
if (t.read() == NOERR)
|
||||||
TString16 my(t.get("S7")); // prende l'unità di misura di riferimento dell'unità di misura corrente
|
{
|
||||||
real my_fc(t.get_real("R0")); // prende il suo fattore di conversione
|
const TString16 rif_um(t.get("S7")); // prende l'unità di misura di riferimento dell'unità di misura corrente
|
||||||
t.zero();
|
x = t.get_real("R10"); // prende il suo fattore di conversione
|
||||||
t.put("CODTAB", you);
|
|
||||||
if (t.read() == NOERR) {
|
if (rif_um != first_um)
|
||||||
TString16 your(t.get("S7")); // prende l'unità di misura di riferimento dell'unità di misura di rapporto
|
{
|
||||||
real your_fc(t.get_real("R0")); // prende il suo fattore di conversione
|
t.zero();
|
||||||
if (your==my) {
|
t.put("CODTAB", first_um);
|
||||||
x= my_fc/your_fc; // calcola il rapporto tra i fattori di conversione
|
if (t.read() == NOERR)
|
||||||
x.round(5); // arrotonda il risultato a 5 decimali
|
{
|
||||||
}
|
TString16 first_um_rif(t.get("S7")); // prende l'unità di misura di riferimento dell'unità di misura di rapporto
|
||||||
}
|
const real first_um_rif_fc(t.get_real("R10")); // prende il suo fattore di conversione
|
||||||
|
if (first_um_rif == rif_um)
|
||||||
|
{
|
||||||
|
x /= first_um_rif_fc; // calcola il rapporto tra i fattori di conversione
|
||||||
|
x.round(5); // arrotonda il risultato a 5 decimali
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
m.set(FS_FCUM, x.stringa()); // il risultato viene scritto nel campo del fattore di conversione
|
if (x == ZERO)
|
||||||
|
x = 1.00;
|
||||||
|
m.set(FS_FCUM, x); // il risultato viene scritto nel campo del fattore di conversione
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ve2400(int argc, char* argv[]) {
|
int ve2400(int argc, char* argv[])
|
||||||
|
{
|
||||||
TAnagrafica_magazzino a;
|
TAnagrafica_magazzino a;
|
||||||
|
|
||||||
a.run(argc, argv, "Anagrafica di magazzino ");
|
a.run(argc, argv, "Anagrafica di magazzino ");
|
||||||
|
1056
ve/ve2400.uml
1056
ve/ve2400.uml
File diff suppressed because it is too large
Load Diff
@ -1,37 +1,46 @@
|
|||||||
|
|
||||||
// SHEET 0 (unità di misura) DI VE2400
|
// SHEET 0 (unita' di misura) DI VE2400
|
||||||
|
|
||||||
PAGE "Pagina 1" 8 5 65 14
|
PAGE "Pagina 1" 8 5 65 11
|
||||||
|
|
||||||
STRING FS_CODUM 2
|
STRING FS_CODUM 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 3 3 "U.M. "
|
PROMPT 3 2 "Unita' di misura "
|
||||||
FIELD LF_UMART->UM
|
FIELD LF_UMART->UM
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
USE %UMS
|
USE %UMS
|
||||||
INPUT CODTAB FS_CODUM
|
INPUT CODTAB FS_CODUM
|
||||||
DISPLAY "U.M. " CODTAB
|
DISPLAY "U.M. " CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT FS_CODUM CODTAB
|
OUTPUT FS_CODUM CODTAB
|
||||||
END
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "Unita' di misura errata"
|
||||||
NUMBER FS_FCUM 15 5
|
END
|
||||||
BEGIN
|
|
||||||
PROMPT 3 7 "Fattore conv. "
|
NUMBER FS_FCUM 15 5
|
||||||
FIELD LF_UMART->FC
|
BEGIN
|
||||||
END
|
PROMPT 3 4 "Fattore di conversione "
|
||||||
|
FIELD LF_UMART->FC
|
||||||
BUTTON 1 9 2
|
CHECKTYPE REQUIRED
|
||||||
BEGIN
|
WARNING "Fattore di conversione obbligatorio"
|
||||||
PROMPT 15 12 ""
|
END
|
||||||
END
|
|
||||||
|
BUTTON DLG_OK 9 2
|
||||||
BUTTON 2 9 2
|
BEGIN
|
||||||
BEGIN
|
PROMPT -13 -1 ""
|
||||||
PROMPT 38 12 ""
|
END
|
||||||
END
|
|
||||||
|
BUTTON DLG_CANCEL 9 2
|
||||||
ENDPAGE
|
BEGIN
|
||||||
|
PROMPT -23 -1 ""
|
||||||
ENDMASK
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_DELREC 9 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -33 -1 "Elimina"
|
||||||
|
MESSAGE EXIT,K_DEL
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
|
@ -1,46 +1,43 @@
|
|||||||
|
|
||||||
// SHEET 1 (descrizioni in lingua) DI VE2400
|
// SHEET 1 (descrizioni in lingua) DI VE2400
|
||||||
|
|
||||||
PAGE "Pagina 1" 8 5 65 14
|
PAGE "Pagina 1" 8 5 65 11
|
||||||
|
|
||||||
STRING FS_CODLIN 1
|
STRING FS_CODLIN 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 3 3 "Codice lingua "
|
PROMPT 3 2 "Codice lingua "
|
||||||
FIELD LF_DESLIN->CODLIN
|
FIELD LF_DESLIN->CODLIN
|
||||||
USE %LNG
|
USE %LNG
|
||||||
INPUT CODTAB FS_CODLIN
|
INPUT CODTAB FS_CODLIN
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
DISPLAY "Descrizione@30" S0
|
DISPLAY "Descrizione@30" S0
|
||||||
OUTPUT FS_CODLIN CODTAB
|
OUTPUT FS_CODLIN CODTAB
|
||||||
// OUTPUT FS_CODLIN1 S0
|
CHECKTYPE REQUIRED
|
||||||
END
|
WARNING "Codice lingua errato"
|
||||||
|
|
||||||
STRING FS_DESCR 50
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 7 "Descrizione "
|
|
||||||
FIELD LF_DESLIN->DESCR
|
|
||||||
VALIDATE REQIF_FUNC 1 FS_CODLIN
|
|
||||||
END
|
END
|
||||||
|
|
||||||
/*
|
STRING FS_DESCR 50
|
||||||
STRING FS_CODLIN1 30
|
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 5 ""
|
PROMPT 3 4 "Descrizione "
|
||||||
FLAG "D"
|
FIELD LF_DESLIN->DESCR
|
||||||
END
|
END
|
||||||
|
|
||||||
*/
|
BUTTON DLG_OK 9 2
|
||||||
|
|
||||||
BUTTON 1 9 2
|
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 15 12 ""
|
PROMPT -13 -1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON 2 9 2
|
BUTTON DLG_CANCEL 9 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 38 12 ""
|
PROMPT -23 -1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_DELREC 9 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -33 -1 "Elimina"
|
||||||
|
MESSAGE EXIT,K_DEL
|
||||||
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
@ -1,40 +1,41 @@
|
|||||||
|
|
||||||
// SHEET 2 (codici alternativi) DI VE2400
|
// SHEET 2 (codici alternativi) DI VE2400
|
||||||
|
|
||||||
PAGE "Pagina 1" 8 5 65 14
|
PAGE "Pagina 1" 8 5 65 11
|
||||||
|
|
||||||
STRING FS_CODARTALT 20
|
STRING FS_CODARTALT 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 3 3 "Codice art. alt. "
|
PROMPT 3 2 "Codice alternativo "
|
||||||
FIELD LF_CODCORR->CODARTALT
|
FIELD LF_CODCORR->CODARTALT
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "Codice alternativo obbligatorio"
|
||||||
END
|
END
|
||||||
|
|
||||||
LISTBOX FS_TIPO 10
|
LISTBOX FS_TIPO 10
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 7 "Tipo di codice "
|
PROMPT 2 4 "Tipo di codice "
|
||||||
ITEM "N|Normal "
|
ITEM "N|Normal "
|
||||||
ITEM "8|EAN8 "
|
ITEM "8|EAN8 "
|
||||||
ITEM "1|EA13 "
|
ITEM "1|EA13 "
|
||||||
ITEM "3|3/9 "
|
ITEM "3|3/9 "
|
||||||
ITEM "C|Codabar"
|
ITEM "C|Codabar"
|
||||||
FIELD LF_CODCORR->TIPO
|
FIELD LF_CODCORR->TIPO
|
||||||
END
|
END
|
||||||
|
|
||||||
/* STRING FS_CODARTALT1 50
|
BUTTON DLG_OK 9 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 5 ""
|
PROMPT -13 -1 ""
|
||||||
FLAG "D"
|
|
||||||
END
|
END
|
||||||
*/
|
|
||||||
|
|
||||||
BUTTON 1 9 2
|
BUTTON DLG_CANCEL 9 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 15 12 ""
|
PROMPT -23 -1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON 2 9 2
|
BUTTON DLG_DELREC 9 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 38 12 ""
|
PROMPT -33 -1 "Elimina"
|
||||||
|
MESSAGE EXIT,K_DEL
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
470
ve/ve3200.cpp
470
ve/ve3200.cpp
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
class TStampa_condizioni_vendita: public TPrint_application {
|
class TStampa_condizioni_vendita: public TPrint_application {
|
||||||
TRelation *_rel; // relazione principale
|
TRelation *_rel; // relazione principale
|
||||||
TString16 _condven; // stringa che indica il tipo di archivio
|
TString16 _condven; // stringa che indica il tipo di archivio
|
||||||
bool _codlis_catven; // booleano di abilitazione della categoria di vendita nella chiave dei listini
|
bool _codlis_catven; // booleano di abilitazione della categoria di vendita nella chiave dei listini
|
||||||
bool _codcon_codcf; // booleano di abilitazione del codice cliente/fornitore nella chiave dei contratti
|
bool _codcon_codcf; // booleano di abilitazione del codice cliente/fornitore nella chiave dei contratti
|
||||||
bool _listval; // booleano di abilitazione della stampa dei listini in valuta
|
bool _listval; // booleano di abilitazione della stampa dei listini in valuta
|
||||||
@ -50,65 +50,65 @@ protected:
|
|||||||
|
|
||||||
|
|
||||||
bool TStampa_condizioni_vendita::user_create() {
|
bool TStampa_condizioni_vendita::user_create() {
|
||||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||||
int indice; // indice delle variabili di configurazione per le abilitazioni
|
int indice; // indice delle variabili di configurazione per le abilitazioni
|
||||||
_condven= "*"; // inizializzazione dell'indicatore del tipo di archivio
|
_condven= "*"; // inizializzazione dell'indicatore del tipo di archivio
|
||||||
if (argc()>2) _condven= argv(2); // se c'è, prende il tipo di archivio dalla linea di comando
|
if (argc()>2) _condven= argv(2); // se c'è, prende il tipo di archivio dalla linea di comando
|
||||||
else {
|
else {
|
||||||
TMask choose("ve3200"); // istanzia la maschera di scelta del tipo di archivio
|
TMask choose("ve3200"); // istanzia la maschera di scelta del tipo di archivio
|
||||||
if (choose.run() == K_ENTER) _condven= choose.get(F_TIPOCV); // prende il tipo di archivio dalla maschera
|
if (choose.run() == K_ENTER) _condven= choose.get(F_TIPOCV); // prende il tipo di archivio dalla maschera
|
||||||
}
|
}
|
||||||
_condven.upper(); // rende la stringa upper-case
|
_condven.upper(); // rende la stringa upper-case
|
||||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
|
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
|
||||||
switch (_condven[0]) {
|
switch (_condven[0]) {
|
||||||
case 'L': // listini
|
case 'L': // listini
|
||||||
indice= A_LISTINI; // setta l'indice dell'archivio listini
|
indice= A_LISTINI; // setta l'indice dell'archivio listini
|
||||||
if (!(prassid.get_bool("GES", NULL, indice))) error_box("L'archivio Listini non è abilititato"); // controlla che l'archivio listini sia abilitato
|
if (!(prassid.get_bool("GES", NULL, indice))) error_box("L'archivio Listini non è abilititato"); // controlla che l'archivio listini sia abilitato
|
||||||
else {
|
else {
|
||||||
_codlis_catven= prassid.get_bool("GESLISCV"); // setta il booleano di abilitazione delle categoria di vendita
|
_codlis_catven= prassid.get_bool("GESLISCV"); // setta il booleano di abilitazione delle categoria di vendita
|
||||||
gotcha= TRUE;
|
gotcha= TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'C': // contratti
|
case 'C': // contratti
|
||||||
indice= A_CONTRATTI; // setta l'indice dell'archivio contratti
|
indice= A_CONTRATTI; // setta l'indice dell'archivio contratti
|
||||||
if (!(prassid.get_bool("GES", NULL, indice))) error_box("L'archivio Contratti non è abilititato"); // controlla che l'archivio contratti sia abilitato
|
if (!(prassid.get_bool("GES", NULL, indice))) error_box("L'archivio Contratti non è abilititato"); // controlla che l'archivio contratti sia abilitato
|
||||||
else {
|
else {
|
||||||
_codcon_codcf= prassid.get_bool("GESCONCC"); // setta il booleano di abilitazione delle categoria di vendita
|
_codcon_codcf= prassid.get_bool("GESCONCC"); // setta il booleano di abilitazione delle categoria di vendita
|
||||||
gotcha= TRUE;
|
gotcha= TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'O': // offerte
|
case 'O': // offerte
|
||||||
indice= A_OFFERTE; // setta l'indice dell'archivio offerte
|
indice= A_OFFERTE; // setta l'indice dell'archivio offerte
|
||||||
if (!(prassid.get_bool("GES", NULL, indice))) error_box("L'archivio Offerte non è abilititato"); // controlla che l'archivio offerte sia abilitato
|
if (!(prassid.get_bool("GES", NULL, indice))) error_box("L'archivio Offerte non è abilititato"); // controlla che l'archivio offerte sia abilitato
|
||||||
else gotcha= TRUE;
|
else gotcha= TRUE;
|
||||||
break;
|
break;
|
||||||
default: // messaggio di errore se si indica un archivio non valido
|
default: // messaggio di errore se si indica un archivio non valido
|
||||||
error_box("Indicare l'archivio sulla linea di comando (L, C o O) oppure selezionarla dalla maschera di partenza");
|
error_box("Indicare l'archivio sulla linea di comando (L, C o O) oppure selezionarla dalla maschera di partenza");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (gotcha) { // se è stato selezionato correttamente un archivio completa l'inizializzazione
|
if (gotcha) { // se è stato selezionato correttamente un archivio completa l'inizializzazione
|
||||||
_gest_um= prassid.get_bool("GESUM", NULL, indice); // setta il booleano di abilitazione delle unità di misura
|
_gest_um= prassid.get_bool("GESUM", NULL, indice); // setta il booleano di abilitazione delle unità di misura
|
||||||
_gest_sca= prassid.get_bool("GESSCA", NULL, indice); // setta il booleano di abilitazione degli scaglioni
|
_gest_sca= prassid.get_bool("GESSCA", NULL, indice); // setta il booleano di abilitazione degli scaglioni
|
||||||
_gest_so= prassid.get_bool("GESSO", NULL, indice); // setta il booleano di abilitazione degli sconti/omaggi
|
_gest_so= prassid.get_bool("GESSO", NULL, indice); // setta il booleano di abilitazione degli sconti/omaggi
|
||||||
_gest_val= prassid.get_bool("GESVAL"); // legge il booleano di abilitazione della gestione delle valute
|
_gest_val= prassid.get_bool("GESVAL"); // legge il booleano di abilitazione della gestione delle valute
|
||||||
_rel= new TRelation(LF_RCONDV); // crea la relazione principale
|
_rel= new TRelation(LF_RCONDV); // crea la relazione principale
|
||||||
_rel->add(LF_ANAGR, "CODART==CODRIGA", 1, LF_RCONDV, ART1);
|
_rel->add(LF_ANAGR, "CODART==CODRIGA", 1, LF_RCONDV, ART1);
|
||||||
_rel->add(LF_ANAGR, "CODART==CODARTOM", 1, LF_RCONDV, ART2);
|
_rel->add(LF_ANAGR, "CODART==CODARTOM", 1, LF_RCONDV, ART2);
|
||||||
_rel->add("%GMC", "CODTAB[1,3]==CODRIGA", 1, LF_RCONDV, GMC1);
|
_rel->add("%GMC", "CODTAB[1,3]==CODRIGA", 1, LF_RCONDV, GMC1);
|
||||||
_rel->add("%GMC", "CODTAB[4,5]==CODRIGA", 1, LF_RCONDV, GMC2);
|
_rel->add("%GMC", "CODTAB[4,5]==CODRIGA", 1, LF_RCONDV, GMC2);
|
||||||
_rel->add("%RFA", "CODTAB==CODRIGA", 1, LF_RCONDV, RFA);
|
_rel->add("%RFA", "CODTAB==CODRIGA", 1, LF_RCONDV, RFA);
|
||||||
_rel->add(LF_CONDV, "TIPO==TIPO|CATVEN==CATVEN|TIPOCF==TIPOCF|CODCF==CODCF|COD==COD");
|
_rel->add(LF_CONDV, "TIPO==TIPO|CATVEN==CATVEN|TIPOCF==TIPOCF|CODCF==CODCF|COD==COD");
|
||||||
_rel->add("%CVE", "CODTAB==CATVEN", 1, LF_CONDV, CVE);
|
_rel->add("%CVE", "CODTAB==CATVEN", 1, LF_CONDV, CVE);
|
||||||
_rel->add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF", 1, LF_CONDV);
|
_rel->add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF", 1, LF_CONDV);
|
||||||
_rel->add("%VAL", "CODTAB==CODVAL", 1, LF_CONDV, VAL);
|
_rel->add("%VAL", "CODTAB==CODVAL", 1, LF_CONDV, VAL);
|
||||||
_rel->add("%UMS", "CODTAB==UM", 1, LF_RCONDV, UMS1);
|
_rel->add("%UMS", "CODTAB==UM", 1, LF_RCONDV, UMS1);
|
||||||
_rel->add("%UMS", "CODTAB==UMOM", 1, LF_RCONDV, UMS2);
|
_rel->add("%UMS", "CODTAB==UMOM", 1, LF_RCONDV, UMS2);
|
||||||
add_cursor(new TCursor(_rel)); // costruisce il cursore sulla relazione e lo passa alla stampa
|
add_cursor(new TCursor(_rel)); // costruisce il cursore sulla relazione e lo passa alla stampa
|
||||||
add_file(LF_RCONDV); // notifica il file delle righe alla stampa
|
add_file(LF_RCONDV); // notifica il file delle righe alla stampa
|
||||||
enable_print_menu(); // abilita il menù di stampa
|
enable_print_menu(); // abilita il menù di stampa
|
||||||
enable_setprint_menu(); // abilita il menù di settaggio della stampa
|
enable_setprint_menu(); // abilita il menù di settaggio della stampa
|
||||||
}
|
}
|
||||||
return (gotcha);
|
return (gotcha);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TStampa_condizioni_vendita::user_destroy() {
|
bool TStampa_condizioni_vendita::user_destroy() {
|
||||||
@ -117,81 +117,81 @@ bool TStampa_condizioni_vendita::user_destroy() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool TStampa_condizioni_vendita::set_print(int) {
|
bool TStampa_condizioni_vendita::set_print(int) {
|
||||||
TMask mask("ve3200x");
|
TMask mask("ve3200x");
|
||||||
mask.set(F_TIPO, _condven); // settaggio del campo di tipo archivio
|
mask.set(F_TIPO, _condven); // settaggio del campo di tipo archivio
|
||||||
switch (_condven[0]) {
|
switch (_condven[0]) {
|
||||||
case 'L': // listini
|
case 'L': // listini
|
||||||
DESTROY(F_C_COD); // eliminazione campi di altri archivi
|
DESTROY(F_C_COD); // eliminazione campi di altri archivi
|
||||||
DESTROY(F_C_TIPOCF);
|
DESTROY(F_C_TIPOCF);
|
||||||
DESTROY(F_C_CODCF);
|
DESTROY(F_C_CODCF);
|
||||||
DESTROY(F_O_COD);
|
DESTROY(F_O_COD);
|
||||||
if (!_codlis_catven) KILL(F_L_CATVEN); // disabilita condizionalmente le categorie di vendita
|
if (!_codlis_catven) KILL(F_L_CATVEN); // disabilita condizionalmente le categorie di vendita
|
||||||
if (!_gest_val) KILL(F_L_LISTVALUTA); // disabilita condizionalmente la gestione delle valute
|
if (!_gest_val) KILL(F_L_LISTVALUTA); // disabilita condizionalmente la gestione delle valute
|
||||||
break;
|
break;
|
||||||
case 'C': // contratti
|
case 'C': // contratti
|
||||||
DESTROY(F_L_COD); // settaggio dei campi da eliminare
|
DESTROY(F_L_COD); // settaggio dei campi da eliminare
|
||||||
DESTROY(F_L_CATVEN);
|
DESTROY(F_L_CATVEN);
|
||||||
DESTROY(F_L_LISTVALUTA);
|
DESTROY(F_L_LISTVALUTA);
|
||||||
DESTROY(F_O_COD);
|
DESTROY(F_O_COD);
|
||||||
if (!_codcon_codcf) { // disabilita condizionalmente i clienti/fornitori
|
if (!_codcon_codcf) { // disabilita condizionalmente i clienti/fornitori
|
||||||
KILL(F_C_TIPOCF);
|
KILL(F_C_TIPOCF);
|
||||||
KILL(F_C_CODCF);
|
KILL(F_C_CODCF);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'O': // offerte
|
case 'O': // offerte
|
||||||
DESTROY(F_L_COD); // settaggio dei campi da eliminare
|
DESTROY(F_L_COD); // settaggio dei campi da eliminare
|
||||||
DESTROY(F_L_CATVEN);
|
DESTROY(F_L_CATVEN);
|
||||||
DESTROY(F_L_LISTVALUTA);
|
DESTROY(F_L_LISTVALUTA);
|
||||||
DESTROY(F_C_TIPOCF);
|
DESTROY(F_C_TIPOCF);
|
||||||
DESTROY(F_C_CODCF);
|
DESTROY(F_C_CODCF);
|
||||||
DESTROY(F_C_COD);
|
DESTROY(F_C_COD);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (mask.run()== K_ENTER) { // lancia la maschera, se viene confermata vengono trovati gli estremi del cursore
|
if (mask.run()== K_ENTER) { // lancia la maschera, se viene confermata vengono trovati gli estremi del cursore
|
||||||
_testastamp= FALSE; // azzera il flag di testa già stampata
|
_testastamp= FALSE; // azzera il flag di testa già stampata
|
||||||
_listval= mask.get_bool(F_L_LISTVALUTA); // legge lo stato del checkbox di abilitazione dei listini in valuta
|
_listval= mask.get_bool(F_L_LISTVALUTA); // legge lo stato del checkbox di abilitazione dei listini in valuta
|
||||||
_testacomp= mask.get_bool(F_TESTACOMP); // legge l'abilitazione della stampa completa della testata
|
_testacomp= mask.get_bool(F_TESTACOMP); // legge l'abilitazione della stampa completa della testata
|
||||||
_righecomp= mask.get_bool(F_RIGHECOMP); // legge l'abilitazione della stampa completa delle righe
|
_righecomp= mask.get_bool(F_RIGHECOMP); // legge l'abilitazione della stampa completa delle righe
|
||||||
TLocalisamfile &rcondv= _rel->lfile(); // prende il file principale
|
TLocalisamfile &rcondv= _rel->lfile(); // prende il file principale
|
||||||
TRectype da(rcondv.curr()); // prepara il record di inizio regione
|
TRectype da(rcondv.curr()); // prepara il record di inizio regione
|
||||||
da.zero();
|
da.zero();
|
||||||
da.put("TIPO", _condven);
|
da.put("TIPO", _condven);
|
||||||
switch (_condven[0]) { // impostazione della chiave della testata
|
switch (_condven[0]) { // impostazione della chiave della testata
|
||||||
case 'L': // listini
|
case 'L': // listini
|
||||||
if (_codlis_catven) da.put("CATVEN", mask.get(F_L_CATVEN));
|
if (_codlis_catven) da.put("CATVEN", mask.get(F_L_CATVEN));
|
||||||
else da.blank("CATVEN"); // riempie il campo di blank se non è gestito
|
else da.blank("CATVEN"); // riempie il campo di blank se non è gestito
|
||||||
da.blank("TIPOCF"); // i campi non gestiti vengono riempiti di blank
|
da.blank("TIPOCF"); // i campi non gestiti vengono riempiti di blank
|
||||||
da.blank("CODCF");
|
da.blank("CODCF");
|
||||||
da.put("COD", mask.get(F_L_COD));
|
da.put("COD", mask.get(F_L_COD));
|
||||||
break;
|
break;
|
||||||
case 'C': // contratti
|
case 'C': // contratti
|
||||||
da.blank("CATVEN"); // i campi non gestiti vengono riempiti di blank
|
da.blank("CATVEN"); // i campi non gestiti vengono riempiti di blank
|
||||||
if (_codcon_codcf) {
|
if (_codcon_codcf) {
|
||||||
da.put("TIPOCF", mask.get(F_C_TIPOCF));
|
da.put("TIPOCF", mask.get(F_C_TIPOCF));
|
||||||
da.put("CODCF", mask.get(F_C_CODCF));
|
da.put("CODCF", mask.get(F_C_CODCF));
|
||||||
} else {
|
} else {
|
||||||
da.blank("TIPOCF"); // riempie i campi di blank se non sono gestiti
|
da.blank("TIPOCF"); // riempie i campi di blank se non sono gestiti
|
||||||
da.blank("CODCF");
|
da.blank("CODCF");
|
||||||
}
|
}
|
||||||
da.put("COD", mask.get(F_C_COD));
|
da.put("COD", mask.get(F_C_COD));
|
||||||
break;
|
break;
|
||||||
case 'O': // offerte
|
case 'O': // offerte
|
||||||
da.blank("CATVEN"); // i campi non gestiti vengono riempiti di blank
|
da.blank("CATVEN"); // i campi non gestiti vengono riempiti di blank
|
||||||
da.blank("TIPOCF");
|
da.blank("TIPOCF");
|
||||||
da.blank("CODCF");
|
da.blank("CODCF");
|
||||||
da.put("COD", mask.get(F_O_COD));
|
da.put("COD", mask.get(F_O_COD));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
TRectype a(da); // prepara il record di fine regione
|
TRectype a(da); // prepara il record di fine regione
|
||||||
if (!(mask.get_bool(F_TUTTERIGHE))) { // setta il filtro sulle righe solo se non è stato selezionato il flag di "tutte le righe"
|
if (!(mask.get_bool(F_TUTTERIGHE))) { // setta il filtro sulle righe solo se non è stato selezionato il flag di "tutte le righe"
|
||||||
da.put("TIPORIGA", mask.get(F_TIPORIGHE));
|
da.put("TIPORIGA", mask.get(F_TIPORIGHE));
|
||||||
da.put("CODRIGA", mask.get(F_DARIGA_A));
|
da.put("CODRIGA", mask.get(F_DARIGA_A));
|
||||||
a.put("TIPORIGA", mask.get(F_TIPORIGHE));
|
a.put("TIPORIGA", mask.get(F_TIPORIGHE));
|
||||||
a.put("CODRIGA", mask.get(F_ARIGA_A));
|
a.put("CODRIGA", mask.get(F_ARIGA_A));
|
||||||
}
|
}
|
||||||
current_cursor()->setregion(da, a); // setta la regione sul cursore
|
current_cursor()->setregion(da, a); // setta la regione sul cursore
|
||||||
force_setpage(); // forza il lancio della set_page() ad ogni record del file da stampare
|
force_setpage(); // forza il lancio della set_page() ad ogni record del file da stampare
|
||||||
disable_links(); // disabilita tutti i link ipertestuali
|
disable_links(); // disabilita tutti i link ipertestuali
|
||||||
// _rcondv_link_id= enable_link("Collegamento a righe condizioni di vendita", 'g'); // abilita il collegamento
|
// _rcondv_link_id= enable_link("Collegamento a righe condizioni di vendita", 'g'); // abilita il collegamento
|
||||||
return TRUE;
|
return TRUE;
|
||||||
} else return FALSE;
|
} else return FALSE;
|
||||||
@ -216,76 +216,90 @@ UO QOM QBASE CODARTOM PROMAGGIO
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
void TStampa_condizioni_vendita::preprocess_header() {
|
void TStampa_condizioni_vendita::preprocess_header() {
|
||||||
reset_header(); // l'header viene resettato
|
reset_header(); // l'header viene resettato
|
||||||
int i= 1; // contatore delle linee
|
int i= 1; // contatore delle linee
|
||||||
const long firm= get_firm(); // legge l'id della ditta corrente
|
const long firm= get_firm(); // legge l'id della ditta corrente
|
||||||
TLocalisamfile ditte(LF_NDITTE); // apre il file ditte
|
TLocalisamfile ditte(LF_NDITTE); // apre il file ditte
|
||||||
ditte.zero(); // vuota il record
|
ditte.zero(); // vuota il record
|
||||||
ditte.put("CODDITTA", firm); // riempie la chiave
|
ditte.put("CODDITTA", firm); // riempie la chiave
|
||||||
if (ditte.read()== NOERR) { // se il record della ditta viene trovato viene settato l'header
|
if (ditte.read()== NOERR) { // se il record della ditta viene trovato viene settato l'header
|
||||||
const TString &s= ditte.get("RAGSOC"); // legge la ragione sociale della ditta
|
const TString &s= ditte.get("RAGSOC"); // legge la ragione sociale della ditta
|
||||||
set_header(i, "@1gDitta %ld %s", firm, (const char *)s); // setta il nome e l'id della ditta della prima linea dell'header
|
set_header(i, "@1gDitta %ld %s", firm, (const char *)s); // setta il nome e l'id della ditta della prima linea dell'header
|
||||||
}
|
}
|
||||||
TLocalisamfile &condv= current_cursor()->file(LF_CONDV);
|
TLocalisamfile &condv= current_cursor()->file(LF_CONDV);
|
||||||
i+=2; // stampa breve della testata, occupa almeno due linee
|
i+=2; // stampa breve della testata, occupa almeno due linee
|
||||||
set_header(i-1, "@14gCod @18gDescrizione @69gVal. dal @78gal @87gIL @90gUM @93gSC @96gSO @99gST @109gSeq"); // setta l'header del codice, della descrizione, della validità, dei booleani, ecc.
|
set_header(i-1, "@14gCod @18gDescrizione @69gVal. dal @78gal @87gIL @90gUM @93gSC @96gSO @99gST @109gSeq"); // setta l'header del codice, della descrizione, della validità, dei booleani, ecc.
|
||||||
set_header(i, "@14g%3s @18g%s @69g%s @78g%s @87g%s @90g%s @93g%s @96g%s @99g%s @109g%s",
|
set_header(i, "@14g%3s", (const char *) condv.get("COD"));
|
||||||
(const char *)(condv.sget("COD")), (const char *)(condv.sget("DESCR")), (const char *)(condv.sget("VALIN")),
|
set_header(i, "@18g%s", (const char *) condv.get("DESCR"));
|
||||||
(const char *)(condv.sget("VALFIN")), (const char *)(condv.sget("IMPLORDI")), (const char *)(condv.sget("GESTUM")),
|
set_header(i, "@69g%s", (const char *) condv.get("VALIN"));
|
||||||
(const char *)(condv.sget("GESTSCAGL")), (const char *)(condv.sget("GESTSCO")), (const char *)(condv.sget("SCONST")),
|
set_header(i, "@78g%s", (const char *) condv.get("VALFIN"));
|
||||||
(const char *)(condv.sget("SEQRIC"))); // codice, descriz., validità e booleani
|
set_header(i, "@87g%s", (const char *) condv.get("IMPLORDI"));
|
||||||
if ((_condven=="L") && _codlis_catven) { // siamo sui listini?
|
set_header(i, "@93g%s", (const char *) condv.get("GESTUM"));
|
||||||
set_header(i-1, "@11gCV"); // setta l'header della categoria di vendita
|
set_header(i, "@90g%s", (const char *) condv.get("GESTSCAGL"));
|
||||||
set_header(i, "@11g%s", (const char *)(condv.sget("CATVEN"))); // categoria di vendita
|
set_header(i, "@96g%s", (const char *) condv.get("GESTSCO"));
|
||||||
|
set_header(i, "@99g%s", (const char *) condv.get("SCONST"));
|
||||||
|
set_header(i, "@109g%s",(const char *) condv.get("SEQRIC"));
|
||||||
|
if ((_condven=="L") && _codlis_catven)
|
||||||
|
{ // siamo sui listini?
|
||||||
|
set_header(i-1, "@11gCV"); // setta l'header della categoria di vendita
|
||||||
|
set_header(i, "@11g%s", (const char *)(condv.get("CATVEN"))); // categoria di vendita
|
||||||
}
|
}
|
||||||
if (_condven=="C") { // siamo sui contratti?
|
if (_condven=="C")
|
||||||
if (_codcon_codcf) { // è abilitato il codice cliente/fornitore?
|
{ // siamo sui contratti?
|
||||||
set_header(i-1, "@1gCF @4gCod.CF"); // setta l'header di clienti/fornitori
|
if (_codcon_codcf)
|
||||||
set_header(i, "@1g%s @4g%6s", (const char *)(condv.sget("TIPOCF")), (const char *)(condv.sget("CODCF"))); // cliente/fornitore
|
{ // è abilitato il codice cliente/fornitore?
|
||||||
}
|
set_header(i-1, "@1gCF @4gCod.CF"); // setta l'header di clienti/fornitori
|
||||||
set_header(i-1, "@102gOB"); // setta l'header di contratto obbligatorio
|
set_header(i, "@1g%s", (const char *)condv.get("TIPOCF")); // cliente/fornitore
|
||||||
set_header(i, "@102g%s", (const char *)(condv.sget("OBBLIG"))); // booleano
|
set_header(i, "@4g%6s", (const char *)condv.get("CODCF")); // cliente/fornitore
|
||||||
|
}
|
||||||
|
set_header(i-1, "@102gOB"); // setta l'header di contratto obbligatorio
|
||||||
|
set_header(i, "@102g%s", (const char *)(condv.get("OBBLIG"))); // booleano
|
||||||
}
|
}
|
||||||
if (_condven=="L") { // siamo su listini?
|
if (_condven=="L")
|
||||||
set_header(i-1, "@105gSuc"); // setta l'header per il codice di listino successivo
|
{ // siamo su listini?
|
||||||
set_header(i, "@105g%3s", (const char *)(condv.sget("CODLISSUCC"))); // codice successivo
|
set_header(i-1, "@105gSuc"); // setta l'header per il codice di listino successivo
|
||||||
|
set_header(i, "@105g%3s", (const char *)(condv.get("CODLISSUCC"))); // codice successivo
|
||||||
}
|
}
|
||||||
if (_gest_val) { // c'è la gestione della valuta?
|
if (_gest_val)
|
||||||
i+=2; // occupa altre due linee
|
{ // c'è la gestione della valuta?
|
||||||
set_header(i-1, "@1gVal @5gCambio @27gData cambio"); // setta l'header del codice e della descrizione
|
i+=2; // occupa altre due linee
|
||||||
set_header(i, "@1g%s @5g%21s @27g%s", (const char *)condv.sget("CODVAL"), (const char *)condv.sget("CAMBIO"), (const char *)condv.sget("DATACAM")); // cambio e valuta
|
set_header(i-1, "@1gVal @5gCambio @27gData cambio"); // setta l'header del codice e della descrizione
|
||||||
}
|
set_header(i, "@1g%s", (const char *)condv.get("CODVAL")); // cambio e valuta
|
||||||
set_header(++i, ""); // salta una riga
|
set_header(i, "@5g%21s", (const char *)condv.get("CAMBIO")); // cambio e valuta
|
||||||
if (!_righecomp) { // impostazione dell'header delle righe se non c'è la stampa esaustiva
|
set_header(i, "@27g%s", (const char *)condv.get("DATACAM")); // cambio e valuta
|
||||||
set_header(++i, "@1gT @3gCodice riga @27gS @29gQuantita' limite @51gPrezzo @73gSconto @99gA @101gIVA @106gProvvig."); // setta l'header della chiave, della quantità limite e del prezzo
|
}
|
||||||
|
set_header(++i, ""); // salta una riga
|
||||||
|
if (!_righecomp)
|
||||||
|
{ // impostazione dell'header delle righe se non c'è la stampa esaustiva
|
||||||
|
set_header(++i, "@1gT @3gCodice riga @27gS @29gQuantita' limite @51gPrezzo @73gSconto @99gA @101gIVA @106gProvvig."); // setta l'header della chiave, della quantità limite e del prezzo
|
||||||
if ((_condven=="L") || (_condven=="O")) set_header(i, "@24gUM"); // setta l'header dell'unità di misura
|
if ((_condven=="L") || (_condven=="O")) set_header(i, "@24gUM"); // setta l'header dell'unità di misura
|
||||||
set_header(++i, "@1gUMO @5gQuantita' omaggio @27gQuantita' base @49gCod. art. omagg. @70gPrezzo omaggio"); // setta l'header dello sconto/omaggio
|
set_header(++i, "@1gUMO @5gQuantita' omaggio @27gQuantita' base @49gCod. art. omagg. @70gPrezzo omaggio"); // setta l'header dello sconto/omaggio
|
||||||
if ((_condven=="C") || (_condven=="O")) set_header(i, "@92gLotto"); // setta l'header del lotto
|
if ((_condven=="C") || (_condven=="O")) set_header(i, "@92gLotto"); // setta l'header del lotto
|
||||||
if (_condven=="O") set_header(i, "@99gEsaur."); // setta l'header dell'articolo in esaurimento
|
if (_condven=="O") set_header(i, "@99gEsaur."); // setta l'header dell'articolo in esaurimento
|
||||||
}
|
}
|
||||||
set_header(++i, ""); // aggiunge due linee vuote
|
set_header(++i, ""); // aggiunge due linee vuote
|
||||||
set_header(++i, "");
|
set_header(++i, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
void TStampa_condizioni_vendita::preprocess_footer() {
|
void TStampa_condizioni_vendita::preprocess_footer() {
|
||||||
reset_footer();
|
reset_footer();
|
||||||
int i= 1; // indice di linea
|
int i= 1; // indice di linea
|
||||||
set_footer(i, ""); // salta una linea
|
set_footer(i, ""); // salta una linea
|
||||||
set_footer(++i, "@125gPag @#"); // l'unica linea del footer contiene il numero di pagina
|
set_footer(++i, "@125gPag @#"); // l'unica linea del footer contiene il numero di pagina
|
||||||
}
|
}
|
||||||
|
|
||||||
void TStampa_condizioni_vendita::set_page(int file, int) {
|
void TStampa_condizioni_vendita::set_page(int file, int) {
|
||||||
if (file== LF_RCONDV) { // se il file in stampa non è il file principale non c'è nulla da fare
|
if (file== LF_RCONDV) { // se il file in stampa non è il file principale non c'è nulla da fare
|
||||||
int i= 0; // indice di riga
|
int i= 0; // indice di riga
|
||||||
if ((printer().getcurrentpage()==1) && _testacomp && (!_testastamp)) { // stampa della testata in forma completa
|
if ((printer().getcurrentpage()==1) && _testacomp && (!_testastamp)) { // stampa della testata in forma completa
|
||||||
if ((_condven=="L") && _codlis_catven) set_row(++i, "Cat. di vendita: @2s @50s", FLD(LF_CONDV, "CATVEN"), FLD(-CVE, "S0"));
|
if ((_condven=="L") && _codlis_catven) set_row(++i, "Cat. di vendita: @2s @50s", FLD(LF_CONDV, "CATVEN"), FLD(-CVE, "S0"));
|
||||||
if ((_condven=="C") && _codcon_codcf) set_row(++i, "Cliente/fornitore: @1s @6s @50s", FLD(LF_CONDV, "TIPOCF"), FLD(LF_CONDV, "CODCF"), FLD(LF_CLIFO, "RAGSOC"));
|
if ((_condven=="C") && _codcon_codcf) set_row(++i, "Cliente/fornitore: @1s @6s @50s", FLD(LF_CONDV, "TIPOCF"), FLD(LF_CONDV, "CODCF"), FLD(LF_CLIFO, "RAGSOC"));
|
||||||
set_row(++i, "Codice: @3s @50s", FLD(LF_CONDV, "COD"), FLD(LF_CONDV, "DESCR"));
|
set_row(++i, "Codice: @3s @50s", FLD(LF_CONDV, "COD"), FLD(LF_CONDV, "DESCR"));
|
||||||
if (_gest_val) {
|
if (_gest_val) {
|
||||||
set_row(++i, "Valuta: @3s @50s", FLD(LF_CONDV, "CODVAL"), FLD(-VAL, "S0"));
|
set_row(++i, "Valuta: @3s @50s", FLD(LF_CONDV, "CODVAL"), FLD(-VAL, "S0"));
|
||||||
set_row(++i, "Cambio: @15.5n (@d)", FLD(LF_CONDV, "CAMBIO"), FLD(LF_CONDV, "DATACAM"));
|
set_row(++i, "Cambio: @15.5n (@d)", FLD(LF_CONDV, "CAMBIO"), FLD(LF_CONDV, "DATACAM"));
|
||||||
}
|
}
|
||||||
set_row(++i, "Validità: dal @d al @d", FLD(LF_CONDV, "VALIN"), FLD(LF_CONDV, "VALFIN"));
|
set_row(++i, "Validità: dal @d al @d", FLD(LF_CONDV, "VALIN"), FLD(LF_CONDV, "VALFIN"));
|
||||||
set_row(++i, "Importi lordi: @f", FLD(LF_CONDV, "IMPLORDI"));
|
set_row(++i, "Importi lordi: @f", FLD(LF_CONDV, "IMPLORDI"));
|
||||||
set_row(++i, "Gestione unità di misura: @f", FLD(LF_CONDV, "GESTUM"));
|
set_row(++i, "Gestione unità di misura: @f", FLD(LF_CONDV, "GESTUM"));
|
||||||
set_row(++i, "Gestione scaglioni: @f", FLD(LF_CONDV, "GESTSCAGL"));
|
set_row(++i, "Gestione scaglioni: @f", FLD(LF_CONDV, "GESTSCAGL"));
|
||||||
@ -297,71 +311,71 @@ void TStampa_condizioni_vendita::set_page(int file, int) {
|
|||||||
set_row(++i, "");
|
set_row(++i, "");
|
||||||
set_row(++i, "");
|
set_row(++i, "");
|
||||||
_testastamp= TRUE;
|
_testastamp= TRUE;
|
||||||
}
|
}
|
||||||
if (_righecomp) { // stampa della riga in forma completa
|
if (_righecomp) { // stampa della riga in forma completa
|
||||||
TLocalisamfile &rcondv= current_cursor()->file();
|
TLocalisamfile &rcondv= current_cursor()->file();
|
||||||
TLocalisamfile &condv= current_cursor()->file(LF_CONDV);
|
TLocalisamfile &condv= current_cursor()->file(LF_CONDV);
|
||||||
TString tiporiga= rcondv.get("TIPORIGA");
|
TString tiporiga= rcondv.get("TIPORIGA");
|
||||||
switch (tiporiga[0]) {
|
switch (tiporiga[0]) {
|
||||||
case 'A':
|
case 'A':
|
||||||
set_row(++i, "Riga: @1s @20s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"));
|
set_row(++i, "Riga: @1s @20s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"));
|
||||||
set_row(++i, "Articolo: @50s", FLD(-ART1, "DESCR"));
|
set_row(++i, "Articolo: @50s", FLD(-ART1, "DESCR"));
|
||||||
break;
|
break;
|
||||||
case 'G':
|
case 'G':
|
||||||
set_row(++i, "Riga: @1s @3s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"));
|
set_row(++i, "Riga: @1s @3s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"));
|
||||||
set_row(++i, "Gruppo merceologico: @50s", FLD(-GMC1, "S0"));
|
set_row(++i, "Gruppo merceologico: @50s", FLD(-GMC1, "S0"));
|
||||||
break;
|
break;
|
||||||
case 'S':
|
case 'S':
|
||||||
set_row(++i, "Riga: @1s @2s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"));
|
set_row(++i, "Riga: @1s @2s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"));
|
||||||
set_row(++i, "Sottogruppo merceologico: @50s", FLD(-GMC2, "S0"));
|
set_row(++i, "Sottogruppo merceologico: @50s", FLD(-GMC2, "S0"));
|
||||||
break;
|
break;
|
||||||
case 'R':
|
case 'R':
|
||||||
set_row(++i, "Riga: @1s @2s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"));
|
set_row(++i, "Riga: @1s @2s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"));
|
||||||
set_row(++i, "Raggruppamento fiscale: @50s", FLD(-RFA, "S0"));
|
set_row(++i, "Raggruppamento fiscale: @50s", FLD(-RFA, "S0"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (condv.get_bool("GESTUM")) set_row(++i, "Unità di misura: @2s @50s", FLD(LF_RCONDV, "UM"), FLD(-UMS1, "S0"));
|
if (condv.get_bool("GESTUM")) set_row(++i, "Unità di misura: @2s @50s", FLD(LF_RCONDV, "UM"), FLD(-UMS1, "S0"));
|
||||||
if (condv.get_bool("GESTSCAGL")) {
|
if (condv.get_bool("GESTSCAGL")) {
|
||||||
set_row(++i, "Scaglione: @1s", FLD(LF_RCONDV, "NSCAGL"));
|
set_row(++i, "Scaglione: @1s", FLD(LF_RCONDV, "NSCAGL"));
|
||||||
set_row(++i, "Quantità limite scaglione: @15.5n", FLD(LF_RCONDV, "QLIM"));
|
set_row(++i, "Quantità limite scaglione: @15.5n", FLD(LF_RCONDV, "QLIM"));
|
||||||
}
|
}
|
||||||
set_row(++i, "Prezzo: @18.2n", FLD(LF_RCONDV, "PREZZO"));
|
set_row(++i, "Prezzo: @18.2n", FLD(LF_RCONDV, "PREZZO"));
|
||||||
set_row(++i, "Sconto: @25s", FLD(LF_RCONDV, "SCONTO"));
|
set_row(++i, "Sconto: @25s", FLD(LF_RCONDV, "SCONTO"));
|
||||||
set_row(++i, "Addebito IVA: @f", FLD(LF_RCONDV, "ADDIVA"));
|
set_row(++i, "Addebito IVA: @f", FLD(LF_RCONDV, "ADDIVA"));
|
||||||
set_row(++i, "Codice IVA: @4s", FLD(LF_RCONDV, "CODIVA"));
|
set_row(++i, "Codice IVA: @4s", FLD(LF_RCONDV, "CODIVA"));
|
||||||
set_row(++i, "Percentuale di provvigione: @5.2n", FLD(LF_RCONDV, "PERCPROVV"));
|
set_row(++i, "Percentuale di provvigione: @5.2n", FLD(LF_RCONDV, "PERCPROVV"));
|
||||||
if (condv.get_bool("GESTSCO")) {
|
if (condv.get_bool("GESTSCO")) {
|
||||||
set_row(++i, "Quantità merce omaggio: @15.5n", FLD(LF_RCONDV, "QOM"));
|
set_row(++i, "Quantità merce omaggio: @15.5n", FLD(LF_RCONDV, "QOM"));
|
||||||
set_row(++i, "Quantità base: @15.5n", FLD(LF_RCONDV, "QBASE"));
|
set_row(++i, "Quantità base: @15.5n", FLD(LF_RCONDV, "QBASE"));
|
||||||
set_row(++i, "Articolo omaggio: @20s @50s", FLD(LF_RCONDV, "CODARTOM"), FLD(-ART2, "DESCR"));
|
set_row(++i, "Articolo omaggio: @20s @50s", FLD(LF_RCONDV, "CODARTOM"), FLD(-ART2, "DESCR"));
|
||||||
set_row(++i, "Prezzo omaggio: @18.2n", FLD(LF_RCONDV, "PROMAGGIO"));
|
set_row(++i, "Prezzo omaggio: @18.2n", FLD(LF_RCONDV, "PROMAGGIO"));
|
||||||
if (condv.get_bool("GESTUM")) set_row(++i, "Unità di misura quantità omaggio: @2s @50s", FLD(LF_RCONDV, "UMOM"), FLD(-UMS2, "S0"));
|
if (condv.get_bool("GESTUM")) set_row(++i, "Unità di misura quantità omaggio: @2s @50s", FLD(LF_RCONDV, "UMOM"), FLD(-UMS2, "S0"));
|
||||||
}
|
}
|
||||||
// if ((_condven=="C") || (_condven=="O")) set_row(++i, "Codice lotto: @6s", FLD(LF_RCONDV, "CODLOTTO"));
|
// if ((_condven=="C") || (_condven=="O")) set_row(++i, "Codice lotto: @6s", FLD(LF_RCONDV, "CODLOTTO"));
|
||||||
if (_condven=="O") set_row(++i, "Articolo in esaurimento: @f", FLD(LF_RCONDV, "ARTES"));
|
if (_condven=="O") set_row(++i, "Articolo in esaurimento: @f", FLD(LF_RCONDV, "ARTES"));
|
||||||
set_row(++i, ""); // salta una riga
|
set_row(++i, ""); // salta una riga
|
||||||
} else { // stampa della riga in forma abbreviata
|
} else { // stampa della riga in forma abbreviata
|
||||||
set_row(++i, "@1g@1s @3g@20s @27g@1s @29g@15.5n @51g@18.2n @73g@25s @99g@1s @101g@4s @106g@5.2n", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"), FLD(LF_RCONDV, "NSCAGL"), FLD(LF_RCONDV, "QLIM"), FLD(LF_RCONDV, "PREZZO"),
|
set_row(++i, "@1g@1s @3g@20s @27g@1s @29g@15.5n @51g@18.2n @73g@25s @99g@1s @101g@4s @106g@5.2n", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"), FLD(LF_RCONDV, "NSCAGL"), FLD(LF_RCONDV, "QLIM"), FLD(LF_RCONDV, "PREZZO"),
|
||||||
FLD(LF_RCONDV, "SCONTO"), FLD(LF_RCONDV, "ADDIVA"), FLD(LF_RCONDV, "CODIVA"), FLD(LF_RCONDV, "PERCPROVV")); // codice, prezzo...
|
FLD(LF_RCONDV, "SCONTO"), FLD(LF_RCONDV, "ADDIVA"), FLD(LF_RCONDV, "CODIVA"), FLD(LF_RCONDV, "PERCPROVV")); // codice, prezzo...
|
||||||
if ((_condven=="L") || (_condven=="O")) set_row(i, "@24g@2s", FLD(LF_RCONDV, "UM")); // unità di misura
|
if ((_condven=="L") || (_condven=="O")) set_row(i, "@24g@2s", FLD(LF_RCONDV, "UM")); // unità di misura
|
||||||
set_row(++i, "@1g@2s @5g@15.5n @27g@15.5n @49g@20s @70g@18.2n", FLD(LF_RCONDV, "UMOM"), FLD(LF_RCONDV, "QOM"), FLD(LF_RCONDV, "QBASE"), FLD(LF_RCONDV, "CODARTOM"), FLD(LF_RCONDV, "PROMAGGIO")); // sconto/omaggio
|
set_row(++i, "@1g@2s @5g@15.5n @27g@15.5n @49g@20s @70g@18.2n", FLD(LF_RCONDV, "UMOM"), FLD(LF_RCONDV, "QOM"), FLD(LF_RCONDV, "QBASE"), FLD(LF_RCONDV, "CODARTOM"), FLD(LF_RCONDV, "PROMAGGIO")); // sconto/omaggio
|
||||||
if ((_condven=="C") || (_condven=="O")) set_row(i, "@92g@6s", FLD(LF_RCONDV, "CODLOTTO")); // lotto
|
if ((_condven=="C") || (_condven=="O")) set_row(i, "@92g@6s", FLD(LF_RCONDV, "CODLOTTO")); // lotto
|
||||||
if (_condven=="O") set_row(i, "@99g@1s", FLD(LF_RCONDV, "ARTES"));
|
if (_condven=="O") set_row(i, "@99g@1s", FLD(LF_RCONDV, "ARTES"));
|
||||||
set_row(++i, ""); // salta una riga
|
set_row(++i, ""); // salta una riga
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
void TStampa_condizioni_vendita::process_link(int id, const char *text) {
|
void TStampa_condizioni_vendita::process_link(int id, const char *text) {
|
||||||
if (id== _rcondv_link_id) {
|
if (id== _rcondv_link_id) {
|
||||||
TString body= "1|"; // istanzia la stringa per il corpo del messaggio e gli aggiunge il numero della chiave e il separatore
|
TString body= "1|"; // istanzia la stringa per il corpo del messaggio e gli aggiunge il numero della chiave e il separatore
|
||||||
body << text; // aggiunge al corpo del messaggio il codice dell'articolo per riempire la chiave
|
body << text; // aggiunge al corpo del messaggio il codice dell'articolo per riempire la chiave
|
||||||
TMessage msg(RCONDV_APP, MSG_LN, (const char *)body); // crea il messaggio per l'applicazione
|
TMessage msg(RCONDV_APP, MSG_LN, (const char *)body); // crea il messaggio per l'applicazione
|
||||||
msg.send(); // invia il messaggio
|
msg.send(); // invia il messaggio
|
||||||
TExternal_app ve2_2(RCONDV_APP); // crea l'applicazione esterna
|
TExternal_app ve2_2(RCONDV_APP); // crea l'applicazione esterna
|
||||||
ve2_2.run(); // lancia l'applicazione esterna
|
ve2_2.run(); // lancia l'applicazione esterna
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
2142
ve/ve6200.cpp
2142
ve/ve6200.cpp
File diff suppressed because it is too large
Load Diff
864
ve/ve6300.cpp
864
ve/ve6300.cpp
@ -1,432 +1,432 @@
|
|||||||
// ve6300.cpp. Composizione interattiva dei documenti.
|
// ve6300.cpp. Composizione interattiva dei documenti.
|
||||||
|
|
||||||
#include <sheet.h>
|
#include <sheet.h>
|
||||||
#include <application.h>
|
#include <application.h>
|
||||||
#include <stdtypes.h>
|
#include <stdtypes.h>
|
||||||
#include <mask.h>
|
#include <mask.h>
|
||||||
#include <relation.h>
|
#include <relation.h>
|
||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
#include <isam.h>
|
#include <isam.h>
|
||||||
#include <real.h>
|
#include <real.h>
|
||||||
#include <maskfld.h>
|
#include <maskfld.h>
|
||||||
#include <urldefid.h>
|
#include <urldefid.h>
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
#include <tabutil.h>
|
#include <tabutil.h>
|
||||||
#include "ve6retv.h"
|
#include "ve6retv.h"
|
||||||
#include "ve6300.h"
|
#include "ve6300.h"
|
||||||
#include "ve6gen.h"
|
#include "ve6gen.h"
|
||||||
|
|
||||||
class TInterattivo_crea_doc : public TBatch_crea_doc
|
class TInterattivo_crea_doc : public TBatch_crea_doc
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
virtual bool menu (MENU_TAG);
|
virtual bool menu (MENU_TAG);
|
||||||
virtual bool create ();
|
virtual bool create ();
|
||||||
virtual bool destroy();
|
virtual bool destroy();
|
||||||
|
|
||||||
// int set_vars(); // setta le variabili della classe
|
// int set_vars(); // setta le variabili della classe
|
||||||
int componi_doc_finale(); // corpo del programma
|
int componi_doc_finale(); // corpo del programma
|
||||||
static bool tipo_doc_handler (TMask_field&, KEY); // handler per il campo tipo doc. destinaz. della maschera
|
static bool tipo_doc_handler (TMask_field&, KEY); // handler per il campo tipo doc. destinaz. della maschera
|
||||||
// static bool filterfunct(const TRelation*); // funzione per filtrare i documenti originali
|
// static bool filterfunct(const TRelation*); // funzione per filtrare i documenti originali
|
||||||
|
|
||||||
int _rdoc; // numero di righe nel documento finale
|
int _rdoc; // numero di righe nel documento finale
|
||||||
public:
|
public:
|
||||||
TInterattivo_crea_doc(void) {}
|
TInterattivo_crea_doc(void) {}
|
||||||
~TInterattivo_crea_doc() {}
|
~TInterattivo_crea_doc() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
inline TInterattivo_crea_doc& app() { return (TInterattivo_crea_doc&) main_app(); }
|
inline TInterattivo_crea_doc& app() { return (TInterattivo_crea_doc&) main_app(); }
|
||||||
|
|
||||||
bool TInterattivo_crea_doc::create()
|
bool TInterattivo_crea_doc::create()
|
||||||
{
|
{
|
||||||
_interattivo = TRUE;
|
_interattivo = TRUE;
|
||||||
// _stesso_anno_fiscale = FALSE;
|
// _stesso_anno_fiscale = FALSE;
|
||||||
|
|
||||||
int cargc = argc();
|
int cargc = argc();
|
||||||
const char **vargv = argv();
|
const char **vargv = argv();
|
||||||
|
|
||||||
if (cargc>=2)
|
if (cargc>=2)
|
||||||
{
|
{
|
||||||
if (cargc<5) fatal_box ("Numero di parametri insufficiente: chiave incompleta!");
|
if (cargc<5) fatal_box ("Numero di parametri insufficiente: chiave incompleta!");
|
||||||
if (cargc>=5)
|
if (cargc>=5)
|
||||||
{
|
{
|
||||||
_codnum = vargv[2];
|
_codnum = vargv[2];
|
||||||
_anno = vargv[3];
|
_anno = vargv[3];
|
||||||
_provv = vargv[4];
|
_provv = vargv[4];
|
||||||
_ndoc = vargv[5];
|
_ndoc = vargv[5];
|
||||||
}
|
}
|
||||||
if (cargc==7) _crea_doc = TRUE;
|
if (cargc==7) _crea_doc = TRUE;
|
||||||
else _crea_doc = FALSE;
|
else _crea_doc = FALSE;
|
||||||
if (cargc>7) message_box ("Sono presenti piu' di 6 argomenti sulla linea di comando: possibile errore");
|
if (cargc>7) message_box ("Sono presenti piu' di 6 argomenti sulla linea di comando: possibile errore");
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch_e_menu(BAR_ITEM(1));
|
dispatch_e_menu(BAR_ITEM(1));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TInterattivo_crea_doc::destroy()
|
bool TInterattivo_crea_doc::destroy()
|
||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TInterattivo_crea_doc::menu(MENU_TAG)
|
bool TInterattivo_crea_doc::menu(MENU_TAG)
|
||||||
{
|
{
|
||||||
// if (errore_fatale (set_vars())) return FALSE;
|
// if (errore_fatale (set_vars())) return FALSE;
|
||||||
if (errore_fatale (componi_doc_finale())) return FALSE;
|
if (errore_fatale (componi_doc_finale())) return FALSE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
TInterattivo_crea_doc::set_vars()
|
TInterattivo_crea_doc::set_vars()
|
||||||
{
|
{
|
||||||
TMask m("ve6300.uml");
|
TMask m("ve6300.uml");
|
||||||
|
|
||||||
m.set_handler (F_TIPODOCDES, tipo_doc_handler);
|
m.set_handler (F_TIPODOCDES, tipo_doc_handler);
|
||||||
if (m.run()==K_ESC) return ESC_PRESSED;
|
if (m.run()==K_ESC) return ESC_PRESSED;
|
||||||
_datadoc = m.get(F_DATADOC); // data da assegnare al documento da creare
|
_datadoc = m.get(F_DATADOC); // data da assegnare al documento da creare
|
||||||
_first_codcf = _last_codcf = m.get_long(F_CODCF); // codice cliente
|
_first_codcf = _last_codcf = m.get_long(F_CODCF); // codice cliente
|
||||||
_tipo_doc_des = m.get(F_TIPODOCDES); // tipo del documento da creare
|
_tipo_doc_des = m.get(F_TIPODOCDES); // tipo del documento da creare
|
||||||
_codnum = m.get(F_CODNUM); // codice numerazione per il documento da creare
|
_codnum = m.get(F_CODNUM); // codice numerazione per il documento da creare
|
||||||
_anno << _datadoc.year(); // anno fiscale del documento da creare
|
_anno << _datadoc.year(); // anno fiscale del documento da creare
|
||||||
_provv = m.get(F_PROVV); // indica se il la numerazione _codnum e' provvisoria o definitiva
|
_provv = m.get(F_PROVV); // indica se il la numerazione _codnum e' provvisoria o definitiva
|
||||||
|
|
||||||
// cerca il record di ELD che corrisponde a _tipo_doc_des
|
// cerca il record di ELD che corrisponde a _tipo_doc_des
|
||||||
// TRelation rel("ELD");
|
// TRelation rel("ELD");
|
||||||
// TString16 filter ("S8==\"");
|
// TString16 filter ("S8==\"");
|
||||||
// filter << _tipo_doc_des << '"';
|
// filter << _tipo_doc_des << '"';
|
||||||
// TCursor curs(&rel, filter);
|
// TCursor curs(&rel, filter);
|
||||||
// if (curs.items()==0)
|
// if (curs.items()==0)
|
||||||
// {
|
// {
|
||||||
// fatal_box (TString("Nessuna elaborazione genera documenti del tipo ") << _tipo_doc_des);
|
// fatal_box (TString("Nessuna elaborazione genera documenti del tipo ") << _tipo_doc_des);
|
||||||
// return NO_ELABS;
|
// return NO_ELABS;
|
||||||
// }
|
// }
|
||||||
// else if (curs.items()>1)
|
// else if (curs.items()>1)
|
||||||
// warning_box ("Trovate %d elaborazioni per la generazione dei documenti di tipo %s", curs.items(), (const char*)_tipo_doc_des);
|
// warning_box ("Trovate %d elaborazioni per la generazione dei documenti di tipo %s", curs.items(), (const char*)_tipo_doc_des);
|
||||||
//
|
//
|
||||||
// return 0;
|
// return 0;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// handler per il tipo documento di destinazione
|
// handler per il tipo documento di destinazione
|
||||||
bool TInterattivo_crea_doc::tipo_doc_handler (TMask_field& field, KEY key)
|
bool TInterattivo_crea_doc::tipo_doc_handler (TMask_field& field, KEY key)
|
||||||
{
|
{
|
||||||
if (key == K_TAB)
|
if (key == K_TAB)
|
||||||
{
|
{
|
||||||
if (field.to_check(key))
|
if (field.to_check(key))
|
||||||
{
|
{
|
||||||
TFixed_string tdd(field.get(),4); // tipo del documento destinazione selezionato
|
TFixed_string tdd(field.get(),4); // tipo del documento destinazione selezionato
|
||||||
tdd.trim();
|
tdd.trim();
|
||||||
TTable t("%TIP");
|
TTable t("%TIP");
|
||||||
t.zero();
|
t.zero();
|
||||||
t.put ("CODTAB", tdd); // cerca tipo del documento destinazione
|
t.put ("CODTAB", tdd); // cerca tipo del documento destinazione
|
||||||
t.read (_isgteq);
|
t.read (_isgteq);
|
||||||
/* if (err = t.read (_isgteq)) // si posiziona sul record relativo al documento del tipo specificato
|
/* if (err = t.read (_isgteq)) // si posiziona sul record relativo al documento del tipo specificato
|
||||||
{
|
{
|
||||||
error_box ("TElaborazioni::run_mask() : errore di lettura %d da tab(TIP)", err);
|
error_box ("TElaborazioni::run_mask() : errore di lettura %d da tab(TIP)", err);
|
||||||
return READ_ERROR;
|
return READ_ERROR;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
if (t.get ("CODTAB") != tdd) // verifica che il tipo di documento trovato sia quello richiesto
|
if (t.get ("CODTAB") != tdd) // verifica che il tipo di documento trovato sia quello richiesto
|
||||||
{
|
{
|
||||||
error_box ("TElaborazioni::run_mask() : non esiste il tipo documento %s in tab(TIP)", (const char *)tdd);
|
error_box ("TElaborazioni::run_mask() : non esiste il tipo documento %s in tab(TIP)", (const char *)tdd);
|
||||||
return DOC_TYPE_NOT_FOUND;
|
return DOC_TYPE_NOT_FOUND;
|
||||||
}
|
}
|
||||||
TFilename profilo(t.get ("S4")); // nome del profilo documento (nome del .ini associato al tipo documento originale)
|
TFilename profilo(t.get ("S4")); // nome del profilo documento (nome del .ini associato al tipo documento originale)
|
||||||
profilo.ext("ini");
|
profilo.ext("ini");
|
||||||
TConfig profilo_doc(profilo); // file di configurazione (ini) del documento
|
TConfig profilo_doc(profilo); // file di configurazione (ini) del documento
|
||||||
TString tipocf = (profilo_doc.get("TIPOCF", "MAIN"));
|
TString tipocf = (profilo_doc.get("TIPOCF", "MAIN"));
|
||||||
tipocf.cut(1);
|
tipocf.cut(1);
|
||||||
field.mask().set(F_TIPOCF, tipocf);
|
field.mask().set(F_TIPOCF, tipocf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TMask& mask = field.mask();
|
TMask& mask = field.mask();
|
||||||
TFixed_string s(mask.get(F_TIPIDOC), 40);
|
TFixed_string s(mask.get(F_TIPIDOC), 40);
|
||||||
if (key==K_ENTER || key==K_TAB)
|
if (key==K_ENTER || key==K_TAB)
|
||||||
return (s.find(field.get()) % 4) == 0; // per evitare che trovi "0010" in "00010002"
|
return (s.find(field.get()) % 4) == 0; // per evitare che trovi "0010" in "00010002"
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TInterattivo_crea_doc::componi_doc_finale()
|
int TInterattivo_crea_doc::componi_doc_finale()
|
||||||
{
|
{
|
||||||
int err; // errori ritornati dalle funzioni
|
int err; // errori ritornati dalle funzioni
|
||||||
// long n; // numero della fattura nella numerazione corrente
|
// long n; // numero della fattura nella numerazione corrente
|
||||||
bool no_select = TRUE; // TRUE se non sono stati selezionati documenti dallo sheet
|
bool no_select = TRUE; // TRUE se non sono stati selezionati documenti dallo sheet
|
||||||
bool no_elab = TRUE; // TRUE se non ha ancora elaborato nessun documento
|
bool no_elab = TRUE; // TRUE se non ha ancora elaborato nessun documento
|
||||||
TLocalisamfile f(LF_DOC); // per gestire la testata dei documenti
|
TLocalisamfile f(LF_DOC); // per gestire la testata dei documenti
|
||||||
TLocalisamfile rdoc(LF_RIGHEDOC); // per gestire le righe dei documenti
|
TLocalisamfile rdoc(LF_RIGHEDOC); // per gestire le righe dei documenti
|
||||||
int current = 0; // chiave corrente
|
int current = 0; // chiave corrente
|
||||||
TRectype pilota (LF_DOC); // record per il documento pilota
|
TRectype pilota (LF_DOC); // record per il documento pilota
|
||||||
TTable t("NUM"); // tabella numerazioni
|
TTable t("NUM"); // tabella numerazioni
|
||||||
TRectype tempr(LF_DOC); // record del documento originale che si sta elaborando
|
TRectype tempr(LF_DOC); // record del documento originale che si sta elaborando
|
||||||
TRectype temprdoc (LF_RIGHEDOC); // record per trovare le righe dei documenti originale
|
TRectype temprdoc (LF_RIGHEDOC); // record per trovare le righe dei documenti originale
|
||||||
// int nrdoc; // numero di righe scritte nella fattura
|
// int nrdoc; // numero di righe scritte nella fattura
|
||||||
// bool end = FALSE; // true non ci sono piu' documenti originali da elaborare
|
// bool end = FALSE; // true non ci sono piu' documenti originali da elaborare
|
||||||
bool altri; // TRUE se ci sono altri documenti da includere nella fattura
|
bool altri; // TRUE se ci sono altri documenti da includere nella fattura
|
||||||
// se _crea_doc, il documento destinazione (testata) deve essere inizializzato
|
// se _crea_doc, il documento destinazione (testata) deve essere inizializzato
|
||||||
// con i valori del primo documento originale selezionato
|
// con i valori del primo documento originale selezionato
|
||||||
bool primo_pilota = _crea_doc;
|
bool primo_pilota = _crea_doc;
|
||||||
|
|
||||||
f.put ("CODNUM", _codnum); // la fattura va numerata in base alla codnum specificata in ELD
|
f.put ("CODNUM", _codnum); // la fattura va numerata in base alla codnum specificata in ELD
|
||||||
f.put ("ANNO", _anno); // imposta l'anno del documento
|
f.put ("ANNO", _anno); // imposta l'anno del documento
|
||||||
f.put ("PROVV", _provv); // imposta provv./def. del documento
|
f.put ("PROVV", _provv); // imposta provv./def. del documento
|
||||||
f.put ("NDOC", _ndoc); // imposta il numero del documento
|
f.put ("NDOC", _ndoc); // imposta il numero del documento
|
||||||
|
|
||||||
err = f.read(_isgteq); // cerca il documento
|
err = f.read(_isgteq); // cerca il documento
|
||||||
if (err) // guarda se si è verificato un errore
|
if (err) // guarda se si è verificato un errore
|
||||||
{
|
{
|
||||||
error_box ("Errore di lettura %d in doc, cercando il documento", err);
|
error_box ("Errore di lettura %d in doc, cercando il documento", err);
|
||||||
return READ_ERROR;
|
return READ_ERROR;
|
||||||
}
|
}
|
||||||
/* else if (_crea_doc) f.curr() = pilota; // tutti i campi della fattura sono uguali al documento pilota, tranne alcuni (impostati più sotto)
|
/* else if (_crea_doc) f.curr() = pilota; // tutti i campi della fattura sono uguali al documento pilota, tranne alcuni (impostati più sotto)
|
||||||
else {
|
else {
|
||||||
// confronta f.curr() e pilota (se pilota ha dei campi diversi, segnalalo e chiedi conferma
|
// confronta f.curr() e pilota (se pilota ha dei campi diversi, segnalalo e chiedi conferma
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
// }
|
// }
|
||||||
_first_codcf = _last_codcf = f.get_long("CODCF"); // valori del campo CODCF dei records first e last, per potervi accedere dalla filterfunct()
|
_first_codcf = _last_codcf = f.get_long("CODCF"); // valori del campo CODCF dei records first e last, per potervi accedere dalla filterfunct()
|
||||||
_tipo_doc_des = f.get ("TIPODOC"); // imposta il tipo di documento
|
_tipo_doc_des = f.get ("TIPODOC"); // imposta il tipo di documento
|
||||||
_stato_f_doc_f = f.get ("STATO"); // stato della fattura appena creata
|
_stato_f_doc_f = f.get ("STATO"); // stato della fattura appena creata
|
||||||
|
|
||||||
TRelation rel (LF_DOC);
|
TRelation rel (LF_DOC);
|
||||||
TString tdfilter(1024);
|
TString tdfilter(1024);
|
||||||
tdfilter =""; // non so se e' necessaria
|
tdfilter =""; // non so se e' necessaria
|
||||||
#ifdef _TDD_IN_FILTER
|
#ifdef _TDD_IN_FILTER
|
||||||
// filtro costruito in base a tutti i tipi di doc. che hanno un ELD che li trasforma in _tipo_doc_des
|
// filtro costruito in base a tutti i tipi di doc. che hanno un ELD che li trasforma in _tipo_doc_des
|
||||||
tdfilter = td_ELD_to_filter(_tipo_doc_des);
|
tdfilter = td_ELD_to_filter(_tipo_doc_des);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TSorted_cursor curs (&rel, "NDOC", tdfilter); // lista i documenti ordinati per numero
|
TSorted_cursor curs (&rel, "NDOC", tdfilter); // lista i documenti ordinati per numero
|
||||||
curs.set_filterfunction (filterfunct);
|
curs.set_filterfunction (filterfunct);
|
||||||
|
|
||||||
// non dovrebbe servire : _raggruppa = TRUE;
|
// non dovrebbe servire : _raggruppa = TRUE;
|
||||||
_per_articolo = TRUE;
|
_per_articolo = TRUE;
|
||||||
|
|
||||||
// Cursore per selezionare le testate dei documenti
|
// Cursore per selezionare le testate dei documenti
|
||||||
if (curs.items() == 0) // se non ci sono bolle allo stato richiesto, indica errore
|
if (curs.items() == 0) // se non ci sono bolle allo stato richiesto, indica errore
|
||||||
{
|
{
|
||||||
error_box ("Nessun documento da elaborare.");
|
error_box ("Nessun documento da elaborare.");
|
||||||
return NO_ORG_DOCS;
|
return NO_ORG_DOCS;
|
||||||
}
|
}
|
||||||
curs.freeze(); // non perdere tempo a riaggiornarti
|
curs.freeze(); // non perdere tempo a riaggiornarti
|
||||||
// curs=0; // comincia dal primo documento della lista
|
// curs=0; // comincia dal primo documento della lista
|
||||||
|
|
||||||
// scandaglia tutto curs e setta _processed tutti i doc. originali che non sono selezionati
|
// scandaglia tutto curs e setta _processed tutti i doc. originali che non sono selezionati
|
||||||
TString80 Titolo("Documenti elaborabili che possono diventare ");
|
TString80 Titolo("Documenti elaborabili che possono diventare ");
|
||||||
Titolo << _tipo_doc_des;
|
Titolo << _tipo_doc_des;
|
||||||
TCursor_sheet docs_sheet(&curs,
|
TCursor_sheet docs_sheet(&curs,
|
||||||
" |NDOC|TIPODOC|DATADOC|TIPOCF|CODCF|OCFPI",
|
" |NDOC|TIPODOC|DATADOC|TIPOCF|CODCF|OCFPI",
|
||||||
Titolo,
|
Titolo,
|
||||||
"@1|Numero@7|Tipo@4|Data@10|C/F|Cod. cliente|CF o P.IVA@16");
|
"@1|Numero@7|Tipo@4|Data@10|C/F|Cod. cliente|CF o P.IVA@16");
|
||||||
|
|
||||||
docs_sheet.enable_check();
|
docs_sheet.enable_check();
|
||||||
if (docs_sheet.run()==K_ESC) return ESC_PRESSED;
|
if (docs_sheet.run()==K_ESC) return ESC_PRESSED;
|
||||||
for (int i=0; i<docs_sheet.items(); i++)
|
for (int i=0; i<docs_sheet.items(); i++)
|
||||||
if (!docs_sheet.checked(i))_processed.set(i);
|
if (!docs_sheet.checked(i))_processed.set(i);
|
||||||
else no_select = FALSE;
|
else no_select = FALSE;
|
||||||
if (no_select)
|
if (no_select)
|
||||||
{
|
{
|
||||||
error_box ("Nessun documento selezionato.");
|
error_box ("Nessun documento selezionato.");
|
||||||
return NO_ORG_DOCS;
|
return NO_ORG_DOCS;
|
||||||
}
|
}
|
||||||
|
|
||||||
// scandaglia tutto curs e torna con errore se un doc. originale non hanno la ELD
|
// scandaglia tutto curs e torna con errore se un doc. originale non hanno la ELD
|
||||||
for (int l=0; l<curs.items();l++)
|
for (int l=0; l<curs.items();l++)
|
||||||
if (!_processed[l])
|
if (!_processed[l])
|
||||||
{
|
{
|
||||||
if ((err = esiste_ELD(curs,l,DONT_SET_PROCESSED))==ELAB_NOT_FOUND) return err;
|
if ((err = esiste_ELD(curs,l,DONT_SET_PROCESSED))==ELAB_NOT_FOUND) return err;
|
||||||
TRectype &curr = curs.curr();
|
TRectype &curr = curs.curr();
|
||||||
TConfig doc_config (getini(curr,err), "RAGGRUPPA"); // prende il .ini di curr
|
TConfig doc_config (getini(curr,err), "RAGGRUPPA"); // prende il .ini di curr
|
||||||
_stati_validi_doc_i = doc_config.get ("STATIVALIDI"); // stato iniziale del documento originale
|
_stati_validi_doc_i = doc_config.get ("STATIVALIDI"); // stato iniziale del documento originale
|
||||||
if (!statovalido(curr))
|
if (!statovalido(curr))
|
||||||
{
|
{
|
||||||
error_box("Documento selezionato (tipo %s,numero %s) non e' in uno stato adatto all'elaborazione",
|
error_box("Documento selezionato (tipo %s,numero %s) non e' in uno stato adatto all'elaborazione",
|
||||||
curr.get("TIPODOC"), curr.get("NDOC"));
|
curr.get("TIPODOC"), curr.get("NDOC"));
|
||||||
return ERR_STATO_NON_VALIDO;
|
return ERR_STATO_NON_VALIDO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while (next_pilota(curs,pilota)) // ciclo di generazione fattura
|
while (next_pilota(curs,pilota)) // ciclo di generazione fattura
|
||||||
// locka automaticamente il documento (pilota) che sta elaborando
|
// locka automaticamente il documento (pilota) che sta elaborando
|
||||||
{
|
{
|
||||||
// get_info(pilota);
|
// get_info(pilota);
|
||||||
//*****************************************************
|
//*****************************************************
|
||||||
//* questa sezione serve a CREARE il documento finale *
|
//* questa sezione serve a CREARE il documento finale *
|
||||||
//*****************************************************
|
//*****************************************************
|
||||||
|
|
||||||
// imposta il numero per la fattura da creare
|
// imposta il numero per la fattura da creare
|
||||||
// inserisce il record di testata della fattura che va a creare
|
// inserisce il record di testata della fattura che va a creare
|
||||||
|
|
||||||
tempr = pilota; // il primo documento org. da elaborare è quello pilota
|
tempr = pilota; // il primo documento org. da elaborare è quello pilota
|
||||||
|
|
||||||
// qui inizia il ciclo per la creazione della fattura
|
// qui inizia il ciclo per la creazione della fattura
|
||||||
// N.B.: appende ogni documento originale nella fattura
|
// N.B.: appende ogni documento originale nella fattura
|
||||||
TRecord_array doc_destinazione (LF_RIGHEDOC, "NRIGA"); // array contenente le righe della fattura
|
TRecord_array doc_destinazione (LF_RIGHEDOC, "NRIGA"); // array contenente le righe della fattura
|
||||||
TRectype r (LF_RIGHEDOC); // costruisce ed imposta la chiave per doc_destinazione
|
TRectype r (LF_RIGHEDOC); // costruisce ed imposta la chiave per doc_destinazione
|
||||||
r.zero();
|
r.zero();
|
||||||
r.put ("CODNUM", _codnum);
|
r.put ("CODNUM", _codnum);
|
||||||
r.put ("ANNO", _anno);
|
r.put ("ANNO", _anno);
|
||||||
r.put ("PROVV", _provv);
|
r.put ("PROVV", _provv);
|
||||||
r.put ("NDOC", _ndoc);
|
r.put ("NDOC", _ndoc);
|
||||||
doc_destinazione.read(r);
|
doc_destinazione.read(r);
|
||||||
// doc_destinazione.set_key(&r);
|
// doc_destinazione.set_key(&r);
|
||||||
|
|
||||||
// legge tutte le fatture
|
// legge tutte le fatture
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
// appende il documento originale al documento di destinazione
|
// appende il documento originale al documento di destinazione
|
||||||
get_info(tempr);
|
get_info(tempr);
|
||||||
bool raggr_parz = get_raggr_parz(tempr,err);
|
bool raggr_parz = get_raggr_parz(tempr,err);
|
||||||
TString met = metodo(tempr);
|
TString met = metodo(tempr);
|
||||||
// elab_righe restituisce TRUE solo se tutte le righe del documento originale
|
// elab_righe restituisce TRUE solo se tutte le righe del documento originale
|
||||||
// sono state elaborate, quando cioe' il doc_destinazione deve cambiare stato
|
// sono state elaborate, quando cioe' il doc_destinazione deve cambiare stato
|
||||||
if (elab_righe(met,raggr_parz,tempr,doc_destinazione,temprdoc))
|
if (elab_righe(met,raggr_parz,tempr,doc_destinazione,temprdoc))
|
||||||
{
|
{
|
||||||
curs.file(LF_DOC).put ("STATO", _stato_f_doc_i); // aggiorna lo stato del documento originale
|
curs.file(LF_DOC).put ("STATO", _stato_f_doc_i); // aggiorna lo stato del documento originale
|
||||||
curs.file(LF_DOC).setkey(1);
|
curs.file(LF_DOC).setkey(1);
|
||||||
if (err = curs.file(LF_DOC).rewrite())
|
if (err = curs.file(LF_DOC).rewrite())
|
||||||
{
|
{
|
||||||
error_box ("ve6200: Errore fatale: %d scrivendo sul file DOC", err);
|
error_box ("ve6200: Errore fatale: %d scrivendo sul file DOC", err);
|
||||||
return RECORD_WRITE_ERROR;
|
return RECORD_WRITE_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (primo_pilota)
|
if (primo_pilota)
|
||||||
{
|
{
|
||||||
primo_pilota = FALSE;
|
primo_pilota = FALSE;
|
||||||
f = tempr;
|
f = tempr;
|
||||||
f.put ("CODNUM", _codnum);
|
f.put ("CODNUM", _codnum);
|
||||||
f.put ("ANNO", _anno);
|
f.put ("ANNO", _anno);
|
||||||
f.put ("PROVV", _provv);
|
f.put ("PROVV", _provv);
|
||||||
f.put ("NDOC", _ndoc);
|
f.put ("NDOC", _ndoc);
|
||||||
f.put ("TIPODOC", _tipo_doc_des); // reimposta il tipo di documento
|
f.put ("TIPODOC", _tipo_doc_des); // reimposta il tipo di documento
|
||||||
f.put ("STATO", _stato_f_doc_f); // stato della fattura appena creata
|
f.put ("STATO", _stato_f_doc_f); // stato della fattura appena creata
|
||||||
// curs.file(LF_DOC).setkey(1);
|
// curs.file(LF_DOC).setkey(1);
|
||||||
if (err = f.rewrite())
|
if (err = f.rewrite())
|
||||||
{
|
{
|
||||||
error_box ("ve6200: Errore fatale: %d scrivendo sul file DOC", err);
|
error_box ("ve6200: Errore fatale: %d scrivendo sul file DOC", err);
|
||||||
return RECORD_WRITE_ERROR;
|
return RECORD_WRITE_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// unlocka il record del documento processato
|
// unlocka il record del documento processato
|
||||||
curs.file(LF_DOC).setkey(2);
|
curs.file(LF_DOC).setkey(2);
|
||||||
curs.unlock();
|
curs.unlock();
|
||||||
// indica che il documento e' stato processato
|
// indica che il documento e' stato processato
|
||||||
_processed.set(curs.pos());
|
_processed.set(curs.pos());
|
||||||
// cerca il prossimo doc. org. da inserire. Se non ce ne sono piu', termina la generazione fattura
|
// cerca il prossimo doc. org. da inserire. Se non ce ne sono piu', termina la generazione fattura
|
||||||
// se ce ne sono ancora, mette in tempr il record di doc del prossimo documento da agguungere
|
// se ce ne sono ancora, mette in tempr il record di doc del prossimo documento da agguungere
|
||||||
altri = search(pilota, tempr, curs);
|
altri = search(pilota, tempr, curs);
|
||||||
}
|
}
|
||||||
while (altri); // fine del ciclo che raggruppa le bolle dentro una fattura
|
while (altri); // fine del ciclo che raggruppa le bolle dentro una fattura
|
||||||
|
|
||||||
// controlla se deve raggruppare le righe per codice articolo
|
// controlla se deve raggruppare le righe per codice articolo
|
||||||
if (_per_articolo && (doc_destinazione.rows() > 1)) // se deve raggr. e ci sono almeno 2 righe
|
if (_per_articolo && (doc_destinazione.rows() > 1)) // se deve raggr. e ci sono almeno 2 righe
|
||||||
raggruppa_righe (doc_destinazione);
|
raggruppa_righe (doc_destinazione);
|
||||||
|
|
||||||
// salva la fattura creata
|
// salva la fattura creata
|
||||||
if (err = doc_destinazione.write())
|
if (err = doc_destinazione.write())
|
||||||
{
|
{
|
||||||
error_box ("Errore nella scrittura del doc. destinazione. err = %d", err);
|
error_box ("Errore nella scrittura del doc. destinazione. err = %d", err);
|
||||||
return RECORD_WRITE_ERROR;
|
return RECORD_WRITE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
no_elab = FALSE; // ha elaborato almeno un documento
|
no_elab = FALSE; // ha elaborato almeno un documento
|
||||||
|
|
||||||
// cerca il prossimo documeto pilota
|
// cerca il prossimo documeto pilota
|
||||||
}; // finche' i documenti non finiscono
|
}; // finche' i documenti non finiscono
|
||||||
if (no_elab) // se non ci sono bolle allo stato richiesto, indica errore
|
if (no_elab) // se non ci sono bolle allo stato richiesto, indica errore
|
||||||
{
|
{
|
||||||
error_box ("Nessun documento elaborato.");
|
error_box ("Nessun documento elaborato.");
|
||||||
return NO_ORG_DOCS;
|
return NO_ORG_DOCS;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ve6300 (int argc, char** argv)
|
int ve6300 (int argc, char** argv)
|
||||||
{
|
{
|
||||||
TInterattivo_crea_doc a;
|
TInterattivo_crea_doc a;
|
||||||
a.run (argc, argv, "Composizione documenti");
|
a.run (argc, argv, "Composizione documenti");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
TPerson p ("MATTEO LIGABUE");
|
TPerson p ("MATTEO LIGABUE");
|
||||||
p.send_message(
|
p.send_message(
|
||||||
"DISCLAIMER: se leggerai questo pseudocodice e lo troverai childish, sappi che dopo la prima
|
"DISCLAIMER: se leggerai questo pseudocodice e lo troverai childish, sappi che dopo la prima
|
||||||
stesura non l'ho piu' modificato, quindi questa e' l'idea che inizialmente avevo del programma
|
stesura non l'ho piu' modificato, quindi questa e' l'idea che inizialmente avevo del programma
|
||||||
di composizione interattiva.");
|
di composizione interattiva.");
|
||||||
p.bye();
|
p.bye();
|
||||||
|
|
||||||
- il prg per ora fa:
|
- il prg per ora fa:
|
||||||
|
|
||||||
a) runna una maschera in cui chiede:
|
a) runna una maschera in cui chiede:
|
||||||
a1) il codice di numerazione del doc da comporre (+PROVV)
|
a1) il codice di numerazione del doc da comporre (+PROVV)
|
||||||
a2) il tipo di documento da comporre
|
a2) il tipo di documento da comporre
|
||||||
a3) la data (AUTOMAGIC)
|
a3) la data (AUTOMAGIC)
|
||||||
a4) TIPOCF/CODCF del doc da comporre (e degli originali da selezionare)
|
a4) TIPOCF/CODCF del doc da comporre (e degli originali da selezionare)
|
||||||
a5) tipo di documento originale (da TOGLIERE !!!)
|
a5) tipo di documento originale (da TOGLIERE !!!)
|
||||||
|
|
||||||
b) runna un TCursor_Sheet con i documenti individuati da scegliere ed elaborare
|
b) runna un TCursor_Sheet con i documenti individuati da scegliere ed elaborare
|
||||||
|
|
||||||
c) runna un TInterattivo_sheet (TCursor_Sheet) con le singole righe da elaborare (selezionabili)
|
c) runna un TInterattivo_sheet (TCursor_Sheet) con le singole righe da elaborare (selezionabili)
|
||||||
|
|
||||||
d) se la relativa tabella ELD permette l'evasione di parti di riga,
|
d) se la relativa tabella ELD permette l'evasione di parti di riga,
|
||||||
a1) mostrare il TCursor_sheet o TSpreadsheet (TSheet_field con maschera ve6301.uml)
|
a1) mostrare il TCursor_sheet o TSpreadsheet (TSheet_field con maschera ve6301.uml)
|
||||||
a2) che possa trattare l'evasione parziale (TCursor_sheet -> con un campo number staccato dallo sheet)
|
a2) che possa trattare l'evasione parziale (TCursor_sheet -> con un campo number staccato dallo sheet)
|
||||||
a3) oppure il TSpreadsheet (TSheet_field) con tutte le colonne disabilitate, tranne la QTA_DA_EVADERE
|
a3) oppure il TSpreadsheet (TSheet_field) con tutte le colonne disabilitate, tranne la QTA_DA_EVADERE
|
||||||
|
|
||||||
il programma deve ancora:
|
il programma deve ancora:
|
||||||
|
|
||||||
a) passare la trasformazione al ve6200, che nella sua parte centrale (elaborazione del singolo doc.)
|
a) passare la trasformazione al ve6200, che nella sua parte centrale (elaborazione del singolo doc.)
|
||||||
deve avere la eventuale selezione (da richiedersi in base ad un flag che ve6200 e ve6300 devono
|
deve avere la eventuale selezione (da richiedersi in base ad un flag che ve6200 e ve6300 devono
|
||||||
settare rispettivamente a FALSE e TRUE, alla propria entrata) delle singole righe....
|
settare rispettivamente a FALSE e TRUE, alla propria entrata) delle singole righe....
|
||||||
aggiornare la qtaevase dei singoli sorgenti...
|
aggiornare la qtaevase dei singoli sorgenti...
|
||||||
lo stato del documento varia solo con la completa evasione delle righe !!!
|
lo stato del documento varia solo con la completa evasione delle righe !!!
|
||||||
|
|
||||||
... da continuare ...
|
... da continuare ...
|
||||||
|
|
||||||
- controllare lo stato dei documenti originali
|
- controllare lo stato dei documenti originali
|
||||||
|
|
||||||
-*chiama una funzione che runna la maschera e copia i nomi dei campi in variabili private
|
-*chiama una funzione che runna la maschera e copia i nomi dei campi in variabili private
|
||||||
-*chiama una funzione che trova il record di ELD relativo al documento destinazione specificato
|
-*chiama una funzione che trova il record di ELD relativo al documento destinazione specificato
|
||||||
e setta le rimanenti variabili private
|
e setta le rimanenti variabili private
|
||||||
-*chiama una funzione che trova i documenti (testate) validi. Usare un TSorted_cursor od un
|
-*chiama una funzione che trova i documenti (testate) validi. Usare un TSorted_cursor od un
|
||||||
TRecord_array
|
TRecord_array
|
||||||
|
|
||||||
componi la testata del documento originale con le variabili private (non metterci NDOC)
|
componi la testata del documento originale con le variabili private (non metterci NDOC)
|
||||||
while l'utente non preme il button "Salva" per salvare il documento composto
|
while l'utente non preme il button "Salva" per salvare il documento composto
|
||||||
se l'utente vuole inserire un documento dalla lista allora
|
se l'utente vuole inserire un documento dalla lista allora
|
||||||
mostra la lista
|
mostra la lista
|
||||||
per ogni documento selezionato
|
per ogni documento selezionato
|
||||||
se il flag "raggruppa unito" e' true, allora // caso doc. orig = BOLLE
|
se il flag "raggruppa unito" e' true, allora // caso doc. orig = BOLLE
|
||||||
fagli vedere le righe
|
fagli vedere le righe
|
||||||
attendi che prema un button
|
attendi che prema un button
|
||||||
se preme ok aggiungi le righe al documento finale
|
se preme ok aggiungi le righe al documento finale
|
||||||
end se ru=TRUE
|
end se ru=TRUE
|
||||||
altrimenti // caso doc. orig = ORDINI
|
altrimenti // caso doc. orig = ORDINI
|
||||||
fagli vedere le righe
|
fagli vedere le righe
|
||||||
attendi che selezioni le righe (possibilita' di selezionarle tutte)
|
attendi che selezioni le righe (possibilita' di selezionarle tutte)
|
||||||
//
|
//
|
||||||
usare un TBit_array per indicare se una riga va evasa tutta oppure se ne e' stata specificata una parte
|
usare un TBit_array per indicare se una riga va evasa tutta oppure se ne e' stata specificata una parte
|
||||||
settare a TRUE tutto il TBit_array; ??????????
|
settare a TRUE tutto il TBit_array; ??????????
|
||||||
se doubleclicka una riga
|
se doubleclicka una riga
|
||||||
chiedigli la quantita' da evadere (puo' essere inferiore alla quantita' ordinata su quella riga)
|
chiedigli la quantita' da evadere (puo' essere inferiore alla quantita' ordinata su quella riga)
|
||||||
scrivi nel documento originale la quantita' evasa
|
scrivi nel documento originale la quantita' evasa
|
||||||
setta il TBit_array per indicare che nella bolla deve essere scritta la quantita' evasa
|
setta il TBit_array per indicare che nella bolla deve essere scritta la quantita' evasa
|
||||||
end se dblclk riga
|
end se dblclk riga
|
||||||
//
|
//
|
||||||
...preferisco usare un TArray delle quantita' evase
|
...preferisco usare un TArray delle quantita' evase
|
||||||
|
|
||||||
end altrimenti (ru=FALSE)
|
end altrimenti (ru=FALSE)
|
||||||
end per ogni documento selezionato
|
end per ogni documento selezionato
|
||||||
end se seleziona dei documenti
|
end se seleziona dei documenti
|
||||||
altrimenti // vuole aggiungere delle righe
|
altrimenti // vuole aggiungere delle righe
|
||||||
leggi i campi della riga (settando automaticamente codnum, ecc.)
|
leggi i campi della riga (settando automaticamente codnum, ecc.)
|
||||||
metti la riga letta nel documento finale
|
metti la riga letta nel documento finale
|
||||||
end altrimenti (inserimento righe)
|
end altrimenti (inserimento righe)
|
||||||
end
|
end
|
||||||
|
|
||||||
scrivi NDOC nella testata del documento
|
scrivi NDOC nella testata del documento
|
||||||
scrivi la testata del documento
|
scrivi la testata del documento
|
||||||
salva il documento destinazione
|
salva il documento destinazione
|
||||||
end
|
end
|
||||||
*/
|
*/
|
||||||
|
26
ve/ve6300.h
26
ve/ve6300.h
@ -1,14 +1,14 @@
|
|||||||
// Include file per ve6300.uml
|
// Include file per ve6300.uml
|
||||||
|
|
||||||
#define F_CODNUM 101
|
#define F_CODNUM 101
|
||||||
#define F_TIPIDOC 102
|
#define F_TIPIDOC 102
|
||||||
#define F_PROVV 103
|
#define F_PROVV 103
|
||||||
#define F_TIPODOCDES 104
|
#define F_TIPODOCDES 104
|
||||||
#define F_DESCR_TIPODOCDES 105
|
#define F_DESCR_TIPODOCDES 105
|
||||||
#define F_DATADOC 106
|
#define F_DATADOC 106
|
||||||
#define F_TIPOCF 107
|
#define F_TIPOCF 107
|
||||||
#define F_CODCF 108
|
#define F_CODCF 108
|
||||||
#define F_RAGSOC 109
|
#define F_RAGSOC 109
|
||||||
#define F_TIPODOCORG 110
|
#define F_TIPODOCORG 110
|
||||||
#define F_DESCR_TIPODOCORG 111
|
#define F_DESCR_TIPODOCORG 111
|
||||||
#define F_INIDOCORG 112
|
#define F_INIDOCORG 112
|
236
ve/ve6300.uml
236
ve/ve6300.uml
@ -1,118 +1,118 @@
|
|||||||
PAGE "Selezione parametri" 0 0 0 0
|
PAGE "Selezione parametri" 0 0 0 0
|
||||||
|
|
||||||
#include <ve6300.h>
|
#include "ve6300.h"
|
||||||
|
|
||||||
BUTTON DLG_OK 9 2
|
BUTTON DLG_OK 9 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 20 19 ""
|
PROMPT 20 19 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_CANCEL 9 2
|
BUTTON DLG_CANCEL 9 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 40 19 ""
|
PROMPT 40 19 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_CODNUM 4
|
STRING F_CODNUM 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "Codice numerazione: "
|
PROMPT 1 1 "Codice numerazione: "
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
USE NUM KEY 1
|
USE NUM KEY 1
|
||||||
INPUT CODTAB F_CODNUM
|
INPUT CODTAB F_CODNUM
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_CODNUM CODTAB
|
OUTPUT F_CODNUM CODTAB
|
||||||
OUTPUT F_TIPIDOC S2
|
OUTPUT F_TIPIDOC S2
|
||||||
OUTPUT F_PROVV S8
|
OUTPUT F_PROVV S8
|
||||||
HELP "Codice numerazione per il documento da creare"
|
HELP "Codice numerazione per il documento da creare"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_TIPIDOC 40
|
STRING F_TIPIDOC 40
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 28 1 "Tipi documenti"
|
PROMPT 28 1 "Tipi documenti"
|
||||||
FLAG ""
|
FLAG ""
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_PROVV 1
|
STRING F_PROVV 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 84 1 "Provv"
|
PROMPT 84 1 "Provv"
|
||||||
FLAG ""
|
FLAG ""
|
||||||
HELP "Indica se la numerazione e' provvisoria (P) o definitiva (D)"
|
HELP "Indica se la numerazione e' provvisoria (P) o definitiva (D)"
|
||||||
WARNING "I tipi di numerazione ammessi sono provvisoria (P) e definitiva (D)"
|
WARNING "I tipi di numerazione ammessi sono provvisoria (P) e definitiva (D)"
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_TIPODOCDES 4
|
STRING F_TIPODOCDES 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 2 "Tipo documento: "
|
PROMPT 1 2 "Tipo documento: "
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
USE %TIP KEY 1
|
USE %TIP KEY 1
|
||||||
INPUT CODTAB F_TIPODOCDES
|
INPUT CODTAB F_TIPODOCDES
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_TIPODOCDES CODTAB
|
OUTPUT F_TIPODOCDES CODTAB
|
||||||
OUTPUT F_DESCR_TIPODOCDES S0
|
OUTPUT F_DESCR_TIPODOCDES S0
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
HELP "Tipo del documento da creare"
|
HELP "Tipo del documento da creare"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_DESCR_TIPODOCDES 50
|
STRING F_DESCR_TIPODOCDES 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 28 2 "Descrizione: "
|
PROMPT 28 2 "Descrizione: "
|
||||||
USE %TIP KEY 1
|
USE %TIP KEY 1
|
||||||
INPUT F_DESCR_TIPODOCDES S0
|
INPUT F_DESCR_TIPODOCDES S0
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
COPY OUTPUT F_TIPODOCDES
|
COPY OUTPUT F_TIPODOCDES
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_DATADOC
|
DATE F_DATADOC
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 3 "Data: "
|
PROMPT 1 3 "Data: "
|
||||||
FLAG "A"
|
FLAG "A"
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
HELP "Data da assegnare al documento"
|
HELP "Data da assegnare al documento"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_TIPOCF 1
|
STRING F_TIPOCF 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 5 "Tipo Cliente/Fornitore "
|
PROMPT 1 5 "Tipo Cliente/Fornitore "
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
// FLAG "U"
|
// FLAG "U"
|
||||||
// HELP "Indica C se cliente, F se fornitore"
|
// HELP "Indica C se cliente, F se fornitore"
|
||||||
// WARNING "Ho detto: C se cliente, F se fornitore (obbligatorio)"
|
// WARNING "Ho detto: C se cliente, F se fornitore (obbligatorio)"
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CODCF 6
|
NUMBER F_CODCF 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 6 "Codice cliente: "
|
PROMPT 1 6 "Codice cliente: "
|
||||||
FLAG "UR"
|
FLAG "UR"
|
||||||
USE LF_CLIFO KEY 1
|
USE LF_CLIFO KEY 1
|
||||||
INPUT TIPOCF F_TIPOCF
|
INPUT TIPOCF F_TIPOCF
|
||||||
INPUT CODCF F_CODCF
|
INPUT CODCF F_CODCF
|
||||||
DISPLAY "Codice" CODCF
|
DISPLAY "Codice" CODCF
|
||||||
DISPLAY "Descrizione@50" RAGSOC
|
DISPLAY "Descrizione@50" RAGSOC
|
||||||
OUTPUT F_CODCF CODCF
|
OUTPUT F_CODCF CODCF
|
||||||
OUTPUT F_RAGSOC RAGSOC
|
OUTPUT F_RAGSOC RAGSOC
|
||||||
HELP "Inserisci il codice del cliente/fornitore"
|
HELP "Inserisci il codice del cliente/fornitore"
|
||||||
WARNING "Codice cliente/fornitore non trovato"
|
WARNING "Codice cliente/fornitore non trovato"
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_RAGSOC 50
|
STRING F_RAGSOC 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 27 6 "Ragione sociale "
|
PROMPT 27 6 "Ragione sociale "
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
USE LF_CLIFO KEY 2
|
USE LF_CLIFO KEY 2
|
||||||
INPUT TIPOCF F_TIPOCF
|
INPUT TIPOCF F_TIPOCF
|
||||||
INPUT RAGSOC F_RAGSOC
|
INPUT RAGSOC F_RAGSOC
|
||||||
DISPLAY "Descrizione@50" RAGSOC
|
DISPLAY "Descrizione@50" RAGSOC
|
||||||
DISPLAY "Codice" CODCF
|
DISPLAY "Codice" CODCF
|
||||||
COPY OUTPUT F_CODCF
|
COPY OUTPUT F_CODCF
|
||||||
HELP "Inserisci la ragione sociale del cliente"
|
HELP "Inserisci la ragione sociale del cliente"
|
||||||
WARNING "Ragione sociale non trovata nell'elenco clienti/fornitori"
|
WARNING "Ragione sociale non trovata nell'elenco clienti/fornitori"
|
||||||
END
|
END
|
||||||
|
|
||||||
END
|
END
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
@ -1,22 +1,22 @@
|
|||||||
PAGE "Selezione parametri" 0 0 0 0
|
PAGE "Selezione parametri" 0 0 0 0
|
||||||
|
|
||||||
#include <ve6300.h>
|
#include "ve6300.h"
|
||||||
|
|
||||||
BUTTON DLG_OK 9 2
|
BUTTON DLG_OK 9 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 20 19 ""
|
PROMPT 20 19 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_CANCEL 9 2
|
BUTTON DLG_CANCEL 9 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 40 19 ""
|
PROMPT 40 19 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
SPREADSHEET F_SHEET 70 15
|
SPREADSHEET F_SHEET 70 15
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 5 4 ""
|
PROMPT 5 4 ""
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|
||||||
END
|
END
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
256
ve/ve6gen.h
256
ve/ve6gen.h
@ -1,128 +1,128 @@
|
|||||||
// Dichiarazione della classe generale.
|
// Dichiarazione della classe generale.
|
||||||
|
|
||||||
#ifndef _TELABORAZIONI_DECL
|
#ifndef _TELABORAZIONI_DECL
|
||||||
#define _TELABORAZIONI_DECL
|
#define _TELABORAZIONI_DECL
|
||||||
|
|
||||||
#include <sheet.h>
|
#include <sheet.h>
|
||||||
#include <application.h>
|
#include <application.h>
|
||||||
#include <stdtypes.h>
|
#include <stdtypes.h>
|
||||||
#include <mask.h>
|
#include <mask.h>
|
||||||
#include <relation.h>
|
#include <relation.h>
|
||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
#include <isam.h>
|
#include <isam.h>
|
||||||
#include <real.h>
|
#include <real.h>
|
||||||
#include <maskfld.h>
|
#include <maskfld.h>
|
||||||
#include <urldefid.h>
|
#include <urldefid.h>
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
#include "ve6retv.h"
|
#include "ve6retv.h"
|
||||||
#include "ve6300.h"
|
#include "ve6300.h"
|
||||||
#include "ve6gen.h"
|
#include "ve6gen.h"
|
||||||
|
|
||||||
#include <applicat.h>
|
#include <applicat.h>
|
||||||
//#include <strings.h>
|
//#include <strings.h>
|
||||||
#include "ve6.h"
|
#include "ve6.h"
|
||||||
#include <array.h>
|
#include <array.h>
|
||||||
|
|
||||||
#define _TDD_IN_FILTER
|
#define _TDD_IN_FILTER
|
||||||
|
|
||||||
#define STATO_PPT '*'
|
#define STATO_PPT '*'
|
||||||
#define SET_PROCESSED TRUE
|
#define SET_PROCESSED TRUE
|
||||||
#define DONT_SET_PROCESSED FALSE
|
#define DONT_SET_PROCESSED FALSE
|
||||||
|
|
||||||
class TElaborazioni : public TApplication
|
class TElaborazioni : public TApplication
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
// i data members sono protected in modo che gli oggetti generatori
|
// i data members sono protected in modo che gli oggetti generatori
|
||||||
// possano accedervi senza la necessità di funzioni specifiche
|
// possano accedervi senza la necessità di funzioni specifiche
|
||||||
TString16 _codnum; // (stringa di 4)
|
TString16 _codnum; // (stringa di 4)
|
||||||
TString16 _anno; // int _anno;
|
TString16 _anno; // int _anno;
|
||||||
TString16 _provv; // char _provv;
|
TString16 _provv; // char _provv;
|
||||||
TString16 _ndoc; // int _ndoc;
|
TString16 _ndoc; // int _ndoc;
|
||||||
bool _crea_doc; // deve creare il documento di destinazione ?
|
bool _crea_doc; // deve creare il documento di destinazione ?
|
||||||
int _ordinamento; // indica il tipo di ordinamento
|
int _ordinamento; // indica il tipo di ordinamento
|
||||||
bool _raggruppa; // indica se si deve raggruppare o no
|
bool _raggruppa; // indica se si deve raggruppare o no
|
||||||
bool _per_articolo; // indica se raggruppare le righe per codice articolo o no
|
bool _per_articolo; // indica se raggruppare le righe per codice articolo o no
|
||||||
int _chiave; // chiave di doc usata per selezionare i doc. originali
|
int _chiave; // chiave di doc usata per selezionare i doc. originali
|
||||||
TBit_array _processed; // array in cui è indicato se un documento di _chiavi è stato processato o no
|
TBit_array _processed; // array in cui è indicato se un documento di _chiavi è stato processato o no
|
||||||
TString _tipo_doc_org; // tipo documento originale
|
TString _tipo_doc_org; // tipo documento originale
|
||||||
TString _tipo_doc_des; // tipo documento finale
|
TString _tipo_doc_des; // tipo documento finale
|
||||||
TString80 _stati_validi_doc_i;// lista stati documenti originali prima dell'elaborazione
|
TString80 _stati_validi_doc_i;// lista stati documenti originali prima dell'elaborazione
|
||||||
TString _stato_f_doc_i; // dopo l'elaborazione
|
TString _stato_f_doc_i; // dopo l'elaborazione
|
||||||
TString _stato_f_doc_f; // stato documento finale al termine dell'operazione
|
TString _stato_f_doc_f; // stato documento finale al termine dell'operazione
|
||||||
// TString _codnum; // codice per la numerazione del documento di destinazione
|
// TString _codnum; // codice per la numerazione del documento di destinazione
|
||||||
bool _sosp_imposta; // T/F sospensione imposta
|
bool _sosp_imposta; // T/F sospensione imposta
|
||||||
bool _cod_sconto; // T/F codice sconto
|
bool _cod_sconto; // T/F codice sconto
|
||||||
bool _stesso_anno; // T/F STESSOANNOFISCALE in [RAGGR.] del .ini del doc pilota
|
bool _stesso_anno; // T/F STESSOANNOFISCALE in [RAGGR.] del .ini del doc pilota
|
||||||
TDate _datadoc; // data dei documenti che si vanno a creare
|
TDate _datadoc; // data dei documenti che si vanno a creare
|
||||||
|
|
||||||
bool errore_fatale(int); // ritorna true se l'errore passato come argomento è nella lista degli errori fatali
|
bool errore_fatale(int); // ritorna true se l'errore passato come argomento è nella lista degli errori fatali
|
||||||
public:
|
public:
|
||||||
TElaborazioni() : _provv(1) { _chiave = 2; }
|
TElaborazioni() : _provv(1) { _chiave = 2; }
|
||||||
~TElaborazioni () {}
|
~TElaborazioni () {}
|
||||||
};
|
};
|
||||||
|
|
||||||
// TCursor_sheet con la on_key() customizzata per l'inserimento del campo QTAEVASA nelle righe
|
// TCursor_sheet con la on_key() customizzata per l'inserimento del campo QTAEVASA nelle righe
|
||||||
class TInterattivo_sheet : public TCursor_sheet
|
class TInterattivo_sheet : public TCursor_sheet
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
virtual bool on_key(KEY);
|
virtual bool on_key(KEY);
|
||||||
public:
|
public:
|
||||||
virtual void page_build(long first, byte rows); // modificata per fare apparire anche le qta' da evadere
|
virtual void page_build(long first, byte rows); // modificata per fare apparire anche le qta' da evadere
|
||||||
TInterattivo_sheet(TCursor* cursor, const char* fields, const char* title, const char* head, byte buttons = 0)
|
TInterattivo_sheet(TCursor* cursor, const char* fields, const char* title, const char* head, byte buttons = 0)
|
||||||
: TCursor_sheet(cursor, fields, title, head, buttons)
|
: TCursor_sheet(cursor, fields, title, head, buttons)
|
||||||
{};
|
{};
|
||||||
virtual ~TInterattivo_sheet() {};
|
virtual ~TInterattivo_sheet() {};
|
||||||
};
|
};
|
||||||
|
|
||||||
class TBatch_crea_doc : public TElaborazioni
|
class TBatch_crea_doc : public TElaborazioni
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
bool _interattivo; // TRUE se e' stata attivata l'elaborazione interattiva;
|
bool _interattivo; // TRUE se e' stata attivata l'elaborazione interattiva;
|
||||||
// bool _stesso_anno_fiscale; // TRUE se i documenti originali debbono avere lo stesso anno fiscale del documento da creare
|
// bool _stesso_anno_fiscale; // TRUE se i documenti originali debbono avere lo stesso anno fiscale del documento da creare
|
||||||
TString _descr_tipodocorg; // descrizione del tipo documento originale (solo come titolo del TSheet_array)
|
TString _descr_tipodocorg; // descrizione del tipo documento originale (solo come titolo del TSheet_array)
|
||||||
virtual bool menu (MENU_TAG);
|
virtual bool menu (MENU_TAG);
|
||||||
virtual bool create ();
|
virtual bool create ();
|
||||||
virtual bool destroy();
|
virtual bool destroy();
|
||||||
|
|
||||||
int run_mask (TRectype&, TRectype&); // lancia la maschera e scandisce i records
|
int run_mask (TRectype&, TRectype&); // lancia la maschera e scandisce i records
|
||||||
int per_cliente(TRectype&, TRectype&, const char*); // crea fatture ordinate tramite la elab_princ
|
int per_cliente(TRectype&, TRectype&, const char*); // crea fatture ordinate tramite la elab_princ
|
||||||
int elab_princ(TSorted_cursor&); // elabora tutti i documenti del cursore che hanno un record ELD
|
int elab_princ(TSorted_cursor&); // elabora tutti i documenti del cursore che hanno un record ELD
|
||||||
bool search (TRectype&, TRectype&, TSorted_cursor&); // cerca il prossimo record da includere nel doc. destinazione
|
bool search (TRectype&, TRectype&, TSorted_cursor&); // cerca il prossimo record da includere nel doc. destinazione
|
||||||
bool getflag (TRectype&, int); // ritorna i valori di due flag
|
bool getflag (TRectype&, int); // ritorna i valori di due flag
|
||||||
static bool filterfunct(const TRelation*); // funzione di filtro per i campi non alfanumerici
|
static bool filterfunct(const TRelation*); // funzione di filtro per i campi non alfanumerici
|
||||||
void raggruppa_righe (TRecord_array&); // raggruppa le righe per codice articolo
|
void raggruppa_righe (TRecord_array&); // raggruppa le righe per codice articolo
|
||||||
bool prox_riga (int&, TRecord_array&, TBit_array&, TRectype&); // cerca la prossima riga da raggruppare
|
bool prox_riga (int&, TRecord_array&, TBit_array&, TRectype&); // cerca la prossima riga da raggruppare
|
||||||
long _first_codcf, _last_codcf; // valori del campo CODCF dei records first e last, per potervi accedere dalla filterfunct()
|
long _first_codcf, _last_codcf; // valori del campo CODCF dei records first e last, per potervi accedere dalla filterfunct()
|
||||||
bool elab_righe(TString metodo,bool raggr_parz,TRectype &tempr,TRecord_array &doc_destinazione,TRectype &temprdoc);
|
bool elab_righe(TString metodo,bool raggr_parz,TRectype &tempr,TRecord_array &doc_destinazione,TRectype &temprdoc);
|
||||||
// elabora le righe (di doc_originale), mettendole in doc_destinazione
|
// elabora le righe (di doc_originale), mettendole in doc_destinazione
|
||||||
// usando il metodo metodo, tramite il record temprdoc gia' inizializzato
|
// usando il metodo metodo, tramite il record temprdoc gia' inizializzato
|
||||||
bool next_pilota(TSorted_cursor &curs,TRectype &pilota);
|
bool next_pilota(TSorted_cursor &curs,TRectype &pilota);
|
||||||
// cerca il prossimo documeto pilota in cursor tenendo conto di processed
|
// cerca il prossimo documeto pilota in cursor tenendo conto di processed
|
||||||
int esiste_ELD(TSorted_cursor &curs,int i,bool set_proc = DONT_SET_PROCESSED);
|
int esiste_ELD(TSorted_cursor &curs,int i,bool set_proc = DONT_SET_PROCESSED);
|
||||||
// ritorna ELAB_FOUND se esiste una ELD che passa dal tipo documento di pilota a _tipo_dest
|
// ritorna ELAB_FOUND se esiste una ELD che passa dal tipo documento di pilota a _tipo_dest
|
||||||
// (o _tipo_doc_dest, se _tipo_dest non viene specificato) e riempie eventualmente dest con la prima ELD
|
// (o _tipo_doc_dest, se _tipo_dest non viene specificato) e riempie eventualmente dest con la prima ELD
|
||||||
int leggi_da_ELD(TRectype &dest,TString _tipo_pilota,TString _tipo_dest = "");
|
int leggi_da_ELD(TRectype &dest,TString _tipo_pilota,TString _tipo_dest = "");
|
||||||
// legge dalla tabella ELD il record _tipo_pilota->_tipo_destinazione, lo mette in dest e ritorna l'errore
|
// legge dalla tabella ELD il record _tipo_pilota->_tipo_destinazione, lo mette in dest e ritorna l'errore
|
||||||
TString metodo(TRectype &rec);
|
TString metodo(TRectype &rec);
|
||||||
// restituisce la stringa metodo di trasf. dal record ELD per rec->_tipo_destinazione
|
// restituisce la stringa metodo di trasf. dal record ELD per rec->_tipo_destinazione
|
||||||
int statovalido(TRectype& rec);
|
int statovalido(TRectype& rec);
|
||||||
// controlla che il documento rec sia in uno degli stati validi indicati nella sezione [RAGGRUPPA] del suo .ini
|
// controlla che il documento rec sia in uno degli stati validi indicati nella sezione [RAGGRUPPA] del suo .ini
|
||||||
const char *td_ELD_to_filter(TString &_tipo_doc_des);
|
const char *td_ELD_to_filter(TString &_tipo_doc_des);
|
||||||
// trova il .ini di rec e lo restituisce
|
// trova il .ini di rec e lo restituisce
|
||||||
TString getini(TRectype& rec, int &err);
|
TString getini(TRectype& rec, int &err);
|
||||||
// prende RAGGRPARZ della sezione [RAGGRUPPA]
|
// prende RAGGRPARZ della sezione [RAGGRUPPA]
|
||||||
bool get_raggr_parz(TRectype& rec, int& err);
|
bool get_raggr_parz(TRectype& rec, int& err);
|
||||||
// ritorna TRUE se _stesso_anno_fiscale o STESSOANNOFISCALE del .ini di rec
|
// ritorna TRUE se _stesso_anno_fiscale o STESSOANNOFISCALE del .ini di rec
|
||||||
bool stesso_anno_fiscale(TRectype& rec);
|
bool stesso_anno_fiscale(TRectype& rec);
|
||||||
// setta le informazioni sugli stati del doc e le mette nelle relative variabili globali
|
// setta le informazioni sugli stati del doc e le mette nelle relative variabili globali
|
||||||
int get_info(TRectype &doc);
|
int get_info(TRectype &doc);
|
||||||
// guarda se i documenti pil e pil2 sono compatibili per essere uniti nello stesso documento finale
|
// guarda se i documenti pil e pil2 sono compatibili per essere uniti nello stesso documento finale
|
||||||
bool doc_i_compatibili(TRectype &pil,TRectype &pil2);
|
bool doc_i_compatibili(TRectype &pil,TRectype &pil2);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TBatch_crea_doc () {} // costruttore
|
TBatch_crea_doc () {} // costruttore
|
||||||
~TBatch_crea_doc () {}
|
~TBatch_crea_doc () {}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _TELABORAZIONI_DECL //
|
#endif // _TELABORAZIONI_DECL //
|
||||||
|
Loading…
x
Reference in New Issue
Block a user